diff --git a/.abi-compliance-history b/.abi-compliance-history index a7baaa95cb5..e55144a4d4f 100644 --- a/.abi-compliance-history +++ b/.abi-compliance-history @@ -18,6 +18,22 @@ # Be sure to replace "" with details of your change and # why it is deemed acceptable. +8114224719401da8e30131310f1a227781cac6eb +# +# For inplace update, send nontransactional invalidations. +# 2025-12-16 16:13:56 -0800 +# +# This changed PrepareToInvalidateCacheTuple() parameters. PGXN contained no +# calls to that function. + +95cce56696867c7629d12c3ba1da8edd5bedaa8e +# +# Check for CREATE privilege on the schema in CREATE STATISTICS. +# 2025-11-10 09:00:00 -0600 +# +# This commit added a parameter to CreateStatistics(). We are unaware of any +# impacted third-party code. + 983b3636259b1502121cbae99d8a2f0d0515d87d # # Fix re-distributing previously distributed invalidation messages during logical decoding. diff --git a/COPYRIGHT b/COPYRIGHT index 3b79b1b4ca0..0a397648dcd 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,7 +1,7 @@ PostgreSQL Database Management System (also known as Postgres, formerly known as Postgres95) -Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group +Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California diff --git a/configure b/configure index 500390f1bcc..9a299e35fe8 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PostgreSQL 14.20. +# Generated by GNU Autoconf 2.69 for PostgreSQL 14.21. # # Report bugs to . # @@ -582,8 +582,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='PostgreSQL' PACKAGE_TARNAME='postgresql' -PACKAGE_VERSION='14.20' -PACKAGE_STRING='PostgreSQL 14.20' +PACKAGE_VERSION='14.21' +PACKAGE_STRING='PostgreSQL 14.21' PACKAGE_BUGREPORT='pgsql-bugs@lists.postgresql.org' PACKAGE_URL='https://www.postgresql.org/' @@ -1445,7 +1445,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PostgreSQL 14.20 to adapt to many kinds of systems. +\`configure' configures PostgreSQL 14.21 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1510,7 +1510,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PostgreSQL 14.20:";; + short | recursive ) echo "Configuration of PostgreSQL 14.21:";; esac cat <<\_ACEOF @@ -1682,7 +1682,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PostgreSQL configure 14.20 +PostgreSQL configure 14.21 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2435,7 +2435,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PostgreSQL $as_me 14.20, which was +It was created by PostgreSQL $as_me 14.21, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -20763,7 +20763,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PostgreSQL $as_me 14.20, which was +This file was extended by PostgreSQL $as_me 14.21, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20834,7 +20834,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -PostgreSQL config.status 14.20 +PostgreSQL config.status 14.21 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index f51f7b2007a..dcce626469e 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Read the Autoconf manual for details. dnl m4_pattern_forbid(^PGAC_)dnl to catch undefined macros -AC_INIT([PostgreSQL], [14.20], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/]) +AC_INIT([PostgreSQL], [14.21], [pgsql-bugs@lists.postgresql.org], [], [https://www.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 diff --git a/contrib/adminpack/expected/adminpack.out b/contrib/adminpack/expected/adminpack.out index edf3ebfcba3..2dd68e452ad 100644 --- a/contrib/adminpack/expected/adminpack.out +++ b/contrib/adminpack/expected/adminpack.out @@ -36,10 +36,10 @@ SELECT pg_read_file('test_file1'); -- disallowed file paths for non-superusers and users who are -- not members of pg_write_server_files -CREATE ROLE regress_user1; -GRANT pg_read_all_settings TO regress_user1; -GRANT EXECUTE ON FUNCTION pg_file_write(text,text,bool) TO regress_user1; -SET ROLE regress_user1; +CREATE ROLE regress_adminpack_user1; +GRANT pg_read_all_settings TO regress_adminpack_user1; +GRANT EXECUTE ON FUNCTION pg_file_write(text,text,bool) TO regress_adminpack_user1; +SET ROLE regress_adminpack_user1; SELECT pg_file_write('../test_file0', 'test0', false); ERROR: path must be in or below the current directory SELECT pg_file_write('/tmp/test_file0', 'test0', false); @@ -53,9 +53,9 @@ SELECT pg_file_write(current_setting('data_directory') || '/test_file4', 'test4' SELECT pg_file_write(current_setting('data_directory') || '/../test_file4', 'test4', false); ERROR: reference to parent directory ("..") not allowed RESET ROLE; -REVOKE EXECUTE ON FUNCTION pg_file_write(text,text,bool) FROM regress_user1; -REVOKE pg_read_all_settings FROM regress_user1; -DROP ROLE regress_user1; +REVOKE EXECUTE ON FUNCTION pg_file_write(text,text,bool) FROM regress_adminpack_user1; +REVOKE pg_read_all_settings FROM regress_adminpack_user1; +DROP ROLE regress_adminpack_user1; -- sync SELECT pg_file_sync('test_file1'); -- sync file pg_file_sync @@ -153,8 +153,8 @@ SELECT pg_file_unlink('test_file4'); (1 row) -- superuser checks -CREATE USER regress_user1; -SET ROLE regress_user1; +CREATE USER regress_adminpack_user1; +SET ROLE regress_adminpack_user1; SELECT pg_file_write('test_file0', 'test0', false); ERROR: permission denied for function pg_file_write SELECT pg_file_sync('test_file0'); @@ -167,6 +167,6 @@ ERROR: permission denied for function pg_file_unlink SELECT pg_logdir_ls(); ERROR: permission denied for function pg_logdir_ls RESET ROLE; -DROP USER regress_user1; +DROP USER regress_adminpack_user1; -- no further tests for pg_logdir_ls() because it depends on the -- server's logging setup diff --git a/contrib/adminpack/sql/adminpack.sql b/contrib/adminpack/sql/adminpack.sql index 918d0bdc65e..5776c9af0d1 100644 --- a/contrib/adminpack/sql/adminpack.sql +++ b/contrib/adminpack/sql/adminpack.sql @@ -14,20 +14,20 @@ SELECT pg_read_file('test_file1'); -- disallowed file paths for non-superusers and users who are -- not members of pg_write_server_files -CREATE ROLE regress_user1; +CREATE ROLE regress_adminpack_user1; -GRANT pg_read_all_settings TO regress_user1; -GRANT EXECUTE ON FUNCTION pg_file_write(text,text,bool) TO regress_user1; +GRANT pg_read_all_settings TO regress_adminpack_user1; +GRANT EXECUTE ON FUNCTION pg_file_write(text,text,bool) TO regress_adminpack_user1; -SET ROLE regress_user1; +SET ROLE regress_adminpack_user1; SELECT pg_file_write('../test_file0', 'test0', false); SELECT pg_file_write('/tmp/test_file0', 'test0', false); SELECT pg_file_write(current_setting('data_directory') || '/test_file4', 'test4', false); SELECT pg_file_write(current_setting('data_directory') || '/../test_file4', 'test4', false); RESET ROLE; -REVOKE EXECUTE ON FUNCTION pg_file_write(text,text,bool) FROM regress_user1; -REVOKE pg_read_all_settings FROM regress_user1; -DROP ROLE regress_user1; +REVOKE EXECUTE ON FUNCTION pg_file_write(text,text,bool) FROM regress_adminpack_user1; +REVOKE pg_read_all_settings FROM regress_adminpack_user1; +DROP ROLE regress_adminpack_user1; -- sync SELECT pg_file_sync('test_file1'); -- sync file @@ -59,8 +59,8 @@ SELECT pg_file_unlink('test_file4'); -- superuser checks -CREATE USER regress_user1; -SET ROLE regress_user1; +CREATE USER regress_adminpack_user1; +SET ROLE regress_adminpack_user1; SELECT pg_file_write('test_file0', 'test0', false); SELECT pg_file_sync('test_file0'); @@ -69,7 +69,7 @@ SELECT pg_file_unlink('test_file0'); SELECT pg_logdir_ls(); RESET ROLE; -DROP USER regress_user1; +DROP USER regress_adminpack_user1; -- no further tests for pg_logdir_ls() because it depends on the diff --git a/contrib/amcheck/t/002_cic.pl b/contrib/amcheck/t/002_cic.pl index 3587807b957..b23e761abe1 100644 --- a/contrib/amcheck/t/002_cic.pl +++ b/contrib/amcheck/t/002_cic.pl @@ -9,7 +9,7 @@ use PostgresNode; use TestLib; -use Test::More tests => 3; +use Test::More; my ($node, $result); @@ -61,5 +61,29 @@ ) }); +# Test bt_index_parent_check() with indexes created with +# CREATE INDEX CONCURRENTLY. +$node->safe_psql('postgres', q(CREATE TABLE quebec(i int primary key))); +# Insert two rows into index +$node->safe_psql('postgres', + q(INSERT INTO quebec SELECT i FROM generate_series(1, 2) s(i);)); + +# start background transaction +my $in_progress_h = $node->background_psql('postgres'); +$in_progress_h->query_safe(q(BEGIN; SELECT pg_current_xact_id();)); + +# delete one row from table, while background transaction is in progress +$node->safe_psql('postgres', q(DELETE FROM quebec WHERE i = 1;)); +# create index concurrently, which will skip the deleted row +$node->safe_psql('postgres', + q(CREATE INDEX CONCURRENTLY oscar ON quebec(i);)); + +# check index using bt_index_parent_check +$result = $node->psql('postgres', + q(SELECT bt_index_parent_check('oscar', heapallindexed => true))); +is($result, '0', 'bt_index_parent_check for CIC after removed row'); + +$in_progress_h->quit; + $node->stop; done_testing(); diff --git a/contrib/amcheck/verify_nbtree.c b/contrib/amcheck/verify_nbtree.c index f9afb4d7bd0..f75667d8061 100644 --- a/contrib/amcheck/verify_nbtree.c +++ b/contrib/amcheck/verify_nbtree.c @@ -462,11 +462,11 @@ bt_check_every_level(Relation rel, Relation heaprel, bool heapkeyspace, bool readonly, bool heapallindexed, bool rootdescend) { BtreeCheckState *state; + Snapshot snapshot = InvalidSnapshot; Page metapage; BTMetaPageData *metad; uint32 previouslevel; BtreeLevel current; - Snapshot snapshot = SnapshotAny; if (!readonly) elog(DEBUG1, "verifying consistency of tree structure for index \"%s\"", @@ -515,37 +515,33 @@ bt_check_every_level(Relation rel, Relation heaprel, bool heapkeyspace, state->heaptuplespresent = 0; /* - * Register our own snapshot in !readonly case, rather than asking + * Register our own snapshot for heapallindexed, rather than asking * table_index_build_scan() to do this for us later. This needs to * happen before index fingerprinting begins, so we can later be * certain that index fingerprinting should have reached all tuples * returned by table_index_build_scan(). */ - if (!state->readonly) - { - snapshot = RegisterSnapshot(GetTransactionSnapshot()); + snapshot = RegisterSnapshot(GetTransactionSnapshot()); - /* - * GetTransactionSnapshot() always acquires a new MVCC snapshot in - * READ COMMITTED mode. A new snapshot is guaranteed to have all - * the entries it requires in the index. - * - * We must defend against the possibility that an old xact - * snapshot was returned at higher isolation levels when that - * snapshot is not safe for index scans of the target index. This - * is possible when the snapshot sees tuples that are before the - * index's indcheckxmin horizon. Throwing an error here should be - * very rare. It doesn't seem worth using a secondary snapshot to - * avoid this. - */ - if (IsolationUsesXactSnapshot() && rel->rd_index->indcheckxmin && - !TransactionIdPrecedes(HeapTupleHeaderGetXmin(rel->rd_indextuple->t_data), - snapshot->xmin)) - ereport(ERROR, - (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), - errmsg("index \"%s\" cannot be verified using transaction snapshot", - RelationGetRelationName(rel)))); - } + /* + * GetTransactionSnapshot() always acquires a new MVCC snapshot in + * READ COMMITTED mode. A new snapshot is guaranteed to have all the + * entries it requires in the index. + * + * We must defend against the possibility that an old xact snapshot + * was returned at higher isolation levels when that snapshot is not + * safe for index scans of the target index. This is possible when + * the snapshot sees tuples that are before the index's indcheckxmin + * horizon. Throwing an error here should be very rare. It doesn't + * seem worth using a secondary snapshot to avoid this. + */ + if (IsolationUsesXactSnapshot() && rel->rd_index->indcheckxmin && + !TransactionIdPrecedes(HeapTupleHeaderGetXmin(rel->rd_indextuple->t_data), + snapshot->xmin)) + ereport(ERROR, + errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), + errmsg("index \"%s\" cannot be verified using transaction snapshot", + RelationGetRelationName(rel))); } Assert(!state->rootdescend || state->readonly); @@ -620,8 +616,7 @@ bt_check_every_level(Relation rel, Relation heaprel, bool heapkeyspace, /* * Create our own scan for table_index_build_scan(), rather than * getting it to do so for us. This is required so that we can - * actually use the MVCC snapshot registered earlier in !readonly - * case. + * actually use the MVCC snapshot registered earlier. * * Note that table_index_build_scan() calls heap_endscan() for us. */ @@ -634,16 +629,15 @@ bt_check_every_level(Relation rel, Relation heaprel, bool heapkeyspace, /* * Scan will behave as the first scan of a CREATE INDEX CONCURRENTLY - * behaves in !readonly case. + * behaves. * * It's okay that we don't actually use the same lock strength for the - * heap relation as any other ii_Concurrent caller would in !readonly - * case. We have no reason to care about a concurrent VACUUM - * operation, since there isn't going to be a second scan of the heap - * that needs to be sure that there was no concurrent recycling of - * TIDs. + * heap relation as any other ii_Concurrent caller would. We have no + * reason to care about a concurrent VACUUM operation, since there + * isn't going to be a second scan of the heap that needs to be sure + * that there was no concurrent recycling of TIDs. */ - indexinfo->ii_Concurrent = !state->readonly; + indexinfo->ii_Concurrent = true; /* * Don't wait for uncommitted tuple xact commit/abort when index is a @@ -667,13 +661,12 @@ bt_check_every_level(Relation rel, Relation heaprel, bool heapkeyspace, state->heaptuplespresent, RelationGetRelationName(heaprel), 100.0 * bloom_prop_bits_set(state->filter)))); - if (snapshot != SnapshotAny) - UnregisterSnapshot(snapshot); - bloom_free(state->filter); } /* Be tidy: */ + if (snapshot != InvalidSnapshot) + UnregisterSnapshot(snapshot); MemoryContextDelete(state->targetcontext); } diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c index 2886c08b85e..9d93b3c775e 100644 --- a/contrib/btree_gist/btree_utils_var.c +++ b/contrib/btree_gist/btree_utils_var.c @@ -116,36 +116,47 @@ gbt_var_leaf2node(GBT_VARKEY *leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo) /* * returns the common prefix length of a node key + * + * If the underlying type is character data, the prefix length may point in + * the middle of a multibyte character. */ static int32 gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo) { GBT_VARKEY_R r = gbt_var_key_readable(node); int32 i = 0; - int32 l = 0; + int32 l_left_to_match = 0; + int32 l_total = 0; int32 t1len = VARSIZE(r.lower) - VARHDRSZ; int32 t2len = VARSIZE(r.upper) - VARHDRSZ; int32 ml = Min(t1len, t2len); char *p1 = VARDATA(r.lower); char *p2 = VARDATA(r.upper); + const char *end1 = p1 + t1len; + const char *end2 = p2 + t2len; if (ml == 0) return 0; while (i < ml) { - if (tinfo->eml > 1 && l == 0) + if (tinfo->eml > 1 && l_left_to_match == 0) { - if ((l = pg_mblen(p1)) != pg_mblen(p2)) + l_total = pg_mblen_range(p1, end1); + if (l_total != pg_mblen_range(p2, end2)) { return i; } + l_left_to_match = l_total; } if (*p1 != *p2) { if (tinfo->eml > 1) { - return (i - l + 1); + int32 l_matched_subset = l_total - l_left_to_match; + + /* end common prefix at final byte of last matching char */ + return i - l_matched_subset; } else { @@ -155,7 +166,7 @@ gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo) p1++; p2++; - l--; + l_left_to_match--; i++; } return ml; /* lower == upper */ diff --git a/contrib/dict_xsyn/dict_xsyn.c b/contrib/dict_xsyn/dict_xsyn.c index 79c4f18f409..5c5e4e7a3c9 100644 --- a/contrib/dict_xsyn/dict_xsyn.c +++ b/contrib/dict_xsyn/dict_xsyn.c @@ -48,15 +48,15 @@ find_word(char *in, char **end) char *start; *end = NULL; - while (*in && t_isspace(in)) - in += pg_mblen(in); + while (*in && t_isspace_cstr(in)) + in += pg_mblen_cstr(in); if (!*in || *in == '#') return NULL; start = in; - while (*in && !t_isspace(in)) - in += pg_mblen(in); + while (*in && !t_isspace_cstr(in)) + in += pg_mblen_cstr(in); *end = in; diff --git a/contrib/file_fdw/input/file_fdw.source b/contrib/file_fdw/input/file_fdw.source index d8101d49840..7b977cfbe97 100644 --- a/contrib/file_fdw/input/file_fdw.source +++ b/contrib/file_fdw/input/file_fdw.source @@ -189,6 +189,20 @@ UPDATE pt set a = 1 where a = 2; -- ERROR SELECT tableoid::regclass, * FROM pt; SELECT tableoid::regclass, * FROM p1; SELECT tableoid::regclass, * FROM p2; + +-- Test DELETE/UPDATE on a partitioned table when all partitions +-- are excluded and only the dummy root result relation remains. The +-- operation is a no-op but should not fail regardless of whether the +-- foreign child was processed (pruning off) or not (pruning on). +DROP TABLE p2; +SET enable_partition_pruning TO off; +DELETE FROM pt WHERE false; +UPDATE pt SET b = 'x' WHERE false; + +SET enable_partition_pruning TO on; +DELETE FROM pt WHERE false; +UPDATE pt SET b = 'x' WHERE false; + DROP TABLE pt; -- generated column tests diff --git a/contrib/file_fdw/output/file_fdw.source b/contrib/file_fdw/output/file_fdw.source index dfcc833d80b..45f0e0322ca 100644 --- a/contrib/file_fdw/output/file_fdw.source +++ b/contrib/file_fdw/output/file_fdw.source @@ -379,6 +379,17 @@ SELECT tableoid::regclass, * FROM p2; p2 | 2 | xyzzy (3 rows) +-- Test DELETE/UPDATE on a partitioned table when all partitions +-- are excluded and only the dummy root result relation remains. The +-- operation is a no-op but should not fail regardless of whether the +-- foreign child was processed (pruning off) or not (pruning on). +DROP TABLE p2; +SET enable_partition_pruning TO off; +DELETE FROM pt WHERE false; +UPDATE pt SET b = 'x' WHERE false; +SET enable_partition_pruning TO on; +DELETE FROM pt WHERE false; +UPDATE pt SET b = 'x' WHERE false; DROP TABLE pt; -- generated column tests CREATE FOREIGN TABLE gft1 (a int, b text, c text GENERATED ALWAYS AS ('foo') STORED) SERVER file_server diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c index 03057f085d1..0b1e0581e84 100644 --- a/contrib/hstore/hstore_io.c +++ b/contrib/hstore/hstore_io.c @@ -82,7 +82,7 @@ get_val(HSParser *state, bool ignoreeq, bool *escaped) else if (*(state->ptr) == '=' && !ignoreeq) { elog(ERROR, "Syntax error near \"%.*s\" at position %d", - pg_mblen(state->ptr), state->ptr, + pg_mblen_cstr(state->ptr), state->ptr, (int32) (state->ptr - state->begin)); } else if (*(state->ptr) == '\\') @@ -223,7 +223,7 @@ parse_hstore(HSParser *state) else if (!scanner_isspace((unsigned char) *(state->ptr))) { elog(ERROR, "Syntax error near \"%.*s\" at position %d", - pg_mblen(state->ptr), state->ptr, + pg_mblen_cstr(state->ptr), state->ptr, (int32) (state->ptr - state->begin)); } } @@ -240,7 +240,7 @@ parse_hstore(HSParser *state) else { elog(ERROR, "Syntax error near \"%.*s\" at position %d", - pg_mblen(state->ptr), state->ptr, + pg_mblen_cstr(state->ptr), state->ptr, (int32) (state->ptr - state->begin)); } } @@ -275,7 +275,7 @@ parse_hstore(HSParser *state) else if (!scanner_isspace((unsigned char) *(state->ptr))) { elog(ERROR, "Syntax error near \"%.*s\" at position %d", - pg_mblen(state->ptr), state->ptr, + pg_mblen_cstr(state->ptr), state->ptr, (int32) (state->ptr - state->begin)); } } diff --git a/contrib/intarray/_int_selfuncs.c b/contrib/intarray/_int_selfuncs.c index 02736e0fd04..37b277e7f14 100644 --- a/contrib/intarray/_int_selfuncs.c +++ b/contrib/intarray/_int_selfuncs.c @@ -19,6 +19,7 @@ #include "catalog/pg_operator.h" #include "catalog/pg_statistic.h" #include "catalog/pg_type.h" +#include "commands/extension.h" #include "miscadmin.h" #include "utils/builtins.h" #include "utils/lsyscache.h" @@ -171,7 +172,18 @@ _int_matchsel(PG_FUNCTION_ARGS) PG_RETURN_FLOAT8(0.0); } - /* The caller made sure the const is a query, so get it now */ + /* + * Verify that the Const is a query_int, else return a default estimate. + * (This could only fail if someone attached this estimator to the wrong + * operator.) + */ + if (((Const *) other)->consttype != + get_function_sibling_type(fcinfo->flinfo->fn_oid, "query_int")) + { + ReleaseVariableStats(vardata); + PG_RETURN_FLOAT8(DEFAULT_EQ_SEL); + } + query = DatumGetQueryTypeP(((Const *) other)->constvalue); /* Empty query matches nothing */ @@ -327,7 +339,12 @@ static int compare_val_int4(const void *a, const void *b) { int32 key = *(int32 *) a; - const Datum *t = (const Datum *) b; + int32 value = DatumGetInt32(*(const Datum *) b); - return key - DatumGetInt32(*t); + if (key < value) + return -1; + else if (key > value) + return 1; + else + return 0; } diff --git a/contrib/ltree/lquery_op.c b/contrib/ltree/lquery_op.c index ef86046fc4b..46019a0e83a 100644 --- a/contrib/ltree/lquery_op.c +++ b/contrib/ltree/lquery_op.c @@ -26,14 +26,14 @@ getlexeme(char *start, char *end, int *len) char *ptr; int charlen; - while (start < end && (charlen = pg_mblen(start)) == 1 && t_iseq(start, '_')) + while (start < end && (charlen = pg_mblen_range(start, end)) == 1 && t_iseq(start, '_')) start += charlen; ptr = start; if (ptr >= end) return NULL; - while (ptr < end && !((charlen = pg_mblen(ptr)) == 1 && t_iseq(ptr, '_'))) + while (ptr < end && !((charlen = pg_mblen_range(ptr, end)) == 1 && t_iseq(ptr, '_'))) ptr += charlen; *len = ptr - start; @@ -41,7 +41,8 @@ getlexeme(char *start, char *end, int *len) } bool -compare_subnode(ltree_level *t, char *qn, int len, int (*cmpptr) (const char *, const char *, size_t), bool anyend) +compare_subnode(ltree_level *t, char *qn, int len, + ltree_prefix_eq_func prefix_eq, bool anyend) { char *endt = t->name + t->len; char *endq = qn + len; @@ -57,7 +58,7 @@ compare_subnode(ltree_level *t, char *qn, int len, int (*cmpptr) (const char *, while ((tn = getlexeme(tn, endt, &lent)) != NULL) { if ((lent == lenq || (lent > lenq && anyend)) && - (*cmpptr) (qn, tn, lenq) == 0) + (*prefix_eq) (qn, lenq, tn, lent)) { isok = true; @@ -74,14 +75,29 @@ compare_subnode(ltree_level *t, char *qn, int len, int (*cmpptr) (const char *, return true; } -int -ltree_strncasecmp(const char *a, const char *b, size_t s) +/* + * Check if 'a' is a prefix of 'b'. + */ +bool +ltree_prefix_eq(const char *a, size_t a_sz, const char *b, size_t b_sz) +{ + if (a_sz > b_sz) + return false; + else + return (strncmp(a, b, a_sz) == 0); +} + +/* + * Case-insensitive check if 'a' is a prefix of 'b'. + */ +bool +ltree_prefix_eq_ci(const char *a, size_t a_sz, const char *b, size_t b_sz) { - char *al = str_tolower(a, s, DEFAULT_COLLATION_OID); - char *bl = str_tolower(b, s, DEFAULT_COLLATION_OID); - int res; + char *al = str_tolower(a, a_sz, DEFAULT_COLLATION_OID); + char *bl = str_tolower(b, b_sz, DEFAULT_COLLATION_OID); + bool res; - res = strncmp(al, bl, s); + res = (strncmp(al, bl, a_sz) == 0); pfree(al); pfree(bl); @@ -109,19 +125,19 @@ checkLevel(lquery_level *curq, ltree_level *curt) for (int i = 0; i < curq->numvar; i++) { - int (*cmpptr) (const char *, const char *, size_t); + ltree_prefix_eq_func prefix_eq; - cmpptr = (curvar->flag & LVAR_INCASE) ? ltree_strncasecmp : strncmp; + prefix_eq = (curvar->flag & LVAR_INCASE) ? ltree_prefix_eq_ci : ltree_prefix_eq; if (curvar->flag & LVAR_SUBLEXEME) { - if (compare_subnode(curt, curvar->name, curvar->len, cmpptr, + if (compare_subnode(curt, curvar->name, curvar->len, prefix_eq, (curvar->flag & LVAR_ANYEND))) return success; } else if ((curvar->len == curt->len || (curt->len > curvar->len && (curvar->flag & LVAR_ANYEND))) && - (*cmpptr) (curvar->name, curt->name, curvar->len) == 0) + (*prefix_eq) (curvar->name, curvar->len, curt->name, curt->len)) return success; curvar = LVAR_NEXT(curvar); diff --git a/contrib/ltree/ltree.h b/contrib/ltree/ltree.h index 83fc705ef86..c7f00a99b06 100644 --- a/contrib/ltree/ltree.h +++ b/contrib/ltree/ltree.h @@ -113,7 +113,8 @@ typedef struct #define LQUERY_HASNOT 0x01 -#define ISALNUM(x) ( t_isalpha(x) || t_isdigit(x) || ( pg_mblen(x) == 1 && t_iseq((x), '_') ) ) +/* Caller has already called mblen, so we can use _unbounded variants safely. */ +#define ISALNUM(x) ( t_isalpha_unbounded(x) || t_isdigit_unbounded(x) || ( pg_mblen_unbounded(x) == 1 && t_iseq((x), '_') ) ) /* full text query */ @@ -143,6 +144,8 @@ typedef struct char data[FLEXIBLE_ARRAY_MEMBER]; } ltxtquery; +typedef bool (*ltree_prefix_eq_func) (const char *, size_t, const char *, size_t); + #define HDRSIZEQT MAXALIGN(VARHDRSZ + sizeof(int32)) #define COMPUTESIZE(size,lenofoperand) ( HDRSIZEQT + (size) * sizeof(ITEM) + (lenofoperand) ) #define LTXTQUERY_TOO_BIG(size,lenofoperand) \ @@ -193,10 +196,11 @@ bool ltree_execute(ITEM *curitem, void *checkval, int ltree_compare(const ltree *a, const ltree *b); bool inner_isparent(const ltree *c, const ltree *p); -bool compare_subnode(ltree_level *t, char *q, int len, - int (*cmpptr) (const char *, const char *, size_t), bool anyend); +bool compare_subnode(ltree_level *t, char *qn, int len, + ltree_prefix_eq_func prefix_eq, bool anyend); ltree *lca_inner(ltree **a, int len); -int ltree_strncasecmp(const char *a, const char *b, size_t s); +bool ltree_prefix_eq(const char *a, size_t a_sz, const char *b, size_t b_sz); +bool ltree_prefix_eq_ci(const char *a, size_t a_sz, const char *b, size_t b_sz); /* fmgr macros for ltree objects */ #define DatumGetLtreeP(X) ((ltree *) PG_DETOAST_DATUM(X)) diff --git a/contrib/ltree/ltree_io.c b/contrib/ltree/ltree_io.c index 15115cb29f3..0a44a8c4691 100644 --- a/contrib/ltree/ltree_io.c +++ b/contrib/ltree/ltree_io.c @@ -54,7 +54,7 @@ parse_ltree(const char *buf) ptr = buf; while (*ptr) { - charlen = pg_mblen(ptr); + charlen = pg_mblen_cstr(ptr); if (t_iseq(ptr, '.')) num++; ptr += charlen; @@ -69,7 +69,7 @@ parse_ltree(const char *buf) ptr = buf; while (*ptr) { - charlen = pg_mblen(ptr); + charlen = pg_mblen_cstr(ptr); switch (state) { @@ -285,7 +285,7 @@ parse_lquery(const char *buf) ptr = buf; while (*ptr) { - charlen = pg_mblen(ptr); + charlen = pg_mblen_cstr(ptr); if (t_iseq(ptr, '.')) num++; @@ -305,7 +305,7 @@ parse_lquery(const char *buf) ptr = buf; while (*ptr) { - charlen = pg_mblen(ptr); + charlen = pg_mblen_cstr(ptr); switch (state) { @@ -402,7 +402,7 @@ parse_lquery(const char *buf) case LQPRS_WAITFNUM: if (t_iseq(ptr, ',')) state = LQPRS_WAITSNUM; - else if (t_isdigit(ptr)) + else if (t_isdigit_cstr(ptr)) { int low = atoi(ptr); @@ -420,7 +420,7 @@ parse_lquery(const char *buf) UNCHAR; break; case LQPRS_WAITSNUM: - if (t_isdigit(ptr)) + if (t_isdigit_cstr(ptr)) { int high = atoi(ptr); @@ -451,7 +451,7 @@ parse_lquery(const char *buf) case LQPRS_WAITCLOSE: if (t_iseq(ptr, '}')) state = LQPRS_WAITEND; - else if (!t_isdigit(ptr)) + else if (!t_isdigit_cstr(ptr)) UNCHAR; break; case LQPRS_WAITND: @@ -462,7 +462,7 @@ parse_lquery(const char *buf) } else if (t_iseq(ptr, ',')) state = LQPRS_WAITSNUM; - else if (!t_isdigit(ptr)) + else if (!t_isdigit_cstr(ptr)) UNCHAR; break; case LQPRS_WAITEND: diff --git a/contrib/ltree/ltxtquery_io.c b/contrib/ltree/ltxtquery_io.c index d967f92110f..7f98bdedecb 100644 --- a/contrib/ltree/ltxtquery_io.c +++ b/contrib/ltree/ltxtquery_io.c @@ -59,7 +59,7 @@ gettoken_query(QPRS_STATE *state, int32 *val, int32 *lenval, char **strval, uint for (;;) { - charlen = pg_mblen(state->buf); + charlen = pg_mblen_cstr(state->buf); switch (state->state) { @@ -83,7 +83,7 @@ gettoken_query(QPRS_STATE *state, int32 *val, int32 *lenval, char **strval, uint *lenval = charlen; *flag = 0; } - else if (!t_isspace(state->buf)) + else if (!t_isspace_unbounded(state->buf)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("operand syntax error"))); diff --git a/contrib/ltree/ltxtquery_op.c b/contrib/ltree/ltxtquery_op.c index 002102c9c75..3dcbab2c484 100644 --- a/contrib/ltree/ltxtquery_op.c +++ b/contrib/ltree/ltxtquery_op.c @@ -58,19 +58,19 @@ checkcondition_str(void *checkval, ITEM *val) ltree_level *level = LTREE_FIRST(((CHKVAL *) checkval)->node); int tlen = ((CHKVAL *) checkval)->node->numlevel; char *op = ((CHKVAL *) checkval)->operand + val->distance; - int (*cmpptr) (const char *, const char *, size_t); + ltree_prefix_eq_func prefix_eq; - cmpptr = (val->flag & LVAR_INCASE) ? ltree_strncasecmp : strncmp; + prefix_eq = (val->flag & LVAR_INCASE) ? ltree_prefix_eq_ci : ltree_prefix_eq; while (tlen > 0) { if (val->flag & LVAR_SUBLEXEME) { - if (compare_subnode(level, op, val->length, cmpptr, (val->flag & LVAR_ANYEND))) + if (compare_subnode(level, op, val->length, prefix_eq, (val->flag & LVAR_ANYEND))) return true; } else if ((val->length == level->len || (level->len > val->length && (val->flag & LVAR_ANYEND))) && - (*cmpptr) (op, level->name, val->length) == 0) + (*prefix_eq) (op, val->length, level->name, level->len)) return true; tlen--; diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfuncs.c index b067dd3660e..ebf030d484c 100644 --- a/contrib/pageinspect/heapfuncs.c +++ b/contrib/pageinspect/heapfuncs.c @@ -101,7 +101,7 @@ text_to_bits(char *str, int len) ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), errmsg("invalid character \"%.*s\" in t_bits string", - pg_mblen(str + off), str + off))); + pg_mblen_cstr(str + off), str + off))); if (off % 8 == 7) bits[off / 8] = byte; diff --git a/contrib/passwordcheck/expected/passwordcheck.out b/contrib/passwordcheck/expected/passwordcheck.out index e04cda6bd95..2027681daf6 100644 --- a/contrib/passwordcheck/expected/passwordcheck.out +++ b/contrib/passwordcheck/expected/passwordcheck.out @@ -1,19 +1,19 @@ LOAD 'passwordcheck'; -CREATE USER regress_user1; +CREATE USER regress_passwordcheck_user1; -- ok -ALTER USER regress_user1 PASSWORD 'a_nice_long_password'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'a_nice_long_password'; -- error: too short -ALTER USER regress_user1 PASSWORD 'tooshrt'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'tooshrt'; ERROR: password is too short -- error: contains user name -ALTER USER regress_user1 PASSWORD 'xyzregress_user1'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'xyzregress_passwordcheck_user1'; ERROR: password must not contain user name -- error: contains only letters -ALTER USER regress_user1 PASSWORD 'alessnicelongpassword'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'alessnicelongpassword'; ERROR: password must contain both letters and nonletters -- encrypted ok (password is "secret") -ALTER USER regress_user1 PASSWORD 'md51a44d829a20a23eac686d9f0d258af13'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'md592350e12ac34e52dd598f90893bb3ae7'; -- error: password is user name -ALTER USER regress_user1 PASSWORD 'md5e589150ae7d28f93333afae92b36ef48'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'md507a112732ed9f2087fa90b192d44e358'; ERROR: password must not equal user name -DROP USER regress_user1; +DROP USER regress_passwordcheck_user1; diff --git a/contrib/passwordcheck/sql/passwordcheck.sql b/contrib/passwordcheck/sql/passwordcheck.sql index d98796ac494..1fbd6b0e96e 100644 --- a/contrib/passwordcheck/sql/passwordcheck.sql +++ b/contrib/passwordcheck/sql/passwordcheck.sql @@ -1,23 +1,23 @@ LOAD 'passwordcheck'; -CREATE USER regress_user1; +CREATE USER regress_passwordcheck_user1; -- ok -ALTER USER regress_user1 PASSWORD 'a_nice_long_password'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'a_nice_long_password'; -- error: too short -ALTER USER regress_user1 PASSWORD 'tooshrt'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'tooshrt'; -- error: contains user name -ALTER USER regress_user1 PASSWORD 'xyzregress_user1'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'xyzregress_passwordcheck_user1'; -- error: contains only letters -ALTER USER regress_user1 PASSWORD 'alessnicelongpassword'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'alessnicelongpassword'; -- encrypted ok (password is "secret") -ALTER USER regress_user1 PASSWORD 'md51a44d829a20a23eac686d9f0d258af13'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'md592350e12ac34e52dd598f90893bb3ae7'; -- error: password is user name -ALTER USER regress_user1 PASSWORD 'md5e589150ae7d28f93333afae92b36ef48'; +ALTER USER regress_passwordcheck_user1 PASSWORD 'md507a112732ed9f2087fa90b192d44e358'; -DROP USER regress_user1; +DROP USER regress_passwordcheck_user1; diff --git a/contrib/pg_trgm/Makefile b/contrib/pg_trgm/Makefile index 1fbdc9ec1ef..c1756993ec7 100644 --- a/contrib/pg_trgm/Makefile +++ b/contrib/pg_trgm/Makefile @@ -14,7 +14,7 @@ DATA = pg_trgm--1.5--1.6.sql pg_trgm--1.4--1.5.sql pg_trgm--1.3--1.4.sql \ pg_trgm--1.0--1.1.sql PGFILEDESC = "pg_trgm - trigram matching" -REGRESS = pg_trgm pg_word_trgm pg_strict_word_trgm +REGRESS = pg_trgm pg_utf8_trgm pg_word_trgm pg_strict_word_trgm ifdef USE_PGXS PG_CONFIG = pg_config diff --git a/contrib/pg_trgm/data/trgm_utf8.data b/contrib/pg_trgm/data/trgm_utf8.data new file mode 100644 index 00000000000..713856e76a6 --- /dev/null +++ b/contrib/pg_trgm/data/trgm_utf8.data @@ -0,0 +1,50 @@ +Mathematics +数学 +गणित +Matemáticas +رياضيات +Mathématiques +গণিত +Matemática +Математика +ریاضی +Matematika +Mathematik +数学 +Mathematics +गणित +గణితం +Matematik +கணிதம் +數學 +Toán học +Matematika +数学 +수학 +ریاضی +Lissafi +Hisabati +Matematika +Matematica +ریاضی +ಗಣಿತ +ગણિત +คณิตศาสตร์ +ሂሳብ +गणित +ਗਣਿਤ +數學 +数学 +Iṣiro +數學 +သင်္ချာ +Herrega +رياضي +गणित +Математика +Matematyka +ഗണിതം +Matematika +رياضي +Matematika +Matematică diff --git a/contrib/pg_trgm/expected/pg_utf8_trgm.out b/contrib/pg_trgm/expected/pg_utf8_trgm.out new file mode 100644 index 00000000000..0768e7d6a83 --- /dev/null +++ b/contrib/pg_trgm/expected/pg_utf8_trgm.out @@ -0,0 +1,8 @@ +SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset +\if :skip_test +\quit +\endif +-- Index 50 translations of the word "Mathematics" +CREATE TEMP TABLE mb (s text); +\copy mb from 'data/trgm_utf8.data' +CREATE INDEX ON mb USING gist(s gist_trgm_ops); diff --git a/contrib/pg_trgm/expected/pg_utf8_trgm_1.out b/contrib/pg_trgm/expected/pg_utf8_trgm_1.out new file mode 100644 index 00000000000..8505c4fa552 --- /dev/null +++ b/contrib/pg_trgm/expected/pg_utf8_trgm_1.out @@ -0,0 +1,3 @@ +SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset +\if :skip_test +\quit diff --git a/contrib/pg_trgm/sql/pg_utf8_trgm.sql b/contrib/pg_trgm/sql/pg_utf8_trgm.sql new file mode 100644 index 00000000000..0dd962ced83 --- /dev/null +++ b/contrib/pg_trgm/sql/pg_utf8_trgm.sql @@ -0,0 +1,9 @@ +SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset +\if :skip_test +\quit +\endif + +-- Index 50 translations of the word "Mathematics" +CREATE TEMP TABLE mb (s text); +\copy mb from 'data/trgm_utf8.data' +CREATE INDEX ON mb USING gist(s gist_trgm_ops); diff --git a/contrib/pg_trgm/trgm.h b/contrib/pg_trgm/trgm.h index 405a1d95528..06d3994e692 100644 --- a/contrib/pg_trgm/trgm.h +++ b/contrib/pg_trgm/trgm.h @@ -52,10 +52,10 @@ typedef char trgm[3]; } while(0) #ifdef KEEPONLYALNUM -#define ISWORDCHR(c) (t_isalpha(c) || t_isdigit(c)) +#define ISWORDCHR(c, len) (t_isalpha_with_len(c, len) || t_isdigit_with_len(c, len)) #define ISPRINTABLECHAR(a) ( isascii( *(unsigned char*)(a) ) && (isalnum( *(unsigned char*)(a) ) || *(unsigned char*)(a)==' ') ) #else -#define ISWORDCHR(c) (!t_isspace(c)) +#define ISWORDCHR(c, len) (!t_isspace_with_len(c, len)) #define ISPRINTABLECHAR(a) ( isascii( *(unsigned char*)(a) ) && isprint( *(unsigned char*)(a) ) ) #endif #define ISPRINTABLETRGM(t) ( ISPRINTABLECHAR( ((char*)(t)) ) && ISPRINTABLECHAR( ((char*)(t))+1 ) && ISPRINTABLECHAR( ((char*)(t))+2 ) ) diff --git a/contrib/pg_trgm/trgm_gist.c b/contrib/pg_trgm/trgm_gist.c index 6f28db7d1ed..711413df491 100644 --- a/contrib/pg_trgm/trgm_gist.c +++ b/contrib/pg_trgm/trgm_gist.c @@ -692,10 +692,13 @@ gtrgm_penalty(PG_FUNCTION_ARGS) if (ISARRKEY(newval)) { char *cache = (char *) fcinfo->flinfo->fn_extra; - TRGM *cachedVal = (TRGM *) (cache + MAXALIGN(siglen)); + TRGM *cachedVal = NULL; Size newvalsize = VARSIZE(newval); BITVECP sign; + if (cache != NULL) + cachedVal = (TRGM *) (cache + MAXALIGN(siglen)); + /* * Cache the sign data across multiple calls with the same newval. */ diff --git a/contrib/pg_trgm/trgm_op.c b/contrib/pg_trgm/trgm_op.c index fb38135f7a3..63895c3017d 100644 --- a/contrib/pg_trgm/trgm_op.c +++ b/contrib/pg_trgm/trgm_op.c @@ -171,18 +171,29 @@ static char * find_word(char *str, int lenstr, char **endword, int *charlen) { char *beginword = str; + const char *endstr = str + lenstr; - while (beginword - str < lenstr && !ISWORDCHR(beginword)) - beginword += pg_mblen(beginword); + while (beginword < endstr) + { + int clen = pg_mblen_range(beginword, endstr); - if (beginword - str >= lenstr) + if (ISWORDCHR(beginword, clen)) + break; + beginword += clen; + } + + if (beginword >= endstr) return NULL; *endword = beginword; *charlen = 0; - while (*endword - str < lenstr && ISWORDCHR(*endword)) + while (*endword < endstr) { - *endword += pg_mblen(*endword); + int clen = pg_mblen_range(*endword, endstr); + + if (!ISWORDCHR(*endword, clen)) + break; + *endword += clen; (*charlen)++; } @@ -230,9 +241,9 @@ make_trigrams(trgm *tptr, char *str, int bytelen, int charlen) if (bytelen > charlen) { /* Find multibyte character boundaries and apply compact_trigram */ - int lenfirst = pg_mblen(str), - lenmiddle = pg_mblen(str + lenfirst), - lenlast = pg_mblen(str + lenfirst + lenmiddle); + int lenfirst = pg_mblen_unbounded(str), + lenmiddle = pg_mblen_unbounded(str + lenfirst), + lenlast = pg_mblen_unbounded(str + lenfirst + lenmiddle); while ((ptr - str) + lenfirst + lenmiddle + lenlast <= bytelen) { @@ -243,7 +254,7 @@ make_trigrams(trgm *tptr, char *str, int bytelen, int charlen) lenfirst = lenmiddle; lenmiddle = lenlast; - lenlast = pg_mblen(ptr + lenfirst + lenmiddle); + lenlast = pg_mblen_unbounded(ptr + lenfirst + lenmiddle); } } else @@ -723,6 +734,7 @@ get_wildcard_part(const char *str, int lenstr, { const char *beginword = str; const char *endword; + const char *endstr = str + lenstr; char *s = buf; bool in_leading_wildcard_meta = false; bool in_trailing_wildcard_meta = false; @@ -735,11 +747,13 @@ get_wildcard_part(const char *str, int lenstr, * from this loop to the next one, since we may exit at a word character * that is in_escape. */ - while (beginword - str < lenstr) + while (beginword < endstr) { + clen = pg_mblen_range(beginword, endstr); + if (in_escape) { - if (ISWORDCHR(beginword)) + if (ISWORDCHR(beginword, clen)) break; in_escape = false; in_leading_wildcard_meta = false; @@ -750,12 +764,12 @@ get_wildcard_part(const char *str, int lenstr, in_escape = true; else if (ISWILDCARDCHAR(beginword)) in_leading_wildcard_meta = true; - else if (ISWORDCHR(beginword)) + else if (ISWORDCHR(beginword, clen)) break; else in_leading_wildcard_meta = false; } - beginword += pg_mblen(beginword); + beginword += clen; } /* @@ -788,12 +802,12 @@ get_wildcard_part(const char *str, int lenstr, * string boundary. Strip escapes during copy. */ endword = beginword; - while (endword - str < lenstr) + while (endword < endstr) { - clen = pg_mblen(endword); + clen = pg_mblen_range(endword, endstr); if (in_escape) { - if (ISWORDCHR(endword)) + if (ISWORDCHR(endword, clen)) { memcpy(s, endword, clen); (*charlen)++; @@ -821,7 +835,7 @@ get_wildcard_part(const char *str, int lenstr, in_trailing_wildcard_meta = true; break; } - else if (ISWORDCHR(endword)) + else if (ISWORDCHR(endword, clen)) { memcpy(s, endword, clen); (*charlen)++; diff --git a/contrib/pg_trgm/trgm_regexp.c b/contrib/pg_trgm/trgm_regexp.c index 3485a725cde..2b5cfe87299 100644 --- a/contrib/pg_trgm/trgm_regexp.c +++ b/contrib/pg_trgm/trgm_regexp.c @@ -480,7 +480,7 @@ static TRGM *createTrgmNFAInternal(regex_t *regex, TrgmPackedGraph **graph, static void RE_compile(regex_t *regex, text *text_re, int cflags, Oid collation); static void getColorInfo(regex_t *regex, TrgmNFA *trgmNFA); -static bool convertPgWchar(pg_wchar c, trgm_mb_char *result); +static int convertPgWchar(pg_wchar c, trgm_mb_char *result); static void transformGraph(TrgmNFA *trgmNFA); static void processState(TrgmNFA *trgmNFA, TrgmState *state); static void addKey(TrgmNFA *trgmNFA, TrgmState *state, TrgmStateKey *key); @@ -816,10 +816,11 @@ getColorInfo(regex_t *regex, TrgmNFA *trgmNFA) for (j = 0; j < charsCount; j++) { trgm_mb_char c; + int clen = convertPgWchar(chars[j], &c); - if (!convertPgWchar(chars[j], &c)) + if (!clen) continue; /* ok to ignore it altogether */ - if (ISWORDCHR(c.bytes)) + if (ISWORDCHR(c.bytes, clen)) colorInfo->wordChars[colorInfo->wordCharsCount++] = c; else colorInfo->containsNonWord = true; @@ -831,13 +832,15 @@ getColorInfo(regex_t *regex, TrgmNFA *trgmNFA) /* * Convert pg_wchar to multibyte format. - * Returns false if the character should be ignored completely. + * Returns 0 if the character should be ignored completely, else returns its + * byte length. */ -static bool +static int convertPgWchar(pg_wchar c, trgm_mb_char *result) { /* "s" has enough space for a multibyte character and a trailing NUL */ char s[MAX_MULTIBYTE_CHAR_LEN + 1]; + int clen; /* * We can ignore the NUL character, since it can never appear in a PG text @@ -845,11 +848,11 @@ convertPgWchar(pg_wchar c, trgm_mb_char *result) * reconstructing trigrams. */ if (c == 0) - return false; + return 0; /* Do the conversion, making sure the result is NUL-terminated */ memset(s, 0, sizeof(s)); - pg_wchar2mb_with_len(&c, s, 1); + clen = pg_wchar2mb_with_len(&c, s, 1); /* * In IGNORECASE mode, we can ignore uppercase characters. We assume that @@ -871,7 +874,7 @@ convertPgWchar(pg_wchar c, trgm_mb_char *result) if (strcmp(lowerCased, s) != 0) { pfree(lowerCased); - return false; + return 0; } pfree(lowerCased); } @@ -879,7 +882,7 @@ convertPgWchar(pg_wchar c, trgm_mb_char *result) /* Fill result with exactly MAX_MULTIBYTE_CHAR_LEN bytes */ memcpy(result->bytes, s, MAX_MULTIBYTE_CHAR_LEN); - return true; + return clen; } diff --git a/contrib/pgcrypto/Makefile b/contrib/pgcrypto/Makefile index c0b4f1fcf68..120780088e5 100644 --- a/contrib/pgcrypto/Makefile +++ b/contrib/pgcrypto/Makefile @@ -53,7 +53,8 @@ REGRESS = init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \ $(CF_TESTS) \ crypt-des crypt-md5 crypt-blowfish crypt-xdes \ pgp-armor pgp-decrypt pgp-encrypt $(CF_PGP_TESTS) \ - pgp-pubkey-decrypt pgp-pubkey-encrypt pgp-info + pgp-pubkey-decrypt pgp-pubkey-encrypt pgp-pubkey-session \ + pgp-info EXTRA_CLEAN = gen-rtab diff --git a/contrib/pgcrypto/expected/pgp-decrypt.out b/contrib/pgcrypto/expected/pgp-decrypt.out index e8250b090ab..a1dd7586f7b 100644 --- a/contrib/pgcrypto/expected/pgp-decrypt.out +++ b/contrib/pgcrypto/expected/pgp-decrypt.out @@ -317,7 +317,7 @@ SaV9L04ky1qECNDx3XjnoKLC+H7IOQ== (1 row) -- expected: da39a3ee5e6b4b0d3255bfef95601890afd80709 -select encode(digest(pgp_sym_decrypt(dearmor(' +select encode(digest(pgp_sym_decrypt_bytea(dearmor(' -----BEGIN PGP MESSAGE----- Comment: dat3.aes.sha1.mdc.s2k3.z0 @@ -393,6 +393,28 @@ ERROR: Wrong key or corrupt data 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 +-- NUL byte in text decrypt. Ciphertext source: +-- printf 'a\x00\xc' | gpg --homedir /nonexistent \ +-- --personal-compress-preferences uncompressed --textmode \ +-- --personal-cipher-preferences aes --no-emit-version --batch \ +-- --symmetric --passphrase key --armor +do $$ +begin + perform pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- + +jA0EBwMCXLc8pozB10Fg0jQBVUID59TLvWutJp0j6eh9ZgjqIRzdYaIymFB8y4XH +vu0YlJP5D5BX7yqZ+Pry7TlDmiFO +=rV7z +-----END PGP MESSAGE----- +'), 'key', 'debug=1'); +exception when others then + raise '%', + regexp_replace(sqlerrm, 'encoding "[^"]*"', 'encoding [REDACTED]'); +end +$$; +ERROR: invalid byte sequence for encoding [REDACTED]: 0x00 +CONTEXT: PL/pgSQL function inline_code_block line 12 at RAISE -- 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. diff --git a/contrib/pgcrypto/expected/pgp-decrypt_1.out b/contrib/pgcrypto/expected/pgp-decrypt_1.out index 63d5ab98654..7bcf32ec541 100644 --- a/contrib/pgcrypto/expected/pgp-decrypt_1.out +++ b/contrib/pgcrypto/expected/pgp-decrypt_1.out @@ -313,7 +313,7 @@ SaV9L04ky1qECNDx3XjnoKLC+H7IOQ== (1 row) -- expected: da39a3ee5e6b4b0d3255bfef95601890afd80709 -select encode(digest(pgp_sym_decrypt(dearmor(' +select encode(digest(pgp_sym_decrypt_bytea(dearmor(' -----BEGIN PGP MESSAGE----- Comment: dat3.aes.sha1.mdc.s2k3.z0 @@ -389,6 +389,28 @@ ERROR: Wrong key or corrupt data 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 +-- NUL byte in text decrypt. Ciphertext source: +-- printf 'a\x00\xc' | gpg --homedir /nonexistent \ +-- --personal-compress-preferences uncompressed --textmode \ +-- --personal-cipher-preferences aes --no-emit-version --batch \ +-- --symmetric --passphrase key --armor +do $$ +begin + perform pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- + +jA0EBwMCXLc8pozB10Fg0jQBVUID59TLvWutJp0j6eh9ZgjqIRzdYaIymFB8y4XH +vu0YlJP5D5BX7yqZ+Pry7TlDmiFO +=rV7z +-----END PGP MESSAGE----- +'), 'key', 'debug=1'); +exception when others then + raise '%', + regexp_replace(sqlerrm, 'encoding "[^"]*"', 'encoding [REDACTED]'); +end +$$; +ERROR: invalid byte sequence for encoding [REDACTED]: 0x00 +CONTEXT: PL/pgSQL function inline_code_block line 12 at RAISE -- 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. diff --git a/contrib/pgcrypto/expected/pgp-pubkey-session.out b/contrib/pgcrypto/expected/pgp-pubkey-session.out new file mode 100644 index 00000000000..f724d98eb24 --- /dev/null +++ b/contrib/pgcrypto/expected/pgp-pubkey-session.out @@ -0,0 +1,47 @@ +-- Test for overflow with session key at decrypt. +-- Data automatically generated by scripts/pgp_session_data.py. +-- See this file for details explaining how this data is generated. +SELECT pgp_pub_decrypt_bytea( +'\xc1c04c030000000000000000020800a46f5b9b1905b49457a6485474f71ed9b46c2527e1 +da08e1f7871e12c3d38828f2076b984a595bf60f616599ca5729d547de06a258bfbbcd30 +94a321e4668cd43010f0ca8ecf931e5d39bda1152c50c367b11c723f270729245d3ebdbd +0694d320c5a5aa6a405fb45182acb3d7973cbce398e0c5060af7603cfd9ed186ebadd616 +3b50ae42bea5f6d14dda24e6d4687b434c175084515d562e896742b0ba9a1c87d5642e10 +a5550379c71cc490a052ada483b5d96526c0a600fc51755052aa77fdf72f7b4989b920e7 +b90f4b30787a46482670d5caecc7a515a926055ad5509d135702ce51a0e4c1033f2d939d +8f0075ec3428e17310da37d3d2d7ad1ce99adcc91cd446c366c402ae1ee38250343a7fcc +0f8bc28020e603d7a4795ef0dcc1c04c030000000000000000020800a46f5b9b1905b494 +57a6485474f71ed9b46c2527e1da08e1f7871e12c3d38828f2076b984a595bf60f616599 +ca5729d547de06a258bfbbcd3094a321e4668cd43010f0ca8ecf931e5d39bda1152c50c3 +67b11c723f270729245d3ebdbd0694d320c5a5aa6a405fb45182acb3d7973cbce398e0c5 +060af7603cfd9ed186ebadd6163b50ae42bea5f6d14dda24e6d4687b434c175084515d56 +2e896742b0ba9a1c87d5642e10a5550379c71cc490a052ada483b5d96526c0a600fc5175 +5052aa77fdf72f7b4989b920e7b90f4b30787a46482670d5caecc7a515a926055ad5509d +135702ce51a0e4c1033f2d939d8f0075ec3428e17310da37d3d2d7ad1ce99adc'::bytea, +'\xc7c2d8046965d657020800eef8bf1515adb1a3ee7825f75c668ea8dd3e3f9d13e958f6ad +9c55adc0c931a4bb00abe1d52cf7bb0c95d537949d277a5292ede375c6b2a67a3bf7d19f +f975bb7e7be35c2d8300dacba360a0163567372f7dc24000cc7cb6170bedc8f3b1f98c12 +07a6cb4de870a4bc61319b139dcc0e20c368fd68f8fd346d2c0b69c5aed560504e2ec6f1 +23086fe3c5540dc4dd155c0c67257c4ada862f90fe172ace344089da8135e92aca5c2709 +f1c1bc521798bb8c0365841496e709bd184132d387e0c9d5f26dc00fd06c3a76ef66a75c +138285038684707a847b7bd33cfbefbf1d336be954a8048946af97a66352adef8e8b5ae4 +c4748c6f2510265b7a8267bc370dbb00110100010007ff7e72d4f95d2d39901ac12ca5c5 +18e767e719e72340c3fab51c8c5ab1c40f31db8eaffe43533fa61e2dbca2c3f4396c0847 +e5434756acbb1f68128f4136bb135710c89137d74538908dac77967de9e821c559700dd9 +de5a2727eec1f5d12d5d74869dd1de45ed369d94a8814d23861dd163f8c27744b26b98f0 +239c2e6dd1e3493b8cc976fdc8f9a5e250f715aa4c3d7d5f237f8ee15d242e8fa941d1a0 +ed9550ab632d992a97518d142802cb0a97b251319bf5742db8d9d8cbaa06cdfba2d75bc9 +9d77a51ff20bd5ba7f15d7af6e85b904de2855d19af08d45f39deb85403033c69c767a8e +74a343b1d6c8911d34ea441ac3850e57808ed3d885835cbe6c79d10400ef16256f3d5c4c +3341516a2d2aa888df81b603f48a27f3666b40f992a857c1d11ff639cd764a9b42d5a1f8 +58b4aeee36b85508bb5e8b91ef88a7737770b330224479d9b44eae8c631bc43628b69549 +507c0a1af0be0dd7696015abea722b571eb35eefc4ab95595378ec12814727443f625fcd +183bb9b3bccf53b54dd0e5e7a50400ffe08537b2d4e6074e4a1727b658cfccdec8962302 +25e300c05690de45f7065c3d40d86f544a64d51a3e94424f9851a16d1322ebdb41fa8a45 +3131f3e2dc94e858e6396722643df382680f815e53bcdcde5da622f50530a83b217f1103 +cdd6e5e9babe1e415bbff28d44bd18c95f43bbd04afeb2a2a99af38a571c7540de21df03 +ff62c0a33d9143dd3f639893f47732c11c5a12c6052d1935f4d507b7ae1f76ab0e9a69b8 +7305a7f7c19bd509daf4903bff614bc26d118f03e461469c72c12d3a2bb4f78e4d342ce8 +487723649a01ed2b9eb11c662134502c098d55dfcd361939d8370873422c3da75a515a75 +9ffedfe7df44fb3c20f81650801a30d43b5c90b98b3eee'::bytea); +ERROR: Public key too big diff --git a/contrib/pgcrypto/pgp-pgsql.c b/contrib/pgcrypto/pgp-pgsql.c index 0536bfb8921..cf315b126b7 100644 --- a/contrib/pgcrypto/pgp-pgsql.c +++ b/contrib/pgcrypto/pgp-pgsql.c @@ -631,6 +631,7 @@ pgp_sym_decrypt_text(PG_FUNCTION_ARGS) arg = PG_GETARG_BYTEA_PP(2); res = decrypt_internal(0, 1, data, key, NULL, arg); + pg_verifymbstr(VARDATA_ANY(res), VARSIZE_ANY_EXHDR(res), false); PG_FREE_IF_COPY(data, 0); PG_FREE_IF_COPY(key, 1); @@ -732,6 +733,7 @@ pgp_pub_decrypt_text(PG_FUNCTION_ARGS) arg = PG_GETARG_BYTEA_PP(3); res = decrypt_internal(1, 1, data, key, psw, arg); + pg_verifymbstr(VARDATA_ANY(res), VARSIZE_ANY_EXHDR(res), false); PG_FREE_IF_COPY(data, 0); PG_FREE_IF_COPY(key, 1); diff --git a/contrib/pgcrypto/pgp-pubdec.c b/contrib/pgcrypto/pgp-pubdec.c index a0a5738a40e..2a13aa3e6ad 100644 --- a/contrib/pgcrypto/pgp-pubdec.c +++ b/contrib/pgcrypto/pgp-pubdec.c @@ -157,6 +157,7 @@ pgp_parse_pubenc_sesskey(PGP_Context *ctx, PullFilter *pkt) uint8 *msg; int msglen; PGP_MPI *m; + unsigned sess_key_len; pk = ctx->pub_key; if (pk == NULL) @@ -220,11 +221,19 @@ pgp_parse_pubenc_sesskey(PGP_Context *ctx, PullFilter *pkt) if (res < 0) goto out; + sess_key_len = msglen - 3; + if (sess_key_len > PGP_MAX_KEY) + { + px_debug("incorrect session key length=%u", sess_key_len); + res = PXE_PGP_KEY_TOO_BIG; + goto out; + } + /* * got sesskey */ ctx->cipher_algo = *msg; - ctx->sess_key_len = msglen - 3; + ctx->sess_key_len = sess_key_len; memcpy(ctx->sess_key, msg + 1, ctx->sess_key_len); out: diff --git a/contrib/pgcrypto/px.c b/contrib/pgcrypto/px.c index 2099ce2a7a5..f63d56493a6 100644 --- a/contrib/pgcrypto/px.c +++ b/contrib/pgcrypto/px.c @@ -69,6 +69,7 @@ static const struct error_desc px_err_list[] = { {PXE_PGP_UNEXPECTED_PKT, "Unexpected packet in key data"}, {PXE_PGP_MATH_FAILED, "Math operation failed"}, {PXE_PGP_SHORT_ELGAMAL_KEY, "Elgamal keys must be at least 1024 bits long"}, + {PXE_PGP_KEY_TOO_BIG, "Public key too big"}, {PXE_PGP_UNKNOWN_PUBALGO, "Unknown public-key encryption algorithm"}, {PXE_PGP_WRONG_KEY, "Wrong key"}, {PXE_PGP_MULTIPLE_KEYS, diff --git a/contrib/pgcrypto/px.h b/contrib/pgcrypto/px.h index 17d6f224987..9c5c82607a2 100644 --- a/contrib/pgcrypto/px.h +++ b/contrib/pgcrypto/px.h @@ -74,7 +74,7 @@ /* -108 is unused */ #define PXE_PGP_MATH_FAILED -109 #define PXE_PGP_SHORT_ELGAMAL_KEY -110 -/* -111 is unused */ +#define PXE_PGP_KEY_TOO_BIG -111 #define PXE_PGP_UNKNOWN_PUBALGO -112 #define PXE_PGP_WRONG_KEY -113 #define PXE_PGP_MULTIPLE_KEYS -114 diff --git a/contrib/pgcrypto/scripts/pgp_session_data.py b/contrib/pgcrypto/scripts/pgp_session_data.py new file mode 100644 index 00000000000..999350bb2bc --- /dev/null +++ b/contrib/pgcrypto/scripts/pgp_session_data.py @@ -0,0 +1,491 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Generate PGP data to check the session key length of the input data provided +# to pgp_pub_decrypt_bytea(). +# +# First, the crafted data is generated from valid RSA data, freshly generated +# by this script each time it is run, see generate_rsa_keypair(). +# Second, the crafted PGP data is built, see build_message_data() and +# build_key_data(). Finally, the resulting SQL script is generated. +# +# This script generates in stdout the SQL file that is used in the regression +# tests of pgcrypto. The following command can be used to regenerate the file +# which should never be manually manipulated: +# python3 scripts/pgp_session_data.py > sql/pgp-pubkey-session.sql + +import os +import re +import struct +import secrets +import sys +import time + +# pwn for binary manipulation (p32, p64) +from pwn import * + +# Cryptographic libraries, to craft the PGP data. +from Crypto.Cipher import AES +from Crypto.PublicKey import RSA +from Crypto.Util.number import inverse + +# AES key used for session key encryption (16 bytes for AES-128) +AES_KEY = b'\x01' * 16 + +def generate_rsa_keypair(key_size: int = 2048) -> dict: + """ + Generate a fresh RSA key pair. + + The generated key includes all components needed for PGP operations: + - n: public modulus (p * q) + - e: public exponent (typically 65537) + - d: private exponent (e^-1 mod phi(n)) + - p, q: prime factors of n + - u: coefficient (p^-1 mod q) for CRT optimization + + The caller can pass the wanted key size in input, for a default of 2048 + bytes. This function returns the RSA key components, after performing + some validation on them. + """ + + start_time = time.time() + + # Generate RSA key + key = RSA.generate(key_size) + + # Extract all key components + rsa_components = { + 'n': key.n, # Public modulus (p * q) + 'e': key.e, # Public exponent (typically 65537) + 'd': key.d, # Private exponent (e^-1 mod phi(n)) + 'p': key.p, # First prime factor + 'q': key.q, # Second prime factor + 'u': inverse(key.p, key.q) # Coefficient for CRT: p^-1 mod q + } + + # Validate key components for correctness + validate_rsa_key(rsa_components) + + return rsa_components + +def validate_rsa_key(rsa: dict) -> None: + """ + Validate a generated RSA key. + + This function performs basic validation to ensure the RSA key is properly + constructed and all components are consistent, at least mathematically. + + Validations performed: + 1. n = p * q (modulus is product of primes) + 2. gcd(e, phi(n)) = 1 (public exponent is coprime to phi(n)) + 3. (d * e) mod(phi(n)) = 1 (private exponent is multiplicative inverse) + 4. (u * p) (mod q) = 1 (coefficient is correct for CRT) + """ + + n, e, d, p, q, u = rsa['n'], rsa['e'], rsa['d'], rsa['p'], rsa['q'], rsa['u'] + + # Check that n = p * q + if n != p * q: + raise ValueError("RSA validation failed: n <> p * q") + + # Check that p and q are different + if p == q: + raise ValueError("RSA validation failed: p = q (not allowed)") + + # Calculate phi(n) = (p-1)(q-1) + phi_n = (p - 1) * (q - 1) + + # Check that gcd(e, phi(n)) = 1 + def gcd(a, b): + while b: + a, b = b, a % b + return a + + if gcd(e, phi_n) != 1: + raise ValueError("RSA validation failed: gcd(e, phi(n)) <> 1") + + # Check that (d * e) mod(phi(n)) = 1 + if (d * e) % phi_n != 1: + raise ValueError("RSA validation failed: d * e <> 1 (mod phi(n))") + + # Check that (u * p) (mod q) = 1 + if (u * p) % q != 1: + raise ValueError("RSA validation failed: u * p <> 1 (mod q)") + +def mpi_encode(x: int) -> bytes: + """ + Encode an integer as an OpenPGP Multi-Precision Integer (MPI). + + Format (RFC 4880, Section 3.2): + - 2 bytes: bit length of the integer (big-endian) + - N bytes: the integer in big-endian format + + This is used to encode RSA key components (n, e, d, p, q, u) in PGP + packets. + + The integer to encode is given in input, returning an MPI-encoded + integer. + + For example: + mpi_encode(65537) -> b'\x00\x11\x01\x00\x01' + (17 bits, value 0x010001) + """ + if x < 0: + raise ValueError("MPI cannot encode negative integers") + + if x == 0: + # Special case: zero has 0 bits and empty magnitude + bits = 0 + mag = b"" + else: + # Calculate bit length and convert to bytes + bits = x.bit_length() + mag = x.to_bytes((bits + 7) // 8, 'big') + + # Pack: 2-byte bit length + magnitude bytes + return struct.pack('>H', bits) + mag + +def new_packet(tag: int, payload: bytes) -> bytes: + """ + Create a new OpenPGP packet with a proper header. + + OpenPGP packet format (RFC 4880, Section 4.2): + - New packet format: 0xC0 | tag + - Length encoding depends on payload size: + * 0-191: single byte + * 192-8383: two bytes (192 + ((length - 192) >> 8), (length - 192) & 0xFF) + * 8384+: five bytes (0xFF + 4-byte big-endian length) + + The packet is built from a "tag" (1-63) and some "payload" data. The + result generated is a complete OpenPGP packet. + + For example: + new_packet(1, b'data') -> b'\xC1\x04data' + (Tag 1, length 4, payload 'data') + """ + # New packet format: set bit 7 and 6, clear bit 5, tag in bits 0-5 + first = 0xC0 | (tag & 0x3F) + ln = len(payload) + + # Encode length according to OpenPGP specification + if ln <= 191: + # Single byte length for small packets + llen = bytes([ln]) + elif ln <= 8383: + # Two-byte length for medium packets + ln2 = ln - 192 + llen = bytes([192 + (ln2 >> 8), ln2 & 0xFF]) + else: + # Five-byte length for large packets + llen = bytes([255]) + struct.pack('>I', ln) + + return bytes([first]) + llen + payload + +def build_key_data(rsa: dict) -> bytes: + """ + Build the key data, containing an RSA private key. + + The RSA contents should have been generated previously. + + Format (see RFC 4880, Section 5.5.3): + - 1 byte: version (4) + - 4 bytes: creation time (current Unix timestamp) + - 1 byte: public key algorithm (2 = RSA encrypt) + - MPI: RSA public modulus n + - MPI: RSA public exponent e + - 1 byte: string-to-key usage (0 = no encryption) + - MPI: RSA private exponent d + - MPI: RSA prime p + - MPI: RSA prime q + - MPI: RSA coefficient u = p^-1 mod q + - 2 bytes: checksum of private key material + + This function takes a set of RSA key components in input (n, e, d, p, q, u) + and returns a secret key packet. + """ + + # Public key portion + ver = bytes([4]) # Version 4 key + ctime = struct.pack('>I', int(time.time())) # Current Unix timestamp + algo = bytes([2]) # RSA encrypt algorithm + n_mpi = mpi_encode(rsa['n']) # Public modulus + e_mpi = mpi_encode(rsa['e']) # Public exponent + pub = ver + ctime + algo + n_mpi + e_mpi + + # Private key portion + hide_type = bytes([0]) # No string-to-key encryption + d_mpi = mpi_encode(rsa['d']) # Private exponent + p_mpi = mpi_encode(rsa['p']) # Prime p + q_mpi = mpi_encode(rsa['q']) # Prime q + u_mpi = mpi_encode(rsa['u']) # Coefficient u = p^-1 mod q + + # Calculate checksum of private key material (simple sum mod 65536) + private_data = d_mpi + p_mpi + q_mpi + u_mpi + cksum = sum(private_data) & 0xFFFF + + secret = hide_type + private_data + struct.pack('>H', cksum) + payload = pub + secret + + return new_packet(7, payload) + +def pgp_cfb_encrypt_resync(key, plaintext): + """ + Implement OpenPGP CFB mode with resync. + + OpenPGP CFB mode is a variant of standard CFB with a resync operation + after the first two blocks. + + Algorithm (RFC 4880, Section 13.9): + 1. Block 1: FR=zeros, encrypt full block_size bytes + 2. Block 2: FR=block1, encrypt only 2 bytes + 3. Resync: FR = block1[2:] + block2 + 4. Remaining blocks: standard CFB mode + + This function uses the following arguments: + - key: AES encryption key (16 bytes for AES-128) + - plaintext: Data to encrypt + """ + block_size = 16 # AES block size + cipher = AES.new(key[:16], AES.MODE_ECB) # Use ECB for manual CFB + ciphertext = b'' + + # Block 1: FR=zeros, encrypt full 16 bytes + FR = b'\x00' * block_size + FRE = cipher.encrypt(FR) # Encrypt the feedback register + block1 = bytes(a ^ b for a, b in zip(FRE, plaintext[0:16])) + ciphertext += block1 + + # Block 2: FR=block1, encrypt only 2 bytes + FR = block1 + FRE = cipher.encrypt(FR) + block2 = bytes(a ^ b for a, b in zip(FRE[0:2], plaintext[16:18])) + ciphertext += block2 + + # Resync: FR = block1[2:16] + block2[0:2] + # This is the key difference from standard CFB mode + FR = block1[2:] + block2 + + # Block 3+: Continue with standard CFB mode + pos = 18 + while pos < len(plaintext): + FRE = cipher.encrypt(FR) + chunk_len = min(block_size, len(plaintext) - pos) + chunk = plaintext[pos:pos+chunk_len] + enc_chunk = bytes(a ^ b for a, b in zip(FRE[:chunk_len], chunk)) + ciphertext += enc_chunk + + # Update feedback register for next iteration + if chunk_len == block_size: + FR = enc_chunk + else: + # Partial block: pad with old FR bytes + FR = enc_chunk + FR[chunk_len:] + pos += chunk_len + + return ciphertext + +def build_literal_data_packet(data: bytes) -> bytes: + """ + Build a literal data packet containing a message. + + Format (RFC 4880, Section 5.9): + - 1 byte: data format ('b' = binary, 't' = text, 'u' = UTF-8 text) + - 1 byte: filename length (0 = no filename) + - N bytes: filename (empty in this case) + - 4 bytes: date (current Unix timestamp) + - M bytes: literal data + + The data used to build the packet is given in input, with the generated + result returned. + """ + body = bytes([ + ord('b'), # Binary data format + 0, # Filename length (0 = no filename) + ]) + struct.pack('>I', int(time.time())) + data # Current timestamp + data + + return new_packet(11, body) + +def build_symenc_data_packet(sess_key: bytes, cipher_algo: int, payload: bytes) -> bytes: + """ + Build a symmetrically-encrypted data packet using AES-128-CFB. + + This packet contains encrypted data using the session key. The format + includes a random prefix, for security (see RFC 4880, Section 5.7). + + Packet structure: + - Random prefix (block_size bytes) + - Prefix repeat (last 2 bytes of prefix repeated) + - Encrypted literal data packet + + This function uses the following set of arguments: + - sess_key: Session key for encryption + - cipher_algo: Cipher algorithm identifier (7 = AES-128) + - payload: Data to encrypt (wrapped in literal data packet) + """ + block_size = 16 # AES-128 block size + key = sess_key[:16] # Use first 16 bytes for AES-128 + + # Create random prefix + repeat last 2 bytes (total 18 bytes) + # This is required by OpenPGP for integrity checking + prefix_random = secrets.token_bytes(block_size) + prefix = prefix_random + prefix_random[-2:] # 18 bytes total + + # Wrap payload in literal data packet + literal_pkt = build_literal_data_packet(payload) + + # Plaintext = prefix + literal data packet + plaintext = prefix + literal_pkt + + # Encrypt using OpenPGP CFB mode with resync + ciphertext = pgp_cfb_encrypt_resync(key, plaintext) + + return new_packet(9, ciphertext) + +def build_tag1_packet(rsa: dict, sess_key: bytes) -> bytes: + """ + Build a public-key encrypted key. + + This is a very important function, as it is able to create the packet + triggering the overflow check. This function can also be used to create + "legit" packet data. + + Format (RFC 4880, Section 5.1): + - 1 byte: version (3) + - 8 bytes: key ID (0 = any key accepted) + - 1 byte: public key algorithm (2 = RSA encrypt) + - MPI: RSA-encrypted session key + + This uses in arguments the generated RSA key pair, and the session key + to encrypt. The latter is manipulated to trigger the overflow. + + This function returns a complete packet encrypted by a session key. + """ + + # Calculate RSA modulus size in bytes + n_bytes = (rsa['n'].bit_length() + 7) // 8 + + # Session key message format: + # - 1 byte: symmetric cipher algorithm (7 = AES-128) + # - N bytes: session key + # - 2 bytes: checksum (simple sum of session key bytes) + algo_byte = bytes([7]) # AES-128 algorithm identifier + cksum = sum(sess_key) & 0xFFFF # 16-bit checksum + M = algo_byte + sess_key + struct.pack('>H', cksum) + + # PKCS#1 v1.5 padding construction + # Format: 0x02 || PS || 0x00 || M + # Total padded message must be exactly n_bytes long. + total_len = n_bytes # Total length must equal modulus size in bytes + ps_len = total_len - len(M) - 2 # Subtract 2 for 0x02 and 0x00 bytes + + if ps_len < 8: + raise ValueError(f"Padding string too short ({ps_len} bytes); need at least 8 bytes. " + f"Message length: {len(M)}, Modulus size: {n_bytes} bytes") + + # Create padding string with *ALL* bytes being 0xFF (no zero separator!) + PS = bytes([0xFF]) * ps_len + + # Construct the complete padded message + # Normal PKCS#1 v1.5 padding: 0x02 || PS || 0x00 || M + padded = bytes([0x02]) + PS + bytes([0x00]) + M + + # Verify padding construction + if len(padded) != n_bytes: + raise ValueError(f"Padded message length ({len(padded)}) doesn't match RSA modulus size ({n_bytes})") + + # Convert padded message to integer and encrypt with RSA + m_int = int.from_bytes(padded, 'big') + + # Ensure message is smaller than modulus (required for RSA) + if m_int >= rsa['n']: + raise ValueError("Padded message is larger than RSA modulus") + + # RSA encryption: c = m^e mod n + c_int = pow(m_int, rsa['e'], rsa['n']) + + # Encode encrypted result as MPI + c_mpi = mpi_encode(c_int) + + # Build complete packet + ver = bytes([3]) # Version 3 packet + key_id = b"\x00" * 8 # Key ID (0 = any key accepted) + algo = bytes([2]) # RSA encrypt algorithm + payload = ver + key_id + algo + c_mpi + + return new_packet(1, payload) + +def build_message_data(rsa: dict) -> bytes: + """ + This function creates a crafted message, with a long session key + length. + + This takes in input the RSA key components generated previously, + returning a concatenated set of PGP packets crafted for the purpose + of this test. + """ + + # Base prefix for session key (AES key + padding + size). + # Note that the crafted size is the important part for this test. + prefix = AES_KEY + b"\x00" * 16 + p32(0x10) + + # Build encrypted data packet, legit. + sedata = build_symenc_data_packet(AES_KEY, cipher_algo=7, payload=b"\x0a\x00") + + # Build multiple packets + packets = [ + # First packet, legit. + build_tag1_packet(rsa, prefix), + + # Encrypted data packet, legit. + sedata, + + # Second packet: information payload. + # + # This packet contains a longer-crafted session key, able to trigger + # the overflow check in pgcrypto. This is the critical part, and + # and you are right to pay a lot of attention here if you are + # reading this code. + build_tag1_packet(rsa, prefix) + ] + + return b"".join(packets) + +def main(): + # Default key size. + # This number can be set to a higher number if wanted, like 4096. We + # just do not need to do that here. + key_size = 2048 + + # Generate fresh RSA key pair + rsa = generate_rsa_keypair(key_size) + + # Generate the message data. + print("### Building message data", file=sys.stderr) + message_data = build_message_data(rsa) + + # Build the key containing the RSA private key + print("### Building key data", file=sys.stderr) + key_data = build_key_data(rsa) + + # Convert to hexadecimal, for the bytea used in the SQL file. + message_data = message_data.hex() + key_data = key_data.hex() + + # Split each value into lines of 72 characters, for readability. + message_data = re.sub("(.{72})", "\\1\n", message_data, 0, re.DOTALL) + key_data = re.sub("(.{72})", "\\1\n", key_data, 0, re.DOTALL) + + # Get the script filename for documentation + file_basename = os.path.basename(__file__) + + # Output the SQL test case + print(f'''-- Test for overflow with session key at decrypt. +-- Data automatically generated by scripts/{file_basename}. +-- See this file for details explaining how this data is generated. +SELECT pgp_pub_decrypt_bytea( +'\\x{message_data}'::bytea, +'\\x{key_data}'::bytea);''', + file=sys.stdout) + +if __name__ == "__main__": + main() diff --git a/contrib/pgcrypto/sql/pgp-decrypt.sql b/contrib/pgcrypto/sql/pgp-decrypt.sql index 557948d7c75..4901ab66539 100644 --- a/contrib/pgcrypto/sql/pgp-decrypt.sql +++ b/contrib/pgcrypto/sql/pgp-decrypt.sql @@ -230,7 +230,7 @@ SaV9L04ky1qECNDx3XjnoKLC+H7IOQ== '), '0123456789abcdefghij'), 'sha1'), 'hex'); -- expected: da39a3ee5e6b4b0d3255bfef95601890afd80709 -select encode(digest(pgp_sym_decrypt(dearmor(' +select encode(digest(pgp_sym_decrypt_bytea(dearmor(' -----BEGIN PGP MESSAGE----- Comment: dat3.aes.sha1.mdc.s2k3.z0 @@ -288,6 +288,27 @@ VsxxqLSPzNLAeIspJk5G -- Routine text/binary mismatch. select pgp_sym_decrypt(pgp_sym_encrypt_bytea('P', 'key'), 'key', 'debug=1'); +-- NUL byte in text decrypt. Ciphertext source: +-- printf 'a\x00\xc' | gpg --homedir /nonexistent \ +-- --personal-compress-preferences uncompressed --textmode \ +-- --personal-cipher-preferences aes --no-emit-version --batch \ +-- --symmetric --passphrase key --armor +do $$ +begin + perform pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- + +jA0EBwMCXLc8pozB10Fg0jQBVUID59TLvWutJp0j6eh9ZgjqIRzdYaIymFB8y4XH +vu0YlJP5D5BX7yqZ+Pry7TlDmiFO +=rV7z +-----END PGP MESSAGE----- +'), 'key', 'debug=1'); +exception when others then + raise '%', + regexp_replace(sqlerrm, 'encoding "[^"]*"', 'encoding [REDACTED]'); +end +$$; + -- 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. diff --git a/contrib/pgcrypto/sql/pgp-pubkey-session.sql b/contrib/pgcrypto/sql/pgp-pubkey-session.sql new file mode 100644 index 00000000000..51792f1f4d8 --- /dev/null +++ b/contrib/pgcrypto/sql/pgp-pubkey-session.sql @@ -0,0 +1,46 @@ +-- Test for overflow with session key at decrypt. +-- Data automatically generated by scripts/pgp_session_data.py. +-- See this file for details explaining how this data is generated. +SELECT pgp_pub_decrypt_bytea( +'\xc1c04c030000000000000000020800a46f5b9b1905b49457a6485474f71ed9b46c2527e1 +da08e1f7871e12c3d38828f2076b984a595bf60f616599ca5729d547de06a258bfbbcd30 +94a321e4668cd43010f0ca8ecf931e5d39bda1152c50c367b11c723f270729245d3ebdbd +0694d320c5a5aa6a405fb45182acb3d7973cbce398e0c5060af7603cfd9ed186ebadd616 +3b50ae42bea5f6d14dda24e6d4687b434c175084515d562e896742b0ba9a1c87d5642e10 +a5550379c71cc490a052ada483b5d96526c0a600fc51755052aa77fdf72f7b4989b920e7 +b90f4b30787a46482670d5caecc7a515a926055ad5509d135702ce51a0e4c1033f2d939d +8f0075ec3428e17310da37d3d2d7ad1ce99adcc91cd446c366c402ae1ee38250343a7fcc +0f8bc28020e603d7a4795ef0dcc1c04c030000000000000000020800a46f5b9b1905b494 +57a6485474f71ed9b46c2527e1da08e1f7871e12c3d38828f2076b984a595bf60f616599 +ca5729d547de06a258bfbbcd3094a321e4668cd43010f0ca8ecf931e5d39bda1152c50c3 +67b11c723f270729245d3ebdbd0694d320c5a5aa6a405fb45182acb3d7973cbce398e0c5 +060af7603cfd9ed186ebadd6163b50ae42bea5f6d14dda24e6d4687b434c175084515d56 +2e896742b0ba9a1c87d5642e10a5550379c71cc490a052ada483b5d96526c0a600fc5175 +5052aa77fdf72f7b4989b920e7b90f4b30787a46482670d5caecc7a515a926055ad5509d +135702ce51a0e4c1033f2d939d8f0075ec3428e17310da37d3d2d7ad1ce99adc'::bytea, +'\xc7c2d8046965d657020800eef8bf1515adb1a3ee7825f75c668ea8dd3e3f9d13e958f6ad +9c55adc0c931a4bb00abe1d52cf7bb0c95d537949d277a5292ede375c6b2a67a3bf7d19f +f975bb7e7be35c2d8300dacba360a0163567372f7dc24000cc7cb6170bedc8f3b1f98c12 +07a6cb4de870a4bc61319b139dcc0e20c368fd68f8fd346d2c0b69c5aed560504e2ec6f1 +23086fe3c5540dc4dd155c0c67257c4ada862f90fe172ace344089da8135e92aca5c2709 +f1c1bc521798bb8c0365841496e709bd184132d387e0c9d5f26dc00fd06c3a76ef66a75c +138285038684707a847b7bd33cfbefbf1d336be954a8048946af97a66352adef8e8b5ae4 +c4748c6f2510265b7a8267bc370dbb00110100010007ff7e72d4f95d2d39901ac12ca5c5 +18e767e719e72340c3fab51c8c5ab1c40f31db8eaffe43533fa61e2dbca2c3f4396c0847 +e5434756acbb1f68128f4136bb135710c89137d74538908dac77967de9e821c559700dd9 +de5a2727eec1f5d12d5d74869dd1de45ed369d94a8814d23861dd163f8c27744b26b98f0 +239c2e6dd1e3493b8cc976fdc8f9a5e250f715aa4c3d7d5f237f8ee15d242e8fa941d1a0 +ed9550ab632d992a97518d142802cb0a97b251319bf5742db8d9d8cbaa06cdfba2d75bc9 +9d77a51ff20bd5ba7f15d7af6e85b904de2855d19af08d45f39deb85403033c69c767a8e +74a343b1d6c8911d34ea441ac3850e57808ed3d885835cbe6c79d10400ef16256f3d5c4c +3341516a2d2aa888df81b603f48a27f3666b40f992a857c1d11ff639cd764a9b42d5a1f8 +58b4aeee36b85508bb5e8b91ef88a7737770b330224479d9b44eae8c631bc43628b69549 +507c0a1af0be0dd7696015abea722b571eb35eefc4ab95595378ec12814727443f625fcd +183bb9b3bccf53b54dd0e5e7a50400ffe08537b2d4e6074e4a1727b658cfccdec8962302 +25e300c05690de45f7065c3d40d86f544a64d51a3e94424f9851a16d1322ebdb41fa8a45 +3131f3e2dc94e858e6396722643df382680f815e53bcdcde5da622f50530a83b217f1103 +cdd6e5e9babe1e415bbff28d44bd18c95f43bbd04afeb2a2a99af38a571c7540de21df03 +ff62c0a33d9143dd3f639893f47732c11c5a12c6052d1935f4d507b7ae1f76ab0e9a69b8 +7305a7f7c19bd509daf4903bff614bc26d118f03e461469c72c12d3a2bb4f78e4d342ce8 +487723649a01ed2b9eb11c662134502c098d55dfcd361939d8370873422c3da75a515a75 +9ffedfe7df44fb3c20f81650801a30d43b5c90b98b3eee'::bytea); diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c index 2b3819fb2e8..b3cf893417d 100644 --- a/contrib/unaccent/unaccent.c +++ b/contrib/unaccent/unaccent.c @@ -149,9 +149,9 @@ initTrie(const char *filename) state = 0; for (ptr = line; *ptr; ptr += ptrlen) { - ptrlen = pg_mblen(ptr); + ptrlen = pg_mblen_cstr(ptr); /* ignore whitespace, but end src or trg */ - if (t_isspace(ptr)) + if (t_isspace_cstr(ptr)) { if (state == 1) state = 2; @@ -315,6 +315,7 @@ unaccent_lexize(PG_FUNCTION_ARGS) char *srcchar = (char *) PG_GETARG_POINTER(1); int32 len = PG_GETARG_INT32(2); char *srcstart = srcchar; + const char *srcend = srcstart + len; TSLexeme *res; StringInfoData buf; @@ -342,7 +343,7 @@ unaccent_lexize(PG_FUNCTION_ARGS) } else { - matchlen = pg_mblen(srcchar); + matchlen = pg_mblen_range(srcchar, srcend); if (buf.data != NULL) appendBinaryStringInfo(&buf, srcchar, matchlen); } diff --git a/doc/src/sgml/amcheck.sgml b/doc/src/sgml/amcheck.sgml index c570690b59c..bff328351ed 100644 --- a/doc/src/sgml/amcheck.sgml +++ b/doc/src/sgml/amcheck.sgml @@ -353,7 +353,7 @@ SET client_min_messages = DEBUG1; verification functions is true, an additional phase of verification is performed against the table associated with the target index relation. This consists of a dummy - CREATE INDEX operation, which checks for the + CREATE INDEX CONCURRENTLY operation, which checks for the presence of all hypothetical new index tuples against a temporary, in-memory summarizing structure (this is built when needed during the basic first phase of verification). The summarizing structure diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index d1d1f06a5b9..d4bd981dfab 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1578,7 +1578,7 @@ include_dir 'conf.d' This parameter determines whether the passphrase command set by ssl_passphrase_command will also be called during a configuration reload if a key file needs a passphrase. If this - parameter is off (the default), then + parameter is off (the default), then ssl_passphrase_command will be ignored during a reload and the SSL configuration will not be reloaded if a passphrase is needed. That setting is appropriate for a command that requires a @@ -1586,6 +1586,12 @@ include_dir 'conf.d' running. Setting this parameter to on might be appropriate if the passphrase is obtained from a file, for example. + + This parameter must be set to on when running on + Windows since all connections + will perform a configuration reload due to the different process model + of that platform. + This parameter can only be set in the postgresql.conf file or on the server command line. diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 2333d8ef871..915ea10a860 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1646,6 +1646,9 @@ ALTER TABLE table_name OWNER TO new_owne Superusers can always do this; ordinary roles can only do it if they are both the current owner of the object (or a member of the owning role) and a member of the new owning role. + All object privileges of the old owner are transferred to the new owner + along with the ownership. + diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index a70140309b5..6f9d44cbd7f 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -1786,7 +1786,7 @@ while (1) representation of that type is (%f,%f), which is defined in the functions complex_in() - and complex_out() functions + and complex_out() in . The following example inserts the complex type values (1,1) and (3,3) into the diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 1c84756639d..9be4a44162a 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -23247,6 +23247,21 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); + + + + pg_get_partition_constraintdef + + pg_get_partition_constraintdef ( table oid ) + text + + + Reconstructs the definition of a partition constraint. + (This is a decompiled reconstruction, not the original text + of the command.) + + + diff --git a/doc/src/sgml/history.sgml b/doc/src/sgml/history.sgml index 629fc3fbde4..fe62a8bc8b7 100644 --- a/doc/src/sgml/history.sgml +++ b/doc/src/sgml/history.sgml @@ -165,7 +165,7 @@ A short tutorial introducing regular SQL features as well as those of Postgres95 was distributed with the - source code + source code. diff --git a/doc/src/sgml/legal.sgml b/doc/src/sgml/legal.sgml index 75c1309cf73..742c0146f7f 100644 --- a/doc/src/sgml/legal.sgml +++ b/doc/src/sgml/legal.sgml @@ -1,9 +1,9 @@ -2025 +2026 - 1996–2025 + 1996–2026 The PostgreSQL Global Development Group @@ -16,7 +16,7 @@ - Portions Copyright © 1996-2025, PostgreSQL Global Development Group + Portions Copyright © 1996-2026, PostgreSQL Global Development Group Portions Copyright © 1994, The Regents of the University of California diff --git a/doc/src/sgml/ref/create_policy.sgml b/doc/src/sgml/ref/create_policy.sgml index 9f532068e64..27bff7cd60f 100644 --- a/doc/src/sgml/ref/create_policy.sgml +++ b/doc/src/sgml/ref/create_policy.sgml @@ -49,6 +49,8 @@ CREATE POLICY name ON WITH CHECK. When a USING expression returns true for a given row then that row is visible to the user, while if false or null is returned then the row is not visible. + Typically, no error occurs when a row is not visible, but see + for exceptions. When a WITH CHECK expression returns true for a row then that row is inserted or updated, while if false or null is returned then an error occurs. @@ -193,8 +195,9 @@ CREATE POLICY name ON SELECT), and will not be available for modification (in an UPDATE - or DELETE). Such rows are silently suppressed; no error - is reported. + or DELETE). Typically, such rows are silently + suppressed; no error is reported (but see + for exceptions). @@ -250,8 +253,10 @@ CREATE POLICY name ON INSERT or UPDATE command attempts to add rows to the table that do not pass the ALL - policy's WITH CHECK expression, the entire - command will be aborted. + policy's WITH CHECK expression (or its + USING expression, if it does not have a + WITH CHECK expression), the entire command will + be aborted. @@ -267,11 +272,39 @@ CREATE POLICY name ON SELECT policy will be returned during a SELECT query, and that queries that require SELECT permissions, such as - UPDATE, will also only see those records + UPDATE and DELETE, + will also only see those records that are allowed by the SELECT policy. A SELECT policy cannot have a WITH CHECK expression, as it only applies in cases where - records are being retrieved from the relation. + records are being retrieved from the relation, except as described + below. + + + If a data-modifying query has a RETURNING clause, + SELECT permissions are required on the relation, + and any newly inserted or updated rows from the relation must satisfy + the relation's SELECT policies in order to be + available to the RETURNING clause. If a newly + inserted or updated row does not satisfy the relation's + SELECT policies, an error will be thrown (inserted + or updated rows to be returned are never + silently ignored). + + + If an INSERT has an ON CONFLICT DO + NOTHING/UPDATE clause, SELECT + permissions are required on the relation, and the rows proposed for + insertion are checked using the relation's SELECT + policies. If a row proposed for insertion does not satisfy the + relation's SELECT policies, an error is thrown + (the INSERT is never silently + avoided). In addition, if the UPDATE path is + taken, the row to be updated and the new updated row are checked + against the relation's SELECT policies, and an + error is thrown if they are not satisfied (an auxiliary + UPDATE is never silently + avoided). @@ -289,10 +322,11 @@ CREATE POLICY name ON - Note that INSERT with ON CONFLICT DO - UPDATE checks INSERT policies' - WITH CHECK expressions only for rows appended - to the relation by the INSERT path. + Note that an INSERT with an ON CONFLICT + DO NOTHING/UPDATE clause will check the + INSERT policies' WITH CHECK + expressions for all rows proposed for insertion, regardless of + whether or not they end up being inserted. @@ -363,10 +397,10 @@ CREATE POLICY name ON DELETE for a policy means that it will apply to DELETE commands. Only rows that pass this policy will be seen by a DELETE command. There can - be rows that are visible through a SELECT that are - not available for deletion, if they do not pass the - USING expression for - the DELETE policy. + be rows that are visible through a SELECT policy + that are not available for deletion, if they do not pass the + USING expression for the DELETE + policy. @@ -395,6 +429,15 @@ CREATE POLICY name ON + + summarizes how the different + types of policy apply to specific commands. In the table, + check means that the policy expression is checked and an + error is thrown if it returns false or null, whereas filter + means that the row is silently ignored if the policy expression returns + false or null. + + Policies Applied by Command Type @@ -419,8 +462,8 @@ CREATE POLICY name ON - SELECT - Existing row + SELECT / COPY ... TO + Filter existing row @@ -428,32 +471,24 @@ CREATE POLICY name ON SELECT FOR UPDATE/SHARE - Existing row + Filter existing row - Existing row + Filter existing row INSERT - - New row - - - - - - INSERT ... RETURNING - New row + Check new row  - If read access is required to the existing or new row (for example, - a WHERE or RETURNING clause - that refers to columns from the relation). + If read access is required to either the existing or new row (for + example, a WHERE or RETURNING + clause that refers to columns from the relation). - New row + Check new row @@ -461,29 +496,57 @@ CREATE POLICY name ON UPDATE - Existing & new rows + Filter existing row  & + check new row  - Existing row - New row + Filter existing row + Check new row DELETE - Existing row + Filter existing row  + + + + + Filter existing row + + + INSERT ... ON CONFLICT + + Check new row  + + Row proposed for insertion is checked regardless of whether or not a + conflict occurs. + + + + + Check new row  - Existing row ON CONFLICT DO UPDATE - Existing & new rows + + Check existing & new rows  + + New row of the auxiliary UPDATE command, which + might be different from the new row of the original + INSERT command. + + + - Existing row - New row + Check existing row + + Check new row  + diff --git a/doc/src/sgml/ref/create_publication.sgml b/doc/src/sgml/ref/create_publication.sgml index 7ed48f50b0b..45ca9ce7776 100644 --- a/doc/src/sgml/ref/create_publication.sgml +++ b/doc/src/sgml/ref/create_publication.sgml @@ -127,13 +127,15 @@ CREATE PUBLICATION namepublish_via_partition_root (boolean) - This parameter determines whether changes in a partitioned table (or - on its partitions) contained in the publication will be published - using the identity and schema of the partitioned table rather than - that of the individual partitions that are actually changed; the - latter is the default. Enabling this allows the changes to be - replicated into a non-partitioned table or a partitioned table - consisting of a different set of partitions. + This parameter controls how changes to a partitioned table (or any of + its partitions) are published. When set to true, + changes are published using the identity and schema of the + root partitioned table. When set to false (the + default), changes are published using the identity and schema of the + individual partitions where the changes actually occurred. Enabling + this option allows the changes to be replicated into a + non-partitioned table or into a partitioned table whose partition + structure differs from that of the publisher. diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index a119cb1e26a..9900663bd90 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -1224,8 +1224,8 @@ WITH ( MODULUS numeric_literal, REM REFERENCES (foreign key) constraints accept this clause. NOT NULL and CHECK constraints are not deferrable. Note that deferrable constraints cannot be used as - conflict arbitrators in an INSERT statement that - includes an ON CONFLICT DO UPDATE clause. + conflict arbiters in an INSERT statement that + includes an ON CONFLICT clause. diff --git a/doc/src/sgml/ref/createuser.sgml b/doc/src/sgml/ref/createuser.sgml index 0e1a39a3fe6..f64b477564d 100644 --- a/doc/src/sgml/ref/createuser.sgml +++ b/doc/src/sgml/ref/createuser.sgml @@ -485,7 +485,7 @@ PostgreSQL documentation $ createuser -P -s -e joeEnter password for new role: xyzzyEnter it again: xyzzy -CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN; +CREATE ROLE joe PASSWORD 'SCRAM-SHA-256$4096:44560wPMLfjqiAzyPDZ/eQ==$4CA054rZlSFEq8Z3FEhToBTa2X6KnWFxFkPwIbKoDe0=:L/nbSZRCjp6RhOhKK56GoR1zibCCSePKshCJ9lnl3yw=' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN; 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 diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index cf17c2df263..a41511d8dc3 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -1,6 +1,1044 @@ + + Release 14.21 + + + Release date: + 2026-02-12 + + + + This release contains a variety of fixes from 14.20. + For information about new features in major release 14, see + . + + + + The PostgreSQL community will stop + releasing updates for the 14.X release series in November 2026. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 14.21 + + + A dump/restore is not required for those running 14.X. + + + + However, if you are upgrading from a version earlier than 14.19, + see . + + + + + Changes + + + + + + + Guard against unexpected dimensions + of oidvector/int2vector (Tom Lane) + § + + + + These data types are expected to be 1-dimensional arrays containing + no nulls, but there are cast pathways that permit violating those + expectations. Add checks to some functions that were depending on + those expectations without verifying them, and could misbehave in + consequence. + + + + The PostgreSQL Project thanks + Altan Birler for reporting this problem. + (CVE-2026-2003) + + + + + + + Harden selectivity estimators against being attached to operators + that accept unexpected data types (Tom Lane) + § + § + § + + + + contrib/intarray contained a selectivity + estimation function that could be abused for arbitrary code + execution, because it did not check that its input was of the + expected data type. Third-party extensions should check for similar + hazards and add defenses using the technique intarray now uses. + Since such extension fixes will take time, we now require superuser + privilege to attach a non-built-in selectivity estimator to an + operator. + + + + The PostgreSQL Project thanks + Daniel Firer, as part of zeroday.cloud, for reporting this problem. + (CVE-2026-2004) + + + + + + + Fix buffer overrun in contrib/pgcrypto's + PGP decryption functions (Michael Paquier) + § + + + + Decrypting a crafted message with an overlength session key caused a + buffer overrun, with consequences as bad as arbitrary code + execution. + + + + The PostgreSQL Project thanks + Team Xint Code, as part of zeroday.cloud, for reporting this problem. + (CVE-2026-2005) + + + + + + + Fix inadequate validation of multibyte character lengths + (Thomas Munro, Noah Misch) + § + § + § + § + § + § + + + + Assorted bugs allowed an attacker able to issue crafted SQL to + overrun string buffers, with consequences as bad as arbitrary code + execution. After these fixes, applications may + observe invalid byte sequence for encoding errors + when string functions process invalid text that has been stored in + the database. + + + + The PostgreSQL Project thanks Paul Gerste + and Moritz Sanft, as part of zeroday.cloud, for reporting this + problem. + (CVE-2026-2006) + + + + + + + Don't allow CTE references in sub-selects to determine semantic + levels of aggregate functions (Tom Lane) + § + + + + This change undoes a change made two minor releases ago, instead + throwing an error if a sub-select references a CTE that's below the + semantic level that standard SQL rules would assign to the aggregate + based on contained column references and aggregates. The attempted + fix turned out to cause problems of its own, and it's unclear what + to do instead. Since sub-selects within aggregates are disallowed + altogether by the SQL standard, treating such cases as errors seems + sufficient. + + + + + + + Fix failure when all children of a partitioned target table + of an update or delete have been pruned (Amit Langote) + § + + + + In such cases, the executor could report could not find junk + ctid column errors, even though nothing needs to be done. + + + + + + + Allow indexscans on partial hash indexes even when the index's + predicate implies the truth of the WHERE clause (Tom Lane) + § + + + + Normally we drop a WHERE clause that is implied by the predicate, + since it's pointless to test it; it must hold for every index + entry. However that can prevent creation of an indexscan plan if + the index is one that requires a WHERE clause on the leading index + key, as hash indexes do. Don't drop implied clauses when + considering such an index. + + + + + + + Do not emit WAL for unlogged BRIN indexes (Kirill Reshke) + § + + + + One seldom-taken code path incorrectly emitted a WAL record + relating to a BRIN index even if the index was marked unlogged. + Crash recovery would then fail to replay that record, complaining + that the file already exists. + + + + + + + Prevent truncation of CLOG that is still needed by + unread NOTIFY messages (Joel Jacobson, Heikki + Linnakangas) + § + § + § + + + + This fix prevents could not access status of + transaction errors when a backend is slow to + absorb NOTIFY messages. + + + + + + + Escalate errors occurring during NOTIFY message + processing to FATAL, i.e. close the connection (Heikki Linnakangas) + § + + + + Formerly, if a backend got an error while absorbing + a NOTIFY message, it would advance past that + message, report the error to the client, and move on. That behavior + was fraught with problems though. One big concern is that the + client has no good way to know that a notification was lost, and + certainly no way to know what was in it. Depending on the + application logic, missing a notification could cause the + application to get stuck waiting, for example. Also, any remaining + messages would not get processed until someone sent a + new NOTIFY. + + + + Also, if the connection is idle at the time of receiving + a NOTIFY signal, any ERROR would be escalated to + FATAL anyway, due to unrelated concerns. Therefore, we've chosen to + make that happen in all cases, for consistency and to provide a + clear signal to the application that it might have missed some + notifications. + + + + + + + Fix bug in following update chain when locking a tuple (Jasper + Smit) + § + + + + This code path neglected to check the xmin of the first new tuple in + the update chain, making it possible to lock an unrelated tuple if + the original updater aborted and the space was immediately reclaimed + by VACUUM and then re-used. + That could cause unexpected transaction delays or deadlocks. + Errors associated with having identified the wrong tuple have also + been observed. + + + + + + + Fix issues around in-place catalog updates (Noah Misch) + § + § + § + + + + Send a nontransactional invalidation message for an in-place update, + since such an update will survive transaction rollback. Also ensure + that the update is WAL-logged before other sessions can see it. + These fixes primarily prevent scenarios in which relations' + frozen-XID attributes become inconsistent, possibly allowing + premature CLOG truncation and subsequent could not access + status of transaction errors. + + + + + + + Fix potential backend process crash at process exit due to trying to + release a lock in an already-unmapped shared memory segment + (Rahila Syed) + § + + + + + + + Guard against incorrect truncation of the multixact log after a + crash (Heikki Linnakangas) + § + + + + + + + Fix possibly mis-encoded result + of pg_stat_get_backend_activity() (Chao Li) + § + + + + The shared-memory buffer holding a session's activity string can + end with an incomplete multibyte character. Readers are supposed + to truncate off any such incomplete character, but this function + failed to do so. + + + + + + + Guard against recursive memory context logging (Fujii Masao) + § + + + + A constant flow of signals requesting memory context logging could + cause recursive execution of the logging code, which in theory could + lead to stack overflow. + + + + + + + Fix memory context usage when reinitializing a parallel execution + context (Jakub Wartak, Jeevan Chalke) + § + + + + This error could result in a crash due to a subsidiary data + structure having a shorter lifespan than the parallel context. + The problem is not known to be reachable using only + core PostgreSQL, but we have reports of + trouble in extensions. + + + + + + + Set next multixid's offset when creating a new multixid, to remove + the wait loop that was needed in corner cases (Andrey Borodin) + § + § + + + + The previous logic could get stuck waiting for an update that would + never occur. + + + + + + + Avoid rewriting data-modifying CTEs more than once (Bernice Southey, + Dean Rasheed) + § + + + + Formerly, when updating an auto-updatable view or a relation with + rules, if the original query had any data-modifying CTEs, the rewriter + would rewrite those CTEs multiple times due to recursion. This was + inefficient and could produce false errors if a CTE included an + update of an always-generated column. + + + + + + + Fail recovery if WAL does not exist back to the redo point indicated + by the checkpoint record (Nitin Jadhav) + § + + + + Add an explicit check for this before starting recovery, so that no + harm is done and a useful error message is provided. Previously, + recovery might crash or corrupt the database in this situation. + + + + + + + Avoid scribbling on the source query tree during ALTER + PUBLICATION (Sunil S) + § + + + + This error had the visible effect that an event trigger fired for + the query would see only the first publish + option, even if several had been specified. If such a query were + set up as a prepared statement, re-executions would misbehave too. + + + + + + + Prevent invalidation of newly created or newly synced replication + slots (Zhijie Hou) + § + + + + A race condition with a concurrent checkpoint could allow WAL to be + removed that is needed by the replication slot, causing the slot to + immediately get marked invalid. + + + + + + + Fix race condition in computing a replication slot's required xmin + (Zhijie Hou) + § + + + + This could lead to the error cannot build an initial slot + snapshot as oldest safe xid follows snapshot's xmin. + + + + + + + During initial synchronization of a logical replication + subscription, commit the addition of + a pg_replication_origin entry before + starting to copy data (Zhijie Hou) + § + + + + Previously, if the copy step failed, the + new pg_replication_origin entry would be + lost due to transaction rollback. This led to inconsistent state in + shared memory. + + + + + + + Fix possible failure with unexpected data beyond EOF + during restart of a streaming replica server (Anthonin Bonnefoy) + § + + + + + + + Fix erroneous tracking of column position when parsing partition + range bounds (myzhen) + § + + + + This could, for example, lead to the wrong column name being cited + in error messages about casting partition bound values to the + column's data type. + + + + + + + Fix assorted minor errors in error messages (Man Zeng, Tianchen Zhang) + § + § + § + + + + For example, an error report about mismatched timeline number in a + backup manifest showed the starting timeline number where it meant + to show the ending timeline number. + + + + + + + Fix failure to perform function inlining when doing JIT compilation + with LLVM version 17 or later (Anthonin Bonnefoy) + § + + + + + + + Adjust our JIT code to work with LLVM 21 (Holger Hoffstätte) + § + + + + The previous coding failed to compile on aarch64 machines. + + + + + + + Support process title changes on GNU/Hurd (Michael Banck) + § + + + + + + + Make pg_resetwal print the updated value + when changing OldestXID (Heikki Linnakangas) + § + + + + It already did that for every other variable it can change. + + + + + + + In contrib/amcheck, use the correct snapshot + for btree index parent checks (Mihail Nikalayeu) + § + + + + The previous coding caused spurious errors when examining indexes + created with CREATE INDEX CONCURRENTLY. + + + + + + + Fix contrib/amcheck to + handle half-dead btree index pages correctly + (Heikki Linnakangas) + § + + + + amcheck expected such a page to have a parent + downlink, but it does not, leading to a false error report + about mismatch between parent key and child high key. + + + + + + + Fix contrib/amcheck to + handle incomplete btree root page splits correctly + (Heikki Linnakangas) + § + + + + amcheck could report a false error + about block is not true root. + + + + + + + Fix edge-case integer overflow + in contrib/intarray's selectivity estimator + for @@ (Chao Li) + § + + + + This could cause poor selectivity estimates to be produced for cases + involving the maximum integer value. + + + + + + + Fix multibyte-encoding issue in contrib/ltree + (Jeff Davis) + § + + + + The previous coding could pass an incomplete multibyte character + to lower(), probably resulting in incorrect + behavior. + + + + + + + Update time zone data files to tzdata + release 2025c (Tom Lane) + § + + + + The only change is in historical data for pre-1976 timestamps in + Baja California. + + + + + + + + Release 14.20 diff --git a/src/backend/access/brin/brin_pageops.c b/src/backend/access/brin/brin_pageops.c index 992b33a8964..4ee09e04bd3 100644 --- a/src/backend/access/brin/brin_pageops.c +++ b/src/backend/access/brin/brin_pageops.c @@ -890,7 +890,11 @@ brin_initialize_empty_new_buffer(Relation idxrel, Buffer buffer) page = BufferGetPage(buffer); brin_page_init(page, BRIN_PAGETYPE_REGULAR); MarkBufferDirty(buffer); - log_newpage_buffer(buffer, true); + + /* XLOG stuff */ + if (RelationNeedsWAL(idxrel)) + log_newpage_buffer(buffer, true); + END_CRIT_SECTION(); /* diff --git a/src/backend/access/hash/hashfunc.c b/src/backend/access/hash/hashfunc.c index 2c00de50418..342f86537d1 100644 --- a/src/backend/access/hash/hashfunc.c +++ b/src/backend/access/hash/hashfunc.c @@ -234,6 +234,7 @@ hashoidvector(PG_FUNCTION_ARGS) { oidvector *key = (oidvector *) PG_GETARG_POINTER(0); + check_valid_oidvector(key); return hash_any((unsigned char *) key->values, key->dim1 * sizeof(Oid)); } @@ -242,6 +243,7 @@ hashoidvectorextended(PG_FUNCTION_ARGS) { oidvector *key = (oidvector *) PG_GETARG_POINTER(0); + check_valid_oidvector(key); return hash_any_extended((unsigned char *) key->values, key->dim1 * sizeof(Oid), PG_GETARG_INT64(1)); diff --git a/src/backend/access/heap/README.tuplock b/src/backend/access/heap/README.tuplock index 750684d3398..16f7d78b7d2 100644 --- a/src/backend/access/heap/README.tuplock +++ b/src/backend/access/heap/README.tuplock @@ -198,6 +198,36 @@ Inplace updates create an exception to the rule that tuple data won't change under a reader holding a pin. A reader of a heap_fetch() result tuple may witness a torn read. Current inplace-updated fields are aligned and are no wider than four bytes, and current readers don't need consistency across -fields. Hence, they get by with just fetching each field once. XXX such a -caller may also read a value that has not reached WAL; see -systable_inplace_update_finish(). +fields. Hence, they get by with just fetching each field once. + +During logical decoding, caches reflect an inplace update no later than the +next XLOG_XACT_INVALIDATIONS. That record witnesses the end of a command. +Tuples of its cmin are then visible to decoding, as are inplace updates of any +lower LSN. Inplace updates of a higher LSN may also be visible, even if those +updates would have been invisible to a non-historic snapshot matching +decoding's historic snapshot. (In other words, decoding may see inplace +updates that were not visible to a similar snapshot taken during original +transaction processing.) That's a consequence of inplace update violating +MVCC: there are no snapshot-specific versions of inplace-updated values. This +all makes it hard to reason about inplace-updated column reads during logical +decoding, but the behavior does suffice for relhasindex. A relhasindex=t in +CREATE INDEX becomes visible no later than the new pg_index row. While it may +be visible earlier, that's harmless. Finding zero indexes despite +relhasindex=t is normal in more cases than this, e.g. after DROP INDEX. +Example of a case that meaningfully reacts to the inplace inval: + +CREATE TABLE cat (c int) WITH (user_catalog_table = true); +CREATE TABLE normal (d int); +... +CREATE INDEX ON cat (c)\; INSERT INTO normal VALUES (1); + +If the output plugin reads "cat" during decoding of the INSERT, it's fair to +want that read to see relhasindex=t and use the new index. + +An alternative would be to have decoding of XLOG_HEAP_INPLACE immediately +execute its invals. That would behave more like invals during original +transaction processing. It would remove the decoding-specific delay in e.g. a +decoding plugin witnessing a relfrozenxid change. However, a good use case +for that is unlikely, since the plugin would still witness relfrozenxid +changes prematurely. Hence, inplace update takes the trivial approach of +delegating to XLOG_XACT_INVALIDATIONS. diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 96eeb63b73d..79613714acb 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -101,8 +101,11 @@ static void compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask, LockTupleMode mode, bool is_update, TransactionId *result_xmax, uint16 *result_infomask, uint16 *result_infomask2); -static TM_Result heap_lock_updated_tuple(Relation rel, HeapTuple tuple, - ItemPointer ctid, TransactionId xid, +static TM_Result heap_lock_updated_tuple(Relation rel, + uint16 prior_infomask, + TransactionId prior_rawxmax, + const ItemPointerData *prior_ctid, + TransactionId xid, LockTupleMode mode); static void GetMultiXactIdHintBits(MultiXactId multi, uint16 *new_infomask, uint16 *new_infomask2); @@ -4868,11 +4871,13 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, * If there are updates, follow the update chain; bail out if * that cannot be done. */ - if (follow_updates && updated) + if (follow_updates && updated && + !ItemPointerEquals(&tuple->t_self, &t_ctid)) { TM_Result res; - res = heap_lock_updated_tuple(relation, tuple, &t_ctid, + res = heap_lock_updated_tuple(relation, + infomask, xwait, &t_ctid, GetCurrentTransactionId(), mode); if (res != TM_Ok) @@ -5115,11 +5120,13 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, } /* if there are updates, follow the update chain */ - if (follow_updates && !HEAP_XMAX_IS_LOCKED_ONLY(infomask)) + if (follow_updates && !HEAP_XMAX_IS_LOCKED_ONLY(infomask) && + !ItemPointerEquals(&tuple->t_self, &t_ctid)) { TM_Result res; - res = heap_lock_updated_tuple(relation, tuple, &t_ctid, + res = heap_lock_updated_tuple(relation, + infomask, xwait, &t_ctid, GetCurrentTransactionId(), mode); if (res != TM_Ok) @@ -5774,7 +5781,8 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid, * version as well. */ static TM_Result -heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, +heap_lock_updated_tuple_rec(Relation rel, TransactionId priorXmax, + const ItemPointerData *tid, TransactionId xid, LockTupleMode mode) { TM_Result result; @@ -5787,7 +5795,6 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, old_infomask2; TransactionId xmax, new_xmax; - TransactionId priorXmax = InvalidTransactionId; bool cleared_all_frozen = false; bool pinned_desired_page; Buffer vmbuffer = InvalidBuffer; @@ -6101,7 +6108,10 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, * Follow update chain when locking an updated tuple, acquiring locks (row * marks) on the updated versions. * - * The initial tuple is assumed to be already locked. + * 'prior_infomask', 'prior_raw_xmax' and 'prior_ctid' are the corresponding + * fields from the initial tuple. We will lock the tuples starting from the + * one that 'prior_ctid' points to. Note: This function does not lock the + * initial tuple itself. * * This function doesn't check visibility, it just unconditionally marks the * tuple(s) as locked. If any tuple in the updated chain is being deleted @@ -6119,16 +6129,20 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, * levels, because that would lead to a serializability failure. */ static TM_Result -heap_lock_updated_tuple(Relation rel, HeapTuple tuple, ItemPointer ctid, +heap_lock_updated_tuple(Relation rel, + uint16 prior_infomask, + TransactionId prior_raw_xmax, + const ItemPointerData *prior_ctid, TransactionId xid, LockTupleMode mode) { /* - * If the tuple has not been updated, or has moved into another partition - * (effectively a delete) stop here. + * If the tuple has moved into another partition (effectively a delete) + * stop here. */ - if (!HeapTupleHeaderIndicatesMovedPartitions(tuple->t_data) && - !ItemPointerEquals(&tuple->t_self, ctid)) + if (!ItemPointerIndicatesMovedPartitions(prior_ctid)) { + TransactionId prior_xmax; + /* * If this is the first possibly-multixact-able operation in the * current transaction, set my per-backend OldestMemberMXactId @@ -6140,7 +6154,9 @@ heap_lock_updated_tuple(Relation rel, HeapTuple tuple, ItemPointer ctid, */ MultiXactIdSetOldestMember(); - return heap_lock_updated_tuple_rec(rel, ctid, xid, mode); + prior_xmax = (prior_infomask & HEAP_XMAX_IS_MULTI) ? + MultiXactIdGetUpdateXid(prior_raw_xmax, prior_infomask) : prior_raw_xmax; + return heap_lock_updated_tuple_rec(rel, prior_xmax, prior_ctid, xid, mode); } /* nothing to lock */ @@ -6457,6 +6473,19 @@ heap_inplace_lock(Relation relation, Assert(BufferIsValid(buffer)); + /* + * Register shared cache invals if necessary. Other sessions may finish + * inplace updates of this tuple between this step and LockTuple(). Since + * inplace updates don't change cache keys, that's harmless. + * + * While it's tempting to register invals only after confirming we can + * return true, the following obstacle precludes reordering steps that + * way. Registering invals might reach a CatalogCacheInitializeCache() + * that locks "buffer". That would hang indefinitely if running after our + * own LockBuffer(). Hence, we must register invals before LockBuffer(). + */ + CacheInvalidateHeapTupleInplace(relation, oldtup_ptr); + LockTuple(relation, &oldtup.t_self, InplaceUpdateTupleLock); LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); @@ -6552,6 +6581,7 @@ heap_inplace_lock(Relation relation, if (!ret) { UnlockTuple(relation, &oldtup.t_self, InplaceUpdateTupleLock); + ForgetInplace_Inval(); InvalidateCatalogSnapshot(); } return ret; @@ -6573,6 +6603,8 @@ heap_inplace_update_and_unlock(Relation relation, HeapTupleHeader htup = oldtup->t_data; uint32 oldlen; uint32 newlen; + char *dst; + char *src; Assert(ItemPointerEquals(&oldtup->t_self, &tuple->t_self)); oldlen = oldtup->t_len - htup->t_hoff; @@ -6580,15 +6612,28 @@ heap_inplace_update_and_unlock(Relation relation, if (oldlen != newlen || htup->t_hoff != tuple->t_data->t_hoff) elog(ERROR, "wrong tuple length"); - /* NO EREPORT(ERROR) from here till changes are logged */ - START_CRIT_SECTION(); + dst = (char *) htup + htup->t_hoff; + src = (char *) tuple->t_data + tuple->t_data->t_hoff; - memcpy((char *) htup + htup->t_hoff, - (char *) tuple->t_data + tuple->t_data->t_hoff, - newlen); + /* + * Unlink relcache init files as needed. If unlinking, acquire + * RelCacheInitLock until after associated invalidations. By doing this + * in advance, if we checkpoint and then crash between inplace + * XLogInsert() and inval, we don't rely on StartupXLOG() -> + * RelationCacheInitFileRemove(). That uses elevel==LOG, so replay would + * neglect to PANIC on EIO. + */ + PreInplace_Inval(); /*---------- - * XXX A crash here can allow datfrozenxid() to get ahead of relfrozenxid: + * NO EREPORT(ERROR) from here till changes are complete + * + * Our buffer lock won't stop a reader having already pinned and checked + * visibility for this tuple. Hence, we write WAL first, then mutate the + * buffer. Like in MarkBufferDirtyHint() or RecordTransactionCommit(), + * checkpoint delay makes that acceptable. With the usual order of + * changes, a crash after memcpy() and before XLogInsert() could allow + * datfrozenxid to overtake relfrozenxid: * * ["D" is a VACUUM (ONLY_DATABASE_STATS)] * ["R" is a VACUUM tbl] @@ -6598,14 +6643,36 @@ heap_inplace_update_and_unlock(Relation relation, * D: raise pg_database.datfrozenxid, XLogInsert(), finish * [crash] * [recovery restores datfrozenxid w/o relfrozenxid] - */ - - MarkBufferDirty(buffer); + * + * Mimic MarkBufferDirtyHint() subroutine XLogSaveBufferForHint(). + * Specifically, use DELAY_CHKPT_START, and copy the buffer to the stack. + * The stack copy facilitates a FPI of the post-mutation block before we + * accept other sessions seeing it. DELAY_CHKPT_START allows us to + * XLogInsert() before MarkBufferDirty(). Since XLogSaveBufferForHint() + * can operate under BUFFER_LOCK_SHARED, it can't avoid DELAY_CHKPT_START. + * This function, however, likely could avoid it with the following order + * of operations: MarkBufferDirty(), XLogInsert(), memcpy(). Opt to use + * DELAY_CHKPT_START here, too, as a way to have fewer distinct code + * patterns to analyze. Inplace update isn't so frequent that it should + * pursue the small optimization of skipping DELAY_CHKPT_START. + */ + Assert(!MyProc->delayChkpt); + START_CRIT_SECTION(); + MyProc->delayChkpt = true; /* XLOG stuff */ if (RelationNeedsWAL(relation)) { xl_heap_inplace xlrec; + PGAlignedBlock copied_buffer; + char *origdata = (char *) BufferGetBlock(buffer); + Page page = BufferGetPage(buffer); + uint16 lower = ((PageHeader) page)->pd_lower; + uint16 upper = ((PageHeader) page)->pd_upper; + uintptr_t dst_offset_in_block; + RelFileNode rnode; + ForkNumber forkno; + BlockNumber blkno; XLogRecPtr recptr; xlrec.offnum = ItemPointerGetOffsetNumber(&tuple->t_self); @@ -6613,27 +6680,47 @@ heap_inplace_update_and_unlock(Relation relation, XLogBeginInsert(); XLogRegisterData((char *) &xlrec, SizeOfHeapInplace); - XLogRegisterBuffer(0, buffer, REGBUF_STANDARD); - XLogRegisterBufData(0, (char *) htup + htup->t_hoff, newlen); + /* register block matching what buffer will look like after changes */ + memcpy(copied_buffer.data, origdata, lower); + memcpy(copied_buffer.data + upper, origdata + upper, BLCKSZ - upper); + dst_offset_in_block = dst - origdata; + memcpy(copied_buffer.data + dst_offset_in_block, src, newlen); + BufferGetTag(buffer, &rnode, &forkno, &blkno); + Assert(forkno == MAIN_FORKNUM); + XLogRegisterBlock(0, &rnode, forkno, blkno, copied_buffer.data, + REGBUF_STANDARD); + XLogRegisterBufData(0, src, newlen); /* inplace updates aren't decoded atm, don't log the origin */ recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_INPLACE); - PageSetLSN(BufferGetPage(buffer), recptr); + PageSetLSN(page, recptr); } + memcpy(dst, src, newlen); + + MarkBufferDirty(buffer); + + LockBuffer(buffer, BUFFER_LOCK_UNLOCK); + + /* + * Send invalidations to shared queue. SearchSysCacheLocked1() assumes we + * do this before UnlockTuple(). + */ + AtInplace_Inval(); + + MyProc->delayChkpt = false; END_CRIT_SECTION(); + UnlockTuple(relation, &tuple->t_self, InplaceUpdateTupleLock); - heap_inplace_unlock(relation, oldtup, buffer); + AcceptInvalidationMessages(); /* local processing of just-sent inval */ /* - * Send out shared cache inval if necessary. Note that because we only - * pass the new version of the tuple, this mustn't be used for any - * operations that could change catcache lookup keys. But we aren't - * bothering with index updates either, so that's true a fortiori. - * - * XXX ROLLBACK discards the invalidation. See test inplace-inval.spec. + * Queue a transactional inval, for logical decoding and for third-party + * code that might have been relying on it since long before inplace + * update adopted immediate invalidation. See README.tuplock section + * "Reading inplace-updated columns" for logical decoding details. */ if (!IsBootstrapProcessingMode()) CacheInvalidateHeapTuple(relation, tuple, NULL); @@ -6648,6 +6735,7 @@ heap_inplace_unlock(Relation relation, { LockBuffer(buffer, BUFFER_LOCK_UNLOCK); UnlockTuple(relation, &oldtup->t_self, InplaceUpdateTupleLock); + ForgetInplace_Inval(); } /* diff --git a/src/backend/access/heap/heaptoast.c b/src/backend/access/heap/heaptoast.c index 55bbe1d5847..5f9ac79c148 100644 --- a/src/backend/access/heap/heaptoast.c +++ b/src/backend/access/heap/heaptoast.c @@ -770,7 +770,7 @@ heap_fetch_toast_slice(Relation toastrel, Oid valueid, int32 attrsize, chcpyend = (sliceoffset + slicelength - 1) % TOAST_MAX_CHUNK_SIZE; memcpy(VARDATA(result) + - (curchunk * TOAST_MAX_CHUNK_SIZE - sliceoffset) + chcpystrt, + curchunk * TOAST_MAX_CHUNK_SIZE - sliceoffset + chcpystrt, chunkdata + chcpystrt, (chcpyend - chcpystrt) + 1); diff --git a/src/backend/access/nbtree/nbtcompare.c b/src/backend/access/nbtree/nbtcompare.c index 7ac73cb8c2d..14ddb7161b0 100644 --- a/src/backend/access/nbtree/nbtcompare.c +++ b/src/backend/access/nbtree/nbtcompare.c @@ -307,6 +307,9 @@ btoidvectorcmp(PG_FUNCTION_ARGS) oidvector *b = (oidvector *) PG_GETARG_POINTER(1); int i; + check_valid_oidvector(a); + check_valid_oidvector(b); + /* We arbitrarily choose to sort first by vector length */ if (a->dim1 != b->dim1) PG_RETURN_INT32(a->dim1 - b->dim1); diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index d56269d941c..e5f5d098668 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -337,6 +337,9 @@ static MemoryContext MXactContext = NULL; #define debug_elog6(a,b,c,d,e,f) #endif +/* hack to deal with WAL generated with older minor versions */ +static int pre_initialized_offsets_page = -1; + /* internal MultiXactId management */ static void MultiXactIdSetOldestVisible(void); static void RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset, @@ -868,13 +871,62 @@ RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset, int entryno; int slotno; MultiXactOffset *offptr; - int i; + MultiXactId next; + int next_pageno; + int next_entryno; + MultiXactOffset *next_offptr; + MultiXactOffset next_offset; LWLockAcquire(MultiXactOffsetSLRULock, LW_EXCLUSIVE); + /* position of this multixid in the offsets SLRU area */ pageno = MultiXactIdToOffsetPage(multi); entryno = MultiXactIdToOffsetEntry(multi); + /* position of the next multixid */ + next = multi + 1; + if (next < FirstMultiXactId) + next = FirstMultiXactId; + next_pageno = MultiXactIdToOffsetPage(next); + next_entryno = MultiXactIdToOffsetEntry(next); + + /* + * Older minor versions didn't set the next multixid's offset in this + * function, and therefore didn't initialize the next page until the next + * multixid was assigned. If we're replaying WAL that was generated by + * such a version, the next page might not be initialized yet. Initialize + * it now. + */ + if (InRecovery && + next_pageno != pageno && + MultiXactOffsetCtl->shared->latest_page_number == pageno) + { + elog(DEBUG1, "next offsets page is not initialized, initializing it now"); + + /* Create and zero the page */ + slotno = SimpleLruZeroPage(MultiXactOffsetCtl, next_pageno); + + /* Make sure it's written out */ + SimpleLruWritePage(MultiXactOffsetCtl, slotno); + Assert(!MultiXactOffsetCtl->shared->page_dirty[slotno]); + + /* + * Remember that we initialized the page, so that we don't zero it + * again at the XLOG_MULTIXACT_ZERO_OFF_PAGE record. + */ + pre_initialized_offsets_page = next_pageno; + } + + /* + * Set the starting offset of this multixid's members. + * + * In the common case, it was already be set by the previous + * RecordNewMultiXact call, as this was the next multixid of the previous + * multixid. But if multiple backends are generating multixids + * concurrently, we might race ahead and get called before the previous + * multixid. + */ + /* * Note: we pass the MultiXactId to SimpleLruReadPage as the "transaction" * to complain about if there's any I/O error. This is kinda bogus, but @@ -886,9 +938,41 @@ RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset, offptr = (MultiXactOffset *) MultiXactOffsetCtl->shared->page_buffer[slotno]; offptr += entryno; - *offptr = offset; + if (*offptr != offset) + { + /* should already be set to the correct value, or not at all */ + Assert(*offptr == 0); + *offptr = offset; + MultiXactOffsetCtl->shared->page_dirty[slotno] = true; + } - MultiXactOffsetCtl->shared->page_dirty[slotno] = true; + /* + * Set the next multixid's offset to the end of this multixid's members. + */ + if (next_pageno == pageno) + { + next_offptr = offptr + 1; + } + else + { + /* must be the first entry on the page */ + Assert(next_entryno == 0 || next == FirstMultiXactId); + slotno = SimpleLruReadPage(MultiXactOffsetCtl, next_pageno, true, next); + next_offptr = (MultiXactOffset *) MultiXactOffsetCtl->shared->page_buffer[slotno]; + next_offptr += next_entryno; + } + + /* Like in GetNewMultiXactId(), skip over offset 0 */ + next_offset = offset + nmembers; + if (next_offset == 0) + next_offset = 1; + if (*next_offptr != next_offset) + { + /* should already be set to the correct value, or not at all */ + Assert(*next_offptr == 0); + *next_offptr = next_offset; + MultiXactOffsetCtl->shared->page_dirty[slotno] = true; + } /* Exchange our lock */ LWLockRelease(MultiXactOffsetSLRULock); @@ -897,7 +981,7 @@ RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset, prev_pageno = -1; - for (i = 0; i < nmembers; i++, offset++) + for (int i = 0; i < nmembers; i++, offset++) { TransactionId *memberptr; uint32 *flagsptr; @@ -1072,8 +1156,11 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset) result = FirstMultiXactId; } - /* Make sure there is room for the MXID in the file. */ - ExtendMultiXactOffset(result); + /* + * Make sure there is room for the next MXID in the file. Assigning this + * MXID sets the next MXID's offset already. + */ + ExtendMultiXactOffset(result + 1); /* * Reserve the members space, similarly to above. Also, be careful not to @@ -1314,21 +1401,14 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, * one's. However, there are some corner cases to worry about: * * 1. This multixact may be the latest one created, in which case there is - * no next one to look at. In this case the nextOffset value we just - * saved is the correct endpoint. - * - * 2. The next multixact may still be in process of being filled in: that - * is, another process may have done GetNewMultiXactId but not yet written - * the offset entry for that ID. In that scenario, it is guaranteed that - * the offset entry for that multixact exists (because GetNewMultiXactId - * won't release MultiXactGenLock until it does) but contains zero - * (because we are careful to pre-zero offset pages). Because - * GetNewMultiXactId will never return zero as the starting offset for a - * multixact, when we read zero as the next multixact's offset, we know we - * have this case. We sleep for a bit and try again. + * no next one to look at. The next multixact's offset should be set + * already, as we set it in RecordNewMultiXact(), but we used to not do + * that in older minor versions. To cope with that case, if this + * multixact is the latest one created, use the nextOffset value we read + * above as the endpoint. * - * 3. Because GetNewMultiXactId increments offset zero to offset one to - * handle case #2, there is an ambiguity near the point of offset + * 2. Because GetNewMultiXactId skips over offset zero, to reserve zero + * for to mean "unset", there is an ambiguity near the point of offset * wraparound. If we see next multixact's offset is one, is that our * multixact's actual endpoint, or did it end at zero with a subsequent * increment? We handle this using the knowledge that if the zero'th @@ -1340,7 +1420,6 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, * cases, so it seems better than holding the MultiXactGenLock for a long * time on every multixact creation. */ -retry: LWLockAcquire(MultiXactOffsetSLRULock, LW_EXCLUSIVE); pageno = MultiXactIdToOffsetPage(multi); @@ -1385,13 +1464,10 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, nextMXOffset = *offptr; if (nextMXOffset == 0) - { - /* Corner case 2: next multixact is still being filled in */ - LWLockRelease(MultiXactOffsetSLRULock); - CHECK_FOR_INTERRUPTS(); - pg_usleep(1000L); - goto retry; - } + ereport(ERROR, + (errcode(ERRCODE_DATA_CORRUPTED), + errmsg("MultiXact %u has invalid next offset", + multi))); length = nextMXOffset - offset; } @@ -1427,7 +1503,10 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, if (!TransactionIdIsValid(*xactptr)) { - /* Corner case 3: we must be looking at unused slot zero */ + /* + * Corner case 2: offset must have wrapped around to unused slot + * zero. + */ Assert(offset == 0); continue; } @@ -2056,24 +2135,32 @@ TrimMultiXact(void) MultiXactOffsetCtl->shared->latest_page_number = pageno; /* - * Zero out the remainder of the current offsets page. See notes in - * TrimCLOG() for background. Unlike CLOG, some WAL record covers every - * pg_multixact SLRU mutation. Since, also unlike CLOG, we ignore the WAL - * rule "write xlog before data," nextMXact successors may carry obsolete, - * nonzero offset values. Zero those so case 2 of GetMultiXactIdMembers() - * operates normally. + * Set the offset of nextMXact on the offsets page. This is normally done + * in RecordNewMultiXact() of the previous multixact, but we used to not + * do that in older minor versions. To ensure that the next offset is set + * if the binary was just upgraded from an older minor version, do it now. + * + * Zero out the remainder of the page. See notes in TrimCLOG() for + * background. Unlike CLOG, some WAL record covers every pg_multixact + * SLRU mutation. Since, also unlike CLOG, we ignore the WAL rule "write + * xlog before data," nextMXact successors may carry obsolete, nonzero + * offset values. */ entryno = MultiXactIdToOffsetEntry(nextMXact); - if (entryno != 0) { int slotno; MultiXactOffset *offptr; - slotno = SimpleLruReadPage(MultiXactOffsetCtl, pageno, true, nextMXact); + if (entryno == 0) + slotno = SimpleLruZeroPage(MultiXactOffsetCtl, pageno); + else + slotno = SimpleLruReadPage(MultiXactOffsetCtl, pageno, true, nextMXact); offptr = (MultiXactOffset *) MultiXactOffsetCtl->shared->page_buffer[slotno]; offptr += entryno; - MemSet(offptr, 0, BLCKSZ - (entryno * sizeof(MultiXactOffset))); + *offptr = offset; + if (entryno != 0 && (entryno + 1) * sizeof(MultiXactOffset) != BLCKSZ) + MemSet(offptr + 1, 0, BLCKSZ - (entryno + 1) * sizeof(MultiXactOffset)); MultiXactOffsetCtl->shared->page_dirty[slotno] = true; } @@ -3059,6 +3146,23 @@ TruncateMultiXact(MultiXactId newOldestMulti, Oid newOldestMultiDB) return; } + /* + * On crash, MultiXactIdCreateFromMembers() can leave behind multixids + * that were not yet written out and hence have zero offset on disk. If + * such a multixid becomes oldestMulti, we won't be able to look up its + * offset. That should be rare, so we don't try to do anything smart about + * it. Just skip the truncation, and hope that by the next truncation + * attempt, oldestMulti has advanced to a valid multixid. + */ + if (newOldestOffset == 0) + { + ereport(LOG, + (errmsg("cannot truncate up to MultiXact %u because it has invalid offset, skipping truncation", + newOldestMulti))); + LWLockRelease(MultiXactTruncationLock); + return; + } + elog(DEBUG1, "performing multixact truncation: " "offsets [%u, %u), offsets segments [%x, %x), " "members [%u, %u), members segments [%x, %x)", @@ -3255,13 +3359,21 @@ multixact_redo(XLogReaderState *record) memcpy(&pageno, XLogRecGetData(record), sizeof(int)); - LWLockAcquire(MultiXactOffsetSLRULock, LW_EXCLUSIVE); - - slotno = ZeroMultiXactOffsetPage(pageno, false); - SimpleLruWritePage(MultiXactOffsetCtl, slotno); - Assert(!MultiXactOffsetCtl->shared->page_dirty[slotno]); - - LWLockRelease(MultiXactOffsetSLRULock); + /* + * Skip the record if we already initialized the page at the previous + * XLOG_MULTIXACT_CREATE_ID record. See RecordNewMultiXact(). + */ + if (pre_initialized_offsets_page != pageno) + { + LWLockAcquire(MultiXactOffsetSLRULock, LW_EXCLUSIVE); + slotno = ZeroMultiXactOffsetPage(pageno, false); + SimpleLruWritePage(MultiXactOffsetCtl, slotno); + Assert(!MultiXactOffsetCtl->shared->page_dirty[slotno]); + LWLockRelease(MultiXactOffsetSLRULock); + } + else + elog(DEBUG1, "skipping initialization of offsets page %d because it was already initialized on multixid creation", pageno); + pre_initialized_offsets_page = -1; } else if (info == XLOG_MULTIXACT_ZERO_MEM_PAGE) { @@ -3285,6 +3397,22 @@ multixact_redo(XLogReaderState *record) TransactionId max_xid; int i; + if (pre_initialized_offsets_page != -1) + { + /* + * If we implicitly initialized the next offsets page while + * replaying an XLOG_MULTIXACT_CREATE_ID record that was generated + * with an older minor version, we still expect to see an + * XLOG_MULTIXACT_ZERO_OFF_PAGE record for it before any other + * XLOG_MULTIXACT_CREATE_ID records. Therefore this case should + * not happen. If it does, we'll continue with the replay, but + * log a message to note that something's funny. + */ + elog(LOG, "expected to see an XLOG_MULTIXACT_ZERO_OFF_PAGE record for page %d that was implicitly initialized earlier", + pre_initialized_offsets_page); + pre_initialized_offsets_page = -1; + } + /* Store the data back into the SLRU files */ RecordNewMultiXact(xlrec->mid, xlrec->moff, xlrec->nmembers, xlrec->members); diff --git a/src/backend/access/transam/parallel.c b/src/backend/access/transam/parallel.c index 4fdeb5c6f3a..796560423b1 100644 --- a/src/backend/access/transam/parallel.c +++ b/src/backend/access/transam/parallel.c @@ -492,8 +492,12 @@ InitializeParallelDSM(ParallelContext *pcxt) void ReinitializeParallelDSM(ParallelContext *pcxt) { + MemoryContext oldcontext; FixedParallelState *fps; + /* We might be running in a very short-lived memory context. */ + oldcontext = MemoryContextSwitchTo(TopTransactionContext); + /* Wait for any old workers to exit. */ if (pcxt->nworkers_launched > 0) { @@ -531,6 +535,9 @@ ReinitializeParallelDSM(ParallelContext *pcxt) pcxt->worker[i].error_mqh = shm_mq_attach(mq, pcxt->seg, NULL); } } + + /* Restore previous memory context. */ + MemoryContextSwitchTo(oldcontext); } /* diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 3f0f711307d..395650d6406 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -1276,14 +1276,24 @@ RecordTransactionCommit(void) /* * Transactions without an assigned xid can contain invalidation - * messages (e.g. explicit relcache invalidations or catcache - * invalidations for inplace updates); standbys need to process those. - * We can't emit a commit record without an xid, and we don't want to - * force assigning an xid, because that'd be problematic for e.g. - * vacuum. Hence we emit a bespoke record for the invalidations. We - * don't want to use that in case a commit record is emitted, so they - * happen synchronously with commits (besides not wanting to emit more - * WAL records). + * messages. While inplace updates do this, this is not known to be + * necessary; see comment at inplace CacheInvalidateHeapTuple(). + * Extensions might still rely on this capability, and standbys may + * need to process those invals. We can't emit a commit record + * without an xid, and we don't want to force assigning an xid, + * because that'd be problematic for e.g. vacuum. Hence we emit a + * bespoke record for the invalidations. We don't want to use that in + * case a commit record is emitted, so they happen synchronously with + * commits (besides not wanting to emit more WAL records). + * + * XXX Every known use of this capability is a defect. Since an XID + * isn't controlling visibility of the change that prompted invals, + * other sessions need the inval even if this transactions aborts. + * + * ON COMMIT DELETE ROWS does a nontransactional index_build(), which + * queues a relcache inval, including in transactions without an xid + * that had read the (empty) table. Standbys don't need any ON COMMIT + * DELETE ROWS invals, but we've not done the work to withhold them. */ if (nmsgs != 0) { diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index f10145254de..4612c664b91 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7138,6 +7138,16 @@ StartupXLOG(void) } memcpy(&checkPoint, XLogRecGetData(xlogreader), sizeof(CheckPoint)); wasShutdown = ((record->xl_info & ~XLR_INFO_MASK) == XLOG_CHECKPOINT_SHUTDOWN); + + /* Make sure that REDO location exists. */ + if (checkPoint.redo < checkPointLoc) + { + XLogBeginRead(xlogreader, checkPoint.redo); + if (!ReadRecord(xlogreader, LOG, false)) + ereport(PANIC, + errmsg("could not find redo location %X/%08X referenced by checkpoint record at %X/%08X", + LSN_FORMAT_ARGS(checkPoint.redo), LSN_FORMAT_ARGS(checkPointLoc))); + } } /* @@ -9689,8 +9699,18 @@ CreateCheckPoint(int flags) * according to synchronized LSNs of replication slots. The slot's LSN * might be advanced concurrently, so we call this before * CheckPointReplicationSlots() synchronizes replication slots. - */ + * + * We acquire the Allocation lock to serialize the minimum LSN calculation + * with concurrent slot WAL reservation. This ensures that the WAL + * position being reserved is either included in the miminum LSN or is + * beyond or equal to the redo pointer of the current checkpoint (See + * ReplicationSlotReserveWal for details), thus preventing its removal by + * checkpoints. Note that this lock is required only during checkpoints + * where WAL removal is dictated by the slot's minimum LSN. + */ + LWLockAcquire(ReplicationSlotAllocationLock, LW_SHARED); slotsMinReqLSN = XLogGetReplicationSlotMinimumLSN(); + LWLockRelease(ReplicationSlotAllocationLock); /* * In some cases there are groups of actions that must all occur on one @@ -9862,7 +9882,10 @@ CreateCheckPoint(int flags) /* * Recalculate the current minimum LSN to be used in the WAL segment * cleanup. Then, we must synchronize the replication slots again in - * order to make this LSN safe to use. + * order to make this LSN safe to use. Here, we don't need to acquire + * the ReplicationSlotAllocationLock to serialize the minimum LSN + * computation with slot reservation as the RedoRecPtr is not updated + * after the previous computation of minimum LSN. */ slotsMinReqLSN = XLogGetReplicationSlotMinimumLSN(); CheckPointReplicationSlots(); @@ -10222,8 +10245,16 @@ CreateRestartPoint(int flags) * according to synchronized LSNs of replication slots. The slot's LSN * might be advanced concurrently, so we call this before * CheckPointReplicationSlots() synchronizes replication slots. + * + * We acquire the Allocation lock to serialize the minimum LSN calculation + * with concurrent slot WAL reservation. This ensures that the WAL + * position being reserved is either included in the miminum LSN or is + * beyond or equal to the redo pointer of the current checkpoint (See + * ReplicationSlotReserveWal for details). */ + LWLockAcquire(ReplicationSlotAllocationLock, LW_SHARED); slotsMinReqLSN = XLogGetReplicationSlotMinimumLSN(); + LWLockRelease(ReplicationSlotAllocationLock); if (log_checkpoints) LogCheckpointStart(flags, true); @@ -10319,7 +10350,10 @@ CreateRestartPoint(int flags) /* * Recalculate the current minimum LSN to be used in the WAL segment * cleanup. Then, we must synchronize the replication slots again in - * order to make this LSN safe to use. + * order to make this LSN safe to use. Here, we don't need to acquire + * the ReplicationSlotAllocationLock to serialize the minimum LSN + * computation with slot reservation as the RedoRecPtr is not updated + * after the previous computation of minimum LSN. */ slotsMinReqLSN = XLogGetReplicationSlotMinimumLSN(); CheckPointReplicationSlots(); diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index 8db6221b11e..49cb0b57cf7 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -282,8 +282,6 @@ XLogRegisterBlock(uint8 block_id, RelFileNode *rnode, ForkNumber forknum, { registered_buffer *regbuf; - /* This is currently only used to WAL-log a full-page image of a page */ - Assert(flags & REGBUF_FORCE_IMAGE); Assert(begininsert_called); if (block_id >= max_registered_block_id) diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 33405bbb21c..359bf34f48e 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -2911,12 +2911,19 @@ index_update_stats(Relation rel, if (dirty) { systable_inplace_update_finish(state, tuple); - /* the above sends a cache inval message */ + /* the above sends transactional and immediate cache inval messages */ } else { systable_inplace_update_cancel(state); - /* no need to change tuple, but force relcache inval anyway */ + + /* + * While we didn't change relhasindex, CREATE INDEX needs a + * transactional inval for when the new index's catalog rows become + * visible. Other CREATE INDEX and REINDEX code happens to also queue + * this inval, but keep this in case rare callers rely on this part of + * our API contract. + */ CacheInvalidateRelcacheByTuple(tuple); } diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c index 07791b47a61..55a2da35e49 100644 --- a/src/backend/catalog/pg_depend.c +++ b/src/backend/catalog/pg_depend.c @@ -22,11 +22,13 @@ #include "catalog/pg_constraint.h" #include "catalog/pg_depend.h" #include "catalog/pg_extension.h" +#include "catalog/pg_type.h" #include "commands/extension.h" #include "miscadmin.h" #include "utils/fmgroids.h" #include "utils/lsyscache.h" #include "utils/rel.h" +#include "utils/syscache.h" static bool isObjectPinned(const ObjectAddress *object, Relation rel); @@ -846,6 +848,77 @@ getAutoExtensionsOfObject(Oid classId, Oid objectId) return result; } +/* + * Look up a type belonging to an extension. + * + * Returns the type's OID, or InvalidOid if not found. + * + * Notice that the type is specified by name only, without a schema. + * That's because this will typically be used by relocatable extensions + * which can't make a-priori assumptions about which schema their objects + * are in. As long as the extension only defines one type of this name, + * the answer is unique anyway. + * + * We might later add the ability to look up functions, operators, etc. + */ +Oid +getExtensionType(Oid extensionOid, const char *typname) +{ + Oid result = InvalidOid; + Relation depRel; + ScanKeyData key[3]; + SysScanDesc scan; + HeapTuple tup; + + depRel = table_open(DependRelationId, AccessShareLock); + + ScanKeyInit(&key[0], + Anum_pg_depend_refclassid, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(ExtensionRelationId)); + ScanKeyInit(&key[1], + Anum_pg_depend_refobjid, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(extensionOid)); + ScanKeyInit(&key[2], + Anum_pg_depend_refobjsubid, + BTEqualStrategyNumber, F_INT4EQ, + Int32GetDatum(0)); + + scan = systable_beginscan(depRel, DependReferenceIndexId, true, + NULL, 3, key); + + while (HeapTupleIsValid(tup = systable_getnext(scan))) + { + Form_pg_depend depform = (Form_pg_depend) GETSTRUCT(tup); + + if (depform->classid == TypeRelationId && + depform->deptype == DEPENDENCY_EXTENSION) + { + Oid typoid = depform->objid; + HeapTuple typtup; + + typtup = SearchSysCache1(TYPEOID, ObjectIdGetDatum(typoid)); + if (!HeapTupleIsValid(typtup)) + continue; /* should we throw an error? */ + if (strcmp(NameStr(((Form_pg_type) GETSTRUCT(typtup))->typname), + typname) == 0) + { + result = typoid; + ReleaseSysCache(typtup); + break; /* no need to keep searching */ + } + ReleaseSysCache(typtup); + } + } + + systable_endscan(scan); + + table_close(depRel, AccessShareLock); + + return result; +} + /* * Detect whether a sequence is marked as "owned" by a column * diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index 821c2bef444..d043886d04e 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -1170,7 +1170,7 @@ match_prosrc_to_literal(const char *prosrc, const char *literal, if (cursorpos > 0) newcp++; } - chlen = pg_mblen(prosrc); + chlen = pg_mblen_cstr(prosrc); if (strncmp(prosrc, literal, chlen) != 0) goto fail; prosrc += chlen; diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c index fff1aad83ed..efa2d111a61 100644 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@ -461,9 +461,8 @@ static double asyncQueueUsage(void); static void asyncQueueFillWarning(void); static void SignalBackends(void); static void asyncQueueReadAllNotifications(void); -static bool asyncQueueProcessPageEntries(volatile QueuePosition *current, +static bool asyncQueueProcessPageEntries(QueuePosition *current, QueuePosition stop, - char *page_buffer, Snapshot snapshot); static void asyncQueueAdvanceTail(void); static void ProcessIncomingNotify(bool flush); @@ -1485,6 +1484,7 @@ asyncQueueAddEntries(ListCell *nextNotify) */ qe.length = QUEUE_PAGESIZE - offset; qe.dboid = InvalidOid; + qe.xid = InvalidTransactionId; qe.data[0] = '\0'; /* empty channel */ qe.data[1] = '\0'; /* empty payload */ } @@ -1913,17 +1913,10 @@ ProcessNotifyInterrupt(bool flush) static void asyncQueueReadAllNotifications(void) { - volatile QueuePosition pos; + QueuePosition pos; QueuePosition head; Snapshot snapshot; - /* page_buffer must be adequately aligned, so use a union */ - union - { - char buf[QUEUE_PAGESIZE]; - AsyncQueueEntry align; - } page_buffer; - /* Fetch current state */ LWLockAcquire(NotifyQueueLock, LW_SHARED); /* Assert checks that we have a valid state entry */ @@ -1983,49 +1976,27 @@ asyncQueueReadAllNotifications(void) * It is possible that we fail while trying to send a message to our * frontend (for example, because of encoding conversion failure). If * that happens it is critical that we not try to send the same message - * over and over again. Therefore, we place a PG_TRY block here that will - * forcibly advance our queue position before we lose control to an error. - * (We could alternatively retake NotifyQueueLock and move the position - * before handling each individual message, but that seems like too much - * lock traffic.) + * over and over again. Therefore, we set ExitOnAnyError to upgrade any + * ERRORs to FATAL, causing the client connection to be closed on error. + * + * We used to only skip over the offending message and try to soldier on, + * but it was somewhat questionable to lose a notification and give the + * client an ERROR instead. A client application is not be prepared for + * that and can't tell that a notification was missed. It was also not + * very useful in practice because notifications are often processed while + * a connection is idle and reading a message from the client, and in that + * state, any error is upgraded to FATAL anyway. Closing the connection + * is a clear signal to the application that it might have missed + * notifications. */ - PG_TRY(); { + bool save_ExitOnAnyError = ExitOnAnyError; bool reachedStop; + ExitOnAnyError = true; + do { - int curpage = QUEUE_POS_PAGE(pos); - int curoffset = QUEUE_POS_OFFSET(pos); - int slotno; - int copysize; - - /* - * We copy the data from SLRU into a local buffer, so as to avoid - * holding the NotifySLRULock while we are examining the entries - * and possibly transmitting them to our frontend. Copy only the - * part of the page we will actually inspect. - */ - slotno = SimpleLruReadPage_ReadOnly(NotifyCtl, curpage, - InvalidTransactionId); - if (curpage == QUEUE_POS_PAGE(head)) - { - /* we only want to read as far as head */ - copysize = QUEUE_POS_OFFSET(head) - curoffset; - if (copysize < 0) - copysize = 0; /* just for safety */ - } - else - { - /* fetch all the rest of the page */ - copysize = QUEUE_PAGESIZE - curoffset; - } - memcpy(page_buffer.buf + curoffset, - NotifyCtl->shared->page_buffer[slotno] + curoffset, - copysize); - /* Release lock that we got from SimpleLruReadPage_ReadOnly() */ - LWLockRelease(NotifySLRULock); - /* * Process messages up to the stop position, end of page, or an * uncommitted message. @@ -2041,19 +2012,16 @@ asyncQueueReadAllNotifications(void) * rewrite pages under us. Especially we don't want to hold a lock * while sending the notifications to the frontend. */ - reachedStop = asyncQueueProcessPageEntries(&pos, head, - page_buffer.buf, - snapshot); + reachedStop = asyncQueueProcessPageEntries(&pos, head, snapshot); } while (!reachedStop); - } - PG_FINALLY(); - { + /* Update shared state */ LWLockAcquire(NotifyQueueLock, LW_SHARED); QUEUE_BACKEND_POS(MyBackendId) = pos; LWLockRelease(NotifyQueueLock); + + ExitOnAnyError = save_ExitOnAnyError; } - PG_END_TRY(); /* Done with snapshot */ UnregisterSnapshot(snapshot); @@ -2063,31 +2031,42 @@ asyncQueueReadAllNotifications(void) * Fetch notifications from the shared queue, beginning at position current, * and deliver relevant ones to my frontend. * - * The current page must have been fetched into page_buffer from shared - * memory. (We could access the page right in shared memory, but that - * would imply holding the NotifySLRULock throughout this routine.) - * - * We stop if we reach the "stop" position, or reach a notification from an - * uncommitted transaction, or reach the end of the page. - * * The function returns true once we have reached the stop position or an * uncommitted notification, and false if we have finished with the page. * In other words: once it returns true there is no need to look further. * The QueuePosition *current is advanced past all processed messages. */ static bool -asyncQueueProcessPageEntries(volatile QueuePosition *current, +asyncQueueProcessPageEntries(QueuePosition *current, QueuePosition stop, - char *page_buffer, Snapshot snapshot) { + int64 curpage = QUEUE_POS_PAGE(*current); + int slotno; + char *page_buffer; bool reachedStop = false; bool reachedEndOfPage; - AsyncQueueEntry *qe; + + /* + * We copy the entries into a local buffer to avoid holding the SLRU lock + * while we transmit them to our frontend. The local buffer must be + * adequately aligned, so use a union. + */ + union + { + char buf[QUEUE_PAGESIZE]; + AsyncQueueEntry align; + } local_buf; + char *local_buf_end = local_buf.buf; + + slotno = SimpleLruReadPage_ReadOnly(NotifyCtl, curpage, + InvalidTransactionId); + page_buffer = NotifyCtl->shared->page_buffer[slotno]; do { QueuePosition thisentry = *current; + AsyncQueueEntry *qe; if (QUEUE_POS_EQUAL(thisentry, stop)) break; @@ -2129,18 +2108,23 @@ asyncQueueProcessPageEntries(volatile QueuePosition *current, reachedStop = true; break; } - else if (TransactionIdDidCommit(qe->xid)) - { - /* qe->data is the null-terminated channel name */ - char *channel = qe->data; - if (IsListeningOn(channel)) - { - /* payload follows channel name */ - char *payload = qe->data + strlen(channel) + 1; + /* + * Quick check for the case that we're not listening on any + * channels, before calling TransactionIdDidCommit(). This makes + * that case a little faster, but more importantly, it ensures + * that if there's a bad entry in the queue for which + * TransactionIdDidCommit() fails for some reason, we can skip + * over it on the first LISTEN in a session, and not get stuck on + * it indefinitely. + */ + if (listenChannels == NIL) + continue; - NotifyMyFrontEnd(channel, payload, qe->srcPid); - } + if (TransactionIdDidCommit(qe->xid)) + { + memcpy(local_buf_end, qe, qe->length); + local_buf_end += qe->length; } else { @@ -2154,6 +2138,32 @@ asyncQueueProcessPageEntries(volatile QueuePosition *current, /* Loop back if we're not at end of page */ } while (!reachedEndOfPage); + /* Release lock that we got from SimpleLruReadPage_ReadOnly() */ + LWLockRelease(NotifySLRULock); + + /* + * Now that we have let go of the SLRU bank lock, send the notifications + * to our backend + */ + Assert(local_buf_end - local_buf.buf <= BLCKSZ); + for (char *p = local_buf.buf; p < local_buf_end;) + { + AsyncQueueEntry *qe = (AsyncQueueEntry *) p; + + /* qe->data is the null-terminated channel name */ + char *channel = qe->data; + + if (IsListeningOn(channel)) + { + /* payload follows channel name */ + char *payload = qe->data + strlen(channel) + 1; + + NotifyMyFrontEnd(channel, payload, qe->srcPid); + } + + p += qe->length; + } + if (QUEUE_POS_EQUAL(*current, stop)) reachedStop = true; @@ -2236,6 +2246,117 @@ asyncQueueAdvanceTail(void) LWLockRelease(NotifyQueueTailLock); } +/* + * AsyncNotifyFreezeXids + * + * Prepare the async notification queue for CLOG truncation by freezing + * transaction IDs that are about to become inaccessible. + * + * This function is called by VACUUM before advancing datfrozenxid. It scans + * the notification queue and replaces XIDs that would become inaccessible + * after CLOG truncation with special markers: + * - Committed transactions are set to FrozenTransactionId + * - Aborted/crashed transactions are set to InvalidTransactionId + * + * Only XIDs < newFrozenXid are processed, as those are the ones whose CLOG + * pages will be truncated. If XID < newFrozenXid, it cannot still be running + * (or it would have held back newFrozenXid through ProcArray). + * Therefore, if TransactionIdDidCommit returns false, we know the transaction + * either aborted explicitly or crashed, and we can safely mark it invalid. + */ +void +AsyncNotifyFreezeXids(TransactionId newFrozenXid) +{ + QueuePosition pos; + QueuePosition head; + int64 curpage = -1; + int slotno = -1; + char *page_buffer = NULL; + bool page_dirty = false; + + /* + * Acquire locks in the correct order to avoid deadlocks. As per the + * locking protocol: NotifyQueueTailLock, then NotifyQueueLock, then + * NotifySLRULock. + * + * We only need SHARED mode since we're just reading the head/tail + * positions, not modifying them. + */ + LWLockAcquire(NotifyQueueTailLock, LW_SHARED); + LWLockAcquire(NotifyQueueLock, LW_SHARED); + + pos = QUEUE_TAIL; + head = QUEUE_HEAD; + + /* Release NotifyQueueLock early, we only needed to read the positions */ + LWLockRelease(NotifyQueueLock); + + /* + * Scan the queue from tail to head, freezing XIDs as needed. We hold + * NotifyQueueTailLock throughout to ensure the tail doesn't move while + * we're working. + */ + while (!QUEUE_POS_EQUAL(pos, head)) + { + AsyncQueueEntry *qe; + TransactionId xid; + int64 pageno = QUEUE_POS_PAGE(pos); + int offset = QUEUE_POS_OFFSET(pos); + + /* If we need a different page, release old lock and get new one */ + if (pageno != curpage) + { + /* Release previous page if any */ + if (slotno >= 0) + { + if (page_dirty) + { + NotifyCtl->shared->page_dirty[slotno] = true; + page_dirty = false; + } + LWLockRelease(NotifySLRULock); + } + + LWLockAcquire(NotifySLRULock, LW_EXCLUSIVE); + slotno = SimpleLruReadPage(NotifyCtl, pageno, true, + InvalidTransactionId); + page_buffer = NotifyCtl->shared->page_buffer[slotno]; + curpage = pageno; + } + + qe = (AsyncQueueEntry *) (page_buffer + offset); + xid = qe->xid; + + if (TransactionIdIsNormal(xid) && + TransactionIdPrecedes(xid, newFrozenXid)) + { + if (TransactionIdDidCommit(xid)) + { + qe->xid = FrozenTransactionId; + page_dirty = true; + } + else + { + qe->xid = InvalidTransactionId; + page_dirty = true; + } + } + + /* Advance to next entry */ + asyncQueueAdvance(&pos, qe->length); + } + + /* Release final page lock if we acquired one */ + if (slotno >= 0) + { + if (page_dirty) + NotifyCtl->shared->page_dirty[slotno] = true; + LWLockRelease(NotifySLRULock); + } + + LWLockRelease(NotifyQueueTailLock); +} + /* * ProcessIncomingNotify * diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index c4d2ae86651..3f4c966b937 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -45,6 +45,7 @@ #include "catalog/pg_depend.h" #include "catalog/pg_extension.h" #include "catalog/pg_namespace.h" +#include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "commands/alter.h" #include "commands/comment.h" @@ -60,10 +61,12 @@ #include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgroids.h" +#include "utils/inval.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/rel.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/varlena.h" @@ -104,7 +107,26 @@ typedef struct ExtensionVersionInfo struct ExtensionVersionInfo *previous; /* current best predecessor */ } ExtensionVersionInfo; +/* + * Cache structure for get_function_sibling_type (and maybe later, + * allied lookup functions). + */ +typedef struct ExtensionSiblingCache +{ + struct ExtensionSiblingCache *next; /* list link */ + /* lookup key: requesting function's OID and type name */ + Oid reqfuncoid; + const char *typname; + bool valid; /* is entry currently valid? */ + uint32 exthash; /* cache hash of owning extension's OID */ + Oid typeoid; /* OID associated with typname */ +} ExtensionSiblingCache; + +/* Head of linked list of ExtensionSiblingCache structs */ +static ExtensionSiblingCache *ext_sibling_list = NULL; + /* Local functions */ +static void ext_sibling_callback(Datum arg, int cacheid, uint32 hashvalue); static List *find_update_path(List *evi_list, ExtensionVersionInfo *evi_start, ExtensionVersionInfo *evi_target, @@ -254,6 +276,114 @@ get_extension_schema(Oid ext_oid) return result; } +/* + * get_function_sibling_type - find a type belonging to same extension as func + * + * Returns the type's OID, or InvalidOid if not found. + * + * This is useful in extensions, which won't have fixed object OIDs. + * We work from the calling function's own OID, which it can get from its + * FunctionCallInfo parameter, and look up the owning extension and thence + * a type belonging to the same extension. + * + * Notice that the type is specified by name only, without a schema. + * That's because this will typically be used by relocatable extensions + * which can't make a-priori assumptions about which schema their objects + * are in. As long as the extension only defines one type of this name, + * the answer is unique anyway. + * + * We might later add the ability to look up functions, operators, etc. + * + * This code is simply a frontend for some pg_depend lookups. Those lookups + * are fairly expensive, so we provide a simple cache facility. We assume + * that the passed typname is actually a C constant, or at least permanently + * allocated, so that we need not copy that string. + */ +Oid +get_function_sibling_type(Oid funcoid, const char *typname) +{ + ExtensionSiblingCache *cache_entry; + Oid extoid; + Oid typeoid; + + /* + * See if we have the answer cached. Someday there may be enough callers + * to justify a hash table, but for now, a simple linked list is fine. + */ + for (cache_entry = ext_sibling_list; cache_entry != NULL; + cache_entry = cache_entry->next) + { + if (funcoid == cache_entry->reqfuncoid && + strcmp(typname, cache_entry->typname) == 0) + break; + } + if (cache_entry && cache_entry->valid) + return cache_entry->typeoid; + + /* + * Nope, so do the expensive lookups. We do not expect failures, so we do + * not cache negative results. + */ + extoid = getExtensionOfObject(ProcedureRelationId, funcoid); + if (!OidIsValid(extoid)) + return InvalidOid; + typeoid = getExtensionType(extoid, typname); + if (!OidIsValid(typeoid)) + return InvalidOid; + + /* + * Build, or revalidate, cache entry. + */ + if (cache_entry == NULL) + { + /* Register invalidation hook if this is first entry */ + if (ext_sibling_list == NULL) + CacheRegisterSyscacheCallback(EXTENSIONOID, + ext_sibling_callback, + (Datum) 0); + + /* Momentarily zero the space to ensure valid flag is false */ + cache_entry = (ExtensionSiblingCache *) + MemoryContextAllocZero(CacheMemoryContext, + sizeof(ExtensionSiblingCache)); + cache_entry->next = ext_sibling_list; + ext_sibling_list = cache_entry; + } + + cache_entry->reqfuncoid = funcoid; + cache_entry->typname = typname; + cache_entry->exthash = GetSysCacheHashValue1(EXTENSIONOID, + ObjectIdGetDatum(extoid)); + cache_entry->typeoid = typeoid; + /* Mark it valid only once it's fully populated */ + cache_entry->valid = true; + + return typeoid; +} + +/* + * ext_sibling_callback + * Syscache inval callback function for EXTENSIONOID cache + * + * It seems sufficient to invalidate ExtensionSiblingCache entries when + * the owning extension's pg_extension entry is modified or deleted. + * Neither a requesting function's OID, nor the OID of the object it's + * looking for, could change without an extension update or drop/recreate. + */ +static void +ext_sibling_callback(Datum arg, int cacheid, uint32 hashvalue) +{ + ExtensionSiblingCache *cache_entry; + + for (cache_entry = ext_sibling_list; cache_entry != NULL; + cache_entry = cache_entry->next) + { + if (hashvalue == 0 || + cache_entry->exthash == hashvalue) + cache_entry->valid = false; + } +} + /* * Utility functions to check validity of extension and version names */ diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c index eb50f60ed13..a6a19a9aaad 100644 --- a/src/backend/commands/operatorcmds.c +++ b/src/backend/commands/operatorcmds.c @@ -274,7 +274,6 @@ ValidateRestrictionEstimator(List *restrictionName) { Oid typeId[4]; Oid restrictionOid; - AclResult aclresult; typeId[0] = INTERNALOID; /* PlannerInfo */ typeId[1] = OIDOID; /* operator OID */ @@ -290,11 +289,32 @@ ValidateRestrictionEstimator(List *restrictionName) errmsg("restriction estimator function %s must return type %s", NameListToString(restrictionName), "float8"))); - /* Require EXECUTE rights for the estimator */ - aclresult = pg_proc_aclcheck(restrictionOid, GetUserId(), ACL_EXECUTE); - if (aclresult != ACLCHECK_OK) - aclcheck_error(aclresult, OBJECT_FUNCTION, - NameListToString(restrictionName)); + /* + * If the estimator is not a built-in function, require superuser + * privilege to install it. This protects against using something that is + * not a restriction estimator or has hard-wired assumptions about what + * data types it is working with. (Built-in estimators are required to + * defend themselves adequately against unexpected data type choices, but + * it seems impractical to expect that of extensions' estimators.) + * + * If it is built-in, only require EXECUTE rights. + */ + if (restrictionOid >= FirstGenbkiObjectId) + { + if (!superuser()) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("must be superuser to specify a non-built-in restriction estimator function"))); + } + else + { + AclResult aclresult; + + aclresult = pg_proc_aclcheck(restrictionOid, GetUserId(), ACL_EXECUTE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, OBJECT_FUNCTION, + NameListToString(restrictionName)); + } return restrictionOid; } @@ -310,7 +330,6 @@ ValidateJoinEstimator(List *joinName) Oid typeId[5]; Oid joinOid; Oid joinOid2; - AclResult aclresult; typeId[0] = INTERNALOID; /* PlannerInfo */ typeId[1] = OIDOID; /* operator OID */ @@ -348,11 +367,23 @@ ValidateJoinEstimator(List *joinName) errmsg("join estimator function %s must return type %s", NameListToString(joinName), "float8"))); - /* Require EXECUTE rights for the estimator */ - aclresult = pg_proc_aclcheck(joinOid, GetUserId(), ACL_EXECUTE); - if (aclresult != ACLCHECK_OK) - aclcheck_error(aclresult, OBJECT_FUNCTION, - NameListToString(joinName)); + /* privilege checks are the same as in ValidateRestrictionEstimator */ + if (joinOid >= FirstGenbkiObjectId) + { + if (!superuser()) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("must be superuser to specify a non-built-in join estimator function"))); + } + else + { + AclResult aclresult; + + aclresult = pg_proc_aclcheck(joinOid, GetUserId(), ACL_EXECUTE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, OBJECT_FUNCTION, + NameListToString(joinName)); + } return joinOid; } diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index fcd7a0b9764..819a9bcedfe 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -96,7 +96,12 @@ parse_publication_options(List *options, pubactions->pubtruncate = false; *publish_given = true; - publish = defGetString(defel); + + /* + * SplitIdentifierString destructively modifies its input, so make + * a copy so we don't modify the memory of the executing statement + */ + publish = pstrdup(defGetString(defel)); if (!SplitIdentifierString(publish, ',', &publish_list)) ereport(ERROR, diff --git a/src/backend/commands/statscmds.c b/src/backend/commands/statscmds.c index b06758f5e85..38c76feb5c7 100644 --- a/src/backend/commands/statscmds.c +++ b/src/backend/commands/statscmds.c @@ -139,7 +139,13 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights) errmsg("relation \"%s\" is not a table, foreign table, or materialized view", RelationGetRelationName(rel)))); - /* You must own the relation to create stats on it */ + /* + * You must own the relation to create stats on it. + * + * NB: Concurrent changes could cause this function's lookup to find a + * different relation than a previous lookup by the caller, so we must + * perform this check even when check_rights == false. + */ if (!pg_class_ownercheck(RelationGetRelid(rel), stxowner)) aclcheck_error(ACLCHECK_NOT_OWNER, get_relkind_objtype(rel->rd_rel->relkind), RelationGetRelationName(rel)); diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index a431fdabfeb..bf74c411f38 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -694,7 +694,7 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data) * * It is possible that the origin is not yet created for * tablesync worker, this can happen for the states before - * SUBREL_STATE_FINISHEDCOPY. The apply worker can also + * SUBREL_STATE_DATASYNC. The apply worker can also * concurrently try to drop the origin and by this time * the origin might be already removed. For these reasons, * passing missing_ok = true. @@ -1206,7 +1206,7 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel) * * It is possible that the origin is not yet created for tablesync * worker so passing missing_ok = true. This can happen for the states - * before SUBREL_STATE_FINISHEDCOPY. + * before SUBREL_STATE_DATASYNC. */ ReplicationOriginNameForTablesync(subid, relid, originname, sizeof(originname)); diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 1c9b3d1a8f7..6322d2c53b8 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -35,6 +35,7 @@ #include "catalog/pg_database.h" #include "catalog/pg_inherits.h" #include "catalog/pg_namespace.h" +#include "commands/async.h" #include "commands/cluster.h" #include "commands/defrem.h" #include "commands/vacuum.h" @@ -1788,6 +1789,12 @@ vac_truncate_clog(TransactionId frozenXID, return; } + /* + * Freeze any old transaction IDs in the async notification queue before + * CLOG truncation. + */ + AsyncNotifyFreezeXids(frozenXID); + /* * Advance the oldest value for commit timestamps before truncating, so * that if a user requests a timestamp for a transaction we're truncating diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index ae1b07847b1..70f5500ef27 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -2251,14 +2251,6 @@ ExecOnConflictUpdate(ModifyTableState *mtstate, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to concurrent update"))); - /* - * As long as we don't support an UPDATE of INSERT ON CONFLICT for - * a partitioned table we shouldn't reach to a case where tuple to - * be lock is moved to another partition due to concurrent update - * of the partition key. - */ - Assert(!ItemPointerIndicatesMovedPartitions(&tmfd.ctid)); - /* * Tell caller to try again from the very start. * @@ -2276,7 +2268,6 @@ ExecOnConflictUpdate(ModifyTableState *mtstate, errmsg("could not serialize access due to concurrent delete"))); /* see TM_Updated case */ - Assert(!ItemPointerIndicatesMovedPartitions(&tmfd.ctid)); ExecClearTuple(existing); return false; @@ -2672,8 +2663,12 @@ ExecModifyTable(PlanState *pstate) relkind == RELKIND_MATVIEW || relkind == RELKIND_PARTITIONED_TABLE) { - /* ri_RowIdAttNo refers to a ctid attribute */ - Assert(AttributeNumberIsValid(resultRelInfo->ri_RowIdAttNo)); + /* + * ri_RowIdAttNo refers to a ctid attribute. See the comment + * in ExecInitModifyTable(). + */ + Assert(AttributeNumberIsValid(resultRelInfo->ri_RowIdAttNo) || + relkind == RELKIND_PARTITIONED_TABLE); datum = ExecGetJunkAttribute(slot, resultRelInfo->ri_RowIdAttNo, &isNull); @@ -3034,7 +3029,16 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags) { resultRelInfo->ri_RowIdAttNo = ExecFindJunkAttributeInTlist(subplan->targetlist, "ctid"); - if (!AttributeNumberIsValid(resultRelInfo->ri_RowIdAttNo)) + + /* + * For heap relations, a ctid junk attribute must be present. + * Partitioned tables should only appear here when all leaf + * partitions were pruned, in which case no rows can be + * produced and ctid is not needed. + */ + if (relkind == RELKIND_PARTITIONED_TABLE) + Assert(nrels == 1); + else if (!AttributeNumberIsValid(resultRelInfo->ri_RowIdAttNo)) elog(ERROR, "could not find junk ctid column"); } else if (relkind == RELKIND_FOREIGN_TABLE) diff --git a/src/backend/jit/llvm/Makefile b/src/backend/jit/llvm/Makefile index 6fe96e7b9c7..1c3022b6274 100644 --- a/src/backend/jit/llvm/Makefile +++ b/src/backend/jit/llvm/Makefile @@ -22,8 +22,10 @@ endif PGFILEDESC = "llvmjit - JIT using LLVM" NAME = llvmjit -# LLVM 14 produces deprecation warnings. We'll need to make some changes -# before the relevant functions are removed, but for now silence the warnings. +# Some functions called in LLVM 14 and LLVM 15 are marked with GCC deprecation +# attributes. For LLVM 16 and later, we use the newer replacement functions +# instead, but warnings are suppressed unconditionally. (Note that this is +# only done in branches before REL_18_STABLE.) ifeq ($(GCC), yes) LLVM_CFLAGS += -Wno-deprecated-declarations endif diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index 824d4b270fe..c0d48aac13d 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -719,7 +719,11 @@ llvm_optimize_module(LLVMJitContext *context, LLVMModuleRef module) if (context->base.flags & PGJIT_OPT3) passes = "default"; + else if (context->base.flags & PGJIT_INLINE) + /* if doing inlining, but no expensive optimization, add inline pass */ + passes = "default,mem2reg,inline"; else + /* default includes always-inline pass */ passes = "default,mem2reg"; options = LLVMCreatePassBuilderOptions(); @@ -1339,7 +1343,8 @@ llvm_create_object_layer(void *Ctx, LLVMOrcExecutionSessionRef ES, const char *T { LLVMJITEventListenerRef l = LLVMCreatePerfJITEventListener(); - LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener(objlayer, l); + if (l) + LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener(objlayer, l); } #endif diff --git a/src/backend/jit/llvm/llvmjit_expr.c b/src/backend/jit/llvm/llvmjit_expr.c index cfb6fe8cffb..8cf2e830efa 100644 --- a/src/backend/jit/llvm/llvmjit_expr.c +++ b/src/backend/jit/llvm/llvmjit_expr.c @@ -612,8 +612,8 @@ llvm_compile_expr(ExprState *state) LLVMBuildStore(b, l_sbool_const(1), v_resnullp); /* create blocks for checking args, one for each */ - b_checkargnulls = - palloc(sizeof(LLVMBasicBlockRef *) * op->d.func.nargs); + b_checkargnulls = (LLVMBasicBlockRef *) + palloc(sizeof(LLVMBasicBlockRef) * op->d.func.nargs); for (int argno = 0; argno < op->d.func.nargs; argno++) b_checkargnulls[argno] = l_bb_before_v(b_nonull, "b.%d.isnull.%d", opno, diff --git a/src/backend/jit/llvm/llvmjit_wrap.cpp b/src/backend/jit/llvm/llvmjit_wrap.cpp index 0a52fdbea20..ddae8965474 100644 --- a/src/backend/jit/llvm/llvmjit_wrap.cpp +++ b/src/backend/jit/llvm/llvmjit_wrap.cpp @@ -118,7 +118,14 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(llvm::orc::ObjectLayer, LLVMOrcObjectLayerRef LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager(LLVMOrcExecutionSessionRef ES) { +#if LLVM_VERSION_MAJOR >= 21 + return wrap(new llvm::orc::RTDyldObjectLinkingLayer( + *unwrap(ES), [](const llvm::MemoryBuffer&) { + return std::make_unique(nullptr, true); + })); +#else return wrap(new llvm::orc::RTDyldObjectLinkingLayer( *unwrap(ES), [] { return std::make_unique(nullptr, true); })); +#endif } #endif diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c index 8c395be3456..2ba687c3256 100644 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@ -3424,6 +3424,16 @@ check_index_predicates(PlannerInfo *root, RelOptInfo *rel) if (is_target_rel) continue; + /* + * If index is !amoptionalkey, also leave indrestrictinfo as set + * above. Otherwise we risk removing all quals for the first index + * key and then not being able to generate an indexscan at all. It + * would be better to be more selective, but we've not yet identified + * which if any of the quals match the first index key. + */ + if (!index->amoptionalkey) + continue; + /* Else compute indrestrictinfo as the non-implied quals */ index->indrestrictinfo = NIL; foreach(lcr, rel->baserestrictinfo) diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index d0592a1176c..7a85651befe 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -35,6 +35,8 @@ typedef struct ParseState *pstate; int min_varlevel; int min_agglevel; + int min_ctelevel; + RangeTblEntry *min_cte; int sublevels_up; } check_agg_arguments_context; @@ -54,7 +56,8 @@ typedef struct static int check_agg_arguments(ParseState *pstate, List *directargs, List *args, - Expr *filter); + Expr *filter, + int agglocation); static bool check_agg_arguments_walker(Node *node, check_agg_arguments_context *context); static void check_ungrouped_columns(Node *node, ParseState *pstate, Query *qry, @@ -332,7 +335,8 @@ check_agglevels_and_constraints(ParseState *pstate, Node *expr) min_varlevel = check_agg_arguments(pstate, directargs, args, - filter); + filter, + location); *p_levelsup = min_varlevel; @@ -626,7 +630,8 @@ static int check_agg_arguments(ParseState *pstate, List *directargs, List *args, - Expr *filter) + Expr *filter, + int agglocation) { int agglevel; check_agg_arguments_context context; @@ -634,6 +639,8 @@ check_agg_arguments(ParseState *pstate, context.pstate = pstate; context.min_varlevel = -1; /* signifies nothing found yet */ context.min_agglevel = -1; + context.min_ctelevel = -1; + context.min_cte = NULL; context.sublevels_up = 0; (void) check_agg_arguments_walker((Node *) args, &context); @@ -671,6 +678,20 @@ check_agg_arguments(ParseState *pstate, parser_errposition(pstate, aggloc))); } + /* + * If there's a non-local CTE that's below the aggregate's semantic level, + * complain. It's not quite clear what we should do to fix up such a case + * (treating the CTE reference like a Var seems wrong), and it's also + * unclear whether there is a real-world use for such cases. + */ + if (context.min_ctelevel >= 0 && context.min_ctelevel < agglevel) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("outer-level aggregate cannot use a nested CTE"), + errdetail("CTE \"%s\" is below the aggregate's semantic level.", + context.min_cte->eref->aliasname), + parser_errposition(pstate, agglocation))); + /* * Now check for vars/aggs in the direct arguments, and throw error if * needed. Note that we allow a Var of the agg's semantic level, but not @@ -684,6 +705,7 @@ check_agg_arguments(ParseState *pstate, { context.min_varlevel = -1; context.min_agglevel = -1; + context.min_ctelevel = -1; (void) check_agg_arguments_walker((Node *) directargs, &context); if (context.min_varlevel >= 0 && context.min_varlevel < agglevel) ereport(ERROR, @@ -699,6 +721,13 @@ check_agg_arguments(ParseState *pstate, parser_errposition(pstate, locate_agg_of_level((Node *) directargs, context.min_agglevel)))); + if (context.min_ctelevel >= 0 && context.min_ctelevel < agglevel) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("outer-level aggregate cannot use a nested CTE"), + errdetail("CTE \"%s\" is below the aggregate's semantic level.", + context.min_cte->eref->aliasname), + parser_errposition(pstate, agglocation))); } return agglevel; } @@ -779,11 +808,6 @@ check_agg_arguments_walker(Node *node, if (IsA(node, RangeTblEntry)) { - /* - * CTE references act similarly to Vars of the CTE's level. Without - * this we might conclude that the Agg can be evaluated above the CTE, - * leading to trouble. - */ RangeTblEntry *rte = (RangeTblEntry *) node; if (rte->rtekind == RTE_CTE) @@ -795,9 +819,12 @@ check_agg_arguments_walker(Node *node, /* ignore local CTEs of subqueries */ if (ctelevelsup >= 0) { - if (context->min_varlevel < 0 || - context->min_varlevel > ctelevelsup) - context->min_varlevel = ctelevelsup; + if (context->min_ctelevel < 0 || + context->min_ctelevel > ctelevelsup) + { + context->min_ctelevel = ctelevelsup; + context->min_cte = rte; + } } } return false; /* allow range_table_walker to continue */ diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index 68adf9caa04..924a2de9918 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -4158,12 +4158,14 @@ transformPartitionRangeBounds(ParseState *pstate, List *blist, int i, j; - i = j = 0; + j = 0; foreach(lc, blist) { Node *expr = lfirst(lc); PartitionRangeDatum *prd = NULL; + i = foreach_current_index(lc); + /* * Infinite range bounds -- "minvalue" and "maxvalue" -- get passed in * as ColumnRefs. @@ -4241,7 +4243,6 @@ transformPartitionRangeBounds(ParseState *pstate, List *blist, prd = makeNode(PartitionRangeDatum); prd->kind = PARTITION_RANGE_DATUM_VALUE; prd->value = (Node *) value; - ++i; } prd->location = exprLocation(expr); diff --git a/src/backend/po/de.po b/src/backend/po/de.po index c52e963ccff..a32f2c25aeb 100644 --- a/src/backend/po/de.po +++ b/src/backend/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-07 07:15+0000\n" +"POT-Creation-Date: 2026-02-07 09:17+0000\n" "PO-Revision-Date: 2025-08-25 21:56+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" @@ -33,16 +33,16 @@ msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m" #: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 #: access/transam/timeline.c:143 access/transam/timeline.c:362 #: access/transam/twophase.c:1329 access/transam/xlog.c:3594 -#: access/transam/xlog.c:4843 access/transam/xlog.c:11737 -#: access/transam/xlog.c:11750 access/transam/xlog.c:12205 -#: access/transam/xlog.c:12285 access/transam/xlog.c:12322 -#: access/transam/xlog.c:12382 access/transam/xlogfuncs.c:703 +#: access/transam/xlog.c:4843 access/transam/xlog.c:11771 +#: access/transam/xlog.c:11784 access/transam/xlog.c:12239 +#: access/transam/xlog.c:12319 access/transam/xlog.c:12356 +#: access/transam/xlog.c:12416 access/transam/xlogfuncs.c:703 #: access/transam/xlogfuncs.c:722 commands/extension.c:3492 libpq/hba.c:534 #: replication/basebackup.c:2016 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 #: replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 -#: replication/logical/snapbuild.c:1988 replication/slot.c:1763 -#: replication/slot.c:1804 replication/walsender.c:559 +#: replication/logical/snapbuild.c:1988 replication/slot.c:1794 +#: replication/slot.c:1835 replication/walsender.c:559 #: storage/file/buffile.c:445 storage/file/copydir.c:195 #: utils/adt/genfile.c:202 utils/adt/misc.c:881 utils/cache/relmapper.c:744 #, c-format @@ -54,7 +54,7 @@ msgstr "konnte Datei »%s« nicht lesen: %m" #: replication/basebackup.c:2020 replication/logical/origin.c:734 #: replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 #: replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 -#: replication/slot.c:1767 replication/slot.c:1808 replication/walsender.c:564 +#: replication/slot.c:1798 replication/slot.c:1839 replication/walsender.c:564 #: utils/cache/relmapper.c:748 #, c-format msgid "could not read file \"%s\": read %d of %zu" @@ -73,7 +73,7 @@ msgstr "konnte Datei »%s« nicht lesen: %d von %zu gelesen" #: libpq/be-fsstubs.c:525 replication/logical/origin.c:667 #: replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 #: replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 -#: replication/slot.c:1652 replication/slot.c:1815 replication/walsender.c:574 +#: replication/slot.c:1683 replication/slot.c:1846 replication/walsender.c:574 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:735 #: storage/file/fd.c:3528 storage/file/fd.c:3631 utils/cache/relmapper.c:759 #: utils/cache/relmapper.c:898 @@ -114,7 +114,7 @@ msgstr "" #: replication/logical/reorderbuffer.c:4294 #: replication/logical/reorderbuffer.c:5070 #: replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 -#: replication/slot.c:1735 replication/walsender.c:532 +#: replication/slot.c:1766 replication/walsender.c:532 #: replication/walsender.c:2581 storage/file/copydir.c:161 #: storage/file/fd.c:710 storage/file/fd.c:3297 storage/file/fd.c:3515 #: storage/file/fd.c:3602 storage/smgr/md.c:506 utils/cache/relmapper.c:724 @@ -127,8 +127,8 @@ msgstr "konnte Datei »%s« nicht öffnen: %m" #: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 #: access/transam/twophase.c:1726 access/transam/twophase.c:1735 -#: access/transam/xlog.c:11494 access/transam/xlog.c:11532 -#: access/transam/xlog.c:11945 access/transam/xlogfuncs.c:782 +#: access/transam/xlog.c:11528 access/transam/xlog.c:11566 +#: access/transam/xlog.c:11979 access/transam/xlogfuncs.c:782 #: postmaster/postmaster.c:5688 postmaster/syslogger.c:1499 #: postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 #, c-format @@ -141,10 +141,10 @@ msgstr "konnte Datei »%s« nicht schreiben: %m" #: access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 #: access/transam/timeline.c:506 access/transam/twophase.c:1747 #: access/transam/xlog.c:3438 access/transam/xlog.c:3628 -#: access/transam/xlog.c:4806 access/transam/xlog.c:10977 -#: access/transam/xlog.c:11018 replication/logical/snapbuild.c:1821 -#: replication/slot.c:1636 replication/slot.c:1745 storage/file/fd.c:727 -#: storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 +#: access/transam/xlog.c:4806 access/transam/xlog.c:11011 +#: access/transam/xlog.c:11052 replication/logical/snapbuild.c:1821 +#: replication/slot.c:1667 replication/slot.c:1776 storage/file/fd.c:727 +#: storage/file/fd.c:3623 storage/smgr/md.c:959 storage/smgr/md.c:1000 #: storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 #, c-format msgid "could not fsync file \"%s\": %m" @@ -168,17 +168,17 @@ msgstr "konnte Datei »%s« nicht fsyncen: %m" #: tcop/postgres.c:3620 utils/adt/cryptohashfuncs.c:46 #: utils/adt/cryptohashfuncs.c:66 utils/adt/formatting.c:1699 #: utils/adt/formatting.c:1823 utils/adt/formatting.c:1948 -#: utils/adt/pg_locale.c:450 utils/adt/pg_locale.c:614 utils/adt/regexp.c:223 +#: utils/adt/pg_locale.c:451 utils/adt/pg_locale.c:615 utils/adt/regexp.c:223 #: utils/fmgr/dfmgr.c:229 utils/hash/dynahash.c:513 utils/hash/dynahash.c:613 -#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:401 utils/mb/mbutils.c:429 -#: utils/mb/mbutils.c:814 utils/mb/mbutils.c:841 utils/misc/guc.c:5061 +#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 +#: utils/mb/mbutils.c:815 utils/mb/mbutils.c:842 utils/misc/guc.c:5061 #: utils/misc/guc.c:5077 utils/misc/guc.c:5090 utils/misc/guc.c:8447 #: utils/misc/tzparser.c:476 utils/mmgr/aset.c:476 utils/mmgr/dsa.c:702 #: utils/mmgr/dsa.c:724 utils/mmgr/dsa.c:805 utils/mmgr/generation.c:234 -#: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 -#: utils/mmgr/mcxt.c:1000 utils/mmgr/mcxt.c:1088 utils/mmgr/mcxt.c:1119 -#: utils/mmgr/mcxt.c:1155 utils/mmgr/mcxt.c:1207 utils/mmgr/mcxt.c:1242 -#: utils/mmgr/mcxt.c:1277 utils/mmgr/slab.c:238 +#: utils/mmgr/mcxt.c:891 utils/mmgr/mcxt.c:927 utils/mmgr/mcxt.c:965 +#: utils/mmgr/mcxt.c:1003 utils/mmgr/mcxt.c:1111 utils/mmgr/mcxt.c:1142 +#: utils/mmgr/mcxt.c:1178 utils/mmgr/mcxt.c:1230 utils/mmgr/mcxt.c:1265 +#: utils/mmgr/mcxt.c:1300 utils/mmgr/slab.c:238 #, c-format msgid "out of memory" msgstr "Speicher aufgebraucht" @@ -208,7 +208,7 @@ msgstr "konnte kein »%s« zum Ausführen finden" msgid "could not change directory to \"%s\": %m" msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m" -#: ../common/exec.c:299 access/transam/xlog.c:11368 +#: ../common/exec.c:299 access/transam/xlog.c:11402 #: replication/basebackup.c:1428 utils/adt/misc.c:362 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -237,8 +237,8 @@ msgstr "kann NULL-Zeiger nicht kopieren (interner Fehler)\n" #: ../common/file_utils.c:86 ../common/file_utils.c:446 #: ../common/file_utils.c:450 access/transam/twophase.c:1297 -#: access/transam/xlog.c:11470 access/transam/xlog.c:11508 -#: access/transam/xlog.c:11725 access/transam/xlogarchive.c:110 +#: access/transam/xlog.c:11504 access/transam/xlog.c:11542 +#: access/transam/xlog.c:11759 access/transam/xlogarchive.c:110 #: access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 #: commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 #: commands/tablespace.c:894 guc-file.l:1062 postmaster/pgarch.c:696 @@ -267,7 +267,7 @@ msgstr "konnte Verzeichnis »%s« nicht lesen: %m" #: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 #: postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 -#: replication/slot.c:672 replication/slot.c:1519 replication/slot.c:1668 +#: replication/slot.c:672 replication/slot.c:1550 replication/slot.c:1699 #: storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" @@ -581,7 +581,7 @@ msgid "request for BRIN range summarization for index \"%s\" page %u was not rec msgstr "Aufforderung für BRIN-Range-Summarization für Index »%s« Seite %u wurde nicht aufgezeichnet" #: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 -#: access/transam/xlog.c:11139 access/transam/xlog.c:11676 +#: access/transam/xlog.c:11173 access/transam/xlog.c:11710 #: access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 #: access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 #: access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 @@ -836,7 +836,7 @@ msgstr "Komprimierungsmethode lz4 nicht unterstützt" msgid "This functionality requires the server to be built with lz4 support." msgstr "Diese Funktionalität verlangt, dass der Server mit lz4-Unterstützung gebaut wird." -#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1589 +#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1592 #: utils/adt/xml.c:234 #, c-format msgid "You need to rebuild PostgreSQL using %s." @@ -1031,38 +1031,38 @@ msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlt Support-Funktion msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlen typübergreifende Operatoren" -#: access/heap/heapam.c:2299 +#: access/heap/heapam.c:2302 #, c-format msgid "cannot insert tuples in a parallel worker" msgstr "in einem parallelen Arbeitsprozess können keine Tupel eingefügt werden" -#: access/heap/heapam.c:2770 +#: access/heap/heapam.c:2773 #, 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:2816 +#: access/heap/heapam.c:2819 #, c-format msgid "attempted to delete invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu löschen" -#: access/heap/heapam.c:3262 access/heap/heapam.c:6529 access/index/genam.c:816 +#: access/heap/heapam.c:3265 access/heap/heapam.c:6617 access/index/genam.c:816 #, 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:3449 +#: access/heap/heapam.c:3452 #, c-format msgid "attempted to update invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu aktualisieren" -#: access/heap/heapam.c:4936 access/heap/heapam.c:4974 -#: access/heap/heapam.c:5239 access/heap/heapam_handler.c:457 +#: access/heap/heapam.c:4941 access/heap/heapam.c:4979 +#: access/heap/heapam.c:5246 access/heap/heapam_handler.c:457 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "konnte Sperre für Zeile in Relation »%s« nicht setzen" -#: access/heap/heapam.c:6342 commands/trigger.c:3152 +#: access/heap/heapam.c:6371 commands/trigger.c:3152 #: executor/nodeModifyTable.c:1988 executor/nodeModifyTable.c:2078 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" @@ -1086,11 +1086,11 @@ msgstr "konnte nicht in Datei »%s« schreiben, %d von %d geschrieben: %m" #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:481 #: access/transam/xlog.c:3354 access/transam/xlog.c:3563 -#: access/transam/xlog.c:4785 access/transam/xlog.c:11485 -#: access/transam/xlog.c:11523 access/transam/xlog.c:11928 +#: access/transam/xlog.c:4785 access/transam/xlog.c:11519 +#: access/transam/xlog.c:11557 access/transam/xlog.c:11962 #: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4636 #: postmaster/postmaster.c:5675 replication/logical/origin.c:587 -#: replication/slot.c:1580 storage/file/copydir.c:167 storage/smgr/md.c:218 +#: replication/slot.c:1611 storage/file/copydir.c:167 storage/smgr/md.c:218 #: utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -1107,7 +1107,7 @@ msgstr "konnte Datei »%s« nicht auf %u kürzen: %m" #: access/transam/xlog.c:4797 postmaster/postmaster.c:4646 #: postmaster/postmaster.c:4656 replication/logical/origin.c:599 #: replication/logical/origin.c:641 replication/logical/origin.c:660 -#: replication/logical/snapbuild.c:1797 replication/slot.c:1616 +#: replication/logical/snapbuild.c:1797 replication/slot.c:1647 #: storage/file/buffile.c:506 storage/file/copydir.c:207 #: utils/init/miscinit.c:1478 utils/init/miscinit.c:1489 #: utils/init/miscinit.c:1497 utils/misc/guc.c:8430 utils/misc/guc.c:8461 @@ -1122,7 +1122,7 @@ msgstr "konnte nicht in Datei »%s« schreiben: %m" #: postmaster/postmaster.c:1098 postmaster/syslogger.c:1465 #: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 #: replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 -#: replication/slot.c:1719 storage/file/fd.c:785 storage/file/fd.c:3168 +#: replication/slot.c:1750 storage/file/fd.c:785 storage/file/fd.c:3168 #: storage/file/fd.c:3230 storage/file/reinit.c:250 storage/ipc/dsm.c:315 #: storage/smgr/md.c:347 storage/smgr/md.c:397 storage/sync/sync.c:250 #: utils/time/snapmgr.c:1606 @@ -1562,13 +1562,13 @@ msgstr "Stellen Sie sicher, dass der Konfigurationsparameter »%s« auf dem Prim msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Stellen Sie sicher, dass der Konfigurationsparameter »%s« gesetzt ist." -#: access/transam/multixact.c:1022 +#: access/transam/multixact.c:1106 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\"" msgstr "Datenbank nimmt keine Befehle an, die neue MultiXactIds erzeugen, um Datenverlust wegen Transaktionsnummernüberlauf in Datenbank »%s« zu vermeiden" -#: access/transam/multixact.c:1024 access/transam/multixact.c:1031 -#: access/transam/multixact.c:1055 access/transam/multixact.c:1064 +#: access/transam/multixact.c:1108 access/transam/multixact.c:1115 +#: access/transam/multixact.c:1139 access/transam/multixact.c:1148 #, c-format msgid "" "Execute a database-wide VACUUM in that database.\n" @@ -1577,65 +1577,70 @@ msgstr "" "Führen Sie ein datenbankweites VACUUM in dieser Datenbank aus.\n" "Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen oder unbenutzte Replikations-Slots löschen." -#: access/transam/multixact.c:1029 +#: access/transam/multixact.c:1113 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "Datenbank nimmt keine Befehle an, die neue MultiXactIds erzeugen, um Datenverlust wegen Transaktionsnummernüberlauf in Datenbank mit OID %u zu vermeiden" -#: access/transam/multixact.c:1050 access/transam/multixact.c:2334 +#: access/transam/multixact.c:1134 access/transam/multixact.c:2421 #, 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:1059 access/transam/multixact.c:2343 +#: access/transam/multixact.c:1143 access/transam/multixact.c:2430 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" msgstr[0] "Datenbank mit OID %u muss gevacuumt werden, bevor %u weitere MultiXactId aufgebraucht ist" msgstr[1] "Datenbank mit OID %u muss gevacuumt werden, bevor %u weitere MultiXactIds aufgebraucht sind" -#: access/transam/multixact.c:1120 +#: access/transam/multixact.c:1207 #, c-format msgid "multixact \"members\" limit exceeded" msgstr "Grenzwert für Multixact-»Members« überschritten" -#: access/transam/multixact.c:1121 +#: access/transam/multixact.c:1208 #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." msgstr[0] "Dieser Befehl würde eine Multixact mit %u Mitgliedern erzeugen, aber es ist nur genug Platz für %u Mitglied." msgstr[1] "Dieser Befehl würde eine Multixact mit %u Mitgliedern erzeugen, aber es ist nur genug Platz für %u Mitglieder." -#: access/transam/multixact.c:1126 +#: access/transam/multixact.c:1213 #, c-format msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Führen Sie ein datenbankweites VACUUM in der Datenbank mit OID %u aus, mit reduzierten Einstellungen für vacuum_multixact_freeze_min_age und vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1157 +#: access/transam/multixact.c:1244 #, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" msgstr[0] "Datenbank mit OID %u muss gevacuumt werden, bevor %d weiteres Multixact-Mitglied aufgebraucht ist" msgstr[1] "Datenbank mit OID %u muss gevacuumt werden, bevor %d weitere Multixact-Mitglieder aufgebraucht sind" -#: access/transam/multixact.c:1162 +#: access/transam/multixact.c:1249 #, c-format msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Führen Sie ein datenbankweites VACUUM in dieser Datenbank aus, mit reduzierten Einstellungen für vacuum_multixact_freeze_min_age und vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1301 +#: access/transam/multixact.c:1388 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u existiert nicht mehr -- anscheinender Überlauf" -#: access/transam/multixact.c:1307 +#: access/transam/multixact.c:1394 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u wurde noch nicht erzeugt -- anscheinender Überlauf" -#: access/transam/multixact.c:2339 access/transam/multixact.c:2348 +#: access/transam/multixact.c:1469 +#, c-format +msgid "MultiXact %u has invalid next offset" +msgstr "MultiXact %u hat ungültiges nächstes Offset" + +#: access/transam/multixact.c:2426 access/transam/multixact.c:2435 #: access/transam/varsup.c:151 access/transam/varsup.c:158 #: access/transam/varsup.c:466 access/transam/varsup.c:473 #, c-format @@ -1646,61 +1651,66 @@ msgstr "" "Um ein Abschalten der Datenbank zu vermeiden, führen Sie ein komplettes VACUUM über diese Datenbank aus.\n" "Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen oder unbenutzte Replikations-Slots löschen." -#: access/transam/multixact.c:2622 +#: access/transam/multixact.c:2709 #, 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:2644 +#: access/transam/multixact.c:2731 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "MultiXact-Member-Wraparound-Schutz ist jetzt aktiviert" -#: access/transam/multixact.c:3038 +#: access/transam/multixact.c:3125 #, 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:3056 +#: access/transam/multixact.c:3143 #, 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:3370 +#: access/transam/multixact.c:3160 +#, c-format +msgid "cannot truncate up to MultiXact %u because it has invalid offset, skipping truncation" +msgstr "kann nicht bis MultiXact %u trunkieren, weil es ein ungültiges Offset hat, Trunkierung wird ausgelassen" + +#: access/transam/multixact.c:3498 #, c-format msgid "invalid MultiXactId: %u" msgstr "ungültige MultiXactId: %u" -#: access/transam/parallel.c:737 access/transam/parallel.c:856 +#: access/transam/parallel.c:744 access/transam/parallel.c:863 #, c-format msgid "parallel worker failed to initialize" msgstr "Initialisierung von parallelem Arbeitsprozess fehlgeschlagen" -#: access/transam/parallel.c:738 access/transam/parallel.c:857 +#: access/transam/parallel.c:745 access/transam/parallel.c:864 #, 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:918 +#: access/transam/parallel.c:925 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "Postmaster beendete während einer parallelen Transaktion" -#: access/transam/parallel.c:1105 +#: access/transam/parallel.c:1112 #, c-format msgid "lost connection to parallel worker" msgstr "Verbindung mit parallelem Arbeitsprozess verloren" -#: access/transam/parallel.c:1171 access/transam/parallel.c:1173 +#: access/transam/parallel.c:1178 access/transam/parallel.c:1180 msgid "parallel worker" msgstr "paralleler Arbeitsprozess" -#: access/transam/parallel.c:1326 +#: access/transam/parallel.c:1333 #, c-format msgid "could not map dynamic shared memory segment" msgstr "konnte dynamisches Shared-Memory-Segment nicht mappen" -#: access/transam/parallel.c:1331 +#: access/transam/parallel.c:1338 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "ungültige magische Zahl in dynamischem Shared-Memory-Segment" @@ -2017,112 +2027,112 @@ msgstr "Datenbank mit OID %u muss innerhalb von %u Transaktionen gevacuumt werde 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:1584 +#: access/transam/xact.c:1594 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "maximale Anzahl committeter Subtransaktionen (%d) überschritten" -#: access/transam/xact.c:2435 +#: access/transam/xact.c:2445 #, 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:2445 +#: access/transam/xact.c:2455 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die Snapshots exportiert hat" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3416 +#: access/transam/xact.c:3426 #, 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:3426 +#: access/transam/xact.c:3436 #, 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:3436 +#: access/transam/xact.c:3446 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s kann nicht innerhalb einer Pipeline ausgeführt werden" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3446 +#: access/transam/xact.c:3456 #, c-format msgid "%s cannot be executed from a function" msgstr "%s kann nicht aus einer Funktion ausgeführt werden" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3517 access/transam/xact.c:3832 -#: access/transam/xact.c:3911 access/transam/xact.c:4034 -#: access/transam/xact.c:4185 access/transam/xact.c:4254 -#: access/transam/xact.c:4365 +#: access/transam/xact.c:3527 access/transam/xact.c:3842 +#: access/transam/xact.c:3921 access/transam/xact.c:4044 +#: access/transam/xact.c:4195 access/transam/xact.c:4264 +#: access/transam/xact.c:4375 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s kann nur in Transaktionsblöcken verwendet werden" -#: access/transam/xact.c:3718 +#: access/transam/xact.c:3728 #, c-format msgid "there is already a transaction in progress" msgstr "eine Transaktion ist bereits begonnen" -#: access/transam/xact.c:3837 access/transam/xact.c:3916 -#: access/transam/xact.c:4039 +#: access/transam/xact.c:3847 access/transam/xact.c:3926 +#: access/transam/xact.c:4049 #, c-format msgid "there is no transaction in progress" msgstr "keine Transaktion offen" -#: access/transam/xact.c:3927 +#: access/transam/xact.c:3937 #, c-format msgid "cannot commit during a parallel operation" msgstr "während einer parallelen Operation kann nicht committet werden" -#: access/transam/xact.c:4050 +#: access/transam/xact.c:4060 #, c-format msgid "cannot abort during a parallel operation" msgstr "während einer parallelen Operation kann nicht abgebrochen werden" -#: access/transam/xact.c:4149 +#: access/transam/xact.c:4159 #, 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:4236 +#: access/transam/xact.c:4246 #, 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:4246 access/transam/xact.c:4297 -#: access/transam/xact.c:4357 access/transam/xact.c:4406 +#: access/transam/xact.c:4256 access/transam/xact.c:4307 +#: access/transam/xact.c:4367 access/transam/xact.c:4416 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "Sicherungspunkt »%s« existiert nicht" -#: access/transam/xact.c:4303 access/transam/xact.c:4412 +#: access/transam/xact.c:4313 access/transam/xact.c:4422 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "Sicherungspunkt »%s« existiert nicht innerhalb der aktuellen Sicherungspunktebene" -#: access/transam/xact.c:4345 +#: access/transam/xact.c:4355 #, 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:4473 +#: access/transam/xact.c:4483 #, 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:4541 +#: access/transam/xact.c:4551 #, 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:5188 +#: access/transam/xact.c:5198 #, 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" @@ -2594,7 +2604,7 @@ msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ignoriere Datei »%s«, weil keine Datei »%s« existiert" -#: access/transam/xlog.c:6847 access/transam/xlog.c:12461 +#: access/transam/xlog.c:6847 access/transam/xlog.c:12495 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Datei »%s« wurde in »%s« umbenannt." @@ -2609,270 +2619,275 @@ msgstr "Konnte Datei »%s« nicht in »%s« umbenennen: %m." msgid "could not locate a valid checkpoint record" msgstr "konnte keinen gültigen Checkpoint-Datensatz finden" -#: access/transam/xlog.c:6942 +#: access/transam/xlog.c:6915 +#, c-format +msgid "could not find redo location %X/%08X referenced by checkpoint record at %X/%08X" +msgstr "konnte die Redo-Position %X/%08X, die vom Checkpoint-Datensatz bei %X/%08X referenziert wird, nicht finden" + +#: access/transam/xlog.c:6952 #, 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:6944 +#: access/transam/xlog.c:6954 #, 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:6958 +#: access/transam/xlog.c:6968 #, 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:6988 +#: access/transam/xlog.c:6998 #, c-format msgid "invalid next transaction ID" msgstr "ungültige nächste Transaktions-ID" -#: access/transam/xlog.c:7088 +#: access/transam/xlog.c:7098 #, c-format msgid "invalid redo in checkpoint record" msgstr "ungültiges Redo im Checkpoint-Datensatz" -#: access/transam/xlog.c:7099 +#: access/transam/xlog.c:7109 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint" -#: access/transam/xlog.c:7139 +#: access/transam/xlog.c:7149 #, 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:7143 +#: access/transam/xlog.c:7153 #, 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:7190 +#: access/transam/xlog.c:7200 #, 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:7191 +#: access/transam/xlog.c:7201 #, 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:7418 +#: access/transam/xlog.c:7428 #, c-format msgid "redo starts at %X/%X" msgstr "Redo beginnt bei %X/%X" -#: access/transam/xlog.c:7643 +#: access/transam/xlog.c:7653 #, 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:7681 +#: access/transam/xlog.c:7691 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "Redo fertig bei %X/%X Systembenutzung: %s" -#: access/transam/xlog.c:7687 +#: access/transam/xlog.c:7697 #, c-format msgid "last completed transaction was at log time %s" msgstr "letzte vollständige Transaktion war bei Logzeit %s" -#: access/transam/xlog.c:7696 +#: access/transam/xlog.c:7706 #, c-format msgid "redo is not required" msgstr "Redo nicht nötig" -#: access/transam/xlog.c:7708 +#: access/transam/xlog.c:7718 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "Wiederherstellung endete bevor das konfigurierte Wiederherstellungsziel erreicht wurde" -#: access/transam/xlog.c:7792 access/transam/xlog.c:7796 +#: access/transam/xlog.c:7802 access/transam/xlog.c:7806 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL endet vor dem Ende der Online-Sicherung" -#: access/transam/xlog.c:7793 +#: access/transam/xlog.c:7803 #, 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:7797 +#: access/transam/xlog.c:7807 #, 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:7800 +#: access/transam/xlog.c:7810 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt" -#: access/transam/xlog.c:7843 +#: access/transam/xlog.c:7853 #, c-format msgid "selected new timeline ID: %u" msgstr "gewählte neue Zeitleisten-ID: %u" -#: access/transam/xlog.c:8311 +#: access/transam/xlog.c:8321 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "unerwarteter Verzeichniseintrag »%s« in %s gefunden" -#: access/transam/xlog.c:8313 +#: access/transam/xlog.c:8323 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "Alle Verzeichniseinträge in pg_tblspc/ sollten symbolische Verknüpfungen sein." -#: access/transam/xlog.c:8314 +#: access/transam/xlog.c:8324 #, c-format msgid "Remove those directories, or set allow_in_place_tablespaces to ON transiently to let recovery complete." msgstr "Entfernen Sie diese Verzeichnisse oder setzen Sie allow_in_place_tablespaces vorrübergehend auf ON, damit die Wiederherstellung abschließen kann." -#: access/transam/xlog.c:8398 +#: access/transam/xlog.c:8408 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X" -#: access/transam/xlog.c:8607 +#: access/transam/xlog.c:8617 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei" -#: access/transam/xlog.c:8611 +#: access/transam/xlog.c:8621 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei" -#: access/transam/xlog.c:8629 +#: access/transam/xlog.c:8639 #, c-format msgid "invalid primary checkpoint record" msgstr "ungültiger primärer Checkpoint-Datensatz" -#: access/transam/xlog.c:8633 +#: access/transam/xlog.c:8643 #, c-format msgid "invalid checkpoint record" msgstr "ungültiger Checkpoint-Datensatz" -#: access/transam/xlog.c:8644 +#: access/transam/xlog.c:8654 #, 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:8648 +#: access/transam/xlog.c:8658 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz" -#: access/transam/xlog.c:8661 +#: access/transam/xlog.c:8671 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "ungültige xl_info im primären Checkpoint-Datensatz" -#: access/transam/xlog.c:8665 +#: access/transam/xlog.c:8675 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "ungültige xl_info im Checkpoint-Datensatz" -#: access/transam/xlog.c:8676 +#: access/transam/xlog.c:8686 #, c-format msgid "invalid length of primary checkpoint record" msgstr "ungültige Länge des primären Checkpoint-Datensatzes" -#: access/transam/xlog.c:8680 +#: access/transam/xlog.c:8690 #, c-format msgid "invalid length of checkpoint record" msgstr "ungültige Länge des Checkpoint-Datensatzes" -#: access/transam/xlog.c:8861 +#: access/transam/xlog.c:8871 #, c-format msgid "shutting down" msgstr "fahre herunter" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8900 +#: access/transam/xlog.c:8910 #, c-format msgid "restartpoint starting:%s%s%s%s%s%s%s%s" msgstr "Restart-Punkt beginnt:%s%s%s%s%s%s%s%s" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8912 +#: access/transam/xlog.c:8922 #, c-format msgid "checkpoint starting:%s%s%s%s%s%s%s%s" msgstr "Checkpoint beginnt:%s%s%s%s%s%s%s%s" -#: access/transam/xlog.c:8972 +#: access/transam/xlog.c:8982 #, c-format msgid "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "Restart-Punkt komplett: %d Puffer geschrieben (%.1f%%); %d WAL-Datei(en) hinzugefügt, %d entfernt, %d wiederverwendet; Schreiben=%ld,%03d s, Sync=%ld,%03d s, gesamt=%ld,%03d s; sync. Dateien=%d, längste=%ld,%03d s, Durchschnitt=%ld.%03d s; Entfernung=%d kB, Schätzung=%d kB" -#: access/transam/xlog.c:8992 +#: access/transam/xlog.c:9002 #, c-format msgid "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "Checkpoint komplett: %d Puffer geschrieben (%.1f%%); %d WAL-Datei(en) hinzugefügt, %d entfernt, %d wiederverwendet; Schreiben=%ld,%03d s, Sync=%ld,%03d s, gesamt=%ld,%03d s; sync. Dateien=%d, längste=%ld,%03d s, Durchschnitt=%ld.%03d s; Entfernung=%d kB, Schätzung=%d kB" -#: access/transam/xlog.c:9453 +#: access/transam/xlog.c:9473 #, 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:10012 +#: access/transam/xlog.c:10046 #, c-format msgid "recovery restart point at %X/%X" msgstr "Recovery-Restart-Punkt bei %X/%X" -#: access/transam/xlog.c:10014 +#: access/transam/xlog.c:10048 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Die letzte vollständige Transaktion war bei Logzeit %s." -#: access/transam/xlog.c:10262 +#: access/transam/xlog.c:10296 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "Restore-Punkt »%s« erzeugt bei %X/%X" -#: access/transam/xlog.c:10407 +#: access/transam/xlog.c:10441 #, 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:10416 +#: access/transam/xlog.c:10450 #, 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:10432 +#: access/transam/xlog.c:10466 #, 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:10507 +#: access/transam/xlog.c:10541 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt werden" -#: access/transam/xlog.c:10564 access/transam/xlog.c:10620 -#: access/transam/xlog.c:10650 +#: access/transam/xlog.c:10598 access/transam/xlog.c:10654 +#: access/transam/xlog.c:10684 #, 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:10808 +#: access/transam/xlog.c:10842 #, 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:11023 +#: access/transam/xlog.c:11057 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "konnte Write-Through-Logdatei »%s« nicht fsyncen: %m" -#: access/transam/xlog.c:11029 +#: access/transam/xlog.c:11063 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "konnte Datei »%s« nicht fdatasyncen: %m" -#: access/transam/xlog.c:11140 access/transam/xlog.c:11677 +#: access/transam/xlog.c:11174 access/transam/xlog.c:11711 #: access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 #: access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 #: access/transam/xlogfuncs.c:383 @@ -2880,186 +2895,186 @@ msgstr "konnte Datei »%s« nicht fdatasyncen: %m" 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:11149 access/transam/xlog.c:11686 +#: access/transam/xlog.c:11183 access/transam/xlog.c:11720 #, 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:11150 access/transam/xlog.c:11687 +#: access/transam/xlog.c:11184 access/transam/xlog.c:11721 #: access/transam/xlogfuncs.c:308 #, 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:11155 +#: access/transam/xlog.c:11189 #, c-format msgid "backup label too long (max %d bytes)" msgstr "Backup-Label zu lang (maximal %d Bytes)" -#: access/transam/xlog.c:11192 access/transam/xlog.c:11476 -#: access/transam/xlog.c:11514 +#: access/transam/xlog.c:11226 access/transam/xlog.c:11510 +#: access/transam/xlog.c:11548 #, c-format msgid "a backup is already in progress" msgstr "ein Backup läuft bereits" -#: access/transam/xlog.c:11193 +#: access/transam/xlog.c:11227 #, 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:11289 +#: access/transam/xlog.c:11323 #, 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:11291 access/transam/xlog.c:11882 +#: access/transam/xlog.c:11325 access/transam/xlog.c:11916 #, 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 primary, 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 auf dem Primärserver full_page_writes ein, führen Sie dort CHECKPOINT aus und versuchen Sie dann die Online-Sicherung erneut." -#: access/transam/xlog.c:11375 replication/basebackup.c:1433 +#: access/transam/xlog.c:11409 replication/basebackup.c:1433 #: utils/adt/misc.c:367 #, 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:11425 commands/tablespace.c:385 +#: access/transam/xlog.c:11459 commands/tablespace.c:385 #: commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 #, c-format msgid "tablespaces are not supported on this platform" msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" -#: access/transam/xlog.c:11477 access/transam/xlog.c:11515 +#: access/transam/xlog.c:11511 access/transam/xlog.c:11549 #, 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:11702 +#: access/transam/xlog.c:11736 #, c-format msgid "exclusive backup not in progress" msgstr "es läuft kein exklusives Backup" -#: access/transam/xlog.c:11729 +#: access/transam/xlog.c:11763 #, c-format msgid "a backup is not in progress" msgstr "es läuft kein Backup" -#: access/transam/xlog.c:11815 access/transam/xlog.c:11828 -#: access/transam/xlog.c:12219 access/transam/xlog.c:12225 -#: access/transam/xlog.c:12273 access/transam/xlog.c:12353 -#: access/transam/xlog.c:12377 access/transam/xlogfuncs.c:733 +#: access/transam/xlog.c:11849 access/transam/xlog.c:11862 +#: access/transam/xlog.c:12253 access/transam/xlog.c:12259 +#: access/transam/xlog.c:12307 access/transam/xlog.c:12387 +#: access/transam/xlog.c:12411 access/transam/xlogfuncs.c:733 #, c-format msgid "invalid data in file \"%s\"" msgstr "ungültige Daten in Datei »%s«" -#: access/transam/xlog.c:11832 replication/basebackup.c:1287 +#: access/transam/xlog.c:11866 replication/basebackup.c:1287 #, 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:11833 replication/basebackup.c:1288 +#: access/transam/xlog.c:11867 replication/basebackup.c:1288 #, 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:11880 +#: access/transam/xlog.c:11914 #, 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:12000 +#: access/transam/xlog.c:12034 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "Basissicherung beendet, warte bis die benötigten WAL-Segmente archiviert sind" -#: access/transam/xlog.c:12012 +#: access/transam/xlog.c:12046 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "warte immer noch, bis alle benötigten WAL-Segmente archiviert sind (%d Sekunden abgelaufen)" -#: access/transam/xlog.c:12014 +#: access/transam/xlog.c:12048 #, c-format msgid "Check that your archive_command is executing properly. You can safely cancel this backup, 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. Dieser Sicherungsvorgang kann gefahrlos abgebrochen werden, aber die Datenbanksicherung wird ohne die fehlenden WAL-Segmente nicht benutzbar sein." -#: access/transam/xlog.c:12021 +#: access/transam/xlog.c:12055 #, c-format msgid "all required WAL segments have been archived" msgstr "alle benötigten WAL-Segmente wurden archiviert" -#: access/transam/xlog.c:12025 +#: access/transam/xlog.c:12059 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "WAL-Archivierung ist nicht eingeschaltet; Sie müssen dafür sorgen, dass alle benötigten WAL-Segmente auf andere Art kopiert werden, um die Sicherung abzuschließen" -#: access/transam/xlog.c:12080 +#: access/transam/xlog.c:12114 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "Backup wird abgebrochen, weil Backend-Prozess beendete, bevor pg_stop_backup aufgerufen wurde" -#: access/transam/xlog.c:12274 +#: access/transam/xlog.c:12308 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "Gelesene Zeitleisten-ID ist %u, aber %u wurde erwartet." #. translator: %s is a WAL record description -#: access/transam/xlog.c:12402 +#: access/transam/xlog.c:12436 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "WAL-Redo bei %X/%X für %s" -#: access/transam/xlog.c:12450 +#: access/transam/xlog.c:12484 #, c-format msgid "online backup mode was not canceled" msgstr "Online-Sicherungsmodus wurde nicht storniert" -#: access/transam/xlog.c:12451 +#: access/transam/xlog.c:12485 #, 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:12460 access/transam/xlog.c:12472 -#: access/transam/xlog.c:12482 +#: access/transam/xlog.c:12494 access/transam/xlog.c:12506 +#: access/transam/xlog.c:12516 #, c-format msgid "online backup mode canceled" msgstr "Online-Sicherungsmodus storniert" -#: access/transam/xlog.c:12473 +#: access/transam/xlog.c:12507 #, 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:12483 +#: access/transam/xlog.c:12517 #, 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:12616 access/transam/xlogutils.c:967 +#: access/transam/xlog.c:12650 access/transam/xlogutils.c:967 #, 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:12622 access/transam/xlogutils.c:974 +#: access/transam/xlog.c:12656 access/transam/xlogutils.c:974 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "konnte nicht aus Logsegment %s bei Position %u lesen: %d von %zu gelesen" -#: access/transam/xlog.c:13199 +#: access/transam/xlog.c:13233 #, c-format msgid "WAL receiver process shutdown requested" msgstr "Herunterfahren des WAL-Receiver-Prozesses verlangt" -#: access/transam/xlog.c:13311 +#: access/transam/xlog.c:13345 #, c-format msgid "received promote request" msgstr "Anforderung zum Befördern empfangen" -#: access/transam/xlog.c:13324 +#: access/transam/xlog.c:13358 #, c-format msgid "promote trigger file found: %s" msgstr "Promote-Triggerdatei gefunden: %s" -#: access/transam/xlog.c:13332 +#: access/transam/xlog.c:13366 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "konnte »stat« für Promote-Triggerdatei »%s« nicht ausführen: %m" @@ -3524,7 +3539,7 @@ msgstr "Large Object %u existiert nicht" #: commands/functioncmds.c:772 commands/functioncmds.c:781 #: commands/functioncmds.c:790 commands/functioncmds.c:799 #: commands/functioncmds.c:2097 commands/functioncmds.c:2105 -#: commands/publicationcmds.c:87 commands/publicationcmds.c:130 +#: commands/publicationcmds.c:87 commands/publicationcmds.c:135 #: 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/sequence.c:1354 @@ -3545,8 +3560,8 @@ msgstr "Large Object %u existiert nicht" #: commands/user.c:638 commands/user.c:647 commands/user.c:655 #: commands/user.c:663 parser/parse_utilcmd.c:402 #: replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 -#: replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 -#: replication/pgoutput/pgoutput.c:254 replication/walsender.c:897 +#: replication/pgoutput/pgoutput.c:238 replication/pgoutput/pgoutput.c:248 +#: replication/pgoutput/pgoutput.c:258 replication/walsender.c:897 #: replication/walsender.c:908 replication/walsender.c:918 #, c-format msgid "conflicting or redundant options" @@ -4069,7 +4084,7 @@ msgstr "Konversion mit OID %u existiert nicht" msgid "extension with OID %u does not exist" msgstr "Erweiterung mit OID %u existiert nicht" -#: catalog/aclchk.c:5379 commands/publicationcmds.c:818 +#: catalog/aclchk.c:5379 commands/publicationcmds.c:823 #, c-format msgid "publication with OID %u does not exist" msgstr "Publikation mit OID %u existiert nicht" @@ -4347,14 +4362,14 @@ msgstr "Dadurch würde die generierte Spalte von ihrem eigenen Wert abhängen." msgid "generation expression is not immutable" msgstr "Generierungsausdruck ist nicht »immutable«" -#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1285 +#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1288 #, 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:3202 commands/prepare.c:368 parser/analyze.c:2695 #: parser/parse_target.c:594 parser/parse_target.c:891 -#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1290 +#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1293 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen." @@ -4445,28 +4460,28 @@ msgstr "Index-OID-Wert für pg_class ist im Binary-Upgrade-Modus nicht gesetzt" msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY muss die erste Aktion in einer Transaktion sein" -#: catalog/index.c:3653 +#: catalog/index.c:3660 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren" -#: catalog/index.c:3664 commands/indexcmds.c:3589 +#: catalog/index.c:3671 commands/indexcmds.c:3589 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "ungültiger Index einer TOAST-Tabelle kann nicht reindiziert werden" -#: catalog/index.c:3680 commands/indexcmds.c:3469 commands/indexcmds.c:3613 +#: catalog/index.c:3687 commands/indexcmds.c:3469 commands/indexcmds.c:3613 #: commands/tablecmds.c:3282 #, c-format msgid "cannot move system relation \"%s\"" msgstr "Systemrelation »%s« kann nicht verschoben werden" -#: catalog/index.c:3824 +#: catalog/index.c:3831 #, c-format msgid "index \"%s\" was reindexed" msgstr "Index »%s« wurde neu indiziert" -#: catalog/index.c:3961 +#: catalog/index.c:3968 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "ungültiger Index »%s.%s« einer TOAST-Tabelle kann nicht reindizert werden, wird übersprungen" @@ -5533,8 +5548,8 @@ msgstr "Temporäre und ungeloggte Tabellen können nicht repliziert werden." msgid "relation \"%s\" is already member of publication \"%s\"" msgstr "Relation »%s« ist schon Mitglied der Publikation »%s«" -#: catalog/pg_publication.c:533 commands/publicationcmds.c:458 -#: commands/publicationcmds.c:786 +#: catalog/pg_publication.c:533 commands/publicationcmds.c:463 +#: commands/publicationcmds.c:791 #, c-format msgid "publication \"%s\" does not exist" msgstr "Publikation »%s« existiert nicht" @@ -5677,7 +5692,7 @@ msgstr "Fehler während der Erzeugung eines Multirange-Typs für Typ »%s«." msgid "You can manually specify a multirange type name using the \"multirange_type_name\" attribute." msgstr "Sie können einen Multirange-Typnamen manuell angeben, mit dem Attribut »multirange_type_name«." -#: catalog/storage.c:523 storage/buffer/bufmgr.c:1039 +#: catalog/storage.c:523 storage/buffer/bufmgr.c:1046 #, c-format msgid "invalid page in block %u of relation %s" msgstr "ungültige Seite in Block %u von Relation %s" @@ -5798,7 +5813,7 @@ msgstr "Server »%s« existiert bereits" msgid "language \"%s\" already exists" msgstr "Sprache »%s« existiert bereits" -#: commands/alter.c:97 commands/publicationcmds.c:180 +#: commands/alter.c:97 commands/publicationcmds.c:185 #, c-format msgid "publication \"%s\" already exists" msgstr "Publikation »%s« existiert bereits" @@ -5926,27 +5941,27 @@ msgstr "überspringe Analysieren des Vererbungsbaums »%s.%s« --- dieser Vererb msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "überspringe Analysieren des Vererbungsbaums »%s.%s« --- dieser Vererbungsbaum enthält keine analysierbaren abgeleiteten Tabellen" -#: commands/async.c:646 +#: commands/async.c:645 #, c-format msgid "channel name cannot be empty" msgstr "Kanalname kann nicht leer sein" -#: commands/async.c:652 +#: commands/async.c:651 #, c-format msgid "channel name too long" msgstr "Kanalname zu lang" -#: commands/async.c:657 +#: commands/async.c:656 #, c-format msgid "payload string too long" msgstr "Payload-Zeichenkette zu lang" -#: commands/async.c:876 +#: commands/async.c:875 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die LISTEN, UNLISTEN oder NOTIFY ausgeführt hat" -#: commands/async.c:980 +#: commands/async.c:979 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "zu viele Benachrichtigungen in NOTIFY-Schlange" @@ -6207,7 +6222,7 @@ msgstr "generierte Spalten werden in COPY-FROM-WHERE-Bedingungen nicht unterstü #: commands/copy.c:176 commands/tablecmds.c:11928 commands/tablecmds.c:17048 #: commands/tablecmds.c:17127 commands/trigger.c:653 -#: rewrite/rewriteHandler.c:936 rewrite/rewriteHandler.c:971 +#: rewrite/rewriteHandler.c:939 rewrite/rewriteHandler.c:974 #, c-format msgid "Column \"%s\" is a generated column." msgstr "Spalte »%s« ist eine generierte Spalte." @@ -6353,7 +6368,7 @@ msgstr "Spalte »%s« ist eine generierte Spalte" msgid "Generated columns cannot be used in COPY." msgstr "Generierte Spalten können nicht in COPY verwendet werden." -#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:245 +#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:265 #: commands/tablecmds.c:2344 commands/tablecmds.c:3000 #: commands/tablecmds.c:3508 parser/parse_relation.c:3651 #: parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 @@ -6442,7 +6457,7 @@ msgstr "Spalte »%s« mit FORCE_NOT_NULL wird von COPY nicht verwendet" msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "Spalte »%s« mit FORCE_NULL wird von COPY nicht verwendet" -#: commands/copyfrom.c:1343 utils/mb/mbutils.c:385 +#: commands/copyfrom.c:1343 utils/mb/mbutils.c:386 #, c-format msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "Standardumwandlung von Kodierung »%s« nach »%s« existiert nicht" @@ -7073,7 +7088,7 @@ msgstr "Sortierfolge »%s« existiert nicht, wird übersprungen" msgid "conversion \"%s\" does not exist, skipping" msgstr "Konversion »%s« existiert nicht, wird übersprungen" -#: commands/dropcmds.c:293 commands/statscmds.c:674 +#: commands/dropcmds.c:293 commands/statscmds.c:694 #, c-format msgid "statistics object \"%s\" does not exist, skipping" msgstr "Statistikobjekt »%s« existiert nicht, wird übersprungen" @@ -8590,7 +8605,7 @@ msgstr "Join-Schätzfunktion %s muss Typ %s zurückgeben" msgid "operator attribute \"%s\" cannot be changed" msgstr "Operator-Attribut »%s« kann nicht geändert werden" -#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:151 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:157 #: commands/tablecmds.c:1582 commands/tablecmds.c:2162 #: commands/tablecmds.c:3402 commands/tablecmds.c:6112 #: commands/tablecmds.c:9081 commands/tablecmds.c:16793 @@ -8702,57 +8717,57 @@ msgstr "vorbereitete Anweisung »%s« existiert nicht" msgid "must be superuser to create custom procedural language" msgstr "nur Superuser können maßgeschneiderte prozedurale Sprachen erzeugen" -#: commands/publicationcmds.c:104 +#: commands/publicationcmds.c:109 #, c-format msgid "invalid list syntax for \"publish\" option" msgstr "ungültige Listensyntax für »publish«-Option" -#: commands/publicationcmds.c:122 +#: commands/publicationcmds.c:127 #, c-format msgid "unrecognized \"publish\" value: \"%s\"" msgstr "unbekannter »publish«-Wert: »%s«" -#: commands/publicationcmds.c:137 +#: commands/publicationcmds.c:142 #, c-format msgid "unrecognized publication parameter: \"%s\"" msgstr "unbekannter Publikationsparameter: »%s«" -#: commands/publicationcmds.c:169 +#: commands/publicationcmds.c:174 #, c-format msgid "must be superuser to create FOR ALL TABLES publication" msgstr "nur Superuser können eine Publikation FOR ALL TABLES erzeugen" -#: commands/publicationcmds.c:250 +#: commands/publicationcmds.c:255 #, c-format msgid "wal_level is insufficient to publish logical changes" msgstr "wal_level ist nicht ausreichend, um logische Veränderungen zu publizieren" -#: commands/publicationcmds.c:251 +#: commands/publicationcmds.c:256 #, c-format msgid "Set wal_level to logical before creating subscriptions." msgstr "Setzen Sie wal_level auf »logical« bevor Sie Subskriptionen erzeugen." -#: commands/publicationcmds.c:376 +#: commands/publicationcmds.c:381 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "Publikation »%s« ist als FOR ALL TABLES definiert" -#: commands/publicationcmds.c:378 +#: commands/publicationcmds.c:383 #, 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:707 +#: commands/publicationcmds.c:712 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "Relation »%s« ist nicht Teil der Publikation" -#: commands/publicationcmds.c:750 +#: commands/publicationcmds.c:755 #, 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:752 +#: commands/publicationcmds.c:757 #, 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." @@ -8928,72 +8943,72 @@ msgstr "in CREATE STATISTICS ist nur eine einzelne Relation erlaubt" msgid "relation \"%s\" is not a table, foreign table, or materialized view" msgstr "Relation »%s« ist keine Tabelle, Fremdtabelle oder materialisierte Sicht" -#: commands/statscmds.c:193 +#: commands/statscmds.c:213 #, c-format msgid "statistics object \"%s\" already exists, skipping" msgstr "Statistikobjekt »%s« existiert bereits, wird übersprungen" -#: commands/statscmds.c:201 +#: commands/statscmds.c:221 #, c-format msgid "statistics object \"%s\" already exists" msgstr "Statistikobjekt »%s« existiert bereits" -#: commands/statscmds.c:212 +#: commands/statscmds.c:232 #, c-format msgid "cannot have more than %d columns in statistics" msgstr "Statistiken können nicht mehr als %d Spalten enthalten" -#: commands/statscmds.c:253 commands/statscmds.c:276 commands/statscmds.c:309 +#: commands/statscmds.c:273 commands/statscmds.c:296 commands/statscmds.c:329 #, c-format msgid "statistics creation on system columns is not supported" msgstr "Statistikerzeugung für Systemspalten wird nicht unterstützt" -#: commands/statscmds.c:260 commands/statscmds.c:283 +#: commands/statscmds.c:280 commands/statscmds.c:303 #, c-format msgid "column \"%s\" cannot be used in statistics because its type %s has no default btree operator class" msgstr "Spalte »%s« kann nicht in Statistiken verwendet werden, weil ihr Typ %s keine Standardoperatorklasse für btree hat" -#: commands/statscmds.c:326 +#: commands/statscmds.c:346 #, c-format msgid "expression cannot be used in multivariate statistics because its type %s has no default btree operator class" msgstr "Ausdruck kann nicht in multivariaten Statistiken verwendet werden, weil sein Typ %s keine Standardoperatorklasse für btree hat" -#: commands/statscmds.c:347 +#: commands/statscmds.c:367 #, c-format msgid "when building statistics on a single expression, statistics kinds may not be specified" msgstr "wenn Statistiken für einen einzelnen Ausdruck gebaut werden, kann die Statistikart nicht angegeben werden" -#: commands/statscmds.c:376 +#: commands/statscmds.c:396 #, c-format msgid "unrecognized statistics kind \"%s\"" msgstr "unbekannte Statistikart »%s«" -#: commands/statscmds.c:405 +#: commands/statscmds.c:425 #, c-format msgid "extended statistics require at least 2 columns" msgstr "erweiterte Statistiken benötigen mindestens 2 Spalten" -#: commands/statscmds.c:423 +#: commands/statscmds.c:443 #, c-format msgid "duplicate column name in statistics definition" msgstr "doppelter Spaltenname in Statistikdefinition" -#: commands/statscmds.c:458 +#: commands/statscmds.c:478 #, c-format msgid "duplicate expression in statistics definition" msgstr "doppelter Ausdruck in Statistikdefinition" -#: commands/statscmds.c:639 commands/tablecmds.c:8047 +#: commands/statscmds.c:659 commands/tablecmds.c:8047 #, c-format msgid "statistics target %d is too low" msgstr "Statistikziel %d ist zu niedrig" -#: commands/statscmds.c:647 commands/tablecmds.c:8055 +#: commands/statscmds.c:667 commands/tablecmds.c:8055 #, c-format msgid "lowering statistics target to %d" msgstr "setze Statistikziel auf %d herab" -#: commands/statscmds.c:670 +#: commands/statscmds.c:690 #, c-format msgid "statistics object \"%s.%s\" does not exist, skipping" msgstr "Statistikobjekt »%s.%s« existiert nicht, wird übersprungen" @@ -10599,7 +10614,7 @@ msgid "invalid compression method \"%s\"" msgstr "ungültige Komprimierungsmethode »%s«" #: commands/tablespace.c:161 commands/tablespace.c:177 -#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1507 +#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1538 #: storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" @@ -10972,7 +10987,7 @@ msgid "could not serialize access due to concurrent update" msgstr "konnte Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung" #: commands/trigger.c:3190 executor/nodeModifyTable.c:1440 -#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2276 +#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2268 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "konnte Zugriff nicht serialisieren wegen gleichzeitigem Löschen" @@ -11631,107 +11646,107 @@ msgstr "Rolle »%s« ist schon Mitglied der Rolle »%s«" msgid "role \"%s\" is not a member of role \"%s\"" msgstr "Rolle »%s« ist kein Mitglied der Rolle »%s«" -#: commands/vacuum.c:133 +#: commands/vacuum.c:134 #, c-format msgid "unrecognized ANALYZE option \"%s\"" msgstr "unbekannte ANALYZE-Option »%s«" -#: commands/vacuum.c:171 +#: commands/vacuum.c:172 #, c-format msgid "parallel option requires a value between 0 and %d" msgstr "Option PARALLEL benötigt einen Wert zwischen 0 und %d" -#: commands/vacuum.c:183 +#: commands/vacuum.c:184 #, c-format msgid "parallel workers for vacuum must be between 0 and %d" msgstr "parallele Arbeitsprozesse für Vacuum müssen zwischen 0 und %d sein" -#: commands/vacuum.c:200 +#: commands/vacuum.c:201 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "unbekannte VACUUM-Option »%s«" -#: commands/vacuum.c:223 +#: commands/vacuum.c:224 #, c-format msgid "VACUUM FULL cannot be performed in parallel" msgstr "VACUUM FULL kann nicht parallel ausgeführt werden" -#: commands/vacuum.c:239 +#: commands/vacuum.c:240 #, c-format msgid "ANALYZE option must be specified when a column list is provided" msgstr "Option ANALYZE muss angegeben werden, wenn eine Spaltenliste angegeben ist" -#: commands/vacuum.c:329 +#: commands/vacuum.c:330 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%s kann nicht aus VACUUM oder ANALYZE ausgeführt werden" -#: commands/vacuum.c:339 +#: commands/vacuum.c:340 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "VACUUM-Option DISABLE_PAGE_SKIPPING kann nicht zusammen mit FULL verwendet werden" -#: commands/vacuum.c:346 +#: commands/vacuum.c:347 #, c-format msgid "PROCESS_TOAST required with VACUUM FULL" msgstr "PROCESS_TOAST benötigt VACUUM FULL" -#: commands/vacuum.c:596 +#: commands/vacuum.c:597 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "überspringe »%s« --- nur Superuser kann sie vacuumen" -#: commands/vacuum.c:600 +#: commands/vacuum.c:601 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "überspringe »%s« --- nur Superuser oder Eigentümer der Datenbank kann sie vacuumen" -#: commands/vacuum.c:604 +#: commands/vacuum.c:605 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "überspringe »%s« --- nur Eigentümer der Tabelle oder der Datenbank kann sie vacuumen" -#: commands/vacuum.c:619 +#: commands/vacuum.c:620 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" msgstr "überspringe »%s« --- nur Superuser kann sie analysieren" -#: commands/vacuum.c:623 +#: commands/vacuum.c:624 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "überspringe »%s« --- nur Superuser oder Eigentümer der Datenbank kann sie analysieren" -#: commands/vacuum.c:627 +#: commands/vacuum.c:628 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "überspringe »%s« --- nur Eigentümer der Tabelle oder der Datenbank kann sie analysieren" -#: commands/vacuum.c:706 commands/vacuum.c:802 +#: commands/vacuum.c:707 commands/vacuum.c:803 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "überspringe Vacuum von »%s« --- Sperre nicht verfügbar" -#: commands/vacuum.c:711 +#: commands/vacuum.c:712 #, c-format msgid "skipping vacuum of \"%s\" --- relation no longer exists" msgstr "überspringe Vacuum von »%s« --- Relation existiert nicht mehr" -#: commands/vacuum.c:727 commands/vacuum.c:807 +#: commands/vacuum.c:728 commands/vacuum.c:808 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" msgstr "überspringe Analyze von »%s« --- Sperre nicht verfügbar" -#: commands/vacuum.c:732 +#: commands/vacuum.c:733 #, c-format msgid "skipping analyze of \"%s\" --- relation no longer exists" msgstr "überspringe Analyze von »%s« --- Relation existiert nicht mehr" -#: commands/vacuum.c:1050 +#: commands/vacuum.c:1051 #, c-format msgid "oldest xmin is far in the past" msgstr "älteste xmin ist weit in der Vergangenheit" -#: commands/vacuum.c:1051 +#: commands/vacuum.c:1052 #, c-format msgid "" "Close open transactions soon to avoid wraparound problems.\n" @@ -11740,27 +11755,27 @@ msgstr "" "Schließen Sie bald alle offenen Transaktionen, um Überlaufprobleme zu vermeiden.\n" "Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen oder unbenutzte Replikations-Slots löschen." -#: commands/vacuum.c:1092 +#: commands/vacuum.c:1093 #, c-format msgid "oldest multixact is far in the past" msgstr "älteste Multixact ist weit in der Vergangenheit" -#: commands/vacuum.c:1093 +#: commands/vacuum.c:1094 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "Schließen Sie bald alle offenen Transaktionen mit Multixacts, um Überlaufprobleme zu vermeiden." -#: commands/vacuum.c:1778 +#: commands/vacuum.c:1779 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "einige Datenbanken sind seit über 2 Milliarden Transaktionen nicht gevacuumt worden" -#: commands/vacuum.c:1779 +#: commands/vacuum.c:1780 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "Sie haben möglicherweise bereits Daten wegen Transaktionsnummernüberlauf verloren." -#: commands/vacuum.c:1954 +#: commands/vacuum.c:1961 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "überspringe »%s« --- kann Nicht-Tabellen oder besondere Systemtabellen nicht vacuumen" @@ -11997,7 +12012,7 @@ msgstr "Anfrage liefert einen Wert für eine gelöschte Spalte auf Position %d." 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/execExpr.c:1098 parser/parse_agg.c:854 +#: executor/execExpr.c:1098 parser/parse_agg.c:881 #, c-format msgid "window function calls cannot be nested" msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden" @@ -12168,38 +12183,38 @@ msgstr "kann Sequenz »%s« nicht ändern" msgid "cannot change TOAST relation \"%s\"" msgstr "kann TOAST-Relation »%s« nicht ändern" -#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3145 -#: rewrite/rewriteHandler.c:3990 +#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:4010 #, c-format msgid "cannot insert into view \"%s\"" msgstr "kann nicht in Sicht »%s« einfügen" -#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3148 -#: rewrite/rewriteHandler.c:3993 +#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3151 +#: rewrite/rewriteHandler.c:4013 #, 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:1048 rewrite/rewriteHandler.c:3153 -#: rewrite/rewriteHandler.c:3998 +#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3156 +#: rewrite/rewriteHandler.c:4018 #, c-format msgid "cannot update view \"%s\"" msgstr "kann Sicht »%s« nicht aktualisieren" -#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3156 -#: rewrite/rewriteHandler.c:4001 +#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3159 +#: rewrite/rewriteHandler.c:4021 #, 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:1056 rewrite/rewriteHandler.c:3161 -#: rewrite/rewriteHandler.c:4006 +#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3164 +#: rewrite/rewriteHandler.c:4026 #, c-format msgid "cannot delete from view \"%s\"" msgstr "kann nicht aus Sicht »%s« löschen" -#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3164 -#: rewrite/rewriteHandler.c:4009 +#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3167 +#: rewrite/rewriteHandler.c:4029 #, 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." @@ -12532,7 +12547,7 @@ msgstr "Rückgabetyp %s wird von SQL-Funktionen nicht unterstützt" msgid "unexpected EOF for tape %d: requested %zu bytes, read %zu bytes" msgstr "unerwartetes EOF für Tape %d: %zu Bytes angefordert, %zu Bytes gelesen" -#: executor/nodeAgg.c:3979 parser/parse_agg.c:670 parser/parse_agg.c:698 +#: executor/nodeAgg.c:3979 parser/parse_agg.c:677 parser/parse_agg.c:720 #, c-format msgid "aggregate function calls cannot be nested" msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden" @@ -15591,319 +15606,329 @@ msgstr "%s kann nicht auf einen benannten Tupelstore angewendet werden" msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "Relation »%s« in %s nicht in der FROM-Klausel gefunden" -#: parser/parse_agg.c:208 parser/parse_oper.c:227 +#: parser/parse_agg.c:211 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "konnte keinen Sortieroperator für Typ %s ermitteln" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:213 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Aggregatfunktionen mit DISTINCT müssen ihre Eingaben sortieren können." -#: parser/parse_agg.c:268 +#: parser/parse_agg.c:271 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING muss weniger als 32 Argumente haben" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:375 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "Aggregatfunktionen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:373 +#: parser/parse_agg.c:377 msgid "grouping operations are not allowed in JOIN conditions" msgstr "Gruppieroperationen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:387 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "Aggregatfunktionen sind nicht in der FROM-Klausel ihrer eigenen Anfrageebene erlaubt" -#: parser/parse_agg.c:385 +#: parser/parse_agg.c:389 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "Gruppieroperationen sind nicht in der FROM-Klausel ihrer eigenen Anfrageebene erlaubt" -#: parser/parse_agg.c:390 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in functions in FROM" msgstr "Aggregatfunktionen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:392 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in functions in FROM" msgstr "Gruppieroperationen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:404 msgid "aggregate functions are not allowed in policy expressions" msgstr "Aggregatfunktionen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:402 +#: parser/parse_agg.c:406 msgid "grouping operations are not allowed in policy expressions" msgstr "Gruppieroperationen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:423 msgid "aggregate functions are not allowed in window RANGE" msgstr "Aggregatfunktionen sind in der Fenster-RANGE-Klausel nicht erlaubt" -#: parser/parse_agg.c:421 +#: parser/parse_agg.c:425 msgid "grouping operations are not allowed in window RANGE" msgstr "Gruppieroperationen sind in der Fenster-RANGE-Klausel nicht erlaubt" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:430 msgid "aggregate functions are not allowed in window ROWS" msgstr "Aggregatfunktionen sind in der Fenster-ROWS-Klausel nicht erlaubt" -#: parser/parse_agg.c:428 +#: parser/parse_agg.c:432 msgid "grouping operations are not allowed in window ROWS" msgstr "Gruppieroperationen sind in der Fenster-ROWS-Klausel nicht erlaubt" -#: parser/parse_agg.c:433 +#: parser/parse_agg.c:437 msgid "aggregate functions are not allowed in window GROUPS" msgstr "Aggregatfunktionen sind in der Fenster-GROUPS-Klausel nicht erlaubt" -#: parser/parse_agg.c:435 +#: parser/parse_agg.c:439 msgid "grouping operations are not allowed in window GROUPS" msgstr "Gruppieroperationen sind in der Fenster-GROUPS-Klausel nicht erlaubt" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:473 msgid "aggregate functions are not allowed in check constraints" msgstr "Aggregatfunktionen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:471 +#: parser/parse_agg.c:475 msgid "grouping operations are not allowed in check constraints" msgstr "Gruppieroperationen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:482 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "Aggregatfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:480 +#: parser/parse_agg.c:484 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "Gruppieroperationen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:489 msgid "aggregate functions are not allowed in index expressions" msgstr "Aggregatfunktionen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:487 +#: parser/parse_agg.c:491 msgid "grouping operations are not allowed in index expressions" msgstr "Gruppieroperationen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:496 msgid "aggregate functions are not allowed in index predicates" msgstr "Aggregatfunktionen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:494 +#: parser/parse_agg.c:498 msgid "grouping operations are not allowed in index predicates" msgstr "Gruppieroperationen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:503 msgid "aggregate functions are not allowed in statistics expressions" msgstr "Aggregatfunktionen sind in Statistikausdrücken nicht erlaubt" -#: parser/parse_agg.c:501 +#: parser/parse_agg.c:505 msgid "grouping operations are not allowed in statistics expressions" msgstr "Gruppieroperationen sind in Statistikausdrücken nicht erlaubt" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:510 msgid "aggregate functions are not allowed in transform expressions" msgstr "Aggregatfunktionen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:508 +#: parser/parse_agg.c:512 msgid "grouping operations are not allowed in transform expressions" msgstr "Gruppieroperationen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:517 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "Aggregatfunktionen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:515 +#: parser/parse_agg.c:519 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "Gruppieroperationen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:524 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "Aggregatfunktionen sind in der WHEN-Bedingung eines Triggers nicht erlaubt" -#: parser/parse_agg.c:522 +#: parser/parse_agg.c:526 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "Gruppieroperationen sind in der WHEN-Bedingung eines Triggers nicht erlaubt" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:531 msgid "aggregate functions are not allowed in partition bound" msgstr "Aggregatfunktionen sind in Partitionsbegrenzungen nicht erlaubt" -#: parser/parse_agg.c:529 +#: parser/parse_agg.c:533 msgid "grouping operations are not allowed in partition bound" msgstr "Gruppieroperationen sind in Partitionsbegrenzungen nicht erlaubt" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:538 msgid "aggregate functions are not allowed in partition key expressions" msgstr "Aggregatfunktionen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" -#: parser/parse_agg.c:536 +#: parser/parse_agg.c:540 msgid "grouping operations are not allowed in partition key expressions" msgstr "Gruppieroperationen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:546 msgid "aggregate functions are not allowed in column generation expressions" msgstr "Aggregatfunktionen sind in Spaltengenerierungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:544 +#: parser/parse_agg.c:548 msgid "grouping operations are not allowed in column generation expressions" msgstr "Gruppieroperationen sind in Spaltengenerierungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:554 msgid "aggregate functions are not allowed in CALL arguments" msgstr "Aggregatfunktionen sind in CALL-Argumenten nicht erlaubt" -#: parser/parse_agg.c:552 +#: parser/parse_agg.c:556 msgid "grouping operations are not allowed in CALL arguments" msgstr "Gruppieroperationen sind in CALL-Argumenten nicht erlaubt" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:562 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "Aggregatfunktionen sind in COPY-FROM-WHERE-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:560 +#: parser/parse_agg.c:564 msgid "grouping operations are not allowed in COPY FROM WHERE conditions" msgstr "Gruppieroperationen sind in COPY-FROM-WHERE-Bedingungen nicht erlaubt" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:587 parser/parse_clause.c:1834 +#: parser/parse_agg.c:591 parser/parse_clause.c:1834 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "Aggregatfunktionen sind in %s nicht erlaubt" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:590 +#: parser/parse_agg.c:594 #, c-format msgid "grouping operations are not allowed in %s" msgstr "Gruppieroperationen sind in %s nicht erlaubt" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:690 parser/parse_agg.c:727 +#, c-format +msgid "outer-level aggregate cannot use a nested CTE" +msgstr "Aggregatfunktionen auf äußerer Ebene kann keine geschachtelte CTE verwenden" + +#: parser/parse_agg.c:691 parser/parse_agg.c:728 +#, c-format +msgid "CTE \"%s\" is below the aggregate's semantic level." +msgstr "CTE »%s« ist unterhalb der semantischen Ebene der Aggregatfunktion." + +#: parser/parse_agg.c:713 #, 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:769 +#: parser/parse_agg.c:798 #, 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:770 parser/parse_expr.c:1678 parser/parse_expr.c:2167 +#: parser/parse_agg.c:799 parser/parse_expr.c:1678 parser/parse_expr.c:2167 #: parser/parse_func.c:883 #, 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:775 +#: parser/parse_agg.c:804 #, 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:880 +#: parser/parse_agg.c:907 msgid "window functions are not allowed in JOIN conditions" msgstr "Fensterfunktionen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:887 +#: parser/parse_agg.c:914 msgid "window functions are not allowed in functions in FROM" msgstr "Fensterfunktionen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:893 +#: parser/parse_agg.c:920 msgid "window functions are not allowed in policy expressions" msgstr "Fensterfunktionen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:906 +#: parser/parse_agg.c:933 msgid "window functions are not allowed in window definitions" msgstr "Fensterfunktionen sind in Fensterdefinitionen nicht erlaubt" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:965 msgid "window functions are not allowed in check constraints" msgstr "Fensterfunktionen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:942 +#: parser/parse_agg.c:969 msgid "window functions are not allowed in DEFAULT expressions" msgstr "Fensterfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:945 +#: parser/parse_agg.c:972 msgid "window functions are not allowed in index expressions" msgstr "Fensterfunktionen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:948 +#: parser/parse_agg.c:975 msgid "window functions are not allowed in statistics expressions" msgstr "Fensterfunktionen sind in Statistikausdrücken nicht erlaubt" -#: parser/parse_agg.c:951 +#: parser/parse_agg.c:978 msgid "window functions are not allowed in index predicates" msgstr "Fensterfunktionen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:954 +#: parser/parse_agg.c:981 msgid "window functions are not allowed in transform expressions" msgstr "Fensterfunktionen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:957 +#: parser/parse_agg.c:984 msgid "window functions are not allowed in EXECUTE parameters" msgstr "Fensterfunktionen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:960 +#: parser/parse_agg.c:987 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:963 +#: parser/parse_agg.c:990 msgid "window functions are not allowed in partition bound" msgstr "Fensterfunktionen sind in Partitionsbegrenzungen nicht erlaubt" -#: parser/parse_agg.c:966 +#: parser/parse_agg.c:993 msgid "window functions are not allowed in partition key expressions" msgstr "Fensterfunktionen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" -#: parser/parse_agg.c:969 +#: parser/parse_agg.c:996 msgid "window functions are not allowed in CALL arguments" msgstr "Fensterfunktionen sind in CALL-Argumenten nicht erlaubt" -#: parser/parse_agg.c:972 +#: parser/parse_agg.c:999 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "Fensterfunktionen sind in COPY-FROM-WHERE-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:975 +#: parser/parse_agg.c:1002 msgid "window functions are not allowed in column generation expressions" msgstr "Fensterfunktionen sind in Spaltengenerierungsausdrücken nicht erlaubt" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:998 parser/parse_clause.c:1843 +#: parser/parse_agg.c:1025 parser/parse_clause.c:1843 #, c-format msgid "window functions are not allowed in %s" msgstr "Fensterfunktionen sind in %s nicht erlaubt" -#: parser/parse_agg.c:1032 parser/parse_clause.c:2677 +#: parser/parse_agg.c:1059 parser/parse_clause.c:2677 #, c-format msgid "window \"%s\" does not exist" msgstr "Fenster »%s« existiert nicht" -#: parser/parse_agg.c:1116 +#: parser/parse_agg.c:1143 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "zu viele Grouping-Sets vorhanden (maximal 4096)" -#: parser/parse_agg.c:1256 +#: parser/parse_agg.c:1283 #, 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:1449 +#: parser/parse_agg.c:1476 #, 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:1452 +#: parser/parse_agg.c:1479 #, 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:1457 +#: parser/parse_agg.c:1484 #, 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:1621 +#: parser/parse_agg.c:1648 #, 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" @@ -17682,22 +17707,22 @@ msgstr "FROM muss genau einen Wert pro Partitionierungsspalte angeben" msgid "TO must specify exactly one value per partitioning column" msgstr "TO muss genau einen Wert pro Partitionierungsspalte angeben" -#: parser/parse_utilcmd.c:4240 +#: parser/parse_utilcmd.c:4242 #, c-format msgid "cannot specify NULL in range bound" msgstr "NULL kann nicht in der Bereichsgrenze angegeben werden" -#: parser/parse_utilcmd.c:4289 +#: parser/parse_utilcmd.c:4290 #, c-format msgid "every bound following MAXVALUE must also be MAXVALUE" msgstr "jede Begrenzung, die auf MAXVALUE folgt, muss auch MAXVALUE sein" -#: parser/parse_utilcmd.c:4296 +#: parser/parse_utilcmd.c:4297 #, c-format msgid "every bound following MINVALUE must also be MINVALUE" msgstr "jede Begrenzung, die auf MINVALUE folgt, muss auch MINVALUE sein" -#: parser/parse_utilcmd.c:4339 +#: parser/parse_utilcmd.c:4340 #, c-format msgid "specified value cannot be cast to type %s for column \"%s\"" msgstr "angegebener Wert kann nicht in Typ %s für Spalte »%s« umgewandelt werden" @@ -19315,12 +19340,12 @@ msgstr "logische Dekodierung benötigt eine Datenbankverbindung" msgid "logical decoding cannot be used while in recovery" msgstr "logische Dekodierung kann nicht während der Wiederherstellung verwendet werden" -#: replication/logical/logical.c:350 replication/logical/logical.c:502 +#: replication/logical/logical.c:350 replication/logical/logical.c:504 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "physischer Replikations-Slot kann nicht für logisches Dekodieren verwendet werden" -#: replication/logical/logical.c:355 replication/logical/logical.c:507 +#: replication/logical/logical.c:355 replication/logical/logical.c:509 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "Replikations-Slot »%s« wurde nicht in dieser Datenbank erzeugt" @@ -19330,40 +19355,40 @@ msgstr "Replikations-Slot »%s« wurde nicht in dieser Datenbank erzeugt" msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "logischer Replikations-Slot kann nicht in einer Transaktion erzeugt werden, die Schreibvorgänge ausgeführt hat" -#: replication/logical/logical.c:552 +#: replication/logical/logical.c:554 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "starte logisches Dekodieren für Slot »%s«" -#: replication/logical/logical.c:554 +#: replication/logical/logical.c:556 #, c-format msgid "Streaming transactions committing after %X/%X, reading WAL from %X/%X." msgstr "Streaming beginnt bei Transaktionen, die nach %X/%X committen; lese WAL ab %X/%X." -#: replication/logical/logical.c:699 +#: replication/logical/logical.c:701 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "Slot »%s«, Ausgabe-Plugin »%s«, im Callback %s, zugehörige LSN %X/%X" -#: replication/logical/logical.c:705 +#: replication/logical/logical.c:707 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "Slot »%s«, Ausgabe-Plugin »%s«, im Callback %s" -#: replication/logical/logical.c:876 replication/logical/logical.c:921 -#: replication/logical/logical.c:966 replication/logical/logical.c:1012 +#: replication/logical/logical.c:878 replication/logical/logical.c:923 +#: replication/logical/logical.c:968 replication/logical/logical.c:1014 #, c-format msgid "logical replication at prepare time requires a %s callback" msgstr "logische Replikation bei PREPARE TRANSACTION benötigt einen %s-Callback" -#: replication/logical/logical.c:1244 replication/logical/logical.c:1293 -#: replication/logical/logical.c:1334 replication/logical/logical.c:1420 -#: replication/logical/logical.c:1469 +#: replication/logical/logical.c:1246 replication/logical/logical.c:1295 +#: replication/logical/logical.c:1336 replication/logical/logical.c:1422 +#: replication/logical/logical.c:1471 #, c-format msgid "logical streaming requires a %s callback" msgstr "logisches Streaming benötigt einen %s-Callback" -#: replication/logical/logical.c:1379 +#: replication/logical/logical.c:1381 #, c-format msgid "logical streaming at prepare time requires a %s callback" msgstr "logisches Streaming bei PREPARE TRANSACTION benötigt einen %s-Callback" @@ -19475,7 +19500,7 @@ msgid "could not find free replication state slot for replication origin with OI msgstr "konnte keinen freien Replication-State-Slot für Replication-Origin mit OID %u finden" #: replication/logical/origin.c:941 replication/logical/origin.c:1128 -#: replication/slot.c:1903 +#: replication/slot.c:1934 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Erhöhen Sie max_replication_slots und versuchen Sie es erneut." @@ -19643,17 +19668,12 @@ msgstr "Tabelle »%s.%s« nicht auf dem Publikationsserver gefunden" 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:1090 +#: replication/logical/tablesync.c:1104 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "beim Kopieren der Tabelle konnte die Transaktion auf dem Publikationsserver nicht gestartet werden: %s" -#: replication/logical/tablesync.c:1131 -#, c-format -msgid "replication origin \"%s\" already exists" -msgstr "Replication-Origin »%s« existiert bereits" - -#: replication/logical/tablesync.c:1144 +#: replication/logical/tablesync.c:1142 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "beim Kopieren der Tabelle konnte die Transaktion auf dem Publikationsserver nicht beenden werden: %s" @@ -19748,32 +19768,32 @@ msgstr "ungültige proto_version" msgid "proto_version \"%s\" out of range" msgstr "proto_version »%s« ist außerhalb des gültigen Bereichs" -#: replication/pgoutput/pgoutput.c:227 +#: replication/pgoutput/pgoutput.c:231 #, c-format msgid "invalid publication_names syntax" msgstr "ungültige Syntax für publication_names" -#: replication/pgoutput/pgoutput.c:324 +#: replication/pgoutput/pgoutput.c:328 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or lower" msgstr "Client sendete proto_version=%d, aber wir unterstützen nur Protokoll %d oder niedriger" -#: replication/pgoutput/pgoutput.c:330 +#: replication/pgoutput/pgoutput.c:334 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or higher" msgstr "Client sendete proto_version=%d, aber wir unterstützen nur Protokoll %d oder höher" -#: replication/pgoutput/pgoutput.c:336 +#: replication/pgoutput/pgoutput.c:340 #, c-format msgid "publication_names parameter missing" msgstr "Parameter »publication_names« fehlt" -#: replication/pgoutput/pgoutput.c:349 +#: replication/pgoutput/pgoutput.c:353 #, c-format msgid "requested proto_version=%d does not support streaming, need %d or higher" msgstr "angeforderte proto_version=%d unterstützt Streaming nicht, benötigt %d oder höher" -#: replication/pgoutput/pgoutput.c:354 +#: replication/pgoutput/pgoutput.c:358 #, c-format msgid "streaming requested, but not supported by output plugin" msgstr "Streaming angefordert, aber wird vom Ausgabe-Plugin nicht unterstützt" @@ -19818,77 +19838,77 @@ msgstr "Geben Sie einen frei oder erhöhen Sie max_replication_slots." msgid "replication slot \"%s\" does not exist" msgstr "Replikations-Slot »%s« existiert nicht" -#: replication/slot.c:477 replication/slot.c:1054 +#: replication/slot.c:477 replication/slot.c:1083 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "Replikations-Slot »%s« ist aktiv für PID %d" -#: replication/slot.c:705 replication/slot.c:1448 replication/slot.c:1838 +#: replication/slot.c:705 replication/slot.c:1479 replication/slot.c:1869 #, c-format msgid "could not remove directory \"%s\"" msgstr "konnte Verzeichnis »%s« nicht löschen" -#: replication/slot.c:1089 +#: replication/slot.c:1118 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "Replikations-Slots können nur verwendet werden, wenn max_replication_slots > 0" -#: replication/slot.c:1094 +#: replication/slot.c:1123 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "Replikations-Slots können nur verwendet werden, wenn wal_level >= replica" -#: replication/slot.c:1279 +#: replication/slot.c:1310 #, c-format msgid "terminating process %d to release replication slot \"%s\"" msgstr "Prozess %d wird beendet, um Replikations-Slot »%s« freizugeben" -#: replication/slot.c:1317 +#: replication/slot.c:1348 #, c-format msgid "invalidating slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size" msgstr "Slot »%s« wird ungültig gemacht, weil seine restart_lsn %X/%X max_slot_wal_keep_size überschreitet" -#: replication/slot.c:1776 +#: replication/slot.c:1807 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "Replikations-Slot-Datei »%s« hat falsche magische Zahl: %u statt %u" -#: replication/slot.c:1783 +#: replication/slot.c:1814 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "Replikations-Slot-Datei »%s« hat nicht unterstützte Version %u" -#: replication/slot.c:1790 +#: replication/slot.c:1821 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "Replikations-Slot-Datei »%s« hat falsche Länge %u" -#: replication/slot.c:1826 +#: replication/slot.c:1857 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "Prüfsummenfehler bei Replikations-Slot-Datei »%s«: ist %u, sollte %u sein" -#: replication/slot.c:1860 +#: replication/slot.c:1891 #, c-format msgid "logical replication slot \"%s\" exists, but wal_level < logical" msgstr "logischer Replikations-Slot »%s« existiert, aber wal_level < logical" -#: replication/slot.c:1862 +#: replication/slot.c:1893 #, c-format msgid "Change wal_level to be logical or higher." msgstr "Ändern Sie wal_level in logical oder höher." -#: replication/slot.c:1866 +#: replication/slot.c:1897 #, c-format msgid "physical replication slot \"%s\" exists, but wal_level < replica" msgstr "physischer Replikations-Slot »%s« existiert, aber wal_level < replica" -#: replication/slot.c:1868 +#: replication/slot.c:1899 #, c-format msgid "Change wal_level to be replica or higher." msgstr "Ändern Sie wal_level in replica oder höher." -#: replication/slot.c:1902 +#: replication/slot.c:1933 #, c-format msgid "too many replication slots active before shutdown" msgstr "zu viele aktive Replikations-Slots vor dem Herunterfahren" @@ -20053,7 +20073,7 @@ msgstr "hole Zeitleisten-History-Datei für Zeitleiste %u vom Primärserver" msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "konnte nicht in Logsegment %s bei Position %u, Länge %lu schreiben: %m" -#: replication/walsender.c:539 storage/smgr/md.c:1336 +#: replication/walsender.c:539 storage/smgr/md.c:1339 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "konnte Positionszeiger nicht ans Ende der Datei »%s« setzen: %m" @@ -20396,198 +20416,198 @@ msgstr "Umbenennen einer ON-SELECT-Regel ist nicht erlaubt" 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:610 +#: rewrite/rewriteHandler.c:613 #, 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:663 +#: rewrite/rewriteHandler.c:666 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "RETURNING-Listen können nicht in mehreren Regeln auftreten" -#: rewrite/rewriteHandler.c:895 rewrite/rewriteHandler.c:934 +#: rewrite/rewriteHandler.c:898 rewrite/rewriteHandler.c:937 #, c-format msgid "cannot insert a non-DEFAULT value into column \"%s\"" msgstr "kann keinen Wert außer DEFAULT in Spalte »%s« einfügen" -#: rewrite/rewriteHandler.c:897 rewrite/rewriteHandler.c:963 +#: rewrite/rewriteHandler.c:900 rewrite/rewriteHandler.c:966 #, 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:899 +#: rewrite/rewriteHandler.c:902 #, 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:961 rewrite/rewriteHandler.c:969 +#: rewrite/rewriteHandler.c:964 rewrite/rewriteHandler.c:972 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "Spalte »%s« kann nur auf DEFAULT aktualisiert werden" -#: rewrite/rewriteHandler.c:1104 rewrite/rewriteHandler.c:1122 +#: rewrite/rewriteHandler.c:1107 rewrite/rewriteHandler.c:1125 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "mehrere Zuweisungen zur selben Spalte »%s«" -#: rewrite/rewriteHandler.c:1723 rewrite/rewriteHandler.c:3178 +#: rewrite/rewriteHandler.c:1726 rewrite/rewriteHandler.c:3181 #, c-format msgid "access to non-system view \"%s\" is restricted" msgstr "Zugriff auf Nicht-System-Sicht »%s« ist beschränkt" -#: rewrite/rewriteHandler.c:2155 rewrite/rewriteHandler.c:4064 +#: rewrite/rewriteHandler.c:2158 rewrite/rewriteHandler.c:4084 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "unendliche Rekursion entdeckt in Regeln für Relation »%s«" -#: rewrite/rewriteHandler.c:2260 +#: rewrite/rewriteHandler.c:2263 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "unendliche Rekursion entdeckt in Policys für Relation »%s«" -#: rewrite/rewriteHandler.c:2590 +#: rewrite/rewriteHandler.c:2593 msgid "Junk view columns are not updatable." msgstr "Junk-Sichtspalten sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2595 +#: rewrite/rewriteHandler.c:2598 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:2598 +#: rewrite/rewriteHandler.c:2601 msgid "View columns that refer to system columns are not updatable." msgstr "Sichtspalten, die auf Systemspalten verweisen, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2601 +#: rewrite/rewriteHandler.c:2604 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:2662 +#: rewrite/rewriteHandler.c:2665 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Sichten, die DISTINCT enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2665 +#: rewrite/rewriteHandler.c:2668 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Sichten, die GROUP BY enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2668 +#: rewrite/rewriteHandler.c:2671 msgid "Views containing HAVING are not automatically updatable." msgstr "Sichten, die HAVING enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2671 +#: rewrite/rewriteHandler.c:2674 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:2674 +#: rewrite/rewriteHandler.c:2677 msgid "Views containing WITH are not automatically updatable." msgstr "Sichten, die WITH enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2677 +#: rewrite/rewriteHandler.c:2680 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Sichten, die LIMIT oder OFFSET enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2689 +#: rewrite/rewriteHandler.c:2692 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Sichten, die Aggregatfunktionen zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2692 +#: rewrite/rewriteHandler.c:2695 msgid "Views that return window functions are not automatically updatable." msgstr "Sichten, die Fensterfunktionen zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2695 +#: rewrite/rewriteHandler.c:2698 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:2702 rewrite/rewriteHandler.c:2706 -#: rewrite/rewriteHandler.c:2714 +#: rewrite/rewriteHandler.c:2705 rewrite/rewriteHandler.c:2709 +#: rewrite/rewriteHandler.c:2717 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:2717 +#: rewrite/rewriteHandler.c:2720 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Sichten, die TABLESAMPLE enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2741 +#: rewrite/rewriteHandler.c:2744 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:3238 +#: rewrite/rewriteHandler.c:3241 #, 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:3246 +#: rewrite/rewriteHandler.c:3249 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "kann Spalte »%s« von Sicht »%s« nicht aktualisieren" -#: rewrite/rewriteHandler.c:3728 +#: rewrite/rewriteHandler.c:3747 #, 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:3739 +#: rewrite/rewriteHandler.c:3758 #, 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:3753 +#: rewrite/rewriteHandler.c:3772 #, 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:3757 +#: rewrite/rewriteHandler.c:3776 #, 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:3762 +#: rewrite/rewriteHandler.c:3781 #, 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:3992 rewrite/rewriteHandler.c:4000 -#: rewrite/rewriteHandler.c:4008 +#: rewrite/rewriteHandler.c:4012 rewrite/rewriteHandler.c:4020 +#: rewrite/rewriteHandler.c:4028 #, 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:4113 +#: rewrite/rewriteHandler.c:4134 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "INSERT RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:4115 +#: rewrite/rewriteHandler.c:4136 #, 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:4120 +#: rewrite/rewriteHandler.c:4141 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "UPDATE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:4122 +#: rewrite/rewriteHandler.c:4143 #, 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:4127 +#: rewrite/rewriteHandler.c:4148 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "DELETE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:4129 +#: rewrite/rewriteHandler.c:4150 #, 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:4147 +#: rewrite/rewriteHandler.c:4168 #, 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:4204 +#: rewrite/rewriteHandler.c:4225 #, 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" @@ -20747,47 +20767,47 @@ msgstr "Statistikobjekt »%s.%s« konnte für Relation »%s.%s« nicht berechnet msgid "function returning record called in context that cannot accept type record" msgstr "Funktion, die einen Record zurückgibt, in einem Zusammenhang aufgerufen, der Typ record nicht verarbeiten kann" -#: storage/buffer/bufmgr.c:598 storage/buffer/bufmgr.c:765 +#: storage/buffer/bufmgr.c:605 storage/buffer/bufmgr.c:772 #, c-format msgid "cannot access temporary tables of other sessions" msgstr "auf temporäre Tabellen anderer Sitzungen kann nicht zugegriffen werden" -#: storage/buffer/bufmgr.c:843 +#: storage/buffer/bufmgr.c:850 #, 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:930 +#: storage/buffer/bufmgr.c:937 #, 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:932 +#: storage/buffer/bufmgr.c:939 #, 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:1031 +#: storage/buffer/bufmgr.c:1038 #, 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:4534 +#: storage/buffer/bufmgr.c:4600 #, c-format msgid "could not write block %u of %s" msgstr "konnte Block %u von %s nicht schreiben" -#: storage/buffer/bufmgr.c:4536 +#: storage/buffer/bufmgr.c:4602 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Mehrere Fehlschläge --- Schreibfehler ist möglicherweise dauerhaft." -#: storage/buffer/bufmgr.c:4557 storage/buffer/bufmgr.c:4576 +#: storage/buffer/bufmgr.c:4623 storage/buffer/bufmgr.c:4642 #, c-format msgid "writing block %u of relation %s" msgstr "schreibe Block %u von Relation %s" -#: storage/buffer/bufmgr.c:4880 +#: storage/buffer/bufmgr.c:4946 #, c-format msgid "snapshot too old" msgstr "Snapshot zu alt" @@ -20817,7 +20837,7 @@ msgstr "konnte Größe von temporärer Datei »%s« von BufFile »%s« nicht bes msgid "could not delete shared fileset \"%s\": %m" msgstr "konnte geteiltes Datei-Set »%s« nicht löschen: %m" -#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:871 +#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:874 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "kann Datei »%s« nicht kürzen: %m" @@ -21489,22 +21509,22 @@ msgstr "konnte Block %u in Datei »%s« nicht schreiben: %m" 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:842 +#: storage/smgr/md.c:845 #, 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:897 +#: storage/smgr/md.c:900 #, 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:1301 +#: storage/smgr/md.c:1304 #, 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:1315 +#: storage/smgr/md.c:1318 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): %m" @@ -22504,8 +22524,8 @@ msgstr "NULL-Werte im Array sind in diesem Zusammenhang nicht erlaubt" msgid "cannot compare arrays of different element types" msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen" -#: utils/adt/arrayfuncs.c:4034 utils/adt/multirangetypes.c:2742 -#: utils/adt/multirangetypes.c:2814 utils/adt/rangetypes.c:1343 +#: utils/adt/arrayfuncs.c:4034 utils/adt/multirangetypes.c:2743 +#: utils/adt/multirangetypes.c:2815 utils/adt/rangetypes.c:1343 #: utils/adt/rangetypes.c:1407 utils/adt/rowtypes.c:1858 #, c-format msgid "could not identify a hash function for type %s" @@ -24095,22 +24115,22 @@ msgstr "Start einer Range erwartet." msgid "Expected comma or end of multirange." msgstr "Komma oder Ende der Multirange erwartet." -#: utils/adt/multirangetypes.c:975 +#: utils/adt/multirangetypes.c:976 #, c-format msgid "multiranges cannot be constructed from multidimensional arrays" msgstr "Multiranges können nicht aus mehrdimensionalen Arrays konstruiert werden" -#: utils/adt/multirangetypes.c:1001 +#: utils/adt/multirangetypes.c:1002 #, c-format msgid "multirange values cannot contain null members" msgstr "Multirange-Werte können keine Mitglieder, die NULL sind, haben" -#: utils/adt/multirangetypes.c:1349 +#: utils/adt/multirangetypes.c:1350 #, c-format msgid "range_agg must be called with a range" msgstr "range_agg muss mit einem Range-Type aufgerufen werden" -#: utils/adt/multirangetypes.c:1420 +#: utils/adt/multirangetypes.c:1421 #, c-format msgid "range_intersect_agg must be called with a multirange" msgstr "range_intersect_agg muss mit einem Multirange-Typ aufgerufen werden" @@ -24329,99 +24349,99 @@ msgstr "Null-Zeichen ist nicht erlaubt" msgid "percentile value %g is not between 0 and 1" msgstr "Perzentilwert %g ist nicht zwischen 0 und 1" -#: utils/adt/pg_locale.c:1228 +#: utils/adt/pg_locale.c:1229 #, c-format msgid "Apply system library package updates." msgstr "Aktualisieren Sie die Systembibliotheken." -#: utils/adt/pg_locale.c:1442 +#: utils/adt/pg_locale.c:1445 #, c-format msgid "could not create locale \"%s\": %m" msgstr "konnte Locale »%s« nicht erzeugen: %m" -#: utils/adt/pg_locale.c:1445 +#: utils/adt/pg_locale.c:1448 #, 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:1547 +#: utils/adt/pg_locale.c:1550 #, 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:1556 +#: utils/adt/pg_locale.c:1559 #, 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:1568 +#: utils/adt/pg_locale.c:1571 #, 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:1574 utils/adt/pg_locale.c:1661 -#: utils/adt/pg_locale.c:1940 +#: utils/adt/pg_locale.c:1577 utils/adt/pg_locale.c:1664 +#: utils/adt/pg_locale.c:1943 #, 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:1588 +#: utils/adt/pg_locale.c:1591 #, c-format msgid "ICU is not supported in this build" msgstr "ICU wird in dieser Installation nicht unterstützt" -#: utils/adt/pg_locale.c:1609 +#: utils/adt/pg_locale.c:1612 #, 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:1616 +#: utils/adt/pg_locale.c:1619 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "Version von Sortierfolge »%s« stimmt nicht überein" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1621 #, 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:1621 +#: utils/adt/pg_locale.c:1624 #, 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:1692 +#: utils/adt/pg_locale.c:1695 #, c-format msgid "could not load locale \"%s\"" msgstr "konnte Locale »%s« nicht laden" -#: utils/adt/pg_locale.c:1717 +#: utils/adt/pg_locale.c:1720 #, c-format msgid "could not get collation version for locale \"%s\": error code %lu" msgstr "konnte Sortierfolgenversion für Locale »%s« nicht ermitteln: Fehlercode %lu" -#: utils/adt/pg_locale.c:1755 +#: utils/adt/pg_locale.c:1758 #, c-format msgid "encoding \"%s\" not supported by ICU" msgstr "Kodierung »%s« wird von ICU nicht unterstützt" -#: utils/adt/pg_locale.c:1762 +#: utils/adt/pg_locale.c:1765 #, 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:1793 utils/adt/pg_locale.c:1802 -#: utils/adt/pg_locale.c:1831 utils/adt/pg_locale.c:1841 +#: utils/adt/pg_locale.c:1796 utils/adt/pg_locale.c:1805 +#: utils/adt/pg_locale.c:1834 utils/adt/pg_locale.c:1844 #, c-format msgid "%s failed: %s" msgstr "%s fehlgeschlagen: %s" -#: utils/adt/pg_locale.c:2113 +#: utils/adt/pg_locale.c:2116 #, c-format msgid "invalid multibyte character for locale" msgstr "ungültiges Mehrbytezeichen für Locale" -#: utils/adt/pg_locale.c:2114 +#: utils/adt/pg_locale.c:2117 #, 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." @@ -25288,7 +25308,7 @@ msgstr "nicht unterstützte XML-Funktionalität" msgid "This functionality requires the server to be built with libxml support." msgstr "Diese Funktionalität verlangt, dass der Server mit Libxml-Unterstützung gebaut wird." -#: utils/adt/xml.c:253 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:253 utils/mb/mbutils.c:628 #, c-format msgid "invalid encoding name \"%s\"" msgstr "ungültiger Kodierungsname »%s«" @@ -25468,17 +25488,17 @@ msgstr "in Operatorklasse »%s« für Zugriffsmethode %s fehlt Support-Funktion msgid "cached plan must not change result type" msgstr "gecachter Plan darf den Ergebnistyp nicht ändern" -#: utils/cache/relcache.c:6328 +#: utils/cache/relcache.c:6344 #, 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:6330 +#: utils/cache/relcache.c:6346 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht." -#: utils/cache/relcache.c:6652 +#: utils/cache/relcache.c:6668 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "konnte Cache-Datei »%s« nicht löschen: %m" @@ -26089,48 +26109,48 @@ msgstr "unerwartete Kodierungs-ID %d für ISO-8859-Zeichensatz" msgid "unexpected encoding ID %d for WIN character sets" msgstr "unerwartete Kodierungs-ID %d für WIN-Zeichensatz" -#: utils/mb/mbutils.c:297 utils/mb/mbutils.c:900 +#: utils/mb/mbutils.c:298 utils/mb/mbutils.c:901 #, c-format msgid "conversion between %s and %s is not supported" msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt" -#: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 -#: utils/mb/mbutils.c:842 +#: utils/mb/mbutils.c:403 utils/mb/mbutils.c:431 utils/mb/mbutils.c:816 +#: utils/mb/mbutils.c:843 #, c-format msgid "String of %d bytes is too long for encoding conversion." msgstr "Zeichenkette mit %d Bytes ist zu lang für Kodierungsumwandlung." -#: utils/mb/mbutils.c:568 +#: utils/mb/mbutils.c:569 #, c-format msgid "invalid source encoding name \"%s\"" msgstr "ungültiger Quellkodierungsname »%s«" -#: utils/mb/mbutils.c:573 +#: utils/mb/mbutils.c:574 #, c-format msgid "invalid destination encoding name \"%s\"" msgstr "ungültiger Zielkodierungsname »%s«" -#: utils/mb/mbutils.c:713 +#: utils/mb/mbutils.c:714 #, c-format msgid "invalid byte value for encoding \"%s\": 0x%02x" msgstr "ungültiger Byte-Wert für Kodierung »%s«: 0x%02x" -#: utils/mb/mbutils.c:877 +#: utils/mb/mbutils.c:878 #, c-format msgid "invalid Unicode code point" msgstr "ungültiger Unicode-Codepunkt" -#: utils/mb/mbutils.c:1146 +#: utils/mb/mbutils.c:1147 #, c-format msgid "bind_textdomain_codeset failed" msgstr "bind_textdomain_codeset fehlgeschlagen" -#: utils/mb/mbutils.c:1667 +#: utils/mb/mbutils.c:1668 #, c-format msgid "invalid byte sequence for encoding \"%s\": %s" msgstr "ungültige Byte-Sequenz für Kodierung »%s«: %s" -#: utils/mb/mbutils.c:1708 +#: utils/mb/mbutils.c:1709 #, c-format msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\"" msgstr "Zeichen mit Byte-Folge %s in Kodierung »%s« hat keine Entsprechung in Kodierung »%s«" @@ -28378,15 +28398,15 @@ msgstr "Fehler während der Erzeugung des Speicherkontexts »%s«." msgid "could not attach to dynamic shared area" msgstr "konnte nicht an dynamische Shared Area anbinden" -#: utils/mmgr/mcxt.c:889 utils/mmgr/mcxt.c:925 utils/mmgr/mcxt.c:963 -#: utils/mmgr/mcxt.c:1001 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1120 -#: utils/mmgr/mcxt.c:1156 utils/mmgr/mcxt.c:1208 utils/mmgr/mcxt.c:1243 -#: utils/mmgr/mcxt.c:1278 +#: utils/mmgr/mcxt.c:892 utils/mmgr/mcxt.c:928 utils/mmgr/mcxt.c:966 +#: utils/mmgr/mcxt.c:1004 utils/mmgr/mcxt.c:1112 utils/mmgr/mcxt.c:1143 +#: utils/mmgr/mcxt.c:1179 utils/mmgr/mcxt.c:1231 utils/mmgr/mcxt.c:1266 +#: utils/mmgr/mcxt.c:1301 #, c-format msgid "Failed on request of size %zu in memory context \"%s\"." msgstr "Fehler bei Anfrage mit Größe %zu im Speicherkontext »%s«." -#: utils/mmgr/mcxt.c:1052 +#: utils/mmgr/mcxt.c:1067 #, c-format msgid "logging memory contexts of PID %d" msgstr "logge Speicherkontexte von PID %d" @@ -28436,24 +28456,24 @@ msgstr "konnte Positionszeiger in temporärer Datei nicht auf Block %ld setzen" msgid "could not read block %ld of temporary file: read only %zu of %zu bytes" msgstr "konnte Block %ld von temporärer Datei nicht lesen: es wurden nur %zu von %zu Bytes gelesen" -#: utils/sort/sharedtuplestore.c:431 utils/sort/sharedtuplestore.c:440 -#: utils/sort/sharedtuplestore.c:463 utils/sort/sharedtuplestore.c:480 -#: utils/sort/sharedtuplestore.c:497 +#: utils/sort/sharedtuplestore.c:432 utils/sort/sharedtuplestore.c:441 +#: utils/sort/sharedtuplestore.c:464 utils/sort/sharedtuplestore.c:481 +#: utils/sort/sharedtuplestore.c:498 #, c-format msgid "could not read from shared tuplestore temporary file" msgstr "konnte nicht aus temporärer Datei für Shared-Tuplestore lesen" -#: utils/sort/sharedtuplestore.c:486 +#: utils/sort/sharedtuplestore.c:487 #, c-format msgid "unexpected chunk in shared tuplestore temporary file" msgstr "unerwarteter Chunk in temporärer Datei für Shared-Tuplestore" -#: utils/sort/sharedtuplestore.c:570 +#: utils/sort/sharedtuplestore.c:571 #, c-format msgid "could not seek to block %u in shared tuplestore temporary file" msgstr "konnte Positionszeiger in temporärer Datei für Shared-Tuplestore nicht auf Block %u setzen" -#: utils/sort/sharedtuplestore.c:577 +#: utils/sort/sharedtuplestore.c:578 #, c-format msgid "could not read from shared tuplestore temporary file: read only %zu of %zu bytes" msgstr "konnte nicht aus temporärer Datei für Shared-Tuplestore lesen: es wurden nur %zu von %zu Bytes gelesen" diff --git a/src/backend/po/es.po b/src/backend/po/es.po index a83c7811914..8b44a8629d1 100644 --- a/src/backend/po/es.po +++ b/src/backend/po/es.po @@ -62,8 +62,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL server 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:15+0000\n" -"PO-Revision-Date: 2025-02-15 12:13+0100\n" +"POT-Creation-Date: 2026-02-06 21:26+0000\n" +"PO-Revision-Date: 2026-02-07 09:09+0100\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" "Language: es\n" @@ -89,16 +89,16 @@ msgstr "no se pudo abrir archivo «%s» para lectura: %m" #: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 #: access/transam/timeline.c:143 access/transam/timeline.c:362 #: access/transam/twophase.c:1329 access/transam/xlog.c:3594 -#: access/transam/xlog.c:4843 access/transam/xlog.c:11737 -#: access/transam/xlog.c:11750 access/transam/xlog.c:12205 -#: access/transam/xlog.c:12285 access/transam/xlog.c:12322 -#: access/transam/xlog.c:12382 access/transam/xlogfuncs.c:703 +#: access/transam/xlog.c:4843 access/transam/xlog.c:11771 +#: access/transam/xlog.c:11784 access/transam/xlog.c:12239 +#: access/transam/xlog.c:12319 access/transam/xlog.c:12356 +#: access/transam/xlog.c:12416 access/transam/xlogfuncs.c:703 #: access/transam/xlogfuncs.c:722 commands/extension.c:3492 libpq/hba.c:534 #: replication/basebackup.c:2016 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 #: replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 -#: replication/logical/snapbuild.c:1988 replication/slot.c:1763 -#: replication/slot.c:1804 replication/walsender.c:559 +#: replication/logical/snapbuild.c:1988 replication/slot.c:1794 +#: replication/slot.c:1835 replication/walsender.c:559 #: storage/file/buffile.c:445 storage/file/copydir.c:195 #: utils/adt/genfile.c:202 utils/adt/misc.c:881 utils/cache/relmapper.c:744 #, c-format @@ -110,7 +110,7 @@ msgstr "no se pudo leer el archivo «%s»: %m" #: replication/basebackup.c:2020 replication/logical/origin.c:734 #: replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 #: replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 -#: replication/slot.c:1767 replication/slot.c:1808 replication/walsender.c:564 +#: replication/slot.c:1798 replication/slot.c:1839 replication/walsender.c:564 #: utils/cache/relmapper.c:748 #, c-format msgid "could not read file \"%s\": read %d of %zu" @@ -129,7 +129,7 @@ msgstr "no se pudo leer el archivo «%s»: leídos %d de %zu" #: libpq/be-fsstubs.c:525 replication/logical/origin.c:667 #: replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 #: replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 -#: replication/slot.c:1652 replication/slot.c:1815 replication/walsender.c:574 +#: replication/slot.c:1683 replication/slot.c:1846 replication/walsender.c:574 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:735 #: storage/file/fd.c:3528 storage/file/fd.c:3631 utils/cache/relmapper.c:759 #: utils/cache/relmapper.c:898 @@ -170,7 +170,7 @@ msgstr "" #: replication/logical/reorderbuffer.c:4294 #: replication/logical/reorderbuffer.c:5070 #: replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 -#: replication/slot.c:1735 replication/walsender.c:532 +#: replication/slot.c:1766 replication/walsender.c:532 #: replication/walsender.c:2581 storage/file/copydir.c:161 #: storage/file/fd.c:710 storage/file/fd.c:3297 storage/file/fd.c:3515 #: storage/file/fd.c:3602 storage/smgr/md.c:506 utils/cache/relmapper.c:724 @@ -183,8 +183,8 @@ msgstr "no se pudo abrir el archivo «%s»: %m" #: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 #: access/transam/twophase.c:1726 access/transam/twophase.c:1735 -#: access/transam/xlog.c:11494 access/transam/xlog.c:11532 -#: access/transam/xlog.c:11945 access/transam/xlogfuncs.c:782 +#: access/transam/xlog.c:11528 access/transam/xlog.c:11566 +#: access/transam/xlog.c:11979 access/transam/xlogfuncs.c:782 #: postmaster/postmaster.c:5688 postmaster/syslogger.c:1499 #: postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 #, c-format @@ -197,10 +197,10 @@ msgstr "no se pudo escribir el archivo «%s»: %m" #: access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 #: access/transam/timeline.c:506 access/transam/twophase.c:1747 #: access/transam/xlog.c:3438 access/transam/xlog.c:3628 -#: access/transam/xlog.c:4806 access/transam/xlog.c:10977 -#: access/transam/xlog.c:11018 replication/logical/snapbuild.c:1821 -#: replication/slot.c:1636 replication/slot.c:1745 storage/file/fd.c:727 -#: storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 +#: access/transam/xlog.c:4806 access/transam/xlog.c:11011 +#: access/transam/xlog.c:11052 replication/logical/snapbuild.c:1821 +#: replication/slot.c:1667 replication/slot.c:1776 storage/file/fd.c:727 +#: storage/file/fd.c:3623 storage/smgr/md.c:959 storage/smgr/md.c:1000 #: storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 #, c-format msgid "could not fsync file \"%s\": %m" @@ -224,17 +224,17 @@ msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m" #: tcop/postgres.c:3620 utils/adt/cryptohashfuncs.c:46 #: utils/adt/cryptohashfuncs.c:66 utils/adt/formatting.c:1699 #: utils/adt/formatting.c:1823 utils/adt/formatting.c:1948 -#: utils/adt/pg_locale.c:450 utils/adt/pg_locale.c:614 utils/adt/regexp.c:223 +#: utils/adt/pg_locale.c:451 utils/adt/pg_locale.c:615 utils/adt/regexp.c:223 #: utils/fmgr/dfmgr.c:229 utils/hash/dynahash.c:513 utils/hash/dynahash.c:613 -#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:401 utils/mb/mbutils.c:429 -#: utils/mb/mbutils.c:814 utils/mb/mbutils.c:841 utils/misc/guc.c:5061 +#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 +#: utils/mb/mbutils.c:815 utils/mb/mbutils.c:842 utils/misc/guc.c:5061 #: utils/misc/guc.c:5077 utils/misc/guc.c:5090 utils/misc/guc.c:8447 #: utils/misc/tzparser.c:476 utils/mmgr/aset.c:476 utils/mmgr/dsa.c:702 #: utils/mmgr/dsa.c:724 utils/mmgr/dsa.c:805 utils/mmgr/generation.c:234 -#: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 -#: utils/mmgr/mcxt.c:1000 utils/mmgr/mcxt.c:1088 utils/mmgr/mcxt.c:1119 -#: utils/mmgr/mcxt.c:1155 utils/mmgr/mcxt.c:1207 utils/mmgr/mcxt.c:1242 -#: utils/mmgr/mcxt.c:1277 utils/mmgr/slab.c:238 +#: utils/mmgr/mcxt.c:891 utils/mmgr/mcxt.c:927 utils/mmgr/mcxt.c:965 +#: utils/mmgr/mcxt.c:1003 utils/mmgr/mcxt.c:1111 utils/mmgr/mcxt.c:1142 +#: utils/mmgr/mcxt.c:1178 utils/mmgr/mcxt.c:1230 utils/mmgr/mcxt.c:1265 +#: utils/mmgr/mcxt.c:1300 utils/mmgr/slab.c:238 #, c-format msgid "out of memory" msgstr "memoria agotada" @@ -264,7 +264,7 @@ msgstr "no se pudo encontrar un «%s» para ejecutar" msgid "could not change directory to \"%s\": %m" msgstr "no se pudo cambiar al directorio «%s»: %m" -#: ../common/exec.c:299 access/transam/xlog.c:11368 +#: ../common/exec.c:299 access/transam/xlog.c:11402 #: replication/basebackup.c:1428 utils/adt/misc.c:362 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -293,8 +293,8 @@ msgstr "no se puede duplicar un puntero nulo (error interno)\n" #: ../common/file_utils.c:86 ../common/file_utils.c:446 #: ../common/file_utils.c:450 access/transam/twophase.c:1297 -#: access/transam/xlog.c:11470 access/transam/xlog.c:11508 -#: access/transam/xlog.c:11725 access/transam/xlogarchive.c:110 +#: access/transam/xlog.c:11504 access/transam/xlog.c:11542 +#: access/transam/xlog.c:11759 access/transam/xlogarchive.c:110 #: access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 #: commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 #: commands/tablespace.c:894 postmaster/pgarch.c:696 @@ -324,7 +324,7 @@ msgstr "no se pudo leer el directorio «%s»: %m" #: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 #: postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 -#: replication/slot.c:672 replication/slot.c:1519 replication/slot.c:1668 +#: replication/slot.c:672 replication/slot.c:1550 replication/slot.c:1699 #: storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" @@ -638,7 +638,7 @@ msgid "request for BRIN range summarization for index \"%s\" page %u was not rec msgstr "petición para sumarización BRIN de rango para el índice «%s» página %u no fue registrada" #: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 -#: access/transam/xlog.c:11139 access/transam/xlog.c:11676 +#: access/transam/xlog.c:11173 access/transam/xlog.c:11710 #: access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 #: access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 #: access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 @@ -893,7 +893,7 @@ msgstr "el método de compresión lz4 no está soportado" msgid "This functionality requires the server to be built with lz4 support." msgstr "Esta funcionalidad requiere que el servidor haya sido construido con soporte lz4." -#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1589 +#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1592 #: utils/adt/xml.c:234 #, c-format msgid "You need to rebuild PostgreSQL using %s." @@ -1088,38 +1088,38 @@ msgstr "la familia de operadores «%s» del método de acceso %s no tiene funci msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" msgstr "faltan operadores entre tipos en la familia de operadores «%s» del método de acceso %s" -#: access/heap/heapam.c:2299 +#: access/heap/heapam.c:2302 #, c-format msgid "cannot insert tuples in a parallel worker" msgstr "no se pueden insertar tuplas en un ayudante paralelo" -#: access/heap/heapam.c:2770 +#: access/heap/heapam.c:2773 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "no se pueden eliminar tuplas durante una operación paralela" -#: access/heap/heapam.c:2816 +#: access/heap/heapam.c:2819 #, c-format msgid "attempted to delete invisible tuple" msgstr "se intentó eliminar una tupla invisible" -#: access/heap/heapam.c:3262 access/heap/heapam.c:6529 access/index/genam.c:816 +#: access/heap/heapam.c:3265 access/heap/heapam.c:6617 access/index/genam.c:816 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "no se pueden actualizar tuplas durante una operación paralela" -#: access/heap/heapam.c:3449 +#: access/heap/heapam.c:3452 #, c-format msgid "attempted to update invisible tuple" msgstr "se intentó actualizar una tupla invisible" -#: access/heap/heapam.c:4936 access/heap/heapam.c:4974 -#: access/heap/heapam.c:5239 access/heap/heapam_handler.c:457 +#: access/heap/heapam.c:4941 access/heap/heapam.c:4979 +#: access/heap/heapam.c:5246 access/heap/heapam_handler.c:457 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "no se pudo bloquear un candado en la fila de la relación «%s»" -#: access/heap/heapam.c:6342 commands/trigger.c:3152 +#: access/heap/heapam.c:6371 commands/trigger.c:3152 #: executor/nodeModifyTable.c:1988 executor/nodeModifyTable.c:2078 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" @@ -1143,11 +1143,11 @@ msgstr "no se pudo escribir al archivo «%s», se escribió %d de %d: %m" #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:481 #: access/transam/xlog.c:3354 access/transam/xlog.c:3563 -#: access/transam/xlog.c:4785 access/transam/xlog.c:11485 -#: access/transam/xlog.c:11523 access/transam/xlog.c:11928 +#: access/transam/xlog.c:4785 access/transam/xlog.c:11519 +#: access/transam/xlog.c:11557 access/transam/xlog.c:11962 #: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4636 #: postmaster/postmaster.c:5675 replication/logical/origin.c:587 -#: replication/slot.c:1580 storage/file/copydir.c:167 storage/smgr/md.c:218 +#: replication/slot.c:1611 storage/file/copydir.c:167 storage/smgr/md.c:218 #: utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -1164,7 +1164,7 @@ msgstr "no se pudo truncar el archivo «%s» a %u: %m" #: access/transam/xlog.c:4797 postmaster/postmaster.c:4646 #: postmaster/postmaster.c:4656 replication/logical/origin.c:599 #: replication/logical/origin.c:641 replication/logical/origin.c:660 -#: replication/logical/snapbuild.c:1797 replication/slot.c:1616 +#: replication/logical/snapbuild.c:1797 replication/slot.c:1647 #: storage/file/buffile.c:506 storage/file/copydir.c:207 #: utils/init/miscinit.c:1478 utils/init/miscinit.c:1489 #: utils/init/miscinit.c:1497 utils/misc/guc.c:8430 utils/misc/guc.c:8461 @@ -1179,7 +1179,7 @@ msgstr "no se pudo escribir a archivo «%s»: %m" #: postmaster/postmaster.c:1098 postmaster/syslogger.c:1465 #: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 #: replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 -#: replication/slot.c:1719 storage/file/fd.c:785 storage/file/fd.c:3168 +#: replication/slot.c:1750 storage/file/fd.c:785 storage/file/fd.c:3168 #: storage/file/fd.c:3230 storage/file/reinit.c:250 storage/ipc/dsm.c:315 #: storage/smgr/md.c:347 storage/smgr/md.c:397 storage/sync/sync.c:250 #: utils/time/snapmgr.c:1606 @@ -1619,13 +1619,13 @@ msgstr "Asegúrese que el parámetro de configuración «%s» esté definido en msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Asegúrese que el parámetro de configuración «%s» esté definido." -#: access/transam/multixact.c:1022 +#: access/transam/multixact.c:1106 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\"" msgstr "la base de datos no está aceptando órdenes que generen nuevos MultiXactIds para evitar pérdida de datos debido al reciclaje de transacciones en la base de datos «%s»" -#: access/transam/multixact.c:1024 access/transam/multixact.c:1031 -#: access/transam/multixact.c:1055 access/transam/multixact.c:1064 +#: access/transam/multixact.c:1108 access/transam/multixact.c:1115 +#: access/transam/multixact.c:1139 access/transam/multixact.c:1148 #, c-format msgid "" "Execute a database-wide VACUUM in that database.\n" @@ -1634,65 +1634,70 @@ msgstr "" "Ejecute VACUUM de la base completa en esa base de datos.\n" "Puede que además necesite comprometer o abortar transacciones preparadas antiguas, o eliminar slots de replicación añejos." -#: access/transam/multixact.c:1029 +#: access/transam/multixact.c:1113 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "la base de datos no está aceptando órdenes que generen nuevos MultiXactIds para evitar pérdida de datos debido al problema del reciclaje de transacciones en la base con OID %u" -#: access/transam/multixact.c:1050 access/transam/multixact.c:2334 +#: access/transam/multixact.c:1134 access/transam/multixact.c:2421 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" msgstr[0] "base de datos «%s» debe ser limpiada antes de que %u más MultiXactId sea usado" msgstr[1] "base de datos «%s» debe ser limpiada dentro de que %u más MultiXactIds sean usados" -#: access/transam/multixact.c:1059 access/transam/multixact.c:2343 +#: access/transam/multixact.c:1143 access/transam/multixact.c:2430 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" msgstr[0] "base de datos con OID %u debe ser limpiada antes de que %u más MultiXactId sea usado" msgstr[1] "base de datos con OID %u debe ser limpiada antes de que %u más MultiXactIds sean usados" -#: access/transam/multixact.c:1120 +#: access/transam/multixact.c:1207 #, c-format msgid "multixact \"members\" limit exceeded" msgstr "límite de miembros de multixact alcanzado" -#: access/transam/multixact.c:1121 +#: access/transam/multixact.c:1208 #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." msgstr[0] "Esta orden crearía un multixact con %u miembros, pero el espacio que queda sólo sirve para %u miembro." msgstr[1] "Esta orden crearía un multixact con %u miembros, pero el espacio que queda sólo sirve para %u miembros." -#: access/transam/multixact.c:1126 +#: access/transam/multixact.c:1213 #, c-format msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Ejecute un VACUUM de la base completa en la base de datos con OID %u con vacuum_multixact_freeze_min_age y vacuum_multixact_freeze_table_age reducidos." -#: access/transam/multixact.c:1157 +#: access/transam/multixact.c:1244 #, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" msgstr[0] "base de datos con OID %u debe ser limpiada antes de que %d miembro más de multixact sea usado" msgstr[1] "base de datos con OID %u debe ser limpiada antes de que %d más miembros de multixact sean usados" -#: access/transam/multixact.c:1162 +#: access/transam/multixact.c:1249 #, c-format msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Ejecute un VACUUM de la base completa en esa base de datos con vacuum_multixact_freeze_min_age y vacuum_multixact_freeze_table_age reducidos." -#: access/transam/multixact.c:1301 +#: access/transam/multixact.c:1388 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "el MultiXactId %u ya no existe -- aparente problema por reciclaje" -#: access/transam/multixact.c:1307 +#: access/transam/multixact.c:1394 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "el MultiXactId %u no se ha creado aún -- aparente problema por reciclaje" -#: access/transam/multixact.c:2339 access/transam/multixact.c:2348 +#: access/transam/multixact.c:1469 +#, c-format +msgid "MultiXact %u has invalid next offset" +msgstr "el MultiXact %u tiene un siguiente offset no válido" + +#: access/transam/multixact.c:2426 access/transam/multixact.c:2435 #: access/transam/varsup.c:151 access/transam/varsup.c:158 #: access/transam/varsup.c:466 access/transam/varsup.c:473 #, c-format @@ -1703,61 +1708,67 @@ msgstr "" "Para evitar que la base de datos se desactive, ejecute VACUUM en esa base de datos.\n" "Puede que además necesite comprometer o abortar transacciones preparadas antiguas, o eliminar slots de replicación añejos." -#: access/transam/multixact.c:2622 +#: access/transam/multixact.c:2709 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "las protecciones de reciclaje de miembros de multixact están inhabilitadas porque el multixact más antiguo %u en checkpoint no existe en disco" -#: access/transam/multixact.c:2644 +#: access/transam/multixact.c:2731 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "las protecciones de reciclaje de miembros de multixact están habilitadas" -#: access/transam/multixact.c:3038 +#: access/transam/multixact.c:3125 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "multixact más antiguo %u no encontrado, multixact más antiguo es %u, omitiendo el truncado" -#: access/transam/multixact.c:3056 +#: access/transam/multixact.c:3143 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "no se puede truncar hasta el MultiXact %u porque no existe en disco, omitiendo el truncado" -#: access/transam/multixact.c:3370 +#: access/transam/multixact.c:3160 +#, c-format +#| msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" +msgid "cannot truncate up to MultiXact %u because it has invalid offset, skipping truncation" +msgstr "no se puede truncar hasta el MultiXact %u porque tiene un offset no válido, omitiendo el truncado" + +#: access/transam/multixact.c:3498 #, c-format msgid "invalid MultiXactId: %u" msgstr "el MultiXactId no es válido: %u" -#: access/transam/parallel.c:737 access/transam/parallel.c:856 +#: access/transam/parallel.c:744 access/transam/parallel.c:863 #, c-format msgid "parallel worker failed to initialize" msgstr "el ayudante paralelo no pudo iniciar" -#: access/transam/parallel.c:738 access/transam/parallel.c:857 +#: access/transam/parallel.c:745 access/transam/parallel.c:864 #, c-format msgid "More details may be available in the server log." msgstr "Puede haber más detalles disponibles en el log del servidor." -#: access/transam/parallel.c:918 +#: access/transam/parallel.c:925 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster terminó durante una transacción paralela" -#: access/transam/parallel.c:1105 +#: access/transam/parallel.c:1112 #, c-format msgid "lost connection to parallel worker" msgstr "se ha perdido la conexión al ayudante paralelo" -#: access/transam/parallel.c:1171 access/transam/parallel.c:1173 +#: access/transam/parallel.c:1178 access/transam/parallel.c:1180 msgid "parallel worker" msgstr "ayudante paralelo" -#: access/transam/parallel.c:1326 +#: access/transam/parallel.c:1333 #, c-format msgid "could not map dynamic shared memory segment" msgstr "no se pudo mapear el segmento de memoria compartida dinámica" -#: access/transam/parallel.c:1331 +#: access/transam/parallel.c:1338 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "número mágico no válido en segmento de memoria compartida dinámica" @@ -2074,112 +2085,112 @@ msgstr "base de datos con OID %u debe ser limpiada dentro de %u transacciones" msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "no se pueden tener más de 2^32-2 órdenes en una transacción" -#: access/transam/xact.c:1584 +#: access/transam/xact.c:1594 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "se superó el número máximo de subtransacciones comprometidas (%d)" -#: access/transam/xact.c:2435 +#: access/transam/xact.c:2445 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary objects" msgstr "no se puede hacer PREPARE de una transacción que ha operado en objetos temporales" -#: access/transam/xact.c:2445 +#: access/transam/xact.c:2455 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "no se puede hacer PREPARE de una transacción que ha exportado snapshots" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3416 +#: access/transam/xact.c:3426 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s no puede ser ejecutado dentro de un bloque de transacción" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3426 +#: access/transam/xact.c:3436 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s no puede ser ejecutado dentro de una subtransacción" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3436 +#: access/transam/xact.c:3446 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s no puede ser ejecutado en un pipeline" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3446 +#: access/transam/xact.c:3456 #, c-format msgid "%s cannot be executed from a function" msgstr "%s no puede ser ejecutado desde una función" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3517 access/transam/xact.c:3832 -#: access/transam/xact.c:3911 access/transam/xact.c:4034 -#: access/transam/xact.c:4185 access/transam/xact.c:4254 -#: access/transam/xact.c:4365 +#: access/transam/xact.c:3527 access/transam/xact.c:3842 +#: access/transam/xact.c:3921 access/transam/xact.c:4044 +#: access/transam/xact.c:4195 access/transam/xact.c:4264 +#: access/transam/xact.c:4375 #, c-format msgid "%s can only be used in transaction blocks" msgstr "la orden %s sólo puede ser usada en bloques de transacción" -#: access/transam/xact.c:3718 +#: access/transam/xact.c:3728 #, c-format msgid "there is already a transaction in progress" msgstr "ya hay una transacción en curso" -#: access/transam/xact.c:3837 access/transam/xact.c:3916 -#: access/transam/xact.c:4039 +#: access/transam/xact.c:3847 access/transam/xact.c:3926 +#: access/transam/xact.c:4049 #, c-format msgid "there is no transaction in progress" msgstr "no hay una transacción en curso" -#: access/transam/xact.c:3927 +#: access/transam/xact.c:3937 #, c-format msgid "cannot commit during a parallel operation" msgstr "no se puede comprometer una transacción durante una operación paralela" -#: access/transam/xact.c:4050 +#: access/transam/xact.c:4060 #, c-format msgid "cannot abort during a parallel operation" msgstr "no se puede abortar durante una operación paralela" -#: access/transam/xact.c:4149 +#: access/transam/xact.c:4159 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "no se pueden definir savepoints durante una operación paralela" -#: access/transam/xact.c:4236 +#: access/transam/xact.c:4246 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "no se pueden liberar savepoints durante una operación paralela" -#: access/transam/xact.c:4246 access/transam/xact.c:4297 -#: access/transam/xact.c:4357 access/transam/xact.c:4406 +#: access/transam/xact.c:4256 access/transam/xact.c:4307 +#: access/transam/xact.c:4367 access/transam/xact.c:4416 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "no existe el «savepoint» «%s»" -#: access/transam/xact.c:4303 access/transam/xact.c:4412 +#: access/transam/xact.c:4313 access/transam/xact.c:4422 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "el «savepoint» «%s» no existe dentro del nivel de savepoint actual" -#: access/transam/xact.c:4345 +#: access/transam/xact.c:4355 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "no se puede hacer rollback a un savepoint durante una operación paralela" -#: access/transam/xact.c:4473 +#: access/transam/xact.c:4483 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "no se pueden iniciar subtransacciones durante una operación paralela" -#: access/transam/xact.c:4541 +#: access/transam/xact.c:4551 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "no se pueden comprometer subtransacciones durante una operación paralela" -#: access/transam/xact.c:5188 +#: access/transam/xact.c:5198 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "no se pueden tener más de 2^32-1 subtransacciones en una transacción" @@ -2652,7 +2663,7 @@ msgstr "no se pudo crear el enlace simbólico «%s»: %m" msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ignorando el archivo «%s» porque no existe un archivo «%s»" -#: access/transam/xlog.c:6847 access/transam/xlog.c:12461 +#: access/transam/xlog.c:6847 access/transam/xlog.c:12495 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "El archivo «%s» fue renombrado a «%s»." @@ -2667,270 +2678,276 @@ msgstr "No se pudo renombrar el archivo de «%s» a «%s»: %m." msgid "could not locate a valid checkpoint record" msgstr "no se pudo localizar un registro de punto de control válido" -#: access/transam/xlog.c:6942 +#: access/transam/xlog.c:6915 +#, c-format +#| msgid "could not find redo location referenced by checkpoint record" +msgid "could not find redo location %X/%08X referenced by checkpoint record at %X/%08X" +msgstr "no se pudo encontrar la ubicación de redo %X/%08X referida por el registro de punto de control en %X/%08X" + +#: access/transam/xlog.c:6952 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "el timeline solicitado %u no es un hijo de la historia de este servidor" -#: access/transam/xlog.c:6944 +#: access/transam/xlog.c:6954 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "El punto de control más reciente está en %X/%X en el timeline %u, pero en la historia del timeline solicitado, el servidor se desvió desde ese timeline en %X/%X." -#: access/transam/xlog.c:6958 +#: access/transam/xlog.c:6968 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "el timeline solicitado %u no contiene el punto mínimo de recuperación %X/%X en el timeline %u" -#: access/transam/xlog.c:6988 +#: access/transam/xlog.c:6998 #, c-format msgid "invalid next transaction ID" msgstr "el siguiente ID de transacción no es válido" -#: access/transam/xlog.c:7088 +#: access/transam/xlog.c:7098 #, c-format msgid "invalid redo in checkpoint record" msgstr "redo no es válido en el registro de punto de control" -#: access/transam/xlog.c:7099 +#: access/transam/xlog.c:7109 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "registro redo no es válido en el punto de control de apagado" -#: access/transam/xlog.c:7139 +#: access/transam/xlog.c:7149 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "el sistema de bases de datos no fue apagado apropiadamente; se está efectuando la recuperación automática" -#: access/transam/xlog.c:7143 +#: access/transam/xlog.c:7153 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "la recuperación comienza en el timeline %u y tiene un timeline de destino %u" -#: access/transam/xlog.c:7190 +#: access/transam/xlog.c:7200 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label contiene datos inconsistentes con el archivo de control" -#: access/transam/xlog.c:7191 +#: access/transam/xlog.c:7201 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Esto significa que el respaldo está corrupto y deberá usar otro respaldo para la recuperación." -#: access/transam/xlog.c:7418 +#: access/transam/xlog.c:7428 #, c-format msgid "redo starts at %X/%X" msgstr "redo comienza en %X/%X" -#: access/transam/xlog.c:7643 +#: access/transam/xlog.c:7653 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "el punto de detención de recuperación pedido es antes del punto de recuperación consistente" -#: access/transam/xlog.c:7681 +#: access/transam/xlog.c:7691 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "redo listo en %X/%X utilización del sistema: %s" -#: access/transam/xlog.c:7687 +#: access/transam/xlog.c:7697 #, c-format msgid "last completed transaction was at log time %s" msgstr "última transacción completada al tiempo de registro %s" -#: access/transam/xlog.c:7696 +#: access/transam/xlog.c:7706 #, c-format msgid "redo is not required" msgstr "no se requiere redo" -#: access/transam/xlog.c:7708 +#: access/transam/xlog.c:7718 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "la recuperación terminó antes de alcanzar el punto configurado como destino de recuperación" -#: access/transam/xlog.c:7792 access/transam/xlog.c:7796 +#: access/transam/xlog.c:7802 access/transam/xlog.c:7806 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL termina antes del fin del respaldo en línea" -#: access/transam/xlog.c:7793 +#: access/transam/xlog.c:7803 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Todo el WAL generado durante el respaldo en línea debe estar disponible durante la recuperación." -#: access/transam/xlog.c:7797 +#: access/transam/xlog.c:7807 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Un respaldo en línea iniciado con pg_start_backup() debe ser terminado con pg_stop_backup(), y todos los archivos WAL hasta ese punto deben estar disponibles durante la recuperación." -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7810 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL termina antes del punto de recuperación consistente" -#: access/transam/xlog.c:7843 +#: access/transam/xlog.c:7853 #, c-format msgid "selected new timeline ID: %u" msgstr "seleccionado nuevo ID de timeline: %u" -#: access/transam/xlog.c:8311 +#: access/transam/xlog.c:8321 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "elemento de directorio «%s» inesperado encontrado en %s" -#: access/transam/xlog.c:8313 +#: access/transam/xlog.c:8323 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "Todas las entradas de directorios en pg_tblspc/ deberían ser enlaces simbólicos." -#: access/transam/xlog.c:8314 +#: access/transam/xlog.c:8324 #, c-format msgid "Remove those directories, or set allow_in_place_tablespaces to ON transiently to let recovery complete." msgstr "Elimine esos directorios, o configure allow_in_place_tablespaces a ON transitoriamente para permitir que la recuperación termine." -#: access/transam/xlog.c:8398 +#: access/transam/xlog.c:8408 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "el estado de recuperación consistente fue alcanzado en %X/%X" -#: access/transam/xlog.c:8607 +#: access/transam/xlog.c:8617 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "el enlace de punto de control primario en archivo de control no es válido" -#: access/transam/xlog.c:8611 +#: access/transam/xlog.c:8621 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "el enlace del punto de control en backup_label no es válido" -#: access/transam/xlog.c:8629 +#: access/transam/xlog.c:8639 #, c-format msgid "invalid primary checkpoint record" msgstr "el registro del punto de control primario no es válido" -#: access/transam/xlog.c:8633 +#: access/transam/xlog.c:8643 #, c-format msgid "invalid checkpoint record" msgstr "el registro del punto de control no es válido" -#: access/transam/xlog.c:8644 +#: access/transam/xlog.c:8654 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "el ID de gestor de recursos en el registro del punto de control primario no es válido" -#: access/transam/xlog.c:8648 +#: access/transam/xlog.c:8658 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "el ID de gestor de recursos en el registro del punto de control no es válido" -#: access/transam/xlog.c:8661 +#: access/transam/xlog.c:8671 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "xl_info en el registro del punto de control primario no es válido" -#: access/transam/xlog.c:8665 +#: access/transam/xlog.c:8675 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "xl_info en el registro del punto de control no es válido" -#: access/transam/xlog.c:8676 +#: access/transam/xlog.c:8686 #, c-format msgid "invalid length of primary checkpoint record" msgstr "la longitud del registro del punto de control primario no es válida" -#: access/transam/xlog.c:8680 +#: access/transam/xlog.c:8690 #, c-format msgid "invalid length of checkpoint record" msgstr "la longitud del registro de punto de control no es válida" -#: access/transam/xlog.c:8861 +#: access/transam/xlog.c:8871 #, c-format msgid "shutting down" msgstr "apagando" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8900 +#: access/transam/xlog.c:8910 #, c-format msgid "restartpoint starting:%s%s%s%s%s%s%s%s" msgstr "empezando restartpoint:%s%s%s%s%s%s%s%s" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8912 +#: access/transam/xlog.c:8922 #, c-format msgid "checkpoint starting:%s%s%s%s%s%s%s%s" msgstr "empezando checkpoint:%s%s%s%s%s%s%s%s" -#: access/transam/xlog.c:8972 +#: access/transam/xlog.c:8982 #, c-format msgid "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "restartpoint completado: se escribió %d buffers (%.1f%%); %d archivo(s) de WAL añadido(s), %d eliminado(s), %d reciclado(s); escritura=%ld.%03d s, sincronización=%ld.%03d s, total=%ld.%03d s; archivos sincronizados=%d, más largo=%ld.%03d s, promedio=%ld.%03d s; distancia=%d kB, estimado=%d kB" -#: access/transam/xlog.c:8992 +#: access/transam/xlog.c:9002 #, c-format msgid "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "checkpoint completado: se escribió %d buffers (%.1f%%); %d archivo(s) de WAL añadido(s), %d eliminado(s), %d reciclado(s); escritura=%ld.%03d s, sincronización=%ld.%03d s, total=%ld.%03d s; archivos sincronizados=%d, más largo=%ld.%03d s, promedio=%ld.%03d s; distancia=%d kB, estimado=%d kB" -#: access/transam/xlog.c:9453 +#: access/transam/xlog.c:9473 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "hay actividad de WAL mientras el sistema se está apagando" -#: access/transam/xlog.c:10012 +#: access/transam/xlog.c:10046 #, c-format msgid "recovery restart point at %X/%X" msgstr "restartpoint de recuperación en %X/%X" -#: access/transam/xlog.c:10014 +#: access/transam/xlog.c:10048 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Última transacción completada al tiempo de registro %s." -#: access/transam/xlog.c:10262 +#: access/transam/xlog.c:10296 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "punto de recuperación «%s» creado en %X/%X" -#: access/transam/xlog.c:10407 +#: access/transam/xlog.c:10441 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "ID de timeline previo %u inesperado (timeline actual %u) en el registro de punto de control" -#: access/transam/xlog.c:10416 +#: access/transam/xlog.c:10450 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "ID de timeline %u inesperado (después de %u) en el registro de punto de control" -#: access/transam/xlog.c:10432 +#: access/transam/xlog.c:10466 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "timeline ID %u inesperado en registro de checkpoint, antes de alcanzar el punto mínimo de recuperación %X/%X en el timeline %u" -#: access/transam/xlog.c:10507 +#: access/transam/xlog.c:10541 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "el respaldo en línea fue cancelado, la recuperación no puede continuar" -#: access/transam/xlog.c:10564 access/transam/xlog.c:10620 -#: access/transam/xlog.c:10650 +#: access/transam/xlog.c:10598 access/transam/xlog.c:10654 +#: access/transam/xlog.c:10684 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "ID de timeline %u inesperado (debería ser %u) en el registro de punto de control" -#: access/transam/xlog.c:10808 +#: access/transam/xlog.c:10842 #, c-format msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" msgstr "se omitió con éxito contrecord no encontrado en %X/%X, sobrescrito en %s" -#: access/transam/xlog.c:11023 +#: access/transam/xlog.c:11057 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "no se pudo sincronizar (fsync write-through) el archivo «%s»: %m" -#: access/transam/xlog.c:11029 +#: access/transam/xlog.c:11063 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "no se pudo sincronizar (fdatasync) archivo «%s»: %m" -#: access/transam/xlog.c:11140 access/transam/xlog.c:11677 +#: access/transam/xlog.c:11174 access/transam/xlog.c:11711 #: access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 #: access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 #: access/transam/xlogfuncs.c:383 @@ -2938,188 +2955,188 @@ msgstr "no se pudo sincronizar (fdatasync) archivo «%s»: %m" msgid "WAL control functions cannot be executed during recovery." msgstr "Las funciones de control de WAL no pueden ejecutarse durante la recuperación." -#: access/transam/xlog.c:11149 access/transam/xlog.c:11686 +#: access/transam/xlog.c:11183 access/transam/xlog.c:11720 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "el nivel de WAL no es suficiente para hacer un respaldo en línea" -#: access/transam/xlog.c:11150 access/transam/xlog.c:11687 +#: access/transam/xlog.c:11184 access/transam/xlog.c:11721 #: access/transam/xlogfuncs.c:308 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "wal_level debe ser definido a «replica» o «logical» al inicio del servidor." -#: access/transam/xlog.c:11155 +#: access/transam/xlog.c:11189 #, c-format msgid "backup label too long (max %d bytes)" msgstr "la etiqueta de respaldo es demasiado larga (máximo %d bytes)" -#: access/transam/xlog.c:11192 access/transam/xlog.c:11476 -#: access/transam/xlog.c:11514 +#: access/transam/xlog.c:11226 access/transam/xlog.c:11510 +#: access/transam/xlog.c:11548 #, c-format msgid "a backup is already in progress" msgstr "ya hay un respaldo en curso" -#: access/transam/xlog.c:11193 +#: access/transam/xlog.c:11227 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Ejecute pg_stop_backup() e intente nuevamente." -#: access/transam/xlog.c:11289 +#: access/transam/xlog.c:11323 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "el WAL generado con full_page_writes=off fue restaurado desde el último restartpoint" -#: access/transam/xlog.c:11291 access/transam/xlog.c:11882 +#: access/transam/xlog.c:11325 access/transam/xlog.c:11916 #, 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 primary, and then try an online backup again." msgstr "Esto significa que el respaldo que estaba siendo tomado en el standby está corrupto y no debería usarse. Active full_page_writes y ejecute CHECKPOINT en el primario, luego trate de ejecutar un respaldo en línea nuevamente." -#: access/transam/xlog.c:11375 replication/basebackup.c:1433 +#: access/transam/xlog.c:11409 replication/basebackup.c:1433 #: utils/adt/misc.c:367 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "la ruta «%s» del enlace simbólico es demasiado larga" -#: access/transam/xlog.c:11425 commands/tablespace.c:385 +#: access/transam/xlog.c:11459 commands/tablespace.c:385 #: commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 #, c-format msgid "tablespaces are not supported on this platform" msgstr "tablespaces no están soportados en esta plataforma" -#: access/transam/xlog.c:11477 access/transam/xlog.c:11515 +#: access/transam/xlog.c:11511 access/transam/xlog.c:11549 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Si está seguro que no hay un respaldo en curso, elimine el archivo «%s» e intente nuevamente." -#: access/transam/xlog.c:11702 +#: access/transam/xlog.c:11736 #, c-format msgid "exclusive backup not in progress" msgstr "no hay un respaldo exclusivo en curso" -#: access/transam/xlog.c:11729 +#: access/transam/xlog.c:11763 #, c-format msgid "a backup is not in progress" msgstr "no hay un respaldo en curso" -#: access/transam/xlog.c:11815 access/transam/xlog.c:11828 -#: access/transam/xlog.c:12219 access/transam/xlog.c:12225 -#: access/transam/xlog.c:12273 access/transam/xlog.c:12353 -#: access/transam/xlog.c:12377 access/transam/xlogfuncs.c:733 +#: access/transam/xlog.c:11849 access/transam/xlog.c:11862 +#: access/transam/xlog.c:12253 access/transam/xlog.c:12259 +#: access/transam/xlog.c:12307 access/transam/xlog.c:12387 +#: access/transam/xlog.c:12411 access/transam/xlogfuncs.c:733 #, c-format msgid "invalid data in file \"%s\"" msgstr "datos no válidos en archivo «%s»" -#: access/transam/xlog.c:11832 replication/basebackup.c:1287 +#: access/transam/xlog.c:11866 replication/basebackup.c:1287 #, c-format msgid "the standby was promoted during online backup" msgstr "el standby fue promovido durante el respaldo en línea" -#: access/transam/xlog.c:11833 replication/basebackup.c:1288 +#: access/transam/xlog.c:11867 replication/basebackup.c:1288 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Esto significa que el respaldo que se estaba tomando está corrupto y no debería ser usado. Trate de ejecutar un nuevo respaldo en línea." -#: access/transam/xlog.c:11880 +#: access/transam/xlog.c:11914 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "el WAL generado con full_page_writes=off fue restaurado durante el respaldo en línea" -#: access/transam/xlog.c:12000 +#: access/transam/xlog.c:12034 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "respaldo base completo, esperando que se archiven los segmentos WAL requeridos" -#: access/transam/xlog.c:12012 +#: access/transam/xlog.c:12046 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "todavía en espera de que todos los segmentos WAL requeridos sean archivados (han pasado %d segundos)" -#: access/transam/xlog.c:12014 +#: access/transam/xlog.c:12048 #, c-format msgid "Check that your archive_command is executing properly. You can safely cancel this backup, but the database backup will not be usable without all the WAL segments." msgstr "Verifique que su archive_command se esté ejecutando con normalidad. Puede cancelar este respaldo con confianza, pero el respaldo de la base de datos no será utilizable a menos que disponga de todos los segmentos de WAL." -#: access/transam/xlog.c:12021 +#: access/transam/xlog.c:12055 #, c-format msgid "all required WAL segments have been archived" msgstr "todos los segmentos de WAL requeridos han sido archivados" -#: access/transam/xlog.c:12025 +#: access/transam/xlog.c:12059 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "el archivado de WAL no está activo; debe asegurarse que todos los segmentos WAL requeridos se copian por algún otro mecanismo para completar el respaldo" -#: access/transam/xlog.c:12080 +#: access/transam/xlog.c:12114 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "abortando el backup porque el proceso servidor terminó antes de que pg_stop_backup fuera invocada" -#: access/transam/xlog.c:12274 +#: access/transam/xlog.c:12308 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "El ID de timeline interpretado es %u, pero se esperaba %u." #. translator: %s is a WAL record description -#: access/transam/xlog.c:12402 +#: access/transam/xlog.c:12436 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "redo WAL en %X/%X para %s" -#: access/transam/xlog.c:12450 +#: access/transam/xlog.c:12484 #, c-format msgid "online backup mode was not canceled" msgstr "el modo de respaldo en línea no fue cancelado" -#: access/transam/xlog.c:12451 +#: access/transam/xlog.c:12485 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "El archivo «%s» no se pudo renombrar a «%s»: %m." -#: access/transam/xlog.c:12460 access/transam/xlog.c:12472 -#: access/transam/xlog.c:12482 +#: access/transam/xlog.c:12494 access/transam/xlog.c:12506 +#: access/transam/xlog.c:12516 #, c-format msgid "online backup mode canceled" msgstr "el modo de respaldo en línea fue cancelado" -#: access/transam/xlog.c:12473 +#: access/transam/xlog.c:12507 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "Los archivos «%s» y «%s» fueron renombrados a «%s» y «%s», respectivamente." -#: access/transam/xlog.c:12483 +#: access/transam/xlog.c:12517 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "El archivo «%s» fue renombrado a «%s», pero el archivo «%s» no pudo ser renombrado a «%s»: %m." # XXX why talk about "log segment" instead of "file"? -#: access/transam/xlog.c:12616 access/transam/xlogutils.c:967 +#: access/transam/xlog.c:12650 access/transam/xlogutils.c:967 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "no se pudo leer del archivo de segmento %s, posición %u: %m" # XXX why talk about "log segment" instead of "file"? -#: access/transam/xlog.c:12622 access/transam/xlogutils.c:974 +#: access/transam/xlog.c:12656 access/transam/xlogutils.c:974 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "no se pudo leer del archivo de segmento %s, posición %u: leídos %d de %zu" -#: access/transam/xlog.c:13199 +#: access/transam/xlog.c:13233 #, c-format msgid "WAL receiver process shutdown requested" msgstr "se recibió una petición de apagado para el proceso receptor de wal" -#: access/transam/xlog.c:13311 +#: access/transam/xlog.c:13345 #, c-format msgid "received promote request" msgstr "se recibió petición de promoción" -#: access/transam/xlog.c:13324 +#: access/transam/xlog.c:13358 #, c-format msgid "promote trigger file found: %s" msgstr "se encontró el archivo disparador de promoción: %s" -#: access/transam/xlog.c:13332 +#: access/transam/xlog.c:13366 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "no se pudo hacer stat al archivo disparador de promoción «%s»: %m" @@ -3584,7 +3601,7 @@ msgstr "no existe el objeto grande %u" #: commands/functioncmds.c:772 commands/functioncmds.c:781 #: commands/functioncmds.c:790 commands/functioncmds.c:799 #: commands/functioncmds.c:2097 commands/functioncmds.c:2105 -#: commands/publicationcmds.c:87 commands/publicationcmds.c:130 +#: commands/publicationcmds.c:87 commands/publicationcmds.c:135 #: 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/sequence.c:1354 @@ -3605,8 +3622,8 @@ msgstr "no existe el objeto grande %u" #: commands/user.c:638 commands/user.c:647 commands/user.c:655 #: commands/user.c:663 parser/parse_utilcmd.c:402 #: replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 -#: replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 -#: replication/pgoutput/pgoutput.c:254 replication/walsender.c:897 +#: replication/pgoutput/pgoutput.c:238 replication/pgoutput/pgoutput.c:248 +#: replication/pgoutput/pgoutput.c:258 replication/walsender.c:897 #: replication/walsender.c:908 replication/walsender.c:918 #, c-format msgid "conflicting or redundant options" @@ -4129,7 +4146,7 @@ msgstr "no existe la conversión con OID %u" msgid "extension with OID %u does not exist" msgstr "no existe la extensión con OID %u" -#: catalog/aclchk.c:5379 commands/publicationcmds.c:818 +#: catalog/aclchk.c:5379 commands/publicationcmds.c:823 #, c-format msgid "publication with OID %u does not exist" msgstr "no existe la publicación con OID %u" @@ -4407,14 +4424,14 @@ msgstr "Esto causaría que la columna generada dependa de su propio valor." msgid "generation expression is not immutable" msgstr "la expresión de generación no es inmutable" -#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1285 +#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1288 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "la columna «%s» es de tipo %s pero la expresión default es de tipo %s" #: catalog/heap.c:3202 commands/prepare.c:368 parser/analyze.c:2695 #: parser/parse_target.c:594 parser/parse_target.c:891 -#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1290 +#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1293 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Necesitará reescribir la expresión o aplicarle una conversión de tipo." @@ -4505,28 +4522,28 @@ msgstr "el valor de OID de índice de pg_class no se definió en modo de actuali msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY debe ser la primera acción en una transacción" -#: catalog/index.c:3653 +#: catalog/index.c:3660 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "no se puede hacer reindex de tablas temporales de otras sesiones" -#: catalog/index.c:3664 commands/indexcmds.c:3589 +#: catalog/index.c:3671 commands/indexcmds.c:3589 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "no es posible reindexar un índice no válido en tabla TOAST" -#: catalog/index.c:3680 commands/indexcmds.c:3469 commands/indexcmds.c:3613 +#: catalog/index.c:3687 commands/indexcmds.c:3469 commands/indexcmds.c:3613 #: commands/tablecmds.c:3282 #, c-format msgid "cannot move system relation \"%s\"" msgstr "no se puede mover la relación de sistema «%s»" -#: catalog/index.c:3824 +#: catalog/index.c:3831 #, c-format msgid "index \"%s\" was reindexed" msgstr "el índice «%s» fue reindexado" -#: catalog/index.c:3961 +#: catalog/index.c:3968 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "no se puede reindexar el índice no válido «%s.%s» en tabla TOAST, omitiendo" @@ -5593,8 +5610,8 @@ msgstr "Las tablas temporales o «unlogged» no pueden replicarse." msgid "relation \"%s\" is already member of publication \"%s\"" msgstr "la relación «%s» ya es un miembro de la publicación «%s»" -#: catalog/pg_publication.c:533 commands/publicationcmds.c:458 -#: commands/publicationcmds.c:786 +#: catalog/pg_publication.c:533 commands/publicationcmds.c:463 +#: commands/publicationcmds.c:791 #, c-format msgid "publication \"%s\" does not exist" msgstr "no existe la publicación «%s»" @@ -5737,7 +5754,7 @@ msgstr "Falla al crear un tipo de multirango para el tipo «%s»." msgid "You can manually specify a multirange type name using the \"multirange_type_name\" attribute." msgstr "Puede especificar manualmente un nombre para el tipo de multirango usando el atributo «multirange_type_name»." -#: catalog/storage.c:523 storage/buffer/bufmgr.c:1039 +#: catalog/storage.c:523 storage/buffer/bufmgr.c:1046 #, c-format msgid "invalid page in block %u of relation %s" msgstr "la página no es válida en el bloque %u de la relación %s" @@ -5858,7 +5875,7 @@ msgstr "el servidor «%s» ya existe" msgid "language \"%s\" already exists" msgstr "ya existe el lenguaje «%s»" -#: commands/alter.c:97 commands/publicationcmds.c:180 +#: commands/alter.c:97 commands/publicationcmds.c:185 #, c-format msgid "publication \"%s\" already exists" msgstr "la publicación «%s» ya existe" @@ -5986,27 +6003,27 @@ msgstr "omitiendo el análisis del árbol de herencia «%s.%s» --- este árbol msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "omitiendo el análisis del árbol de herencia «%s.%s» --- este árbol no contiene tablas hijas analizables" -#: commands/async.c:646 +#: commands/async.c:645 #, c-format msgid "channel name cannot be empty" msgstr "el nombre de canal no puede ser vacío" -#: commands/async.c:652 +#: commands/async.c:651 #, c-format msgid "channel name too long" msgstr "el nombre de canal es demasiado largo" -#: commands/async.c:657 +#: commands/async.c:656 #, c-format msgid "payload string too long" msgstr "la cadena de carga es demasiado larga" -#: commands/async.c:876 +#: commands/async.c:875 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "no se puede hacer PREPARE de una transacción que ha ejecutado LISTEN, UNLISTEN o NOTIFY" -#: commands/async.c:980 +#: commands/async.c:979 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "demasiadas notificaciones en la cola NOTIFY" @@ -6267,7 +6284,7 @@ msgstr "no se permiten columnas generadas en las condiciones WHERE de COPY FROM" #: commands/copy.c:176 commands/tablecmds.c:11928 commands/tablecmds.c:17048 #: commands/tablecmds.c:17127 commands/trigger.c:653 -#: rewrite/rewriteHandler.c:936 rewrite/rewriteHandler.c:971 +#: rewrite/rewriteHandler.c:939 rewrite/rewriteHandler.c:974 #, c-format msgid "Column \"%s\" is a generated column." msgstr "La columna «%s» es una columna generada." @@ -6413,7 +6430,7 @@ msgstr "la columna «%s» es una columna generada" msgid "Generated columns cannot be used in COPY." msgstr "Las columnas generadas no pueden usarse en COPY." -#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:245 +#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:265 #: commands/tablecmds.c:2344 commands/tablecmds.c:3000 #: commands/tablecmds.c:3508 parser/parse_relation.c:3651 #: parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 @@ -6502,7 +6519,7 @@ msgstr "la columna FORCE_NOT_NULL «%s» no es referenciada en COPY" msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "la columna FORCE_NULL «%s» no es referenciada en COPY" -#: commands/copyfrom.c:1343 utils/mb/mbutils.c:385 +#: commands/copyfrom.c:1343 utils/mb/mbutils.c:386 #, c-format msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "no existe el procedimiento por omisión de conversión desde la codificación «%s» a «%s»" @@ -7133,7 +7150,7 @@ msgstr "no existe el ordenamiento (collation) «%s», omitiendo" msgid "conversion \"%s\" does not exist, skipping" msgstr "no existe la conversión «%s», omitiendo" -#: commands/dropcmds.c:293 commands/statscmds.c:674 +#: commands/dropcmds.c:293 commands/statscmds.c:694 #, c-format msgid "statistics object \"%s\" does not exist, skipping" msgstr "no existe el objeto de estadísticas «%s», omitiendo" @@ -8650,7 +8667,7 @@ msgstr "la función de estimación de join %s debe retornar tipo %s" msgid "operator attribute \"%s\" cannot be changed" msgstr "el atributo de operador «%s» no puede ser cambiado" -#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:151 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:157 #: commands/tablecmds.c:1582 commands/tablecmds.c:2162 #: commands/tablecmds.c:3402 commands/tablecmds.c:6112 #: commands/tablecmds.c:9081 commands/tablecmds.c:16793 @@ -8762,57 +8779,57 @@ msgstr "no existe la sentencia preparada «%s»" msgid "must be superuser to create custom procedural language" msgstr "debe ser superusuario para crear un lenguaje procedural personalizado" -#: commands/publicationcmds.c:104 +#: commands/publicationcmds.c:109 #, c-format msgid "invalid list syntax for \"publish\" option" msgstr "sintaxis de entrada no válida para la opción «publish»" -#: commands/publicationcmds.c:122 +#: commands/publicationcmds.c:127 #, c-format msgid "unrecognized \"publish\" value: \"%s\"" msgstr "valor de «publish» no reconocido: «%s»" -#: commands/publicationcmds.c:137 +#: commands/publicationcmds.c:142 #, c-format msgid "unrecognized publication parameter: \"%s\"" msgstr "parámetro de publicación no reconocido: «%s»" -#: commands/publicationcmds.c:169 +#: commands/publicationcmds.c:174 #, c-format msgid "must be superuser to create FOR ALL TABLES publication" msgstr "debe ser superusuario para crear publicaciones FOR ALL TABLES" -#: commands/publicationcmds.c:250 +#: commands/publicationcmds.c:255 #, c-format msgid "wal_level is insufficient to publish logical changes" msgstr "wal_level es insuficiente para publicar cambios lógicos" -#: commands/publicationcmds.c:251 +#: commands/publicationcmds.c:256 #, c-format msgid "Set wal_level to logical before creating subscriptions." msgstr "Cambie wal_level a logical antes de crear suscripciones." -#: commands/publicationcmds.c:376 +#: commands/publicationcmds.c:381 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "la publicación \"%s\" se define como FOR ALL TABLES" -#: commands/publicationcmds.c:378 +#: commands/publicationcmds.c:383 #, c-format msgid "Tables cannot be added to or dropped from FOR ALL TABLES publications." msgstr "Las tablas no se pueden agregar ni eliminar de las publicaciones FOR ALL TABLES." -#: commands/publicationcmds.c:707 +#: commands/publicationcmds.c:712 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "relación «%s» no es parte de la publicación" -#: commands/publicationcmds.c:750 +#: commands/publicationcmds.c:755 #, c-format msgid "permission denied to change owner of publication \"%s\"" msgstr "se ha denegado el permiso para cambiar el dueño de la publicación «%s»" -#: commands/publicationcmds.c:752 +#: commands/publicationcmds.c:757 #, c-format msgid "The owner of a FOR ALL TABLES publication must be a superuser." msgstr "El dueño de una publicación FOR ALL TABLES debe ser un superusuario." @@ -8988,72 +9005,72 @@ msgstr "sólo se permite una relación en CREATE STATISTICS" msgid "relation \"%s\" is not a table, foreign table, or materialized view" msgstr "la relación «%s» no es una tabla, tabla foránea o vista materializada" -#: commands/statscmds.c:193 +#: commands/statscmds.c:213 #, c-format msgid "statistics object \"%s\" already exists, skipping" msgstr "el objeto de estadísticas «%s» ya existe, omitiendo" -#: commands/statscmds.c:201 +#: commands/statscmds.c:221 #, c-format msgid "statistics object \"%s\" already exists" msgstr "el objeto de estadísticas «%s» ya existe" -#: commands/statscmds.c:212 +#: commands/statscmds.c:232 #, c-format msgid "cannot have more than %d columns in statistics" msgstr "no se puede tener más de %d columnas en estadísticas" -#: commands/statscmds.c:253 commands/statscmds.c:276 commands/statscmds.c:309 +#: commands/statscmds.c:273 commands/statscmds.c:296 commands/statscmds.c:329 #, c-format msgid "statistics creation on system columns is not supported" msgstr "la creación de estadísticas en columnas de sistema no está soportada" -#: commands/statscmds.c:260 commands/statscmds.c:283 +#: commands/statscmds.c:280 commands/statscmds.c:303 #, c-format msgid "column \"%s\" cannot be used in statistics because its type %s has no default btree operator class" msgstr "la columna «%s» no puede ser usado en estadísticas porque su tipo %s no tiene una clase de operadores por omisión para btree" -#: commands/statscmds.c:326 +#: commands/statscmds.c:346 #, c-format msgid "expression cannot be used in multivariate statistics because its type %s has no default btree operator class" msgstr "la expresión no puede ser usada en estadísticas multivariantes porque su tipo %s no tiene una clase de operadores por omisión para btree" -#: commands/statscmds.c:347 +#: commands/statscmds.c:367 #, c-format msgid "when building statistics on a single expression, statistics kinds may not be specified" msgstr "al crear estadísticas sobre una sola expresión, no se deben especificar tipos de estadísticas" -#: commands/statscmds.c:376 +#: commands/statscmds.c:396 #, c-format msgid "unrecognized statistics kind \"%s\"" msgstr "tipo de estadísticas «%s» no reconocido" -#: commands/statscmds.c:405 +#: commands/statscmds.c:425 #, c-format msgid "extended statistics require at least 2 columns" msgstr "las estadísticas extendidas requieren al menos 2 columnas" -#: commands/statscmds.c:423 +#: commands/statscmds.c:443 #, c-format msgid "duplicate column name in statistics definition" msgstr "nombre de columna duplicado en definición de estadísticas" -#: commands/statscmds.c:458 +#: commands/statscmds.c:478 #, c-format msgid "duplicate expression in statistics definition" msgstr "expresión duplicada en definición de estadísticas" -#: commands/statscmds.c:639 commands/tablecmds.c:8047 +#: commands/statscmds.c:659 commands/tablecmds.c:8047 #, c-format msgid "statistics target %d is too low" msgstr "el valor de estadísticas %d es demasiado bajo" -#: commands/statscmds.c:647 commands/tablecmds.c:8055 +#: commands/statscmds.c:667 commands/tablecmds.c:8055 #, c-format msgid "lowering statistics target to %d" msgstr "bajando el valor de estadísticas a %d" -#: commands/statscmds.c:670 +#: commands/statscmds.c:690 #, c-format msgid "statistics object \"%s.%s\" does not exist, skipping" msgstr "no existe el objeto de estadísticas «%s.%s», omitiendo" @@ -10659,7 +10676,7 @@ msgid "invalid compression method \"%s\"" msgstr "método de compresión «%s» no válido" #: commands/tablespace.c:161 commands/tablespace.c:177 -#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1507 +#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1538 #: storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" @@ -11032,7 +11049,7 @@ msgid "could not serialize access due to concurrent update" msgstr "no se pudo serializar el acceso debido a un update concurrente" #: commands/trigger.c:3190 executor/nodeModifyTable.c:1440 -#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2276 +#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2268 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "no se pudo serializar el acceso debido a un delete concurrente" @@ -11691,107 +11708,107 @@ msgstr "el rol «%s» ya es un miembro del rol «%s»" msgid "role \"%s\" is not a member of role \"%s\"" msgstr "el rol «%s» no es un miembro del rol «%s»" -#: commands/vacuum.c:133 +#: commands/vacuum.c:134 #, c-format msgid "unrecognized ANALYZE option \"%s\"" msgstr "opción de ANALYZE «%s» no reconocida" -#: commands/vacuum.c:171 +#: commands/vacuum.c:172 #, c-format msgid "parallel option requires a value between 0 and %d" msgstr "la opción parallel requiere un valor entre 0 y %d" -#: commands/vacuum.c:183 +#: commands/vacuum.c:184 #, c-format msgid "parallel workers for vacuum must be between 0 and %d" msgstr "el número de procesos paralelos para vacuum debe estar entre 0 y %d" -#: commands/vacuum.c:200 +#: commands/vacuum.c:201 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "opción de VACUUM «%s» no reconocida" -#: commands/vacuum.c:223 +#: commands/vacuum.c:224 #, c-format msgid "VACUUM FULL cannot be performed in parallel" msgstr "VACUUM FULL no puede ser ejecutado en paralelo" -#: commands/vacuum.c:239 +#: commands/vacuum.c:240 #, c-format msgid "ANALYZE option must be specified when a column list is provided" msgstr "la opción ANALYZE debe especificarse cuando se provee una lista de columnas" -#: commands/vacuum.c:329 +#: commands/vacuum.c:330 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%s no puede ejecutarse desde VACUUM o ANALYZE" -#: commands/vacuum.c:339 +#: commands/vacuum.c:340 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "la opción DISABLE_PAGE_SKIPPING de VACUUM no puede usarse con FULL" -#: commands/vacuum.c:346 +#: commands/vacuum.c:347 #, c-format msgid "PROCESS_TOAST required with VACUUM FULL" msgstr "se requiere especificar PROCESS_TOAST al hacer VACUUM FULL" -#: commands/vacuum.c:596 +#: commands/vacuum.c:597 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "omitiendo «%s»: sólo un superusuario puede aplicarle VACUUM" -#: commands/vacuum.c:600 +#: commands/vacuum.c:601 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "omitiendo «%s»: sólo un superusuario o el dueño de la base de datos puede aplicarle VACUUM" -#: commands/vacuum.c:604 +#: commands/vacuum.c:605 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "omitiendo «%s»: sólo su dueño o el de la base de datos puede aplicarle VACUUM" -#: commands/vacuum.c:619 +#: commands/vacuum.c:620 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" msgstr "omitiendo «%s»: sólo un superusuario puede analizarla" -#: commands/vacuum.c:623 +#: commands/vacuum.c:624 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "omitiendo «%s»: sólo un superusuario o el dueño de la base de datos puede analizarla" -#: commands/vacuum.c:627 +#: commands/vacuum.c:628 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "omitiendo «%s»: sólo su dueño o el de la base de datos puede analizarla" -#: commands/vacuum.c:706 commands/vacuum.c:802 +#: commands/vacuum.c:707 commands/vacuum.c:803 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "omitiendo el vacuum de «%s»: el candado no está disponible" -#: commands/vacuum.c:711 +#: commands/vacuum.c:712 #, c-format msgid "skipping vacuum of \"%s\" --- relation no longer exists" msgstr "omitiendo el vacuum de «%s» --- la relación ya no existe" -#: commands/vacuum.c:727 commands/vacuum.c:807 +#: commands/vacuum.c:728 commands/vacuum.c:808 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" msgstr "omitiendo analyze de «%s»: el candado no está disponible" -#: commands/vacuum.c:732 +#: commands/vacuum.c:733 #, c-format msgid "skipping analyze of \"%s\" --- relation no longer exists" msgstr "omitiendo analyze de «%s» --- la relación ya no existe" -#: commands/vacuum.c:1050 +#: commands/vacuum.c:1051 #, c-format msgid "oldest xmin is far in the past" msgstr "xmin más antiguo es demasiado antiguo" -#: commands/vacuum.c:1051 +#: commands/vacuum.c:1052 #, c-format msgid "" "Close open transactions soon to avoid wraparound problems.\n" @@ -11800,27 +11817,27 @@ msgstr "" "Cierre transaciones abiertas pronto para impedir problemas por reciclaje de contadores.\n" "Puede que además necesite comprometer o abortar transacciones preparadas antiguas, o eliminar slots de replicación añejos." -#: commands/vacuum.c:1092 +#: commands/vacuum.c:1093 #, c-format msgid "oldest multixact is far in the past" msgstr "multixact más antiguo es demasiado antiguo" -#: commands/vacuum.c:1093 +#: commands/vacuum.c:1094 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "Cierre transacciones con multixact pronto para prevenir problemas por reciclaje del contador." -#: commands/vacuum.c:1778 +#: commands/vacuum.c:1779 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "algunas bases de datos no han tenido VACUUM en más de 2 mil millones de transacciones" -#: commands/vacuum.c:1779 +#: commands/vacuum.c:1780 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "Puede haber sufrido ya problemas de pérdida de datos por reciclaje del contador de transacciones." -#: commands/vacuum.c:1954 +#: commands/vacuum.c:1961 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "omitiendo «%s»: no se puede aplicar VACUUM a objetos que no son tablas o a tablas especiales de sistema" @@ -12057,7 +12074,7 @@ msgstr "La consulta entrega un valor para una columna eliminada en la posición msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "La tabla tiene tipo %s en posición ordinal %d, pero la consulta esperaba %s." -#: executor/execExpr.c:1098 parser/parse_agg.c:854 +#: executor/execExpr.c:1098 parser/parse_agg.c:881 #, c-format msgid "window function calls cannot be nested" msgstr "no se pueden anidar llamadas a funciones de ventana deslizante" @@ -12228,38 +12245,38 @@ msgstr "no se puede cambiar la secuencia «%s»" msgid "cannot change TOAST relation \"%s\"" msgstr "no se puede cambiar la relación TOAST «%s»" -#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3145 -#: rewrite/rewriteHandler.c:3990 +#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:4010 #, c-format msgid "cannot insert into view \"%s\"" msgstr "no se puede insertar en la vista «%s»" -#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3148 -#: rewrite/rewriteHandler.c:3993 +#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3151 +#: rewrite/rewriteHandler.c:4013 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "Para posibilitar las inserciones en la vista, provea un disparador INSTEAD OF INSERT o una regla incodicional ON INSERT DO INSTEAD." -#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3153 -#: rewrite/rewriteHandler.c:3998 +#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3156 +#: rewrite/rewriteHandler.c:4018 #, c-format msgid "cannot update view \"%s\"" msgstr "no se puede actualizar la vista «%s»" -#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3156 -#: rewrite/rewriteHandler.c:4001 +#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3159 +#: rewrite/rewriteHandler.c:4021 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "Para posibilitar las actualizaciones en la vista, provea un disparador INSTEAD OF UPDATE o una regla incondicional ON UPDATE DO INSTEAD." -#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3161 -#: rewrite/rewriteHandler.c:4006 +#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3164 +#: rewrite/rewriteHandler.c:4026 #, c-format msgid "cannot delete from view \"%s\"" msgstr "no se puede eliminar de la vista «%s»" -#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3164 -#: rewrite/rewriteHandler.c:4009 +#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3167 +#: rewrite/rewriteHandler.c:4029 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "Para posibilitar las eliminaciones en la vista, provea un disparador INSTEAD OF DELETE o una regla incondicional ON DELETE DO INSTEAD." @@ -12592,7 +12609,7 @@ msgstr "el tipo de retorno %s no es soportado en funciones SQL" msgid "unexpected EOF for tape %d: requested %zu bytes, read %zu bytes" msgstr "EOF inesperado para la cinta %d: se requerían %zu bytes, se leyeron %zu bytes" -#: executor/nodeAgg.c:3979 parser/parse_agg.c:670 parser/parse_agg.c:698 +#: executor/nodeAgg.c:3979 parser/parse_agg.c:677 parser/parse_agg.c:720 #, c-format msgid "aggregate function calls cannot be nested" msgstr "no se pueden anidar llamadas a funciones de agregación" @@ -15174,319 +15191,329 @@ msgstr "%s no puede ser aplicado a un «tuplestore» con nombre" msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "la relación «%s» en la cláusula %s no fue encontrada en la cláusula FROM" -#: parser/parse_agg.c:208 parser/parse_oper.c:227 +#: parser/parse_agg.c:211 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "no se pudo identificar un operador de ordenamiento para el tipo %s" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:213 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Las funciones de agregación con DISTINCT deben ser capaces de ordenar sus valores de entrada." -#: parser/parse_agg.c:268 +#: parser/parse_agg.c:271 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING debe tener menos de 32 argumentos" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:375 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "no se permiten funciones de agregación en las condiciones de JOIN" -#: parser/parse_agg.c:373 +#: parser/parse_agg.c:377 msgid "grouping operations are not allowed in JOIN conditions" msgstr "no se permiten las operaciones «grouping» en condiciones JOIN" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:387 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "las funciones de agregación no están permitidas en la cláusula FROM de su mismo nivel de consulta" -#: parser/parse_agg.c:385 +#: parser/parse_agg.c:389 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "las operaciones «grouping» no están permitidas en la cláusula FROM de su mismo nivel de consulta" -#: parser/parse_agg.c:390 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in functions in FROM" msgstr "no se permiten funciones de agregación en una función en FROM" -#: parser/parse_agg.c:392 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in functions in FROM" msgstr "no se permiten operaciones «grouping» en funciones en FROM" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:404 msgid "aggregate functions are not allowed in policy expressions" msgstr "no se permiten funciones de agregación en expresiones de políticas" -#: parser/parse_agg.c:402 +#: parser/parse_agg.c:406 msgid "grouping operations are not allowed in policy expressions" msgstr "no se permiten operaciones «grouping» en expresiones de políticas" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:423 msgid "aggregate functions are not allowed in window RANGE" msgstr "no se permiten funciones de agregación en RANGE de ventana deslizante" -#: parser/parse_agg.c:421 +#: parser/parse_agg.c:425 msgid "grouping operations are not allowed in window RANGE" msgstr "no se permiten operaciones «grouping» en RANGE de ventana deslizante" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:430 msgid "aggregate functions are not allowed in window ROWS" msgstr "no se permiten funciones de agregación en ROWS de ventana deslizante" -#: parser/parse_agg.c:428 +#: parser/parse_agg.c:432 msgid "grouping operations are not allowed in window ROWS" msgstr "no se permiten operaciones «grouping» en ROWS de ventana deslizante" -#: parser/parse_agg.c:433 +#: parser/parse_agg.c:437 msgid "aggregate functions are not allowed in window GROUPS" msgstr "no se permiten funciones de agregación en GROUPS de ventana deslizante" -#: parser/parse_agg.c:435 +#: parser/parse_agg.c:439 msgid "grouping operations are not allowed in window GROUPS" msgstr "no se permiten operaciones «grouping» en GROUPS de ventana deslizante" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:473 msgid "aggregate functions are not allowed in check constraints" msgstr "no se permiten funciones de agregación en restricciones «check»" -#: parser/parse_agg.c:471 +#: parser/parse_agg.c:475 msgid "grouping operations are not allowed in check constraints" msgstr "no se permiten operaciones «grouping» en restricciones «check»" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:482 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "no se permiten funciones de agregación en expresiones DEFAULT" -#: parser/parse_agg.c:480 +#: parser/parse_agg.c:484 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "no se permiten operaciones «grouping» en expresiones DEFAULT" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:489 msgid "aggregate functions are not allowed in index expressions" msgstr "no se permiten funciones de agregación en una expresión de índice" -#: parser/parse_agg.c:487 +#: parser/parse_agg.c:491 msgid "grouping operations are not allowed in index expressions" msgstr "no se permiten operaciones «grouping» en expresiones de índice" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:496 msgid "aggregate functions are not allowed in index predicates" msgstr "no se permiten funciones de agregación en predicados de índice" -#: parser/parse_agg.c:494 +#: parser/parse_agg.c:498 msgid "grouping operations are not allowed in index predicates" msgstr "no se permiten operaciones «grouping» en predicados de índice" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:503 msgid "aggregate functions are not allowed in statistics expressions" msgstr "no se permiten funciones de agregación en expresiones de estadísticas" -#: parser/parse_agg.c:501 +#: parser/parse_agg.c:505 msgid "grouping operations are not allowed in statistics expressions" msgstr "no se permiten operaciones «grouping» en expresiones de estadísticas" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:510 msgid "aggregate functions are not allowed in transform expressions" msgstr "no se permiten funciones de agregación en una expresión de transformación" -#: parser/parse_agg.c:508 +#: parser/parse_agg.c:512 msgid "grouping operations are not allowed in transform expressions" msgstr "no se permiten operaciones «grouping» en expresiones de transformación" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:517 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "no se permiten funciones de agregación en un parámetro a EXECUTE" -#: parser/parse_agg.c:515 +#: parser/parse_agg.c:519 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "no se permiten operaciones «grouping» en parámetros a EXECUTE" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:524 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "no se permiten funciones de agregación en condición WHEN de un disparador" -#: parser/parse_agg.c:522 +#: parser/parse_agg.c:526 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "no se permiten operaciones «grouping» en condiciones WHEN de un disparador" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:531 msgid "aggregate functions are not allowed in partition bound" msgstr "no se permiten funciones de agregación en borde de partición" -#: parser/parse_agg.c:529 +#: parser/parse_agg.c:533 msgid "grouping operations are not allowed in partition bound" msgstr "no se permiten operaciones «grouping» en borde de partición" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:538 msgid "aggregate functions are not allowed in partition key expressions" msgstr "no se permiten funciones de agregación en una expresión de llave de particionaiento" -#: parser/parse_agg.c:536 +#: parser/parse_agg.c:540 msgid "grouping operations are not allowed in partition key expressions" msgstr "no se permiten operaciones «grouping» en expresiones de llave de particionamiento" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:546 msgid "aggregate functions are not allowed in column generation expressions" msgstr "no se permiten funciones de agregación en expresiones de generación de columna" -#: parser/parse_agg.c:544 +#: parser/parse_agg.c:548 msgid "grouping operations are not allowed in column generation expressions" msgstr "no se permiten operaciones «grouping» en expresiones de generación de columna" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:554 msgid "aggregate functions are not allowed in CALL arguments" msgstr "no se permiten funciones de agregación en argumentos de CALL" -#: parser/parse_agg.c:552 +#: parser/parse_agg.c:556 msgid "grouping operations are not allowed in CALL arguments" msgstr "no se permiten operaciones «grouping» en argumentos de CALL" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:562 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "no se permiten funciones de agregación en las condiciones WHERE de COPY FROM" -#: parser/parse_agg.c:560 +#: parser/parse_agg.c:564 msgid "grouping operations are not allowed in COPY FROM WHERE conditions" msgstr "no se permiten las operaciones «grouping» en condiciones WHERE de COPY FROM" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:587 parser/parse_clause.c:1834 +#: parser/parse_agg.c:591 parser/parse_clause.c:1834 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "no se permiten funciones de agregación en %s" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:590 +#: parser/parse_agg.c:594 #, c-format msgid "grouping operations are not allowed in %s" msgstr "no se permiten operaciones «grouping» en %s" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:690 parser/parse_agg.c:727 +#, c-format +msgid "outer-level aggregate cannot use a nested CTE" +msgstr "una función de agregación de nivel externo no puede usar un CTE anidado" + +#: parser/parse_agg.c:691 parser/parse_agg.c:728 +#, c-format +msgid "CTE \"%s\" is below the aggregate's semantic level." +msgstr "El CTE «%s» está debajo del nivel semántico de la función de agregación." + +#: parser/parse_agg.c:713 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "una función de agregación de nivel exterior no puede contener una variable de nivel inferior en sus argumentos directos" -#: parser/parse_agg.c:769 +#: parser/parse_agg.c:798 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "las llamadas a funciones de agregación no pueden contener llamadas a funciones que retornan conjuntos" -#: parser/parse_agg.c:770 parser/parse_expr.c:1678 parser/parse_expr.c:2167 +#: parser/parse_agg.c:799 parser/parse_expr.c:1678 parser/parse_expr.c:2167 #: parser/parse_func.c:883 #, c-format msgid "You might be able to move the set-returning function into a LATERAL FROM item." msgstr "Puede intentar mover la función que retorna conjuntos a un elemento LATERAL FROM." -#: parser/parse_agg.c:775 +#: parser/parse_agg.c:804 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "las llamadas a funciones de agregación no pueden contener llamadas a funciones de ventana deslizante" -#: parser/parse_agg.c:880 +#: parser/parse_agg.c:907 msgid "window functions are not allowed in JOIN conditions" msgstr "no se permiten funciones de ventana deslizante en condiciones JOIN" -#: parser/parse_agg.c:887 +#: parser/parse_agg.c:914 msgid "window functions are not allowed in functions in FROM" msgstr "no se permiten funciones de ventana deslizante en funciones en FROM" -#: parser/parse_agg.c:893 +#: parser/parse_agg.c:920 msgid "window functions are not allowed in policy expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones de políticas" -#: parser/parse_agg.c:906 +#: parser/parse_agg.c:933 msgid "window functions are not allowed in window definitions" msgstr "no se permiten funciones de ventana deslizante en definiciones de ventana deslizante" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:965 msgid "window functions are not allowed in check constraints" msgstr "no se permiten funciones de ventana deslizante en restricciones «check»" -#: parser/parse_agg.c:942 +#: parser/parse_agg.c:969 msgid "window functions are not allowed in DEFAULT expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones DEFAULT" -#: parser/parse_agg.c:945 +#: parser/parse_agg.c:972 msgid "window functions are not allowed in index expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones de índice" -#: parser/parse_agg.c:948 +#: parser/parse_agg.c:975 msgid "window functions are not allowed in statistics expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones de estadísticas" -#: parser/parse_agg.c:951 +#: parser/parse_agg.c:978 msgid "window functions are not allowed in index predicates" msgstr "no se permiten funciones de ventana deslizante en predicados de índice" -#: parser/parse_agg.c:954 +#: parser/parse_agg.c:981 msgid "window functions are not allowed in transform expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones de transformación" -#: parser/parse_agg.c:957 +#: parser/parse_agg.c:984 msgid "window functions are not allowed in EXECUTE parameters" msgstr "no se permiten funciones de ventana deslizante en parámetros a EXECUTE" -#: parser/parse_agg.c:960 +#: parser/parse_agg.c:987 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "no se permiten funciones de ventana deslizante en condiciones WHEN de un disparador" -#: parser/parse_agg.c:963 +#: parser/parse_agg.c:990 msgid "window functions are not allowed in partition bound" msgstr "no se permiten funciones de ventana deslizante en borde de partición" -#: parser/parse_agg.c:966 +#: parser/parse_agg.c:993 msgid "window functions are not allowed in partition key expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones de llave de particionamiento" -#: parser/parse_agg.c:969 +#: parser/parse_agg.c:996 msgid "window functions are not allowed in CALL arguments" msgstr "no se permiten funciones de ventana deslizante en argumentos de CALL" -#: parser/parse_agg.c:972 +#: parser/parse_agg.c:999 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "no se permiten funciones de ventana deslizante en las condiciones WHERE de COPY FROM" -#: parser/parse_agg.c:975 +#: parser/parse_agg.c:1002 msgid "window functions are not allowed in column generation expressions" msgstr "no se permiten funciones de ventana deslizante en expresiones de generación de columna" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:998 parser/parse_clause.c:1843 +#: parser/parse_agg.c:1025 parser/parse_clause.c:1843 #, c-format msgid "window functions are not allowed in %s" msgstr "no se permiten funciones de ventana deslizante en %s" -#: parser/parse_agg.c:1032 parser/parse_clause.c:2677 +#: parser/parse_agg.c:1059 parser/parse_clause.c:2677 #, c-format msgid "window \"%s\" does not exist" msgstr "la ventana «%s» no existe" -#: parser/parse_agg.c:1116 +#: parser/parse_agg.c:1143 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "demasiados conjuntos «grouping» presentes (máximo 4096)" -#: parser/parse_agg.c:1256 +#: parser/parse_agg.c:1283 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "no se permiten funciones de agregación en el término recursivo de una consulta recursiva" -#: parser/parse_agg.c:1449 +#: parser/parse_agg.c:1476 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" msgstr "la columna «%s.%s» debe aparecer en la cláusula GROUP BY o ser usada en una función de agregación" -#: parser/parse_agg.c:1452 +#: parser/parse_agg.c:1479 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Argumentos directos de una función de agregación de conjuntos ordenados debe usar sólo columnas agrupadas." -#: parser/parse_agg.c:1457 +#: parser/parse_agg.c:1484 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "la subconsulta usa la columna «%s.%s» no agrupada de una consulta exterior" -#: parser/parse_agg.c:1621 +#: parser/parse_agg.c:1648 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "los argumentos de GROUPING deben ser expresiones agrupantes del nivel de consulta asociado" @@ -17270,22 +17297,22 @@ msgstr "FROM debe especificar exactamente un valor por cada columna de particion msgid "TO must specify exactly one value per partitioning column" msgstr "TO debe especificar exactamente un valor por cada columna de particionado" -#: parser/parse_utilcmd.c:4240 +#: parser/parse_utilcmd.c:4242 #, c-format msgid "cannot specify NULL in range bound" msgstr "no se puede especificar NULL en borde de rango" -#: parser/parse_utilcmd.c:4289 +#: parser/parse_utilcmd.c:4290 #, c-format msgid "every bound following MAXVALUE must also be MAXVALUE" msgstr "cada borde que sigue a un MAXVALUE debe ser también MAXVALUE" -#: parser/parse_utilcmd.c:4296 +#: parser/parse_utilcmd.c:4297 #, c-format msgid "every bound following MINVALUE must also be MINVALUE" msgstr "cada borde que siga a un MINVALUE debe ser también MINVALUE" -#: parser/parse_utilcmd.c:4339 +#: parser/parse_utilcmd.c:4340 #, c-format msgid "specified value cannot be cast to type %s for column \"%s\"" msgstr "el valor especificado no puede ser convertido al tipo %s para la columna «%s»" @@ -18892,12 +18919,12 @@ msgstr "decodificación lógica requiere una conexión a una base de datos" msgid "logical decoding cannot be used while in recovery" msgstr "la decodificación lógica no puede ejecutarse durante la recuperación" -#: replication/logical/logical.c:350 replication/logical/logical.c:502 +#: replication/logical/logical.c:350 replication/logical/logical.c:504 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "no se puede usar un slot de replicación física para decodificación lógica" -#: replication/logical/logical.c:355 replication/logical/logical.c:507 +#: replication/logical/logical.c:355 replication/logical/logical.c:509 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "el slot de replicación «%s» no fue creado en esta base de datos" @@ -18907,41 +18934,41 @@ msgstr "el slot de replicación «%s» no fue creado en esta base de datos" msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "no se puede crear un slot de replicación lógica en una transacción que ha efectuado escrituras" -#: replication/logical/logical.c:552 +#: replication/logical/logical.c:554 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "iniciando la decodificación lógica para el slot «%s»" -#: replication/logical/logical.c:554 +#: replication/logical/logical.c:556 #, c-format msgid "Streaming transactions committing after %X/%X, reading WAL from %X/%X." msgstr "Transacciones en flujo comprometiendo después de %X/%X, leyendo WAL desde %X/%X." -#: replication/logical/logical.c:699 +#: replication/logical/logical.c:701 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "slot «%s», plugin de salida «%s», en el callback %s, LSN asociado %X/%X" # FIXME must quote callback name? Need a translator: comment? -#: replication/logical/logical.c:705 +#: replication/logical/logical.c:707 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "slot «%s», plugin de salida «%s», en el callback %s" -#: replication/logical/logical.c:876 replication/logical/logical.c:921 -#: replication/logical/logical.c:966 replication/logical/logical.c:1012 +#: replication/logical/logical.c:878 replication/logical/logical.c:923 +#: replication/logical/logical.c:968 replication/logical/logical.c:1014 #, c-format msgid "logical replication at prepare time requires a %s callback" msgstr "durante la preparación, la replicación lógica requiere una función callback %s" -#: replication/logical/logical.c:1244 replication/logical/logical.c:1293 -#: replication/logical/logical.c:1334 replication/logical/logical.c:1420 -#: replication/logical/logical.c:1469 +#: replication/logical/logical.c:1246 replication/logical/logical.c:1295 +#: replication/logical/logical.c:1336 replication/logical/logical.c:1422 +#: replication/logical/logical.c:1471 #, c-format msgid "logical streaming requires a %s callback" msgstr "el flujo lógico requiere una función callback %s" -#: replication/logical/logical.c:1379 +#: replication/logical/logical.c:1381 #, c-format msgid "logical streaming at prepare time requires a %s callback" msgstr "durante la preparación, el flujo lógico requiere una función callback %s" @@ -19053,7 +19080,7 @@ msgid "could not find free replication state slot for replication origin with OI msgstr "no se pudo encontrar un slot libre para el estado del origen de replicación con OID %u" #: replication/logical/origin.c:941 replication/logical/origin.c:1128 -#: replication/slot.c:1903 +#: replication/slot.c:1934 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Aumente max_replication_slots y reintente." @@ -19224,17 +19251,12 @@ msgstr "la tabla \"%s.%s\" no fue encontrada en el editor (publisher)" msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "no se pudo iniciar la copia de contenido inicial para de la tabla «%s.%s»: %s" -#: replication/logical/tablesync.c:1090 +#: replication/logical/tablesync.c:1104 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "la copia de la tabla no pudo iniciar una transacción en el editor (publisher): %s" -#: replication/logical/tablesync.c:1131 -#, c-format -msgid "replication origin \"%s\" already exists" -msgstr "el origen de replicación «%s» ya existe" - -#: replication/logical/tablesync.c:1144 +#: replication/logical/tablesync.c:1142 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "la copia de tabla no pudo terminar la transacción en el editor (publisher): %s" @@ -19329,32 +19351,32 @@ msgstr "proto_version no válido" msgid "proto_version \"%s\" out of range" msgstr "proto_version «%s» fuera de rango" -#: replication/pgoutput/pgoutput.c:227 +#: replication/pgoutput/pgoutput.c:231 #, c-format msgid "invalid publication_names syntax" msgstr "sintaxis de publication_names no válida" -#: replication/pgoutput/pgoutput.c:324 +#: replication/pgoutput/pgoutput.c:328 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or lower" msgstr "el cliente envió proto_version=%d pero sólo soportamos el protocolo %d o inferior" -#: replication/pgoutput/pgoutput.c:330 +#: replication/pgoutput/pgoutput.c:334 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or higher" msgstr "el cliente envió proto_version=%d pero sólo soportamos el protocolo %d o superior" -#: replication/pgoutput/pgoutput.c:336 +#: replication/pgoutput/pgoutput.c:340 #, c-format msgid "publication_names parameter missing" msgstr "parámetro publication_names faltante" -#: replication/pgoutput/pgoutput.c:349 +#: replication/pgoutput/pgoutput.c:353 #, c-format msgid "requested proto_version=%d does not support streaming, need %d or higher" msgstr "la proto_version=%d no soporta flujo, se necesita %d o superior" -#: replication/pgoutput/pgoutput.c:354 +#: replication/pgoutput/pgoutput.c:358 #, c-format msgid "streaming requested, but not supported by output plugin" msgstr "se solicitó flujo, pero no está soportado por plugin de salida" @@ -19399,81 +19421,81 @@ msgstr "Libere uno o incremente max_replication_slots." msgid "replication slot \"%s\" does not exist" msgstr "no existe el slot de replicación «%s»" -#: replication/slot.c:477 replication/slot.c:1054 +#: replication/slot.c:477 replication/slot.c:1083 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "el slot de replicación «%s» está activo para el PID %d" -#: replication/slot.c:705 replication/slot.c:1448 replication/slot.c:1838 +#: replication/slot.c:705 replication/slot.c:1479 replication/slot.c:1869 #, c-format msgid "could not remove directory \"%s\"" msgstr "no se pudo eliminar el directorio «%s»" -#: replication/slot.c:1089 +#: replication/slot.c:1118 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "los slots de replicación sólo pueden usarse si max_replication_slots > 0" # FIXME see logical.c:81 -#: replication/slot.c:1094 +#: replication/slot.c:1123 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "los slots de replicación sólo pueden usarse si wal_level >= replica" -#: replication/slot.c:1279 +#: replication/slot.c:1310 #, c-format msgid "terminating process %d to release replication slot \"%s\"" msgstr "terminando el proceso %d para liberar el slot de replicación «%s»" -#: replication/slot.c:1317 +#: replication/slot.c:1348 #, c-format msgid "invalidating slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size" msgstr "invalidando el slot «%s» porque su restart_lsn %X/%X excede max_slot_wal_keep_size" -#: replication/slot.c:1776 +#: replication/slot.c:1807 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "el archivo de slot de replicación «%s» tiene número mágico erróneo: %u en lugar de %u" -#: replication/slot.c:1783 +#: replication/slot.c:1814 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "el archivo de slot de replicación «%s» tiene versión no soportada %u" -#: replication/slot.c:1790 +#: replication/slot.c:1821 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "el archivo de slot de replicación «%s» tiene largo corrupto %u" -#: replication/slot.c:1826 +#: replication/slot.c:1857 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "suma de verificación no coincidenete en archivo de slot de replicación «%s»: es %u, debería ser %u" # FIXME see slot.c:779. See also postmaster.c:835 -#: replication/slot.c:1860 +#: replication/slot.c:1891 #, c-format msgid "logical replication slot \"%s\" exists, but wal_level < logical" msgstr "existe el slot de replicación lógica «%s», pero wal_level < logical" -#: replication/slot.c:1862 +#: replication/slot.c:1893 #, c-format msgid "Change wal_level to be logical or higher." msgstr "Cambie wal_level a logical o superior." # FIXME see slot.c:779. See also postmaster.c:835 -#: replication/slot.c:1866 +#: replication/slot.c:1897 #, c-format msgid "physical replication slot \"%s\" exists, but wal_level < replica" msgstr "existe el slot de replicación lógica «%s», pero wal_level < logical" # <> hello vim -#: replication/slot.c:1868 +#: replication/slot.c:1899 #, c-format msgid "Change wal_level to be replica or higher." msgstr "Cambie wal_level a replica o superior." -#: replication/slot.c:1902 +#: replication/slot.c:1933 #, c-format msgid "too many replication slots active before shutdown" msgstr "demasiados slots de replicacion activos antes del apagado" @@ -19638,7 +19660,7 @@ msgstr "trayendo el archivo de historia del timeline para el timeline %u desde e msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "no se pudo escribir al segmento de log %s en la posición %u, largo %lu: %m" -#: replication/walsender.c:539 storage/smgr/md.c:1336 +#: replication/walsender.c:539 storage/smgr/md.c:1339 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "no se pudo posicionar (seek) al fin del archivo «%s»: %m" @@ -19981,200 +20003,200 @@ msgstr "no se permite cambiar el nombre de una regla ON SELECT" msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten" msgstr "el nombre de consulta WITH «%s» aparece tanto en una acción de regla y en la consulta que está siendo reescrita" -#: rewrite/rewriteHandler.c:610 +#: rewrite/rewriteHandler.c:613 #, c-format msgid "INSERT...SELECT rule actions are not supported for queries having data-modifying statements in WITH" msgstr "las acciones de reglas INSERT...SELECT no están soportadas para consultas que tengan sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:663 +#: rewrite/rewriteHandler.c:666 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "no se puede usar RETURNING en múltiples reglas" -#: rewrite/rewriteHandler.c:895 rewrite/rewriteHandler.c:934 +#: rewrite/rewriteHandler.c:898 rewrite/rewriteHandler.c:937 #, c-format msgid "cannot insert a non-DEFAULT value into column \"%s\"" msgstr "no se puede insertar un valor no-predeterminado en la columna «%s»" -#: rewrite/rewriteHandler.c:897 rewrite/rewriteHandler.c:963 +#: rewrite/rewriteHandler.c:900 rewrite/rewriteHandler.c:966 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "La columna \"%s\" es una columna de identidad definida como GENERATED ALWAYS." -#: rewrite/rewriteHandler.c:899 +#: rewrite/rewriteHandler.c:902 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Use OVERRIDING SYSTEM VALUE para controlar manualmente." -#: rewrite/rewriteHandler.c:961 rewrite/rewriteHandler.c:969 +#: rewrite/rewriteHandler.c:964 rewrite/rewriteHandler.c:972 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "la columna «%s» sólo puede actualizarse a DEFAULT" -#: rewrite/rewriteHandler.c:1104 rewrite/rewriteHandler.c:1122 +#: rewrite/rewriteHandler.c:1107 rewrite/rewriteHandler.c:1125 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "hay múltiples asignaciones a la misma columna «%s»" -#: rewrite/rewriteHandler.c:1723 rewrite/rewriteHandler.c:3178 +#: rewrite/rewriteHandler.c:1726 rewrite/rewriteHandler.c:3181 #, c-format msgid "access to non-system view \"%s\" is restricted" msgstr "el acceso a la vista «%s» que no son de sistema está restringido" -#: rewrite/rewriteHandler.c:2155 rewrite/rewriteHandler.c:4064 +#: rewrite/rewriteHandler.c:2158 rewrite/rewriteHandler.c:4084 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "se detectó recursión infinita en las reglas de la relación «%s»" -#: rewrite/rewriteHandler.c:2260 +#: rewrite/rewriteHandler.c:2263 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "se detectó recursión infinita en la política para la relación «%s»" -#: rewrite/rewriteHandler.c:2590 +#: rewrite/rewriteHandler.c:2593 msgid "Junk view columns are not updatable." msgstr "Las columnas «basura» de vistas no son actualizables." -#: rewrite/rewriteHandler.c:2595 +#: rewrite/rewriteHandler.c:2598 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Las columnas de vistas que no son columnas de su relación base no son actualizables." -#: rewrite/rewriteHandler.c:2598 +#: rewrite/rewriteHandler.c:2601 msgid "View columns that refer to system columns are not updatable." msgstr "Las columnas de vistas que se refieren a columnas de sistema no son actualizables." -#: rewrite/rewriteHandler.c:2601 +#: rewrite/rewriteHandler.c:2604 msgid "View columns that return whole-row references are not updatable." msgstr "Las columnas de vistas que retornan referencias a la fila completa no son actualizables." # XXX a %s here would be nice ... -#: rewrite/rewriteHandler.c:2662 +#: rewrite/rewriteHandler.c:2665 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Las vistas que contienen DISTINCT no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2665 +#: rewrite/rewriteHandler.c:2668 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Las vistas que contienen GROUP BY no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2668 +#: rewrite/rewriteHandler.c:2671 msgid "Views containing HAVING are not automatically updatable." msgstr "Las vistas que contienen HAVING no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2671 +#: rewrite/rewriteHandler.c:2674 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Las vistas que contienen UNION, INTERSECT o EXCEPT no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2674 +#: rewrite/rewriteHandler.c:2677 msgid "Views containing WITH are not automatically updatable." msgstr "Las vistas que contienen WITH no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2677 +#: rewrite/rewriteHandler.c:2680 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Las vistas que contienen LIMIT u OFFSET no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2689 +#: rewrite/rewriteHandler.c:2692 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Las vistas que retornan funciones de agregación no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2692 +#: rewrite/rewriteHandler.c:2695 msgid "Views that return window functions are not automatically updatable." msgstr "Las vistas que retornan funciones ventana no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2695 +#: rewrite/rewriteHandler.c:2698 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Las vistas que retornan funciones-que-retornan-conjuntos no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2702 rewrite/rewriteHandler.c:2706 -#: rewrite/rewriteHandler.c:2714 +#: rewrite/rewriteHandler.c:2705 rewrite/rewriteHandler.c:2709 +#: rewrite/rewriteHandler.c:2717 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Las vistas que no extraen desde una única tabla o vista no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2717 +#: rewrite/rewriteHandler.c:2720 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Las vistas que contienen TABLESAMPLE no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2741 +#: rewrite/rewriteHandler.c:2744 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Las vistas que no tienen columnas actualizables no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:3238 +#: rewrite/rewriteHandler.c:3241 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "no se puede insertar en la columna «%s» de la vista «%s»" -#: rewrite/rewriteHandler.c:3246 +#: rewrite/rewriteHandler.c:3249 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "no se puede actualizar la columna «%s» vista «%s»" -#: rewrite/rewriteHandler.c:3728 +#: rewrite/rewriteHandler.c:3747 #, c-format msgid "DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD NOTIFY no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3739 +#: rewrite/rewriteHandler.c:3758 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD NOTHING no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3753 +#: rewrite/rewriteHandler.c:3772 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD condicionales no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3757 +#: rewrite/rewriteHandler.c:3776 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO ALSO no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3762 +#: rewrite/rewriteHandler.c:3781 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD de múltiples sentencias no están soportadas para sentencias que modifiquen datos en WITH" # XXX a %s here would be nice ... -#: rewrite/rewriteHandler.c:3992 rewrite/rewriteHandler.c:4000 -#: rewrite/rewriteHandler.c:4008 +#: rewrite/rewriteHandler.c:4012 rewrite/rewriteHandler.c:4020 +#: rewrite/rewriteHandler.c:4028 #, c-format msgid "Views with conditional DO INSTEAD rules are not automatically updatable." msgstr "Las vistas con reglas DO INSTEAD condicionales no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:4113 +#: rewrite/rewriteHandler.c:4134 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "no se puede hacer INSERT RETURNING a la relación «%s»" -#: rewrite/rewriteHandler.c:4115 +#: rewrite/rewriteHandler.c:4136 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "Necesita un regla incondicional ON INSERT DO INSTEAD con una cláusula RETURNING." -#: rewrite/rewriteHandler.c:4120 +#: rewrite/rewriteHandler.c:4141 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "no se puede hacer UPDATE RETURNING a la relación «%s»" -#: rewrite/rewriteHandler.c:4122 +#: rewrite/rewriteHandler.c:4143 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "Necesita un regla incondicional ON UPDATE DO INSTEAD con una cláusula RETURNING." -#: rewrite/rewriteHandler.c:4127 +#: rewrite/rewriteHandler.c:4148 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "no se puede hacer DELETE RETURNING a la relación «%s»" -#: rewrite/rewriteHandler.c:4129 +#: rewrite/rewriteHandler.c:4150 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "Necesita un regla incondicional ON DELETE DO INSTEAD con una clásula RETURNING." -#: rewrite/rewriteHandler.c:4147 +#: rewrite/rewriteHandler.c:4168 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "INSERT con una cláusula ON CONFLICT no puede usarse con una tabla que tiene reglas INSERT o UPDATE" -#: rewrite/rewriteHandler.c:4204 +#: rewrite/rewriteHandler.c:4225 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH no puede ser usado en una consulta que está siendo convertida en múltiples consultas a través de reglas" @@ -20235,47 +20257,47 @@ msgstr "el objeto de estadísticas «%s.%s» no pudo ser calculado para la relac msgid "function returning record called in context that cannot accept type record" msgstr "se llamó una función que retorna un registro en un contexto que no puede aceptarlo" -#: storage/buffer/bufmgr.c:598 storage/buffer/bufmgr.c:765 +#: storage/buffer/bufmgr.c:605 storage/buffer/bufmgr.c:772 #, c-format msgid "cannot access temporary tables of other sessions" msgstr "no se pueden acceder tablas temporales de otras sesiones" -#: storage/buffer/bufmgr.c:843 +#: storage/buffer/bufmgr.c:850 #, c-format msgid "cannot extend relation %s beyond %u blocks" msgstr "no se puede extender la relación %s más allá de %u bloques" -#: storage/buffer/bufmgr.c:930 +#: storage/buffer/bufmgr.c:937 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "datos inesperados más allá del EOF en el bloque %u de relación %s" -#: storage/buffer/bufmgr.c:932 +#: storage/buffer/bufmgr.c:939 #, c-format msgid "This has been seen to occur with buggy kernels; consider updating your system." msgstr "Esto parece ocurrir sólo con kernels defectuosos; considere actualizar su sistema." -#: storage/buffer/bufmgr.c:1031 +#: storage/buffer/bufmgr.c:1038 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "la página no es válida en el bloque %u de la relación «%s»; reinicializando la página" -#: storage/buffer/bufmgr.c:4534 +#: storage/buffer/bufmgr.c:4600 #, c-format msgid "could not write block %u of %s" msgstr "no se pudo escribir el bloque %u de %s" -#: storage/buffer/bufmgr.c:4536 +#: storage/buffer/bufmgr.c:4602 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Múltiples fallas --- el error de escritura puede ser permanente." -#: storage/buffer/bufmgr.c:4557 storage/buffer/bufmgr.c:4576 +#: storage/buffer/bufmgr.c:4623 storage/buffer/bufmgr.c:4642 #, c-format msgid "writing block %u of relation %s" msgstr "escribiendo el bloque %u de la relación %s" -#: storage/buffer/bufmgr.c:4880 +#: storage/buffer/bufmgr.c:4946 #, c-format msgid "snapshot too old" msgstr "snapshot demasiado antiguo" @@ -20305,7 +20327,7 @@ msgstr "no se pudo determinar el tamaño del archivo temporal «%s» del BufFile msgid "could not delete shared fileset \"%s\": %m" msgstr "no se pudo borrar el conjunto de archivos compartidos «%s»: %m" -#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:871 +#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:874 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "no se pudo truncar el archivo «%s»: %m" @@ -20978,22 +21000,22 @@ msgstr "no se pudo escribir el bloque %u en el archivo «%s»: %m" msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "no se pudo escribir el bloque %u en el archivo «%s»: se escribieron sólo %d de %d bytes" -#: storage/smgr/md.c:842 +#: storage/smgr/md.c:845 #, c-format msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "no se pudo truncar el archivo «%s» a %u bloques: es de sólo %u bloques ahora" -#: storage/smgr/md.c:897 +#: storage/smgr/md.c:900 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "no se pudo truncar el archivo «%s» a %u bloques: %m" -#: storage/smgr/md.c:1301 +#: storage/smgr/md.c:1304 #, c-format msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): el segmento previo sólo tiene %u bloques" -#: storage/smgr/md.c:1315 +#: storage/smgr/md.c:1318 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): %m" @@ -22002,8 +22024,8 @@ msgstr "los arrays con elementos null no son permitidos en este contexto" msgid "cannot compare arrays of different element types" msgstr "no se pueden comparar arrays con elementos de distintos tipos" -#: utils/adt/arrayfuncs.c:4034 utils/adt/multirangetypes.c:2742 -#: utils/adt/multirangetypes.c:2814 utils/adt/rangetypes.c:1343 +#: utils/adt/arrayfuncs.c:4034 utils/adt/multirangetypes.c:2743 +#: utils/adt/multirangetypes.c:2815 utils/adt/rangetypes.c:1343 #: utils/adt/rangetypes.c:1407 utils/adt/rowtypes.c:1858 #, c-format msgid "could not identify a hash function for type %s" @@ -23606,22 +23628,22 @@ msgstr "Se esperaba inicio de rango." msgid "Expected comma or end of multirange." msgstr "Se esperaba una coma o el final del multirango." -#: utils/adt/multirangetypes.c:975 +#: utils/adt/multirangetypes.c:976 #, c-format msgid "multiranges cannot be constructed from multidimensional arrays" msgstr "no se puede construir multirangos a partir de arrays multidimensionales" -#: utils/adt/multirangetypes.c:1001 +#: utils/adt/multirangetypes.c:1002 #, c-format msgid "multirange values cannot contain null members" msgstr "valores de multirango no pueden contener miembros nulos" -#: utils/adt/multirangetypes.c:1349 +#: utils/adt/multirangetypes.c:1350 #, c-format msgid "range_agg must be called with a range" msgstr "range_agg debe ser ejecutado con un rango" -#: utils/adt/multirangetypes.c:1420 +#: utils/adt/multirangetypes.c:1421 #, c-format msgid "range_intersect_agg must be called with a multirange" msgstr "range_intersect_agg debe ser ejecutado con un multirango" @@ -23840,99 +23862,99 @@ msgstr "el carácter nulo no está permitido" msgid "percentile value %g is not between 0 and 1" msgstr "el valor de percentil %g no está entre 0 y 1" -#: utils/adt/pg_locale.c:1228 +#: utils/adt/pg_locale.c:1229 #, c-format msgid "Apply system library package updates." msgstr "Aplique actualizaciones de paquetes de bibliotecas del sistema." -#: utils/adt/pg_locale.c:1442 +#: utils/adt/pg_locale.c:1445 #, c-format msgid "could not create locale \"%s\": %m" msgstr "no se pudo crear la configuración regional «%s»: %m" -#: utils/adt/pg_locale.c:1445 +#: utils/adt/pg_locale.c:1448 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "El sistema operativo no pudo encontrar datos de configuración regional para la configuración «%s»." -#: utils/adt/pg_locale.c:1547 +#: utils/adt/pg_locale.c:1550 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "los ordenamientos (collation) con valores collate y ctype diferentes no están soportados en esta plataforma" -#: utils/adt/pg_locale.c:1556 +#: utils/adt/pg_locale.c:1559 #, c-format msgid "collation provider LIBC is not supported on this platform" msgstr "el proveedor de ordenamientos LIBC no está soportado en esta plataforma" -#: utils/adt/pg_locale.c:1568 +#: utils/adt/pg_locale.c:1571 #, c-format msgid "collations with different collate and ctype values are not supported by ICU" msgstr "los ordenamientos (collation) con valores collate y ctype diferentes no están soportados por ICU" -#: utils/adt/pg_locale.c:1574 utils/adt/pg_locale.c:1661 -#: utils/adt/pg_locale.c:1940 +#: utils/adt/pg_locale.c:1577 utils/adt/pg_locale.c:1664 +#: utils/adt/pg_locale.c:1943 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "no se pudo abrir el «collator» para la configuración regional «%s»: %s" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1591 #, c-format msgid "ICU is not supported in this build" msgstr "ICU no está soportado en este servidor" -#: utils/adt/pg_locale.c:1609 +#: utils/adt/pg_locale.c:1612 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "la extensión «%s» no tiene versión actual, pero se especificó una versión" -#: utils/adt/pg_locale.c:1616 +#: utils/adt/pg_locale.c:1619 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "el ordenamiento (collation) «%s» tiene una discordancia de versión" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "The collation in the database was created using version %s, but the operating system provides version %s." msgstr "El ordenamiento en la base de datos fue creado usando la versión %s, pero el sistema operativo provee la versión %s." -#: utils/adt/pg_locale.c:1621 +#: utils/adt/pg_locale.c:1624 #, 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 "Reconstruya todos los objetos afectados por este ordenamiento y ejecute ALTER COLLATION %s REFRESH VERSION, o construya PostgreSQL con la versión correcta de la biblioteca." -#: utils/adt/pg_locale.c:1692 +#: utils/adt/pg_locale.c:1695 #, c-format msgid "could not load locale \"%s\"" msgstr "no se pudo cargar la configuración regional «%s»" -#: utils/adt/pg_locale.c:1717 +#: utils/adt/pg_locale.c:1720 #, c-format msgid "could not get collation version for locale \"%s\": error code %lu" msgstr "no se pudo obtener la versión de «collation» para la configuración regional «%s»: código de error %lu" -#: utils/adt/pg_locale.c:1755 +#: utils/adt/pg_locale.c:1758 #, c-format msgid "encoding \"%s\" not supported by ICU" msgstr "la codificación «%s» no estæ soportada por ICU" -#: utils/adt/pg_locale.c:1762 +#: utils/adt/pg_locale.c:1765 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "no se pudo abrir el conversor ICU para la codificación «%s»: %s" -#: utils/adt/pg_locale.c:1793 utils/adt/pg_locale.c:1802 -#: utils/adt/pg_locale.c:1831 utils/adt/pg_locale.c:1841 +#: utils/adt/pg_locale.c:1796 utils/adt/pg_locale.c:1805 +#: utils/adt/pg_locale.c:1834 utils/adt/pg_locale.c:1844 #, c-format msgid "%s failed: %s" msgstr "%s falló: %s" -#: utils/adt/pg_locale.c:2113 +#: utils/adt/pg_locale.c:2116 #, c-format msgid "invalid multibyte character for locale" msgstr "el carácter multibyte no es válido para esta configuración regional" -#: utils/adt/pg_locale.c:2114 +#: utils/adt/pg_locale.c:2117 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "La configuración regional LC_CTYPE del servidor es probablemente incompatible con la codificación de la base de datos." @@ -24814,7 +24836,7 @@ msgstr "característica XML no soportada" msgid "This functionality requires the server to be built with libxml support." msgstr "Esta funcionalidad requiere que el servidor haya sido construido con soporte libxml." -#: utils/adt/xml.c:253 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:253 utils/mb/mbutils.c:628 #, c-format msgid "invalid encoding name \"%s\"" msgstr "nombre de codificación «%s» no válido" @@ -24994,17 +25016,17 @@ msgstr "falta la función de soporte %3$d para el tipo %4$s de la clase de opera msgid "cached plan must not change result type" msgstr "el plan almacenado no debe cambiar el tipo de resultado" -#: utils/cache/relcache.c:6328 +#: utils/cache/relcache.c:6344 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "no se pudo crear el archivo de cache de catálogos de sistema «%s»: %m" -#: utils/cache/relcache.c:6330 +#: utils/cache/relcache.c:6346 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Prosiguiendo de todas maneras, pero hay algo mal." -#: utils/cache/relcache.c:6652 +#: utils/cache/relcache.c:6668 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "no se pudo eliminar el archivo de cache «%s»: %m" @@ -25615,48 +25637,48 @@ msgstr "ID de codificación %d inesperado para juegos de caracteres ISO 8859" msgid "unexpected encoding ID %d for WIN character sets" msgstr "ID de codificación %d inesperado para juegos de caracteres WIN" -#: utils/mb/mbutils.c:297 utils/mb/mbutils.c:900 +#: utils/mb/mbutils.c:298 utils/mb/mbutils.c:901 #, c-format msgid "conversion between %s and %s is not supported" msgstr "la conversión entre %s y %s no está soportada" -#: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 -#: utils/mb/mbutils.c:842 +#: utils/mb/mbutils.c:403 utils/mb/mbutils.c:431 utils/mb/mbutils.c:816 +#: utils/mb/mbutils.c:843 #, c-format msgid "String of %d bytes is too long for encoding conversion." msgstr "La cadena de %d bytes es demasiado larga para la recodificación." -#: utils/mb/mbutils.c:568 +#: utils/mb/mbutils.c:569 #, c-format msgid "invalid source encoding name \"%s\"" msgstr "la codificación de origen «%s» no es válida" -#: utils/mb/mbutils.c:573 +#: utils/mb/mbutils.c:574 #, c-format msgid "invalid destination encoding name \"%s\"" msgstr "la codificación de destino «%s» no es válida" -#: utils/mb/mbutils.c:713 +#: utils/mb/mbutils.c:714 #, c-format msgid "invalid byte value for encoding \"%s\": 0x%02x" msgstr "byte no válido para codificación «%s»: 0x%02x" -#: utils/mb/mbutils.c:877 +#: utils/mb/mbutils.c:878 #, c-format msgid "invalid Unicode code point" msgstr "punto de código Unicode no válido" -#: utils/mb/mbutils.c:1146 +#: utils/mb/mbutils.c:1147 #, c-format msgid "bind_textdomain_codeset failed" msgstr "bind_textdomain_codeset falló" -#: utils/mb/mbutils.c:1667 +#: utils/mb/mbutils.c:1668 #, c-format msgid "invalid byte sequence for encoding \"%s\": %s" msgstr "secuencia de bytes no válida para codificación «%s»: %s" -#: utils/mb/mbutils.c:1708 +#: utils/mb/mbutils.c:1709 #, c-format msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\"" msgstr "carácter con secuencia de bytes %s en codificación «%s» no tiene equivalente en la codificación «%s»" @@ -27907,15 +27929,15 @@ msgstr "Falla al crear el contexto de memoria «%s»." msgid "could not attach to dynamic shared area" msgstr "no se pudo adjuntar al segmento de memoria compartida dinámica" -#: utils/mmgr/mcxt.c:889 utils/mmgr/mcxt.c:925 utils/mmgr/mcxt.c:963 -#: utils/mmgr/mcxt.c:1001 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1120 -#: utils/mmgr/mcxt.c:1156 utils/mmgr/mcxt.c:1208 utils/mmgr/mcxt.c:1243 -#: utils/mmgr/mcxt.c:1278 +#: utils/mmgr/mcxt.c:892 utils/mmgr/mcxt.c:928 utils/mmgr/mcxt.c:966 +#: utils/mmgr/mcxt.c:1004 utils/mmgr/mcxt.c:1112 utils/mmgr/mcxt.c:1143 +#: utils/mmgr/mcxt.c:1179 utils/mmgr/mcxt.c:1231 utils/mmgr/mcxt.c:1266 +#: utils/mmgr/mcxt.c:1301 #, c-format msgid "Failed on request of size %zu in memory context \"%s\"." msgstr "Falló una petición de tamaño %zu en el contexto de memoria «%s»." -#: utils/mmgr/mcxt.c:1052 +#: utils/mmgr/mcxt.c:1067 #, c-format msgid "logging memory contexts of PID %d" msgstr "registrando contextos de memoria del PID %d" @@ -27965,24 +27987,24 @@ msgstr "no se pudo posicionar (seek) en el bloque %ld del archivo temporal" msgid "could not read block %ld of temporary file: read only %zu of %zu bytes" msgstr "no se pudo leer el bloque %ld del archivo temporal: se leyeron sólo %zu de %zu bytes" -#: utils/sort/sharedtuplestore.c:431 utils/sort/sharedtuplestore.c:440 -#: utils/sort/sharedtuplestore.c:463 utils/sort/sharedtuplestore.c:480 -#: utils/sort/sharedtuplestore.c:497 +#: utils/sort/sharedtuplestore.c:432 utils/sort/sharedtuplestore.c:441 +#: utils/sort/sharedtuplestore.c:464 utils/sort/sharedtuplestore.c:481 +#: utils/sort/sharedtuplestore.c:498 #, c-format msgid "could not read from shared tuplestore temporary file" msgstr "no se pudo leer desde el archivo temporal del tuplestore compartido" -#: utils/sort/sharedtuplestore.c:486 +#: utils/sort/sharedtuplestore.c:487 #, c-format msgid "unexpected chunk in shared tuplestore temporary file" msgstr "trozo inesperado en archivo temporal del tuplestore compartido" -#: utils/sort/sharedtuplestore.c:570 +#: utils/sort/sharedtuplestore.c:571 #, c-format msgid "could not seek to block %u in shared tuplestore temporary file" msgstr "no se pudo posicionar (seek) en el bloque %u en el archivo temporal del tuplestore compartido" -#: utils/sort/sharedtuplestore.c:577 +#: utils/sort/sharedtuplestore.c:578 #, c-format msgid "could not read from shared tuplestore temporary file: read only %zu of %zu bytes" msgstr "no se pudo leer el archivo temporal del tuplestore compartido: se leyeron sólo %zu de %zu bytes" @@ -28616,3 +28638,7 @@ msgstr "uso no estandar de escape en un literal de cadena" #, c-format msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "Use la sintaxis de escape para cadenas, por ej. E'\\r\\n'." + +#, c-format +#~ msgid "replication origin \"%s\" already exists" +#~ msgstr "el origen de replicación «%s» ya existe" diff --git a/src/backend/po/ja.po b/src/backend/po/ja.po index 30173c38bd7..17de720b536 100644 --- a/src/backend/po/ja.po +++ b/src/backend/po/ja.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL 14)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-09-16 10:23+0900\n" -"PO-Revision-Date: 2025-09-16 10:45+0900\n" +"POT-Creation-Date: 2025-12-04 09:37+0900\n" +"PO-Revision-Date: 2025-12-04 10:14+0900\n" "Last-Translator: Kyotaro Horiguchi \n" "Language-Team: jpug-doc \n" "Language: ja\n" @@ -33,20 +33,20 @@ msgstr "記録されていません" msgid "could not open file \"%s\" for reading: %m" msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m" -#: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 access/transam/timeline.c:143 access/transam/timeline.c:362 access/transam/twophase.c:1329 access/transam/xlog.c:3593 access/transam/xlog.c:4842 access/transam/xlog.c:11736 access/transam/xlog.c:11749 access/transam/xlog.c:12204 access/transam/xlog.c:12284 access/transam/xlog.c:12321 access/transam/xlog.c:12381 access/transam/xlogfuncs.c:703 access/transam/xlogfuncs.c:722 -#: commands/extension.c:3492 libpq/hba.c:534 replication/basebackup.c:2016 replication/logical/origin.c:729 replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 replication/logical/snapbuild.c:1988 replication/slot.c:1727 replication/slot.c:1768 replication/walsender.c:545 storage/file/buffile.c:445 storage/file/copydir.c:195 utils/adt/genfile.c:202 utils/adt/misc.c:881 +#: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 access/transam/timeline.c:143 access/transam/timeline.c:362 access/transam/twophase.c:1329 access/transam/xlog.c:3594 access/transam/xlog.c:4843 access/transam/xlog.c:11737 access/transam/xlog.c:11750 access/transam/xlog.c:12205 access/transam/xlog.c:12285 access/transam/xlog.c:12322 access/transam/xlog.c:12382 access/transam/xlogfuncs.c:703 access/transam/xlogfuncs.c:722 +#: commands/extension.c:3492 libpq/hba.c:534 replication/basebackup.c:2016 replication/logical/origin.c:729 replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 replication/logical/snapbuild.c:1988 replication/slot.c:1763 replication/slot.c:1804 replication/walsender.c:559 storage/file/buffile.c:445 storage/file/copydir.c:195 utils/adt/genfile.c:202 utils/adt/misc.c:881 #: utils/cache/relmapper.c:744 #, c-format msgid "could not read file \"%s\": %m" msgstr "ファイル\"%s\"の読み取りに失敗しました: %m" -#: ../common/controldata_utils.c:107 ../common/controldata_utils.c:111 access/transam/xlog.c:3598 access/transam/xlog.c:4847 replication/basebackup.c:2020 replication/logical/origin.c:734 replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 replication/slot.c:1731 replication/slot.c:1772 replication/walsender.c:550 utils/cache/relmapper.c:748 +#: ../common/controldata_utils.c:107 ../common/controldata_utils.c:111 access/transam/xlog.c:3599 access/transam/xlog.c:4848 replication/basebackup.c:2020 replication/logical/origin.c:734 replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 replication/slot.c:1767 replication/slot.c:1808 replication/walsender.c:564 utils/cache/relmapper.c:748 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "ファイル\"%1$s\"を読み込めませんでした: %3$zuバイトのうち%2$dバイトを読み込みました" -#: ../common/controldata_utils.c:122 ../common/controldata_utils.c:127 ../common/controldata_utils.c:286 ../common/controldata_utils.c:289 access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 access/transam/timeline.c:392 access/transam/timeline.c:438 access/transam/timeline.c:512 access/transam/twophase.c:1341 access/transam/twophase.c:1753 access/transam/xlog.c:3444 access/transam/xlog.c:3633 access/transam/xlog.c:3638 access/transam/xlog.c:3957 -#: access/transam/xlog.c:4812 access/transam/xlog.c:5740 access/transam/xlogfuncs.c:728 commands/copyfrom.c:1586 commands/copyto.c:328 libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 replication/logical/origin.c:667 replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 replication/slot.c:1618 replication/slot.c:1779 replication/walsender.c:560 storage/file/copydir.c:218 +#: ../common/controldata_utils.c:122 ../common/controldata_utils.c:127 ../common/controldata_utils.c:286 ../common/controldata_utils.c:289 access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 access/transam/timeline.c:392 access/transam/timeline.c:438 access/transam/timeline.c:512 access/transam/twophase.c:1341 access/transam/twophase.c:1753 access/transam/xlog.c:3445 access/transam/xlog.c:3634 access/transam/xlog.c:3639 access/transam/xlog.c:3958 +#: access/transam/xlog.c:4813 access/transam/xlog.c:5741 access/transam/xlogfuncs.c:728 commands/copyfrom.c:1586 commands/copyto.c:328 libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 replication/logical/origin.c:667 replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 replication/slot.c:1652 replication/slot.c:1815 replication/walsender.c:574 storage/file/copydir.c:218 #: storage/file/copydir.c:223 storage/file/fd.c:735 storage/file/fd.c:3528 storage/file/fd.c:3631 utils/cache/relmapper.c:759 utils/cache/relmapper.c:898 #, c-format msgid "could not close file \"%s\": %m" @@ -69,26 +69,26 @@ msgstr "" "されるものと一致しないようです。この場合以下の結果は不正確になります。また、\n" "このPostgreSQLはこのデータディレクトリと互換性がなくなります。" -#: ../common/controldata_utils.c:227 ../common/controldata_utils.c:233 ../common/file_utils.c:227 ../common/file_utils.c:286 ../common/file_utils.c:360 access/heap/rewriteheap.c:1264 access/transam/timeline.c:111 access/transam/timeline.c:251 access/transam/timeline.c:348 access/transam/twophase.c:1285 access/transam/xlog.c:3331 access/transam/xlog.c:3510 access/transam/xlog.c:3548 access/transam/xlog.c:3736 access/transam/xlog.c:3822 access/transam/xlog.c:3925 -#: access/transam/xlog.c:4832 access/transam/xlogutils.c:803 postmaster/syslogger.c:1488 replication/basebackup.c:616 replication/basebackup.c:1610 replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3743 replication/logical/reorderbuffer.c:4294 replication/logical/reorderbuffer.c:5070 replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 replication/slot.c:1699 replication/walsender.c:518 replication/walsender.c:2567 +#: ../common/controldata_utils.c:227 ../common/controldata_utils.c:233 ../common/file_utils.c:227 ../common/file_utils.c:286 ../common/file_utils.c:360 access/heap/rewriteheap.c:1264 access/transam/timeline.c:111 access/transam/timeline.c:251 access/transam/timeline.c:348 access/transam/twophase.c:1285 access/transam/xlog.c:3332 access/transam/xlog.c:3511 access/transam/xlog.c:3549 access/transam/xlog.c:3737 access/transam/xlog.c:3823 access/transam/xlog.c:3926 +#: access/transam/xlog.c:4833 access/transam/xlogutils.c:803 postmaster/syslogger.c:1488 replication/basebackup.c:616 replication/basebackup.c:1610 replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3743 replication/logical/reorderbuffer.c:4294 replication/logical/reorderbuffer.c:5070 replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 replication/slot.c:1735 replication/walsender.c:532 replication/walsender.c:2581 #: storage/file/copydir.c:161 storage/file/fd.c:710 storage/file/fd.c:3297 storage/file/fd.c:3515 storage/file/fd.c:3602 storage/smgr/md.c:506 utils/cache/relmapper.c:724 utils/cache/relmapper.c:842 utils/error/elog.c:1958 utils/init/miscinit.c:1403 utils/init/miscinit.c:1537 utils/init/miscinit.c:1614 utils/misc/guc.c:8682 utils/misc/guc.c:8714 #, c-format msgid "could not open file \"%s\": %m" msgstr "ファイル\"%s\"をオープンできませんでした: %m" -#: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 access/transam/twophase.c:1726 access/transam/twophase.c:1735 access/transam/xlog.c:11493 access/transam/xlog.c:11531 access/transam/xlog.c:11944 access/transam/xlogfuncs.c:782 postmaster/postmaster.c:5686 postmaster/syslogger.c:1499 postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 +#: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 access/transam/twophase.c:1726 access/transam/twophase.c:1735 access/transam/xlog.c:11494 access/transam/xlog.c:11532 access/transam/xlog.c:11945 access/transam/xlogfuncs.c:782 postmaster/postmaster.c:5688 postmaster/syslogger.c:1499 postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 #, c-format msgid "could not write file \"%s\": %m" msgstr "ファイル\"%s\"を書き出せませんでした: %m" -#: ../common/controldata_utils.c:269 ../common/controldata_utils.c:275 ../common/file_utils.c:298 ../common/file_utils.c:368 access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 access/transam/timeline.c:506 access/transam/twophase.c:1747 access/transam/xlog.c:3437 access/transam/xlog.c:3627 access/transam/xlog.c:4805 access/transam/xlog.c:10976 access/transam/xlog.c:11017 -#: replication/logical/snapbuild.c:1821 replication/slot.c:1604 replication/slot.c:1709 storage/file/fd.c:727 storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 +#: ../common/controldata_utils.c:269 ../common/controldata_utils.c:275 ../common/file_utils.c:298 ../common/file_utils.c:368 access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 access/transam/timeline.c:506 access/transam/twophase.c:1747 access/transam/xlog.c:3438 access/transam/xlog.c:3628 access/transam/xlog.c:4806 access/transam/xlog.c:10977 access/transam/xlog.c:11018 +#: replication/logical/snapbuild.c:1821 replication/slot.c:1636 replication/slot.c:1745 storage/file/fd.c:727 storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "ファイル\"%s\"をfsyncできませんでした: %m" -#: ../common/cryptohash_openssl.c:104 ../common/exec.c:560 ../common/exec.c:605 ../common/exec.c:697 ../common/hmac_openssl.c:101 ../common/psprintf.c:143 ../common/stringinfo.c:305 ../port/path.c:707 ../port/path.c:745 ../port/path.c:762 access/transam/twophase.c:1399 access/transam/xlog.c:6720 lib/dshash.c:245 libpq/auth.c:1497 libpq/auth.c:1565 libpq/auth.c:2123 libpq/be-secure-gssapi.c:530 libpq/be-secure-gssapi.c:702 postmaster/bgworker.c:349 -#: postmaster/bgworker.c:948 postmaster/postmaster.c:2552 postmaster/postmaster.c:4209 postmaster/postmaster.c:5611 postmaster/postmaster.c:5975 replication/libpqwalreceiver/libpqwalreceiver.c:287 replication/logical/logical.c:206 replication/walsender.c:592 storage/buffer/localbuf.c:442 storage/file/fd.c:879 storage/file/fd.c:1351 storage/file/fd.c:1512 storage/file/fd.c:2320 storage/ipc/procarray.c:1472 storage/ipc/procarray.c:2293 storage/ipc/procarray.c:2300 +#: ../common/cryptohash_openssl.c:104 ../common/exec.c:560 ../common/exec.c:605 ../common/exec.c:697 ../common/hmac_openssl.c:101 ../common/psprintf.c:143 ../common/stringinfo.c:305 ../port/path.c:707 ../port/path.c:745 ../port/path.c:762 access/transam/twophase.c:1399 access/transam/xlog.c:6721 lib/dshash.c:245 libpq/auth.c:1497 libpq/auth.c:1565 libpq/auth.c:2123 libpq/be-secure-gssapi.c:530 libpq/be-secure-gssapi.c:702 postmaster/bgworker.c:349 +#: postmaster/bgworker.c:948 postmaster/postmaster.c:2554 postmaster/postmaster.c:4211 postmaster/postmaster.c:5613 postmaster/postmaster.c:5977 replication/libpqwalreceiver/libpqwalreceiver.c:287 replication/logical/logical.c:206 replication/walsender.c:606 storage/buffer/localbuf.c:442 storage/file/fd.c:879 storage/file/fd.c:1351 storage/file/fd.c:1512 storage/file/fd.c:2320 storage/ipc/procarray.c:1472 storage/ipc/procarray.c:2293 storage/ipc/procarray.c:2300 #: storage/ipc/procarray.c:2805 storage/ipc/procarray.c:3482 tcop/postgres.c:3620 utils/adt/cryptohashfuncs.c:46 utils/adt/cryptohashfuncs.c:66 utils/adt/formatting.c:1699 utils/adt/formatting.c:1823 utils/adt/formatting.c:1948 utils/adt/pg_locale.c:450 utils/adt/pg_locale.c:614 utils/adt/regexp.c:223 utils/fmgr/dfmgr.c:229 utils/hash/dynahash.c:513 utils/hash/dynahash.c:613 utils/hash/dynahash.c:1116 utils/mb/mbutils.c:401 utils/mb/mbutils.c:429 #: utils/mb/mbutils.c:814 utils/mb/mbutils.c:841 utils/misc/guc.c:5061 utils/misc/guc.c:5077 utils/misc/guc.c:5090 utils/misc/guc.c:8447 utils/misc/tzparser.c:476 utils/mmgr/aset.c:476 utils/mmgr/dsa.c:702 utils/mmgr/dsa.c:724 utils/mmgr/dsa.c:805 utils/mmgr/generation.c:234 utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 utils/mmgr/mcxt.c:1000 utils/mmgr/mcxt.c:1088 utils/mmgr/mcxt.c:1119 utils/mmgr/mcxt.c:1155 utils/mmgr/mcxt.c:1207 #: utils/mmgr/mcxt.c:1242 utils/mmgr/mcxt.c:1277 utils/mmgr/slab.c:238 @@ -121,7 +121,7 @@ msgstr "実行対象の\"%s\"が見つかりませんでした" msgid "could not change directory to \"%s\": %m" msgstr "ディレクトリ\"%s\"に移動できませんでした: %m" -#: ../common/exec.c:299 access/transam/xlog.c:11367 replication/basebackup.c:1428 utils/adt/misc.c:362 +#: ../common/exec.c:299 access/transam/xlog.c:11368 replication/basebackup.c:1428 utils/adt/misc.c:362 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "シンボリックリンク\"%s\"を読めませんでした: %m" @@ -131,7 +131,7 @@ msgstr "シンボリックリンク\"%s\"を読めませんでした: %m" msgid "%s() failed: %m" msgstr "%s() が失敗しました: %m" -#: ../common/fe_memutils.c:35 ../common/fe_memutils.c:75 ../common/fe_memutils.c:98 ../common/fe_memutils.c:162 ../common/psprintf.c:145 ../port/path.c:709 ../port/path.c:747 ../port/path.c:764 utils/misc/ps_status.c:208 utils/misc/ps_status.c:216 utils/misc/ps_status.c:246 utils/misc/ps_status.c:254 +#: ../common/fe_memutils.c:35 ../common/fe_memutils.c:75 ../common/fe_memutils.c:98 ../common/fe_memutils.c:162 ../common/psprintf.c:145 ../port/path.c:709 ../port/path.c:747 ../port/path.c:764 utils/misc/ps_status.c:210 utils/misc/ps_status.c:218 utils/misc/ps_status.c:248 utils/misc/ps_status.c:256 #, c-format msgid "out of memory\n" msgstr "メモリ不足\n" @@ -141,13 +141,13 @@ msgstr "メモリ不足\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "nullポインタは複製できません (内部エラー)\n" -#: ../common/file_utils.c:86 ../common/file_utils.c:446 ../common/file_utils.c:450 access/transam/twophase.c:1297 access/transam/xlog.c:11469 access/transam/xlog.c:11507 access/transam/xlog.c:11724 access/transam/xlogarchive.c:110 access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 commands/tablespace.c:894 guc-file.l:1063 postmaster/pgarch.c:696 replication/basebackup.c:439 +#: ../common/file_utils.c:86 ../common/file_utils.c:446 ../common/file_utils.c:450 access/transam/twophase.c:1297 access/transam/xlog.c:11470 access/transam/xlog.c:11508 access/transam/xlog.c:11725 access/transam/xlogarchive.c:110 access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 commands/tablespace.c:894 guc-file.l:1063 postmaster/pgarch.c:696 replication/basebackup.c:439 #: replication/basebackup.c:622 replication/basebackup.c:698 replication/logical/snapbuild.c:1700 storage/file/copydir.c:68 storage/file/copydir.c:107 storage/file/fd.c:1862 storage/file/fd.c:1948 storage/file/fd.c:3148 storage/file/fd.c:3351 utils/adt/dbsize.c:70 utils/adt/dbsize.c:222 utils/adt/dbsize.c:302 utils/adt/genfile.c:418 utils/adt/genfile.c:644 utils/adt/misc.c:348 #, c-format msgid "could not stat file \"%s\": %m" msgstr "ファイル\"%s\"のstatに失敗しました: %m" -#: ../common/file_utils.c:161 ../common/pgfnames.c:48 commands/tablespace.c:729 commands/tablespace.c:739 postmaster/postmaster.c:1520 storage/file/fd.c:2723 storage/file/reinit.c:122 utils/adt/misc.c:263 utils/misc/tzparser.c:338 +#: ../common/file_utils.c:161 ../common/pgfnames.c:48 commands/tablespace.c:729 commands/tablespace.c:739 postmaster/postmaster.c:1522 storage/file/fd.c:2723 storage/file/reinit.c:122 utils/adt/misc.c:263 utils/misc/tzparser.c:338 #, c-format msgid "could not open directory \"%s\": %m" msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m" @@ -157,7 +157,7 @@ msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m" msgid "could not read directory \"%s\": %m" msgstr "ディレクトリ\"%s\"を読み取れませんでした: %m" -#: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 replication/slot.c:643 replication/slot.c:1490 replication/slot.c:1632 storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 +#: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 replication/slot.c:672 replication/slot.c:1519 replication/slot.c:1668 storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m" @@ -467,7 +467,7 @@ msgstr "アクセストークンのメンバーシップを確認できません msgid "request for BRIN range summarization for index \"%s\" page %u was not recorded" msgstr "インデックス\"%s\" ページ%uのBRIN範囲要約のリクエストは登録されていません" -#: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 access/transam/xlog.c:11138 access/transam/xlog.c:11675 access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 access/transam/xlogfuncs.c:509 +#: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 access/transam/xlog.c:11139 access/transam/xlog.c:11676 access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 access/transam/xlogfuncs.c:509 #, c-format msgid "recovery is in progress" msgstr "リカバリは現在進行中です" @@ -635,7 +635,7 @@ msgstr "認識できないパラメータ namaspace \"%s\"" msgid "invalid option name \"%s\": must not contain \"=\"" msgstr "不正なオプション名\"%s\": \"=\"が含まれていてはなりません" -#: access/common/reloptions.c:1303 utils/misc/guc.c:12604 +#: access/common/reloptions.c:1303 utils/misc/guc.c:12615 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "WITH OIDSと定義されたテーブルはサポートされません" @@ -820,7 +820,7 @@ msgstr "アクセスメソッド\"%2$s\"の演算子族\"%1$s\"は演算子%3$s msgid "could not determine which collation to use for string hashing" msgstr "文字列のハッシュ値計算で使用する照合順序を特定できませんでした" -#: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:714 catalog/heap.c:720 commands/createas.c:206 commands/createas.c:515 commands/indexcmds.c:1971 commands/tablecmds.c:17198 commands/view.c:86 regex/regc_pg_locale.c:263 utils/adt/formatting.c:1666 utils/adt/formatting.c:1790 utils/adt/formatting.c:1915 utils/adt/like.c:194 utils/adt/like_support.c:1004 utils/adt/varchar.c:733 utils/adt/varchar.c:994 utils/adt/varchar.c:1055 +#: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:714 catalog/heap.c:720 commands/createas.c:206 commands/createas.c:515 commands/indexcmds.c:1971 commands/tablecmds.c:17208 commands/view.c:86 regex/regc_pg_locale.c:263 utils/adt/formatting.c:1666 utils/adt/formatting.c:1790 utils/adt/formatting.c:1915 utils/adt/like.c:194 utils/adt/like_support.c:1004 utils/adt/varchar.c:733 utils/adt/varchar.c:994 utils/adt/varchar.c:1055 #: utils/adt/varlena.c:1517 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." @@ -921,7 +921,7 @@ msgstr "行が大きすぎます: サイズは%zu、上限は%zu" msgid "could not write to file \"%s\", wrote %d of %d: %m" msgstr "ファイル\"%1$s\"に書き込めませんでした、%3$dバイト中%2$dバイト書き込みました: %m" -#: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 access/transam/timeline.c:329 access/transam/timeline.c:481 access/transam/xlog.c:3353 access/transam/xlog.c:3562 access/transam/xlog.c:4784 access/transam/xlog.c:11484 access/transam/xlog.c:11522 access/transam/xlog.c:11927 access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4634 postmaster/postmaster.c:5673 replication/logical/origin.c:587 replication/slot.c:1551 storage/file/copydir.c:167 +#: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 access/transam/timeline.c:329 access/transam/timeline.c:481 access/transam/xlog.c:3354 access/transam/xlog.c:3563 access/transam/xlog.c:4785 access/transam/xlog.c:11485 access/transam/xlog.c:11523 access/transam/xlog.c:11928 access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4636 postmaster/postmaster.c:5675 replication/logical/origin.c:587 replication/slot.c:1580 storage/file/copydir.c:167 #: storage/smgr/md.c:218 utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -932,13 +932,13 @@ msgstr "ファイル\"%s\"を作成できませんでした: %m" msgid "could not truncate file \"%s\" to %u: %m" msgstr "ファイル\"%s\"を%uバイトに切り詰められませんでした: %m" -#: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 access/transam/timeline.c:424 access/transam/timeline.c:498 access/transam/xlog.c:3425 access/transam/xlog.c:3618 access/transam/xlog.c:4796 postmaster/postmaster.c:4644 postmaster/postmaster.c:4654 replication/logical/origin.c:599 replication/logical/origin.c:641 replication/logical/origin.c:660 replication/logical/snapbuild.c:1797 replication/slot.c:1586 storage/file/buffile.c:506 +#: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 access/transam/timeline.c:424 access/transam/timeline.c:498 access/transam/xlog.c:3426 access/transam/xlog.c:3619 access/transam/xlog.c:4797 postmaster/postmaster.c:4646 postmaster/postmaster.c:4656 replication/logical/origin.c:599 replication/logical/origin.c:641 replication/logical/origin.c:660 replication/logical/snapbuild.c:1797 replication/slot.c:1616 storage/file/buffile.c:506 #: storage/file/copydir.c:207 utils/init/miscinit.c:1478 utils/init/miscinit.c:1489 utils/init/miscinit.c:1497 utils/misc/guc.c:8430 utils/misc/guc.c:8461 utils/misc/guc.c:10388 utils/misc/guc.c:10402 utils/time/snapmgr.c:1266 utils/time/snapmgr.c:1273 #, c-format msgid "could not write to file \"%s\": %m" msgstr "ファイル\"%s\"に書き込めませんでした: %m" -#: access/heap/rewriteheap.c:1249 access/transam/twophase.c:1686 access/transam/xlogarchive.c:118 access/transam/xlogarchive.c:422 postmaster/postmaster.c:1096 postmaster/syslogger.c:1465 replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 replication/slot.c:1683 storage/file/fd.c:785 storage/file/fd.c:3168 storage/file/fd.c:3230 storage/file/reinit.c:250 +#: access/heap/rewriteheap.c:1249 access/transam/twophase.c:1686 access/transam/xlogarchive.c:118 access/transam/xlogarchive.c:422 postmaster/postmaster.c:1098 postmaster/syslogger.c:1465 replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 replication/slot.c:1719 storage/file/fd.c:785 storage/file/fd.c:3168 storage/file/fd.c:3230 storage/file/reinit.c:250 #: storage/ipc/dsm.c:315 storage/smgr/md.c:347 storage/smgr/md.c:397 storage/sync/sync.c:250 utils/time/snapmgr.c:1606 #, c-format msgid "could not remove file \"%s\": %m" @@ -1220,7 +1220,7 @@ msgstr "システムカタログのスキャン中にトランザクションが msgid "cannot access index \"%s\" while it is being reindexed" msgstr "再作成中であるためインデックス\"%s\"にアクセスできません" -#: access/index/indexam.c:208 catalog/objectaddress.c:1355 commands/indexcmds.c:2833 commands/tablecmds.c:267 commands/tablecmds.c:291 commands/tablecmds.c:16894 commands/tablecmds.c:18696 +#: access/index/indexam.c:208 catalog/objectaddress.c:1355 commands/indexcmds.c:2833 commands/tablecmds.c:267 commands/tablecmds.c:291 commands/tablecmds.c:16894 commands/tablecmds.c:18710 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\"はインデックスではありません" @@ -1265,17 +1265,17 @@ msgstr "インデックス\"%s\"に削除処理中の内部ページがありま msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it." msgstr "これは9.3かそれ以前のバージョンで、アップグレード前にVACUUMが中断された際に起きた可能性があります。REINDEXしてください。" -#: access/nbtree/nbtutils.c:2686 +#: access/nbtree/nbtutils.c:2685 #, c-format msgid "index row size %zu exceeds btree version %u maximum %zu for index \"%s\"" msgstr "インデックス行サイズ%1$zuはインデックス\"%4$s\"でのbtreeバージョン %2$u の最大値%3$zuを超えています" -#: access/nbtree/nbtutils.c:2692 +#: access/nbtree/nbtutils.c:2691 #, c-format msgid "Index row references tuple (%u,%u) in relation \"%s\"." msgstr "インデックス行はリレーション\"%3$s\"のタプル(%1$u,%2$u)を参照しています。" -#: access/nbtree/nbtutils.c:2696 +#: access/nbtree/nbtutils.c:2695 #, c-format msgid "" "Values larger than 1/3 of a buffer page cannot be indexed.\n" @@ -1369,12 +1369,12 @@ msgstr "プライマリサーバーで設定パラメータ\"%s\"がonに設定 msgid "Make sure the configuration parameter \"%s\" is set." msgstr "設定パラメータ\"%s\"が設定されていることを確認してください。" -#: access/transam/multixact.c:1022 +#: access/transam/multixact.c:1101 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\"" msgstr "データベース\"%s\"におけるMultiXactIds周回によるデータ損失を防ぐために、データベースは新しくMultiXactIdsを生成するコマンドを受け付けません" -#: access/transam/multixact.c:1024 access/transam/multixact.c:1031 access/transam/multixact.c:1055 access/transam/multixact.c:1064 +#: access/transam/multixact.c:1103 access/transam/multixact.c:1110 access/transam/multixact.c:1134 access/transam/multixact.c:1143 #, c-format msgid "" "Execute a database-wide VACUUM in that database.\n" @@ -1383,65 +1383,70 @@ msgstr "" "そのデータベース全体の VACUUM を実行してください。\n" "古い準備済みトランザクションのコミットまたはロールバック、もしくは古いレプリケーションスロットの削除も必要かもしれません。" -#: access/transam/multixact.c:1029 +#: access/transam/multixact.c:1108 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "OID %u を持つデータベースは周回によるデータ損失を防ぐために、新しいMultiXactIdsを生成するコマンドを受け付けない状態になっています" -#: access/transam/multixact.c:1050 access/transam/multixact.c:2334 +#: access/transam/multixact.c:1129 access/transam/multixact.c:2413 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" msgstr[0] "データベース\"%s\"はあと%u個のMultiXactIdが使われる前にVACUUMする必要があります" msgstr[1] "データベース\"%s\"はあと%u個のMultiXactIdが使われる前にVACUUMする必要があります" -#: access/transam/multixact.c:1059 access/transam/multixact.c:2343 +#: access/transam/multixact.c:1138 access/transam/multixact.c:2422 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" msgstr[0] "OID %u のデータベースはあと%u個のMultiXactIdが使われる前にVACUUMする必要があります" msgstr[1] "OID %u のデータベースはあと%u個のMultiXactIdが使われる前にVACUUMする必要があります" -#: access/transam/multixact.c:1120 +#: access/transam/multixact.c:1202 #, c-format msgid "multixact \"members\" limit exceeded" msgstr "マルチトランザクションの\"メンバ\"が制限を超えました" -#: access/transam/multixact.c:1121 +#: access/transam/multixact.c:1203 #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." msgstr[0] "このコマンドで%u個のメンバを持つマルチトランザクションが生成されますが、残りのスペースは %u 個のメンバ分しかありません。" msgstr[1] "このコマンドで%u個のメンバを持つマルチトランザクションが生成されますが、残りのスペースは %u 個のメンバ分しかありません。" -#: access/transam/multixact.c:1126 +#: access/transam/multixact.c:1208 #, c-format msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "vacuum_multixact_freeze_min_age と vacuum_multixact_freeze_table_age をより小さな値に設定してOID %u のデータベースでデータベース全体にVACUUMを実行してください。" -#: access/transam/multixact.c:1157 +#: access/transam/multixact.c:1239 #, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" msgstr[0] "OID %u のデータベースは更に%d個のマルチトランザクションメンバが使用される前にVACUUMを実行する必要があります" msgstr[1] "OID %u のデータベースは更に%d個のマルチトランザクションメンバが使用される前にVACUUMを実行する必要があります" -#: access/transam/multixact.c:1162 +#: access/transam/multixact.c:1244 #, c-format msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "vacuum_multixact_freeze_min_ageとvacuum_multixact_freeze_table_ageをより小さな値に設定した上で、そのデータベースでVACUUMを実行してください。" -#: access/transam/multixact.c:1301 +#: access/transam/multixact.c:1383 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %uはもう存在しません: 周回しているようです" -#: access/transam/multixact.c:1307 +#: access/transam/multixact.c:1389 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %uを作成できませんでした: 周回しているようです" -#: access/transam/multixact.c:2339 access/transam/multixact.c:2348 access/transam/varsup.c:151 access/transam/varsup.c:158 access/transam/varsup.c:466 access/transam/varsup.c:473 +#: access/transam/multixact.c:1464 +#, c-format +msgid "MultiXact %u has invalid next offset" +msgstr "MultiXact %u の次のオフセットが不正です" + +#: access/transam/multixact.c:2418 access/transam/multixact.c:2427 access/transam/varsup.c:151 access/transam/varsup.c:158 access/transam/varsup.c:466 access/transam/varsup.c:473 #, c-format msgid "" "To avoid a database shutdown, execute a database-wide VACUUM in that database.\n" @@ -1450,27 +1455,27 @@ msgstr "" "データベースの停止を防ぐために、データベース全体の VACUUM を実行してください。\n" "古い準備済みトランザクションのコミットまたはロールバック、もしくは古いレプリケーションスロットの削除も必要かもしれません。" -#: access/transam/multixact.c:2622 +#: access/transam/multixact.c:2701 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "最古のチェックポイントの際のマルチトランザクション%uがディスク上に存在しないため、マルチトランザクションメンバーの周回防止を無効にしました" -#: access/transam/multixact.c:2644 +#: access/transam/multixact.c:2723 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "マルチトランザクションメンバーの周回防止が有効になりました" -#: access/transam/multixact.c:3038 +#: access/transam/multixact.c:3117 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "最古のマルチトランザクション%uが見つかりません、アクセス可能な最古のものは%u、切り詰めをスキップします" -#: access/transam/multixact.c:3056 +#: access/transam/multixact.c:3135 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "マルチトランザクション%uがディスク上に存在しないため、そこまでの切り詰めができません、切り詰めをスキップします" -#: access/transam/multixact.c:3370 +#: access/transam/multixact.c:3473 #, c-format msgid "invalid MultiXactId: %u" msgstr "不正なMultiXactId: %u" @@ -1701,7 +1706,7 @@ msgstr "ファイル\"%s\"内に格納されているサイズが不正です" msgid "calculated CRC checksum does not match value stored in file \"%s\"" msgstr "算出されたCRCチェックサムがファイル\"%s\"に格納されている値と一致しません" -#: access/transam/twophase.c:1400 access/transam/xlog.c:6721 +#: access/transam/twophase.c:1400 access/transam/xlog.c:6722 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "WALリーダの割り当てに中に失敗しました。" @@ -1922,434 +1927,434 @@ msgstr "並列処理中はサブトランザクションをコミットできま msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "1トランザクション内には 2^32-1 個より多くのサブトランザクションを作成できません" -#: access/transam/xlog.c:1850 +#: access/transam/xlog.c:1851 #, c-format msgid "request to flush past end of generated WAL; request %X/%X, current position %X/%X" msgstr "生成済みのWALの終点以降までの書き出しが要求されました; 要求 %X/%X、現在位置 %X/%X" -#: access/transam/xlog.c:2621 +#: access/transam/xlog.c:2622 #, 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:4038 access/transam/xlogutils.c:798 replication/walsender.c:2561 +#: access/transam/xlog.c:4039 access/transam/xlogutils.c:798 replication/walsender.c:2575 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "要求された WAL セグメント %s はすでに削除されています" -#: access/transam/xlog.c:4314 +#: access/transam/xlog.c:4315 #, c-format msgid "could not rename file \"%s\": %m" msgstr "ファイル\"%s\"の名前を変更できませんでした: %m" -#: access/transam/xlog.c:4356 access/transam/xlog.c:4366 +#: access/transam/xlog.c:4357 access/transam/xlog.c:4367 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "WALディレクトリ\"%s\"は存在しません" -#: access/transam/xlog.c:4372 +#: access/transam/xlog.c:4373 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "なかったWALディレクトリ\"%s\"を作成しています" -#: access/transam/xlog.c:4375 commands/dbcommands.c:2295 +#: access/transam/xlog.c:4376 commands/dbcommands.c:2295 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "なかったディレクトリ\"%s\"の作成に失敗しました: %m" -#: access/transam/xlog.c:4497 +#: access/transam/xlog.c:4498 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "ログファイル%2$s、オフセット%3$uのタイムラインID%1$uは想定外です" -#: access/transam/xlog.c:4635 +#: access/transam/xlog.c:4636 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "新しいタイムライン%uはデータベースシステムのタイムライン%uの子ではありません" -#: access/transam/xlog.c:4649 +#: access/transam/xlog.c:4650 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "新しいタイムライン%uは現在のデータベースシステムのタイムライン%uから現在のリカバリポイント%X/%Xより前に分岐しています" -#: access/transam/xlog.c:4668 +#: access/transam/xlog.c:4669 #, c-format msgid "new target timeline is %u" msgstr "新しい目標タイムラインは%uです" -#: access/transam/xlog.c:4704 +#: access/transam/xlog.c:4705 #, c-format msgid "could not generate secret authorization token" msgstr "秘密の認証トークンを生成できませんでした" -#: access/transam/xlog.c:4863 access/transam/xlog.c:4872 access/transam/xlog.c:4896 access/transam/xlog.c:4903 access/transam/xlog.c:4910 access/transam/xlog.c:4915 access/transam/xlog.c:4922 access/transam/xlog.c:4929 access/transam/xlog.c:4936 access/transam/xlog.c:4943 access/transam/xlog.c:4950 access/transam/xlog.c:4957 access/transam/xlog.c:4966 access/transam/xlog.c:4973 utils/init/miscinit.c:1635 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 access/transam/xlog.c:4897 access/transam/xlog.c:4904 access/transam/xlog.c:4911 access/transam/xlog.c:4916 access/transam/xlog.c:4923 access/transam/xlog.c:4930 access/transam/xlog.c:4937 access/transam/xlog.c:4944 access/transam/xlog.c:4951 access/transam/xlog.c:4958 access/transam/xlog.c:4967 access/transam/xlog.c:4974 utils/init/miscinit.c:1635 #, c-format msgid "database files are incompatible with server" msgstr "データベースファイルがサーバーと互換性がありません" -#: access/transam/xlog.c:4864 +#: access/transam/xlog.c:4865 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "データベースクラスタはPG_CONTROL_VERSION %d (0x%08x)で初期化されましたが、サーバーはPG_CONTROL_VERSION %d (0x%08x)でコンパイルされています。" -#: access/transam/xlog.c:4868 +#: access/transam/xlog.c:4869 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "バイトオーダーの不整合の可能性があります。initdbを実行する必要がありそうです。" -#: access/transam/xlog.c:4873 +#: access/transam/xlog.c:4874 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "データベースクラスタはPG_CONTROL_VERSION %d で初期化されましたが、サーバーは PG_CONTROL_VERSION %d でコンパイルされています。" -#: access/transam/xlog.c:4876 access/transam/xlog.c:4900 access/transam/xlog.c:4907 access/transam/xlog.c:4912 +#: access/transam/xlog.c:4877 access/transam/xlog.c:4901 access/transam/xlog.c:4908 access/transam/xlog.c:4913 #, c-format msgid "It looks like you need to initdb." msgstr "initdbが必要のようです。" -#: access/transam/xlog.c:4887 +#: access/transam/xlog.c:4888 #, c-format msgid "incorrect checksum in control file" msgstr "制御ファイル内のチェックサムが不正です" -#: access/transam/xlog.c:4897 +#: access/transam/xlog.c:4898 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "データベースクラスタは CATALOG_VERSION_NO %d で初期化されましたが、サーバーは CATALOG_VERSION_NO %d でコンパイルされています。" -#: access/transam/xlog.c:4904 +#: access/transam/xlog.c:4905 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "データベースクラスタは MAXALIGN %d で初期化されましたが、サーバーは MAXALIGN %d でコンパイルされています。" -#: access/transam/xlog.c:4911 +#: access/transam/xlog.c:4912 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "データベースクラスタはサーバー実行ファイルと異なる浮動小数点書式を使用しているようです。" -#: access/transam/xlog.c:4916 +#: access/transam/xlog.c:4917 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "データベースクラスタは BLCKSZ %d で初期化されましたが、サーバーは BLCKSZ %d でコンパイルされています。" -#: access/transam/xlog.c:4919 access/transam/xlog.c:4926 access/transam/xlog.c:4933 access/transam/xlog.c:4940 access/transam/xlog.c:4947 access/transam/xlog.c:4954 access/transam/xlog.c:4961 access/transam/xlog.c:4969 access/transam/xlog.c:4976 +#: access/transam/xlog.c:4920 access/transam/xlog.c:4927 access/transam/xlog.c:4934 access/transam/xlog.c:4941 access/transam/xlog.c:4948 access/transam/xlog.c:4955 access/transam/xlog.c:4962 access/transam/xlog.c:4970 access/transam/xlog.c:4977 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "再コンパイルもしくは initdb が必要そうです。" -#: access/transam/xlog.c:4923 +#: access/transam/xlog.c:4924 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "データベースクラスタは RELSEG_SIZE %d で初期化されましたが、サーバーは RELSEG_SIZE %d でコンパイルされています。" -#: access/transam/xlog.c:4930 +#: access/transam/xlog.c:4931 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "データベースクラスタは XLOG_BLCKSZ %d で初期化されましたが、サーバーは XLOG_BLCKSZ %d でコンパイルされています。" -#: access/transam/xlog.c:4937 +#: access/transam/xlog.c:4938 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "データベースクラスタは NAMEDATALEN %d で初期化されましたが、サーバーは NAMEDATALEN %d でコンパイルされています。" -#: access/transam/xlog.c:4944 +#: access/transam/xlog.c:4945 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "データベースクラスタは INDEX_MAX_KEYS %d で初期化されましたが、サーバーは INDEX_MAX_KEYS %d でコンパイルされています。" -#: access/transam/xlog.c:4951 +#: access/transam/xlog.c:4952 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "データベースクラスタは TOAST_MAX_CHUNK_SIZE %d で初期化されましたが、サーバーは TOAST_MAX_CHUNK_SIZE %d でコンパイルされています。" -#: access/transam/xlog.c:4958 +#: access/transam/xlog.c:4959 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "データベースクラスタは LOBLKSIZE %d で初期化されましたが、サーバーは LOBLKSIZE %d でコンパイルされています。" -#: access/transam/xlog.c:4967 +#: access/transam/xlog.c:4968 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "データベースクラスタは USE_FLOAT8_BYVAL なしで初期化されましたが、サーバー側は USE_FLOAT8_BYVAL 付きでコンパイルされています。" -#: access/transam/xlog.c:4974 +#: access/transam/xlog.c:4975 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "データベースクラスタは USE_FLOAT8_BYVAL 付きで初期化されましたが、サーバー側は USE_FLOAT8_BYVAL なしでコンパイルされています。" -#: access/transam/xlog.c:4983 +#: access/transam/xlog.c:4984 #, c-format msgid "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d byte" msgid_plural "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d bytes" msgstr[0] "WALセグメントのサイズ指定は1MBと1GBの間の2の累乗でなければなりません、しかしコントロールファイルでは%dバイトとなっています" msgstr[1] "WALセグメントのサイズ指定は1MBと1GBの間の2の累乗でなければなりません、しかしコントロールファイルでは%dバイトとなっています" -#: access/transam/xlog.c:4995 +#: access/transam/xlog.c:4996 #, c-format msgid "\"min_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"min_wal_size\"は最低でも\"wal_segment_size\"の2倍である必要があります。" -#: access/transam/xlog.c:4999 +#: access/transam/xlog.c:5000 #, c-format msgid "\"max_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"max_wal_size\"は最低でも\"wal_segment_size\"の2倍である必要があります。" -#: access/transam/xlog.c:5437 +#: access/transam/xlog.c:5438 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "ブートストラップの先行書き込みログファイルに書き込めませんでした: %m" -#: access/transam/xlog.c:5445 +#: access/transam/xlog.c:5446 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "ブートストラップの先行書き込みログファイルをfsyncできませんでした: %m" -#: access/transam/xlog.c:5451 +#: access/transam/xlog.c:5452 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "ブートストラップの先行書き込みログファイルをクローズできませんでした: %m" -#: access/transam/xlog.c:5512 +#: access/transam/xlog.c:5513 #, c-format msgid "using recovery command file \"%s\" is not supported" msgstr "リカバリコマンドファイル \"%s\"の使用はサポートされません" -#: access/transam/xlog.c:5577 +#: access/transam/xlog.c:5578 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "スタンバイモードはシングルユーザーサーバーではサポートされません" -#: access/transam/xlog.c:5594 +#: access/transam/xlog.c:5595 #, c-format msgid "specified neither primary_conninfo nor restore_command" msgstr "primary_conninfo と restore_command のどちらも指定されていません" -#: access/transam/xlog.c:5595 +#: access/transam/xlog.c:5596 #, c-format msgid "The database server will regularly poll the pg_wal subdirectory to check for files placed there." msgstr "データベースサーバーはpg_walサブディレクトリに置かれたファイルを定期的に確認します。" -#: access/transam/xlog.c:5603 +#: access/transam/xlog.c:5604 #, c-format msgid "must specify restore_command when standby mode is not enabled" msgstr "スタンバイモードを有効にしない場合は、restore_command の指定が必要です" -#: access/transam/xlog.c:5641 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery target timeline %u does not exist" msgstr "リカバリ目標タイムライン%uが存在しません" -#: access/transam/xlog.c:5762 +#: access/transam/xlog.c:5763 #, c-format msgid "archive recovery complete" msgstr "アーカイブリカバリが完了しました" -#: access/transam/xlog.c:5828 access/transam/xlog.c:6104 +#: access/transam/xlog.c:5829 access/transam/xlog.c:6105 #, c-format msgid "recovery stopping after reaching consistency" msgstr "リカバリ処理は一貫性確保後に停止します" -#: access/transam/xlog.c:5849 +#: access/transam/xlog.c:5850 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "リカバリ処理はWAL位置(LSN)\"%X/%X\"の前で停止します" -#: access/transam/xlog.c:5939 +#: access/transam/xlog.c:5940 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのコミット、時刻%sの前に停止します" -#: access/transam/xlog.c:5946 +#: access/transam/xlog.c:5947 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのアボート、時刻%sの前に停止します" -#: access/transam/xlog.c:5999 +#: access/transam/xlog.c:6000 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "リカバリ処理は復元ポイント\"%s\"、時刻%s に停止します" -#: access/transam/xlog.c:6017 +#: access/transam/xlog.c:6018 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "リカバリ処理はWAL位置(LSN)\"%X/%X\"の後で停止します" -#: access/transam/xlog.c:6084 +#: access/transam/xlog.c:6085 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのコミット、時刻%sの後に停止します" -#: access/transam/xlog.c:6092 +#: access/transam/xlog.c:6093 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのアボート、時刻%sの後に停止します" -#: access/transam/xlog.c:6137 +#: access/transam/xlog.c:6138 #, c-format msgid "pausing at the end of recovery" msgstr "リカバリ完了位置で一時停止しています" -#: access/transam/xlog.c:6138 +#: access/transam/xlog.c:6139 #, c-format msgid "Execute pg_wal_replay_resume() to promote." msgstr "再開するには pg_wal_replay_resume() を実行してください" -#: access/transam/xlog.c:6141 access/transam/xlog.c:6423 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6424 #, c-format msgid "recovery has paused" msgstr "リカバリは一時停止中です" -#: access/transam/xlog.c:6142 +#: access/transam/xlog.c:6143 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "再開するには pg_xlog_replay_resume() を実行してください" -#: access/transam/xlog.c:6414 +#: access/transam/xlog.c:6415 #, c-format msgid "hot standby is not possible because of insufficient parameter settings" msgstr "パラメータ設定値が十分でないため、ホットスタンバイを使用できません" -#: access/transam/xlog.c:6415 access/transam/xlog.c:6442 access/transam/xlog.c:6472 +#: access/transam/xlog.c:6416 access/transam/xlog.c:6443 access/transam/xlog.c:6473 #, c-format msgid "%s = %d is a lower setting than on the primary server, where its value was %d." msgstr "%s = %d はプライマリサーバーでの設定値%dより小さいです。" -#: access/transam/xlog.c:6424 +#: access/transam/xlog.c:6425 #, c-format msgid "If recovery is unpaused, the server will shut down." msgstr "一時停止が解除されると、サーバーはシャットダウンします。" -#: access/transam/xlog.c:6425 +#: access/transam/xlog.c:6426 #, c-format msgid "You can then restart the server after making the necessary configuration changes." msgstr "その後必要な設定変更を行い、サーバーを再起動できます。" -#: access/transam/xlog.c:6436 +#: access/transam/xlog.c:6437 #, c-format msgid "promotion is not possible because of insufficient parameter settings" msgstr "パラメータ設定値が十分でないため昇格できません" -#: access/transam/xlog.c:6446 +#: access/transam/xlog.c:6447 #, c-format msgid "Restart the server after making the necessary configuration changes." msgstr "必要な設定変更を行った後にサーバーを再起動してください。" -#: access/transam/xlog.c:6470 +#: access/transam/xlog.c:6471 #, c-format msgid "recovery aborted because of insufficient parameter settings" msgstr "パラメータの設定値が不足しているためリカバリを中断しました" -#: access/transam/xlog.c:6476 +#: access/transam/xlog.c:6477 #, c-format msgid "You can restart the server after making the necessary configuration changes." msgstr "必要な設定変更を行った後、再起動することができます。" -#: access/transam/xlog.c:6498 +#: access/transam/xlog.c:6499 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "wal_level=minimal でWALが生成されました、リカバリは継続できません" -#: access/transam/xlog.c:6499 +#: access/transam/xlog.c:6500 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "これは一時的に wal_level=minimal にした場合に起こります。" -#: access/transam/xlog.c:6500 +#: access/transam/xlog.c:6501 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "wal_levelをminimalより上に設定したあとに取得されたバックアップを使用してください。" -#: access/transam/xlog.c:6569 +#: access/transam/xlog.c:6570 #, c-format msgid "control file contains invalid checkpoint location" msgstr "制御ファイル内のチェックポイント位置が不正です" -#: access/transam/xlog.c:6580 +#: access/transam/xlog.c:6581 #, c-format msgid "database system was shut down at %s" msgstr "データベースシステムは %s にシャットダウンしました" -#: access/transam/xlog.c:6586 +#: access/transam/xlog.c:6587 #, c-format msgid "database system was shut down in recovery at %s" msgstr "データベースシステムはリカバリ中 %s にシャットダウンしました" -#: access/transam/xlog.c:6592 +#: access/transam/xlog.c:6593 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "データベースシステムはシャットダウン中に中断されました; %s まで動作していたことは確認できます" -#: access/transam/xlog.c:6598 +#: access/transam/xlog.c:6599 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "データベースシステムはリカバリ中 %s に中断されました" -#: access/transam/xlog.c:6600 +#: access/transam/xlog.c:6601 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "これはおそらくデータ破損があり、リカバリのために直前のバックアップを使用しなければならないことを意味します。" -#: access/transam/xlog.c:6606 +#: access/transam/xlog.c:6607 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "データベースシステムはリカバリ中ログ時刻 %s に中断されました" -#: access/transam/xlog.c:6608 +#: access/transam/xlog.c:6609 #, 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 "これが1回以上起きた場合はデータが破損している可能性があるため、より以前のリカバリ目標を選ぶ必要があるかもしれません。" -#: access/transam/xlog.c:6614 +#: access/transam/xlog.c:6615 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "データベースシステムは中断されました: %s まで動作していたことは確認できます" -#: access/transam/xlog.c:6620 +#: access/transam/xlog.c:6621 #, c-format msgid "control file contains invalid database cluster state" msgstr "制御ファイル内のデータベース・クラスタ状態が不正です" -#: access/transam/xlog.c:6677 +#: access/transam/xlog.c:6678 #, c-format msgid "entering standby mode" msgstr "スタンバイモードに入ります" -#: access/transam/xlog.c:6680 +#: access/transam/xlog.c:6681 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "XID%uまでのポイントインタイムリカバリを開始します" -#: access/transam/xlog.c:6684 +#: access/transam/xlog.c:6685 #, c-format msgid "starting point-in-time recovery to %s" msgstr "%sまでのポイントインタイムリカバリを開始します" -#: access/transam/xlog.c:6688 +#: access/transam/xlog.c:6689 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "\"%s\"までのポイントインタイムリカバリを開始します" -#: access/transam/xlog.c:6692 +#: access/transam/xlog.c:6693 #, c-format msgid "starting point-in-time recovery to WAL location (LSN) \"%X/%X\"" msgstr "WAL位置(LSN) \"%X/%X\"までのポイントインタイムリカバリを開始します" -#: access/transam/xlog.c:6696 +#: access/transam/xlog.c:6697 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "最も古い一貫性確保点までのポイントインタイムリカバリを開始します" -#: access/transam/xlog.c:6699 +#: access/transam/xlog.c:6700 #, c-format msgid "starting archive recovery" msgstr "アーカイブリカバリを開始しています" -#: access/transam/xlog.c:6773 +#: access/transam/xlog.c:6774 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "チェックポイントレコードが参照している redo 位置を見つけられませんでした" -#: access/transam/xlog.c:6774 access/transam/xlog.c:6784 +#: access/transam/xlog.c:6775 access/transam/xlog.c:6785 #, c-format msgid "" "If you are restoring from a backup, touch \"%s/recovery.signal\" and add required recovery options.\n" @@ -2360,475 +2365,475 @@ msgstr "" "バックアップからの復旧でなければ、\"%s/backup_label\"の削除を試みてください。.\n" "バックアップから復旧で\"%s/backup_label\"を削除すると、クラスタは壊れた状態で復旧されることに注意してください。" -#: access/transam/xlog.c:6783 +#: access/transam/xlog.c:6784 #, c-format msgid "could not locate required checkpoint record" msgstr "必要なチェックポイントが見つかりませんでした" -#: access/transam/xlog.c:6812 commands/tablespace.c:665 +#: access/transam/xlog.c:6813 commands/tablespace.c:665 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "シンボリックリンク\"%s\"を作成できませんでした: %m" -#: access/transam/xlog.c:6844 access/transam/xlog.c:6850 +#: access/transam/xlog.c:6845 access/transam/xlog.c:6851 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ファイル\"%2$s\"が存在しないためファイル\"%1$s\"を無視します" -#: access/transam/xlog.c:6846 access/transam/xlog.c:12460 +#: access/transam/xlog.c:6847 access/transam/xlog.c:12461 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "ファイル\"%s\"は\"%s\"にリネームされました。" -#: access/transam/xlog.c:6852 +#: access/transam/xlog.c:6853 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m。" -#: access/transam/xlog.c:6903 +#: access/transam/xlog.c:6904 #, c-format msgid "could not locate a valid checkpoint record" msgstr "有効なチェックポイントが見つかりませんでした" -#: access/transam/xlog.c:6941 +#: access/transam/xlog.c:6942 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "要求されたタイムライン%uはこのサーバーの履歴からの子孫ではありません" -#: access/transam/xlog.c:6943 +#: access/transam/xlog.c:6944 #, 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 "タイムライン%3$uの最終チェックポイントは%1$X/%2$Xですが、要求されたタイムラインの履歴の中ではサーバーはそのタイムラインから%4$X/%5$Xで分岐しています。" -#: access/transam/xlog.c:6957 +#: access/transam/xlog.c:6958 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "要求されたタイムライン%1$uはタイムライン%4$uの最小リカバリポイント%2$X/%3$Xを含みません" -#: access/transam/xlog.c:6987 +#: access/transam/xlog.c:6988 #, c-format msgid "invalid next transaction ID" msgstr "次のトランザクションIDが不正です" -#: access/transam/xlog.c:7087 +#: access/transam/xlog.c:7088 #, c-format msgid "invalid redo in checkpoint record" msgstr "チェックポイントレコード内の不正なREDO" -#: access/transam/xlog.c:7098 +#: access/transam/xlog.c:7099 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "シャットダウン・チェックポイントにおける不正なREDOレコード" -#: access/transam/xlog.c:7138 +#: access/transam/xlog.c:7139 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "データベースシステムは正しくシャットダウンされていません; 自動リカバリを実行中" -#: access/transam/xlog.c:7142 +#: access/transam/xlog.c:7143 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "タイムライン%uから、タイムライン%uを目標としてクラッシュリカバリを開始します" -#: access/transam/xlog.c:7189 +#: access/transam/xlog.c:7190 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_labelに制御ファイルと整合しないデータが含まれます" -#: access/transam/xlog.c:7190 +#: access/transam/xlog.c:7191 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "これはバックアップが破損しており、リカバリには他のバックアップを使用しなければならないことを意味します。" -#: access/transam/xlog.c:7417 +#: access/transam/xlog.c:7418 #, c-format msgid "redo starts at %X/%X" msgstr "REDOを%X/%Xから開始します" -#: access/transam/xlog.c:7642 +#: access/transam/xlog.c:7643 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "要求されたリカバリ停止ポイントは、一貫性があるリカバリポイントより前にあります" -#: access/transam/xlog.c:7680 +#: access/transam/xlog.c:7681 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "REDOが%X/%Xで終了 システム使用状況: %s" -#: access/transam/xlog.c:7686 +#: access/transam/xlog.c:7687 #, c-format msgid "last completed transaction was at log time %s" msgstr "最後に完了したトランザクションのログ時刻は%sでした" -#: access/transam/xlog.c:7695 +#: access/transam/xlog.c:7696 #, c-format msgid "redo is not required" msgstr "REDOは必要ありません" -#: access/transam/xlog.c:7707 +#: access/transam/xlog.c:7708 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "指定したリカバリターゲットに到達する前にリカバリが終了しました" -#: access/transam/xlog.c:7791 access/transam/xlog.c:7795 +#: access/transam/xlog.c:7792 access/transam/xlog.c:7796 #, c-format msgid "WAL ends before end of online backup" msgstr "オンラインバックアップの終了より前にWALが終了しました" -#: access/transam/xlog.c:7792 +#: access/transam/xlog.c:7793 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "オンラインバックアップ中に生成されたすべてのWALがリカバリで利用可能である必要があります。" -#: access/transam/xlog.c:7796 +#: access/transam/xlog.c:7797 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "pg_start_backup() を使ったオンラインバックアップは pg_stop_backup() で終了なければならず、かつその時点までのすべてのWALはリカバリで利用可能である必要があります" -#: access/transam/xlog.c:7799 +#: access/transam/xlog.c:7800 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WALが一貫性があるリカバリポイントより前で終了しました" -#: access/transam/xlog.c:7842 +#: access/transam/xlog.c:7843 #, c-format msgid "selected new timeline ID: %u" msgstr "新しいタイムラインIDを選択: %u" -#: access/transam/xlog.c:8310 +#: access/transam/xlog.c:8311 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "%2$s で想定外のディレクトリエントリ\"%1$s\"が見つかりました" -#: access/transam/xlog.c:8312 +#: access/transam/xlog.c:8313 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "Pg_tblspc/ のすべてのディレクトリエントリは、シンボリックリンクである必要があります。" -#: access/transam/xlog.c:8313 +#: access/transam/xlog.c:8314 #, c-format msgid "Remove those directories, or set allow_in_place_tablespaces to ON transiently to let recovery complete." msgstr "これらのディレクトリを削除するか、またはallow_in_place_tablespacesを一時的にONに設定することでリカバリを完了させることができます。" -#: access/transam/xlog.c:8397 +#: access/transam/xlog.c:8398 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "%X/%X でリカバリの一貫性が確保されました" -#: access/transam/xlog.c:8606 +#: access/transam/xlog.c:8607 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "制御ファイル内の最初のチェックポイントへのリンクが不正です" -#: access/transam/xlog.c:8610 +#: access/transam/xlog.c:8611 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "backup_labelファイル内のチェックポイントへのリンクが不正です" -#: access/transam/xlog.c:8628 +#: access/transam/xlog.c:8629 #, c-format msgid "invalid primary checkpoint record" msgstr "最初のチェックポイントレコードが不正です" -#: access/transam/xlog.c:8632 +#: access/transam/xlog.c:8633 #, c-format msgid "invalid checkpoint record" msgstr "チェックポイントレコードが不正です" -#: access/transam/xlog.c:8643 +#: access/transam/xlog.c:8644 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "プライマリチェックポイントレコード内のリソースマネージャIDが不正です" -#: access/transam/xlog.c:8647 +#: access/transam/xlog.c:8648 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "チェックポイントレコード内のリソースマネージャIDがで不正です" -#: access/transam/xlog.c:8660 +#: access/transam/xlog.c:8661 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "最初のチェックポイントレコード内のxl_infoが不正です" -#: access/transam/xlog.c:8664 +#: access/transam/xlog.c:8665 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "チェックポイントレコード内のxl_infoが不正です" -#: access/transam/xlog.c:8675 +#: access/transam/xlog.c:8676 #, c-format msgid "invalid length of primary checkpoint record" msgstr "最初のチェックポイントレコード長が不正です" -#: access/transam/xlog.c:8679 +#: access/transam/xlog.c:8680 #, c-format msgid "invalid length of checkpoint record" msgstr "チェックポイントレコード長が不正です" -#: access/transam/xlog.c:8860 +#: access/transam/xlog.c:8861 #, c-format msgid "shutting down" msgstr "シャットダウン処理中" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8899 +#: access/transam/xlog.c:8900 #, c-format msgid "restartpoint starting:%s%s%s%s%s%s%s%s" msgstr "リスタートポイント開始:%s%s%s%s%s%s%s%s" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8911 +#: access/transam/xlog.c:8912 #, c-format msgid "checkpoint starting:%s%s%s%s%s%s%s%s" msgstr "チェックポイント開始:%s%s%s%s%s%s%s%s" -#: access/transam/xlog.c:8971 +#: access/transam/xlog.c:8972 #, c-format msgid "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "リスタートポイント完了: %d個のバッファを出力 (%.1f%%); %d個のWALファイルを追加、%d個を削除、%d個を再利用; 書き出し=%ld.%03d秒, 同期=%ld.%03d秒, 全体=%ld.%03d秒; 同期したファイル=%d, 最長=%ld.%03d秒, 平均=%ld.%03d秒; 距離=%d kB, 予測=%d kB" -#: access/transam/xlog.c:8991 +#: access/transam/xlog.c:8992 #, c-format msgid "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "チェックポイント完了: %d個のバッファを出力 (%.1f%%); %d個のWALファイルを追加、%d個を削除、%d個を再利用; 書き出し=%ld.%03d秒, 同期=%ld.%03d秒, 全体=%ld.%03d秒; 同期したファイル=%d, 最長=%ld.%03d秒, 平均=%ld.%03d秒; 距離=%d kB, 予測=%d kB" -#: access/transam/xlog.c:9452 +#: access/transam/xlog.c:9453 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "データベースのシャットダウンに並行して、先行書き込みログが発生しました" -#: access/transam/xlog.c:10011 +#: access/transam/xlog.c:10012 #, c-format msgid "recovery restart point at %X/%X" msgstr "リカバリ再開ポイントは%X/%Xです" -#: access/transam/xlog.c:10013 +#: access/transam/xlog.c:10014 #, c-format msgid "Last completed transaction was at log time %s." msgstr "最後に完了したトランザクションはログ時刻 %s のものです" -#: access/transam/xlog.c:10261 +#: access/transam/xlog.c:10262 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "復帰ポイント\"%s\"が%X/%Xに作成されました" -#: access/transam/xlog.c:10406 +#: access/transam/xlog.c:10407 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "チェックポイントレコードにおいて想定外の前回のタイムラインID %u(現在のタイムラインIDは%u)がありました" -#: access/transam/xlog.c:10415 +#: access/transam/xlog.c:10416 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "チェックポイントレコードにおいて想定外のタイムラインID %u (%uの後)がありました" -#: access/transam/xlog.c:10431 +#: access/transam/xlog.c:10432 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "タイムライン%4$uの最小リカバリポイント%2$X/%3$Xに達する前のチェックポイントレコード内の想定外のタイムラインID%1$u。" -#: access/transam/xlog.c:10506 +#: access/transam/xlog.c:10507 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "オンラインバックアップはキャンセルされ、リカバリを継続できません" -#: access/transam/xlog.c:10563 access/transam/xlog.c:10619 access/transam/xlog.c:10649 +#: access/transam/xlog.c:10564 access/transam/xlog.c:10620 access/transam/xlog.c:10650 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "チェックポイントレコードにおいて想定外のタイムラインID %u(%uのはず)がありました" -#: access/transam/xlog.c:10807 +#: access/transam/xlog.c:10808 #, c-format msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" msgstr "%X/%Xで%sに上書きされて失われた継続行を正常にスキップしました" -#: access/transam/xlog.c:11022 +#: access/transam/xlog.c:11023 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "ライトスルーファイル\"%s\"をfsyncできませんでした: %m" -#: access/transam/xlog.c:11028 +#: access/transam/xlog.c:11029 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "ファイル\"%s\"をfdatasyncできませんでした: %m" -#: access/transam/xlog.c:11139 access/transam/xlog.c:11676 access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 +#: access/transam/xlog.c:11140 access/transam/xlog.c:11677 access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "リカバリ中はWAL制御関数は実行できません。" -#: access/transam/xlog.c:11148 access/transam/xlog.c:11685 +#: access/transam/xlog.c:11149 access/transam/xlog.c:11686 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "オンラインバックアップを行うにはWALレベルが不十分です" -#: access/transam/xlog.c:11149 access/transam/xlog.c:11686 access/transam/xlogfuncs.c:308 +#: access/transam/xlog.c:11150 access/transam/xlog.c:11687 access/transam/xlogfuncs.c:308 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "サーバーの開始時にwal_levelを\"replica\"または \"logical\"にセットする必要があります。" -#: access/transam/xlog.c:11154 +#: access/transam/xlog.c:11155 #, c-format msgid "backup label too long (max %d bytes)" msgstr "バックアップラベルが長すぎます (最大%dバイト)" -#: access/transam/xlog.c:11191 access/transam/xlog.c:11475 access/transam/xlog.c:11513 +#: access/transam/xlog.c:11192 access/transam/xlog.c:11476 access/transam/xlog.c:11514 #, c-format msgid "a backup is already in progress" msgstr "すでにバックアップが進行中です" -#: access/transam/xlog.c:11192 +#: access/transam/xlog.c:11193 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "pg_stop_backup()を実行後に再試行してください" -#: access/transam/xlog.c:11288 +#: access/transam/xlog.c:11289 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "full_page_writes=off で生成されたWALは最終リスタートポイントから再生されます" -#: access/transam/xlog.c:11290 access/transam/xlog.c:11881 +#: access/transam/xlog.c:11291 access/transam/xlog.c:11882 #, 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 primary, and then try an online backup again." msgstr "つまりこのスタンバイで取得されたバックアップは破損しており、使用すべきではありません。プライマリでfull_page_writesを有効にしCHECKPOINTを実行したのち、再度オンラインバックアップを試行してください。" -#: access/transam/xlog.c:11374 replication/basebackup.c:1433 utils/adt/misc.c:367 +#: access/transam/xlog.c:11375 replication/basebackup.c:1433 utils/adt/misc.c:367 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "シンボリックリンク\"%s\"の参照先が長すぎます" -#: access/transam/xlog.c:11424 commands/tablespace.c:385 commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 +#: access/transam/xlog.c:11425 commands/tablespace.c:385 commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 #, c-format msgid "tablespaces are not supported on this platform" msgstr "このプラットフォームではテーブル空間はサポートしていません" -#: access/transam/xlog.c:11476 access/transam/xlog.c:11514 +#: access/transam/xlog.c:11477 access/transam/xlog.c:11515 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "バックアップが進行中でないことが確かであれば、ファイル\"%s\"を削除し再実行してください。" -#: access/transam/xlog.c:11701 +#: access/transam/xlog.c:11702 #, c-format msgid "exclusive backup not in progress" msgstr "排他バックアップは進行中ではありません" -#: access/transam/xlog.c:11728 +#: access/transam/xlog.c:11729 #, c-format msgid "a backup is not in progress" msgstr "バックアップが進行中ではありません" -#: access/transam/xlog.c:11814 access/transam/xlog.c:11827 access/transam/xlog.c:12218 access/transam/xlog.c:12224 access/transam/xlog.c:12272 access/transam/xlog.c:12352 access/transam/xlog.c:12376 access/transam/xlogfuncs.c:733 +#: access/transam/xlog.c:11815 access/transam/xlog.c:11828 access/transam/xlog.c:12219 access/transam/xlog.c:12225 access/transam/xlog.c:12273 access/transam/xlog.c:12353 access/transam/xlog.c:12377 access/transam/xlogfuncs.c:733 #, c-format msgid "invalid data in file \"%s\"" msgstr "ファイル\"%s\"内の不正なデータ" -#: access/transam/xlog.c:11831 replication/basebackup.c:1287 +#: access/transam/xlog.c:11832 replication/basebackup.c:1287 #, c-format msgid "the standby was promoted during online backup" msgstr "オンラインバックアップ中にスタンバイが昇格しました" -#: access/transam/xlog.c:11832 replication/basebackup.c:1288 +#: access/transam/xlog.c:11833 replication/basebackup.c:1288 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "つまり取得中のバックアップは破損しているため使用してはいけません。再度オンラインバックアップを取得してください。" -#: access/transam/xlog.c:11879 +#: access/transam/xlog.c:11880 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "full_page_writes=offで生成されたWALはオンラインバックアップ中に再生されます" -#: access/transam/xlog.c:11999 +#: access/transam/xlog.c:12000 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "ベースバックアップ完了、必要な WAL セグメントがアーカイブされるのを待っています" -#: access/transam/xlog.c:12011 +#: access/transam/xlog.c:12012 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "まだ必要なすべての WAL セグメントがアーカイブされるのを待っています(%d 秒経過)" -#: access/transam/xlog.c:12013 +#: access/transam/xlog.c:12014 #, c-format msgid "Check that your archive_command is executing properly. You can safely cancel this backup, but the database backup will not be usable without all the WAL segments." msgstr "archive_commandが適切に実行されていることを確認してください。バックアップ処理は安全に取り消すことができますが、全てのWALセグメントがそろわなければこのバックアップは利用できません。" -#: access/transam/xlog.c:12020 +#: access/transam/xlog.c:12021 #, c-format msgid "all required WAL segments have been archived" msgstr "必要なすべての WAL セグメントがアーカイブされました" -#: access/transam/xlog.c:12024 +#: access/transam/xlog.c:12025 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "WAL アーカイブが有効になっていません。バックアップを完了させるには、すべての必要なWALセグメントが他の方法でコピーされたことを確認してください。" -#: access/transam/xlog.c:12079 +#: access/transam/xlog.c:12080 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "バックエンドが pg_stop_backup の呼び出し前に終了したため、バックアップは異常終了しました" -#: access/transam/xlog.c:12273 +#: access/transam/xlog.c:12274 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "読み取られたタイムラインIDは%uでしたが、%uであるはずです。" #. translator: %s is a WAL record description -#: access/transam/xlog.c:12401 +#: access/transam/xlog.c:12402 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "%X/%Xにある%sのWAL再生" -#: access/transam/xlog.c:12449 +#: access/transam/xlog.c:12450 #, c-format msgid "online backup mode was not canceled" msgstr "オンラインバックアップモードはキャンセルされていません" -#: access/transam/xlog.c:12450 +#: access/transam/xlog.c:12451 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m。" -#: access/transam/xlog.c:12459 access/transam/xlog.c:12471 access/transam/xlog.c:12481 +#: access/transam/xlog.c:12460 access/transam/xlog.c:12472 access/transam/xlog.c:12482 #, c-format msgid "online backup mode canceled" msgstr "オンラインバックアップモードがキャンセルされました" -#: access/transam/xlog.c:12472 +#: access/transam/xlog.c:12473 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "ファイル\"%s\"、\"%s\"の名前はそれぞれ\"%s\"、\"%s\"へと変更されました。" -#: access/transam/xlog.c:12482 +#: access/transam/xlog.c:12483 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "ファイル\"%s\"の名前は\"%s\"に変更できましたが、\"%s\"の名前は\"%s\"に変更できませんでした: %m" -#: access/transam/xlog.c:12615 access/transam/xlogutils.c:967 +#: access/transam/xlog.c:12616 access/transam/xlogutils.c:967 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "ログセグメント%s、オフセット%uを読み取れませんでした: %m" -#: access/transam/xlog.c:12621 access/transam/xlogutils.c:974 +#: access/transam/xlog.c:12622 access/transam/xlogutils.c:974 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "ログセグメント%1$s、オフセット%2$uを読み取れませんでした: %4$zu 中 %3$d の読み取り" -#: access/transam/xlog.c:13188 +#: access/transam/xlog.c:13199 #, c-format msgid "WAL receiver process shutdown requested" msgstr "WAL受信プロセスのシャットダウンが要求されました" -#: access/transam/xlog.c:13294 +#: access/transam/xlog.c:13311 #, c-format msgid "received promote request" msgstr "昇格要求を受信しました" -#: access/transam/xlog.c:13307 +#: access/transam/xlog.c:13324 #, c-format msgid "promote trigger file found: %s" msgstr "昇格トリガーファイルがあります: %s" -#: access/transam/xlog.c:13315 +#: access/transam/xlog.c:13332 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "昇格トリガーファイル\"%s\"のstatに失敗しました: %m" @@ -2887,13 +2892,13 @@ msgid "Did you mean to use pg_stop_backup('f')?" msgstr "pg_stop_backup('f') を実行しようとしていたのではないですか?" #: access/transam/xlogfuncs.c:185 commands/event_trigger.c:1311 commands/event_trigger.c:1869 commands/extension.c:1966 commands/extension.c:2074 commands/extension.c:2359 commands/prepare.c:713 executor/execExpr.c:2518 executor/execSRF.c:738 executor/functions.c:1074 foreign/foreign.c:530 libpq/hba.c:2726 replication/logical/launcher.c:937 replication/logical/logicalfuncs.c:157 replication/logical/origin.c:1494 replication/slotfuncs.c:255 -#: replication/walsender.c:3332 storage/ipc/shmem.c:554 utils/adt/datetime.c:4812 utils/adt/genfile.c:507 utils/adt/genfile.c:590 utils/adt/jsonfuncs.c:1944 utils/adt/jsonfuncs.c:2056 utils/adt/jsonfuncs.c:2244 utils/adt/jsonfuncs.c:2353 utils/adt/jsonfuncs.c:3814 utils/adt/mcxtfuncs.c:132 utils/adt/misc.c:219 utils/adt/pgstatfuncs.c:477 utils/adt/pgstatfuncs.c:587 utils/adt/pgstatfuncs.c:1887 utils/adt/varlena.c:4821 utils/fmgr/funcapi.c:74 +#: replication/walsender.c:3346 storage/ipc/shmem.c:554 utils/adt/datetime.c:4812 utils/adt/genfile.c:507 utils/adt/genfile.c:590 utils/adt/jsonfuncs.c:1944 utils/adt/jsonfuncs.c:2056 utils/adt/jsonfuncs.c:2244 utils/adt/jsonfuncs.c:2353 utils/adt/jsonfuncs.c:3814 utils/adt/mcxtfuncs.c:132 utils/adt/misc.c:219 utils/adt/pgstatfuncs.c:477 utils/adt/pgstatfuncs.c:587 utils/adt/pgstatfuncs.c:1887 utils/adt/varlena.c:4821 utils/fmgr/funcapi.c:74 #: utils/misc/guc.c:10088 utils/mmgr/portalmem.c:1145 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "集合を受け付けないコンテキストで集合値関数が呼び出されました" -#: access/transam/xlogfuncs.c:189 commands/event_trigger.c:1315 commands/event_trigger.c:1873 commands/extension.c:1970 commands/extension.c:2078 commands/extension.c:2363 commands/prepare.c:717 foreign/foreign.c:535 libpq/hba.c:2730 replication/logical/launcher.c:941 replication/logical/logicalfuncs.c:161 replication/logical/origin.c:1498 replication/slotfuncs.c:259 replication/walsender.c:3336 storage/ipc/shmem.c:558 utils/adt/datetime.c:4816 +#: access/transam/xlogfuncs.c:189 commands/event_trigger.c:1315 commands/event_trigger.c:1873 commands/extension.c:1970 commands/extension.c:2078 commands/extension.c:2363 commands/prepare.c:717 foreign/foreign.c:535 libpq/hba.c:2730 replication/logical/launcher.c:941 replication/logical/logicalfuncs.c:161 replication/logical/origin.c:1498 replication/slotfuncs.c:259 replication/walsender.c:3350 storage/ipc/shmem.c:558 utils/adt/datetime.c:4816 #: utils/adt/genfile.c:511 utils/adt/genfile.c:594 utils/adt/mcxtfuncs.c:136 utils/adt/misc.c:223 utils/adt/pgstatfuncs.c:481 utils/adt/pgstatfuncs.c:591 utils/adt/pgstatfuncs.c:1891 utils/adt/varlena.c:4825 utils/misc/guc.c:10092 utils/misc/pg_config.c:43 utils/mmgr/portalmem.c:1149 #, c-format msgid "materialize mode required, but it is not allowed in this context" @@ -3246,12 +3251,12 @@ msgstr "列権限はリレーションに対してのみ有効です" msgid "large object %u does not exist" msgstr "ラージオブジェクト%uは存在しません" -#: catalog/aclchk.c:927 catalog/aclchk.c:936 commands/collationcmds.c:119 commands/copy.c:365 commands/copy.c:385 commands/copy.c:395 commands/copy.c:404 commands/copy.c:413 commands/copy.c:423 commands/copy.c:432 commands/copy.c:441 commands/copy.c:459 commands/copy.c:475 commands/copy.c:495 commands/copy.c:512 commands/dbcommands.c:158 commands/dbcommands.c:167 commands/dbcommands.c:176 commands/dbcommands.c:185 commands/dbcommands.c:194 +#: catalog/aclchk.c:927 catalog/aclchk.c:936 commands/collationcmds.c:119 commands/copy.c:402 commands/copy.c:422 commands/copy.c:432 commands/copy.c:441 commands/copy.c:450 commands/copy.c:460 commands/copy.c:469 commands/copy.c:478 commands/copy.c:496 commands/copy.c:512 commands/copy.c:532 commands/copy.c:549 commands/dbcommands.c:158 commands/dbcommands.c:167 commands/dbcommands.c:176 commands/dbcommands.c:185 commands/dbcommands.c:194 #: commands/dbcommands.c:203 commands/dbcommands.c:212 commands/dbcommands.c:221 commands/dbcommands.c:230 commands/dbcommands.c:239 commands/dbcommands.c:261 commands/dbcommands.c:1541 commands/dbcommands.c:1550 commands/dbcommands.c:1559 commands/dbcommands.c:1568 commands/extension.c:1757 commands/extension.c:1767 commands/extension.c:1777 commands/extension.c:3074 commands/foreigncmds.c:550 commands/foreigncmds.c:559 commands/functioncmds.c:606 #: commands/functioncmds.c:772 commands/functioncmds.c:781 commands/functioncmds.c:790 commands/functioncmds.c:799 commands/functioncmds.c:2097 commands/functioncmds.c:2105 commands/publicationcmds.c:87 commands/publicationcmds.c:130 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/sequence.c:1354 #: commands/subscriptioncmds.c:124 commands/subscriptioncmds.c:134 commands/subscriptioncmds.c:144 commands/subscriptioncmds.c:154 commands/subscriptioncmds.c:170 commands/subscriptioncmds.c:181 commands/subscriptioncmds.c:195 commands/subscriptioncmds.c:205 commands/subscriptioncmds.c:215 commands/tablecmds.c:7717 commands/typecmds.c:335 commands/typecmds.c:1416 commands/typecmds.c:1425 commands/typecmds.c:1433 commands/typecmds.c:1441 commands/typecmds.c:1449 #: commands/typecmds.c:1457 commands/user.c:133 commands/user.c:147 commands/user.c:156 commands/user.c:165 commands/user.c:174 commands/user.c:183 commands/user.c:192 commands/user.c:201 commands/user.c:210 commands/user.c:219 commands/user.c:228 commands/user.c:237 commands/user.c:246 commands/user.c:582 commands/user.c:590 commands/user.c:598 commands/user.c:606 commands/user.c:614 commands/user.c:622 commands/user.c:630 commands/user.c:638 commands/user.c:647 -#: commands/user.c:655 commands/user.c:663 parser/parse_utilcmd.c:402 replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 replication/pgoutput/pgoutput.c:254 replication/walsender.c:883 replication/walsender.c:894 replication/walsender.c:904 +#: commands/user.c:655 commands/user.c:663 parser/parse_utilcmd.c:402 replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 replication/pgoutput/pgoutput.c:254 replication/walsender.c:897 replication/walsender.c:908 replication/walsender.c:918 #, c-format msgid "conflicting or redundant options" msgstr "競合するオプション、あるいは余計なオプションがあります" @@ -3266,7 +3271,7 @@ msgstr "デフォルト権限は列には設定できません" msgid "cannot use IN SCHEMA clause when using GRANT/REVOKE ON SCHEMAS" msgstr "GRANT/REVOKE ON SCHEMAS を使っている時には IN SCHEMA 句は指定できません" -#: catalog/aclchk.c:1545 catalog/catalog.c:587 catalog/objectaddress.c:1522 commands/analyze.c:390 commands/copy.c:744 commands/sequence.c:1709 commands/tablecmds.c:7180 commands/tablecmds.c:7336 commands/tablecmds.c:7386 commands/tablecmds.c:7460 commands/tablecmds.c:7530 commands/tablecmds.c:7642 commands/tablecmds.c:7736 commands/tablecmds.c:7795 commands/tablecmds.c:7884 commands/tablecmds.c:7913 commands/tablecmds.c:8068 commands/tablecmds.c:8150 +#: catalog/aclchk.c:1545 catalog/catalog.c:587 catalog/objectaddress.c:1522 commands/analyze.c:390 commands/copy.c:781 commands/sequence.c:1709 commands/tablecmds.c:7180 commands/tablecmds.c:7336 commands/tablecmds.c:7386 commands/tablecmds.c:7460 commands/tablecmds.c:7530 commands/tablecmds.c:7642 commands/tablecmds.c:7736 commands/tablecmds.c:7795 commands/tablecmds.c:7884 commands/tablecmds.c:7913 commands/tablecmds.c:8068 commands/tablecmds.c:8150 #: commands/tablecmds.c:8306 commands/tablecmds.c:8428 commands/tablecmds.c:11908 commands/tablecmds.c:12100 commands/tablecmds.c:12260 commands/tablecmds.c:13446 commands/tablecmds.c:15993 commands/trigger.c:942 parser/analyze.c:2471 parser/parse_relation.c:714 parser/parse_target.c:1077 parser/parse_type.c:144 parser/parse_utilcmd.c:3425 parser/parse_utilcmd.c:3461 parser/parse_utilcmd.c:3503 utils/adt/acl.c:2862 utils/adt/ruleutils.c:2732 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" @@ -3856,8 +3861,8 @@ msgstr[1] "" msgid "cannot drop %s because other objects depend on it" msgstr "他のオブジェクトが依存しているため%sを削除できません" -#: catalog/dependency.c:1204 catalog/dependency.c:1211 catalog/dependency.c:1223 commands/tablecmds.c:1301 commands/tablecmds.c:14064 commands/tablespace.c:464 commands/user.c:1095 commands/view.c:506 libpq/auth.c:346 replication/syncrep.c:1110 storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1447 utils/misc/guc.c:7140 utils/misc/guc.c:7176 utils/misc/guc.c:7246 utils/misc/guc.c:11490 utils/misc/guc.c:11524 utils/misc/guc.c:11558 utils/misc/guc.c:11601 -#: utils/misc/guc.c:11643 +#: catalog/dependency.c:1204 catalog/dependency.c:1211 catalog/dependency.c:1223 commands/tablecmds.c:1301 commands/tablecmds.c:14064 commands/tablespace.c:464 commands/user.c:1095 commands/view.c:506 libpq/auth.c:346 replication/slot.c:181 replication/syncrep.c:1110 storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1447 utils/misc/guc.c:7140 utils/misc/guc.c:7176 utils/misc/guc.c:7246 utils/misc/guc.c:11490 utils/misc/guc.c:11524 utils/misc/guc.c:11558 +#: utils/misc/guc.c:11601 utils/misc/guc.c:11643 utils/misc/guc.c:12599 utils/misc/guc.c:12601 #, c-format msgid "%s" msgstr "%s" @@ -4017,12 +4022,12 @@ msgstr "これは生成列を自身の値に依存させることにつながり msgid "generation expression is not immutable" msgstr "生成式は不変ではありません" -#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1285 +#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1288 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "列\"%s\"の型は%sですが、デフォルト式の型は%sです" -#: catalog/heap.c:3202 commands/prepare.c:368 parser/analyze.c:2695 parser/parse_target.c:594 parser/parse_target.c:891 parser/parse_target.c:901 rewrite/rewriteHandler.c:1290 +#: catalog/heap.c:3202 commands/prepare.c:368 parser/analyze.c:2695 parser/parse_target.c:594 parser/parse_target.c:891 parser/parse_target.c:901 rewrite/rewriteHandler.c:1293 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "式を書き換えるかキャストする必要があります。" @@ -4167,7 +4172,7 @@ msgstr "リレーション\"%s.%s\"は存在しません" msgid "relation \"%s\" does not exist" msgstr "リレーション\"%s\"は存在しません" -#: catalog/namespace.c:501 catalog/namespace.c:3076 commands/extension.c:1541 commands/extension.c:1547 +#: catalog/namespace.c:501 catalog/namespace.c:3079 commands/extension.c:1541 commands/extension.c:1547 #, c-format msgid "no schema has been selected to create in" msgstr "作成先のスキーマが選択されていません" @@ -4192,82 +4197,82 @@ msgstr "一時スキーマの中には一時リレーションしか作成でき msgid "statistics object \"%s\" does not exist" msgstr "統計情報オブジェクト\"%s\"は存在しません" -#: catalog/namespace.c:2391 +#: catalog/namespace.c:2394 #, c-format msgid "text search parser \"%s\" does not exist" msgstr "テキスト検索パーサ\"%s\"は存在しません" -#: catalog/namespace.c:2517 +#: catalog/namespace.c:2520 #, c-format msgid "text search dictionary \"%s\" does not exist" msgstr "テキスト検索辞書\"%s\"は存在しません" -#: catalog/namespace.c:2644 +#: catalog/namespace.c:2647 #, c-format msgid "text search template \"%s\" does not exist" msgstr "テキスト検索テンプレート\"%s\"は存在しません" -#: catalog/namespace.c:2770 commands/tsearchcmds.c:1127 utils/cache/ts_cache.c:613 +#: catalog/namespace.c:2773 commands/tsearchcmds.c:1127 utils/cache/ts_cache.c:613 #, c-format msgid "text search configuration \"%s\" does not exist" msgstr "テキスト検索設定\"%s\"は存在しません" -#: catalog/namespace.c:2883 parser/parse_expr.c:810 parser/parse_target.c:1269 +#: catalog/namespace.c:2886 parser/parse_expr.c:810 parser/parse_target.c:1269 #, c-format msgid "cross-database references are not implemented: %s" msgstr "データベース間の参照は実装されていません: %s" -#: catalog/namespace.c:2889 gram.y:15103 gram.y:17077 parser/parse_expr.c:817 parser/parse_target.c:1276 +#: catalog/namespace.c:2892 gram.y:15103 gram.y:17077 parser/parse_expr.c:817 parser/parse_target.c:1276 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "修飾名が不適切です(ドット区切りの名前が多すぎます): %s" -#: catalog/namespace.c:3019 +#: catalog/namespace.c:3022 #, c-format msgid "cannot move objects into or out of temporary schemas" msgstr "一時スキーマへ、または一時スキーマからオブジェクトを移動できません" -#: catalog/namespace.c:3025 +#: catalog/namespace.c:3028 #, c-format msgid "cannot move objects into or out of TOAST schema" msgstr "TOASTスキーマへ、またはTOASTスキーマからオブジェクトを移動できません" -#: catalog/namespace.c:3098 commands/schemacmds.c:263 commands/schemacmds.c:343 commands/tablecmds.c:1246 +#: catalog/namespace.c:3101 commands/schemacmds.c:263 commands/schemacmds.c:343 commands/tablecmds.c:1246 #, c-format msgid "schema \"%s\" does not exist" msgstr "スキーマ\"%s\"は存在しません" -#: catalog/namespace.c:3129 +#: catalog/namespace.c:3132 #, c-format msgid "improper relation name (too many dotted names): %s" msgstr "リレーション名が不適切です(ドット区切りの名前が多すぎます): %s" -#: catalog/namespace.c:3696 +#: catalog/namespace.c:3699 #, c-format msgid "collation \"%s\" for encoding \"%s\" does not exist" msgstr "エンコーディング\"%2$s\"の照合順序\"%1$s\"は存在しません" -#: catalog/namespace.c:3751 +#: catalog/namespace.c:3754 #, c-format msgid "conversion \"%s\" does not exist" msgstr "変換\"%sは存在しません" -#: catalog/namespace.c:4015 +#: catalog/namespace.c:4018 #, c-format msgid "permission denied to create temporary tables in database \"%s\"" msgstr "データベース\"%s\"に一時テーブルを作成する権限がありません" -#: catalog/namespace.c:4031 +#: catalog/namespace.c:4034 #, c-format msgid "cannot create temporary tables during recovery" msgstr "リカバリ中は一時テーブルを作成できません" -#: catalog/namespace.c:4037 +#: catalog/namespace.c:4040 #, c-format msgid "cannot create temporary tables during a parallel operation" msgstr "並行処理中は一時テーブルを作成できません" -#: catalog/namespace.c:4338 commands/tablespace.c:1211 commands/variable.c:64 tcop/postgres.c:3589 utils/misc/guc.c:11675 utils/misc/guc.c:11753 +#: catalog/namespace.c:4341 commands/tablespace.c:1211 commands/variable.c:64 tcop/postgres.c:3589 utils/misc/guc.c:11675 utils/misc/guc.c:11753 #, c-format msgid "List syntax is invalid." msgstr "リスト文法が無効です" @@ -5557,27 +5562,27 @@ msgstr "継承ツリー\"%s.%s\"のANALYZEをスキップします --- このツ msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "継承ツリー\"%s.%s\"のANALYZEをスキップします --- このツリーにはアナライズ可能な子テーブルがありません" -#: commands/async.c:646 +#: commands/async.c:645 #, c-format msgid "channel name cannot be empty" msgstr "チャネル名が空であることはできません" -#: commands/async.c:652 +#: commands/async.c:651 #, c-format msgid "channel name too long" msgstr "チャネル名が長すぎます" -#: commands/async.c:657 +#: commands/async.c:656 #, c-format msgid "payload string too long" msgstr "ペイロード文字列が長すぎます" -#: commands/async.c:876 +#: commands/async.c:875 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "LISTEN / UNLISTEN / NOTIFY を実行しているトランザクションは PREPARE できません" -#: commands/async.c:980 +#: commands/async.c:979 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "NOTIFY キューで発生した通知イベントが多すぎます" @@ -5826,152 +5831,162 @@ msgstr "ファイルからの COPY を行うにはスーパーユーザーまた msgid "must be superuser or a member of the pg_write_server_files role to COPY to a file" msgstr "ファイルへの COPY を行うにはスーパーユーザーまたは pg_write_server_files ロールのメンバである必要があります" -#: commands/copy.c:188 +#: commands/copy.c:175 +#, c-format +msgid "generated columns are not supported in COPY FROM WHERE conditions" +msgstr "生成列は COPY FROM の WHERE 条件ではサポートされていません" + +#: commands/copy.c:176 commands/tablecmds.c:11928 commands/tablecmds.c:17048 commands/tablecmds.c:17127 commands/trigger.c:653 rewrite/rewriteHandler.c:939 rewrite/rewriteHandler.c:974 +#, c-format +msgid "Column \"%s\" is a generated column." +msgstr "列\"%s\"は生成カラムです。" + +#: commands/copy.c:225 #, c-format msgid "COPY FROM not supported with row-level security" msgstr "COPY FROM で行レベルセキュリティはサポートされていません" -#: commands/copy.c:189 +#: commands/copy.c:226 #, c-format msgid "Use INSERT statements instead." msgstr "代わりにINSERTを文使用してください。" -#: commands/copy.c:377 +#: commands/copy.c:414 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "COPY フォーマット\"%s\"を認識できません" -#: commands/copy.c:450 commands/copy.c:466 commands/copy.c:481 commands/copy.c:503 +#: commands/copy.c:487 commands/copy.c:503 commands/copy.c:518 commands/copy.c:540 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "オプション\"%s\"の引数は列名のリストでなければなりません" -#: commands/copy.c:518 +#: commands/copy.c:555 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "オプション\"%s\"の引数は有効なエンコーディング名でなければなりません" -#: commands/copy.c:525 commands/dbcommands.c:254 commands/dbcommands.c:1575 +#: commands/copy.c:562 commands/dbcommands.c:254 commands/dbcommands.c:1575 #, c-format msgid "option \"%s\" not recognized" msgstr "タイムゾーン\"%s\"を認識できません" -#: commands/copy.c:537 +#: commands/copy.c:574 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "BINARYモードではDELIMITERを指定できません" -#: commands/copy.c:542 +#: commands/copy.c:579 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "BINARYモードではNULLを指定できません" -#: commands/copy.c:564 +#: commands/copy.c:601 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "COPYの区切り文字は単一の1バイト文字でなければなりません" -#: commands/copy.c:571 +#: commands/copy.c:608 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "COPYの区切り文字は改行や復帰記号とすることができません" -#: commands/copy.c:577 +#: commands/copy.c:614 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "COPYのNULL表現には改行や復帰記号を使用することはできません" -#: commands/copy.c:594 +#: commands/copy.c:631 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "COPYの区切り文字を\"%s\"とすることはできません" -#: commands/copy.c:600 +#: commands/copy.c:637 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADERはCSVモードでのみ使用できます" -#: commands/copy.c:606 +#: commands/copy.c:643 #, c-format msgid "COPY quote available only in CSV mode" msgstr "COPYの引用符はCSVモードでのみ使用できます" -#: commands/copy.c:611 +#: commands/copy.c:648 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "COPYの引用符は単一の1バイト文字でなければなりません" -#: commands/copy.c:616 +#: commands/copy.c:653 #, c-format msgid "COPY delimiter and quote must be different" msgstr "COPYの区切り文字と引用符は異なる文字でなければなりません" -#: commands/copy.c:622 +#: commands/copy.c:659 #, c-format msgid "COPY escape available only in CSV mode" msgstr "COPYのエスケープはCSVモードでのみ使用できます" -#: commands/copy.c:627 +#: commands/copy.c:664 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "COPYのエスケープは単一の1バイト文字でなければなりません" -#: commands/copy.c:633 +#: commands/copy.c:670 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "COPYのFORCE_QUOTEオプションはCSVモードでのみ使用できます" -#: commands/copy.c:637 +#: commands/copy.c:674 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "COPYのFORCE_QUOTEオプションはCOPY TOでのみ使用できます" -#: commands/copy.c:643 +#: commands/copy.c:680 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "COPYのFORCE_NOT_NULLオプションはCSVモードでのみ使用できます" -#: commands/copy.c:647 +#: commands/copy.c:684 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "COPYのFORCE_NOT_NULLオプションはCOPY FROMでのみ使用できます" -#: commands/copy.c:653 +#: commands/copy.c:690 #, c-format msgid "COPY force null available only in CSV mode" msgstr "COPYのFORCE_NULLオプションはCSVモードでのみ使用できます" -#: commands/copy.c:658 +#: commands/copy.c:695 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "COPYのFORCE_NOT_NULLオプションはCOPY FROMでのみ使用できます" -#: commands/copy.c:664 +#: commands/copy.c:701 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "COPYの区切り文字をNULLオプションの値に使用できません" -#: commands/copy.c:671 +#: commands/copy.c:708 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "COPYの引用符をNULLオプションの値に使用できません" -#: commands/copy.c:732 +#: commands/copy.c:769 #, c-format msgid "column \"%s\" is a generated column" msgstr "列\"%s\"は生成カラムです" -#: commands/copy.c:734 +#: commands/copy.c:771 #, c-format msgid "Generated columns cannot be used in COPY." msgstr "生成カラムはCOPYでは使えません。" -#: commands/copy.c:749 commands/indexcmds.c:1842 commands/statscmds.c:245 commands/tablecmds.c:2344 commands/tablecmds.c:3000 commands/tablecmds.c:3508 parser/parse_relation.c:3651 parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 +#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:265 commands/tablecmds.c:2344 commands/tablecmds.c:3000 commands/tablecmds.c:3508 parser/parse_relation.c:3651 parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 #, c-format msgid "column \"%s\" does not exist" msgstr "列\"%s\"は存在しません" -#: commands/copy.c:756 commands/tablecmds.c:2370 commands/trigger.c:951 parser/parse_target.c:1093 parser/parse_target.c:1104 +#: commands/copy.c:793 commands/tablecmds.c:2370 commands/trigger.c:951 parser/parse_target.c:1093 parser/parse_target.c:1104 #, c-format msgid "column \"%s\" specified more than once" msgstr "列\"%s\"が複数指定されました" @@ -6671,7 +6686,7 @@ msgstr "照合順序\"%s\"は存在しません、スキップします" msgid "conversion \"%s\" does not exist, skipping" msgstr "変換\"%sは存在しません、スキップします" -#: commands/dropcmds.c:293 commands/statscmds.c:674 +#: commands/dropcmds.c:293 commands/statscmds.c:694 #, c-format msgid "statistics object \"%s\" does not exist, skipping" msgstr "統計情報オブジェクト\"%s\"は存在しません、スキップします" @@ -7734,7 +7749,7 @@ msgstr "包含列はNULLS FIRST/LASTオプションをサポートしません" msgid "could not determine which collation to use for index expression" msgstr "インデックス式で使用する照合順序を特定できませんでした" -#: commands/indexcmds.c:1978 commands/tablecmds.c:17205 commands/typecmds.c:810 parser/parse_expr.c:2701 parser/parse_type.c:566 parser/parse_utilcmd.c:3783 utils/adt/misc.c:621 +#: commands/indexcmds.c:1978 commands/tablecmds.c:17215 commands/typecmds.c:810 parser/parse_expr.c:2701 parser/parse_type.c:566 parser/parse_utilcmd.c:3783 utils/adt/misc.c:621 #, c-format msgid "collations are not supported by type %s" msgstr "%s型では照合順序はサポートされません" @@ -7769,7 +7784,7 @@ msgstr "アクセスメソッド\"%s\"はASC/DESCオプションをサポート msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "アクセスメソッド\"%s\"はNULLS FIRST/LASTオプションをサポートしません" -#: commands/indexcmds.c:2160 commands/tablecmds.c:17230 commands/tablecmds.c:17236 commands/typecmds.c:2317 +#: commands/indexcmds.c:2160 commands/tablecmds.c:17240 commands/tablecmds.c:17246 commands/typecmds.c:2317 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "アクセスメソッド\"%2$s\"にはデータ型%1$s用のデフォルトの演算子クラスがありません" @@ -8174,7 +8189,7 @@ msgstr "JOIN推定関数 %s は %s型を返す必要があります" msgid "operator attribute \"%s\" cannot be changed" msgstr "演算子の属性\"%s\"は変更できません" -#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:151 commands/tablecmds.c:1582 commands/tablecmds.c:2162 commands/tablecmds.c:3402 commands/tablecmds.c:6112 commands/tablecmds.c:9081 commands/tablecmds.c:16793 commands/tablecmds.c:16828 commands/trigger.c:313 commands/trigger.c:1289 commands/trigger.c:1398 rewrite/rewriteDefine.c:278 rewrite/rewriteDefine.c:961 rewrite/rewriteRemove.c:80 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:157 commands/tablecmds.c:1582 commands/tablecmds.c:2162 commands/tablecmds.c:3402 commands/tablecmds.c:6112 commands/tablecmds.c:9081 commands/tablecmds.c:16793 commands/tablecmds.c:16828 commands/trigger.c:313 commands/trigger.c:1289 commands/trigger.c:1398 rewrite/rewriteDefine.c:278 rewrite/rewriteDefine.c:961 rewrite/rewriteRemove.c:80 #, c-format msgid "permission denied: \"%s\" is a system catalog" msgstr "権限がありません: \"%s\"はシステムカタログです" @@ -8505,72 +8520,72 @@ msgstr "CREATE STATISTICSで指定可能なリレーションは一つのみで msgid "relation \"%s\" is not a table, foreign table, or materialized view" msgstr "リレーション\"%s\"はテーブルや外部テーブル、または実体化ビューではありません" -#: commands/statscmds.c:193 +#: commands/statscmds.c:213 #, c-format msgid "statistics object \"%s\" already exists, skipping" msgstr "統計情報オブジェクト\"%s\"はすでに存在します、スキップします" -#: commands/statscmds.c:201 +#: commands/statscmds.c:221 #, c-format msgid "statistics object \"%s\" already exists" msgstr "統計情報オブジェクト\"%s\"はすでに存在します" -#: commands/statscmds.c:212 +#: commands/statscmds.c:232 #, c-format msgid "cannot have more than %d columns in statistics" msgstr "統計情報は%dを超える列を使用できません" -#: commands/statscmds.c:253 commands/statscmds.c:276 commands/statscmds.c:309 +#: commands/statscmds.c:273 commands/statscmds.c:296 commands/statscmds.c:329 #, c-format msgid "statistics creation on system columns is not supported" msgstr "システム列に対する統計情報の作成はサポートされていません" -#: commands/statscmds.c:260 commands/statscmds.c:283 +#: commands/statscmds.c:280 commands/statscmds.c:303 #, c-format msgid "column \"%s\" cannot be used in statistics because its type %s has no default btree operator class" msgstr "列\"%s\"の型%sはデフォルトのbtreeオペレータクラスを持たないため統計情報では利用できません" -#: commands/statscmds.c:326 +#: commands/statscmds.c:346 #, c-format msgid "expression cannot be used in multivariate statistics because its type %s has no default btree operator class" msgstr "結果の型%sはデフォルトのbtree演算子クラスがないため、式は多値統計情報では使用できません" -#: commands/statscmds.c:347 +#: commands/statscmds.c:367 #, c-format msgid "when building statistics on a single expression, statistics kinds may not be specified" msgstr "単一の式に対する統計情報を構築する際には、統計種別を指定できません" -#: commands/statscmds.c:376 +#: commands/statscmds.c:396 #, c-format msgid "unrecognized statistics kind \"%s\"" msgstr "認識できない統計情報種別\"%s\"" -#: commands/statscmds.c:405 +#: commands/statscmds.c:425 #, c-format msgid "extended statistics require at least 2 columns" msgstr "拡張統計情報には最低でも2つの列が必要です" -#: commands/statscmds.c:423 +#: commands/statscmds.c:443 #, c-format msgid "duplicate column name in statistics definition" msgstr "定形情報定義中の列名が重複しています" -#: commands/statscmds.c:458 +#: commands/statscmds.c:478 #, c-format msgid "duplicate expression in statistics definition" msgstr "統計情報定義中の式が重複しています" -#: commands/statscmds.c:639 commands/tablecmds.c:8047 +#: commands/statscmds.c:659 commands/tablecmds.c:8047 #, c-format msgid "statistics target %d is too low" msgstr "統計情報目標%dは小さすぎます" -#: commands/statscmds.c:647 commands/tablecmds.c:8055 +#: commands/statscmds.c:667 commands/tablecmds.c:8055 #, c-format msgid "lowering statistics target to %d" msgstr "統計情報目標を%dに減らします" -#: commands/statscmds.c:670 +#: commands/statscmds.c:690 #, c-format msgid "statistics object \"%s.%s\" does not exist, skipping" msgstr "統計情報オブジェクト\"%s.%s\"は存在しません、スキップします" @@ -8755,7 +8770,7 @@ msgstr "実体化ビュー\"%s\"は存在しません、スキップします" msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "実体化ビューを削除するにはDROP MATERIALIZED VIEWを使用してください。" -#: commands/tablecmds.c:265 commands/tablecmds.c:289 commands/tablecmds.c:18739 parser/parse_utilcmd.c:2265 +#: commands/tablecmds.c:265 commands/tablecmds.c:289 commands/tablecmds.c:18753 parser/parse_utilcmd.c:2265 #, c-format msgid "index \"%s\" does not exist" msgstr "インデックス\"%s\"は存在しません" @@ -9604,11 +9619,6 @@ msgstr "型付けされたテーブルの列の型を変更できません" msgid "cannot specify USING when altering type of generated column" msgstr "生成列の型変更の際にはUSINGを指定することはできません" -#: commands/tablecmds.c:11928 commands/tablecmds.c:17048 commands/tablecmds.c:17138 commands/trigger.c:653 rewrite/rewriteHandler.c:936 rewrite/rewriteHandler.c:971 -#, c-format -msgid "Column \"%s\" is a generated column." -msgstr "列\"%s\"は生成カラムです。" - #: commands/tablecmds.c:11938 #, c-format msgid "cannot alter inherited column \"%s\"" @@ -9790,12 +9800,12 @@ msgstr "他のセッションの一時テーブルを継承できません" msgid "cannot inherit from a partition" msgstr "パーティションからの継承はできません" -#: commands/tablecmds.c:14644 commands/tablecmds.c:17550 +#: commands/tablecmds.c:14644 commands/tablecmds.c:17560 #, c-format msgid "circular inheritance not allowed" msgstr "循環継承を行うことはできません" -#: commands/tablecmds.c:14645 commands/tablecmds.c:17551 +#: commands/tablecmds.c:14645 commands/tablecmds.c:17561 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\"はすでに\"%s\"の子です" @@ -9990,167 +10000,167 @@ msgstr "パーティションキーに指定されている列\"%s\"は存在し msgid "cannot use system column \"%s\" in partition key" msgstr "パーティションキーでシステム列\"%s\"は使用できません" -#: commands/tablecmds.c:17047 commands/tablecmds.c:17137 +#: commands/tablecmds.c:17047 commands/tablecmds.c:17126 #, c-format msgid "cannot use generated column in partition key" msgstr "パーティションキーで生成カラムは使用できません" -#: commands/tablecmds.c:17120 +#: commands/tablecmds.c:17116 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "パーティションキー式はシステム列への参照を含むことができません" -#: commands/tablecmds.c:17167 +#: commands/tablecmds.c:17177 #, c-format msgid "functions in partition key expression must be marked IMMUTABLE" msgstr "パーティションキー式で使われる関数はIMMUTABLE指定されている必要があります" -#: commands/tablecmds.c:17176 +#: commands/tablecmds.c:17186 #, c-format msgid "cannot use constant expression as partition key" msgstr "定数式をパーティションキーとして使うことはできません" -#: commands/tablecmds.c:17197 +#: commands/tablecmds.c:17207 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "パーティション式で使用する照合順序を特定できませんでした" -#: commands/tablecmds.c:17232 +#: commands/tablecmds.c:17242 #, c-format msgid "You must specify a hash operator class or define a default hash operator class for the data type." msgstr "ハッシュ演算子クラスを指定するか、もしくはこのデータ型にデフォルトのハッシュ演算子クラスを定義する必要があります。" -#: commands/tablecmds.c:17238 +#: commands/tablecmds.c:17248 #, c-format msgid "You must specify a btree operator class or define a default btree operator class for the data type." msgstr "btree演算子クラスを指定するか、もしくはこのデータ型にデフォルトのbtree演算子クラスを定義するかする必要があります。" -#: commands/tablecmds.c:17490 +#: commands/tablecmds.c:17500 #, c-format msgid "\"%s\" is already a partition" msgstr "\"%s\"はすでパーティションです" -#: commands/tablecmds.c:17496 +#: commands/tablecmds.c:17506 #, c-format msgid "cannot attach a typed table as partition" msgstr "型付けされたテーブルをパーティションにアタッチすることはできません" -#: commands/tablecmds.c:17512 +#: commands/tablecmds.c:17522 #, c-format msgid "cannot attach inheritance child as partition" msgstr "継承子テーブルをパーティションにアタッチすることはできません" -#: commands/tablecmds.c:17526 +#: commands/tablecmds.c:17536 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "継承親テーブルをパーティションにアタッチすることはできません" -#: commands/tablecmds.c:17560 +#: commands/tablecmds.c:17570 #, c-format msgid "cannot attach a temporary relation as partition of permanent relation \"%s\"" msgstr "一時リレーションを永続リレーション\"%s\"の子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17568 +#: commands/tablecmds.c:17578 #, c-format msgid "cannot attach a permanent relation as partition of temporary relation \"%s\"" msgstr "永続リレーションを一時リレーション\"%s\"のパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17576 +#: commands/tablecmds.c:17586 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "他セッションの一時リレーションのパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17583 +#: commands/tablecmds.c:17593 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "他セッションの一時リレーションにパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17603 +#: commands/tablecmds.c:17613 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "テーブル\"%1$s\"は親テーブル\"%3$s\"にない列\"%2$s\"を含んでいます" -#: commands/tablecmds.c:17606 +#: commands/tablecmds.c:17616 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "新しいパーティションは親に存在する列のみを含むことができます。" -#: commands/tablecmds.c:17618 +#: commands/tablecmds.c:17628 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "トリガー\"%s\"のため、テーブル\"%s\"はパーティション子テーブルにはなれません" -#: commands/tablecmds.c:17620 commands/trigger.c:459 +#: commands/tablecmds.c:17630 commands/trigger.c:459 #, c-format msgid "ROW triggers with transition tables are not supported on partitions" msgstr "遷移テーブルを使用するROWトリガーはパーティションではサポートされません" -#: commands/tablecmds.c:17799 +#: commands/tablecmds.c:17809 #, c-format msgid "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "外部テーブル\"%s\"はパーティションテーブル\"%s\"の子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17802 +#: commands/tablecmds.c:17812 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "パーティションテーブル\"%s\"はユニークインデックスを持っています。" -#: commands/tablecmds.c:18126 +#: commands/tablecmds.c:18137 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "デフォルトパーティションがある場合はパーティション子テーブルを並列的に取り外すことはできません" -#: commands/tablecmds.c:18235 +#: commands/tablecmds.c:18249 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "パーティションテーブル\"%s\"は同時に削除されました" -#: commands/tablecmds.c:18241 +#: commands/tablecmds.c:18255 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "パーティションテーブル\"%s\"は同時に削除されました" -#: commands/tablecmds.c:18773 commands/tablecmds.c:18793 commands/tablecmds.c:18813 commands/tablecmds.c:18832 commands/tablecmds.c:18874 +#: commands/tablecmds.c:18787 commands/tablecmds.c:18807 commands/tablecmds.c:18827 commands/tablecmds.c:18846 commands/tablecmds.c:18888 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "インデックス\"%s\"をインデックス\"%s\"の子インデックスとしてアタッチすることはできません" -#: commands/tablecmds.c:18776 +#: commands/tablecmds.c:18790 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "インデックス\"%s\"はすでに別のインデックスにアタッチされています。" -#: commands/tablecmds.c:18796 +#: commands/tablecmds.c:18810 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "インデックス\"%s\"はテーブル\"%s\"のどの子テーブルのインデックスでもありません。" -#: commands/tablecmds.c:18816 +#: commands/tablecmds.c:18830 #, c-format msgid "The index definitions do not match." msgstr "インデックス定義が合致しません。" -#: commands/tablecmds.c:18835 +#: commands/tablecmds.c:18849 #, c-format msgid "The index \"%s\" belongs to a constraint in table \"%s\" but no constraint exists for index \"%s\"." msgstr "インデックス\"%s\"はテーブル\"%s\"の制約に属していますが、インデックス\"%s\"には制約がありません。" -#: commands/tablecmds.c:18877 +#: commands/tablecmds.c:18891 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "子テーブル\"%s\"にはすでに他のインデックスがアタッチされています。" -#: commands/tablecmds.c:19114 +#: commands/tablecmds.c:19128 #, c-format msgid "column data type %s does not support compression" msgstr "列データ型%sは圧縮をサポートしていません" -#: commands/tablecmds.c:19121 +#: commands/tablecmds.c:19135 #, c-format msgid "invalid compression method \"%s\"" msgstr "無効な圧縮方式 \"%s\"" -#: commands/tablespace.c:161 commands/tablespace.c:177 commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1478 storage/file/copydir.c:47 +#: commands/tablespace.c:161 commands/tablespace.c:177 commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1507 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "ディレクトリ\"%s\"を作成できませんでした: %m" @@ -11164,107 +11174,107 @@ msgstr "ロール\"%s\"はすでにロール\"%s\"のメンバです" msgid "role \"%s\" is not a member of role \"%s\"" msgstr "ロール\"%s\"はロール\"%s\"のメンバではありません" -#: commands/vacuum.c:133 +#: commands/vacuum.c:134 #, c-format msgid "unrecognized ANALYZE option \"%s\"" msgstr "ANALYZEオプション\"%s\"が認識できません" -#: commands/vacuum.c:171 +#: commands/vacuum.c:172 #, c-format msgid "parallel option requires a value between 0 and %d" msgstr "パラレルオプションには0から%dまでの値である必要があります" -#: commands/vacuum.c:183 +#: commands/vacuum.c:184 #, c-format msgid "parallel workers for vacuum must be between 0 and %d" msgstr "VACUUMの並列ワーカー数は0から%dまでの値でなければなりません" -#: commands/vacuum.c:200 +#: commands/vacuum.c:201 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "認識できないVACUUMオプション \"%s\"" -#: commands/vacuum.c:223 +#: commands/vacuum.c:224 #, c-format msgid "VACUUM FULL cannot be performed in parallel" msgstr "VACUUM FULLは並列実行できません" -#: commands/vacuum.c:239 +#: commands/vacuum.c:240 #, c-format msgid "ANALYZE option must be specified when a column list is provided" msgstr "ANALYZE オプションは列リストが与えられているときのみ指定できます" -#: commands/vacuum.c:329 +#: commands/vacuum.c:330 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%sはVACUUMやANALYZEからは実行できません" -#: commands/vacuum.c:339 +#: commands/vacuum.c:340 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "VACUUM のオプションDISABLE_PAGE_SKIPPINGはFULLと同時には指定できません" -#: commands/vacuum.c:346 +#: commands/vacuum.c:347 #, c-format msgid "PROCESS_TOAST required with VACUUM FULL" msgstr "VACUUM FULLの際はPROCESS_TOASTの指定が必須です" -#: commands/vacuum.c:596 +#: commands/vacuum.c:597 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "\"%s\"をスキップしています --- スーパーユーザーのみがVACUUMを実行できます" -#: commands/vacuum.c:600 +#: commands/vacuum.c:601 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "\"%s\"をスキップしています --- スーパーユーザーもしくはデータベースの所有者のみがVACUUMを実行できます" -#: commands/vacuum.c:604 +#: commands/vacuum.c:605 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "\"%s\"を飛ばしています --- テーブルまたはデータベースの所有者のみがVACUUMを実行することができます" -#: commands/vacuum.c:619 +#: commands/vacuum.c:620 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" msgstr "\"%s\"をスキップしています --- スーパーユーザーのみがANALYZEを実行できます" -#: commands/vacuum.c:623 +#: commands/vacuum.c:624 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "\"%s\"をスキップしています --- スーパーユーザーまたはデータベースの所有者のみがANALYZEを実行できます" -#: commands/vacuum.c:627 +#: commands/vacuum.c:628 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "\"%s\"をスキップしています --- テーブルまたはデータベースの所有者のみがANALYZEを実行できます" -#: commands/vacuum.c:706 commands/vacuum.c:802 +#: commands/vacuum.c:707 commands/vacuum.c:803 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "\"%s\"のVACUUM処理をスキップしています -- ロックを獲得できませんでした" -#: commands/vacuum.c:711 +#: commands/vacuum.c:712 #, c-format msgid "skipping vacuum of \"%s\" --- relation no longer exists" msgstr "\"%s\"のVACUUM処理をスキップしています -- リレーションはすでに存在しません" -#: commands/vacuum.c:727 commands/vacuum.c:807 +#: commands/vacuum.c:728 commands/vacuum.c:808 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" msgstr "\"%s\"のANALYZEをスキップしています --- ロック獲得できませんでした" -#: commands/vacuum.c:732 +#: commands/vacuum.c:733 #, c-format msgid "skipping analyze of \"%s\" --- relation no longer exists" msgstr "\"%s\"のANALYZEをスキップします --- リレーションはすでに存在しません" -#: commands/vacuum.c:1050 +#: commands/vacuum.c:1051 #, c-format msgid "oldest xmin is far in the past" msgstr "最も古いxminが古すぎます" -#: commands/vacuum.c:1051 +#: commands/vacuum.c:1052 #, c-format msgid "" "Close open transactions soon to avoid wraparound problems.\n" @@ -11273,27 +11283,27 @@ msgstr "" "周回問題を回避するためにすぐに実行中のトランザクションを終了してください。\n" "古い準備済みトランザクションのコミットまたはロールバック、もしくは古いレプリケーションスロットの削除が必要な場合もあります。" -#: commands/vacuum.c:1092 +#: commands/vacuum.c:1093 #, c-format msgid "oldest multixact is far in the past" msgstr "最古のマルチトランザクションが古すぎます" -#: commands/vacuum.c:1093 +#: commands/vacuum.c:1094 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "周回問題を回避するために、マルチトランザクションを使用している実行中のトランザクションをすぐにクローズしてください。" -#: commands/vacuum.c:1778 +#: commands/vacuum.c:1779 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "データベースの一部は20億トランザクション以上の間にVACUUMを実行されていませんでした" -#: commands/vacuum.c:1779 +#: commands/vacuum.c:1780 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "トランザクションの周回によるデータ損失が発生している可能性があります" -#: commands/vacuum.c:1954 +#: commands/vacuum.c:1961 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "\"%s\"をスキップしています --- テーブルではないものや、特別なシステムテーブルに対してはVACUUMを実行できません" @@ -11523,7 +11533,7 @@ msgstr "問い合わせで %d 番目に削除される列の値を指定して msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "テーブルでは %2$d 番目の型は %1$s ですが、問い合わせでは %3$s を想定しています。" -#: executor/execExpr.c:1098 parser/parse_agg.c:828 +#: executor/execExpr.c:1098 parser/parse_agg.c:881 #, c-format msgid "window function calls cannot be nested" msgstr "ウィンドウ関数の呼び出しを入れ子にすることはできません" @@ -11678,32 +11688,32 @@ msgstr "シーケンス\"%s\"を変更できません" msgid "cannot change TOAST relation \"%s\"" msgstr "TOASTリレーション\"%s\"を変更できません" -#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3145 rewrite/rewriteHandler.c:3990 +#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3148 rewrite/rewriteHandler.c:4010 #, c-format msgid "cannot insert into view \"%s\"" msgstr "ビュー\"%s\"へは挿入(INSERT)できません" -#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3148 rewrite/rewriteHandler.c:3993 +#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3151 rewrite/rewriteHandler.c:4013 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "ビューへの挿入を可能にするために、INSTEAD OF INSERTトリガーまたは無条件のON INSERT DO INSTEADルールを作成してください。" -#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3153 rewrite/rewriteHandler.c:3998 +#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3156 rewrite/rewriteHandler.c:4018 #, c-format msgid "cannot update view \"%s\"" msgstr "ビュー\"%s\"は更新できません" -#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3156 rewrite/rewriteHandler.c:4001 +#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3159 rewrite/rewriteHandler.c:4021 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "ビューへの更新を可能にするために、INSTEAD OF UPDATEトリガーまたは無条件のON UPDATE DO INSTEADルールを作成してください。" -#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3161 rewrite/rewriteHandler.c:4006 +#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3164 rewrite/rewriteHandler.c:4026 #, c-format msgid "cannot delete from view \"%s\"" msgstr "ビュー\"%s\"からは削除できません" -#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3164 rewrite/rewriteHandler.c:4009 +#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3167 rewrite/rewriteHandler.c:4029 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "ビューからの削除を可能にするために、INSTEAD OF DELETEトリガーまたは無条件のON DELETE DO INSTEADルールを作成してください。" @@ -12027,7 +12037,7 @@ msgstr "戻り値型%sはSQL関数でサポートされていません" msgid "unexpected EOF for tape %d: requested %zu bytes, read %zu bytes" msgstr "テープ%dに対する予期しないEOF: %zuバイト要求しましたが、%zuバイト読み込みました" -#: executor/nodeAgg.c:3979 parser/parse_agg.c:670 parser/parse_agg.c:698 +#: executor/nodeAgg.c:3979 parser/parse_agg.c:677 parser/parse_agg.c:720 #, c-format msgid "aggregate function calls cannot be nested" msgstr "集約関数の呼び出しを入れ子にすることはできません" @@ -12228,7 +12238,7 @@ msgstr "カーソルで%s問い合わせを開くことができません" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHAREはサポートされていません" -#: executor/spi.c:1730 parser/analyze.c:2864 +#: executor/spi.c:1730 parser/analyze.c:2865 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "スクロール可能カーソルは読み取り専用である必要があります。" @@ -14737,7 +14747,7 @@ msgid "%s cannot be applied to the nullable side of an outer join" msgstr "外部結合のNULL可な側では%sを適用できません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1346 parser/analyze.c:1720 parser/analyze.c:1976 parser/analyze.c:3155 +#: optimizer/plan/planner.c:1346 parser/analyze.c:1720 parser/analyze.c:1976 parser/analyze.c:3156 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "UNION/INTERSECT/EXCEPTでは%sを使用できません" @@ -14813,22 +14823,22 @@ msgstr "リレーション\"%s\"はオープンできません" msgid "cannot access temporary or unlogged relations during recovery" msgstr "リカバリ中は一時テーブルやUNLOGGEDテーブルにはアクセスできません" -#: optimizer/util/plancat.c:702 +#: optimizer/util/plancat.c:707 #, c-format msgid "whole row unique index inference specifications are not supported" msgstr "行全体に渡るユニークインデックスの推定指定はサポートされていません" -#: optimizer/util/plancat.c:719 +#: optimizer/util/plancat.c:724 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" msgstr "ON CONFLICT句中の制約には関連付けられるインデックスがありません" -#: optimizer/util/plancat.c:769 +#: optimizer/util/plancat.c:774 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" msgstr "ON CONFLICT DO UPDATEでの排除制約の使用はサポートされていません" -#: optimizer/util/plancat.c:879 +#: optimizer/util/plancat.c:884 #, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" msgstr "ON CONFLICT 指定に合致するユニーク制約または排除制約がありません" @@ -14859,7 +14869,7 @@ msgid "SELECT ... INTO is not allowed here" msgstr "ここではSELECT ... INTOは許可されません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1623 parser/analyze.c:3366 +#: parser/analyze.c:1623 parser/analyze.c:3367 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%sをVALUESに使用できません" @@ -14912,454 +14922,464 @@ msgid "variable \"%s\" is of type %s but expression is of type %s" msgstr "変数\"%s\"は型%sですが、式は型%sでした" #. translator: %s is a SQL keyword -#: parser/analyze.c:2814 parser/analyze.c:2822 +#: parser/analyze.c:2815 parser/analyze.c:2823 #, c-format msgid "cannot specify both %s and %s" msgstr "%sと%sの両方を同時には指定できません" -#: parser/analyze.c:2842 +#: parser/analyze.c:2843 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSORではWITH句内にデータを変更する文を含んではなりません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2850 +#: parser/analyze.c:2851 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %sはサポートされていません" -#: parser/analyze.c:2853 +#: parser/analyze.c:2854 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "保持可能カーソルは読み取り専用である必要があります。" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2861 +#: parser/analyze.c:2862 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %sはサポートされていません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2872 +#: parser/analyze.c:2873 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not valid" msgstr "DECLARE INSENSITIVE CURSOR ... %sは不正です" -#: parser/analyze.c:2875 +#: parser/analyze.c:2876 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "INSENSITIVEカーソルは読み取り専用である必要があります。" -#: parser/analyze.c:2941 +#: parser/analyze.c:2942 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "実体化ビューではWITH句にデータを変更する文を含んではなりません" -#: parser/analyze.c:2951 +#: parser/analyze.c:2952 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "実体化ビューでは一時テーブルやビューを使用してはいけません" -#: parser/analyze.c:2961 +#: parser/analyze.c:2962 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "実体化ビューは境界パラメータを用いて定義してはなりません" -#: parser/analyze.c:2973 +#: parser/analyze.c:2974 #, c-format msgid "materialized views cannot be unlogged" msgstr "実体化ビューをログ非取得にはできません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3162 +#: parser/analyze.c:3163 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "DISTINCT句では%sを使用できません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3169 +#: parser/analyze.c:3170 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "GROUP BY句で%sを使用できません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3176 +#: parser/analyze.c:3177 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "HAVING 句では%sを使用できません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3183 +#: parser/analyze.c:3184 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "集約関数では%sは使用できません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3190 +#: parser/analyze.c:3191 #, c-format msgid "%s is not allowed with window functions" msgstr "ウィンドウ関数では%sは使用できません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3197 +#: parser/analyze.c:3198 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "ターゲットリストの中では%sを集合返却関数と一緒に使うことはできません" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3289 +#: parser/analyze.c:3290 #, 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:3339 +#: parser/analyze.c:3340 #, 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:3348 +#: parser/analyze.c:3349 #, 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:3357 +#: parser/analyze.c:3358 #, 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:3375 +#: parser/analyze.c:3376 #, 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:3384 +#: parser/analyze.c:3385 #, 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:3404 +#: parser/analyze.c:3405 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "%2$s句のリレーション\"%1$s\"はFROM句にありません" -#: parser/parse_agg.c:208 parser/parse_oper.c:227 +#: parser/parse_agg.c:211 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "型%sの順序演算子を識別できませんでした" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:213 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "DISTINCT 付きの集約関数は、入力がソート可能である必要があります。" -#: parser/parse_agg.c:268 +#: parser/parse_agg.c:271 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPINGの引数は32より少くなければなりません" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:375 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "JOIN条件で集約関数を使用できません" -#: parser/parse_agg.c:373 +#: parser/parse_agg.c:377 msgid "grouping operations are not allowed in JOIN conditions" msgstr "グルーピング演算はJOIN条件の中では使用できません" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:387 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "集約関数は自身の問い合わせレベルのFROM句の中では使用できません" -#: parser/parse_agg.c:385 +#: parser/parse_agg.c:389 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "グルーピング演算は自身のクエリレベルのFROM句の中では使用できません" -#: parser/parse_agg.c:390 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in functions in FROM" msgstr "集約関数はFROM句内の関数では使用できません" -#: parser/parse_agg.c:392 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in functions in FROM" msgstr "グルーピング演算はFROM句内の関数では使用できません" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:404 msgid "aggregate functions are not allowed in policy expressions" msgstr "集約関数はポリシ式では使用できません" -#: parser/parse_agg.c:402 +#: parser/parse_agg.c:406 msgid "grouping operations are not allowed in policy expressions" msgstr "グルーピング演算はポリシ式では使用できません" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:423 msgid "aggregate functions are not allowed in window RANGE" msgstr "集約関数はウィンドウRANGEの中では集約関数を使用できません" -#: parser/parse_agg.c:421 +#: parser/parse_agg.c:425 msgid "grouping operations are not allowed in window RANGE" msgstr "グルーピング演算はウィンドウ定義のRANGE句の中では使用できません" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:430 msgid "aggregate functions are not allowed in window ROWS" msgstr "集約関数はウィンドウ定義のROWS句では使用できません" -#: parser/parse_agg.c:428 +#: parser/parse_agg.c:432 msgid "grouping operations are not allowed in window ROWS" msgstr "グルーピング演算はウィンドウ定義のROWS句では使用できません" -#: parser/parse_agg.c:433 +#: parser/parse_agg.c:437 msgid "aggregate functions are not allowed in window GROUPS" msgstr "集約関数はウィンドウ定義のGROUPS句では使用できません" -#: parser/parse_agg.c:435 +#: parser/parse_agg.c:439 msgid "grouping operations are not allowed in window GROUPS" msgstr "グルーピング演算はウィンドウ定義のGROUPS句では使用できません" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:473 msgid "aggregate functions are not allowed in check constraints" msgstr "集約関数は検査制約では使用できません" -#: parser/parse_agg.c:471 +#: parser/parse_agg.c:475 msgid "grouping operations are not allowed in check constraints" msgstr "グルーピング演算は検査制約では使用できません" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:482 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "集約関数はDEFAULT式では使用できません" -#: parser/parse_agg.c:480 +#: parser/parse_agg.c:484 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "グルーピング演算はDEFAULT式では使用できません" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:489 msgid "aggregate functions are not allowed in index expressions" msgstr "集約関数はインデックス式では使用できません" -#: parser/parse_agg.c:487 +#: parser/parse_agg.c:491 msgid "grouping operations are not allowed in index expressions" msgstr "グルーピング演算はインデックス式では使用できません" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:496 msgid "aggregate functions are not allowed in index predicates" msgstr "集約関数はインデックス述語では使用できません" -#: parser/parse_agg.c:494 +#: parser/parse_agg.c:498 msgid "grouping operations are not allowed in index predicates" msgstr "グルーピング演算はインデックス述語では使用できません" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:503 msgid "aggregate functions are not allowed in statistics expressions" msgstr "集約関数は統計情報式では使用できません" -#: parser/parse_agg.c:501 +#: parser/parse_agg.c:505 msgid "grouping operations are not allowed in statistics expressions" msgstr "グルーピング演算は統計情報式では使用できません" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:510 msgid "aggregate functions are not allowed in transform expressions" msgstr "集約関数は変換式では使用できません" -#: parser/parse_agg.c:508 +#: parser/parse_agg.c:512 msgid "grouping operations are not allowed in transform expressions" msgstr "グルーピング演算は変換式では使用できません" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:517 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "集約関数はEXECUTEのパラメータでは使用できません" -#: parser/parse_agg.c:515 +#: parser/parse_agg.c:519 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "グルーピング演算はEXECUTEのパラメータでは使用できません" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:524 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "集約関数をはトリガーのWHEN条件では用できません" -#: parser/parse_agg.c:522 +#: parser/parse_agg.c:526 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "グルーピング演算はトリガーのWHEN条件では使用できません" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:531 msgid "aggregate functions are not allowed in partition bound" msgstr "集約関数はパーティション境界では使用できません" -#: parser/parse_agg.c:529 +#: parser/parse_agg.c:533 msgid "grouping operations are not allowed in partition bound" msgstr "グルーピング演算はパーティション境界では使用できません" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:538 msgid "aggregate functions are not allowed in partition key expressions" msgstr "集約関数はパーティションキー式では使用できません" -#: parser/parse_agg.c:536 +#: parser/parse_agg.c:540 msgid "grouping operations are not allowed in partition key expressions" msgstr "グルーピング演算はパーティションキー式では使用できません" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:546 msgid "aggregate functions are not allowed in column generation expressions" msgstr "集約関数はカラム生成式では使用できません" -#: parser/parse_agg.c:544 +#: parser/parse_agg.c:548 msgid "grouping operations are not allowed in column generation expressions" msgstr "グルーピング演算はカラム生成式では使用できません" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:554 msgid "aggregate functions are not allowed in CALL arguments" msgstr "集約関数はCALLの引数では使用できません" -#: parser/parse_agg.c:552 +#: parser/parse_agg.c:556 msgid "grouping operations are not allowed in CALL arguments" msgstr "グルーピング演算はCALLの引数では使用できません" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:562 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "集約関数は COPY FROM の WHERE 条件では使用できません" -#: parser/parse_agg.c:560 +#: parser/parse_agg.c:564 msgid "grouping operations are not allowed in COPY FROM WHERE conditions" msgstr "グルーピング演算は COPY FROM の WHERE 条件の中では使用できません" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:587 parser/parse_clause.c:1834 +#: parser/parse_agg.c:591 parser/parse_clause.c:1834 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "集約関数は%sでは使用できません" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:590 +#: parser/parse_agg.c:594 #, c-format msgid "grouping operations are not allowed in %s" msgstr "グルーピング演算は%sでは使用できません" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:690 parser/parse_agg.c:727 +#, c-format +msgid "outer-level aggregate cannot use a nested CTE" +msgstr "上位レベルの集約では、下位レベルのCTEを使用することはできません" + +#: parser/parse_agg.c:691 parser/parse_agg.c:728 +#, c-format +msgid "CTE \"%s\" is below the aggregate's semantic level." +msgstr "CTE \"%s\" は、この集約のクエリレベルよりも下位にあります。" + +#: parser/parse_agg.c:713 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "アウタレベルの集約は直接引数に低位の変数を含むことができません" -#: parser/parse_agg.c:769 +#: parser/parse_agg.c:798 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "集合返却関数の呼び出しに集約関数の呼び出しを含むことはできません" -#: parser/parse_agg.c:770 parser/parse_expr.c:1678 parser/parse_expr.c:2167 parser/parse_func.c:883 +#: parser/parse_agg.c:799 parser/parse_expr.c:1678 parser/parse_expr.c:2167 parser/parse_func.c:883 #, c-format msgid "You might be able to move the set-returning function into a LATERAL FROM item." msgstr "この集合返却関数をLATERAL FROM項目に移動できるかもしれません。" -#: parser/parse_agg.c:775 +#: parser/parse_agg.c:804 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "集約関数の呼び出しにウィンドウ関数の呼び出しを含むことはできません" -#: parser/parse_agg.c:854 +#: parser/parse_agg.c:907 msgid "window functions are not allowed in JOIN conditions" msgstr "JOIN条件ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:861 +#: parser/parse_agg.c:914 msgid "window functions are not allowed in functions in FROM" msgstr "FROM句内の関数ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:867 +#: parser/parse_agg.c:920 msgid "window functions are not allowed in policy expressions" msgstr "ウィンドウ関数はポリシ式では使用できません" -#: parser/parse_agg.c:880 +#: parser/parse_agg.c:933 msgid "window functions are not allowed in window definitions" msgstr "ウィンドウ関数はウィンドウ定義では使用できません" -#: parser/parse_agg.c:912 +#: parser/parse_agg.c:965 msgid "window functions are not allowed in check constraints" msgstr "ウィンドウ関数は検査制約の中では使用できません" -#: parser/parse_agg.c:916 +#: parser/parse_agg.c:969 msgid "window functions are not allowed in DEFAULT expressions" msgstr "ウィンドウ関数はDEFAULT式の中では使用できません" -#: parser/parse_agg.c:919 +#: parser/parse_agg.c:972 msgid "window functions are not allowed in index expressions" msgstr "ウィンドウ関数はインデックス式では使用できません" -#: parser/parse_agg.c:922 +#: parser/parse_agg.c:975 msgid "window functions are not allowed in statistics expressions" msgstr "ウィンドウ関数は統計情報式では使用できません" -#: parser/parse_agg.c:925 +#: parser/parse_agg.c:978 msgid "window functions are not allowed in index predicates" msgstr "ウィンドウ関数はインデックス述語では使用できません" -#: parser/parse_agg.c:928 +#: parser/parse_agg.c:981 msgid "window functions are not allowed in transform expressions" msgstr "ウィンドウ関数は変換式では使用できません" -#: parser/parse_agg.c:931 +#: parser/parse_agg.c:984 msgid "window functions are not allowed in EXECUTE parameters" msgstr "ウィンドウ関数はEXECUTEパラメータでは使用できません" -#: parser/parse_agg.c:934 +#: parser/parse_agg.c:987 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "ウィンドウ関数はトリガーのWHEN条件では使用できません" -#: parser/parse_agg.c:937 +#: parser/parse_agg.c:990 msgid "window functions are not allowed in partition bound" msgstr "ウィンドウ関数はパーティション境界では使用できません" -#: parser/parse_agg.c:940 +#: parser/parse_agg.c:993 msgid "window functions are not allowed in partition key expressions" msgstr "ウィンドウ関数はパーティションキー式では使用できません" -#: parser/parse_agg.c:943 +#: parser/parse_agg.c:996 msgid "window functions are not allowed in CALL arguments" msgstr "ウィンドウ関数はCALLの引数では使用できません" -#: parser/parse_agg.c:946 +#: parser/parse_agg.c:999 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "ウィンドウ関数は COPY FROM の WHERE 条件では使用できません" -#: parser/parse_agg.c:949 +#: parser/parse_agg.c:1002 msgid "window functions are not allowed in column generation expressions" msgstr "ウィンドウ関数はカラム生成式では使用できません" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:972 parser/parse_clause.c:1843 +#: parser/parse_agg.c:1025 parser/parse_clause.c:1843 #, c-format msgid "window functions are not allowed in %s" msgstr "ウィンドウ関数は%sの中では使用できません" -#: parser/parse_agg.c:1006 parser/parse_clause.c:2677 +#: parser/parse_agg.c:1059 parser/parse_clause.c:2677 #, c-format msgid "window \"%s\" does not exist" msgstr "ウィンドウ\"%s\"は存在しません" -#: parser/parse_agg.c:1090 +#: parser/parse_agg.c:1143 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "グルーピングセットの数が多すぎます (最大4096)" -#: parser/parse_agg.c:1230 +#: parser/parse_agg.c:1283 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "再帰問い合わせの再帰項では集約関数を使用できません" -#: parser/parse_agg.c:1423 +#: parser/parse_agg.c:1476 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" msgstr "列\"%s.%s\"はGROUP BY句で指定するか、集約関数内で使用しなければなりません" -#: parser/parse_agg.c:1426 +#: parser/parse_agg.c:1479 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "順序集合集約の直接引数はグルーピングされた列のみを使用しなければなりません。" -#: parser/parse_agg.c:1431 +#: parser/parse_agg.c:1484 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "外部問い合わせから副問い合わせがグループ化されていない列\"%s.%s\"を使用しています" -#: parser/parse_agg.c:1595 +#: parser/parse_agg.c:1648 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "GROUPINGの引数は関連するクエリレベルのグルーピング式でなければなりません" @@ -17475,17 +17495,17 @@ msgstr "テーブル\"%s.%s.%s\"に対する自動VACUUM" msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "テーブル\"%s.%s.%s\"に対する自動ANALYZE" -#: postmaster/autovacuum.c:2751 +#: postmaster/autovacuum.c:2754 #, c-format msgid "processing work entry for relation \"%s.%s.%s\"" msgstr "リレーション\"%s.%s.%s\"の作業エントリを処理しています" -#: postmaster/autovacuum.c:3437 +#: postmaster/autovacuum.c:3440 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "誤設定のため自動VACUUMが起動できません" -#: postmaster/autovacuum.c:3438 +#: postmaster/autovacuum.c:3441 #, c-format msgid "Enable the \"track_counts\" option." msgstr "\"track_counts\"オプションを有効にしてください。" @@ -17604,7 +17624,7 @@ msgstr "失敗したアーカイブコマンドは次のとおりです: %s" msgid "archive command was terminated by exception 0x%X" msgstr "アーカイブコマンドが例外0x%Xで終了しました" -#: postmaster/pgarch.c:597 postmaster/postmaster.c:3759 +#: postmaster/pgarch.c:597 postmaster/postmaster.c:3761 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "16進値の説明についてはC インクルードファイル\"ntstatus.h\"を参照してください。" @@ -17790,102 +17810,102 @@ msgstr "WALストリーミング(max_wal_senders > 0)を行うには wal_level msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: データトークンテーブルが不正です、修復してください\n" -#: postmaster/postmaster.c:1052 +#: postmaster/postmaster.c:1054 #, c-format msgid "could not create I/O completion port for child queue" msgstr "子キュー向けのI/O終了ポートを作成できませんでした" -#: postmaster/postmaster.c:1128 +#: postmaster/postmaster.c:1130 #, c-format msgid "ending log output to stderr" msgstr "標準エラー出力へのログ出力を終了しています" -#: postmaster/postmaster.c:1129 +#: postmaster/postmaster.c:1131 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "この後のログ出力はログ配送先\"%s\"に出力されます。" -#: postmaster/postmaster.c:1140 +#: postmaster/postmaster.c:1142 #, c-format msgid "starting %s" msgstr "%s を起動しています" -#: postmaster/postmaster.c:1161 postmaster/postmaster.c:1260 utils/init/miscinit.c:1684 +#: postmaster/postmaster.c:1163 postmaster/postmaster.c:1262 utils/init/miscinit.c:1684 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "パラメータ\"%s\"のリスト構文が不正です" -#: postmaster/postmaster.c:1192 +#: postmaster/postmaster.c:1194 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "\"%s\"に関する監視用ソケットを作成できませんでした" -#: postmaster/postmaster.c:1198 +#: postmaster/postmaster.c:1200 #, c-format msgid "could not create any TCP/IP sockets" msgstr "TCP/IPソケットを作成できませんでした" -#: postmaster/postmaster.c:1230 +#: postmaster/postmaster.c:1232 #, c-format msgid "DNSServiceRegister() failed: error code %ld" msgstr "DNSServiceRegister()が失敗しました: エラーコード %ld" -#: postmaster/postmaster.c:1282 +#: postmaster/postmaster.c:1284 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "ディレクトリ\"%s\"においてUnixドメインソケットを作成できませんでした" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1290 #, c-format msgid "could not create any Unix-domain sockets" msgstr "Unixドメインソケットを作成できませんでした" -#: postmaster/postmaster.c:1300 +#: postmaster/postmaster.c:1302 #, c-format msgid "no socket created for listening" msgstr "監視用に作成するソケットはありません" -#: postmaster/postmaster.c:1331 +#: postmaster/postmaster.c:1333 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: 外部PIDファイル\"%s\"の権限を変更できませんでした: %s\n" -#: postmaster/postmaster.c:1335 +#: postmaster/postmaster.c:1337 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: 外部PIDファイル\"%s\"に書き出せませんでした: %s\n" -#: postmaster/postmaster.c:1368 utils/init/postinit.c:216 +#: postmaster/postmaster.c:1370 utils/init/postinit.c:216 #, c-format msgid "could not load pg_hba.conf" msgstr "pg_hba.conf の読み込みができませんでした" -#: postmaster/postmaster.c:1396 +#: postmaster/postmaster.c:1398 #, c-format msgid "postmaster became multithreaded during startup" msgstr "postmasterは起動値処理中はマルチスレッドで動作します" -#: postmaster/postmaster.c:1397 postmaster/postmaster.c:5148 +#: postmaster/postmaster.c:1399 postmaster/postmaster.c:5150 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "LC_ALL環境変数を使用可能なロケールに設定してください。" -#: postmaster/postmaster.c:1492 +#: postmaster/postmaster.c:1494 #, c-format msgid "%s: could not locate my own executable path" msgstr "%s: 自身の実行ファイルが見つかりませんでした" -#: postmaster/postmaster.c:1499 +#: postmaster/postmaster.c:1501 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: 一致するpostgres実行ファイルがありませんでした" -#: postmaster/postmaster.c:1522 utils/misc/tzparser.c:340 +#: postmaster/postmaster.c:1524 utils/misc/tzparser.c:340 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." msgstr "これは、PostgreSQLのインストールが不完全であるかまたは、ファイル\"%s\"が本来の場所からなくなってしまったことを示しています。" -#: postmaster/postmaster.c:1549 +#: postmaster/postmaster.c:1551 #, c-format msgid "" "%s: could not find the database system\n" @@ -17896,470 +17916,470 @@ msgstr "" "ディレクトリ\"%s\"にあるものと想定していましたが、\n" "ファイル\"%s\"をオープンできませんでした: %s\n" -#: postmaster/postmaster.c:1726 +#: postmaster/postmaster.c:1728 #, c-format msgid "select() failed in postmaster: %m" msgstr "postmasterでselect()が失敗しました: %m" -#: postmaster/postmaster.c:1862 +#: postmaster/postmaster.c:1864 #, c-format msgid "issuing SIGKILL to recalcitrant children" msgstr "手に負えない子プロセスにSIGKILLを送出します" -#: postmaster/postmaster.c:1883 +#: postmaster/postmaster.c:1885 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" msgstr "データディレクトリのロックファイルが不正なため、即時シャットダウンを実行中です" -#: postmaster/postmaster.c:1986 postmaster/postmaster.c:2014 +#: postmaster/postmaster.c:1988 postmaster/postmaster.c:2016 #, c-format msgid "incomplete startup packet" msgstr "開始パケットが不完全です" -#: postmaster/postmaster.c:1998 postmaster/postmaster.c:2031 +#: postmaster/postmaster.c:2000 postmaster/postmaster.c:2033 #, c-format msgid "invalid length of startup packet" msgstr "不正な開始パケット長" -#: postmaster/postmaster.c:2060 +#: postmaster/postmaster.c:2062 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "SSLネゴシエーション応答の送信に失敗しました: %m" -#: postmaster/postmaster.c:2078 +#: postmaster/postmaster.c:2080 #, c-format msgid "received unencrypted data after SSL request" msgstr "SSL要求の後に非暗号化データを受信しました" -#: postmaster/postmaster.c:2079 postmaster/postmaster.c:2123 +#: postmaster/postmaster.c:2081 postmaster/postmaster.c:2125 #, c-format msgid "This could be either a client-software bug or evidence of an attempted man-in-the-middle attack." msgstr "これはクライアントソフトウェアのバグであるか、man-in-the-middle攻撃の証左である可能性があります。" -#: postmaster/postmaster.c:2104 +#: postmaster/postmaster.c:2106 #, c-format msgid "failed to send GSSAPI negotiation response: %m" msgstr "GSSAPIネゴシエーション応答の送信に失敗しました: %m" -#: postmaster/postmaster.c:2122 +#: postmaster/postmaster.c:2124 #, c-format msgid "received unencrypted data after GSSAPI encryption request" msgstr "GSSAPI暗号化リクエストの後に非暗号化データを受信" -#: postmaster/postmaster.c:2146 +#: postmaster/postmaster.c:2148 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "フロントエンドプロトコル%u.%uをサポートしていません: サーバーは%u.0から %u.%uまでをサポートします" -#: postmaster/postmaster.c:2210 utils/misc/guc.c:7138 utils/misc/guc.c:7174 utils/misc/guc.c:7244 utils/misc/guc.c:8628 utils/misc/guc.c:11596 utils/misc/guc.c:11637 +#: postmaster/postmaster.c:2212 utils/misc/guc.c:7138 utils/misc/guc.c:7174 utils/misc/guc.c:7244 utils/misc/guc.c:8628 utils/misc/guc.c:11596 utils/misc/guc.c:11637 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "パラメータ\"%s\"の値が不正です: \"%s\"" -#: postmaster/postmaster.c:2213 +#: postmaster/postmaster.c:2215 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "有効な値: \"false\", 0, \"true\", 1, \"database\"。" -#: postmaster/postmaster.c:2258 +#: postmaster/postmaster.c:2260 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "開始パケットの配置が不正です: 最終バイトはターミネータであるはずです" -#: postmaster/postmaster.c:2275 +#: postmaster/postmaster.c:2277 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "開始パケットで指定されたPostgreSQLユーザー名は存在しません" -#: postmaster/postmaster.c:2339 +#: postmaster/postmaster.c:2341 #, c-format msgid "the database system is starting up" msgstr "データベースシステムは起動処理中です" -#: postmaster/postmaster.c:2345 +#: postmaster/postmaster.c:2347 #, c-format msgid "the database system is not yet accepting connections" msgstr "データベースシステムはまだ接続を受け付けていません" -#: postmaster/postmaster.c:2346 +#: postmaster/postmaster.c:2348 #, c-format msgid "Consistent recovery state has not been yet reached." msgstr "リカバリは一貫性を確保する時点に到達していません" -#: postmaster/postmaster.c:2350 +#: postmaster/postmaster.c:2352 #, c-format msgid "the database system is not accepting connections" msgstr "データベースシステムは接続を受け付けていません" -#: postmaster/postmaster.c:2351 +#: postmaster/postmaster.c:2353 #, c-format msgid "Hot standby mode is disabled." msgstr "ホットスタンバイモードは無効です。" -#: postmaster/postmaster.c:2356 +#: postmaster/postmaster.c:2358 #, c-format msgid "the database system is shutting down" msgstr "データベースシステムはシャットダウンしています" -#: postmaster/postmaster.c:2361 +#: postmaster/postmaster.c:2363 #, c-format msgid "the database system is in recovery mode" msgstr "データベースシステムはリカバリモードです" -#: postmaster/postmaster.c:2366 storage/ipc/procarray.c:499 storage/ipc/sinvaladt.c:297 storage/lmgr/proc.c:361 +#: postmaster/postmaster.c:2368 storage/ipc/procarray.c:499 storage/ipc/sinvaladt.c:297 storage/lmgr/proc.c:361 #, c-format msgid "sorry, too many clients already" msgstr "現在クライアント数が多すぎます" -#: postmaster/postmaster.c:2456 +#: postmaster/postmaster.c:2458 #, c-format msgid "wrong key in cancel request for process %d" msgstr "プロセス%dに対するキャンセル要求においてキーが間違っています" -#: postmaster/postmaster.c:2468 +#: postmaster/postmaster.c:2470 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "キャンセル要求内のPID %dがどのプロセスにも一致しません" -#: postmaster/postmaster.c:2721 +#: postmaster/postmaster.c:2723 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "SIGHUPを受け取りました。設定ファイルをリロードしています" #. translator: %s is a configuration file -#: postmaster/postmaster.c:2747 postmaster/postmaster.c:2751 +#: postmaster/postmaster.c:2749 postmaster/postmaster.c:2753 #, c-format msgid "%s was not reloaded" msgstr "%s は再読み込みされていません" -#: postmaster/postmaster.c:2761 +#: postmaster/postmaster.c:2763 #, c-format msgid "SSL configuration was not reloaded" msgstr "SSL設定は再読み込みされていません" -#: postmaster/postmaster.c:2817 +#: postmaster/postmaster.c:2819 #, c-format msgid "received smart shutdown request" msgstr "スマートシャットダウン要求を受け取りました" -#: postmaster/postmaster.c:2863 +#: postmaster/postmaster.c:2865 #, c-format msgid "received fast shutdown request" msgstr "高速シャットダウン要求を受け取りました" -#: postmaster/postmaster.c:2881 +#: postmaster/postmaster.c:2883 #, c-format msgid "aborting any active transactions" msgstr "活動中の全トランザクションをアボートしています" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2907 #, c-format msgid "received immediate shutdown request" msgstr "即時シャットダウン要求を受け取りました" -#: postmaster/postmaster.c:2982 +#: postmaster/postmaster.c:2984 #, c-format msgid "shutdown at recovery target" msgstr "リカバリ目標でシャットダウンします" -#: postmaster/postmaster.c:3000 postmaster/postmaster.c:3036 +#: postmaster/postmaster.c:3002 postmaster/postmaster.c:3038 msgid "startup process" msgstr "起動プロセス" -#: postmaster/postmaster.c:3003 +#: postmaster/postmaster.c:3005 #, c-format msgid "aborting startup due to startup process failure" msgstr "起動プロセスの失敗のため起動を中断しています" -#: postmaster/postmaster.c:3078 +#: postmaster/postmaster.c:3080 #, c-format msgid "database system is ready to accept connections" msgstr "データベースシステムの接続受け付け準備が整いました" -#: postmaster/postmaster.c:3099 +#: postmaster/postmaster.c:3101 msgid "background writer process" msgstr "バックグランドライタプロセス" -#: postmaster/postmaster.c:3153 +#: postmaster/postmaster.c:3155 msgid "checkpointer process" msgstr "チェックポイント処理プロセス" -#: postmaster/postmaster.c:3169 +#: postmaster/postmaster.c:3171 msgid "WAL writer process" msgstr "WALライタプロセス" -#: postmaster/postmaster.c:3184 +#: postmaster/postmaster.c:3186 msgid "WAL receiver process" msgstr "WAL 受信プロセス" -#: postmaster/postmaster.c:3199 +#: postmaster/postmaster.c:3201 msgid "autovacuum launcher process" msgstr "自動VACUUM起動プロセス" -#: postmaster/postmaster.c:3217 +#: postmaster/postmaster.c:3219 msgid "archiver process" msgstr "アーカイバプロセス" -#: postmaster/postmaster.c:3232 +#: postmaster/postmaster.c:3234 msgid "statistics collector process" msgstr "統計情報収集プロセス" -#: postmaster/postmaster.c:3246 +#: postmaster/postmaster.c:3248 msgid "system logger process" msgstr "システムログ取得プロセス" -#: postmaster/postmaster.c:3310 +#: postmaster/postmaster.c:3312 #, c-format msgid "background worker \"%s\"" msgstr "バックグラウンドワーカー\"%s\"" -#: postmaster/postmaster.c:3394 postmaster/postmaster.c:3414 postmaster/postmaster.c:3421 postmaster/postmaster.c:3439 +#: postmaster/postmaster.c:3396 postmaster/postmaster.c:3416 postmaster/postmaster.c:3423 postmaster/postmaster.c:3441 msgid "server process" msgstr "サーバープロセス" -#: postmaster/postmaster.c:3493 +#: postmaster/postmaster.c:3495 #, c-format msgid "terminating any other active server processes" msgstr "他の活動中のサーバープロセスを終了しています" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3748 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d)は終了コード%dで終了しました" -#: postmaster/postmaster.c:3748 postmaster/postmaster.c:3760 postmaster/postmaster.c:3770 postmaster/postmaster.c:3781 +#: postmaster/postmaster.c:3750 postmaster/postmaster.c:3762 postmaster/postmaster.c:3772 postmaster/postmaster.c:3783 #, c-format msgid "Failed process was running: %s" msgstr "失敗したプロセスが実行していました: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3757 +#: postmaster/postmaster.c:3759 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d)は例外%Xで終了しました" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3767 +#: postmaster/postmaster.c:3769 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d)はシグナル%dで終了しました: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3779 +#: postmaster/postmaster.c:3781 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d)は認識できないステータス%dで終了しました" -#: postmaster/postmaster.c:3993 +#: postmaster/postmaster.c:3995 #, c-format msgid "abnormal database system shutdown" msgstr "データベースシステムは異常にシャットダウンしました" -#: postmaster/postmaster.c:4031 +#: postmaster/postmaster.c:4033 #, c-format msgid "shutting down due to startup process failure" msgstr "起動プロセスの失敗のためシャットダウンします" -#: postmaster/postmaster.c:4037 +#: postmaster/postmaster.c:4039 #, c-format msgid "shutting down because restart_after_crash is off" msgstr "restart_after_crashがoffであるため、シャットダウンします" -#: postmaster/postmaster.c:4049 +#: postmaster/postmaster.c:4051 #, c-format msgid "all server processes terminated; reinitializing" msgstr "全てのサーバープロセスが終了しました: 再初期化しています" -#: postmaster/postmaster.c:4223 postmaster/postmaster.c:5575 postmaster/postmaster.c:5966 +#: postmaster/postmaster.c:4225 postmaster/postmaster.c:5577 postmaster/postmaster.c:5968 #, c-format msgid "could not generate random cancel key" msgstr "ランダムなキャンセルキーを生成できませんでした" -#: postmaster/postmaster.c:4277 +#: postmaster/postmaster.c:4279 #, c-format msgid "could not fork new process for connection: %m" msgstr "接続用の新しいプロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:4319 +#: postmaster/postmaster.c:4321 msgid "could not fork new process for connection: " msgstr "接続用の新しいプロセスをforkできませんでした" -#: postmaster/postmaster.c:4425 +#: postmaster/postmaster.c:4427 #, c-format msgid "connection received: host=%s port=%s" msgstr "接続を受け付けました: ホスト=%s ポート番号=%s" -#: postmaster/postmaster.c:4430 +#: postmaster/postmaster.c:4432 #, c-format msgid "connection received: host=%s" msgstr "接続を受け付けました: ホスト=%s" -#: postmaster/postmaster.c:4673 +#: postmaster/postmaster.c:4675 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "サーバープロセス\"%s\"を実行できませんでした: %m" -#: postmaster/postmaster.c:4731 +#: postmaster/postmaster.c:4733 #, c-format msgid "could not create backend parameter file mapping: error code %lu" msgstr "バックエンドパラメータファイルのマッピングの作成に失敗しました: エラーコード %lu" -#: postmaster/postmaster.c:4740 +#: postmaster/postmaster.c:4742 #, c-format msgid "could not map backend parameter memory: error code %lu" msgstr "バックエンドパラメータのメモリのマップに失敗しました: エラーコード %lu" -#: postmaster/postmaster.c:4767 +#: postmaster/postmaster.c:4769 #, c-format msgid "subprocess command line too long" msgstr "サブプロセスのコマンドラインが長すぎます" -#: postmaster/postmaster.c:4785 +#: postmaster/postmaster.c:4787 #, c-format msgid "CreateProcess() call failed: %m (error code %lu)" msgstr "CreateProcess() の呼び出しに失敗しました: %m (エラーコード %lu)" -#: postmaster/postmaster.c:4812 +#: postmaster/postmaster.c:4814 #, c-format msgid "could not unmap view of backend parameter file: error code %lu" msgstr "バックエンドパラメータファイルのビューのマップ解除に失敗しました: エラーコード %lu" -#: postmaster/postmaster.c:4816 +#: postmaster/postmaster.c:4818 #, c-format msgid "could not close handle to backend parameter file: error code %lu" msgstr "バックエンドパラメータファイルのハンドルのクローズに失敗しました: エラーコード%lu" -#: postmaster/postmaster.c:4838 +#: postmaster/postmaster.c:4840 #, c-format msgid "giving up after too many tries to reserve shared memory" msgstr "共有メモリの確保のリトライ回数が多すぎるため中断します" -#: postmaster/postmaster.c:4839 +#: postmaster/postmaster.c:4841 #, c-format msgid "This might be caused by ASLR or antivirus software." msgstr "これはASLRまたはアンチウイルスソフトウェアが原因である可能性があります。" -#: postmaster/postmaster.c:5021 +#: postmaster/postmaster.c:5023 #, c-format msgid "SSL configuration could not be loaded in child process" msgstr "SSL構成は子プロセスでは読み込めません" -#: postmaster/postmaster.c:5147 +#: postmaster/postmaster.c:5149 #, c-format msgid "postmaster became multithreaded" msgstr "postmasterがマルチスレッド動作になっています" -#: postmaster/postmaster.c:5235 +#: postmaster/postmaster.c:5237 #, c-format msgid "database system is ready to accept read-only connections" msgstr "データベースシステムはリードオンリー接続の受け付け準備ができました" -#: postmaster/postmaster.c:5499 +#: postmaster/postmaster.c:5501 #, c-format msgid "could not fork startup process: %m" msgstr "起動プロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5503 +#: postmaster/postmaster.c:5505 #, c-format msgid "could not fork archiver process: %m" msgstr "アーカイバプロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5507 +#: postmaster/postmaster.c:5509 #, c-format msgid "could not fork background writer process: %m" msgstr "バックグランドライタプロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5511 +#: postmaster/postmaster.c:5513 #, c-format msgid "could not fork checkpointer process: %m" msgstr "チェックポイント処理プロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5515 +#: postmaster/postmaster.c:5517 #, c-format msgid "could not fork WAL writer process: %m" msgstr "WALライタプロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5519 +#: postmaster/postmaster.c:5521 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "WAL 受信プロセスを fork できませんでした: %m" -#: postmaster/postmaster.c:5523 +#: postmaster/postmaster.c:5525 #, c-format msgid "could not fork process: %m" msgstr "プロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5724 postmaster/postmaster.c:5747 +#: postmaster/postmaster.c:5726 postmaster/postmaster.c:5749 #, c-format msgid "database connection requirement not indicated during registration" msgstr "登録時にデータベース接続の必要性が示されていません" -#: postmaster/postmaster.c:5731 postmaster/postmaster.c:5754 +#: postmaster/postmaster.c:5733 postmaster/postmaster.c:5756 #, c-format msgid "invalid processing mode in background worker" msgstr "バックグラウンドワーカー内の不正な処理モード" -#: postmaster/postmaster.c:5839 +#: postmaster/postmaster.c:5841 #, c-format msgid "could not fork worker process: %m" msgstr "ワーカープロセスをforkできませんでした: %m" -#: postmaster/postmaster.c:5952 +#: postmaster/postmaster.c:5954 #, c-format msgid "no slot available for new worker process" msgstr "新しいワーカープロセスに割り当て可能なスロットがありません" -#: postmaster/postmaster.c:6286 +#: postmaster/postmaster.c:6288 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "バックエンドで使用するためにソケット%dを複製できませんでした: エラーコード %d" -#: postmaster/postmaster.c:6318 +#: postmaster/postmaster.c:6320 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "継承したソケットを作成できませんでした: エラーコード %d\n" -#: postmaster/postmaster.c:6347 +#: postmaster/postmaster.c:6349 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "バックエンド変数ファイル\"%s\"をオープンできませんでした: %s\n" -#: postmaster/postmaster.c:6354 +#: postmaster/postmaster.c:6356 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "バックエンド変数ファイル\"%s\"から読み取れませんでした: %s\n" -#: postmaster/postmaster.c:6363 +#: postmaster/postmaster.c:6365 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "ファイル\"%s\"を削除できませんでした: %s\n" -#: postmaster/postmaster.c:6380 +#: postmaster/postmaster.c:6382 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "バックエンド変数のビューをマップできませんでした: エラーコード %lu\n" -#: postmaster/postmaster.c:6389 +#: postmaster/postmaster.c:6391 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "バックエンド変数のビューをアンマップできませんでした: エラーコード %lu\n" -#: postmaster/postmaster.c:6396 +#: postmaster/postmaster.c:6398 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "バックエンドパラメータ変数のハンドルをクローズできませんでした: エラーコード%lu\n" -#: postmaster/postmaster.c:6558 +#: postmaster/postmaster.c:6560 #, c-format msgid "could not read exit code for process\n" msgstr "子プロセスの終了コードの読み込みができませんでした\n" -#: postmaster/postmaster.c:6600 +#: postmaster/postmaster.c:6602 #, c-format msgid "could not post child completion status\n" msgstr "個プロセスの終了コードを投稿できませんでした\n" @@ -18874,7 +18894,7 @@ msgstr "OID%dのレプリケーション基点は既にPID%dで使用中です" msgid "could not find free replication state slot for replication origin with OID %u" msgstr "OID%uのレプリケーション基点に対するレプリケーション状態スロットの空きがありません" -#: replication/logical/origin.c:941 replication/logical/origin.c:1128 replication/slot.c:1867 +#: replication/logical/origin.c:941 replication/logical/origin.c:1128 replication/slot.c:1903 #, c-format msgid "Increase max_replication_slots and try again." msgstr "max_replication_slotsを増やして再度試してください" @@ -19173,117 +19193,116 @@ msgstr "要求されたproto_version=%dはストリーミングをサポート msgid "streaming requested, but not supported by output plugin" msgstr "ストリーミングが要求されましたが、出力プラグインではサポートされていません" -#: replication/slot.c:180 +#: replication/slot.c:212 #, c-format msgid "replication slot name \"%s\" is too short" msgstr "レプリケーションスロット名\"%s\"は短すぎます" -#: replication/slot.c:189 +#: replication/slot.c:220 #, c-format msgid "replication slot name \"%s\" is too long" msgstr "レプリケーションスロット名\"%s\"は長すぎます" -#: replication/slot.c:202 +#: replication/slot.c:232 #, c-format msgid "replication slot name \"%s\" contains invalid character" msgstr "レプリケーションスロット名\"%s\"は不正な文字を含んでいます" -#: replication/slot.c:204 -#, c-format +#: replication/slot.c:233 msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character." msgstr "レプリケーションスロット名は小文字、数字とアンダースコアのみを含むことができます。" -#: replication/slot.c:258 +#: replication/slot.c:287 #, c-format msgid "replication slot \"%s\" already exists" msgstr "レプリケーションスロット\"%s\"はすでに存在します" -#: replication/slot.c:268 +#: replication/slot.c:297 #, c-format msgid "all replication slots are in use" msgstr "レプリケーションスロットは全て使用中です" -#: replication/slot.c:269 +#: replication/slot.c:298 #, c-format msgid "Free one or increase max_replication_slots." msgstr "どれか一つを解放するか、max_replication_slots を大きくしてください。" -#: replication/slot.c:402 replication/slotfuncs.c:761 utils/adt/pgstatfuncs.c:2228 +#: replication/slot.c:431 replication/slotfuncs.c:761 utils/adt/pgstatfuncs.c:2228 #, c-format msgid "replication slot \"%s\" does not exist" msgstr "レプリケーションスロット\"%s\"は存在しません" -#: replication/slot.c:448 replication/slot.c:1025 +#: replication/slot.c:477 replication/slot.c:1054 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "レプリケーションスロット\"%s\"はPID%dで使用中です" -#: replication/slot.c:676 replication/slot.c:1419 replication/slot.c:1802 +#: replication/slot.c:705 replication/slot.c:1448 replication/slot.c:1838 #, c-format msgid "could not remove directory \"%s\"" msgstr "ディレクトリ\"%s\"を削除できませんでした" -#: replication/slot.c:1060 +#: replication/slot.c:1089 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "レプリケーションスロットは max_replication_slots > 0 のときだけ使用できます" -#: replication/slot.c:1065 +#: replication/slot.c:1094 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "レプリケーションスロットは wal_level >= replica のときだけ使用できます" -#: replication/slot.c:1250 +#: replication/slot.c:1279 #, c-format msgid "terminating process %d to release replication slot \"%s\"" msgstr "プロセス%dを終了してレプリケーションスロット\"%s\"を解放します" -#: replication/slot.c:1288 +#: replication/slot.c:1317 #, c-format msgid "invalidating slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size" msgstr "restart_lsnの値 %2$X/%3$X が max_slot_wal_keep_size の範囲を超えたため、スロット\"%1$s\"を無効化します" -#: replication/slot.c:1740 +#: replication/slot.c:1776 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "レプリケーションスロットファイル\"%1$s\"のマジックナンバーが不正です: %3$uのはずが%2$uでした" -#: replication/slot.c:1747 +#: replication/slot.c:1783 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "レプリケーションスロットファイル\"%s\"はサポート外のバージョン%uです" -#: replication/slot.c:1754 +#: replication/slot.c:1790 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "レプリケーションスロットファイル\"%s\"のサイズ%uは異常です" -#: replication/slot.c:1790 +#: replication/slot.c:1826 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "レプリケーションスロットファイル\"%s\"のチェックサムが一致しません: %uですが、%uであるべきです" -#: replication/slot.c:1824 +#: replication/slot.c:1860 #, c-format msgid "logical replication slot \"%s\" exists, but wal_level < logical" msgstr "論理レプリケーションスロット\"%s\"がありますが、wal_level < logical です" -#: replication/slot.c:1826 +#: replication/slot.c:1862 #, c-format msgid "Change wal_level to be logical or higher." msgstr "wal_level を logical もしくはそれより上位の設定にしてください。" -#: replication/slot.c:1830 +#: replication/slot.c:1866 #, c-format msgid "physical replication slot \"%s\" exists, but wal_level < replica" msgstr "物理レプリケーションスロット\"%s\"がありますが、wal_level < replica です" -#: replication/slot.c:1832 +#: replication/slot.c:1868 #, c-format msgid "Change wal_level to be replica or higher." msgstr "wal_level を replica もしくはそれより上位の設定にしてください。" -#: replication/slot.c:1866 +#: replication/slot.c:1902 #, c-format msgid "too many replication slots active before shutdown" msgstr "シャットダウン前のアクティブなレプリケーションスロットの数が多すぎます" @@ -19449,122 +19468,122 @@ msgstr "プライマリサーバーからライムライン%u用のタイムラ msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "ログファイルセグメント%sのオフセット%uに長さ%luで書き出せませんでした: %m" -#: replication/walsender.c:525 storage/smgr/md.c:1336 +#: replication/walsender.c:539 storage/smgr/md.c:1336 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "ファイル\"%s\"の終端へシークできませんでした: %m" -#: replication/walsender.c:529 +#: replication/walsender.c:543 #, c-format msgid "could not seek to beginning of file \"%s\": %m" msgstr "ファイル\"%s\"の先頭にシークできませんでした: %m" -#: replication/walsender.c:580 +#: replication/walsender.c:594 #, c-format msgid "IDENTIFY_SYSTEM has not been run before START_REPLICATION" msgstr "IDENTIFY_SYSTEM が START_REPLICATION の前に実行されていません" -#: replication/walsender.c:609 +#: replication/walsender.c:623 #, c-format msgid "cannot use a logical replication slot for physical replication" msgstr "論理レプリケーションスロットは物理レプリケーションには使用できません" -#: replication/walsender.c:678 +#: replication/walsender.c:692 #, c-format msgid "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "タイムライン%3$u上の要求された開始ポイント%1$X/%2$Xはサーバーの履歴にありません" -#: replication/walsender.c:681 +#: replication/walsender.c:695 #, c-format msgid "This server's history forked from timeline %u at %X/%X." msgstr "サーバーの履歴はタイムライン%uの%X/%Xからフォークしました。" -#: replication/walsender.c:725 +#: replication/walsender.c:739 #, c-format msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "要求された開始ポイント%X/%XはサーバーのWALフラッシュ位置%X/%Xより進んでいます" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:975 +#: replication/walsender.c:989 #, c-format msgid "%s must not be called inside a transaction" msgstr "%sはトランザクション内では呼び出せません" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:985 +#: replication/walsender.c:999 #, c-format msgid "%s must be called inside a transaction" msgstr "%sはトランザクション内で呼び出さなければなりません" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:991 +#: replication/walsender.c:1005 #, c-format msgid "%s must be called in REPEATABLE READ isolation mode transaction" msgstr "%s は REPEATABLE READ 分離レベルのトランザクションで呼び出されなければなりません" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:997 +#: replication/walsender.c:1011 #, c-format msgid "%s must be called before any query" msgstr "%s は問い合わせの実行前に呼び出されなければなりません" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:1003 +#: replication/walsender.c:1017 #, c-format msgid "%s must not be called in a subtransaction" msgstr "%s はサブトランザクション内では呼び出せません" -#: replication/walsender.c:1146 +#: replication/walsender.c:1160 #, c-format msgid "cannot read from logical replication slot \"%s\"" msgstr "論理レプリケーションスロット\"%s\"は読み込めません" -#: replication/walsender.c:1148 +#: replication/walsender.c:1162 #, c-format msgid "This slot has been invalidated because it exceeded the maximum reserved size." msgstr "最大留保量を超えたため、このスロットは無効化されています。" -#: replication/walsender.c:1158 +#: replication/walsender.c:1172 #, c-format msgid "terminating walsender process after promotion" msgstr "昇格後にWAL送信プロセスを終了します" -#: replication/walsender.c:1552 +#: replication/walsender.c:1566 #, c-format msgid "cannot execute new commands while WAL sender is in stopping mode" msgstr "WAL送信プロセスが停止モードの間は新しいコマンドを実行できません" -#: replication/walsender.c:1587 +#: replication/walsender.c:1601 #, c-format msgid "cannot execute SQL commands in WAL sender for physical replication" msgstr "物理レプリケーション用のWAL送信プロセスでSQLコマンドは実行できません" -#: replication/walsender.c:1620 +#: replication/walsender.c:1634 #, c-format msgid "received replication command: %s" msgstr "レプリケーションコマンドを受信しました: %s" -#: replication/walsender.c:1628 tcop/fastpath.c:208 tcop/postgres.c:1046 tcop/postgres.c:1405 tcop/postgres.c:1678 tcop/postgres.c:2159 tcop/postgres.c:2592 tcop/postgres.c:2671 +#: replication/walsender.c:1642 tcop/fastpath.c:208 tcop/postgres.c:1046 tcop/postgres.c:1405 tcop/postgres.c:1678 tcop/postgres.c:2159 tcop/postgres.c:2592 tcop/postgres.c:2671 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "現在のトランザクションがアボートしました。トランザクションブロックが終わるまでコマンドは無視されます" -#: replication/walsender.c:1763 replication/walsender.c:1798 +#: replication/walsender.c:1777 replication/walsender.c:1812 #, c-format msgid "unexpected EOF on standby connection" msgstr "スタンバイ接続で想定外のEOFがありました" -#: replication/walsender.c:1786 +#: replication/walsender.c:1800 #, c-format msgid "invalid standby message type \"%c\"" msgstr "スタンバイのメッセージタイプ\"%c\"は不正です" -#: replication/walsender.c:1875 +#: replication/walsender.c:1889 #, c-format msgid "unexpected message type \"%c\"" msgstr "想定しないメッセージタイプ\"%c\"" -#: replication/walsender.c:2292 +#: replication/walsender.c:2306 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "レプリケーションタイムアウトにより WAL 送信プロセスを終了しています" @@ -19789,196 +19808,196 @@ msgstr "ON SELECTルールの名前を変更することはできません" msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten" msgstr "WITH の問い合わせ名\"%s\"が、ルールのアクションと書き換えられようとしている問い合わせの両方に現れています" -#: rewrite/rewriteHandler.c:610 +#: rewrite/rewriteHandler.c:613 #, 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:663 +#: rewrite/rewriteHandler.c:666 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "複数ルールではRETURNINGリストを持つことはできません" -#: rewrite/rewriteHandler.c:895 rewrite/rewriteHandler.c:934 +#: rewrite/rewriteHandler.c:898 rewrite/rewriteHandler.c:937 #, c-format msgid "cannot insert a non-DEFAULT value into column \"%s\"" msgstr "列\"%s\"へはDEFAULT以外の値の挿入はできません" -#: rewrite/rewriteHandler.c:897 rewrite/rewriteHandler.c:963 +#: rewrite/rewriteHandler.c:900 rewrite/rewriteHandler.c:966 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "列\"%s\"は GENERATED ALWAYS として定義されています。" -#: rewrite/rewriteHandler.c:899 +#: rewrite/rewriteHandler.c:902 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "OVERRIDING SYSTEM VALUE を指定することで挿入を強制できます。" -#: rewrite/rewriteHandler.c:961 rewrite/rewriteHandler.c:969 +#: rewrite/rewriteHandler.c:964 rewrite/rewriteHandler.c:972 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "列\"%s\"はDEFAULTにのみ更新可能です" -#: rewrite/rewriteHandler.c:1104 rewrite/rewriteHandler.c:1122 +#: rewrite/rewriteHandler.c:1107 rewrite/rewriteHandler.c:1125 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "同じ列\"%s\"に複数の代入があります" -#: rewrite/rewriteHandler.c:1723 rewrite/rewriteHandler.c:3178 +#: rewrite/rewriteHandler.c:1726 rewrite/rewriteHandler.c:3181 #, c-format msgid "access to non-system view \"%s\" is restricted" msgstr "非システムのビュー\"%s\"へのアクセスは制限されています" -#: rewrite/rewriteHandler.c:2155 rewrite/rewriteHandler.c:4064 +#: rewrite/rewriteHandler.c:2158 rewrite/rewriteHandler.c:4084 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "リレーション\"%s\"のルールで無限再帰を検出しました" -#: rewrite/rewriteHandler.c:2260 +#: rewrite/rewriteHandler.c:2263 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "リレーション\"%s\"のポリシで無限再帰を検出しました" -#: rewrite/rewriteHandler.c:2590 +#: rewrite/rewriteHandler.c:2593 msgid "Junk view columns are not updatable." msgstr "ジャンクビュー列は更新不可です。" -#: rewrite/rewriteHandler.c:2595 +#: rewrite/rewriteHandler.c:2598 msgid "View columns that are not columns of their base relation are not updatable." msgstr "基底リレーションの列ではないビュー列は更新不可です。" -#: rewrite/rewriteHandler.c:2598 +#: rewrite/rewriteHandler.c:2601 msgid "View columns that refer to system columns are not updatable." msgstr "システム列を参照するビュー列は更新不可です。" -#: rewrite/rewriteHandler.c:2601 +#: rewrite/rewriteHandler.c:2604 msgid "View columns that return whole-row references are not updatable." msgstr "行全体参照を返すビュー列は更新不可です。" -#: rewrite/rewriteHandler.c:2662 +#: rewrite/rewriteHandler.c:2665 msgid "Views containing DISTINCT are not automatically updatable." msgstr "DISTINCTを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2665 +#: rewrite/rewriteHandler.c:2668 msgid "Views containing GROUP BY are not automatically updatable." msgstr "GROUP BYを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2668 +#: rewrite/rewriteHandler.c:2671 msgid "Views containing HAVING are not automatically updatable." msgstr "HAVINGを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2671 +#: rewrite/rewriteHandler.c:2674 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "UNION、INTERSECT、EXCEPTを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2674 +#: rewrite/rewriteHandler.c:2677 msgid "Views containing WITH are not automatically updatable." msgstr "WITHを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2677 +#: rewrite/rewriteHandler.c:2680 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "LIMIT、OFFSETを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2689 +#: rewrite/rewriteHandler.c:2692 msgid "Views that return aggregate functions are not automatically updatable." msgstr "集約関数を返すビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2692 +#: rewrite/rewriteHandler.c:2695 msgid "Views that return window functions are not automatically updatable." msgstr "ウィンドウ関数を返すビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2695 +#: rewrite/rewriteHandler.c:2698 msgid "Views that return set-returning functions are not automatically updatable." msgstr "集合返却関数を返すビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2702 rewrite/rewriteHandler.c:2706 rewrite/rewriteHandler.c:2714 +#: rewrite/rewriteHandler.c:2705 rewrite/rewriteHandler.c:2709 rewrite/rewriteHandler.c:2717 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "単一のテーブルまたはビューからselectしていないビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2717 +#: rewrite/rewriteHandler.c:2720 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "TABLESAMPLEを含むビューは自動更新できません。" -#: rewrite/rewriteHandler.c:2741 +#: rewrite/rewriteHandler.c:2744 msgid "Views that have no updatable columns are not automatically updatable." msgstr "更新可能な列を持たないビューは自動更新できません。" -#: rewrite/rewriteHandler.c:3238 +#: rewrite/rewriteHandler.c:3241 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "ビュー\"%2$s\"の列\"%1$s\"への挿入はできません" -#: rewrite/rewriteHandler.c:3246 +#: rewrite/rewriteHandler.c:3249 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "ビュー\"%2$s\"の列\"%1$s\"は更新できません" -#: rewrite/rewriteHandler.c:3728 +#: rewrite/rewriteHandler.c:3747 #, c-format msgid "DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH" msgstr "WITH句内のデータを変更する文では DO INSTEAD NOTIFY ルールはサポートされません" -#: rewrite/rewriteHandler.c:3739 +#: rewrite/rewriteHandler.c:3758 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "WITH句内のデータを変更する文では DO INSTEAD NOTHING ルールはサポートされません" -#: rewrite/rewriteHandler.c:3753 +#: rewrite/rewriteHandler.c:3772 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "WITH句内のデータを変更する文では、条件付き DO INSTEAD ルールはサポートされません" -#: rewrite/rewriteHandler.c:3757 +#: rewrite/rewriteHandler.c:3776 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "WITH句内のデータを変更する文では DO ALSO ルールはサポートされません" -#: rewrite/rewriteHandler.c:3762 +#: rewrite/rewriteHandler.c:3781 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "WITH句内のデータを変更する文ではマルチステートメントの DO INSTEAD ルールはサポートされません" -#: rewrite/rewriteHandler.c:3992 rewrite/rewriteHandler.c:4000 rewrite/rewriteHandler.c:4008 +#: rewrite/rewriteHandler.c:4012 rewrite/rewriteHandler.c:4020 rewrite/rewriteHandler.c:4028 #, c-format msgid "Views with conditional DO INSTEAD rules are not automatically updatable." msgstr "条件付きDO INSTEADルールを持つビューは自動更新できません。" -#: rewrite/rewriteHandler.c:4113 +#: rewrite/rewriteHandler.c:4134 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "リレーション\"%s\"へのINSERT RETURNINGを行うことはできません" -#: rewrite/rewriteHandler.c:4115 +#: rewrite/rewriteHandler.c:4136 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "RETURNING句を持つ無条件のON INSERT DO INSTEADルールが必要です。" -#: rewrite/rewriteHandler.c:4120 +#: rewrite/rewriteHandler.c:4141 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "リレーション\"%s\"へのUPDATE RETURNINGを行うことはできません" -#: rewrite/rewriteHandler.c:4122 +#: rewrite/rewriteHandler.c:4143 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "RETURNING句を持つ無条件のON UPDATE DO INSTEADルールが必要です。" -#: rewrite/rewriteHandler.c:4127 +#: rewrite/rewriteHandler.c:4148 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "リレーション\"%s\"へのDELETE RETURNINGを行うことはできません" -#: rewrite/rewriteHandler.c:4129 +#: rewrite/rewriteHandler.c:4150 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "RETURNING句を持つ無条件のON DELETE DO INSTEADルールが必要です。" -#: rewrite/rewriteHandler.c:4147 +#: rewrite/rewriteHandler.c:4168 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "ON CONFLICT句を伴うINSERTは、INSERTまたはUPDATEルールを持つテーブルでは使えません" -#: rewrite/rewriteHandler.c:4204 +#: rewrite/rewriteHandler.c:4225 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "複数問い合わせに対するルールにより書き換えられた問い合わせでは WITH を使用できません" diff --git a/src/backend/po/ru.po b/src/backend/po/ru.po index 7d1c3fb93f0..bafb9357250 100644 --- a/src/backend/po/ru.po +++ b/src/backend/po/ru.po @@ -4,14 +4,14 @@ # Serguei A. Mokhov , 2001-2005. # Oleg Bartunov , 2004-2005. # Dmitriy Olshevskiy , 2014. -# SPDX-FileCopyrightText: 2012-2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2012-2025, 2026 Alexander Lakhin # Maxim Yablokov , 2021, 2022, 2024. msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-09 06:29+0200\n" -"PO-Revision-Date: 2025-11-09 08:27+0200\n" +"POT-Creation-Date: 2026-02-07 08:59+0200\n" +"PO-Revision-Date: 2026-02-07 10:42+0200\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -37,16 +37,16 @@ msgstr "не удалось открыть файл \"%s\" для чтения: #: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 #: access/transam/timeline.c:143 access/transam/timeline.c:362 #: access/transam/twophase.c:1329 access/transam/xlog.c:3594 -#: access/transam/xlog.c:4843 access/transam/xlog.c:11737 -#: access/transam/xlog.c:11750 access/transam/xlog.c:12205 -#: access/transam/xlog.c:12285 access/transam/xlog.c:12322 -#: access/transam/xlog.c:12382 access/transam/xlogfuncs.c:703 +#: access/transam/xlog.c:4843 access/transam/xlog.c:11771 +#: access/transam/xlog.c:11784 access/transam/xlog.c:12239 +#: access/transam/xlog.c:12319 access/transam/xlog.c:12356 +#: access/transam/xlog.c:12416 access/transam/xlogfuncs.c:703 #: access/transam/xlogfuncs.c:722 commands/extension.c:3492 libpq/hba.c:534 #: replication/basebackup.c:2016 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 #: replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 -#: replication/logical/snapbuild.c:1988 replication/slot.c:1763 -#: replication/slot.c:1804 replication/walsender.c:559 +#: replication/logical/snapbuild.c:1988 replication/slot.c:1794 +#: replication/slot.c:1835 replication/walsender.c:559 #: storage/file/buffile.c:445 storage/file/copydir.c:195 #: utils/adt/genfile.c:202 utils/adt/misc.c:881 utils/cache/relmapper.c:744 #, c-format @@ -58,7 +58,7 @@ msgstr "не удалось прочитать файл \"%s\": %m" #: replication/basebackup.c:2020 replication/logical/origin.c:734 #: replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 #: replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 -#: replication/slot.c:1767 replication/slot.c:1808 replication/walsender.c:564 +#: replication/slot.c:1798 replication/slot.c:1839 replication/walsender.c:564 #: utils/cache/relmapper.c:748 #, c-format msgid "could not read file \"%s\": read %d of %zu" @@ -77,7 +77,7 @@ msgstr "не удалось прочитать файл \"%s\" (прочитан #: libpq/be-fsstubs.c:525 replication/logical/origin.c:667 #: replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 #: replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 -#: replication/slot.c:1652 replication/slot.c:1815 replication/walsender.c:574 +#: replication/slot.c:1683 replication/slot.c:1846 replication/walsender.c:574 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:735 #: storage/file/fd.c:3528 storage/file/fd.c:3631 utils/cache/relmapper.c:759 #: utils/cache/relmapper.c:898 @@ -118,7 +118,7 @@ msgstr "" #: replication/logical/reorderbuffer.c:4294 #: replication/logical/reorderbuffer.c:5070 #: replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 -#: replication/slot.c:1735 replication/walsender.c:532 +#: replication/slot.c:1766 replication/walsender.c:532 #: replication/walsender.c:2581 storage/file/copydir.c:161 #: storage/file/fd.c:710 storage/file/fd.c:3297 storage/file/fd.c:3515 #: storage/file/fd.c:3602 storage/smgr/md.c:506 utils/cache/relmapper.c:724 @@ -131,8 +131,8 @@ msgstr "не удалось открыть файл \"%s\": %m" #: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 #: access/transam/twophase.c:1726 access/transam/twophase.c:1735 -#: access/transam/xlog.c:11494 access/transam/xlog.c:11532 -#: access/transam/xlog.c:11945 access/transam/xlogfuncs.c:782 +#: access/transam/xlog.c:11528 access/transam/xlog.c:11566 +#: access/transam/xlog.c:11979 access/transam/xlogfuncs.c:782 #: postmaster/postmaster.c:5688 postmaster/syslogger.c:1499 #: postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 #, c-format @@ -145,10 +145,10 @@ msgstr "не удалось записать файл \"%s\": %m" #: access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 #: access/transam/timeline.c:506 access/transam/twophase.c:1747 #: access/transam/xlog.c:3438 access/transam/xlog.c:3628 -#: access/transam/xlog.c:4806 access/transam/xlog.c:10977 -#: access/transam/xlog.c:11018 replication/logical/snapbuild.c:1821 -#: replication/slot.c:1636 replication/slot.c:1745 storage/file/fd.c:727 -#: storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 +#: access/transam/xlog.c:4806 access/transam/xlog.c:11011 +#: access/transam/xlog.c:11052 replication/logical/snapbuild.c:1821 +#: replication/slot.c:1667 replication/slot.c:1776 storage/file/fd.c:727 +#: storage/file/fd.c:3623 storage/smgr/md.c:959 storage/smgr/md.c:1000 #: storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 #, c-format msgid "could not fsync file \"%s\": %m" @@ -172,17 +172,17 @@ msgstr "не удалось синхронизировать с ФС файл \" #: tcop/postgres.c:3620 utils/adt/cryptohashfuncs.c:46 #: utils/adt/cryptohashfuncs.c:66 utils/adt/formatting.c:1699 #: utils/adt/formatting.c:1823 utils/adt/formatting.c:1948 -#: utils/adt/pg_locale.c:450 utils/adt/pg_locale.c:614 utils/adt/regexp.c:223 +#: utils/adt/pg_locale.c:451 utils/adt/pg_locale.c:615 utils/adt/regexp.c:223 #: utils/fmgr/dfmgr.c:229 utils/hash/dynahash.c:513 utils/hash/dynahash.c:613 -#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:401 utils/mb/mbutils.c:429 -#: utils/mb/mbutils.c:814 utils/mb/mbutils.c:841 utils/misc/guc.c:5061 +#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 +#: utils/mb/mbutils.c:815 utils/mb/mbutils.c:842 utils/misc/guc.c:5061 #: utils/misc/guc.c:5077 utils/misc/guc.c:5090 utils/misc/guc.c:8447 #: utils/misc/tzparser.c:476 utils/mmgr/aset.c:476 utils/mmgr/dsa.c:702 #: utils/mmgr/dsa.c:724 utils/mmgr/dsa.c:805 utils/mmgr/generation.c:234 -#: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 -#: utils/mmgr/mcxt.c:1000 utils/mmgr/mcxt.c:1088 utils/mmgr/mcxt.c:1119 -#: utils/mmgr/mcxt.c:1155 utils/mmgr/mcxt.c:1207 utils/mmgr/mcxt.c:1242 -#: utils/mmgr/mcxt.c:1277 utils/mmgr/slab.c:238 +#: utils/mmgr/mcxt.c:891 utils/mmgr/mcxt.c:927 utils/mmgr/mcxt.c:965 +#: utils/mmgr/mcxt.c:1003 utils/mmgr/mcxt.c:1111 utils/mmgr/mcxt.c:1142 +#: utils/mmgr/mcxt.c:1178 utils/mmgr/mcxt.c:1230 utils/mmgr/mcxt.c:1265 +#: utils/mmgr/mcxt.c:1300 utils/mmgr/slab.c:238 #, c-format msgid "out of memory" msgstr "нехватка памяти" @@ -212,7 +212,7 @@ msgstr "не удалось найти запускаемый файл \"%s\"" msgid "could not change directory to \"%s\": %m" msgstr "не удалось перейти в каталог \"%s\": %m" -#: ../common/exec.c:299 access/transam/xlog.c:11368 +#: ../common/exec.c:299 access/transam/xlog.c:11402 #: replication/basebackup.c:1428 utils/adt/misc.c:362 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -241,8 +241,8 @@ msgstr "попытка дублирования нулевого указате #: ../common/file_utils.c:86 ../common/file_utils.c:446 #: ../common/file_utils.c:450 access/transam/twophase.c:1297 -#: access/transam/xlog.c:11470 access/transam/xlog.c:11508 -#: access/transam/xlog.c:11725 access/transam/xlogarchive.c:110 +#: access/transam/xlog.c:11504 access/transam/xlog.c:11542 +#: access/transam/xlog.c:11759 access/transam/xlogarchive.c:110 #: access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 #: commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 #: commands/tablespace.c:894 postmaster/pgarch.c:696 @@ -272,7 +272,7 @@ msgstr "не удалось прочитать каталог \"%s\": %m" #: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 #: postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 -#: replication/slot.c:672 replication/slot.c:1519 replication/slot.c:1668 +#: replication/slot.c:672 replication/slot.c:1550 replication/slot.c:1699 #: storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" @@ -604,7 +604,7 @@ msgstr "" "записан" #: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 -#: access/transam/xlog.c:11139 access/transam/xlog.c:11676 +#: access/transam/xlog.c:11173 access/transam/xlog.c:11710 #: access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 #: access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 #: access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 @@ -894,7 +894,7 @@ msgstr "метод сжатия lz4 не поддерживается" msgid "This functionality requires the server to be built with lz4 support." msgstr "Для этой функциональности в сервере не хватает поддержки lz4." -#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1589 +#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1592 #: utils/adt/xml.c:234 #, c-format msgid "You need to rebuild PostgreSQL using %s." @@ -1122,38 +1122,38 @@ msgid "" msgstr "" "в семействе операторов \"%s\" метода доступа %s нет межтипового оператора(ов)" -#: access/heap/heapam.c:2299 +#: access/heap/heapam.c:2302 #, c-format msgid "cannot insert tuples in a parallel worker" msgstr "вставлять кортежи в параллельном исполнителе нельзя" -#: access/heap/heapam.c:2770 +#: access/heap/heapam.c:2773 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "удалять кортежи во время параллельных операций нельзя" -#: access/heap/heapam.c:2816 +#: access/heap/heapam.c:2819 #, c-format msgid "attempted to delete invisible tuple" msgstr "попытка удаления невидимого кортежа" -#: access/heap/heapam.c:3262 access/heap/heapam.c:6529 access/index/genam.c:816 +#: access/heap/heapam.c:3265 access/heap/heapam.c:6617 access/index/genam.c:816 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "изменять кортежи во время параллельных операций нельзя" -#: access/heap/heapam.c:3449 +#: access/heap/heapam.c:3452 #, c-format msgid "attempted to update invisible tuple" msgstr "попытка изменения невидимого кортежа" -#: access/heap/heapam.c:4936 access/heap/heapam.c:4974 -#: access/heap/heapam.c:5239 access/heap/heapam_handler.c:457 +#: access/heap/heapam.c:4941 access/heap/heapam.c:4979 +#: access/heap/heapam.c:5246 access/heap/heapam_handler.c:457 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "не удалось получить блокировку строки в таблице \"%s\"" -#: access/heap/heapam.c:6342 commands/trigger.c:3152 +#: access/heap/heapam.c:6371 commands/trigger.c:3152 #: executor/nodeModifyTable.c:1988 executor/nodeModifyTable.c:2078 #, c-format msgid "" @@ -1185,11 +1185,11 @@ msgstr "не удалось записать в файл \"%s\" (записан #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:481 #: access/transam/xlog.c:3354 access/transam/xlog.c:3563 -#: access/transam/xlog.c:4785 access/transam/xlog.c:11485 -#: access/transam/xlog.c:11523 access/transam/xlog.c:11928 +#: access/transam/xlog.c:4785 access/transam/xlog.c:11519 +#: access/transam/xlog.c:11557 access/transam/xlog.c:11962 #: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4636 #: postmaster/postmaster.c:5675 replication/logical/origin.c:587 -#: replication/slot.c:1580 storage/file/copydir.c:167 storage/smgr/md.c:218 +#: replication/slot.c:1611 storage/file/copydir.c:167 storage/smgr/md.c:218 #: utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -1206,7 +1206,7 @@ msgstr "не удалось обрезать файл \"%s\" до нужного #: access/transam/xlog.c:4797 postmaster/postmaster.c:4646 #: postmaster/postmaster.c:4656 replication/logical/origin.c:599 #: replication/logical/origin.c:641 replication/logical/origin.c:660 -#: replication/logical/snapbuild.c:1797 replication/slot.c:1616 +#: replication/logical/snapbuild.c:1797 replication/slot.c:1647 #: storage/file/buffile.c:506 storage/file/copydir.c:207 #: utils/init/miscinit.c:1478 utils/init/miscinit.c:1489 #: utils/init/miscinit.c:1497 utils/misc/guc.c:8430 utils/misc/guc.c:8461 @@ -1221,7 +1221,7 @@ msgstr "не удалось записать в файл \"%s\": %m" #: postmaster/postmaster.c:1098 postmaster/syslogger.c:1465 #: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 #: replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 -#: replication/slot.c:1719 storage/file/fd.c:785 storage/file/fd.c:3168 +#: replication/slot.c:1750 storage/file/fd.c:785 storage/file/fd.c:3168 #: storage/file/fd.c:3230 storage/file/reinit.c:250 storage/ipc/dsm.c:315 #: storage/smgr/md.c:347 storage/smgr/md.c:397 storage/sync/sync.c:250 #: utils/time/snapmgr.c:1606 @@ -1766,7 +1766,7 @@ msgstr "" msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Убедитесь, что в конфигурации установлен параметр \"%s\"." -#: access/transam/multixact.c:1022 +#: access/transam/multixact.c:1106 #, c-format msgid "" "database is not accepting commands that generate new MultiXactIds to avoid " @@ -1775,8 +1775,8 @@ msgstr "" "база данных не принимает команды, создающие новые MultiXactId, во избежание " "потери данных из-за зацикливания в базе данных \"%s\"" -#: access/transam/multixact.c:1024 access/transam/multixact.c:1031 -#: access/transam/multixact.c:1055 access/transam/multixact.c:1064 +#: access/transam/multixact.c:1108 access/transam/multixact.c:1115 +#: access/transam/multixact.c:1139 access/transam/multixact.c:1148 #, c-format msgid "" "Execute a database-wide VACUUM in that database.\n" @@ -1787,7 +1787,7 @@ msgstr "" "Возможно, вам также придётся зафиксировать или откатить старые " "подготовленные транзакции и удалить неиспользуемые слоты репликации." -#: access/transam/multixact.c:1029 +#: access/transam/multixact.c:1113 #, c-format msgid "" "database is not accepting commands that generate new MultiXactIds to avoid " @@ -1796,7 +1796,7 @@ msgstr "" "база данных не принимает команды, создающие новые MultiXactId, во избежание " "потери данных из-за зацикливания в базе данных с OID %u" -#: access/transam/multixact.c:1050 access/transam/multixact.c:2334 +#: access/transam/multixact.c:1134 access/transam/multixact.c:2421 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "" @@ -1811,7 +1811,7 @@ msgstr[2] "" "база данных \"%s\" должна быть очищена, прежде чем будут использованы " "оставшиеся MultiXactId (%u)" -#: access/transam/multixact.c:1059 access/transam/multixact.c:2343 +#: access/transam/multixact.c:1143 access/transam/multixact.c:2430 #, c-format msgid "" "database with OID %u must be vacuumed before %u more MultiXactId is used" @@ -1827,12 +1827,12 @@ msgstr[2] "" "база данных с OID %u должна быть очищена, прежде чем будут использованы " "оставшиеся MultiXactId (%u)" -#: access/transam/multixact.c:1120 +#: access/transam/multixact.c:1207 #, c-format msgid "multixact \"members\" limit exceeded" msgstr "слишком много членов мультитранзакции" -#: access/transam/multixact.c:1121 +#: access/transam/multixact.c:1208 #, c-format msgid "" "This command would create a multixact with %u members, but the remaining " @@ -1850,7 +1850,7 @@ msgstr[2] "" "Мультитранзакция, создаваемая этой командой, должна включать членов: %u, но " "оставшегося места хватает только для %u." -#: access/transam/multixact.c:1126 +#: access/transam/multixact.c:1213 #, c-format msgid "" "Execute a database-wide VACUUM in database with OID %u with reduced " @@ -1860,7 +1860,7 @@ msgstr "" "Выполните очистку (VACUUM) всей базы данных с OID %u, уменьшив значения " "vacuum_multixact_freeze_min_age и vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1157 +#: access/transam/multixact.c:1244 #, c-format msgid "" "database with OID %u must be vacuumed before %d more multixact member is used" @@ -1877,7 +1877,7 @@ msgstr[2] "" "база данных с OID %u должна быть очищена, пока не использованы оставшиеся " "члены мультитранзакций (%d)" -#: access/transam/multixact.c:1162 +#: access/transam/multixact.c:1249 #, c-format msgid "" "Execute a database-wide VACUUM in that database with reduced " @@ -1887,17 +1887,22 @@ msgstr "" "Выполните очистку (VACUUM) всей этой базы данных, уменьшив значения " "vacuum_multixact_freeze_min_age и vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1301 +#: access/transam/multixact.c:1388 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u прекратил существование: видимо, произошло зацикливание" -#: access/transam/multixact.c:1307 +#: access/transam/multixact.c:1394 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u ещё не был создан: видимо, произошло зацикливание" -#: access/transam/multixact.c:2339 access/transam/multixact.c:2348 +#: access/transam/multixact.c:1469 +#, c-format +msgid "MultiXact %u has invalid next offset" +msgstr "для мультитранзакции %u получено некорректное следующее смещение" + +#: access/transam/multixact.c:2426 access/transam/multixact.c:2435 #: access/transam/varsup.c:151 access/transam/varsup.c:158 #: access/transam/varsup.c:466 access/transam/varsup.c:473 #, c-format @@ -1911,7 +1916,7 @@ msgstr "" "Возможно, вам также придётся зафиксировать или откатить старые " "подготовленные транзакции и удалить неиспользуемые слоты репликации." -#: access/transam/multixact.c:2622 +#: access/transam/multixact.c:2709 #, c-format msgid "" "MultiXact member wraparound protections are disabled because oldest " @@ -1920,12 +1925,12 @@ msgstr "" "Защита от зацикливания членов мультитранзакций отключена, так как старейшая " "отмеченная мультитранзакция %u не найдена на диске" -#: access/transam/multixact.c:2644 +#: access/transam/multixact.c:2731 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "Защита от зацикливания мультитранзакций сейчас включена" -#: access/transam/multixact.c:3038 +#: access/transam/multixact.c:3125 #, c-format msgid "" "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" @@ -1933,7 +1938,7 @@ msgstr "" "старейшая мультитранзакция %u не найдена, новейшая мультитранзакция: %u, " "усечение пропускается" -#: access/transam/multixact.c:3056 +#: access/transam/multixact.c:3143 #, c-format msgid "" "cannot truncate up to MultiXact %u because it does not exist on disk, " @@ -1942,41 +1947,50 @@ msgstr "" "выполнить усечение до мультитранзакции %u нельзя ввиду её отсутствия на " "диске, усечение пропускается" -#: access/transam/multixact.c:3370 +#: access/transam/multixact.c:3160 +#, c-format +msgid "" +"cannot truncate up to MultiXact %u because it has invalid offset, skipping " +"truncation" +msgstr "" +"выполнить усечение до мультитранзакции %u нельзя из-за некорректного " +"смещения, усечение пропускается" + +#: access/transam/multixact.c:3498 #, c-format msgid "invalid MultiXactId: %u" msgstr "неверный MultiXactId: %u" -#: access/transam/parallel.c:737 access/transam/parallel.c:856 +#: access/transam/parallel.c:744 access/transam/parallel.c:863 #, c-format msgid "parallel worker failed to initialize" msgstr "не удалось инициализировать параллельный исполнитель" -#: access/transam/parallel.c:738 access/transam/parallel.c:857 +#: access/transam/parallel.c:745 access/transam/parallel.c:864 #, c-format msgid "More details may be available in the server log." msgstr "Дополнительная информация может быть в журнале сервера." -#: access/transam/parallel.c:918 +#: access/transam/parallel.c:925 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster завершился в процессе параллельной транзакции" -#: access/transam/parallel.c:1105 +#: access/transam/parallel.c:1112 #, c-format msgid "lost connection to parallel worker" msgstr "потеряно подключение к параллельному исполнителю" -#: access/transam/parallel.c:1171 access/transam/parallel.c:1173 +#: access/transam/parallel.c:1178 access/transam/parallel.c:1180 msgid "parallel worker" msgstr "параллельный исполнитель" -#: access/transam/parallel.c:1326 +#: access/transam/parallel.c:1333 #, c-format msgid "could not map dynamic shared memory segment" msgstr "не удалось отобразить динамический сегмент разделяемой памяти" -#: access/transam/parallel.c:1331 +#: access/transam/parallel.c:1338 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "неверное магическое число в динамическом сегменте разделяемой памяти" @@ -2330,114 +2344,114 @@ msgstr "" msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "в одной транзакции не может быть больше 2^32-2 команд" -#: access/transam/xact.c:1584 +#: access/transam/xact.c:1594 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "превышен предел числа зафиксированных подтранзакций (%d)" -#: access/transam/xact.c:2435 +#: access/transam/xact.c:2445 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary objects" msgstr "" "нельзя выполнить PREPARE для транзакции, оперирующей с временными объектами" -#: access/transam/xact.c:2445 +#: access/transam/xact.c:2455 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "нельзя выполнить PREPARE для транзакции, снимки которой экспортированы" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3416 +#: access/transam/xact.c:3426 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s не может выполняться внутри блока транзакции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3426 +#: access/transam/xact.c:3436 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s не может выполняться внутри подтранзакции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3436 +#: access/transam/xact.c:3446 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s нельзя выполнять в конвейере" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3446 +#: access/transam/xact.c:3456 #, c-format msgid "%s cannot be executed from a function" msgstr "%s нельзя выполнять внутри функции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3517 access/transam/xact.c:3832 -#: access/transam/xact.c:3911 access/transam/xact.c:4034 -#: access/transam/xact.c:4185 access/transam/xact.c:4254 -#: access/transam/xact.c:4365 +#: access/transam/xact.c:3527 access/transam/xact.c:3842 +#: access/transam/xact.c:3921 access/transam/xact.c:4044 +#: access/transam/xact.c:4195 access/transam/xact.c:4264 +#: access/transam/xact.c:4375 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s может выполняться только внутри блоков транзакций" -#: access/transam/xact.c:3718 +#: access/transam/xact.c:3728 #, c-format msgid "there is already a transaction in progress" msgstr "транзакция уже выполняется" -#: access/transam/xact.c:3837 access/transam/xact.c:3916 -#: access/transam/xact.c:4039 +#: access/transam/xact.c:3847 access/transam/xact.c:3926 +#: access/transam/xact.c:4049 #, c-format msgid "there is no transaction in progress" msgstr "нет незавершённой транзакции" -#: access/transam/xact.c:3927 +#: access/transam/xact.c:3937 #, c-format msgid "cannot commit during a parallel operation" msgstr "фиксировать транзакции во время параллельных операций нельзя" -#: access/transam/xact.c:4050 +#: access/transam/xact.c:4060 #, c-format msgid "cannot abort during a parallel operation" msgstr "прерывание во время параллельных операций невозможно" -#: access/transam/xact.c:4149 +#: access/transam/xact.c:4159 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "определять точки сохранения во время параллельных операций нельзя" -#: access/transam/xact.c:4236 +#: access/transam/xact.c:4246 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "высвобождать точки сохранения во время параллельных операций нельзя" -#: access/transam/xact.c:4246 access/transam/xact.c:4297 -#: access/transam/xact.c:4357 access/transam/xact.c:4406 +#: access/transam/xact.c:4256 access/transam/xact.c:4307 +#: access/transam/xact.c:4367 access/transam/xact.c:4416 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "точка сохранения \"%s\" не существует" -#: access/transam/xact.c:4303 access/transam/xact.c:4412 +#: access/transam/xact.c:4313 access/transam/xact.c:4422 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "" "точка сохранения \"%s\" на текущем уровне точек сохранения не существует" -#: access/transam/xact.c:4345 +#: access/transam/xact.c:4355 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "откатиться к точке сохранения во время параллельных операций нельзя" -#: access/transam/xact.c:4473 +#: access/transam/xact.c:4483 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "запускать подтранзакции во время параллельных операций нельзя" -#: access/transam/xact.c:4541 +#: access/transam/xact.c:4551 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "фиксировать подтранзакции во время параллельных операций нельзя" -#: access/transam/xact.c:5188 +#: access/transam/xact.c:5198 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "в одной транзакции не может быть больше 2^32-1 подтранзакций" @@ -3036,7 +3050,7 @@ msgstr "не удалось создать символическую ссылк msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "файл \"%s\" игнорируется ввиду отсутствия файла \"%s\"" -#: access/transam/xlog.c:6847 access/transam/xlog.c:12461 +#: access/transam/xlog.c:6847 access/transam/xlog.c:12495 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Файл \"%s\" был переименован в \"%s\"." @@ -3051,12 +3065,21 @@ msgstr "Не удалось переименовать файл \"%s\" в \"%s\" msgid "could not locate a valid checkpoint record" msgstr "не удалось считать правильную запись контрольной точки" -#: access/transam/xlog.c:6942 +#: access/transam/xlog.c:6915 +#, c-format +msgid "" +"could not find redo location %X/%08X referenced by checkpoint record at %X/" +"%08X" +msgstr "" +"не удалось найти положение REDO %X/%08X, указанное в записи контрольной " +"точки в %X/%08X" + +#: access/transam/xlog.c:6952 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "в истории сервера нет ответвления запрошенной линии времени %u" -#: access/transam/xlog.c:6944 +#: access/transam/xlog.c:6954 #, c-format msgid "" "Latest checkpoint is at %X/%X on timeline %u, but in the history of the " @@ -3065,7 +3088,7 @@ msgstr "" "Последняя контрольная точка: %X/%X на линии времени %u, но в истории " "запрошенной линии времени сервер ответвился с этой линии в %X/%X." -#: access/transam/xlog.c:6958 +#: access/transam/xlog.c:6968 #, c-format msgid "" "requested timeline %u does not contain minimum recovery point %X/%X on " @@ -3074,22 +3097,22 @@ msgstr "" "запрошенная линия времени %u не содержит минимальную точку восстановления %X/" "%X на линии времени %u" -#: access/transam/xlog.c:6988 +#: access/transam/xlog.c:6998 #, c-format msgid "invalid next transaction ID" msgstr "неверный ID следующей транзакции" -#: access/transam/xlog.c:7088 +#: access/transam/xlog.c:7098 #, c-format msgid "invalid redo in checkpoint record" msgstr "неверная запись REDO в контрольной точке" -#: access/transam/xlog.c:7099 +#: access/transam/xlog.c:7109 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "неверная запись REDO в контрольной точке выключения" -#: access/transam/xlog.c:7139 +#: access/transam/xlog.c:7149 #, c-format msgid "" "database system was not properly shut down; automatic recovery in progress" @@ -3097,19 +3120,19 @@ msgstr "" "система БД была остановлена нештатно; производится автоматическое " "восстановление" -#: access/transam/xlog.c:7143 +#: access/transam/xlog.c:7153 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "" "восстановление после сбоя начинается на линии времени %u, целевая линия " "времени: %u" -#: access/transam/xlog.c:7190 +#: access/transam/xlog.c:7200 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label содержит данные, не согласованные с файлом pg_control" -#: access/transam/xlog.c:7191 +#: access/transam/xlog.c:7201 #, c-format msgid "" "This means that the backup is corrupted and you will have to use another " @@ -3118,44 +3141,44 @@ msgstr "" "Это означает, что резервная копия повреждена и для восстановления БД " "придётся использовать другую копию." -#: access/transam/xlog.c:7418 +#: access/transam/xlog.c:7428 #, c-format msgid "redo starts at %X/%X" msgstr "запись REDO начинается со смещения %X/%X" -#: access/transam/xlog.c:7643 +#: access/transam/xlog.c:7653 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" "запрошенная точка остановки восстановления предшествует согласованной точке " "восстановления" -#: access/transam/xlog.c:7681 +#: access/transam/xlog.c:7691 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "записи REDO обработаны до смещения %X/%X, нагрузка системы: %s" -#: access/transam/xlog.c:7687 +#: access/transam/xlog.c:7697 #, c-format msgid "last completed transaction was at log time %s" msgstr "последняя завершённая транзакция была выполнена в %s" -#: access/transam/xlog.c:7696 +#: access/transam/xlog.c:7706 #, c-format msgid "redo is not required" msgstr "данные REDO не требуются" -#: access/transam/xlog.c:7708 +#: access/transam/xlog.c:7718 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "восстановление окончилось до достижения заданной цели восстановления" -#: access/transam/xlog.c:7792 access/transam/xlog.c:7796 +#: access/transam/xlog.c:7802 access/transam/xlog.c:7806 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL закончился без признака окончания копирования" -#: access/transam/xlog.c:7793 +#: access/transam/xlog.c:7803 #, c-format msgid "" "All WAL generated while online backup was taken must be available at " @@ -3164,7 +3187,7 @@ msgstr "" "Все журналы WAL, созданные во время резервного копирования \"на ходу\", " "должны быть в наличии для восстановления." -#: access/transam/xlog.c:7797 +#: access/transam/xlog.c:7807 #, c-format msgid "" "Online backup started with pg_start_backup() must be ended with " @@ -3174,28 +3197,28 @@ msgstr "" "должно закончиться pg_stop_backup(), и для восстановления должны быть " "доступны все журналы WAL." -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7810 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL закончился до согласованной точки восстановления" -#: access/transam/xlog.c:7843 +#: access/transam/xlog.c:7853 #, c-format msgid "selected new timeline ID: %u" msgstr "выбранный ID новой линии времени: %u" -#: access/transam/xlog.c:8311 +#: access/transam/xlog.c:8321 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "в %2$s обнаружен недопустимый элемент-каталог \"%1$s\"" -#: access/transam/xlog.c:8313 +#: access/transam/xlog.c:8323 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "" "Все элементы-каталоги в pg_tblspc/ должны быть символическими ссылками." -#: access/transam/xlog.c:8314 +#: access/transam/xlog.c:8324 #, c-format msgid "" "Remove those directories, or set allow_in_place_tablespaces to ON " @@ -3204,80 +3227,80 @@ msgstr "" "Удалите эти каталоги или на время установите в allow_in_place_tablespaces " "значение ON, чтобы восстановление завершилось." -#: access/transam/xlog.c:8398 +#: access/transam/xlog.c:8408 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "согласованное состояние восстановления достигнуто в позиции %X/%X" -#: access/transam/xlog.c:8607 +#: access/transam/xlog.c:8617 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "неверная ссылка на первичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:8611 +#: access/transam/xlog.c:8621 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "неверная ссылка на контрольную точку в файле backup_label" -#: access/transam/xlog.c:8629 +#: access/transam/xlog.c:8639 #, c-format msgid "invalid primary checkpoint record" msgstr "неверная запись первичной контрольной точки" -#: access/transam/xlog.c:8633 +#: access/transam/xlog.c:8643 #, c-format msgid "invalid checkpoint record" msgstr "неверная запись контрольной точки" -#: access/transam/xlog.c:8644 +#: access/transam/xlog.c:8654 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "неверный ID менеджера ресурсов в записи первичной контрольной точки" -#: access/transam/xlog.c:8648 +#: access/transam/xlog.c:8658 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "неверный ID менеджера ресурсов в записи контрольной точки" -#: access/transam/xlog.c:8661 +#: access/transam/xlog.c:8671 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "неверные флаги xl_info в записи первичной контрольной точки" -#: access/transam/xlog.c:8665 +#: access/transam/xlog.c:8675 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "неверные флаги xl_info в записи контрольной точки" -#: access/transam/xlog.c:8676 +#: access/transam/xlog.c:8686 #, c-format msgid "invalid length of primary checkpoint record" msgstr "неверная длина записи первичной контрольной точки" -#: access/transam/xlog.c:8680 +#: access/transam/xlog.c:8690 #, c-format msgid "invalid length of checkpoint record" msgstr "неверная длина записи контрольной точки" -#: access/transam/xlog.c:8861 +#: access/transam/xlog.c:8871 #, c-format msgid "shutting down" msgstr "выключение" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8900 +#: access/transam/xlog.c:8910 #, c-format msgid "restartpoint starting:%s%s%s%s%s%s%s%s" msgstr "начата точка перезапуска:%s%s%s%s%s%s%s%s" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8912 +#: access/transam/xlog.c:8922 #, c-format msgid "checkpoint starting:%s%s%s%s%s%s%s%s" msgstr "начата контрольная точка:%s%s%s%s%s%s%s%s" # well-spelled: синхр -#: access/transam/xlog.c:8972 +#: access/transam/xlog.c:8982 #, c-format msgid "" "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d " @@ -3291,7 +3314,7 @@ msgstr "" "=%ld.%03d сек., средняя=%ld.%03d сек.; расстояние=%d КБ, ожидалось=%d КБ" # well-spelled: синхр -#: access/transam/xlog.c:8992 +#: access/transam/xlog.c:9002 #, c-format msgid "" "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d " @@ -3304,7 +3327,7 @@ msgstr "" "сек., всего=%ld.%03d сек.; синхронизировано_файлов=%d, самая_долгая_синхр." "=%ld.%03d сек., средняя=%ld.%03d сек.; расстояние=%d КБ, ожидалось=%d КБ" -#: access/transam/xlog.c:9453 +#: access/transam/xlog.c:9473 #, c-format msgid "" "concurrent write-ahead log activity while database system is shutting down" @@ -3312,22 +3335,22 @@ msgstr "" "во время выключения системы баз данных отмечена активность в журнале " "предзаписи" -#: access/transam/xlog.c:10012 +#: access/transam/xlog.c:10046 #, c-format msgid "recovery restart point at %X/%X" msgstr "точка перезапуска восстановления в позиции %X/%X" -#: access/transam/xlog.c:10014 +#: access/transam/xlog.c:10048 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Последняя завершённая транзакция была выполнена в %s." -#: access/transam/xlog.c:10262 +#: access/transam/xlog.c:10296 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка восстановления \"%s\" создана в позиции %X/%X" -#: access/transam/xlog.c:10407 +#: access/transam/xlog.c:10441 #, c-format msgid "" "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint " @@ -3336,13 +3359,13 @@ msgstr "" "неожиданный ID предыдущей линии времени %u (ID текущей линии времени %u) в " "записи контрольной точки" -#: access/transam/xlog.c:10416 +#: access/transam/xlog.c:10450 #, 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:10432 +#: access/transam/xlog.c:10466 #, c-format msgid "" "unexpected timeline ID %u in checkpoint record, before reaching minimum " @@ -3351,39 +3374,39 @@ msgstr "" "неожиданный ID линии времени %u в записи контрольной точки, до достижения " "минимальной к. т. %X/%X на линии времени %u" -#: access/transam/xlog.c:10507 +#: access/transam/xlog.c:10541 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "" "резервное копирование \"на ходу\" было отменено, продолжить восстановление " "нельзя" -#: access/transam/xlog.c:10564 access/transam/xlog.c:10620 -#: access/transam/xlog.c:10650 +#: access/transam/xlog.c:10598 access/transam/xlog.c:10654 +#: access/transam/xlog.c:10684 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" "неожиданный ID линии времени %u (должен быть %u) в записи точки " "восстановления" -#: access/transam/xlog.c:10808 +#: access/transam/xlog.c:10842 #, c-format msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" msgstr "" "успешно пропущена отсутствующая запись contrecord в %X/%X, перезаписанная в " "%s" -#: access/transam/xlog.c:11023 +#: access/transam/xlog.c:11057 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "не удалось синхронизировать с ФС файл сквозной записи %s: %m" -#: access/transam/xlog.c:11029 +#: access/transam/xlog.c:11063 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "не удалось синхронизировать с ФС данные (fdatasync) файла \"%s\": %m" -#: access/transam/xlog.c:11140 access/transam/xlog.c:11677 +#: access/transam/xlog.c:11174 access/transam/xlog.c:11711 #: access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 #: access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 #: access/transam/xlogfuncs.c:383 @@ -3391,35 +3414,35 @@ msgstr "не удалось синхронизировать с ФС данны msgid "WAL control functions cannot be executed during recovery." msgstr "Функции управления WAL нельзя использовать в процессе восстановления." -#: access/transam/xlog.c:11149 access/transam/xlog.c:11686 +#: access/transam/xlog.c:11183 access/transam/xlog.c:11720 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "" "Выбранный уровень WAL недостаточен для резервного копирования \"на ходу\"" -#: access/transam/xlog.c:11150 access/transam/xlog.c:11687 +#: access/transam/xlog.c:11184 access/transam/xlog.c:11721 #: access/transam/xlogfuncs.c:308 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "Установите wal_level \"replica\" или \"logical\" при запуске сервера." -#: access/transam/xlog.c:11155 +#: access/transam/xlog.c:11189 #, c-format msgid "backup label too long (max %d bytes)" msgstr "длина метки резервной копии превышает предел (%d байт)" -#: access/transam/xlog.c:11192 access/transam/xlog.c:11476 -#: access/transam/xlog.c:11514 +#: access/transam/xlog.c:11226 access/transam/xlog.c:11510 +#: access/transam/xlog.c:11548 #, c-format msgid "a backup is already in progress" msgstr "резервное копирование уже выполняется" -#: access/transam/xlog.c:11193 +#: access/transam/xlog.c:11227 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Выполните pg_stop_backup() и повторите операцию." -#: access/transam/xlog.c:11289 +#: access/transam/xlog.c:11323 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed since last restartpoint" @@ -3427,7 +3450,7 @@ msgstr "" "После последней точки перезапуска был воспроизведён WAL, созданный в режиме " "full_page_writes=off." -#: access/transam/xlog.c:11291 access/transam/xlog.c:11882 +#: access/transam/xlog.c:11325 access/transam/xlog.c:11916 #, c-format msgid "" "This means that the backup being taken on the standby is corrupt and should " @@ -3439,19 +3462,19 @@ msgstr "" "CHECKPOINT на ведущем сервере, а затем попробуйте резервное копирование \"на " "ходу\" ещё раз." -#: access/transam/xlog.c:11375 replication/basebackup.c:1433 +#: access/transam/xlog.c:11409 replication/basebackup.c:1433 #: utils/adt/misc.c:367 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "целевой путь символической ссылки \"%s\" слишком длинный" -#: access/transam/xlog.c:11425 commands/tablespace.c:385 +#: access/transam/xlog.c:11459 commands/tablespace.c:385 #: commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 #, c-format msgid "tablespaces are not supported on this platform" msgstr "табличные пространства не поддерживаются на этой платформе" -#: access/transam/xlog.c:11477 access/transam/xlog.c:11515 +#: access/transam/xlog.c:11511 access/transam/xlog.c:11549 #, c-format msgid "" "If you're sure there is no backup in progress, remove file \"%s\" and try " @@ -3460,31 +3483,31 @@ msgstr "" "Если вы считаете, что информация о резервном копировании неверна, удалите " "файл \"%s\" и попробуйте снова." -#: access/transam/xlog.c:11702 +#: access/transam/xlog.c:11736 #, c-format msgid "exclusive backup not in progress" msgstr "монопольное резервное копирование не выполняется" -#: access/transam/xlog.c:11729 +#: access/transam/xlog.c:11763 #, c-format msgid "a backup is not in progress" msgstr "резервное копирование не выполняется" -#: access/transam/xlog.c:11815 access/transam/xlog.c:11828 -#: access/transam/xlog.c:12219 access/transam/xlog.c:12225 -#: access/transam/xlog.c:12273 access/transam/xlog.c:12353 -#: access/transam/xlog.c:12377 access/transam/xlogfuncs.c:733 +#: access/transam/xlog.c:11849 access/transam/xlog.c:11862 +#: access/transam/xlog.c:12253 access/transam/xlog.c:12259 +#: access/transam/xlog.c:12307 access/transam/xlog.c:12387 +#: access/transam/xlog.c:12411 access/transam/xlogfuncs.c:733 #, c-format msgid "invalid data in file \"%s\"" msgstr "неверные данные в файле \"%s\"" -#: access/transam/xlog.c:11832 replication/basebackup.c:1287 +#: access/transam/xlog.c:11866 replication/basebackup.c:1287 #, c-format msgid "the standby was promoted during online backup" msgstr "" "ведомый сервер был повышен в процессе резервного копирования \"на ходу\"" -#: access/transam/xlog.c:11833 replication/basebackup.c:1288 +#: access/transam/xlog.c:11867 replication/basebackup.c:1288 #, c-format msgid "" "This means that the backup being taken is corrupt and should not be used. " @@ -3493,7 +3516,7 @@ msgstr "" "Это означает, что создаваемая резервная копия испорчена и использовать её не " "следует. Попробуйте резервное копирование \"на ходу\" ещё раз." -#: access/transam/xlog.c:11880 +#: access/transam/xlog.c:11914 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed during online backup" @@ -3501,13 +3524,13 @@ msgstr "" "В процессе резервного копирования \"на ходу\" был воспроизведён WAL, " "созданный в режиме full_page_writes=off" -#: access/transam/xlog.c:12000 +#: access/transam/xlog.c:12034 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "" "базовое копирование выполнено, ожидается архивация нужных сегментов WAL" -#: access/transam/xlog.c:12012 +#: access/transam/xlog.c:12046 #, c-format msgid "" "still waiting for all required WAL segments to be archived (%d seconds " @@ -3515,7 +3538,7 @@ msgid "" msgstr "" "продолжается ожидание архивации всех нужных сегментов WAL (прошло %d сек.)" -#: access/transam/xlog.c:12014 +#: access/transam/xlog.c:12048 #, c-format msgid "" "Check that your archive_command is executing properly. You can safely " @@ -3526,12 +3549,12 @@ msgstr "" "копирования можно отменить безопасно, но резервная копия базы будет " "непригодна без всех сегментов WAL." -#: access/transam/xlog.c:12021 +#: access/transam/xlog.c:12055 #, c-format msgid "all required WAL segments have been archived" msgstr "все нужные сегменты WAL заархивированы" -#: access/transam/xlog.c:12025 +#: access/transam/xlog.c:12059 #, c-format msgid "" "WAL archiving is not enabled; you must ensure that all required WAL segments " @@ -3540,48 +3563,48 @@ msgstr "" "архивация WAL не настроена; вы должны обеспечить копирование всех требуемых " "сегментов WAL другими средствами для получения резервной копии" -#: access/transam/xlog.c:12080 +#: access/transam/xlog.c:12114 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "" "прерывание резервного копирования из-за завершения обслуживающего процесса " "до вызова pg_stop_backup" -#: access/transam/xlog.c:12274 +#: access/transam/xlog.c:12308 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "Получен идентификатор линии времени %u, но ожидался %u." #. translator: %s is a WAL record description -#: access/transam/xlog.c:12402 +#: access/transam/xlog.c:12436 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "запись REDO в WAL в позиции %X/%X для %s" -#: access/transam/xlog.c:12450 +#: access/transam/xlog.c:12484 #, c-format msgid "online backup mode was not canceled" msgstr "режим копирования \"на ходу\" не был отменён" -#: access/transam/xlog.c:12451 +#: access/transam/xlog.c:12485 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Не удалось переименовать файл \"%s\" в \"%s\": %m." -#: access/transam/xlog.c:12460 access/transam/xlog.c:12472 -#: access/transam/xlog.c:12482 +#: access/transam/xlog.c:12494 access/transam/xlog.c:12506 +#: access/transam/xlog.c:12516 #, c-format msgid "online backup mode canceled" msgstr "режим копирования \"на ходу\" отменён" -#: access/transam/xlog.c:12473 +#: access/transam/xlog.c:12507 #, c-format msgid "" "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "" "Файлы \"%s\" и \"%s\" были переименованы в \"%s\" и \"%s\", соответственно." -#: access/transam/xlog.c:12483 +#: access/transam/xlog.c:12517 #, c-format msgid "" "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to " @@ -3590,34 +3613,34 @@ msgstr "" "Файл \"%s\" был переименован в \"%s\", но переименовать \"%s\" в \"%s\" не " "удалось: %m." -#: access/transam/xlog.c:12616 access/transam/xlogutils.c:967 +#: access/transam/xlog.c:12650 access/transam/xlogutils.c:967 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "не удалось прочитать сегмент журнала %s, смещение %u: %m" -#: access/transam/xlog.c:12622 access/transam/xlogutils.c:974 +#: access/transam/xlog.c:12656 access/transam/xlogutils.c:974 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "" "не удалось прочитать из сегмента журнала %s по смещению %u (прочитано байт: " "%d из %zu)" -#: access/transam/xlog.c:13199 +#: access/transam/xlog.c:13233 #, c-format msgid "WAL receiver process shutdown requested" msgstr "получен запрос на выключение процесса приёмника WAL" -#: access/transam/xlog.c:13311 +#: access/transam/xlog.c:13345 #, c-format msgid "received promote request" msgstr "получен запрос повышения статуса" -#: access/transam/xlog.c:13324 +#: access/transam/xlog.c:13358 #, c-format msgid "promote trigger file found: %s" msgstr "найден файл триггера повышения: %s" -#: access/transam/xlog.c:13332 +#: access/transam/xlog.c:13366 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "не удалось получить информацию о файле триггера повышения \"%s\": %m" @@ -4123,7 +4146,7 @@ msgstr "большой объект %u не существует" #: commands/functioncmds.c:772 commands/functioncmds.c:781 #: commands/functioncmds.c:790 commands/functioncmds.c:799 #: commands/functioncmds.c:2097 commands/functioncmds.c:2105 -#: commands/publicationcmds.c:87 commands/publicationcmds.c:130 +#: commands/publicationcmds.c:87 commands/publicationcmds.c:135 #: 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/sequence.c:1354 @@ -4144,8 +4167,8 @@ msgstr "большой объект %u не существует" #: commands/user.c:638 commands/user.c:647 commands/user.c:655 #: commands/user.c:663 parser/parse_utilcmd.c:402 #: replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 -#: replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 -#: replication/pgoutput/pgoutput.c:254 replication/walsender.c:897 +#: replication/pgoutput/pgoutput.c:238 replication/pgoutput/pgoutput.c:248 +#: replication/pgoutput/pgoutput.c:258 replication/walsender.c:897 #: replication/walsender.c:908 replication/walsender.c:918 #, c-format msgid "conflicting or redundant options" @@ -4674,7 +4697,7 @@ msgstr "преобразование с OID %u не существует" msgid "extension with OID %u does not exist" msgstr "расширение с OID %u не существует" -#: catalog/aclchk.c:5379 commands/publicationcmds.c:818 +#: catalog/aclchk.c:5379 commands/publicationcmds.c:823 #, c-format msgid "publication with OID %u does not exist" msgstr "публикация с OID %u не существует" @@ -4991,14 +5014,14 @@ msgstr "" msgid "generation expression is not immutable" msgstr "генерирующее выражение не является постоянным" -#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1285 +#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1288 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "столбец \"%s\" имеет тип %s, но тип выражения по умолчанию %s" #: catalog/heap.c:3202 commands/prepare.c:368 parser/analyze.c:2695 #: parser/parse_target.c:594 parser/parse_target.c:891 -#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1290 +#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1293 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Перепишите выражение или преобразуйте его тип." @@ -5100,28 +5123,28 @@ msgstr "" msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY должен быть первым действием в транзакции" -#: catalog/index.c:3653 +#: catalog/index.c:3660 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "переиндексировать временные таблицы других сеансов нельзя" -#: catalog/index.c:3664 commands/indexcmds.c:3589 +#: catalog/index.c:3671 commands/indexcmds.c:3589 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "перестроить нерабочий индекс в таблице TOAST нельзя" -#: catalog/index.c:3680 commands/indexcmds.c:3469 commands/indexcmds.c:3613 +#: catalog/index.c:3687 commands/indexcmds.c:3469 commands/indexcmds.c:3613 #: commands/tablecmds.c:3282 #, c-format msgid "cannot move system relation \"%s\"" msgstr "переместить системную таблицу \"%s\" нельзя" -#: catalog/index.c:3824 +#: catalog/index.c:3831 #, c-format msgid "index \"%s\" was reindexed" msgstr "индекс \"%s\" был перестроен" -#: catalog/index.c:3961 +#: catalog/index.c:3968 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "" @@ -6250,8 +6273,8 @@ msgstr "Временные и нежурналируемые отношения msgid "relation \"%s\" is already member of publication \"%s\"" msgstr "отношение \"%s\" уже включено в публикацию \"%s\"" -#: catalog/pg_publication.c:533 commands/publicationcmds.c:458 -#: commands/publicationcmds.c:786 +#: catalog/pg_publication.c:533 commands/publicationcmds.c:463 +#: commands/publicationcmds.c:791 #, c-format msgid "publication \"%s\" does not exist" msgstr "публикация \"%s\" не существует" @@ -6418,7 +6441,7 @@ msgstr "" "Имя мультидиапазонного типа можно указать вручную, воспользовавшись " "атрибутом \"multirange_type_name\"." -#: catalog/storage.c:523 storage/buffer/bufmgr.c:1039 +#: catalog/storage.c:523 storage/buffer/bufmgr.c:1046 #, c-format msgid "invalid page in block %u of relation %s" msgstr "некорректная страница в блоке %u отношения %s" @@ -6547,7 +6570,7 @@ msgstr "сервер \"%s\" уже существует" msgid "language \"%s\" already exists" msgstr "язык \"%s\" уже существует" -#: commands/alter.c:97 commands/publicationcmds.c:180 +#: commands/alter.c:97 commands/publicationcmds.c:185 #, c-format msgid "publication \"%s\" already exists" msgstr "публикация \"%s\" уже существует" @@ -6690,22 +6713,22 @@ msgstr "" "пропускается анализ дерева наследования \"%s.%s\" --- это дерево " "наследования не содержит анализируемых дочерних таблиц" -#: commands/async.c:646 +#: commands/async.c:645 #, c-format msgid "channel name cannot be empty" msgstr "имя канала не может быть пустым" -#: commands/async.c:652 +#: commands/async.c:651 #, c-format msgid "channel name too long" msgstr "слишком длинное имя канала" -#: commands/async.c:657 +#: commands/async.c:656 #, c-format msgid "payload string too long" msgstr "слишком длинная строка сообщения-нагрузки" -#: commands/async.c:876 +#: commands/async.c:875 #, c-format msgid "" "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" @@ -6713,7 +6736,7 @@ msgstr "" "выполнить PREPARE для транзакции с командами LISTEN, UNLISTEN или NOTIFY " "нельзя" -#: commands/async.c:980 +#: commands/async.c:979 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "слишком много уведомлений в очереди NOTIFY" @@ -7014,7 +7037,7 @@ msgstr "генерируемые столбцы не поддерживаютс #: commands/copy.c:176 commands/tablecmds.c:11928 commands/tablecmds.c:17048 #: commands/tablecmds.c:17127 commands/trigger.c:653 -#: rewrite/rewriteHandler.c:936 rewrite/rewriteHandler.c:971 +#: rewrite/rewriteHandler.c:939 rewrite/rewriteHandler.c:974 #, c-format msgid "Column \"%s\" is a generated column." msgstr "Столбец \"%s\" является генерируемым." @@ -7164,7 +7187,7 @@ msgstr "столбец \"%s\" — генерируемый" msgid "Generated columns cannot be used in COPY." msgstr "Генерируемые столбцы нельзя использовать в COPY." -#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:245 +#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:265 #: commands/tablecmds.c:2344 commands/tablecmds.c:3000 #: commands/tablecmds.c:3508 parser/parse_relation.c:3651 #: parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 @@ -7259,7 +7282,7 @@ msgstr "столбец FORCE_NOT_NULL \"%s\" не фигурирует в COPY" msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "столбец FORCE_NULL \"%s\" не фигурирует в COPY" -#: commands/copyfrom.c:1343 utils/mb/mbutils.c:385 +#: commands/copyfrom.c:1343 utils/mb/mbutils.c:386 #, c-format msgid "" "default conversion function for encoding \"%s\" to \"%s\" does not exist" @@ -7945,7 +7968,7 @@ msgstr "правило сортировки \"%s\" не существует, п msgid "conversion \"%s\" does not exist, skipping" msgstr "преобразование \"%s\" не существует, пропускается" -#: commands/dropcmds.c:293 commands/statscmds.c:674 +#: commands/dropcmds.c:293 commands/statscmds.c:694 #, c-format msgid "statistics object \"%s\" does not exist, skipping" msgstr "объект статистики \"%s\" не существует, пропускается" @@ -9604,7 +9627,7 @@ msgstr "функция оценки соединения %s должна воз msgid "operator attribute \"%s\" cannot be changed" msgstr "атрибут оператора \"%s\" нельзя изменить" -#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:151 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:157 #: commands/tablecmds.c:1582 commands/tablecmds.c:2162 #: commands/tablecmds.c:3402 commands/tablecmds.c:6112 #: commands/tablecmds.c:9081 commands/tablecmds.c:16793 @@ -9722,57 +9745,57 @@ msgid "must be superuser to create custom procedural language" msgstr "" "для создания дополнительного процедурного языка нужно быть суперпользователем" -#: commands/publicationcmds.c:104 +#: commands/publicationcmds.c:109 #, c-format msgid "invalid list syntax for \"publish\" option" msgstr "неверный синтаксис параметра \"publish\"" -#: commands/publicationcmds.c:122 +#: commands/publicationcmds.c:127 #, c-format msgid "unrecognized \"publish\" value: \"%s\"" msgstr "нераспознанное значение \"publish\": \"%s\"" -#: commands/publicationcmds.c:137 +#: commands/publicationcmds.c:142 #, c-format msgid "unrecognized publication parameter: \"%s\"" msgstr "нераспознанный параметр репликации: \"%s\"" -#: commands/publicationcmds.c:169 +#: commands/publicationcmds.c:174 #, c-format msgid "must be superuser to create FOR ALL TABLES publication" msgstr "для создания публикации всех таблиц нужно быть суперпользователем" -#: commands/publicationcmds.c:250 +#: commands/publicationcmds.c:255 #, c-format msgid "wal_level is insufficient to publish logical changes" msgstr "уровень wal_level недостаточен для публикации логических изменений" -#: commands/publicationcmds.c:251 +#: commands/publicationcmds.c:256 #, c-format msgid "Set wal_level to logical before creating subscriptions." msgstr "Задайте для wal_level значение logical до создания подписок." -#: commands/publicationcmds.c:376 +#: commands/publicationcmds.c:381 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "публикация \"%s\" определена для всех таблиц (FOR ALL TABLES)" -#: commands/publicationcmds.c:378 +#: commands/publicationcmds.c:383 #, c-format msgid "Tables cannot be added to or dropped from FOR ALL TABLES publications." msgstr "В публикации всех таблиц нельзя добавлять или удалять таблицы." -#: commands/publicationcmds.c:707 +#: commands/publicationcmds.c:712 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "отношение \"%s\" не включено в публикацию" -#: commands/publicationcmds.c:750 +#: commands/publicationcmds.c:755 #, c-format msgid "permission denied to change owner of publication \"%s\"" msgstr "нет прав для изменения владельца публикации \"%s\"" -#: commands/publicationcmds.c:752 +#: commands/publicationcmds.c:757 #, c-format msgid "The owner of a FOR ALL TABLES publication must be a superuser." msgstr "" @@ -9965,27 +9988,27 @@ msgstr "" "отношение \"%s\" - это не таблица, не сторонняя таблица и не " "материализованное представление" -#: commands/statscmds.c:193 +#: commands/statscmds.c:213 #, c-format msgid "statistics object \"%s\" already exists, skipping" msgstr "объект статистики \"%s\" уже существует, пропускается" -#: commands/statscmds.c:201 +#: commands/statscmds.c:221 #, c-format msgid "statistics object \"%s\" already exists" msgstr "объект статистики \"%s\" уже существует" -#: commands/statscmds.c:212 +#: commands/statscmds.c:232 #, c-format msgid "cannot have more than %d columns in statistics" msgstr "в статистике не может быть больше %d столбцов" -#: commands/statscmds.c:253 commands/statscmds.c:276 commands/statscmds.c:309 +#: commands/statscmds.c:273 commands/statscmds.c:296 commands/statscmds.c:329 #, c-format msgid "statistics creation on system columns is not supported" msgstr "создание статистики для системных столбцов не поддерживается" -#: commands/statscmds.c:260 commands/statscmds.c:283 +#: commands/statscmds.c:280 commands/statscmds.c:303 #, c-format msgid "" "column \"%s\" cannot be used in statistics because its type %s has no " @@ -9994,7 +10017,7 @@ msgstr "" "столбец \"%s\" нельзя использовать в статистике, так как для его типа %s не " "определён класс операторов B-дерева по умолчанию" -#: commands/statscmds.c:326 +#: commands/statscmds.c:346 #, c-format msgid "" "expression cannot be used in multivariate statistics because its type %s has " @@ -10003,7 +10026,7 @@ msgstr "" "выражение нельзя использовать в многовариантной статистике, так как для его " "типа %s не определён класс операторов btree по умолчанию" -#: commands/statscmds.c:347 +#: commands/statscmds.c:367 #, c-format msgid "" "when building statistics on a single expression, statistics kinds may not be " @@ -10012,37 +10035,37 @@ msgstr "" "при построении статистики по единственному выражению указывать виды " "статистики нельзя" -#: commands/statscmds.c:376 +#: commands/statscmds.c:396 #, c-format msgid "unrecognized statistics kind \"%s\"" msgstr "нераспознанный вид статистики \"%s\"" -#: commands/statscmds.c:405 +#: commands/statscmds.c:425 #, c-format msgid "extended statistics require at least 2 columns" msgstr "для расширенной статистики требуются минимум 2 столбца" -#: commands/statscmds.c:423 +#: commands/statscmds.c:443 #, c-format msgid "duplicate column name in statistics definition" msgstr "повторяющееся имя столбца в определении статистики" -#: commands/statscmds.c:458 +#: commands/statscmds.c:478 #, c-format msgid "duplicate expression in statistics definition" msgstr "повторяющееся выражение в определении статистики" -#: commands/statscmds.c:639 commands/tablecmds.c:8047 +#: commands/statscmds.c:659 commands/tablecmds.c:8047 #, c-format msgid "statistics target %d is too low" msgstr "ориентир статистики слишком мал (%d)" -#: commands/statscmds.c:647 commands/tablecmds.c:8055 +#: commands/statscmds.c:667 commands/tablecmds.c:8055 #, c-format msgid "lowering statistics target to %d" msgstr "ориентир статистики снижается до %d" -#: commands/statscmds.c:670 +#: commands/statscmds.c:690 #, c-format msgid "statistics object \"%s.%s\" does not exist, skipping" msgstr "объект статистики \"%s.%s\" не существует, пропускается" @@ -11900,7 +11923,7 @@ msgid "invalid compression method \"%s\"" msgstr "неверный метод сжатия \"%s\"" #: commands/tablespace.c:161 commands/tablespace.c:177 -#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1507 +#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1538 #: storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" @@ -12305,7 +12328,7 @@ msgid "could not serialize access due to concurrent update" msgstr "не удалось сериализовать доступ из-за параллельного изменения" #: commands/trigger.c:3190 executor/nodeModifyTable.c:1440 -#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2276 +#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2268 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "не удалось сериализовать доступ из-за параллельного удаления" @@ -13014,119 +13037,119 @@ msgstr "роль \"%s\" уже включена в роль \"%s\"" msgid "role \"%s\" is not a member of role \"%s\"" msgstr "роль \"%s\" не включена в роль \"%s\"" -#: commands/vacuum.c:133 +#: commands/vacuum.c:134 #, c-format msgid "unrecognized ANALYZE option \"%s\"" msgstr "нераспознанный параметр ANALYZE: \"%s\"" -#: commands/vacuum.c:171 +#: commands/vacuum.c:172 #, c-format msgid "parallel option requires a value between 0 and %d" msgstr "для параметра parallel требуется значение от 0 до %d" -#: commands/vacuum.c:183 +#: commands/vacuum.c:184 #, c-format msgid "parallel workers for vacuum must be between 0 and %d" msgstr "" "число параллельных исполнителей для выполнения очистки должно быть от 0 до %d" -#: commands/vacuum.c:200 +#: commands/vacuum.c:201 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "нераспознанный параметр VACUUM: \"%s\"" -#: commands/vacuum.c:223 +#: commands/vacuum.c:224 #, c-format msgid "VACUUM FULL cannot be performed in parallel" msgstr "VACUUM FULL нельзя выполнять в параллельном режиме" -#: commands/vacuum.c:239 +#: commands/vacuum.c:240 #, c-format msgid "ANALYZE option must be specified when a column list is provided" msgstr "если задаётся список столбцов, необходимо указать ANALYZE" -#: commands/vacuum.c:329 +#: commands/vacuum.c:330 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%s нельзя выполнить в ходе VACUUM или ANALYZE" -#: commands/vacuum.c:339 +#: commands/vacuum.c:340 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "Параметр VACUUM DISABLE_PAGE_SKIPPING нельзя использовать с FULL" -#: commands/vacuum.c:346 +#: commands/vacuum.c:347 #, c-format msgid "PROCESS_TOAST required with VACUUM FULL" msgstr "VACUUM FULL работает только с PROCESS_TOAST" -#: commands/vacuum.c:596 +#: commands/vacuum.c:597 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "" "\"%s\" пропускается --- только суперпользователь может очистить это отношение" -#: commands/vacuum.c:600 +#: commands/vacuum.c:601 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "" "\"%s\" пропускается --- только суперпользователь или владелец БД может " "очистить это отношение" -#: commands/vacuum.c:604 +#: commands/vacuum.c:605 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "" "\"%s\" пропускается --- только владелец базы данных или этой таблицы может " "очистить её" -#: commands/vacuum.c:619 +#: commands/vacuum.c:620 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" msgstr "" "\"%s\" пропускается --- только суперпользователь может анализировать это " "отношение" -#: commands/vacuum.c:623 +#: commands/vacuum.c:624 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "" "\"%s\" пропускается --- только суперпользователь или владелец БД может " "анализировать это отношение" -#: commands/vacuum.c:627 +#: commands/vacuum.c:628 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "" "\"%s\" пропускается --- только владелец таблицы или БД может анализировать " "это отношение" -#: commands/vacuum.c:706 commands/vacuum.c:802 +#: commands/vacuum.c:707 commands/vacuum.c:803 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "очистка \"%s\" пропускается --- блокировка недоступна" -#: commands/vacuum.c:711 +#: commands/vacuum.c:712 #, c-format msgid "skipping vacuum of \"%s\" --- relation no longer exists" msgstr "очистка \"%s\" пропускается --- это отношение более не существует" -#: commands/vacuum.c:727 commands/vacuum.c:807 +#: commands/vacuum.c:728 commands/vacuum.c:808 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" msgstr "анализ \"%s\" пропускается --- блокировка недоступна" -#: commands/vacuum.c:732 +#: commands/vacuum.c:733 #, c-format msgid "skipping analyze of \"%s\" --- relation no longer exists" msgstr "анализ \"%s\" пропускается --- это отношение более не существует" -#: commands/vacuum.c:1050 +#: commands/vacuum.c:1051 #, c-format msgid "oldest xmin is far in the past" msgstr "самый старый xmin далеко в прошлом" -#: commands/vacuum.c:1051 +#: commands/vacuum.c:1052 #, c-format msgid "" "Close open transactions soon to avoid wraparound problems.\n" @@ -13138,12 +13161,12 @@ msgstr "" "Возможно, вам также придётся зафиксировать или откатить старые " "подготовленные транзакции и удалить неиспользуемые слоты репликации." -#: commands/vacuum.c:1092 +#: commands/vacuum.c:1093 #, c-format msgid "oldest multixact is far in the past" msgstr "самый старый multixact далеко в прошлом" -#: commands/vacuum.c:1093 +#: commands/vacuum.c:1094 #, c-format msgid "" "Close open transactions with multixacts soon to avoid wraparound problems." @@ -13151,20 +13174,20 @@ msgstr "" "Скорее закройте открытые транзакции в мультитранзакциях, чтобы избежать " "проблемы зацикливания." -#: commands/vacuum.c:1778 +#: commands/vacuum.c:1779 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "" "есть базы данных, которые не очищались на протяжении более чем 2 миллиардов " "транзакций" -#: commands/vacuum.c:1779 +#: commands/vacuum.c:1780 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "" "Возможно, вы уже потеряли данные в результате зацикливания ID транзакций." -#: commands/vacuum.c:1954 +#: commands/vacuum.c:1961 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "" @@ -13427,7 +13450,7 @@ msgstr "" "В таблице определён тип %s (номер столбца: %d), а в запросе предполагается " "%s." -#: executor/execExpr.c:1098 parser/parse_agg.c:854 +#: executor/execExpr.c:1098 parser/parse_agg.c:881 #, c-format msgid "window function calls cannot be nested" msgstr "вложенные вызовы оконных функций недопустимы" @@ -13615,14 +13638,14 @@ msgstr "последовательность \"%s\" изменить нельз msgid "cannot change TOAST relation \"%s\"" msgstr "TOAST-отношение \"%s\" изменить нельзя" -#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3145 -#: rewrite/rewriteHandler.c:3990 +#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:4010 #, c-format msgid "cannot insert into view \"%s\"" msgstr "вставить данные в представление \"%s\" нельзя" -#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3148 -#: rewrite/rewriteHandler.c:3993 +#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3151 +#: rewrite/rewriteHandler.c:4013 #, c-format msgid "" "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or " @@ -13631,14 +13654,14 @@ msgstr "" "Чтобы представление допускало добавление данных, установите триггер INSTEAD " "OF INSERT или безусловное правило ON INSERT DO INSTEAD." -#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3153 -#: rewrite/rewriteHandler.c:3998 +#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3156 +#: rewrite/rewriteHandler.c:4018 #, c-format msgid "cannot update view \"%s\"" msgstr "изменить данные в представлении \"%s\" нельзя" -#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3156 -#: rewrite/rewriteHandler.c:4001 +#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3159 +#: rewrite/rewriteHandler.c:4021 #, c-format msgid "" "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an " @@ -13647,14 +13670,14 @@ msgstr "" "Чтобы представление допускало изменение данных, установите триггер INSTEAD " "OF UPDATE или безусловное правило ON UPDATE DO INSTEAD." -#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3161 -#: rewrite/rewriteHandler.c:4006 +#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3164 +#: rewrite/rewriteHandler.c:4026 #, c-format msgid "cannot delete from view \"%s\"" msgstr "удалить данные из представления \"%s\" нельзя" -#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3164 -#: rewrite/rewriteHandler.c:4009 +#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3167 +#: rewrite/rewriteHandler.c:4029 #, c-format msgid "" "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an " @@ -14036,7 +14059,7 @@ msgid "unexpected EOF for tape %d: requested %zu bytes, read %zu bytes" msgstr "" "неожиданный конец файла для ленты %d: запрашивалось байт: %zu, прочитано: %zu" -#: executor/nodeAgg.c:3979 parser/parse_agg.c:670 parser/parse_agg.c:698 +#: executor/nodeAgg.c:3979 parser/parse_agg.c:677 parser/parse_agg.c:720 #, c-format msgid "aggregate function calls cannot be nested" msgstr "вложенные вызовы агрегатных функций недопустимы" @@ -16845,200 +16868,210 @@ msgstr "%s нельзя применить к именованному хран msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "отношение \"%s\" в определении %s отсутствует в предложении FROM" -#: parser/parse_agg.c:208 parser/parse_oper.c:227 +#: parser/parse_agg.c:211 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "для типа %s не удалось найти оператор сортировки" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:213 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Агрегатным функциям с DISTINCT необходимо сортировать входные данные." -#: parser/parse_agg.c:268 +#: parser/parse_agg.c:271 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "у GROUPING должно быть меньше 32 аргументов" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:375 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "агрегатные функции нельзя применять в условиях JOIN" -#: parser/parse_agg.c:373 +#: parser/parse_agg.c:377 msgid "grouping operations are not allowed in JOIN conditions" msgstr "операции группировки нельзя применять в условиях JOIN" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:387 msgid "" "aggregate functions are not allowed in FROM clause of their own query level" msgstr "" "агрегатные функции нельзя применять в предложении FROM их уровня запроса" -#: parser/parse_agg.c:385 +#: parser/parse_agg.c:389 msgid "" "grouping operations are not allowed in FROM clause of their own query level" msgstr "" "операции группировки нельзя применять в предложении FROM их уровня запроса" -#: parser/parse_agg.c:390 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in functions in FROM" msgstr "агрегатные функции нельзя применять в функциях во FROM" -#: parser/parse_agg.c:392 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in functions in FROM" msgstr "операции группировки нельзя применять в функциях во FROM" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:404 msgid "aggregate functions are not allowed in policy expressions" msgstr "агрегатные функции нельзя применять в выражениях политик" -#: parser/parse_agg.c:402 +#: parser/parse_agg.c:406 msgid "grouping operations are not allowed in policy expressions" msgstr "операции группировки нельзя применять в выражениях политик" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:423 msgid "aggregate functions are not allowed in window RANGE" msgstr "агрегатные функции нельзя применять в указании RANGE для окна" -#: parser/parse_agg.c:421 +#: parser/parse_agg.c:425 msgid "grouping operations are not allowed in window RANGE" msgstr "операции группировки нельзя применять в указании RANGE для окна" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:430 msgid "aggregate functions are not allowed in window ROWS" msgstr "агрегатные функции нельзя применять в указании ROWS для окна" -#: parser/parse_agg.c:428 +#: parser/parse_agg.c:432 msgid "grouping operations are not allowed in window ROWS" msgstr "операции группировки нельзя применять в указании ROWS для окна" -#: parser/parse_agg.c:433 +#: parser/parse_agg.c:437 msgid "aggregate functions are not allowed in window GROUPS" msgstr "агрегатные функции нельзя применять в указании GROUPS для окна" -#: parser/parse_agg.c:435 +#: parser/parse_agg.c:439 msgid "grouping operations are not allowed in window GROUPS" msgstr "операции группировки нельзя применять в указании GROUPS для окна" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:473 msgid "aggregate functions are not allowed in check constraints" msgstr "агрегатные функции нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:471 +#: parser/parse_agg.c:475 msgid "grouping operations are not allowed in check constraints" msgstr "операции группировки нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:482 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "агрегатные функции нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:480 +#: parser/parse_agg.c:484 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "операции группировки нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:489 msgid "aggregate functions are not allowed in index expressions" msgstr "агрегатные функции нельзя применять в выражениях индексов" -#: parser/parse_agg.c:487 +#: parser/parse_agg.c:491 msgid "grouping operations are not allowed in index expressions" msgstr "операции группировки нельзя применять в выражениях индексов" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:496 msgid "aggregate functions are not allowed in index predicates" msgstr "агрегатные функции нельзя применять в предикатах индексов" -#: parser/parse_agg.c:494 +#: parser/parse_agg.c:498 msgid "grouping operations are not allowed in index predicates" msgstr "операции группировки нельзя применять в предикатах индексов" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:503 msgid "aggregate functions are not allowed in statistics expressions" msgstr "агрегатные функции нельзя применять в выражениях статистики" -#: parser/parse_agg.c:501 +#: parser/parse_agg.c:505 msgid "grouping operations are not allowed in statistics expressions" msgstr "операции группировки нельзя применять в выражениях статистики" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:510 msgid "aggregate functions are not allowed in transform expressions" msgstr "агрегатные функции нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:508 +#: parser/parse_agg.c:512 msgid "grouping operations are not allowed in transform expressions" msgstr "операции группировки нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:517 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "агрегатные функции нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:515 +#: parser/parse_agg.c:519 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "операции группировки нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:524 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "агрегатные функции нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:522 +#: parser/parse_agg.c:526 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "операции группировки нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:531 msgid "aggregate functions are not allowed in partition bound" msgstr "агрегатные функции нельзя применять в выражении границы секции" -#: parser/parse_agg.c:529 +#: parser/parse_agg.c:533 msgid "grouping operations are not allowed in partition bound" msgstr "операции группировки нельзя применять в выражении границы секции" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:538 msgid "aggregate functions are not allowed in partition key expressions" msgstr "агрегатные функции нельзя применять в выражениях ключа секционирования" -#: parser/parse_agg.c:536 +#: parser/parse_agg.c:540 msgid "grouping operations are not allowed in partition key expressions" msgstr "" "операции группировки нельзя применять в выражениях ключа секционирования" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:546 msgid "aggregate functions are not allowed in column generation expressions" msgstr "агрегатные функции нельзя применять в выражениях генерируемых столбцов" -#: parser/parse_agg.c:544 +#: parser/parse_agg.c:548 msgid "grouping operations are not allowed in column generation expressions" msgstr "" "операции группировки нельзя применять в выражениях генерируемых столбцов" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:554 msgid "aggregate functions are not allowed in CALL arguments" msgstr "агрегатные функции нельзя применять в аргументах CALL" -#: parser/parse_agg.c:552 +#: parser/parse_agg.c:556 msgid "grouping operations are not allowed in CALL arguments" msgstr "операции группировки нельзя применять в аргументах CALL" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:562 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "агрегатные функции нельзя применять в условиях COPY FROM WHERE" -#: parser/parse_agg.c:560 +#: parser/parse_agg.c:564 msgid "grouping operations are not allowed in COPY FROM WHERE conditions" msgstr "операции группировки нельзя применять в условиях COPY FROM WHERE" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:587 parser/parse_clause.c:1834 +#: parser/parse_agg.c:591 parser/parse_clause.c:1834 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "агрегатные функции нельзя применять в конструкции %s" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:590 +#: parser/parse_agg.c:594 #, c-format msgid "grouping operations are not allowed in %s" msgstr "операции группировки нельзя применять в конструкции %s" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:690 parser/parse_agg.c:727 +#, c-format +msgid "outer-level aggregate cannot use a nested CTE" +msgstr "агрегатная функция внешнего уровня не может использовать вложенное CTE" + +#: parser/parse_agg.c:691 parser/parse_agg.c:728 +#, c-format +msgid "CTE \"%s\" is below the aggregate's semantic level." +msgstr "CTE \"%s\" находится ниже семантического уровня агрегатной функции." + +#: parser/parse_agg.c:713 #, c-format msgid "" "outer-level aggregate cannot contain a lower-level variable in its direct " @@ -17047,14 +17080,14 @@ msgstr "" "агрегатная функция внешнего уровня не может содержать в своих аргументах " "переменные нижнего уровня" -#: parser/parse_agg.c:769 +#: parser/parse_agg.c:798 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "" "вызовы агрегатных функций не могут включать вызовы функций, возвращающих " "множества" -#: parser/parse_agg.c:770 parser/parse_expr.c:1678 parser/parse_expr.c:2167 +#: parser/parse_agg.c:799 parser/parse_expr.c:1678 parser/parse_expr.c:2167 #: parser/parse_func.c:883 #, c-format msgid "" @@ -17064,103 +17097,103 @@ msgstr "" "Исправить ситуацию можно, переместив функцию, возвращающую множество, в " "элемент LATERAL FROM." -#: parser/parse_agg.c:775 +#: parser/parse_agg.c:804 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "вызовы агрегатных функций не могут включать вызовы оконных функции" -#: parser/parse_agg.c:880 +#: parser/parse_agg.c:907 msgid "window functions are not allowed in JOIN conditions" msgstr "оконные функции нельзя применять в условиях JOIN" -#: parser/parse_agg.c:887 +#: parser/parse_agg.c:914 msgid "window functions are not allowed in functions in FROM" msgstr "оконные функции нельзя применять в функциях во FROM" -#: parser/parse_agg.c:893 +#: parser/parse_agg.c:920 msgid "window functions are not allowed in policy expressions" msgstr "оконные функции нельзя применять в выражениях политик" -#: parser/parse_agg.c:906 +#: parser/parse_agg.c:933 msgid "window functions are not allowed in window definitions" msgstr "оконные функции нельзя применять в определении окна" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:965 msgid "window functions are not allowed in check constraints" msgstr "оконные функции нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:942 +#: parser/parse_agg.c:969 msgid "window functions are not allowed in DEFAULT expressions" msgstr "оконные функции нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:945 +#: parser/parse_agg.c:972 msgid "window functions are not allowed in index expressions" msgstr "оконные функции нельзя применять в выражениях индексов" -#: parser/parse_agg.c:948 +#: parser/parse_agg.c:975 msgid "window functions are not allowed in statistics expressions" msgstr "оконные функции нельзя применять в выражениях статистики" -#: parser/parse_agg.c:951 +#: parser/parse_agg.c:978 msgid "window functions are not allowed in index predicates" msgstr "оконные функции нельзя применять в предикатах индексов" -#: parser/parse_agg.c:954 +#: parser/parse_agg.c:981 msgid "window functions are not allowed in transform expressions" msgstr "оконные функции нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:957 +#: parser/parse_agg.c:984 msgid "window functions are not allowed in EXECUTE parameters" msgstr "оконные функции нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:960 +#: parser/parse_agg.c:987 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "оконные функции нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:963 +#: parser/parse_agg.c:990 msgid "window functions are not allowed in partition bound" msgstr "оконные функции нельзя применять в выражении границы секции" -#: parser/parse_agg.c:966 +#: parser/parse_agg.c:993 msgid "window functions are not allowed in partition key expressions" msgstr "оконные функции нельзя применять в выражениях ключа секционирования" -#: parser/parse_agg.c:969 +#: parser/parse_agg.c:996 msgid "window functions are not allowed in CALL arguments" msgstr "оконные функции нельзя применять в аргументах CALL" -#: parser/parse_agg.c:972 +#: parser/parse_agg.c:999 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "оконные функции нельзя применять в условиях COPY FROM WHERE" -#: parser/parse_agg.c:975 +#: parser/parse_agg.c:1002 msgid "window functions are not allowed in column generation expressions" msgstr "оконные функции нельзя применять в выражениях генерируемых столбцов" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:998 parser/parse_clause.c:1843 +#: parser/parse_agg.c:1025 parser/parse_clause.c:1843 #, c-format msgid "window functions are not allowed in %s" msgstr "оконные функции нельзя применять в конструкции %s" -#: parser/parse_agg.c:1032 parser/parse_clause.c:2677 +#: parser/parse_agg.c:1059 parser/parse_clause.c:2677 #, c-format msgid "window \"%s\" does not exist" msgstr "окно \"%s\" не существует" -#: parser/parse_agg.c:1116 +#: parser/parse_agg.c:1143 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "слишком много наборов группирования (при максимуме 4096)" -#: parser/parse_agg.c:1256 +#: parser/parse_agg.c:1283 #, c-format msgid "" "aggregate functions are not allowed in a recursive query's recursive term" msgstr "" "в рекурсивной части рекурсивного запроса агрегатные функции недопустимы" -#: parser/parse_agg.c:1449 +#: parser/parse_agg.c:1476 #, c-format msgid "" "column \"%s.%s\" must appear in the GROUP BY clause or be used in an " @@ -17169,7 +17202,7 @@ msgstr "" "столбец \"%s.%s\" должен фигурировать в предложении GROUP BY или " "использоваться в агрегатной функции" -#: parser/parse_agg.c:1452 +#: parser/parse_agg.c:1479 #, c-format msgid "" "Direct arguments of an ordered-set aggregate must use only grouped columns." @@ -17177,13 +17210,13 @@ msgstr "" "Прямые аргументы сортирующей агрегатной функции могут включать только " "группируемые столбцы." -#: parser/parse_agg.c:1457 +#: parser/parse_agg.c:1484 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" "подзапрос использует негруппированный столбец \"%s.%s\" из внешнего запроса" -#: parser/parse_agg.c:1621 +#: parser/parse_agg.c:1648 #, c-format msgid "" "arguments to GROUPING must be grouping expressions of the associated query " @@ -19258,22 +19291,22 @@ msgid "TO must specify exactly one value per partitioning column" msgstr "" "в TO должно указываться ровно одно значение для секционирующего столбца" -#: parser/parse_utilcmd.c:4240 +#: parser/parse_utilcmd.c:4242 #, c-format msgid "cannot specify NULL in range bound" msgstr "указать NULL в диапазонном ограничении нельзя" -#: parser/parse_utilcmd.c:4289 +#: parser/parse_utilcmd.c:4290 #, c-format msgid "every bound following MAXVALUE must also be MAXVALUE" msgstr "за границей MAXVALUE могут следовать только границы MAXVALUE" -#: parser/parse_utilcmd.c:4296 +#: parser/parse_utilcmd.c:4297 #, c-format msgid "every bound following MINVALUE must also be MINVALUE" msgstr "за границей MINVALUE могут следовать только границы MINVALUE" -#: parser/parse_utilcmd.c:4339 +#: parser/parse_utilcmd.c:4340 #, c-format msgid "specified value cannot be cast to type %s for column \"%s\"" msgstr "указанное значение нельзя привести к типу %s столбца \"%s\"" @@ -21082,13 +21115,13 @@ msgstr "для логического декодирования требует msgid "logical decoding cannot be used while in recovery" msgstr "логическое декодирование нельзя использовать в процессе восстановления" -#: replication/logical/logical.c:350 replication/logical/logical.c:502 +#: replication/logical/logical.c:350 replication/logical/logical.c:504 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "" "физический слот репликации нельзя использовать для логического декодирования" -#: replication/logical/logical.c:355 replication/logical/logical.c:507 +#: replication/logical/logical.c:355 replication/logical/logical.c:509 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "слот репликации \"%s\" создан не в этой базе данных" @@ -21101,42 +21134,42 @@ msgid "" msgstr "" "нельзя создать слот логической репликации в транзакции, осуществляющей запись" -#: replication/logical/logical.c:552 +#: replication/logical/logical.c:554 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "начинается логическое декодирование для слота \"%s\"" -#: replication/logical/logical.c:554 +#: replication/logical/logical.c:556 #, c-format msgid "Streaming transactions committing after %X/%X, reading WAL from %X/%X." msgstr "Передача транзакций, фиксируемых после %X/%X, чтение WAL с %X/%X." -#: replication/logical/logical.c:699 +#: replication/logical/logical.c:701 #, c-format msgid "" "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "" "слот \"%s\", модуль вывода \"%s\", в обработчике %s, связанный LSN: %X/%X" -#: replication/logical/logical.c:705 +#: replication/logical/logical.c:707 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "слот \"%s\", модуль вывода \"%s\", в обработчике %s" -#: replication/logical/logical.c:876 replication/logical/logical.c:921 -#: replication/logical/logical.c:966 replication/logical/logical.c:1012 +#: replication/logical/logical.c:878 replication/logical/logical.c:923 +#: replication/logical/logical.c:968 replication/logical/logical.c:1014 #, c-format msgid "logical replication at prepare time requires a %s callback" msgstr "для логической репликации во время подготовки требуется обработчик %s" -#: replication/logical/logical.c:1244 replication/logical/logical.c:1293 -#: replication/logical/logical.c:1334 replication/logical/logical.c:1420 -#: replication/logical/logical.c:1469 +#: replication/logical/logical.c:1246 replication/logical/logical.c:1295 +#: replication/logical/logical.c:1336 replication/logical/logical.c:1422 +#: replication/logical/logical.c:1471 #, c-format msgid "logical streaming requires a %s callback" msgstr "для логической потоковой репликации требуется обработчик %s" -#: replication/logical/logical.c:1379 +#: replication/logical/logical.c:1381 #, c-format msgid "logical streaming at prepare time requires a %s callback" msgstr "" @@ -21270,7 +21303,7 @@ msgstr "" "репликации с OID %u" #: replication/logical/origin.c:941 replication/logical/origin.c:1128 -#: replication/slot.c:1903 +#: replication/slot.c:1934 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Увеличьте параметр max_replication_slots и повторите попытку." @@ -21474,19 +21507,14 @@ msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "" "не удалось начать копирование начального содержимого таблицы \"%s.%s\": %s" -#: replication/logical/tablesync.c:1090 +#: replication/logical/tablesync.c:1104 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "" "при копировании таблицы не удалось начать транзакцию на сервере публикации: " "%s" -#: replication/logical/tablesync.c:1131 -#, c-format -msgid "replication origin \"%s\" already exists" -msgstr "источник репликации \"%s\" уже существует" - -#: replication/logical/tablesync.c:1144 +#: replication/logical/tablesync.c:1142 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "" @@ -21631,29 +21659,29 @@ msgstr "неверное значение proto_version" msgid "proto_version \"%s\" out of range" msgstr "значение proto_verson \"%s\" вне диапазона" -#: replication/pgoutput/pgoutput.c:227 +#: replication/pgoutput/pgoutput.c:231 #, c-format msgid "invalid publication_names syntax" msgstr "неверный синтаксис publication_names" -#: replication/pgoutput/pgoutput.c:324 +#: replication/pgoutput/pgoutput.c:328 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or lower" msgstr "" "клиент передал proto_version=%d, но мы поддерживаем только протокол %d и ниже" -#: replication/pgoutput/pgoutput.c:330 +#: replication/pgoutput/pgoutput.c:334 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or higher" msgstr "" "клиент передал proto_version=%d, но мы поддерживаем только протокол %d и выше" -#: replication/pgoutput/pgoutput.c:336 +#: replication/pgoutput/pgoutput.c:340 #, c-format msgid "publication_names parameter missing" msgstr "отсутствует параметр publication_names" -#: replication/pgoutput/pgoutput.c:349 +#: replication/pgoutput/pgoutput.c:353 #, c-format msgid "" "requested proto_version=%d does not support streaming, need %d or higher" @@ -21661,7 +21689,7 @@ msgstr "" "запрошенная версия proto_version=%d не поддерживает потоковую передачу, " "требуется версия %d или выше" -#: replication/pgoutput/pgoutput.c:354 +#: replication/pgoutput/pgoutput.c:358 #, c-format msgid "streaming requested, but not supported by output plugin" msgstr "запрошена потоковая передача, но она не поддерживается модулем вывода" @@ -21710,33 +21738,33 @@ msgstr "Освободите ненужный или увеличьте пара msgid "replication slot \"%s\" does not exist" msgstr "слот репликации \"%s\" не существует" -#: replication/slot.c:477 replication/slot.c:1054 +#: replication/slot.c:477 replication/slot.c:1083 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "слот репликации \"%s\" занят процессом с PID %d" -#: replication/slot.c:705 replication/slot.c:1448 replication/slot.c:1838 +#: replication/slot.c:705 replication/slot.c:1479 replication/slot.c:1869 #, c-format msgid "could not remove directory \"%s\"" msgstr "ошибка при удалении каталога \"%s\"" -#: replication/slot.c:1089 +#: replication/slot.c:1118 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "" "слоты репликации можно использовать, только если max_replication_slots > 0" -#: replication/slot.c:1094 +#: replication/slot.c:1123 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "слоты репликации можно использовать, только если wal_level >= replica" -#: replication/slot.c:1279 +#: replication/slot.c:1310 #, c-format msgid "terminating process %d to release replication slot \"%s\"" msgstr "завершение процесса %d для освобождения слота репликации \"%s\"" -#: replication/slot.c:1317 +#: replication/slot.c:1348 #, c-format msgid "" "invalidating slot \"%s\" because its restart_lsn %X/%X exceeds " @@ -21745,49 +21773,49 @@ msgstr "" "слот \"%s\" аннулируется, так как его позиция restart_lsn %X/%X превышает " "max_slot_wal_keep_size" -#: replication/slot.c:1776 +#: replication/slot.c:1807 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "" "файл слота репликации \"%s\" имеет неправильную сигнатуру (%u вместо %u)" -#: replication/slot.c:1783 +#: replication/slot.c:1814 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "файл состояния snapbuild \"%s\" имеет неподдерживаемую версию %u" -#: replication/slot.c:1790 +#: replication/slot.c:1821 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "у файла слота репликации \"%s\" неверная длина: %u" -#: replication/slot.c:1826 +#: replication/slot.c:1857 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "" "в файле слота репликации \"%s\" неверная контрольная сумма (%u вместо %u)" -#: replication/slot.c:1860 +#: replication/slot.c:1891 #, c-format msgid "logical replication slot \"%s\" exists, but wal_level < logical" msgstr "существует слот логической репликации \"%s\", но wal_level < logical" -#: replication/slot.c:1862 +#: replication/slot.c:1893 #, c-format msgid "Change wal_level to be logical or higher." msgstr "Смените wal_level на logical или более высокий уровень." -#: replication/slot.c:1866 +#: replication/slot.c:1897 #, c-format msgid "physical replication slot \"%s\" exists, but wal_level < replica" msgstr "существует слот физической репликации \"%s\", но wal_level < replica" -#: replication/slot.c:1868 +#: replication/slot.c:1899 #, c-format msgid "Change wal_level to be replica or higher." msgstr "Смените wal_level на replica или более высокий уровень." -#: replication/slot.c:1902 +#: replication/slot.c:1933 #, c-format msgid "too many replication slots active before shutdown" msgstr "перед завершением активно слишком много слотов репликации" @@ -21982,7 +22010,7 @@ msgstr "загрузка файла истории для линии време msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "не удалось записать в сегмент журнала %s (смещение %u, длина %lu): %m" -#: replication/walsender.c:539 storage/smgr/md.c:1336 +#: replication/walsender.c:539 storage/smgr/md.c:1339 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "не удалось перейти к концу файла \"%s\": %m" @@ -22376,7 +22404,7 @@ msgstr "" "имя запроса WITH \"%s\" оказалось и в действии правила, и в переписываемом " "запросе" -#: rewrite/rewriteHandler.c:610 +#: rewrite/rewriteHandler.c:613 #, c-format msgid "" "INSERT...SELECT rule actions are not supported for queries having data-" @@ -22385,118 +22413,118 @@ msgstr "" "правила INSERT...SELECT не поддерживаются для запросов с операторами, " "изменяющими данные, в WITH" -#: rewrite/rewriteHandler.c:663 +#: rewrite/rewriteHandler.c:666 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "RETURNING можно определить только для одного правила" -#: rewrite/rewriteHandler.c:895 rewrite/rewriteHandler.c:934 +#: rewrite/rewriteHandler.c:898 rewrite/rewriteHandler.c:937 #, c-format msgid "cannot insert a non-DEFAULT value into column \"%s\"" msgstr "в столбец \"%s\" можно вставить только значение по умолчанию" -#: rewrite/rewriteHandler.c:897 rewrite/rewriteHandler.c:963 +#: rewrite/rewriteHandler.c:900 rewrite/rewriteHandler.c:966 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "" "Столбец \"%s\" является столбцом идентификации со свойством GENERATED ALWAYS." -#: rewrite/rewriteHandler.c:899 +#: rewrite/rewriteHandler.c:902 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Для переопределения укажите OVERRIDING SYSTEM VALUE." -#: rewrite/rewriteHandler.c:961 rewrite/rewriteHandler.c:969 +#: rewrite/rewriteHandler.c:964 rewrite/rewriteHandler.c:972 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "столбцу \"%s\" можно присвоить только значение DEFAULT" -#: rewrite/rewriteHandler.c:1104 rewrite/rewriteHandler.c:1122 +#: rewrite/rewriteHandler.c:1107 rewrite/rewriteHandler.c:1125 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "многочисленные присвоения одному столбцу \"%s\"" -#: rewrite/rewriteHandler.c:1723 rewrite/rewriteHandler.c:3178 +#: rewrite/rewriteHandler.c:1726 rewrite/rewriteHandler.c:3181 #, c-format msgid "access to non-system view \"%s\" is restricted" msgstr "доступ к несистемному представлению \"%s\" ограничен" -#: rewrite/rewriteHandler.c:2155 rewrite/rewriteHandler.c:4064 +#: rewrite/rewriteHandler.c:2158 rewrite/rewriteHandler.c:4084 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "обнаружена бесконечная рекурсия в правилах для отношения \"%s\"" -#: rewrite/rewriteHandler.c:2260 +#: rewrite/rewriteHandler.c:2263 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "обнаружена бесконечная рекурсия в политике для отношения \"%s\"" -#: rewrite/rewriteHandler.c:2590 +#: rewrite/rewriteHandler.c:2593 msgid "Junk view columns are not updatable." msgstr "Утилизируемые столбцы представлений не обновляются." -#: rewrite/rewriteHandler.c:2595 +#: rewrite/rewriteHandler.c:2598 msgid "" "View columns that are not columns of their base relation are not updatable." msgstr "" "Столбцы представлений, не являющиеся столбцами базовых отношений, не " "обновляются." -#: rewrite/rewriteHandler.c:2598 +#: rewrite/rewriteHandler.c:2601 msgid "View columns that refer to system columns are not updatable." msgstr "" "Столбцы представлений, ссылающиеся на системные столбцы, не обновляются." -#: rewrite/rewriteHandler.c:2601 +#: rewrite/rewriteHandler.c:2604 msgid "View columns that return whole-row references are not updatable." msgstr "" "Столбцы представлений, возвращающие ссылки на всю строку, не обновляются." -#: rewrite/rewriteHandler.c:2662 +#: rewrite/rewriteHandler.c:2665 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Представления с DISTINCT не обновляются автоматически." -#: rewrite/rewriteHandler.c:2665 +#: rewrite/rewriteHandler.c:2668 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Представления с GROUP BY не обновляются автоматически." -#: rewrite/rewriteHandler.c:2668 +#: rewrite/rewriteHandler.c:2671 msgid "Views containing HAVING are not automatically updatable." msgstr "Представления с HAVING не обновляются автоматически." -#: rewrite/rewriteHandler.c:2671 +#: rewrite/rewriteHandler.c:2674 msgid "" "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "" "Представления с UNION, INTERSECT или EXCEPT не обновляются автоматически." -#: rewrite/rewriteHandler.c:2674 +#: rewrite/rewriteHandler.c:2677 msgid "Views containing WITH are not automatically updatable." msgstr "Представления с WITH не обновляются автоматически." -#: rewrite/rewriteHandler.c:2677 +#: rewrite/rewriteHandler.c:2680 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Представления с LIMIT или OFFSET не обновляются автоматически." -#: rewrite/rewriteHandler.c:2689 +#: rewrite/rewriteHandler.c:2692 msgid "Views that return aggregate functions are not automatically updatable." msgstr "" "Представления, возвращающие агрегатные функции, не обновляются автоматически." -#: rewrite/rewriteHandler.c:2692 +#: rewrite/rewriteHandler.c:2695 msgid "Views that return window functions are not automatically updatable." msgstr "" "Представления, возвращающие оконные функции, не обновляются автоматически." -#: rewrite/rewriteHandler.c:2695 +#: rewrite/rewriteHandler.c:2698 msgid "" "Views that return set-returning functions are not automatically updatable." msgstr "" "Представления, возвращающие функции с результатом-множеством, не обновляются " "автоматически." -#: rewrite/rewriteHandler.c:2702 rewrite/rewriteHandler.c:2706 -#: rewrite/rewriteHandler.c:2714 +#: rewrite/rewriteHandler.c:2705 rewrite/rewriteHandler.c:2709 +#: rewrite/rewriteHandler.c:2717 msgid "" "Views that do not select from a single table or view are not automatically " "updatable." @@ -22504,27 +22532,27 @@ msgstr "" "Представления, выбирающие данные не из одной таблицы или представления, не " "обновляются автоматически." -#: rewrite/rewriteHandler.c:2717 +#: rewrite/rewriteHandler.c:2720 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Представления, содержащие TABLESAMPLE, не обновляются автоматически." -#: rewrite/rewriteHandler.c:2741 +#: rewrite/rewriteHandler.c:2744 msgid "Views that have no updatable columns are not automatically updatable." msgstr "" "Представления, не содержащие обновляемых столбцов, не обновляются " "автоматически." -#: rewrite/rewriteHandler.c:3238 +#: rewrite/rewriteHandler.c:3241 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "вставить данные в столбец \"%s\" представления \"%s\" нельзя" -#: rewrite/rewriteHandler.c:3246 +#: rewrite/rewriteHandler.c:3249 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "изменить данные в столбце \"%s\" представления \"%s\" нельзя" -#: rewrite/rewriteHandler.c:3728 +#: rewrite/rewriteHandler.c:3747 #, c-format msgid "" "DO INSTEAD NOTIFY rules are not supported for data-modifying statements in " @@ -22533,7 +22561,7 @@ msgstr "" "правила DO INSTEAD NOTIFY не поддерживаются в операторах, изменяющих данные, " "в WITH" -#: rewrite/rewriteHandler.c:3739 +#: rewrite/rewriteHandler.c:3758 #, c-format msgid "" "DO INSTEAD NOTHING rules are not supported for data-modifying statements in " @@ -22542,7 +22570,7 @@ msgstr "" "правила DO INSTEAD NOTHING не поддерживаются в операторах, изменяющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3753 +#: rewrite/rewriteHandler.c:3772 #, c-format msgid "" "conditional DO INSTEAD rules are not supported for data-modifying statements " @@ -22551,13 +22579,13 @@ msgstr "" "условные правила DO INSTEAD не поддерживаются для операторов, изменяющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3757 +#: rewrite/rewriteHandler.c:3776 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" "правила DO ALSO не поддерживаются для операторов, изменяющих данные, в WITH" -#: rewrite/rewriteHandler.c:3762 +#: rewrite/rewriteHandler.c:3781 #, c-format msgid "" "multi-statement DO INSTEAD rules are not supported for data-modifying " @@ -22566,8 +22594,8 @@ msgstr "" "составные правила DO INSTEAD не поддерживаются для операторов, изменяющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3992 rewrite/rewriteHandler.c:4000 -#: rewrite/rewriteHandler.c:4008 +#: rewrite/rewriteHandler.c:4012 rewrite/rewriteHandler.c:4020 +#: rewrite/rewriteHandler.c:4028 #, c-format msgid "" "Views with conditional DO INSTEAD rules are not automatically updatable." @@ -22575,43 +22603,43 @@ msgstr "" "Представления в сочетании с правилами DO INSTEAD с условиями не обновляются " "автоматически." -#: rewrite/rewriteHandler.c:4113 +#: rewrite/rewriteHandler.c:4134 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "выполнить INSERT RETURNING для отношения \"%s\" нельзя" -#: rewrite/rewriteHandler.c:4115 +#: rewrite/rewriteHandler.c:4136 #, 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:4120 +#: rewrite/rewriteHandler.c:4141 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "выполнить UPDATE RETURNING для отношения \"%s\" нельзя" -#: rewrite/rewriteHandler.c:4122 +#: rewrite/rewriteHandler.c:4143 #, 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:4127 +#: rewrite/rewriteHandler.c:4148 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "выполнить DELETE RETURNING для отношения \"%s\" нельзя" -#: rewrite/rewriteHandler.c:4129 +#: rewrite/rewriteHandler.c:4150 #, 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:4147 +#: rewrite/rewriteHandler.c:4168 #, c-format msgid "" "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or " @@ -22620,7 +22648,7 @@ msgstr "" "INSERT c предложением ON CONFLICT нельзя использовать с таблицей, для " "которой заданы правила INSERT или UPDATE" -#: rewrite/rewriteHandler.c:4204 +#: rewrite/rewriteHandler.c:4225 #, c-format msgid "" "WITH cannot be used in a query that is rewritten by rules into multiple " @@ -22697,22 +22725,22 @@ msgid "" msgstr "" "функция, возвращающая запись, вызвана в контексте, не допускающем этот тип" -#: storage/buffer/bufmgr.c:598 storage/buffer/bufmgr.c:765 +#: storage/buffer/bufmgr.c:605 storage/buffer/bufmgr.c:772 #, c-format msgid "cannot access temporary tables of other sessions" msgstr "обращаться к временным таблицам других сеансов нельзя" -#: storage/buffer/bufmgr.c:843 +#: storage/buffer/bufmgr.c:850 #, c-format msgid "cannot extend relation %s beyond %u blocks" msgstr "не удалось увеличить отношение \"%s\" до блока %u" -#: storage/buffer/bufmgr.c:930 +#: storage/buffer/bufmgr.c:937 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "неожиданные данные после EOF в блоке %u отношения %s" -#: storage/buffer/bufmgr.c:932 +#: storage/buffer/bufmgr.c:939 #, c-format msgid "" "This has been seen to occur with buggy kernels; consider updating your " @@ -22721,27 +22749,27 @@ msgstr "" "Эта ситуация может возникать из-за ошибок в ядре; возможно, вам следует " "обновить ОС." -#: storage/buffer/bufmgr.c:1031 +#: storage/buffer/bufmgr.c:1038 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "некорректная страница в блоке %u отношения %s; страница обнуляется" -#: storage/buffer/bufmgr.c:4534 +#: storage/buffer/bufmgr.c:4600 #, c-format msgid "could not write block %u of %s" msgstr "не удалось запись блок %u файла %s" -#: storage/buffer/bufmgr.c:4536 +#: storage/buffer/bufmgr.c:4602 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Множественные сбои - возможно, постоянная ошибка записи." -#: storage/buffer/bufmgr.c:4557 storage/buffer/bufmgr.c:4576 +#: storage/buffer/bufmgr.c:4623 storage/buffer/bufmgr.c:4642 #, c-format msgid "writing block %u of relation %s" msgstr "запись блока %u отношения %s" -#: storage/buffer/bufmgr.c:4880 +#: storage/buffer/bufmgr.c:4946 #, c-format msgid "snapshot too old" msgstr "снимок слишком стар" @@ -22775,7 +22803,7 @@ msgstr "" msgid "could not delete shared fileset \"%s\": %m" msgstr "ошибка удаления разделяемого набора файлов \"%s\": %m" -#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:871 +#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:874 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "не удалось обрезать файл \"%s\": %m" @@ -23520,19 +23548,19 @@ msgstr "не удалось записать блок %u в файл \"%s\": %m" msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "не удалось записать блок %u в файл \"%s\" (записано байт: %d из %d)" -#: storage/smgr/md.c:842 +#: storage/smgr/md.c:845 #, 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:897 +#: storage/smgr/md.c:900 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "не удалось обрезать файл \"%s\" до нужного числа блоков (%u): %m" -#: storage/smgr/md.c:1301 +#: storage/smgr/md.c:1304 #, c-format msgid "" "could not open file \"%s\" (target block %u): previous segment is only %u " @@ -23541,7 +23569,7 @@ msgstr "" "не удалось открыть файл file \"%s\" (целевой блок %u): недостаточно блоков в " "предыдущем сегменте (всего %u)" -#: storage/smgr/md.c:1315 +#: storage/smgr/md.c:1318 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "не удалось открыть файл file \"%s\" (целевой блок %u): %m" @@ -24613,8 +24641,8 @@ msgstr "элемент массива null недопустим в данном msgid "cannot compare arrays of different element types" msgstr "нельзя сравнивать массивы с элементами разных типов" -#: utils/adt/arrayfuncs.c:4034 utils/adt/multirangetypes.c:2742 -#: utils/adt/multirangetypes.c:2814 utils/adt/rangetypes.c:1343 +#: utils/adt/arrayfuncs.c:4034 utils/adt/multirangetypes.c:2743 +#: utils/adt/multirangetypes.c:2815 utils/adt/rangetypes.c:1343 #: utils/adt/rangetypes.c:1407 utils/adt/rowtypes.c:1858 #, c-format msgid "could not identify a hash function for type %s" @@ -26298,22 +26326,22 @@ msgstr "Ожидалось начало диапазона." msgid "Expected comma or end of multirange." msgstr "Ожидалась запятая или конец мультидиапазона." -#: utils/adt/multirangetypes.c:975 +#: utils/adt/multirangetypes.c:976 #, c-format msgid "multiranges cannot be constructed from multidimensional arrays" msgstr "мультидиапазоны нельзя получить из массивов мультидиапазонов" -#: utils/adt/multirangetypes.c:1001 +#: utils/adt/multirangetypes.c:1002 #, c-format msgid "multirange values cannot contain null members" msgstr "мультидиапазоны не могут содержать элементы NULL" -#: utils/adt/multirangetypes.c:1349 +#: utils/adt/multirangetypes.c:1350 #, c-format msgid "range_agg must be called with a range" msgstr "функция range_agg должна вызываться с диапазоном" -#: utils/adt/multirangetypes.c:1420 +#: utils/adt/multirangetypes.c:1421 #, c-format msgid "range_intersect_agg must be called with a multirange" msgstr "функция range_intersect_agg должна вызываться с мультидиапазоном" @@ -26537,24 +26565,24 @@ msgstr "символ не может быть null" msgid "percentile value %g is not between 0 and 1" msgstr "значение перцентиля %g лежит не в диапазоне 0..1" -#: utils/adt/pg_locale.c:1228 +#: utils/adt/pg_locale.c:1229 #, c-format msgid "Apply system library package updates." msgstr "Обновите пакет с системной библиотекой." -#: utils/adt/pg_locale.c:1442 +#: utils/adt/pg_locale.c:1445 #, c-format msgid "could not create locale \"%s\": %m" msgstr "не удалось создать локаль \"%s\": %m" -#: utils/adt/pg_locale.c:1445 +#: utils/adt/pg_locale.c:1448 #, c-format msgid "" "The operating system could not find any locale data for the locale name " "\"%s\"." msgstr "Операционная система не может найти данные локали с именем \"%s\"." -#: utils/adt/pg_locale.c:1547 +#: utils/adt/pg_locale.c:1550 #, c-format msgid "" "collations with different collate and ctype values are not supported on this " @@ -26563,40 +26591,40 @@ msgstr "" "правила сортировки с разными значениями collate и ctype не поддерживаются на " "этой платформе" -#: utils/adt/pg_locale.c:1556 +#: utils/adt/pg_locale.c:1559 #, c-format msgid "collation provider LIBC is not supported on this platform" msgstr "провайдер правил сортировки LIBC не поддерживается на этой платформе" -#: utils/adt/pg_locale.c:1568 +#: utils/adt/pg_locale.c:1571 #, c-format msgid "" "collations with different collate and ctype values are not supported by ICU" msgstr "" "ICU не поддерживает правила сортировки с разными значениями collate и ctype" -#: utils/adt/pg_locale.c:1574 utils/adt/pg_locale.c:1661 -#: utils/adt/pg_locale.c:1940 +#: utils/adt/pg_locale.c:1577 utils/adt/pg_locale.c:1664 +#: utils/adt/pg_locale.c:1943 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "не удалось открыть сортировщик для локали \"%s\": %s" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1591 #, c-format msgid "ICU is not supported in this build" msgstr "ICU не поддерживается в данной сборке" -#: utils/adt/pg_locale.c:1609 +#: utils/adt/pg_locale.c:1612 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "для правила сортировки \"%s\", лишённого версии, была задана версия" -#: utils/adt/pg_locale.c:1616 +#: utils/adt/pg_locale.c:1619 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "несовпадение версии для правила сортировки \"%s\"" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "" "The collation in the database was created using version %s, but the " @@ -26605,7 +26633,7 @@ msgstr "" "Правило сортировки в базе данных было создано с версией %s, но операционная " "система предоставляет версию %s." -#: utils/adt/pg_locale.c:1621 +#: utils/adt/pg_locale.c:1624 #, c-format msgid "" "Rebuild all objects affected by this collation and run ALTER COLLATION %s " @@ -26615,40 +26643,40 @@ msgstr "" "ALTER COLLATION %s REFRESH VERSION либо соберите PostgreSQL с правильной " "версией библиотеки." -#: utils/adt/pg_locale.c:1692 +#: utils/adt/pg_locale.c:1695 #, c-format msgid "could not load locale \"%s\"" msgstr "не удалось загрузить локаль \"%s\"" -#: utils/adt/pg_locale.c:1717 +#: utils/adt/pg_locale.c:1720 #, c-format msgid "could not get collation version for locale \"%s\": error code %lu" msgstr "" "не удалось получить версию правила сортировки для локали \"%s\" (код ошибки: " "%lu)" -#: utils/adt/pg_locale.c:1755 +#: utils/adt/pg_locale.c:1758 #, c-format msgid "encoding \"%s\" not supported by ICU" msgstr "ICU не поддерживает кодировку \"%s\"" -#: utils/adt/pg_locale.c:1762 +#: utils/adt/pg_locale.c:1765 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "не удалось открыть преобразователь ICU для кодировки \"%s\": %s" -#: utils/adt/pg_locale.c:1793 utils/adt/pg_locale.c:1802 -#: utils/adt/pg_locale.c:1831 utils/adt/pg_locale.c:1841 +#: utils/adt/pg_locale.c:1796 utils/adt/pg_locale.c:1805 +#: utils/adt/pg_locale.c:1834 utils/adt/pg_locale.c:1844 #, c-format msgid "%s failed: %s" msgstr "ошибка %s: %s" -#: utils/adt/pg_locale.c:2113 +#: utils/adt/pg_locale.c:2116 #, c-format msgid "invalid multibyte character for locale" msgstr "неверный многобайтный символ для локали" -#: utils/adt/pg_locale.c:2114 +#: utils/adt/pg_locale.c:2117 #, c-format msgid "" "The server's LC_CTYPE locale is probably incompatible with the database " @@ -27583,7 +27611,7 @@ msgstr "XML-функции не поддерживаются" msgid "This functionality requires the server to be built with libxml support." msgstr "Для этой функциональности в сервере не хватает поддержки libxml." -#: utils/adt/xml.c:253 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:253 utils/mb/mbutils.c:628 #, c-format msgid "invalid encoding name \"%s\"" msgstr "неверное имя кодировки: \"%s\"" @@ -27775,17 +27803,17 @@ msgstr "" msgid "cached plan must not change result type" msgstr "в кешированном плане не должен изменяться тип результата" -#: utils/cache/relcache.c:6328 +#: utils/cache/relcache.c:6344 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "создать файл инициализации для кеша отношений \"%s\" не удалось: %m" -#: utils/cache/relcache.c:6330 +#: utils/cache/relcache.c:6346 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Продолжаем всё равно, хотя что-то не так." -#: utils/cache/relcache.c:6652 +#: utils/cache/relcache.c:6668 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "не удалось стереть файл кеша \"%s\": %m" @@ -28447,48 +28475,48 @@ msgstr "неожиданный ID кодировки %d для наборов с msgid "unexpected encoding ID %d for WIN character sets" msgstr "неожиданный ID кодировки %d для наборов символов WIN" -#: utils/mb/mbutils.c:297 utils/mb/mbutils.c:900 +#: utils/mb/mbutils.c:298 utils/mb/mbutils.c:901 #, c-format msgid "conversion between %s and %s is not supported" msgstr "преобразование %s <-> %s не поддерживается" -#: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 -#: utils/mb/mbutils.c:842 +#: utils/mb/mbutils.c:403 utils/mb/mbutils.c:431 utils/mb/mbutils.c:816 +#: utils/mb/mbutils.c:843 #, c-format msgid "String of %d bytes is too long for encoding conversion." msgstr "Строка из %d байт слишком длинна для преобразования кодировки." -#: utils/mb/mbutils.c:568 +#: utils/mb/mbutils.c:569 #, c-format msgid "invalid source encoding name \"%s\"" msgstr "неверное имя исходной кодировки: \"%s\"" -#: utils/mb/mbutils.c:573 +#: utils/mb/mbutils.c:574 #, c-format msgid "invalid destination encoding name \"%s\"" msgstr "неверное имя кодировки результата: \"%s\"" -#: utils/mb/mbutils.c:713 +#: utils/mb/mbutils.c:714 #, c-format msgid "invalid byte value for encoding \"%s\": 0x%02x" msgstr "недопустимое байтовое значение для кодировки \"%s\": 0x%02x" -#: utils/mb/mbutils.c:877 +#: utils/mb/mbutils.c:878 #, c-format msgid "invalid Unicode code point" msgstr "неверный код Unicode" -#: utils/mb/mbutils.c:1146 +#: utils/mb/mbutils.c:1147 #, c-format msgid "bind_textdomain_codeset failed" msgstr "ошибка в bind_textdomain_codeset" -#: utils/mb/mbutils.c:1667 +#: utils/mb/mbutils.c:1668 #, c-format msgid "invalid byte sequence for encoding \"%s\": %s" msgstr "неверная последовательность байт для кодировки \"%s\": %s" -#: utils/mb/mbutils.c:1708 +#: utils/mb/mbutils.c:1709 #, c-format msgid "" "character with byte sequence %s in encoding \"%s\" has no equivalent in " @@ -31385,15 +31413,15 @@ msgstr "Ошибка при создании контекста памяти \"% msgid "could not attach to dynamic shared area" msgstr "не удалось подключиться к динамической разделяемой области" -#: utils/mmgr/mcxt.c:889 utils/mmgr/mcxt.c:925 utils/mmgr/mcxt.c:963 -#: utils/mmgr/mcxt.c:1001 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1120 -#: utils/mmgr/mcxt.c:1156 utils/mmgr/mcxt.c:1208 utils/mmgr/mcxt.c:1243 -#: utils/mmgr/mcxt.c:1278 +#: utils/mmgr/mcxt.c:892 utils/mmgr/mcxt.c:928 utils/mmgr/mcxt.c:966 +#: utils/mmgr/mcxt.c:1004 utils/mmgr/mcxt.c:1112 utils/mmgr/mcxt.c:1143 +#: utils/mmgr/mcxt.c:1179 utils/mmgr/mcxt.c:1231 utils/mmgr/mcxt.c:1266 +#: utils/mmgr/mcxt.c:1301 #, c-format msgid "Failed on request of size %zu in memory context \"%s\"." msgstr "Ошибка при запросе блока размером %zu в контексте памяти \"%s\"." -#: utils/mmgr/mcxt.c:1052 +#: utils/mmgr/mcxt.c:1067 #, c-format msgid "logging memory contexts of PID %d" msgstr "вывод информации о памяти процесса с PID %d" @@ -31448,26 +31476,26 @@ msgid "could not read block %ld of temporary file: read only %zu of %zu bytes" msgstr "" "не удалось прочитать блок %ld временного файла (прочитано байт: %zu из %zu)" -#: utils/sort/sharedtuplestore.c:431 utils/sort/sharedtuplestore.c:440 -#: utils/sort/sharedtuplestore.c:463 utils/sort/sharedtuplestore.c:480 -#: utils/sort/sharedtuplestore.c:497 +#: utils/sort/sharedtuplestore.c:432 utils/sort/sharedtuplestore.c:441 +#: utils/sort/sharedtuplestore.c:464 utils/sort/sharedtuplestore.c:481 +#: utils/sort/sharedtuplestore.c:498 #, c-format msgid "could not read from shared tuplestore temporary file" msgstr "не удалось прочитать файл общего временного хранилища кортежей" -#: utils/sort/sharedtuplestore.c:486 +#: utils/sort/sharedtuplestore.c:487 #, c-format msgid "unexpected chunk in shared tuplestore temporary file" msgstr "неожиданный фрагмент в файле общего временного хранилища кортежей" -#: utils/sort/sharedtuplestore.c:570 +#: utils/sort/sharedtuplestore.c:571 #, c-format msgid "could not seek to block %u in shared tuplestore temporary file" msgstr "" "не удалось переместиться к блоку %u в файле общего временного хранилища " "кортежей" -#: utils/sort/sharedtuplestore.c:577 +#: utils/sort/sharedtuplestore.c:578 #, c-format msgid "" "could not read from shared tuplestore temporary file: read only %zu of %zu " @@ -32155,6 +32183,10 @@ msgstr "нестандартное использование спецсимво msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "Используйте для записи спецсимволов синтаксис спецстрок E'\\r\\n'." +#, c-format +#~ msgid "replication origin \"%s\" already exists" +#~ msgstr "источник репликации \"%s\" уже существует" + #, c-format #~ msgid "cannot create statistics on the specified relation" #~ msgstr "создать статистику для указанного отношения нельзя" diff --git a/src/backend/po/sv.po b/src/backend/po/sv.po index 8e38b2a776a..ff539376b22 100644 --- a/src/backend/po/sv.po +++ b/src/backend/po/sv.po @@ -23,8 +23,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-09-18 03:47+0000\n" -"PO-Revision-Date: 2025-09-19 20:24+0200\n" +"POT-Creation-Date: 2026-01-30 21:52+0000\n" +"PO-Revision-Date: 2026-02-02 23:02+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -48,17 +48,17 @@ msgstr "kunde inte öppna filen \"%s\" för läsning: %m" #: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 #: access/transam/timeline.c:143 access/transam/timeline.c:362 -#: access/transam/twophase.c:1329 access/transam/xlog.c:3593 -#: access/transam/xlog.c:4842 access/transam/xlog.c:11736 -#: access/transam/xlog.c:11749 access/transam/xlog.c:12204 -#: access/transam/xlog.c:12284 access/transam/xlog.c:12321 -#: access/transam/xlog.c:12381 access/transam/xlogfuncs.c:703 +#: access/transam/twophase.c:1329 access/transam/xlog.c:3594 +#: access/transam/xlog.c:4843 access/transam/xlog.c:11771 +#: access/transam/xlog.c:11784 access/transam/xlog.c:12239 +#: access/transam/xlog.c:12319 access/transam/xlog.c:12356 +#: access/transam/xlog.c:12416 access/transam/xlogfuncs.c:703 #: access/transam/xlogfuncs.c:722 commands/extension.c:3492 libpq/hba.c:534 #: replication/basebackup.c:2016 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 #: replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 -#: replication/logical/snapbuild.c:1988 replication/slot.c:1727 -#: replication/slot.c:1768 replication/walsender.c:545 +#: replication/logical/snapbuild.c:1988 replication/slot.c:1794 +#: replication/slot.c:1835 replication/walsender.c:559 #: storage/file/buffile.c:445 storage/file/copydir.c:195 #: utils/adt/genfile.c:202 utils/adt/misc.c:881 utils/cache/relmapper.c:744 #, c-format @@ -66,11 +66,11 @@ msgid "could not read file \"%s\": %m" msgstr "kunde inte läsa fil \"%s\": %m" #: ../common/controldata_utils.c:107 ../common/controldata_utils.c:111 -#: access/transam/xlog.c:3598 access/transam/xlog.c:4847 +#: access/transam/xlog.c:3599 access/transam/xlog.c:4848 #: replication/basebackup.c:2020 replication/logical/origin.c:734 #: replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 #: replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 -#: replication/slot.c:1731 replication/slot.c:1772 replication/walsender.c:550 +#: replication/slot.c:1798 replication/slot.c:1839 replication/walsender.c:564 #: utils/cache/relmapper.c:748 #, c-format msgid "could not read file \"%s\": read %d of %zu" @@ -81,15 +81,15 @@ msgstr "kunde inte läsa fil \"%s\": läste %d av %zu" #: access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 #: access/transam/timeline.c:392 access/transam/timeline.c:438 #: access/transam/timeline.c:512 access/transam/twophase.c:1341 -#: access/transam/twophase.c:1753 access/transam/xlog.c:3444 -#: access/transam/xlog.c:3633 access/transam/xlog.c:3638 -#: access/transam/xlog.c:3957 access/transam/xlog.c:4812 -#: access/transam/xlog.c:5740 access/transam/xlogfuncs.c:728 +#: access/transam/twophase.c:1753 access/transam/xlog.c:3445 +#: access/transam/xlog.c:3634 access/transam/xlog.c:3639 +#: access/transam/xlog.c:3958 access/transam/xlog.c:4813 +#: access/transam/xlog.c:5741 access/transam/xlogfuncs.c:728 #: commands/copyfrom.c:1586 commands/copyto.c:328 libpq/be-fsstubs.c:455 #: libpq/be-fsstubs.c:525 replication/logical/origin.c:667 #: replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 #: replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 -#: replication/slot.c:1618 replication/slot.c:1779 replication/walsender.c:560 +#: replication/slot.c:1683 replication/slot.c:1846 replication/walsender.c:574 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:735 #: storage/file/fd.c:3528 storage/file/fd.c:3631 utils/cache/relmapper.c:759 #: utils/cache/relmapper.c:898 @@ -119,18 +119,18 @@ msgstr "" #: ../common/file_utils.c:360 access/heap/rewriteheap.c:1264 #: access/transam/timeline.c:111 access/transam/timeline.c:251 #: access/transam/timeline.c:348 access/transam/twophase.c:1285 -#: access/transam/xlog.c:3331 access/transam/xlog.c:3510 -#: access/transam/xlog.c:3548 access/transam/xlog.c:3736 -#: access/transam/xlog.c:3822 access/transam/xlog.c:3925 -#: access/transam/xlog.c:4832 access/transam/xlogutils.c:803 +#: access/transam/xlog.c:3332 access/transam/xlog.c:3511 +#: access/transam/xlog.c:3549 access/transam/xlog.c:3737 +#: access/transam/xlog.c:3823 access/transam/xlog.c:3926 +#: access/transam/xlog.c:4833 access/transam/xlogutils.c:803 #: postmaster/syslogger.c:1488 replication/basebackup.c:616 #: replication/basebackup.c:1610 replication/logical/origin.c:719 #: replication/logical/reorderbuffer.c:3743 #: replication/logical/reorderbuffer.c:4294 #: replication/logical/reorderbuffer.c:5070 #: replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 -#: replication/slot.c:1699 replication/walsender.c:518 -#: replication/walsender.c:2567 storage/file/copydir.c:161 +#: replication/slot.c:1766 replication/walsender.c:532 +#: replication/walsender.c:2581 storage/file/copydir.c:161 #: storage/file/fd.c:710 storage/file/fd.c:3297 storage/file/fd.c:3515 #: storage/file/fd.c:3602 storage/smgr/md.c:506 utils/cache/relmapper.c:724 #: utils/cache/relmapper.c:842 utils/error/elog.c:1958 @@ -142,9 +142,9 @@ msgstr "kunde inte öppna fil \"%s\": %m" #: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 #: access/transam/twophase.c:1726 access/transam/twophase.c:1735 -#: access/transam/xlog.c:11493 access/transam/xlog.c:11531 -#: access/transam/xlog.c:11944 access/transam/xlogfuncs.c:782 -#: postmaster/postmaster.c:5686 postmaster/syslogger.c:1499 +#: access/transam/xlog.c:11528 access/transam/xlog.c:11566 +#: access/transam/xlog.c:11979 access/transam/xlogfuncs.c:782 +#: postmaster/postmaster.c:5688 postmaster/syslogger.c:1499 #: postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 #, c-format msgid "could not write file \"%s\": %m" @@ -155,11 +155,11 @@ msgstr "kunde inte skriva fil \"%s\": %m" #: access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 #: access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 #: access/transam/timeline.c:506 access/transam/twophase.c:1747 -#: access/transam/xlog.c:3437 access/transam/xlog.c:3627 -#: access/transam/xlog.c:4805 access/transam/xlog.c:10976 -#: access/transam/xlog.c:11017 replication/logical/snapbuild.c:1821 -#: replication/slot.c:1604 replication/slot.c:1709 storage/file/fd.c:727 -#: storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 +#: access/transam/xlog.c:3438 access/transam/xlog.c:3628 +#: access/transam/xlog.c:4806 access/transam/xlog.c:11011 +#: access/transam/xlog.c:11052 replication/logical/snapbuild.c:1821 +#: replication/slot.c:1667 replication/slot.c:1776 storage/file/fd.c:727 +#: storage/file/fd.c:3623 storage/smgr/md.c:959 storage/smgr/md.c:1000 #: storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 #, c-format msgid "could not fsync file \"%s\": %m" @@ -168,14 +168,14 @@ msgstr "kunde inte fsync:a fil \"%s\": %m" #: ../common/cryptohash_openssl.c:104 ../common/exec.c:560 ../common/exec.c:605 #: ../common/exec.c:697 ../common/hmac_openssl.c:101 ../common/psprintf.c:143 #: ../common/stringinfo.c:305 ../port/path.c:707 ../port/path.c:745 -#: ../port/path.c:762 access/transam/twophase.c:1399 access/transam/xlog.c:6720 +#: ../port/path.c:762 access/transam/twophase.c:1399 access/transam/xlog.c:6721 #: lib/dshash.c:245 libpq/auth.c:1497 libpq/auth.c:1565 libpq/auth.c:2123 #: libpq/be-secure-gssapi.c:530 libpq/be-secure-gssapi.c:702 #: postmaster/bgworker.c:349 postmaster/bgworker.c:948 -#: postmaster/postmaster.c:2552 postmaster/postmaster.c:4209 -#: postmaster/postmaster.c:5611 postmaster/postmaster.c:5975 +#: postmaster/postmaster.c:2554 postmaster/postmaster.c:4211 +#: postmaster/postmaster.c:5613 postmaster/postmaster.c:5977 #: replication/libpqwalreceiver/libpqwalreceiver.c:287 -#: replication/logical/logical.c:206 replication/walsender.c:592 +#: replication/logical/logical.c:206 replication/walsender.c:606 #: storage/buffer/localbuf.c:442 storage/file/fd.c:879 storage/file/fd.c:1351 #: storage/file/fd.c:1512 storage/file/fd.c:2320 storage/ipc/procarray.c:1472 #: storage/ipc/procarray.c:2293 storage/ipc/procarray.c:2300 @@ -183,17 +183,17 @@ msgstr "kunde inte fsync:a fil \"%s\": %m" #: tcop/postgres.c:3620 utils/adt/cryptohashfuncs.c:46 #: utils/adt/cryptohashfuncs.c:66 utils/adt/formatting.c:1699 #: utils/adt/formatting.c:1823 utils/adt/formatting.c:1948 -#: utils/adt/pg_locale.c:450 utils/adt/pg_locale.c:614 utils/adt/regexp.c:223 +#: utils/adt/pg_locale.c:451 utils/adt/pg_locale.c:615 utils/adt/regexp.c:223 #: utils/fmgr/dfmgr.c:229 utils/hash/dynahash.c:513 utils/hash/dynahash.c:613 -#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:401 utils/mb/mbutils.c:429 -#: utils/mb/mbutils.c:814 utils/mb/mbutils.c:841 utils/misc/guc.c:5061 +#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 +#: utils/mb/mbutils.c:815 utils/mb/mbutils.c:842 utils/misc/guc.c:5061 #: utils/misc/guc.c:5077 utils/misc/guc.c:5090 utils/misc/guc.c:8447 #: utils/misc/tzparser.c:476 utils/mmgr/aset.c:476 utils/mmgr/dsa.c:702 #: utils/mmgr/dsa.c:724 utils/mmgr/dsa.c:805 utils/mmgr/generation.c:234 -#: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 -#: utils/mmgr/mcxt.c:1000 utils/mmgr/mcxt.c:1088 utils/mmgr/mcxt.c:1119 -#: utils/mmgr/mcxt.c:1155 utils/mmgr/mcxt.c:1207 utils/mmgr/mcxt.c:1242 -#: utils/mmgr/mcxt.c:1277 utils/mmgr/slab.c:238 +#: utils/mmgr/mcxt.c:891 utils/mmgr/mcxt.c:927 utils/mmgr/mcxt.c:965 +#: utils/mmgr/mcxt.c:1003 utils/mmgr/mcxt.c:1111 utils/mmgr/mcxt.c:1142 +#: utils/mmgr/mcxt.c:1178 utils/mmgr/mcxt.c:1230 utils/mmgr/mcxt.c:1265 +#: utils/mmgr/mcxt.c:1300 utils/mmgr/slab.c:238 #, c-format msgid "out of memory" msgstr "slut på minne" @@ -223,7 +223,7 @@ msgstr "kunde inte hitta en \"%s\" att köra" msgid "could not change directory to \"%s\": %m" msgstr "kunde inte byta katalog till \"%s\": %m" -#: ../common/exec.c:299 access/transam/xlog.c:11367 +#: ../common/exec.c:299 access/transam/xlog.c:11402 #: replication/basebackup.c:1428 utils/adt/misc.c:362 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -239,8 +239,8 @@ msgstr "%s() misslyckades: %m" #: ../common/fe_memutils.c:35 ../common/fe_memutils.c:75 #: ../common/fe_memutils.c:98 ../common/fe_memutils.c:162 #: ../common/psprintf.c:145 ../port/path.c:709 ../port/path.c:747 -#: ../port/path.c:764 utils/misc/ps_status.c:208 utils/misc/ps_status.c:216 -#: utils/misc/ps_status.c:246 utils/misc/ps_status.c:254 +#: ../port/path.c:764 utils/misc/ps_status.c:210 utils/misc/ps_status.c:218 +#: utils/misc/ps_status.c:248 utils/misc/ps_status.c:256 #, c-format msgid "out of memory\n" msgstr "slut på minne\n" @@ -252,8 +252,8 @@ msgstr "kan inte duplicera null-pekare (internt fel)\n" #: ../common/file_utils.c:86 ../common/file_utils.c:446 #: ../common/file_utils.c:450 access/transam/twophase.c:1297 -#: access/transam/xlog.c:11469 access/transam/xlog.c:11507 -#: access/transam/xlog.c:11724 access/transam/xlogarchive.c:110 +#: access/transam/xlog.c:11504 access/transam/xlog.c:11542 +#: access/transam/xlog.c:11759 access/transam/xlogarchive.c:110 #: access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 #: commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 #: commands/tablespace.c:894 guc-file.l:1062 postmaster/pgarch.c:696 @@ -268,7 +268,7 @@ msgid "could not stat file \"%s\": %m" msgstr "kunde inte göra stat() på fil \"%s\": %m" #: ../common/file_utils.c:161 ../common/pgfnames.c:48 commands/tablespace.c:729 -#: commands/tablespace.c:739 postmaster/postmaster.c:1520 +#: commands/tablespace.c:739 postmaster/postmaster.c:1522 #: storage/file/fd.c:2723 storage/file/reinit.c:122 utils/adt/misc.c:263 #: utils/misc/tzparser.c:338 #, c-format @@ -282,7 +282,7 @@ msgstr "kunde inte läsa katalog \"%s\": %m" #: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 #: postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 -#: replication/slot.c:643 replication/slot.c:1490 replication/slot.c:1632 +#: replication/slot.c:672 replication/slot.c:1550 replication/slot.c:1699 #: storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" @@ -596,7 +596,7 @@ msgid "request for BRIN range summarization for index \"%s\" page %u was not rec msgstr "förfrågan efter BRIN-intervallsummering för index \"%s\" sida %u har inte spelats in" #: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 -#: access/transam/xlog.c:11138 access/transam/xlog.c:11675 +#: access/transam/xlog.c:11173 access/transam/xlog.c:11710 #: access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 #: access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 #: access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 @@ -791,7 +791,7 @@ msgstr "okänd parameternamnrymd \"%s\"" msgid "invalid option name \"%s\": must not contain \"=\"" msgstr "ogiltigt flaggnamn \"%s\": får inte innehålla \"=\"" -#: access/common/reloptions.c:1303 utils/misc/guc.c:12604 +#: access/common/reloptions.c:1303 utils/misc/guc.c:12615 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "tabeller deklarerade med WITH OIDS stöds inte" @@ -851,7 +851,7 @@ msgstr "komprimeringsmetod lz4 stöds ej" msgid "This functionality requires the server to be built with lz4 support." msgstr "Denna funktionalitet kräver att servern byggts med lz4-stöd." -#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1589 +#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1592 #: utils/adt/xml.c:234 #, c-format msgid "You need to rebuild PostgreSQL using %s." @@ -991,7 +991,7 @@ msgstr "kunde inte bestämma vilken jämförelse (collation) som skall användas #: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:714 #: catalog/heap.c:720 commands/createas.c:206 commands/createas.c:515 -#: commands/indexcmds.c:1971 commands/tablecmds.c:17198 commands/view.c:86 +#: commands/indexcmds.c:1971 commands/tablecmds.c:17208 commands/view.c:86 #: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1666 #: utils/adt/formatting.c:1790 utils/adt/formatting.c:1915 utils/adt/like.c:194 #: utils/adt/like_support.c:1004 utils/adt/varchar.c:733 @@ -1046,38 +1046,38 @@ msgstr "operatorfamilj \"%s\" för accessmetod %s saknar supportfunktion för op 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:2299 +#: access/heap/heapam.c:2302 #, c-format msgid "cannot insert tuples in a parallel worker" msgstr "kan inte lägga till tupler i en parellell arbetare" -#: access/heap/heapam.c:2770 +#: access/heap/heapam.c:2773 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "kan inte radera tupler under en parallell operation" -#: access/heap/heapam.c:2816 +#: access/heap/heapam.c:2819 #, c-format msgid "attempted to delete invisible tuple" msgstr "försökte ta bort en osynlig tuple" -#: access/heap/heapam.c:3262 access/heap/heapam.c:6529 access/index/genam.c:816 +#: access/heap/heapam.c:3265 access/heap/heapam.c:6617 access/index/genam.c:816 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "kan inte uppdatera tupler under en parallell operation" -#: access/heap/heapam.c:3449 +#: access/heap/heapam.c:3452 #, c-format msgid "attempted to update invisible tuple" msgstr "försökte uppdatera en osynlig tuple" -#: access/heap/heapam.c:4936 access/heap/heapam.c:4974 -#: access/heap/heapam.c:5239 access/heap/heapam_handler.c:457 +#: access/heap/heapam.c:4941 access/heap/heapam.c:4979 +#: access/heap/heapam.c:5246 access/heap/heapam_handler.c:457 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "kunde inte låsa rad i relationen \"%s\"" -#: access/heap/heapam.c:6342 commands/trigger.c:3152 +#: access/heap/heapam.c:6371 commands/trigger.c:3152 #: executor/nodeModifyTable.c:1988 executor/nodeModifyTable.c:2078 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" @@ -1100,12 +1100,12 @@ msgstr "kunde inte skriva till fil \"%s\", skrev %d av %d: %m." #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:481 -#: access/transam/xlog.c:3353 access/transam/xlog.c:3562 -#: access/transam/xlog.c:4784 access/transam/xlog.c:11484 -#: access/transam/xlog.c:11522 access/transam/xlog.c:11927 -#: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4634 -#: postmaster/postmaster.c:5673 replication/logical/origin.c:587 -#: replication/slot.c:1551 storage/file/copydir.c:167 storage/smgr/md.c:218 +#: access/transam/xlog.c:3354 access/transam/xlog.c:3563 +#: access/transam/xlog.c:4785 access/transam/xlog.c:11519 +#: access/transam/xlog.c:11557 access/transam/xlog.c:11962 +#: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4636 +#: postmaster/postmaster.c:5675 replication/logical/origin.c:587 +#: replication/slot.c:1611 storage/file/copydir.c:167 storage/smgr/md.c:218 #: utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -1118,11 +1118,11 @@ msgstr "kunde inte trunkera fil \"%s\" till %u: %m" #: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 #: access/transam/timeline.c:424 access/transam/timeline.c:498 -#: access/transam/xlog.c:3425 access/transam/xlog.c:3618 -#: access/transam/xlog.c:4796 postmaster/postmaster.c:4644 -#: postmaster/postmaster.c:4654 replication/logical/origin.c:599 +#: access/transam/xlog.c:3426 access/transam/xlog.c:3619 +#: access/transam/xlog.c:4797 postmaster/postmaster.c:4646 +#: postmaster/postmaster.c:4656 replication/logical/origin.c:599 #: replication/logical/origin.c:641 replication/logical/origin.c:660 -#: replication/logical/snapbuild.c:1797 replication/slot.c:1586 +#: replication/logical/snapbuild.c:1797 replication/slot.c:1647 #: storage/file/buffile.c:506 storage/file/copydir.c:207 #: utils/init/miscinit.c:1478 utils/init/miscinit.c:1489 #: utils/init/miscinit.c:1497 utils/misc/guc.c:8430 utils/misc/guc.c:8461 @@ -1134,10 +1134,10 @@ msgstr "kunde inte skriva till fil \"%s\": %m" #: access/heap/rewriteheap.c:1249 access/transam/twophase.c:1686 #: access/transam/xlogarchive.c:118 access/transam/xlogarchive.c:422 -#: postmaster/postmaster.c:1096 postmaster/syslogger.c:1465 +#: postmaster/postmaster.c:1098 postmaster/syslogger.c:1465 #: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 #: replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 -#: replication/slot.c:1683 storage/file/fd.c:785 storage/file/fd.c:3168 +#: replication/slot.c:1750 storage/file/fd.c:785 storage/file/fd.c:3168 #: storage/file/fd.c:3230 storage/file/reinit.c:250 storage/ipc/dsm.c:315 #: storage/smgr/md.c:347 storage/smgr/md.c:397 storage/sync/sync.c:250 #: utils/time/snapmgr.c:1606 @@ -1424,7 +1424,7 @@ msgstr "kan inte använda index \"%s\" som håller på att indexeras om" #: access/index/indexam.c:208 catalog/objectaddress.c:1355 #: commands/indexcmds.c:2833 commands/tablecmds.c:267 commands/tablecmds.c:291 -#: commands/tablecmds.c:16894 commands/tablecmds.c:18696 +#: commands/tablecmds.c:16894 commands/tablecmds.c:18710 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" är inte ett index" @@ -1470,17 +1470,17 @@ msgstr "index \"%s\" innehåller en halvdöd intern sida" msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it." msgstr "Detta kan ha orsakats av en avbruten VACUUM i version 9.3 eller äldre, innan uppdatering. Vänligen REINDEX:era det." -#: access/nbtree/nbtutils.c:2686 +#: access/nbtree/nbtutils.c:2685 #, c-format msgid "index row size %zu exceeds btree version %u maximum %zu for index \"%s\"" msgstr "indexradstorlek %zu överstiger btree version %u maximum %zu för index \"%s\"" -#: access/nbtree/nbtutils.c:2692 +#: access/nbtree/nbtutils.c:2691 #, c-format msgid "Index row references tuple (%u,%u) in relation \"%s\"." msgstr "Indexrad refererar tupel (%u,%u) i relation \"%s\"." -#: access/nbtree/nbtutils.c:2696 +#: access/nbtree/nbtutils.c:2695 #, c-format msgid "" "Values larger than 1/3 of a buffer page cannot be indexed.\n" @@ -1578,13 +1578,13 @@ msgstr "Se till att konfigurationsparametern \"%s\" är satt på primär-servern msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Se till att konfigurationsparametern \"%s\" är satt." -#: access/transam/multixact.c:1022 +#: access/transam/multixact.c:1106 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\"" msgstr "databasen tar inte emot kommandon som genererar nya MultiXactId:er för att förhinda dataförlust vid \"wraparound\" i databasen \"%s\"" -#: access/transam/multixact.c:1024 access/transam/multixact.c:1031 -#: access/transam/multixact.c:1055 access/transam/multixact.c:1064 +#: access/transam/multixact.c:1108 access/transam/multixact.c:1115 +#: access/transam/multixact.c:1139 access/transam/multixact.c:1148 #, c-format msgid "" "Execute a database-wide VACUUM in that database.\n" @@ -1593,65 +1593,70 @@ msgstr "" "Utför en databas-VACUUM i hela den databasen.\n" "Du kan också behöva commit:a eller rulla tillbaka gamla förberedda transaktioner eller slänga gamla replikeringsslottar." -#: access/transam/multixact.c:1029 +#: access/transam/multixact.c:1113 #, c-format 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:1050 access/transam/multixact.c:2334 +#: access/transam/multixact.c:1134 access/transam/multixact.c:2421 #, 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:1059 access/transam/multixact.c:2343 +#: access/transam/multixact.c:1143 access/transam/multixact.c:2430 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" msgstr[0] "databas med OID %u måste städas (vacuum) innan %u till MultiXactId används" msgstr[1] "databas med OID %u måste städas (vacuum) innan %u till MultiXactId:er används" -#: access/transam/multixact.c:1120 +#: access/transam/multixact.c:1207 #, c-format msgid "multixact \"members\" limit exceeded" msgstr "multixact \"members\"-gräns överskriden" -#: access/transam/multixact.c:1121 +#: access/transam/multixact.c:1208 #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." msgstr[0] "Detta kommando skapar en multixact med %u medlemmar, men återstående utrymmer räcker bara till %u medlem." msgstr[1] "Detta kommando skapar en multixact med %u medlemmar, men återstående utrymmer räcker bara till %u medlemmar." -#: access/transam/multixact.c:1126 +#: access/transam/multixact.c:1213 #, c-format msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Kör en hela-databas-VACUUM i databas med OID %u med reducerade iställningar vacuum_multixact_freeze_min_age och vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1157 +#: access/transam/multixact.c:1244 #, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" msgstr[0] "databas med OID %u måste städas innan %d mer multixact-medlem används" msgstr[1] "databas med OID %u måste städas innan %d fler multixact-medlemmar används" -#: access/transam/multixact.c:1162 +#: access/transam/multixact.c:1249 #, c-format msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "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:1301 +#: access/transam/multixact.c:1388 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u finns inte längre -- troligen en wraparound" -#: access/transam/multixact.c:1307 +#: access/transam/multixact.c:1394 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u har inte skapats än -- troligen en wraparound" -#: access/transam/multixact.c:2339 access/transam/multixact.c:2348 +#: access/transam/multixact.c:1469 +#, c-format +msgid "MultiXact %u has invalid next offset" +msgstr "MultiXact %u har ett ogiltigt offset till nästa" + +#: access/transam/multixact.c:2426 access/transam/multixact.c:2435 #: access/transam/varsup.c:151 access/transam/varsup.c:158 #: access/transam/varsup.c:466 access/transam/varsup.c:473 #, c-format @@ -1662,61 +1667,66 @@ msgstr "" "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 eller slänga gamla replikeringsslottar." -#: access/transam/multixact.c:2622 +#: access/transam/multixact.c:2709 #, 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:2644 +#: access/transam/multixact.c:2731 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "MultiXact-medlems wraparound-skydd är nu påslagen" -#: access/transam/multixact.c:3038 +#: access/transam/multixact.c:3125 #, 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:3056 +#: access/transam/multixact.c:3143 #, 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:3370 +#: access/transam/multixact.c:3160 +#, c-format +msgid "cannot truncate up to MultiXact %u because it has invalid offset, skipping truncation" +msgstr "kan inte trunkera upp till MultiXact %u eftersom den har ogitlig offset, skippar trunkering" + +#: access/transam/multixact.c:3498 #, c-format msgid "invalid MultiXactId: %u" msgstr "ogiltig MultiXactId: %u" -#: access/transam/parallel.c:737 access/transam/parallel.c:856 +#: access/transam/parallel.c:744 access/transam/parallel.c:863 #, c-format msgid "parallel worker failed to initialize" msgstr "parallell arbetare misslyckades med initiering" -#: access/transam/parallel.c:738 access/transam/parallel.c:857 +#: access/transam/parallel.c:745 access/transam/parallel.c:864 #, c-format msgid "More details may be available in the server log." msgstr "Fler detaljer kan finnas i serverloggen." -#: access/transam/parallel.c:918 +#: access/transam/parallel.c:925 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster avslutade under en parallell transaktion" -#: access/transam/parallel.c:1105 +#: access/transam/parallel.c:1112 #, c-format msgid "lost connection to parallel worker" msgstr "tappad kopplingen till parallell arbetare" -#: access/transam/parallel.c:1171 access/transam/parallel.c:1173 +#: access/transam/parallel.c:1178 access/transam/parallel.c:1180 msgid "parallel worker" msgstr "parallell arbetare" -#: access/transam/parallel.c:1326 +#: access/transam/parallel.c:1333 #, c-format msgid "could not map dynamic shared memory segment" msgstr "kunde inte skapa dynamiskt delat minnessegment: %m" -#: access/transam/parallel.c:1331 +#: access/transam/parallel.c:1338 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "ogiltigt magiskt nummer i dynamiskt delat minnessegment" @@ -1916,7 +1926,7 @@ msgstr "felaktig storlek lagrad i fil \"%s\"" msgid "calculated CRC checksum does not match value stored in file \"%s\"" msgstr "beräknad CRC-checksumma matchar inte värdet som är lagrat i filen \"%s\"" -#: access/transam/twophase.c:1400 access/transam/xlog.c:6721 +#: access/transam/twophase.c:1400 access/transam/xlog.c:6722 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "Misslyckades vid allokering av en WAL-läs-processor." @@ -2033,558 +2043,558 @@ msgstr "databas med OID %u måste städas (vacuum) inom %u transaktioner" 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:1584 +#: access/transam/xact.c:1594 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "maximalt antal commit:ade undertransaktioner (%d) överskridet" -#: access/transam/xact.c:2435 +#: access/transam/xact.c:2445 #, 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:2445 +#: access/transam/xact.c:2455 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "kan inte göra PREPARE på en transaktion som har exporterade snapshots" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3416 +#: access/transam/xact.c:3426 #, 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:3426 +#: access/transam/xact.c:3436 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s kan inte köras i en undertransaktion" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3436 +#: access/transam/xact.c:3446 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s kan inte köras inuti en pipeline" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3446 +#: access/transam/xact.c:3456 #, c-format msgid "%s cannot be executed from a function" msgstr "%s kan inte köras från en funktion" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3517 access/transam/xact.c:3832 -#: access/transam/xact.c:3911 access/transam/xact.c:4034 -#: access/transam/xact.c:4185 access/transam/xact.c:4254 -#: access/transam/xact.c:4365 +#: access/transam/xact.c:3527 access/transam/xact.c:3842 +#: access/transam/xact.c:3921 access/transam/xact.c:4044 +#: access/transam/xact.c:4195 access/transam/xact.c:4264 +#: access/transam/xact.c:4375 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s kan bara användas i transaktionsblock" -#: access/transam/xact.c:3718 +#: access/transam/xact.c:3728 #, c-format msgid "there is already a transaction in progress" msgstr "det är redan en transaktion igång" -#: access/transam/xact.c:3837 access/transam/xact.c:3916 -#: access/transam/xact.c:4039 +#: access/transam/xact.c:3847 access/transam/xact.c:3926 +#: access/transam/xact.c:4049 #, c-format msgid "there is no transaction in progress" msgstr "ingen transaktion pågår" -#: access/transam/xact.c:3927 +#: access/transam/xact.c:3937 #, c-format msgid "cannot commit during a parallel operation" msgstr "kan inte commit:a under en parallell operation" -#: access/transam/xact.c:4050 +#: access/transam/xact.c:4060 #, c-format msgid "cannot abort during a parallel operation" msgstr "can inte avbryta under en parallell operation" -#: access/transam/xact.c:4149 +#: access/transam/xact.c:4159 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "kan inte definiera sparpunkter under en parallell operation" -#: access/transam/xact.c:4236 +#: access/transam/xact.c:4246 #, 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:4246 access/transam/xact.c:4297 -#: access/transam/xact.c:4357 access/transam/xact.c:4406 +#: access/transam/xact.c:4256 access/transam/xact.c:4307 +#: access/transam/xact.c:4367 access/transam/xact.c:4416 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "sparpunkt \"%s\" existerar inte" -#: access/transam/xact.c:4303 access/transam/xact.c:4412 +#: access/transam/xact.c:4313 access/transam/xact.c:4422 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "sparpunkt \"%s\" finns inte inom aktuell sparpunktsnivå" -#: access/transam/xact.c:4345 +#: access/transam/xact.c:4355 #, 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:4473 +#: access/transam/xact.c:4483 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "kan inte starta subtransaktioner under en parallell operation" -#: access/transam/xact.c:4541 +#: access/transam/xact.c:4551 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "kan inte commit:a subtransaktioner undert en parallell operation" -#: access/transam/xact.c:5188 +#: access/transam/xact.c:5198 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "kan inte ha mer än 2^32-1 undertransaktioner i en transaktion" -#: access/transam/xlog.c:1850 +#: access/transam/xlog.c:1851 #, c-format msgid "request to flush past end of generated WAL; request %X/%X, current position %X/%X" msgstr "förfrågan att flush:a efter slutet av genererad WAL; efterfrågad %X/%X, aktuell position %X/%X" -#: access/transam/xlog.c:2621 +#: access/transam/xlog.c:2622 #, 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:4038 access/transam/xlogutils.c:798 -#: replication/walsender.c:2561 +#: access/transam/xlog.c:4039 access/transam/xlogutils.c:798 +#: replication/walsender.c:2575 #, 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:4314 +#: access/transam/xlog.c:4315 #, c-format msgid "could not rename file \"%s\": %m" msgstr "kunde inte byta namn på fil \"%s\": %m" -#: access/transam/xlog.c:4356 access/transam/xlog.c:4366 +#: access/transam/xlog.c:4357 access/transam/xlog.c:4367 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "krävd WAL-katalog \"%s\" finns inte" -#: access/transam/xlog.c:4372 +#: access/transam/xlog.c:4373 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "skapar saknad WAL-katalog \"%s\"" -#: access/transam/xlog.c:4375 commands/dbcommands.c:2295 +#: access/transam/xlog.c:4376 commands/dbcommands.c:2295 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "kunde inte skapa saknad katalog \"%s\": %m" -#: access/transam/xlog.c:4497 +#: access/transam/xlog.c:4498 #, 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:4635 +#: access/transam/xlog.c:4636 #, 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:4649 +#: access/transam/xlog.c:4650 #, 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:4668 +#: access/transam/xlog.c:4669 #, c-format msgid "new target timeline is %u" msgstr "ny måltidslinje är %u" -#: access/transam/xlog.c:4704 +#: access/transam/xlog.c:4705 #, c-format msgid "could not generate secret authorization token" msgstr "kunde inte generera hemligt auktorisationstoken" -#: access/transam/xlog.c:4863 access/transam/xlog.c:4872 -#: access/transam/xlog.c:4896 access/transam/xlog.c:4903 -#: access/transam/xlog.c:4910 access/transam/xlog.c:4915 -#: access/transam/xlog.c:4922 access/transam/xlog.c:4929 -#: access/transam/xlog.c:4936 access/transam/xlog.c:4943 -#: access/transam/xlog.c:4950 access/transam/xlog.c:4957 -#: access/transam/xlog.c:4966 access/transam/xlog.c:4973 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4897 access/transam/xlog.c:4904 +#: access/transam/xlog.c:4911 access/transam/xlog.c:4916 +#: access/transam/xlog.c:4923 access/transam/xlog.c:4930 +#: access/transam/xlog.c:4937 access/transam/xlog.c:4944 +#: access/transam/xlog.c:4951 access/transam/xlog.c:4958 +#: access/transam/xlog.c:4967 access/transam/xlog.c:4974 #: utils/init/miscinit.c:1635 #, c-format msgid "database files are incompatible with server" msgstr "databasfilerna är inkompatibla med servern" -#: access/transam/xlog.c:4864 +#: access/transam/xlog.c:4865 #, 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:4868 +#: access/transam/xlog.c:4869 #, 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:4873 +#: access/transam/xlog.c:4874 #, 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:4876 access/transam/xlog.c:4900 -#: access/transam/xlog.c:4907 access/transam/xlog.c:4912 +#: access/transam/xlog.c:4877 access/transam/xlog.c:4901 +#: access/transam/xlog.c:4908 access/transam/xlog.c:4913 #, c-format msgid "It looks like you need to initdb." msgstr "Du behöver troligen köra initdb." -#: access/transam/xlog.c:4887 +#: access/transam/xlog.c:4888 #, c-format msgid "incorrect checksum in control file" msgstr "ogiltig kontrollsumma kontrollfil" -#: access/transam/xlog.c:4897 +#: access/transam/xlog.c:4898 #, 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:4904 +#: access/transam/xlog.c:4905 #, 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:4911 +#: access/transam/xlog.c:4912 #, 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:4916 +#: access/transam/xlog.c:4917 #, 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:4919 access/transam/xlog.c:4926 -#: access/transam/xlog.c:4933 access/transam/xlog.c:4940 -#: access/transam/xlog.c:4947 access/transam/xlog.c:4954 -#: access/transam/xlog.c:4961 access/transam/xlog.c:4969 -#: access/transam/xlog.c:4976 +#: access/transam/xlog.c:4920 access/transam/xlog.c:4927 +#: access/transam/xlog.c:4934 access/transam/xlog.c:4941 +#: access/transam/xlog.c:4948 access/transam/xlog.c:4955 +#: access/transam/xlog.c:4962 access/transam/xlog.c:4970 +#: access/transam/xlog.c:4977 #, 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:4923 +#: access/transam/xlog.c:4924 #, 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:4930 +#: access/transam/xlog.c:4931 #, 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:4937 +#: access/transam/xlog.c:4938 #, 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:4944 +#: access/transam/xlog.c:4945 #, 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:4951 +#: access/transam/xlog.c:4952 #, 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:4958 +#: access/transam/xlog.c:4959 #, 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:4967 +#: access/transam/xlog.c:4968 #, 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:4974 +#: access/transam/xlog.c:4975 #, 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:4983 +#: access/transam/xlog.c:4984 #, c-format msgid "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d byte" msgid_plural "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d bytes" msgstr[0] "WAL-segmentstorlek måste vara en tvåpotens mellan 1MB och 1GB men kontrollfilen anger %d byte" msgstr[1] "WAL-segmentstorlek måste vara en tvåpotens mellan 1MB och 1GB men kontrollfilen anger %d byte" -#: access/transam/xlog.c:4995 +#: access/transam/xlog.c:4996 #, c-format msgid "\"min_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"min_wal_size\" måste vara minst dubbla \"wal_segment_size\"" -#: access/transam/xlog.c:4999 +#: access/transam/xlog.c:5000 #, c-format msgid "\"max_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"max_wal_size\" måste vara minst dubbla \"wal_segment_size\"" -#: access/transam/xlog.c:5437 +#: access/transam/xlog.c:5438 #, 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:5445 +#: access/transam/xlog.c:5446 #, 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:5451 +#: access/transam/xlog.c:5452 #, 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:5512 +#: access/transam/xlog.c:5513 #, c-format msgid "using recovery command file \"%s\" is not supported" msgstr "använda återställningskommandofil \"%s\" stöds inte" -#: access/transam/xlog.c:5577 +#: access/transam/xlog.c:5578 #, 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:5594 +#: access/transam/xlog.c:5595 #, c-format msgid "specified neither primary_conninfo nor restore_command" msgstr "angav varken primary_conninfo eller restore_command" -#: access/transam/xlog.c:5595 +#: access/transam/xlog.c:5596 #, 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:5603 +#: access/transam/xlog.c:5604 #, c-format msgid "must specify restore_command when standby mode is not enabled" msgstr "måste ange restore_command när standby-läge inte är påslaget" -#: access/transam/xlog.c:5641 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery target timeline %u does not exist" msgstr "återställningsmåltidslinje %u finns inte" -#: access/transam/xlog.c:5762 +#: access/transam/xlog.c:5763 #, c-format msgid "archive recovery complete" msgstr "arkivåterställning klar" -#: access/transam/xlog.c:5828 access/transam/xlog.c:6104 +#: access/transam/xlog.c:5829 access/transam/xlog.c:6105 #, c-format msgid "recovery stopping after reaching consistency" msgstr "återställning stoppad efter att ha uppnått konsistens" -#: access/transam/xlog.c:5849 +#: access/transam/xlog.c:5850 #, 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:5939 +#: access/transam/xlog.c:5940 #, 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:5946 +#: access/transam/xlog.c:5947 #, 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:5999 +#: access/transam/xlog.c:6000 #, 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:6017 +#: access/transam/xlog.c:6018 #, 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:6084 +#: access/transam/xlog.c:6085 #, 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:6092 +#: access/transam/xlog.c:6093 #, 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:6137 +#: access/transam/xlog.c:6138 #, c-format msgid "pausing at the end of recovery" msgstr "pausar vid slutet av återställning" -#: access/transam/xlog.c:6138 +#: access/transam/xlog.c:6139 #, c-format msgid "Execute pg_wal_replay_resume() to promote." msgstr "Kör pg_wal_replay_resume() för att befordra." -#: access/transam/xlog.c:6141 access/transam/xlog.c:6423 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6424 #, c-format msgid "recovery has paused" msgstr "återställning har pausats" -#: access/transam/xlog.c:6142 +#: access/transam/xlog.c:6143 #, 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:6414 +#: access/transam/xlog.c:6415 #, c-format msgid "hot standby is not possible because of insufficient parameter settings" msgstr "hot standby är inte möjligt på grund av otillräckliga parameterinställningar" -#: access/transam/xlog.c:6415 access/transam/xlog.c:6442 -#: access/transam/xlog.c:6472 +#: access/transam/xlog.c:6416 access/transam/xlog.c:6443 +#: access/transam/xlog.c:6473 #, c-format msgid "%s = %d is a lower setting than on the primary server, where its value was %d." msgstr "%s = %d har ett lägre värde än på primärservern där värdet var %d." -#: access/transam/xlog.c:6424 +#: access/transam/xlog.c:6425 #, c-format msgid "If recovery is unpaused, the server will shut down." msgstr "Om återställning avpausas så kommer servern stänga ner." -#: access/transam/xlog.c:6425 +#: access/transam/xlog.c:6426 #, c-format msgid "You can then restart the server after making the necessary configuration changes." msgstr "Du kan då återstarta servern efter att ha gjort de nödvändiga konfigurationsändringarna." -#: access/transam/xlog.c:6436 +#: access/transam/xlog.c:6437 #, c-format msgid "promotion is not possible because of insufficient parameter settings" msgstr "befordran är inte möjligt på grund av otillräckliga parameterinställningar" -#: access/transam/xlog.c:6446 +#: access/transam/xlog.c:6447 #, c-format msgid "Restart the server after making the necessary configuration changes." msgstr "Starta om servern efter att ha gjort de nödvändiga konfigurationsändringarna." -#: access/transam/xlog.c:6470 +#: access/transam/xlog.c:6471 #, c-format msgid "recovery aborted because of insufficient parameter settings" msgstr "återställning avbruten på grund av otillräckliga parametervärden" -#: access/transam/xlog.c:6476 +#: access/transam/xlog.c:6477 #, c-format msgid "You can restart the server after making the necessary configuration changes." msgstr "Du kan starta om servern efter att du gjort de nödvändiga konfigurationsändringarna." -#: access/transam/xlog.c:6498 +#: access/transam/xlog.c:6499 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "WAL genererades med wal_level=minimal, kan inte fortsätta återställande" -#: access/transam/xlog.c:6499 +#: access/transam/xlog.c:6500 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "Detta händer om du temporärt sätter wal_level=minimal på servern." -#: access/transam/xlog.c:6500 +#: access/transam/xlog.c:6501 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "Använd en backup som är tagen efter att inställningen wal_level satts till ett högre värde än minimal." -#: access/transam/xlog.c:6569 +#: access/transam/xlog.c:6570 #, c-format msgid "control file contains invalid checkpoint location" msgstr "kontrollfil innehåller ogiltig checkpoint-position" -#: access/transam/xlog.c:6580 +#: access/transam/xlog.c:6581 #, c-format msgid "database system was shut down at %s" msgstr "databassystemet stängdes ner vid %s" -#: access/transam/xlog.c:6586 +#: access/transam/xlog.c:6587 #, 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:6592 +#: access/transam/xlog.c:6593 #, 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:6598 +#: access/transam/xlog.c:6599 #, 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:6600 +#: access/transam/xlog.c:6601 #, 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:6606 +#: access/transam/xlog.c:6607 #, 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:6608 +#: access/transam/xlog.c:6609 #, 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:6614 +#: access/transam/xlog.c:6615 #, 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:6620 +#: access/transam/xlog.c:6621 #, c-format msgid "control file contains invalid database cluster state" msgstr "kontrollfil innehåller ogiltigt databasklustertillstånd" -#: access/transam/xlog.c:6677 +#: access/transam/xlog.c:6678 #, c-format msgid "entering standby mode" msgstr "går in i standby-läge" -#: access/transam/xlog.c:6680 +#: access/transam/xlog.c:6681 #, 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:6684 +#: access/transam/xlog.c:6685 #, c-format msgid "starting point-in-time recovery to %s" msgstr "startar point-in-time-återställning till %s" -#: access/transam/xlog.c:6688 +#: access/transam/xlog.c:6689 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "startar point-in-time-återställning till \"%s\"" -#: access/transam/xlog.c:6692 +#: access/transam/xlog.c:6693 #, 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:6696 +#: access/transam/xlog.c:6697 #, 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:6699 +#: access/transam/xlog.c:6700 #, c-format msgid "starting archive recovery" msgstr "Startar arkivåterställning" -#: access/transam/xlog.c:6773 +#: access/transam/xlog.c:6774 #, 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:6774 access/transam/xlog.c:6784 +#: access/transam/xlog.c:6775 access/transam/xlog.c:6785 #, c-format msgid "" "If you are restoring from a backup, touch \"%s/recovery.signal\" and add required recovery options.\n" @@ -2596,300 +2606,305 @@ msgstr "" "bort filen \"%s/backup_label\". Var försiktig: borttagning av \"%s/backup_label\"\n" "kommer resultera i ett trasigt kluster om du återställer från en backup." -#: access/transam/xlog.c:6783 +#: access/transam/xlog.c:6784 #, c-format msgid "could not locate required checkpoint record" msgstr "kunde inte hitta den checkpoint-post som krävs" -#: access/transam/xlog.c:6812 commands/tablespace.c:665 +#: access/transam/xlog.c:6813 commands/tablespace.c:665 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "kan inte skapa symbolisk länk \"%s\": %m" -#: access/transam/xlog.c:6844 access/transam/xlog.c:6850 +#: access/transam/xlog.c:6845 access/transam/xlog.c:6851 #, 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:6846 access/transam/xlog.c:12460 +#: access/transam/xlog.c:6847 access/transam/xlog.c:12495 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Filen \"%s\" döptes om till \"%s\"." -#: access/transam/xlog.c:6852 +#: access/transam/xlog.c:6853 #, 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:6903 +#: access/transam/xlog.c:6904 #, c-format msgid "could not locate a valid checkpoint record" msgstr "kunde inte hitta en giltig checkpoint-post" -#: access/transam/xlog.c:6941 +#: access/transam/xlog.c:6915 +#, c-format +msgid "could not find redo location %X/%08X referenced by checkpoint record at %X/%08X" +msgstr "kunde inte hitta redo-position %X/%08X refererad av checkpoint-post vid %X/%08X" + +#: access/transam/xlog.c:6952 #, 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:6943 +#: access/transam/xlog.c:6954 #, 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:6957 +#: access/transam/xlog.c:6968 #, 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:6987 +#: access/transam/xlog.c:6998 #, c-format msgid "invalid next transaction ID" msgstr "nästa transaktions-ID ogiltig" -#: access/transam/xlog.c:7087 +#: access/transam/xlog.c:7098 #, c-format msgid "invalid redo in checkpoint record" msgstr "ogiltig redo i checkpoint-post" -#: access/transam/xlog.c:7098 +#: access/transam/xlog.c:7109 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ogiltig redo-post i nedstängnings-checkpoint" -#: access/transam/xlog.c:7138 +#: access/transam/xlog.c:7149 #, 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:7142 +#: access/transam/xlog.c:7153 #, 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:7189 +#: access/transam/xlog.c:7200 #, 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:7190 +#: access/transam/xlog.c:7201 #, 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:7417 +#: access/transam/xlog.c:7428 #, c-format msgid "redo starts at %X/%X" msgstr "redo startar vid %X/%X" -#: access/transam/xlog.c:7642 +#: access/transam/xlog.c:7653 #, 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:7680 +#: access/transam/xlog.c:7691 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "redo gjord vid %X/%X systemanvändning: %s" -#: access/transam/xlog.c:7686 +#: access/transam/xlog.c:7697 #, c-format msgid "last completed transaction was at log time %s" msgstr "senaste kompletta transaktionen var vid loggtid %s" -#: access/transam/xlog.c:7695 +#: access/transam/xlog.c:7706 #, c-format msgid "redo is not required" msgstr "redo behövs inte" -#: access/transam/xlog.c:7707 +#: access/transam/xlog.c:7718 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "återställning avslutades innan det konfigurerade återställningsmålet nåddes" -#: access/transam/xlog.c:7791 access/transam/xlog.c:7795 +#: access/transam/xlog.c:7802 access/transam/xlog.c:7806 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL slutar före sluttiden av online-backup:en" -#: access/transam/xlog.c:7792 +#: access/transam/xlog.c:7803 #, 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:7796 +#: access/transam/xlog.c:7807 #, 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:7799 +#: access/transam/xlog.c:7810 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL avslutas innan konstistent återställningspunkt" -#: access/transam/xlog.c:7842 +#: access/transam/xlog.c:7853 #, c-format msgid "selected new timeline ID: %u" msgstr "valt nytt tidslinje-ID: %u" -#: access/transam/xlog.c:8310 +#: access/transam/xlog.c:8321 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "Oväntat katalogpost \"%s\" hittades i %s" -#: access/transam/xlog.c:8312 +#: access/transam/xlog.c:8323 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "Alla katalogposter i pg_tblspc/ skall vara symboliska länkar" -#: access/transam/xlog.c:8313 +#: access/transam/xlog.c:8324 #, c-format msgid "Remove those directories, or set allow_in_place_tablespaces to ON transiently to let recovery complete." msgstr "Ta bort dessa kataloger eller sätt allow_in_place_tablespaces temporärt till ON och låt återställningen gå klart." -#: access/transam/xlog.c:8397 +#: access/transam/xlog.c:8408 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "konsistent återställningstillstånd uppnått vid %X/%X" -#: access/transam/xlog.c:8606 +#: access/transam/xlog.c:8617 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "ogiltig primär checkpoint-länk i kontrollfil" -#: access/transam/xlog.c:8610 +#: access/transam/xlog.c:8621 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "ogiltig checkpoint-länk i \"backup_label\"-fil" -#: access/transam/xlog.c:8628 +#: access/transam/xlog.c:8639 #, c-format msgid "invalid primary checkpoint record" msgstr "ogiltig primär checkpoint-post" -#: access/transam/xlog.c:8632 +#: access/transam/xlog.c:8643 #, c-format msgid "invalid checkpoint record" msgstr "ogiltig checkpoint-post" -#: access/transam/xlog.c:8643 +#: access/transam/xlog.c:8654 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "ogiltig resurshanterar-ID i primär checkpoint-post" -#: access/transam/xlog.c:8647 +#: access/transam/xlog.c:8658 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "ogiltig resurshanterar-ID i checkpoint-post" -#: access/transam/xlog.c:8660 +#: access/transam/xlog.c:8671 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "ogiltig xl_info i primär checkpoint-post" -#: access/transam/xlog.c:8664 +#: access/transam/xlog.c:8675 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "ogiltig xl_info i checkpoint-post" -#: access/transam/xlog.c:8675 +#: access/transam/xlog.c:8686 #, c-format msgid "invalid length of primary checkpoint record" msgstr "ogiltig längd i primär checkpoint-post" -#: access/transam/xlog.c:8679 +#: access/transam/xlog.c:8690 #, c-format msgid "invalid length of checkpoint record" msgstr "ogiltig längd på checkpoint-post" -#: access/transam/xlog.c:8860 +#: access/transam/xlog.c:8871 #, c-format msgid "shutting down" msgstr "stänger ner" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8899 +#: access/transam/xlog.c:8910 #, c-format msgid "restartpoint starting:%s%s%s%s%s%s%s%s" msgstr "restartpoint startar:%s%s%s%s%s%s%s%s" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8911 +#: access/transam/xlog.c:8922 #, c-format msgid "checkpoint starting:%s%s%s%s%s%s%s%s" msgstr "checkpoint startar:%s%s%s%s%s%s%s%s" -#: access/transam/xlog.c:8971 +#: access/transam/xlog.c:8982 #, c-format msgid "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "restartpoint klar: skrev %d buffers (%.1f%%); %d WAL-fil(er) tillagda, %d borttagna, %d recyclade; skriv=%ld.%03d s, synk=%ld.%03d s, totalt=%ld.%03d s; synk-filer=%d, längsta=%ld.%03d s, genomsnitt=%ld.%03d s; distans=%d kB, estimat=%d kB" -#: access/transam/xlog.c:8991 +#: access/transam/xlog.c:9002 #, c-format msgid "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "checkpoint klar: skrev %d buffers (%.1f%%); %d WAL-fil(er) tillagda, %d borttagna, %d recyclade; skriv=%ld.%03d s, synk=%ld.%03d s, totalt=%ld.%03d s; synk-filer=%d, längsta=%ld.%03d s, genomsnitt=%ld.%03d s; distans=%d kB, estimat=%d kB" -#: access/transam/xlog.c:9452 +#: access/transam/xlog.c:9473 #, 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:10011 +#: access/transam/xlog.c:10046 #, c-format msgid "recovery restart point at %X/%X" msgstr "återställningens omstartspunkt vid %X/%X" -#: access/transam/xlog.c:10013 +#: access/transam/xlog.c:10048 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Senaste kompletta transaktionen var vid loggtid %s" -#: access/transam/xlog.c:10261 +#: access/transam/xlog.c:10296 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "återställningspunkt \"%s\" skapad vid %X/%X" -#: access/transam/xlog.c:10406 +#: access/transam/xlog.c:10441 #, 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:10415 +#: access/transam/xlog.c:10450 #, 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:10431 +#: access/transam/xlog.c:10466 #, 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:10506 +#: access/transam/xlog.c:10541 #, 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:10563 access/transam/xlog.c:10619 -#: access/transam/xlog.c:10649 +#: access/transam/xlog.c:10598 access/transam/xlog.c:10654 +#: access/transam/xlog.c:10684 #, 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:10807 +#: access/transam/xlog.c:10842 #, 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:11022 +#: access/transam/xlog.c:11057 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "kunde inte fsync:a skriv-igenom-loggfil \"%s\": %m" -#: access/transam/xlog.c:11028 +#: access/transam/xlog.c:11063 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "kunde inte fdatasync:a fil \"%s\": %m" -#: access/transam/xlog.c:11139 access/transam/xlog.c:11676 +#: access/transam/xlog.c:11174 access/transam/xlog.c:11711 #: access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 #: access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 #: access/transam/xlogfuncs.c:383 @@ -2897,186 +2912,186 @@ msgstr "kunde inte fdatasync:a fil \"%s\": %m" msgid "WAL control functions cannot be executed during recovery." msgstr "WAL-kontrollfunktioner kan inte köras under återställning." -#: access/transam/xlog.c:11148 access/transam/xlog.c:11685 +#: access/transam/xlog.c:11183 access/transam/xlog.c:11720 #, 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:11149 access/transam/xlog.c:11686 +#: access/transam/xlog.c:11184 access/transam/xlog.c:11721 #: access/transam/xlogfuncs.c:308 #, 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:11154 +#: access/transam/xlog.c:11189 #, c-format msgid "backup label too long (max %d bytes)" msgstr "backup-etikett för lång (max %d byte)" -#: access/transam/xlog.c:11191 access/transam/xlog.c:11475 -#: access/transam/xlog.c:11513 +#: access/transam/xlog.c:11226 access/transam/xlog.c:11510 +#: access/transam/xlog.c:11548 #, c-format msgid "a backup is already in progress" msgstr "en backup är redan på gång" -#: access/transam/xlog.c:11192 +#: access/transam/xlog.c:11227 #, 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:11288 +#: access/transam/xlog.c:11323 #, 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:11290 access/transam/xlog.c:11881 +#: access/transam/xlog.c:11325 access/transam/xlog.c:11916 #, 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 primary, 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å primären och försök sedan ta en ny online-backup igen." -#: access/transam/xlog.c:11374 replication/basebackup.c:1433 +#: access/transam/xlog.c:11409 replication/basebackup.c:1433 #: utils/adt/misc.c:367 #, 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:11424 commands/tablespace.c:385 +#: access/transam/xlog.c:11459 commands/tablespace.c:385 #: commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 #, c-format msgid "tablespaces are not supported on this platform" msgstr "tabellutrymmen stöds inte på denna plattform" -#: access/transam/xlog.c:11476 access/transam/xlog.c:11514 +#: access/transam/xlog.c:11511 access/transam/xlog.c:11549 #, 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:11701 +#: access/transam/xlog.c:11736 #, c-format msgid "exclusive backup not in progress" msgstr "exklusiv backup är inte på gång" -#: access/transam/xlog.c:11728 +#: access/transam/xlog.c:11763 #, c-format msgid "a backup is not in progress" msgstr "ingen backup är på gång" -#: access/transam/xlog.c:11814 access/transam/xlog.c:11827 -#: access/transam/xlog.c:12218 access/transam/xlog.c:12224 -#: access/transam/xlog.c:12272 access/transam/xlog.c:12352 -#: access/transam/xlog.c:12376 access/transam/xlogfuncs.c:733 +#: access/transam/xlog.c:11849 access/transam/xlog.c:11862 +#: access/transam/xlog.c:12253 access/transam/xlog.c:12259 +#: access/transam/xlog.c:12307 access/transam/xlog.c:12387 +#: access/transam/xlog.c:12411 access/transam/xlogfuncs.c:733 #, c-format msgid "invalid data in file \"%s\"" msgstr "felaktig data i fil \"%s\"" -#: access/transam/xlog.c:11831 replication/basebackup.c:1287 +#: access/transam/xlog.c:11866 replication/basebackup.c:1287 #, c-format msgid "the standby was promoted during online backup" msgstr "standby:en befordrades under online-backup" -#: access/transam/xlog.c:11832 replication/basebackup.c:1288 +#: access/transam/xlog.c:11867 replication/basebackup.c:1288 #, 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:11879 +#: access/transam/xlog.c:11914 #, 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:11999 +#: access/transam/xlog.c:12034 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "base_backup klar, väntar på att de WAL-segment som krävs blir arkiverade" -#: access/transam/xlog.c:12011 +#: access/transam/xlog.c:12046 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "väntar fortfarande på att alla krävda WAL-segments skall bli arkiverade (%d sekunder har gått)" -#: access/transam/xlog.c:12013 +#: access/transam/xlog.c:12048 #, c-format msgid "Check that your archive_command is executing properly. You can safely cancel this backup, but the database backup will not be usable without all the WAL segments." msgstr "Kontrollera att ditt archive_command kör som det skall. Du kan avbryta denna backup på ett säkert sätt men databasbackup:en kommer inte vara användbart utan att alla WAL-segment finns." -#: access/transam/xlog.c:12020 +#: access/transam/xlog.c:12055 #, c-format msgid "all required WAL segments have been archived" msgstr "alla krävda WAL-segments har arkiverats" -#: access/transam/xlog.c:12024 +#: access/transam/xlog.c:12059 #, 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" -#: access/transam/xlog.c:12079 +#: access/transam/xlog.c:12114 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "avbryter backup på grund av att backend:en stoppades innan pg_stop_backup anropades" -#: access/transam/xlog.c:12273 +#: access/transam/xlog.c:12308 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "Parsad tidslinje-ID är %u men förväntade sig %u." #. translator: %s is a WAL record description -#: access/transam/xlog.c:12401 +#: access/transam/xlog.c:12436 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "WAL-redo vid %X/%X för %s" -#: access/transam/xlog.c:12449 +#: access/transam/xlog.c:12484 #, c-format msgid "online backup mode was not canceled" msgstr "online backupläge har ej avbrutits" -#: access/transam/xlog.c:12450 +#: access/transam/xlog.c:12485 #, 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:12459 access/transam/xlog.c:12471 -#: access/transam/xlog.c:12481 +#: access/transam/xlog.c:12494 access/transam/xlog.c:12506 +#: access/transam/xlog.c:12516 #, c-format msgid "online backup mode canceled" msgstr "online backupläge avbrutet" -#: access/transam/xlog.c:12472 +#: access/transam/xlog.c:12507 #, 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:12482 +#: access/transam/xlog.c:12517 #, 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:12615 access/transam/xlogutils.c:967 +#: access/transam/xlog.c:12650 access/transam/xlogutils.c:967 #, 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:12621 access/transam/xlogutils.c:974 +#: access/transam/xlog.c:12656 access/transam/xlogutils.c:974 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "kunde inte läsa från loggsegment %s, offset %u, läste %d av %zu" -#: access/transam/xlog.c:13188 +#: access/transam/xlog.c:13233 #, c-format msgid "WAL receiver process shutdown requested" msgstr "nedstängning av WAL-mottagarprocess efterfrågad" -#: access/transam/xlog.c:13294 +#: access/transam/xlog.c:13345 #, c-format msgid "received promote request" msgstr "tog emot förfrågan om befordran" -#: access/transam/xlog.c:13307 +#: access/transam/xlog.c:13358 #, c-format msgid "promote trigger file found: %s" msgstr "triggerfil för befordring hittad: %s" -#: access/transam/xlog.c:13315 +#: access/transam/xlog.c:13366 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "kunde inte göra stat() på triggerfil för befordring \"%s\": %m" @@ -3140,7 +3155,7 @@ msgstr "Menade du att använda pg_stop_backup('f')?" #: executor/execExpr.c:2518 executor/execSRF.c:738 executor/functions.c:1074 #: foreign/foreign.c:530 libpq/hba.c:2726 replication/logical/launcher.c:937 #: replication/logical/logicalfuncs.c:157 replication/logical/origin.c:1494 -#: replication/slotfuncs.c:255 replication/walsender.c:3332 +#: replication/slotfuncs.c:255 replication/walsender.c:3346 #: storage/ipc/shmem.c:554 utils/adt/datetime.c:4812 utils/adt/genfile.c:507 #: utils/adt/genfile.c:590 utils/adt/jsonfuncs.c:1944 #: utils/adt/jsonfuncs.c:2056 utils/adt/jsonfuncs.c:2244 @@ -3158,7 +3173,7 @@ msgstr "en funktion som returnerar en mängd anropades i kontext som inte godtar #: commands/extension.c:2078 commands/extension.c:2363 commands/prepare.c:717 #: foreign/foreign.c:535 libpq/hba.c:2730 replication/logical/launcher.c:941 #: replication/logical/logicalfuncs.c:161 replication/logical/origin.c:1498 -#: replication/slotfuncs.c:259 replication/walsender.c:3336 +#: replication/slotfuncs.c:259 replication/walsender.c:3350 #: storage/ipc/shmem.c:558 utils/adt/datetime.c:4816 utils/adt/genfile.c:511 #: utils/adt/genfile.c:594 utils/adt/mcxtfuncs.c:136 utils/adt/misc.c:223 #: utils/adt/pgstatfuncs.c:481 utils/adt/pgstatfuncs.c:591 @@ -3524,10 +3539,10 @@ msgid "large object %u does not exist" msgstr "stort objekt %u existerar inte" #: catalog/aclchk.c:927 catalog/aclchk.c:936 commands/collationcmds.c:119 -#: commands/copy.c:365 commands/copy.c:385 commands/copy.c:395 -#: commands/copy.c:404 commands/copy.c:413 commands/copy.c:423 -#: commands/copy.c:432 commands/copy.c:441 commands/copy.c:459 -#: commands/copy.c:475 commands/copy.c:495 commands/copy.c:512 +#: commands/copy.c:402 commands/copy.c:422 commands/copy.c:432 +#: commands/copy.c:441 commands/copy.c:450 commands/copy.c:460 +#: commands/copy.c:469 commands/copy.c:478 commands/copy.c:496 +#: commands/copy.c:512 commands/copy.c:532 commands/copy.c:549 #: commands/dbcommands.c:158 commands/dbcommands.c:167 #: commands/dbcommands.c:176 commands/dbcommands.c:185 #: commands/dbcommands.c:194 commands/dbcommands.c:203 @@ -3542,7 +3557,7 @@ msgstr "stort objekt %u existerar inte" #: commands/functioncmds.c:772 commands/functioncmds.c:781 #: commands/functioncmds.c:790 commands/functioncmds.c:799 #: commands/functioncmds.c:2097 commands/functioncmds.c:2105 -#: commands/publicationcmds.c:87 commands/publicationcmds.c:130 +#: commands/publicationcmds.c:87 commands/publicationcmds.c:135 #: 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/sequence.c:1354 @@ -3563,9 +3578,9 @@ msgstr "stort objekt %u existerar inte" #: commands/user.c:638 commands/user.c:647 commands/user.c:655 #: commands/user.c:663 parser/parse_utilcmd.c:402 #: replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 -#: replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 -#: replication/pgoutput/pgoutput.c:254 replication/walsender.c:883 -#: replication/walsender.c:894 replication/walsender.c:904 +#: replication/pgoutput/pgoutput.c:238 replication/pgoutput/pgoutput.c:248 +#: replication/pgoutput/pgoutput.c:258 replication/walsender.c:897 +#: replication/walsender.c:908 replication/walsender.c:918 #, c-format msgid "conflicting or redundant options" msgstr "motstridiga eller redundanta inställningar" @@ -3581,7 +3596,7 @@ 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:1545 catalog/catalog.c:587 catalog/objectaddress.c:1522 -#: commands/analyze.c:390 commands/copy.c:744 commands/sequence.c:1709 +#: commands/analyze.c:390 commands/copy.c:781 commands/sequence.c:1709 #: commands/tablecmds.c:7180 commands/tablecmds.c:7336 #: commands/tablecmds.c:7386 commands/tablecmds.c:7460 #: commands/tablecmds.c:7530 commands/tablecmds.c:7642 @@ -4087,7 +4102,7 @@ msgstr "konvertering med OID %u existerar inte" msgid "extension with OID %u does not exist" msgstr "utökning med OID %u existerar inte" -#: catalog/aclchk.c:5379 commands/publicationcmds.c:818 +#: catalog/aclchk.c:5379 commands/publicationcmds.c:823 #, c-format msgid "publication with OID %u does not exist" msgstr "publicering med OID %u existerar inte" @@ -4194,11 +4209,12 @@ msgstr "kan inte ta bort %s eftersom andra objekt beror på den" #: catalog/dependency.c:1204 catalog/dependency.c:1211 #: catalog/dependency.c:1223 commands/tablecmds.c:1301 #: commands/tablecmds.c:14064 commands/tablespace.c:464 commands/user.c:1095 -#: commands/view.c:506 libpq/auth.c:346 replication/syncrep.c:1110 -#: storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1447 utils/misc/guc.c:7140 -#: utils/misc/guc.c:7176 utils/misc/guc.c:7246 utils/misc/guc.c:11490 -#: utils/misc/guc.c:11524 utils/misc/guc.c:11558 utils/misc/guc.c:11601 -#: utils/misc/guc.c:11643 +#: commands/view.c:506 libpq/auth.c:346 replication/slot.c:181 +#: replication/syncrep.c:1110 storage/lmgr/deadlock.c:1151 +#: storage/lmgr/proc.c:1447 utils/misc/guc.c:7140 utils/misc/guc.c:7176 +#: utils/misc/guc.c:7246 utils/misc/guc.c:11490 utils/misc/guc.c:11524 +#: utils/misc/guc.c:11558 utils/misc/guc.c:11601 utils/misc/guc.c:11643 +#: utils/misc/guc.c:12599 utils/misc/guc.c:12601 #, c-format msgid "%s" msgstr "%s" @@ -4364,14 +4380,14 @@ msgstr "Detta skulle leda till att den genererade kolumnen beror på sitt eget v msgid "generation expression is not immutable" msgstr "genereringsuttryck är inte immutable" -#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1285 +#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1288 #, 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:3202 commands/prepare.c:368 parser/analyze.c:2695 #: parser/parse_target.c:594 parser/parse_target.c:891 -#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1290 +#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1293 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Du måste skriva om eller typomvandla uttrycket." @@ -4462,28 +4478,28 @@ msgstr "pg_class index OID-värde är inte satt i binärt uppgraderingsläge" msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY måste vara första operationen i transaktion" -#: catalog/index.c:3653 +#: catalog/index.c:3660 #, 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:3664 commands/indexcmds.c:3589 +#: catalog/index.c:3671 commands/indexcmds.c:3589 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "kan inte omindexera angivet index i TOAST-tabell" -#: catalog/index.c:3680 commands/indexcmds.c:3469 commands/indexcmds.c:3613 +#: catalog/index.c:3687 commands/indexcmds.c:3469 commands/indexcmds.c:3613 #: commands/tablecmds.c:3282 #, c-format msgid "cannot move system relation \"%s\"" msgstr "kan inte flytta systemrelation \"%s\"" -#: catalog/index.c:3824 +#: catalog/index.c:3831 #, c-format msgid "index \"%s\" was reindexed" msgstr "index \"%s\" omindexerades" -#: catalog/index.c:3961 +#: catalog/index.c:3968 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "kan inte omindexera ogiltigt index \"%s.%s\" på TOAST-tabell, hoppar över" @@ -4520,7 +4536,7 @@ msgstr "relationen \"%s.%s\" existerar inte" msgid "relation \"%s\" does not exist" msgstr "relationen \"%s\" existerar inte" -#: catalog/namespace.c:501 catalog/namespace.c:3076 commands/extension.c:1541 +#: catalog/namespace.c:501 catalog/namespace.c:3079 commands/extension.c:1541 #: commands/extension.c:1547 #, c-format msgid "no schema has been selected to create in" @@ -4546,85 +4562,85 @@ msgstr "bara temporära relationer får skapas i temporära scheman" msgid "statistics object \"%s\" does not exist" msgstr "statistikobjektet \"%s\" existerar inte" -#: catalog/namespace.c:2391 +#: catalog/namespace.c:2394 #, c-format msgid "text search parser \"%s\" does not exist" msgstr "textsökparser \"%s\" finns inte" -#: catalog/namespace.c:2517 +#: catalog/namespace.c:2520 #, c-format msgid "text search dictionary \"%s\" does not exist" msgstr "textsökkatalog \"%s\" finns inte" -#: catalog/namespace.c:2644 +#: catalog/namespace.c:2647 #, c-format msgid "text search template \"%s\" does not exist" msgstr "textsökmall \"%s\" finns inte" -#: catalog/namespace.c:2770 commands/tsearchcmds.c:1127 +#: catalog/namespace.c:2773 commands/tsearchcmds.c:1127 #: utils/cache/ts_cache.c:613 #, c-format msgid "text search configuration \"%s\" does not exist" msgstr "textsökkonfiguration \"%s\" finns inte" -#: catalog/namespace.c:2883 parser/parse_expr.c:810 parser/parse_target.c:1269 +#: catalog/namespace.c:2886 parser/parse_expr.c:810 parser/parse_target.c:1269 #, c-format msgid "cross-database references are not implemented: %s" msgstr "referenser till andra databaser är inte implementerat: %s" -#: catalog/namespace.c:2889 gram.y:15103 gram.y:17077 parser/parse_expr.c:817 +#: catalog/namespace.c:2892 gram.y:15103 gram.y:17077 parser/parse_expr.c:817 #: parser/parse_target.c:1276 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "ej korrekt kvalificerat namn (för många namn med punkt): %s" -#: catalog/namespace.c:3019 +#: catalog/namespace.c:3022 #, c-format msgid "cannot move objects into or out of temporary schemas" msgstr "kan inte flytta objekt in eller ut från temporära scheman" -#: catalog/namespace.c:3025 +#: catalog/namespace.c:3028 #, c-format msgid "cannot move objects into or out of TOAST schema" msgstr "kan inte flytta objekt in eller ut från TOAST-schema" -#: catalog/namespace.c:3098 commands/schemacmds.c:263 commands/schemacmds.c:343 +#: catalog/namespace.c:3101 commands/schemacmds.c:263 commands/schemacmds.c:343 #: commands/tablecmds.c:1246 #, c-format msgid "schema \"%s\" does not exist" msgstr "schema \"%s\" existerar inte" -#: catalog/namespace.c:3129 +#: catalog/namespace.c:3132 #, c-format msgid "improper relation name (too many dotted names): %s" msgstr "ej korrekt relationsnamn (för många namn med punkt): %s" -#: catalog/namespace.c:3696 +#: catalog/namespace.c:3699 #, c-format msgid "collation \"%s\" for encoding \"%s\" does not exist" msgstr "jämförelse \"%s\" för kodning \"%s\" finns inte" -#: catalog/namespace.c:3751 +#: catalog/namespace.c:3754 #, c-format msgid "conversion \"%s\" does not exist" msgstr "konvertering \"%s\" finns inte" -#: catalog/namespace.c:4015 +#: catalog/namespace.c:4018 #, c-format msgid "permission denied to create temporary tables in database \"%s\"" msgstr "rättighet saknas för att skapa temporära tabeller i databasen \"%s\"" -#: catalog/namespace.c:4031 +#: catalog/namespace.c:4034 #, c-format msgid "cannot create temporary tables during recovery" msgstr "kan inte skapa temptabeller under återställning" -#: catalog/namespace.c:4037 +#: catalog/namespace.c:4040 #, c-format msgid "cannot create temporary tables during a parallel operation" msgstr "kan inte skapa temporära tabeller under en parallell operation" -#: catalog/namespace.c:4338 commands/tablespace.c:1211 commands/variable.c:64 +#: catalog/namespace.c:4341 commands/tablespace.c:1211 commands/variable.c:64 #: tcop/postgres.c:3589 utils/misc/guc.c:11675 utils/misc/guc.c:11753 #, c-format msgid "List syntax is invalid." @@ -5550,8 +5566,8 @@ msgstr "Temporära och ologgade relationer kan inte replikeras." msgid "relation \"%s\" is already member of publication \"%s\"" msgstr "relationen \"%s\" är redan en medlem av publiceringen \"%s\"" -#: catalog/pg_publication.c:533 commands/publicationcmds.c:458 -#: commands/publicationcmds.c:786 +#: catalog/pg_publication.c:533 commands/publicationcmds.c:463 +#: commands/publicationcmds.c:791 #, c-format msgid "publication \"%s\" does not exist" msgstr "publiceringen \"%s\" finns inte" @@ -5694,7 +5710,7 @@ msgstr "Misslyckades vid skapande av multirange-typ för typen \"%s\"." msgid "You can manually specify a multirange type name using the \"multirange_type_name\" attribute." msgstr "Du kan manuellt ange en multirange-typ med hjälp av attributet \"multirange_type_name\"." -#: catalog/storage.c:523 storage/buffer/bufmgr.c:1039 +#: catalog/storage.c:523 storage/buffer/bufmgr.c:1046 #, c-format msgid "invalid page in block %u of relation %s" msgstr "ogiltig sida i block %u i relation %s" @@ -5815,7 +5831,7 @@ msgstr "servern \"%s\" finns redan" msgid "language \"%s\" already exists" msgstr "språk \"%s\" finns redan" -#: commands/alter.c:97 commands/publicationcmds.c:180 +#: commands/alter.c:97 commands/publicationcmds.c:185 #, c-format msgid "publication \"%s\" already exists" msgstr "publicering \"%s\" finns redan" @@ -5943,27 +5959,27 @@ msgstr "hoppar över analys av arvsträd \"%s.%s\" --- detta arvsträd innehåll msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "hoppar över analys av arvsträd \"%s.%s\" --- detta arvsträd innehåller inga analyserbara barntabeller" -#: commands/async.c:646 +#: commands/async.c:645 #, c-format msgid "channel name cannot be empty" msgstr "kanalnamn får inte vara tomt" -#: commands/async.c:652 +#: commands/async.c:651 #, c-format msgid "channel name too long" msgstr "kanalnamn för långt" -#: commands/async.c:657 +#: commands/async.c:656 #, c-format msgid "payload string too long" msgstr "innehållssträng är för lång" -#: commands/async.c:876 +#: commands/async.c:875 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "kan inte göra PREPARE på transaktion som kört LISTEN, UNLISTEN eller NOTIFY" -#: commands/async.c:980 +#: commands/async.c:979 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "för många notifieringar i NOTIFY-kön" @@ -6217,148 +6233,160 @@ msgstr "måste vara en superuser eller medlem i rollen pg_read_server_files för msgid "must be superuser or a member of the pg_write_server_files role to COPY to a file" msgstr "måste vara superuser eller medlem i rollen pg_write_server_files för att göra COPY till en fil" -#: commands/copy.c:188 +#: commands/copy.c:175 +#, c-format +msgid "generated columns are not supported in COPY FROM WHERE conditions" +msgstr "genererade kolumner tillåts inte i COPY FROM WHERE-villkor" + +#: commands/copy.c:176 commands/tablecmds.c:11928 commands/tablecmds.c:17048 +#: commands/tablecmds.c:17127 commands/trigger.c:653 +#: rewrite/rewriteHandler.c:939 rewrite/rewriteHandler.c:974 +#, c-format +msgid "Column \"%s\" is a generated column." +msgstr "Kolumnen \"%s\" är en genererad kolumn." + +#: commands/copy.c:225 #, c-format msgid "COPY FROM not supported with row-level security" msgstr "COPY FROM stöds inte med radnivåsäkerhet" -#: commands/copy.c:189 +#: commands/copy.c:226 #, c-format msgid "Use INSERT statements instead." msgstr "Använd INSERT-satser istället." -#: commands/copy.c:377 +#: commands/copy.c:414 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "COPY-format \"%s\" känns inte igen" -#: commands/copy.c:450 commands/copy.c:466 commands/copy.c:481 -#: commands/copy.c:503 +#: commands/copy.c:487 commands/copy.c:503 commands/copy.c:518 +#: commands/copy.c:540 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "argumentet till flaggan \"%s\" måste vara en lista med kolumnnamn" -#: commands/copy.c:518 +#: commands/copy.c:555 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "argumentet till flaggan \"%s\" måste vara ett giltigt kodningsnamn" -#: commands/copy.c:525 commands/dbcommands.c:254 commands/dbcommands.c:1575 +#: commands/copy.c:562 commands/dbcommands.c:254 commands/dbcommands.c:1575 #, c-format msgid "option \"%s\" not recognized" msgstr "flaggan \"%s\" känns inte igen" -#: commands/copy.c:537 +#: commands/copy.c:574 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "kan inte ange DELIMITER i läget BINARY" -#: commands/copy.c:542 +#: commands/copy.c:579 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "kan inte ange NULL i läget BINARY" -#: commands/copy.c:564 +#: commands/copy.c:601 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "COPY-separatorn måste vara ett ensamt en-byte-tecken" -#: commands/copy.c:571 +#: commands/copy.c:608 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "COPY-separatorn kan inte vara nyradstecken eller vagnretur" -#: commands/copy.c:577 +#: commands/copy.c:614 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "null-representationen för COPY kan inte använda tecknen för nyrad eller vagnretur" -#: commands/copy.c:594 +#: commands/copy.c:631 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "COPY-separatorn kan inte vara \"%s\"" -#: commands/copy.c:600 +#: commands/copy.c:637 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADER kan bara användas i CSV-läge" -#: commands/copy.c:606 +#: commands/copy.c:643 #, c-format msgid "COPY quote available only in CSV mode" msgstr "COPY-quote kan bara användas i CSV-läge" -#: commands/copy.c:611 +#: commands/copy.c:648 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "COPY-quote måste vara ett ensamt en-byte-tecken" -#: commands/copy.c:616 +#: commands/copy.c:653 #, c-format msgid "COPY delimiter and quote must be different" msgstr "COPY-separator och quote måste vara olika" -#: commands/copy.c:622 +#: commands/copy.c:659 #, c-format msgid "COPY escape available only in CSV mode" msgstr "COPY-escape kan bara användas i CSV-läge" -#: commands/copy.c:627 +#: commands/copy.c:664 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "COPY-escape måste vara ett ensamt en-byte-tecken" -#: commands/copy.c:633 +#: commands/copy.c:670 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "COPY-force-quote kan bara användas i CSV-läge" -#: commands/copy.c:637 +#: commands/copy.c:674 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "COPY-force-quote kan bara användas med COPY TO" -#: commands/copy.c:643 +#: commands/copy.c:680 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "COPY-force-not-null kan bara användas i CSV-läge" -#: commands/copy.c:647 +#: commands/copy.c:684 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "COPY-force-not-null kan bara används med COPY FROM" -#: commands/copy.c:653 +#: commands/copy.c:690 #, c-format msgid "COPY force null available only in CSV mode" msgstr "COPY-force-null kan bara användas i CSV-läge" -#: commands/copy.c:658 +#: commands/copy.c:695 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "COPY-force-null kan bara används med COPY FROM" -#: commands/copy.c:664 +#: commands/copy.c:701 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "COPY-avdelaren kan inte vara i NULL-specifikationen" -#: commands/copy.c:671 +#: commands/copy.c:708 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "CSV-citattecken kan inte vara i NULL-specifikationen" -#: commands/copy.c:732 +#: commands/copy.c:769 #, c-format msgid "column \"%s\" is a generated column" msgstr "kolumnen \"%s\" är en genererad kolumn" -#: commands/copy.c:734 +#: commands/copy.c:771 #, c-format msgid "Generated columns cannot be used in COPY." msgstr "Genererade kolumner kan inte användas i COPY." -#: commands/copy.c:749 commands/indexcmds.c:1842 commands/statscmds.c:245 +#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:265 #: commands/tablecmds.c:2344 commands/tablecmds.c:3000 #: commands/tablecmds.c:3508 parser/parse_relation.c:3651 #: parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 @@ -6366,7 +6394,7 @@ msgstr "Genererade kolumner kan inte användas i COPY." msgid "column \"%s\" does not exist" msgstr "kolumnen \"%s\" existerar inte" -#: commands/copy.c:756 commands/tablecmds.c:2370 commands/trigger.c:951 +#: commands/copy.c:793 commands/tablecmds.c:2370 commands/trigger.c:951 #: parser/parse_target.c:1093 parser/parse_target.c:1104 #, c-format msgid "column \"%s\" specified more than once" @@ -6447,7 +6475,7 @@ msgstr "FORCE_NOT_NULL-kolumnen \"%s\" refereras inte till av COPY" msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "FORCE_NULL-kolumnen \"%s\" refereras inte till av COPY" -#: commands/copyfrom.c:1343 utils/mb/mbutils.c:385 +#: commands/copyfrom.c:1343 utils/mb/mbutils.c:386 #, c-format msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "standardkonverteringsfunktion för kodning \"%s\" till \"%s\" finns inte" @@ -7078,7 +7106,7 @@ msgstr "jämförelse \"%s\" finns inte, hoppar över" msgid "conversion \"%s\" does not exist, skipping" msgstr "konvertering \"%s\" finns inte, hoppar över" -#: commands/dropcmds.c:293 commands/statscmds.c:674 +#: commands/dropcmds.c:293 commands/statscmds.c:694 #, c-format msgid "statistics object \"%s\" does not exist, skipping" msgstr "statistikobjekt \"%s\" finns inte, hoppar över" @@ -8147,7 +8175,7 @@ msgstr "inkluderad kolumn stöder inte NULLS FIRST/LAST-flaggor" msgid "could not determine which collation to use for index expression" msgstr "kunde inte bestämma vilken jämförelse (collation) som skulle användas för indexuttryck" -#: commands/indexcmds.c:1978 commands/tablecmds.c:17205 commands/typecmds.c:810 +#: commands/indexcmds.c:1978 commands/tablecmds.c:17215 commands/typecmds.c:810 #: parser/parse_expr.c:2701 parser/parse_type.c:566 parser/parse_utilcmd.c:3783 #: utils/adt/misc.c:621 #, c-format @@ -8184,8 +8212,8 @@ msgstr "accessmetod \"%s\" stöder inte ASC/DESC-flaggor" msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "accessmetod \"%s\" stöder inte NULLS FIRST/LAST-flaggor" -#: commands/indexcmds.c:2160 commands/tablecmds.c:17230 -#: commands/tablecmds.c:17236 commands/typecmds.c:2317 +#: commands/indexcmds.c:2160 commands/tablecmds.c:17240 +#: commands/tablecmds.c:17246 commands/typecmds.c:2317 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "datatyp %s har ingen standardoperatorklass för accessmetod \"%s\"" @@ -8595,7 +8623,7 @@ msgstr "join-uppskattningsfunktion %s måste returnera typ %s" msgid "operator attribute \"%s\" cannot be changed" msgstr "operatorattribut \"%s\" kan inte ändras" -#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:151 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:157 #: commands/tablecmds.c:1582 commands/tablecmds.c:2162 #: commands/tablecmds.c:3402 commands/tablecmds.c:6112 #: commands/tablecmds.c:9081 commands/tablecmds.c:16793 @@ -8707,57 +8735,57 @@ msgstr "preparerad sats \"%s\" finns inte" msgid "must be superuser to create custom procedural language" msgstr "måste vara en superuser för att skapa ett eget procedurspråk" -#: commands/publicationcmds.c:104 +#: commands/publicationcmds.c:109 #, c-format msgid "invalid list syntax for \"publish\" option" msgstr "ogiltigt listsyntax för flaggan \"publish\"" -#: commands/publicationcmds.c:122 +#: commands/publicationcmds.c:127 #, c-format msgid "unrecognized \"publish\" value: \"%s\"" msgstr "okänt \"publish\"-värde: \"%s\"" -#: commands/publicationcmds.c:137 +#: commands/publicationcmds.c:142 #, c-format msgid "unrecognized publication parameter: \"%s\"" msgstr "okänd publiceringsparameter: \"%s\"" -#: commands/publicationcmds.c:169 +#: commands/publicationcmds.c:174 #, c-format msgid "must be superuser to create FOR ALL TABLES publication" msgstr "måste vara en superuser för att skapa en FOR ALL TABLES-publicering" -#: commands/publicationcmds.c:250 +#: commands/publicationcmds.c:255 #, c-format msgid "wal_level is insufficient to publish logical changes" msgstr "wal_level är otillräckligt för att publicera logiska ändringar" -#: commands/publicationcmds.c:251 +#: commands/publicationcmds.c:256 #, c-format msgid "Set wal_level to logical before creating subscriptions." msgstr "Sätt wal_level till logical innan prenumerationer skapas." -#: commands/publicationcmds.c:376 +#: commands/publicationcmds.c:381 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "publicering \"%s\" är definierad som FOR ALL TABLES" -#: commands/publicationcmds.c:378 +#: commands/publicationcmds.c:383 #, c-format msgid "Tables cannot be added to or dropped from FOR ALL TABLES publications." msgstr "Tabeller kan inte läggas till eller tas bort från FOR ALL TABLES-publiceringar." -#: commands/publicationcmds.c:707 +#: commands/publicationcmds.c:712 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "relation \"%s\" är inte en del av publiceringen" -#: commands/publicationcmds.c:750 +#: commands/publicationcmds.c:755 #, c-format msgid "permission denied to change owner of publication \"%s\"" msgstr "rättighet saknas för att byta ägare på publicering \"%s\"" -#: commands/publicationcmds.c:752 +#: commands/publicationcmds.c:757 #, c-format msgid "The owner of a FOR ALL TABLES publication must be a superuser." msgstr "Ägaren av en FOR ALL TABLES-publicering måste vara en superuser." @@ -8933,72 +8961,72 @@ msgstr "bara en enda relation tillåts i CREATE STATISTICS" msgid "relation \"%s\" is not a table, foreign table, or materialized view" msgstr "relationen \"%s\" är inte en tabell, främmande tabell eller materialiserad vy" -#: commands/statscmds.c:193 +#: commands/statscmds.c:213 #, c-format msgid "statistics object \"%s\" already exists, skipping" msgstr "statistikobjekt \"%s\" finns redan, hoppar över" -#: commands/statscmds.c:201 +#: commands/statscmds.c:221 #, c-format msgid "statistics object \"%s\" already exists" msgstr "statistikobjekt \"%s\" finns redan" -#: commands/statscmds.c:212 +#: commands/statscmds.c:232 #, c-format msgid "cannot have more than %d columns in statistics" msgstr "kan inte ha mer än %d kolumner i statistiken" -#: commands/statscmds.c:253 commands/statscmds.c:276 commands/statscmds.c:309 +#: commands/statscmds.c:273 commands/statscmds.c:296 commands/statscmds.c:329 #, c-format msgid "statistics creation on system columns is not supported" msgstr "skapa statistik för systemkolumner stöds inte" -#: commands/statscmds.c:260 commands/statscmds.c:283 +#: commands/statscmds.c:280 commands/statscmds.c:303 #, c-format msgid "column \"%s\" cannot be used in statistics because its type %s has no default btree operator class" msgstr "kolumnen \"%s\" kan inte användas i statistiken då dess typ %s inte har någon standard btree-operatorklass" -#: commands/statscmds.c:326 +#: commands/statscmds.c:346 #, c-format msgid "expression cannot be used in multivariate statistics because its type %s has no default btree operator class" msgstr "uttryck kan inte användas i multivariat statistik då dess type %s inte har någon default btree operatorklass" -#: commands/statscmds.c:347 +#: commands/statscmds.c:367 #, c-format msgid "when building statistics on a single expression, statistics kinds may not be specified" msgstr "vid skapande av statistik för ett ensamt uttryck så kan inte statistiktyp anges" -#: commands/statscmds.c:376 +#: commands/statscmds.c:396 #, c-format msgid "unrecognized statistics kind \"%s\"" msgstr "okänd statistiktyp \"%s\"" -#: commands/statscmds.c:405 +#: commands/statscmds.c:425 #, c-format msgid "extended statistics require at least 2 columns" msgstr "utökad statistik kräver minst två kolumner" -#: commands/statscmds.c:423 +#: commands/statscmds.c:443 #, c-format msgid "duplicate column name in statistics definition" msgstr "duplicerade kolumnnamn i statistikdefinition" -#: commands/statscmds.c:458 +#: commands/statscmds.c:478 #, c-format msgid "duplicate expression in statistics definition" msgstr "duplicerade uttryck i statistikdefinition" -#: commands/statscmds.c:639 commands/tablecmds.c:8047 +#: commands/statscmds.c:659 commands/tablecmds.c:8047 #, c-format msgid "statistics target %d is too low" msgstr "statistikmålet %d är för lågt" -#: commands/statscmds.c:647 commands/tablecmds.c:8055 +#: commands/statscmds.c:667 commands/tablecmds.c:8055 #, c-format msgid "lowering statistics target to %d" msgstr "minskar statistikmålet till %d" -#: commands/statscmds.c:670 +#: commands/statscmds.c:690 #, c-format msgid "statistics object \"%s.%s\" does not exist, skipping" msgstr "statistikobjekt \"%s.%s\" finns inte, hoppar över" @@ -9186,7 +9214,7 @@ msgstr "materialiserad vy \"%s\" finns inte, hoppar över" msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Använd DROP MATERIALIZED VIEW för att ta bort en materialiserad vy." -#: commands/tablecmds.c:265 commands/tablecmds.c:289 commands/tablecmds.c:18739 +#: commands/tablecmds.c:265 commands/tablecmds.c:289 commands/tablecmds.c:18753 #: parser/parse_utilcmd.c:2265 #, c-format msgid "index \"%s\" does not exist" @@ -10059,13 +10087,6 @@ msgstr "kan inte ändra kolumntyp på typad tabell" msgid "cannot specify USING when altering type of generated column" msgstr "kan inte ange USING när man ändrar typ på en genererad kolumn" -#: commands/tablecmds.c:11928 commands/tablecmds.c:17048 -#: commands/tablecmds.c:17138 commands/trigger.c:653 -#: rewrite/rewriteHandler.c:936 rewrite/rewriteHandler.c:971 -#, c-format -msgid "Column \"%s\" is a generated column." -msgstr "Kolumnen \"%s\" är en genererad kolumn." - #: commands/tablecmds.c:11938 #, c-format msgid "cannot alter inherited column \"%s\"" @@ -10248,12 +10269,12 @@ msgstr "kan inte ärva av en temporär tabell för en annan session" msgid "cannot inherit from a partition" msgstr "kan inte ärva från en partition" -#: commands/tablecmds.c:14644 commands/tablecmds.c:17550 +#: commands/tablecmds.c:14644 commands/tablecmds.c:17560 #, c-format msgid "circular inheritance not allowed" msgstr "cirkulärt arv är inte tillåtet" -#: commands/tablecmds.c:14645 commands/tablecmds.c:17551 +#: commands/tablecmds.c:14645 commands/tablecmds.c:17561 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" är redan ett barn till \"%s\"" @@ -10448,170 +10469,170 @@ msgstr "kolumn \"%s\" angiven i partitioneringsnyckel existerar inte" msgid "cannot use system column \"%s\" in partition key" msgstr "kan inte använda systemkolumn \"%s\" i partitioneringsnyckel" -#: commands/tablecmds.c:17047 commands/tablecmds.c:17137 +#: commands/tablecmds.c:17047 commands/tablecmds.c:17126 #, c-format msgid "cannot use generated column in partition key" msgstr "kan inte använda genererad kolumn i partitioneringsnyckel" -#: commands/tablecmds.c:17120 +#: commands/tablecmds.c:17116 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "partitioneringsnyckeluttryck kan inte innehålla systemkolumnreferenser" -#: commands/tablecmds.c:17167 +#: commands/tablecmds.c:17177 #, c-format msgid "functions in partition key expression must be marked IMMUTABLE" msgstr "funktioner i partitioneringsuttryck måste vara markerade IMMUTABLE" -#: commands/tablecmds.c:17176 +#: commands/tablecmds.c:17186 #, c-format msgid "cannot use constant expression as partition key" msgstr "kan inte använda konstant uttryck som partitioneringsnyckel" -#: commands/tablecmds.c:17197 +#: commands/tablecmds.c:17207 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "kunde inte lista vilken jämförelse (collation) som skulle användas för partitionsuttryck" -#: commands/tablecmds.c:17232 +#: commands/tablecmds.c:17242 #, c-format msgid "You must specify a hash operator class or define a default hash operator class for the data type." msgstr "Du måste ange en hash-operatorklass eller definiera en default hash-operatorklass för datatypen." -#: commands/tablecmds.c:17238 +#: commands/tablecmds.c:17248 #, c-format msgid "You must specify a btree operator class or define a default btree operator class for the data type." msgstr "Du måste ange en btree-operatorklass eller definiera en default btree-operatorklass för datatypen." -#: commands/tablecmds.c:17490 +#: commands/tablecmds.c:17500 #, c-format msgid "\"%s\" is already a partition" msgstr "\"%s\" är redan en partition" -#: commands/tablecmds.c:17496 +#: commands/tablecmds.c:17506 #, c-format msgid "cannot attach a typed table as partition" msgstr "kan inte ansluta en typad tabell som partition" -#: commands/tablecmds.c:17512 +#: commands/tablecmds.c:17522 #, c-format msgid "cannot attach inheritance child as partition" msgstr "kan inte ansluta ett arvsbarn som partition" -#: commands/tablecmds.c:17526 +#: commands/tablecmds.c:17536 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "kan inte ansluta en arvsförälder som partition" -#: commands/tablecmds.c:17560 +#: commands/tablecmds.c:17570 #, c-format msgid "cannot attach a temporary relation as partition of permanent relation \"%s\"" msgstr "kan inte ansluta en temporär relation som partition till en permanent relation \"%s\"" -#: commands/tablecmds.c:17568 +#: commands/tablecmds.c:17578 #, c-format msgid "cannot attach a permanent relation as partition of temporary relation \"%s\"" msgstr "kan inte ansluta en permanent relation som partition till en temporär relation \"%s\"" -#: commands/tablecmds.c:17576 +#: commands/tablecmds.c:17586 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "kan inte ansluta en partition från en temporär relation som tillhör en annan session" -#: commands/tablecmds.c:17583 +#: commands/tablecmds.c:17593 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "kan inte ansluta en temporär relation tillhörande en annan session som partition" -#: commands/tablecmds.c:17603 +#: commands/tablecmds.c:17613 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "tabell \"%s\" innehåller kolumn \"%s\" som inte finns i föräldern \"%s\"" -#: commands/tablecmds.c:17606 +#: commands/tablecmds.c:17616 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "Den nya partitionen får bara innehålla kolumner som finns i föräldern." -#: commands/tablecmds.c:17618 +#: commands/tablecmds.c:17628 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "trigger \"%s\" förhindrar att tabell \"%s\" blir en partition" -#: commands/tablecmds.c:17620 commands/trigger.c:459 +#: commands/tablecmds.c:17630 commands/trigger.c:459 #, c-format msgid "ROW triggers with transition tables are not supported on partitions" msgstr "ROW-triggrar med övergångstabeller stöds inte för partitioner" -#: commands/tablecmds.c:17799 +#: commands/tablecmds.c:17809 #, c-format msgid "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "kan inte ansluta främmande tabell \"%s\" som en partition till partitionerad tabell \"%s\"" -#: commands/tablecmds.c:17802 +#: commands/tablecmds.c:17812 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "Partitionerad tabell \"%s\" innehåller unika index." -#: commands/tablecmds.c:18126 +#: commands/tablecmds.c:18137 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "kan inte parallellt koppla bort en partitionerad tabell när en default-partition finns" -#: commands/tablecmds.c:18235 +#: commands/tablecmds.c:18249 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "partitionerad tabell \"%s\" togs bort parallellt" -#: commands/tablecmds.c:18241 +#: commands/tablecmds.c:18255 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "partition \"%s\" togs bort parallellt" -#: commands/tablecmds.c:18773 commands/tablecmds.c:18793 -#: commands/tablecmds.c:18813 commands/tablecmds.c:18832 -#: commands/tablecmds.c:18874 +#: commands/tablecmds.c:18787 commands/tablecmds.c:18807 +#: commands/tablecmds.c:18827 commands/tablecmds.c:18846 +#: commands/tablecmds.c:18888 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "kan inte ansluta index \"%s\" som en partition till index \"%s\"" -#: commands/tablecmds.c:18776 +#: commands/tablecmds.c:18790 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "Index \"%s\" är redan ansluten till ett annat index." -#: commands/tablecmds.c:18796 +#: commands/tablecmds.c:18810 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "Index \"%s\" är inte ett index för någon partition av tabell \"%s\"." -#: commands/tablecmds.c:18816 +#: commands/tablecmds.c:18830 #, c-format msgid "The index definitions do not match." msgstr "Indexdefinitionerna matchar inte." -#: commands/tablecmds.c:18835 +#: commands/tablecmds.c:18849 #, c-format msgid "The index \"%s\" belongs to a constraint in table \"%s\" but no constraint exists for index \"%s\"." msgstr "Indexet \"%s\" tillhör ett villkor på tabell \"%s\" men det finns inga villkor för indexet \"%s\"." -#: commands/tablecmds.c:18877 +#: commands/tablecmds.c:18891 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "Ett annat index är redan anslutet för partition \"%s\"." -#: commands/tablecmds.c:19114 +#: commands/tablecmds.c:19128 #, c-format msgid "column data type %s does not support compression" msgstr "kolumndatatypen %s stöder inte komprimering" -#: commands/tablecmds.c:19121 +#: commands/tablecmds.c:19135 #, c-format msgid "invalid compression method \"%s\"" msgstr "ogiltig komprimeringsmetod \"%s\"" #: commands/tablespace.c:161 commands/tablespace.c:177 -#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1478 +#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1538 #: storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" @@ -10984,7 +11005,7 @@ msgid "could not serialize access due to concurrent update" msgstr "kunde inte serialisera åtkomst på grund av samtidig uppdatering" #: commands/trigger.c:3190 executor/nodeModifyTable.c:1440 -#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2276 +#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2268 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "kunde inte serialisera åtkomst på grund av samtidig borttagning" @@ -11643,107 +11664,107 @@ msgstr "roll \"%s\" är redan en medlem i rollen \"%s\"" msgid "role \"%s\" is not a member of role \"%s\"" msgstr "roll \"%s\" är inte en medlem i rollen \"%s\"" -#: commands/vacuum.c:133 +#: commands/vacuum.c:134 #, c-format msgid "unrecognized ANALYZE option \"%s\"" msgstr "okänd ANALYZE-flagga \"%s\"" -#: commands/vacuum.c:171 +#: commands/vacuum.c:172 #, c-format msgid "parallel option requires a value between 0 and %d" msgstr "parallell-flaggan kräver ett värde mellan 0 och %d" -#: commands/vacuum.c:183 +#: commands/vacuum.c:184 #, c-format msgid "parallel workers for vacuum must be between 0 and %d" msgstr "parallella arbetare för vacuum måste vara mellan 0 och %d" -#: commands/vacuum.c:200 +#: commands/vacuum.c:201 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "okänd VACUUM-flagga \"%s\"" -#: commands/vacuum.c:223 +#: commands/vacuum.c:224 #, c-format msgid "VACUUM FULL cannot be performed in parallel" msgstr "'VACUUM FULL kan inte köras parallellt" -#: commands/vacuum.c:239 +#: commands/vacuum.c:240 #, c-format msgid "ANALYZE option must be specified when a column list is provided" msgstr "ANALYZE-flaggan måste anges när en kolumnlista används" -#: commands/vacuum.c:329 +#: commands/vacuum.c:330 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%s kan inte köras från VACUUM eller ANALYZE" -#: commands/vacuum.c:339 +#: commands/vacuum.c:340 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "VACUUM-flagga DISABLE_PAGE_SKIPPING kan inte anges med FULL" -#: commands/vacuum.c:346 +#: commands/vacuum.c:347 #, c-format msgid "PROCESS_TOAST required with VACUUM FULL" msgstr "PROCESS_TOAST krävs med VACUUM FULL" -#: commands/vacuum.c:596 +#: commands/vacuum.c:597 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "hoppar över \"%s\" --- bara en superuser kan städa den" -#: commands/vacuum.c:600 +#: commands/vacuum.c:601 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "hoppar över \"%s\" --- bara en superuser eller databasägaren kan städa den" -#: commands/vacuum.c:604 +#: commands/vacuum.c:605 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "hoppar över \"%s\" --- bara tabell eller databasägaren kan köra vacuum på den" -#: commands/vacuum.c:619 +#: commands/vacuum.c:620 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" msgstr "hoppar över \"%s\" --- bara superuser kan analysera den" -#: commands/vacuum.c:623 +#: commands/vacuum.c:624 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "hoppar över \"%s\" --- bara superuser eller databasägaren kan analysera den" -#: commands/vacuum.c:627 +#: commands/vacuum.c:628 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "hoppar över \"%s\" --- bara tabell eller databasägaren kan analysera den" -#: commands/vacuum.c:706 commands/vacuum.c:802 +#: commands/vacuum.c:707 commands/vacuum.c:803 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "hoppar över vacuum av \"%s\" --- lås ej tillgängligt" -#: commands/vacuum.c:711 +#: commands/vacuum.c:712 #, c-format msgid "skipping vacuum of \"%s\" --- relation no longer exists" msgstr "hoppar över vacuum av \"%s\" --- relationen finns inte längre" -#: commands/vacuum.c:727 commands/vacuum.c:807 +#: commands/vacuum.c:728 commands/vacuum.c:808 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" msgstr "hoppar över analys av \"%s\" --- lås ej tillgängligt" -#: commands/vacuum.c:732 +#: commands/vacuum.c:733 #, c-format msgid "skipping analyze of \"%s\" --- relation no longer exists" msgstr "hoppar över analys av \"%s\" --- relationen finns inte längre" -#: commands/vacuum.c:1050 +#: commands/vacuum.c:1051 #, c-format msgid "oldest xmin is far in the past" msgstr "äldsta xmin är från lång tid tillbaka" -#: commands/vacuum.c:1051 +#: commands/vacuum.c:1052 #, c-format msgid "" "Close open transactions soon to avoid wraparound problems.\n" @@ -11752,27 +11773,27 @@ msgstr "" "Stäng öppna transaktioner för att undvika problem med wraparound.\n" "Du kan också behöva commit:a eller rulla tillbaka gamla förberedda transaktiooner alternativt slänga stillastående replikeringsslottar." -#: commands/vacuum.c:1092 +#: commands/vacuum.c:1093 #, c-format msgid "oldest multixact is far in the past" msgstr "äldsta multixact är från lång tid tillbaka" -#: commands/vacuum.c:1093 +#: commands/vacuum.c:1094 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "Stäng öppna transaktioner med multixacts snart för att undvika \"wraparound\"." -#: commands/vacuum.c:1778 +#: commands/vacuum.c:1779 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "några databaser har inte städats (vacuum) på över 2 miljarder transaktioner" -#: commands/vacuum.c:1779 +#: commands/vacuum.c:1780 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "Du kan redan ha fått dataförlust på grund av transaktions-wraparound." -#: commands/vacuum.c:1954 +#: commands/vacuum.c:1961 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "hoppar över \"%s\" --- kan inte köra vacuum på icke-tabeller eller speciella systemtabeller" @@ -12009,7 +12030,7 @@ msgstr "Fråga levererar ett värde för en borttagen kolumn vid position %d." msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "Tabellen har typ %s vid position %d, men frågan förväntar sig %s." -#: executor/execExpr.c:1098 parser/parse_agg.c:854 +#: executor/execExpr.c:1098 parser/parse_agg.c:881 #, c-format msgid "window function calls cannot be nested" msgstr "fönsterfunktionanrop kan inte nästlas" @@ -12180,38 +12201,38 @@ msgstr "kan inte ändra sekvens \"%s\"" msgid "cannot change TOAST relation \"%s\"" msgstr "kan inte ändra TOAST-relation \"%s\"" -#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3145 -#: rewrite/rewriteHandler.c:3990 +#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:4010 #, c-format msgid "cannot insert into view \"%s\"" msgstr "kan inte sätta in i vy \"%s\"" -#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3148 -#: rewrite/rewriteHandler.c:3993 +#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3151 +#: rewrite/rewriteHandler.c:4013 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "För att tillåta insättning i en vy så skapa en INSTEAD OF INSERT-trigger eller en villkorslös ON INSERT DO INSTEAD-regel." -#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3153 -#: rewrite/rewriteHandler.c:3998 +#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3156 +#: rewrite/rewriteHandler.c:4018 #, c-format msgid "cannot update view \"%s\"" msgstr "kan inte uppdatera vy \"%s\"" -#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3156 -#: rewrite/rewriteHandler.c:4001 +#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3159 +#: rewrite/rewriteHandler.c:4021 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "För att tillåta uppdatering av en vy så skapa en INSTEAD OF UPDATE-trigger eller en villkorslös ON UPDATE DO INSTEAD-regel." -#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3161 -#: rewrite/rewriteHandler.c:4006 +#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3164 +#: rewrite/rewriteHandler.c:4026 #, c-format msgid "cannot delete from view \"%s\"" msgstr "kan inte radera från vy \"%s\"" -#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3164 -#: rewrite/rewriteHandler.c:4009 +#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3167 +#: rewrite/rewriteHandler.c:4029 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "För att tillåta bortagning i en vy så skapa en INSTEAD OF DELETE-trigger eller en villkorslös ON DELETE DO INSTEAD-regel." @@ -12544,7 +12565,7 @@ msgstr "returtyp %s stöds inte för SQL-funktioner" msgid "unexpected EOF for tape %d: requested %zu bytes, read %zu bytes" msgstr "oväntat EOF för band %d: efterfrågade %zu byte, läste %zu byte" -#: executor/nodeAgg.c:3979 parser/parse_agg.c:670 parser/parse_agg.c:698 +#: executor/nodeAgg.c:3979 parser/parse_agg.c:677 parser/parse_agg.c:720 #, c-format msgid "aggregate function calls cannot be nested" msgstr "aggregatfunktionsanrop kan inte nästlas" @@ -12746,7 +12767,7 @@ msgstr "kan inte öppna %s-fråga som markör" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE stöds inte" -#: executor/spi.c:1730 parser/analyze.c:2864 +#: executor/spi.c:1730 parser/analyze.c:2865 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Scrollbara markörer måste vara READ ONLY." @@ -15287,7 +15308,7 @@ msgstr "%s kan inte appliceras på den nullbara sidan av en outer join" #. translator: %s is a SQL row locking clause such as FOR UPDATE #: optimizer/plan/planner.c:1346 parser/analyze.c:1720 parser/analyze.c:1976 -#: parser/analyze.c:3155 +#: parser/analyze.c:3156 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s tillåts inte med UNION/INTERSECT/EXCEPT" @@ -15364,22 +15385,22 @@ msgstr "kan inte öppna relationen \"%s\"" msgid "cannot access temporary or unlogged relations during recovery" msgstr "kan inte accessa temporära eller ologgade relationer under återställning" -#: optimizer/util/plancat.c:702 +#: optimizer/util/plancat.c:707 #, c-format msgid "whole row unique index inference specifications are not supported" msgstr "inferens av unikt index för hel rad stöds inte" -#: optimizer/util/plancat.c:719 +#: optimizer/util/plancat.c:724 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" msgstr "villkor för ON CONFLICT-klausul har inget associerat index" -#: optimizer/util/plancat.c:769 +#: optimizer/util/plancat.c:774 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" msgstr "ON CONFLICT DO UPDATE stöds inte med uteslutningsvillkor" -#: optimizer/util/plancat.c:879 +#: optimizer/util/plancat.c:884 #, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" msgstr "finns inget unik eller uteslutningsvillkor som matchar ON CONFLICT-specifikationen" @@ -15410,7 +15431,7 @@ msgid "SELECT ... INTO is not allowed here" msgstr "SELECT ... INTO tillåts inte här" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1623 parser/analyze.c:3366 +#: parser/analyze.c:1623 parser/analyze.c:3367 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s kan inte appliceras på VÄRDEN" @@ -15463,455 +15484,465 @@ msgid "variable \"%s\" is of type %s but expression is of type %s" msgstr "variabeln \"%s\" har typ %s men uttrycket har typ %s" #. translator: %s is a SQL keyword -#: parser/analyze.c:2814 parser/analyze.c:2822 +#: parser/analyze.c:2815 parser/analyze.c:2823 #, c-format msgid "cannot specify both %s and %s" msgstr "kan inte ange både %s och %s" -#: parser/analyze.c:2842 +#: parser/analyze.c:2843 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSOR får inte innehålla datamodifierande satser i WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2850 +#: parser/analyze.c:2851 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s stöds inte" -#: parser/analyze.c:2853 +#: parser/analyze.c:2854 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "Hållbara markörer måste vara READ ONLY." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2861 +#: parser/analyze.c:2862 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %s stöds inte" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2872 +#: parser/analyze.c:2873 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not valid" msgstr "DECLARE INSENSITIVE CURSOR ... %s är inte giltig" -#: parser/analyze.c:2875 +#: parser/analyze.c:2876 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "Okänsliga markörer måste vara READ ONLY." -#: parser/analyze.c:2941 +#: parser/analyze.c:2942 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "materialiserade vyer får inte innehålla datamodifierande satser i WITH" -#: parser/analyze.c:2951 +#: parser/analyze.c:2952 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "materialiserade vyer får inte använda temporära tabeller eller vyer" -#: parser/analyze.c:2961 +#: parser/analyze.c:2962 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "materialiserade vyer kan inte defineras med bundna parametrar" -#: parser/analyze.c:2973 +#: parser/analyze.c:2974 #, c-format msgid "materialized views cannot be unlogged" msgstr "materialiserad vyer kan inte vara ologgade" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3162 +#: parser/analyze.c:3163 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "%s tillåts inte med DISTINCT-klausul" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3169 +#: parser/analyze.c:3170 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "%s tillåts inte med GROUP BY-klausul" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3176 +#: parser/analyze.c:3177 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "%s tillåts inte med HAVING-klausul" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3183 +#: parser/analyze.c:3184 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "%s tillåts inte med aggregatfunktioner" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3190 +#: parser/analyze.c:3191 #, c-format msgid "%s is not allowed with window functions" msgstr "%s tillåts inte med fönsterfunktioner" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3197 +#: parser/analyze.c:3198 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "%s tillåts inte med mängdreturnerande funktioner i mållistan" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3289 +#: parser/analyze.c:3290 #, c-format msgid "%s must specify unqualified relation names" msgstr "%s: måste ange okvalificerade relationsnamn" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3339 +#: parser/analyze.c:3340 #, c-format msgid "%s cannot be applied to a join" msgstr "%s kan inte appliceras på en join" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3348 +#: parser/analyze.c:3349 #, c-format msgid "%s cannot be applied to a function" msgstr "%s kan inte appliceras på en funktion" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3357 +#: parser/analyze.c:3358 #, c-format msgid "%s cannot be applied to a table function" msgstr "%s kan inte appliceras på tabellfunktion" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3375 +#: parser/analyze.c:3376 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s kan inte appliceras på en WITH-fråga" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3384 +#: parser/analyze.c:3385 #, c-format msgid "%s cannot be applied to a named tuplestore" msgstr "%s kan inte appliceras på en namngiven tupellagring" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3404 +#: parser/analyze.c:3405 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "relationen \"%s\" i %s-klausul hittades inte i FROM-klausul" -#: parser/parse_agg.c:208 parser/parse_oper.c:227 +#: parser/parse_agg.c:211 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "kunde inte hitta en ordningsoperator för typ %s" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:213 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Aggregat med DISTINCT måste kunna sortera sina indata." -#: parser/parse_agg.c:268 +#: parser/parse_agg.c:271 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING måste ha färre än 32 argument" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:375 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "aggregatfunktioner tillåts inte i JOIN-villkor" -#: parser/parse_agg.c:373 +#: parser/parse_agg.c:377 msgid "grouping operations are not allowed in JOIN conditions" msgstr "gruppoperationer tillåts inte i JOIN-villkor" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:387 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "aggregatfunktioner tillåts inte i FROM-klausul på sin egen frågenivå" -#: parser/parse_agg.c:385 +#: parser/parse_agg.c:389 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "gruppoperationer tillåts inte i FROM-klausul på sin egen frågenivå" -#: parser/parse_agg.c:390 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in functions in FROM" msgstr "aggregatfunktioner tillåts inte i funktioner i FROM" -#: parser/parse_agg.c:392 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in functions in FROM" msgstr "gruppoperationer tillåts inte i funktioner i FROM" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:404 msgid "aggregate functions are not allowed in policy expressions" msgstr "aggregatfunktioner tillåts inte i policyuttryck" -#: parser/parse_agg.c:402 +#: parser/parse_agg.c:406 msgid "grouping operations are not allowed in policy expressions" msgstr "gruppoperationer tillåts inte i policyuttryck" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:423 msgid "aggregate functions are not allowed in window RANGE" msgstr "aggregatfunktioner tillåts inte i fönster-RANGE" -#: parser/parse_agg.c:421 +#: parser/parse_agg.c:425 msgid "grouping operations are not allowed in window RANGE" msgstr "grupperingsoperationer tillåts inte i fönster-RANGE" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:430 msgid "aggregate functions are not allowed in window ROWS" msgstr "aggregatfunktioner tillåts inte i fönster-RADER" -#: parser/parse_agg.c:428 +#: parser/parse_agg.c:432 msgid "grouping operations are not allowed in window ROWS" msgstr "grupperingsfunktioner tillåts inte i fönster-RADER" -#: parser/parse_agg.c:433 +#: parser/parse_agg.c:437 msgid "aggregate functions are not allowed in window GROUPS" msgstr "aggregatfunktioner tillåts inte i fönster-GROUPS" -#: parser/parse_agg.c:435 +#: parser/parse_agg.c:439 msgid "grouping operations are not allowed in window GROUPS" msgstr "grupperingsfunktioner tillåts inte i fönster-GROUPS" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:473 msgid "aggregate functions are not allowed in check constraints" msgstr "aggregatfunktioner tillåts inte i check-villkor" -#: parser/parse_agg.c:471 +#: parser/parse_agg.c:475 msgid "grouping operations are not allowed in check constraints" msgstr "gruppoperationer tillåts inte i check-villkor" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:482 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "aggregatfunktioner tillåts inte i DEFAULT-uttryck" -#: parser/parse_agg.c:480 +#: parser/parse_agg.c:484 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "grupperingsoperationer tillåts inte i DEFAULT-uttryck" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:489 msgid "aggregate functions are not allowed in index expressions" msgstr "aggregatfunktioner tillåts inte i indexuttryck" -#: parser/parse_agg.c:487 +#: parser/parse_agg.c:491 msgid "grouping operations are not allowed in index expressions" msgstr "gruppoperationer tillåts inte i indexuttryck" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:496 msgid "aggregate functions are not allowed in index predicates" msgstr "aggregatfunktionsanrop tillåts inte i indexpredikat" -#: parser/parse_agg.c:494 +#: parser/parse_agg.c:498 msgid "grouping operations are not allowed in index predicates" msgstr "gruppoperationer tillåts inte i indexpredikat" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:503 msgid "aggregate functions are not allowed in statistics expressions" msgstr "aggregatfunktioner tillåts inte i statistikuttryck" -#: parser/parse_agg.c:501 +#: parser/parse_agg.c:505 msgid "grouping operations are not allowed in statistics expressions" msgstr "gruppoperationer tillåts inte i statistikuttryck" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:510 msgid "aggregate functions are not allowed in transform expressions" msgstr "aggregatfunktioner tillåts inte i transform-uttryck" -#: parser/parse_agg.c:508 +#: parser/parse_agg.c:512 msgid "grouping operations are not allowed in transform expressions" msgstr "gruppoperationer tillåts inte i transforme-uttryck" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:517 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "aggregatfunktioner tillåts inte i EXECUTE-parametrar" -#: parser/parse_agg.c:515 +#: parser/parse_agg.c:519 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "gruppoperationer tillåts inte i EXECUTE-parametrar" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:524 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "aggregatfunktioner tillåts inte i WHEN-villkor" -#: parser/parse_agg.c:522 +#: parser/parse_agg.c:526 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "gruppoperationer tillåts inte i WHEN-villkor" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:531 msgid "aggregate functions are not allowed in partition bound" msgstr "aggregatfunktioner tillåts inte i partitionsgräns" -#: parser/parse_agg.c:529 +#: parser/parse_agg.c:533 msgid "grouping operations are not allowed in partition bound" msgstr "gruppoperationer tillåts inte i partitionsgräns" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:538 msgid "aggregate functions are not allowed in partition key expressions" msgstr "aggregatfunktioner tillåts inte i partitionsnyckeluttryck" -#: parser/parse_agg.c:536 +#: parser/parse_agg.c:540 msgid "grouping operations are not allowed in partition key expressions" msgstr "gruppoperationer tillåts inte i partitionsnyckeluttryck" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:546 msgid "aggregate functions are not allowed in column generation expressions" msgstr "aggregatfunktioner tillåts inte i kolumngenereringsuttryck" -#: parser/parse_agg.c:544 +#: parser/parse_agg.c:548 msgid "grouping operations are not allowed in column generation expressions" msgstr "gruppoperationer tillåts inte i kolumngenereringsuttryck" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:554 msgid "aggregate functions are not allowed in CALL arguments" msgstr "aggregatfunktioner tillåts inte i CALL-argument" -#: parser/parse_agg.c:552 +#: parser/parse_agg.c:556 msgid "grouping operations are not allowed in CALL arguments" msgstr "gruppoperationer tillåts inte i CALL-argument" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:562 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "aggregatfunktioner tillåts inte i COPY FROM WHERE-villkor" -#: parser/parse_agg.c:560 +#: parser/parse_agg.c:564 msgid "grouping operations are not allowed in COPY FROM WHERE conditions" msgstr "gruppoperationer tillåts inte i COPY FROM WHERE-villkor" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:587 parser/parse_clause.c:1834 +#: parser/parse_agg.c:591 parser/parse_clause.c:1834 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "aggregatfunktioner tillåts inte i %s" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:590 +#: parser/parse_agg.c:594 #, c-format msgid "grouping operations are not allowed in %s" msgstr "gruppoperationer tillåts inte i %s" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:690 parser/parse_agg.c:727 +#, c-format +msgid "outer-level aggregate cannot use a nested CTE" +msgstr "aggregat på yttre nivå kan inte använda en nästlad CTE" + +#: parser/parse_agg.c:691 parser/parse_agg.c:728 +#, c-format +msgid "CTE \"%s\" is below the aggregate's semantic level." +msgstr "CTE \"%s\" är under aggregatets semantiska nivå." + +#: parser/parse_agg.c:713 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "yttre aggregat kan inte innehålla inre variabel i sitt direkta argument" -#: parser/parse_agg.c:769 +#: parser/parse_agg.c:798 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "aggregatfunktionsanrop kan inte innehålla mängdreturnerande funktionsanrop" -#: parser/parse_agg.c:770 parser/parse_expr.c:1678 parser/parse_expr.c:2167 +#: parser/parse_agg.c:799 parser/parse_expr.c:1678 parser/parse_expr.c:2167 #: parser/parse_func.c:883 #, c-format msgid "You might be able to move the set-returning function into a LATERAL FROM item." msgstr "Du kanske kan flytta den mängdreturnerande funktionen in i en LATERAL FROM-konstruktion." -#: parser/parse_agg.c:775 +#: parser/parse_agg.c:804 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "aggregatfunktionsanrop kan inte innehålla fönsterfunktionanrop" -#: parser/parse_agg.c:880 +#: parser/parse_agg.c:907 msgid "window functions are not allowed in JOIN conditions" msgstr "fönsterfunktioner tillåts inte i JOIN-villkor" -#: parser/parse_agg.c:887 +#: parser/parse_agg.c:914 msgid "window functions are not allowed in functions in FROM" msgstr "fönsterfunktioner tillåts inte i funktioner i FROM" -#: parser/parse_agg.c:893 +#: parser/parse_agg.c:920 msgid "window functions are not allowed in policy expressions" msgstr "fönsterfunktioner tillåts inte i policy-uttryck" -#: parser/parse_agg.c:906 +#: parser/parse_agg.c:933 msgid "window functions are not allowed in window definitions" msgstr "fönsterfunktioner tillåts inte i fönsterdefinitioner" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:965 msgid "window functions are not allowed in check constraints" msgstr "fönsterfunktioner tillåts inte i check-villkor" -#: parser/parse_agg.c:942 +#: parser/parse_agg.c:969 msgid "window functions are not allowed in DEFAULT expressions" msgstr "fönsterfunktioner tillåts inte i DEFAULT-uttryck" -#: parser/parse_agg.c:945 +#: parser/parse_agg.c:972 msgid "window functions are not allowed in index expressions" msgstr "fönsterfunktioner tillåts inte i indexuttryck" -#: parser/parse_agg.c:948 +#: parser/parse_agg.c:975 msgid "window functions are not allowed in statistics expressions" msgstr "fönsterfunktioner tillåts inte i statistikuttryck" -#: parser/parse_agg.c:951 +#: parser/parse_agg.c:978 msgid "window functions are not allowed in index predicates" msgstr "fönsterfunktioner tillåts inte i indexpredikat" -#: parser/parse_agg.c:954 +#: parser/parse_agg.c:981 msgid "window functions are not allowed in transform expressions" msgstr "fönsterfunktioner tillåts inte i transform-uttrycket" -#: parser/parse_agg.c:957 +#: parser/parse_agg.c:984 msgid "window functions are not allowed in EXECUTE parameters" msgstr "fönsterfunktioner tillåts inte i EXECUTE-parametrar" -#: parser/parse_agg.c:960 +#: parser/parse_agg.c:987 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "fönsterfunktioner tillåts inte i WHEN-villkor" -#: parser/parse_agg.c:963 +#: parser/parse_agg.c:990 msgid "window functions are not allowed in partition bound" msgstr "fönsterfunktioner tillåts inte i partitiongräns" -#: parser/parse_agg.c:966 +#: parser/parse_agg.c:993 msgid "window functions are not allowed in partition key expressions" msgstr "fönsterfunktioner tillåts inte i partitionsnyckeluttryck" -#: parser/parse_agg.c:969 +#: parser/parse_agg.c:996 msgid "window functions are not allowed in CALL arguments" msgstr "fönsterfunktioner tillåts inte i CALL-argument" -#: parser/parse_agg.c:972 +#: parser/parse_agg.c:999 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "fönsterfunktioner tillåts inte i COPY FROM WHERE-villkor" -#: parser/parse_agg.c:975 +#: parser/parse_agg.c:1002 msgid "window functions are not allowed in column generation expressions" msgstr "fönsterfunktioner tillåts inte i kolumngenereringsuttryck" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:998 parser/parse_clause.c:1843 +#: parser/parse_agg.c:1025 parser/parse_clause.c:1843 #, c-format msgid "window functions are not allowed in %s" msgstr "fönsterfunktioner tillåts inte i %s" -#: parser/parse_agg.c:1032 parser/parse_clause.c:2677 +#: parser/parse_agg.c:1059 parser/parse_clause.c:2677 #, c-format msgid "window \"%s\" does not exist" msgstr "fönster \"%s\" finns inte" -#: parser/parse_agg.c:1116 +#: parser/parse_agg.c:1143 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "för många grupperingsmängder (maximalt 4096)" -#: parser/parse_agg.c:1256 +#: parser/parse_agg.c:1283 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "aggregatfunktioner tillåts inte i en rekursiv frågas rekursiva term" -#: parser/parse_agg.c:1449 +#: parser/parse_agg.c:1476 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" msgstr "kolumn \"%s.%s\" måste stå med i GROUP BY-klausulen eller användas i en aggregatfunktion" -#: parser/parse_agg.c:1452 +#: parser/parse_agg.c:1479 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Direkta argument till en sorterad-mängd-aggregat får bara använda grupperade kolumner." -#: parser/parse_agg.c:1457 +#: parser/parse_agg.c:1484 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "underfråga använder ogrupperad kolumn \"%s.%s\" från yttre fråga" -#: parser/parse_agg.c:1621 +#: parser/parse_agg.c:1648 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "argument till GROUPING måste vare grupputtryck på den tillhörande frågenivån" @@ -17690,22 +17721,22 @@ msgstr "FROM måste ge exakt ett värde per partitionerande kolumn" 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:4240 +#: parser/parse_utilcmd.c:4242 #, c-format msgid "cannot specify NULL in range bound" msgstr "kan inte ange NULL i range-gräns" -#: parser/parse_utilcmd.c:4289 +#: parser/parse_utilcmd.c:4290 #, 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:4296 +#: parser/parse_utilcmd.c:4297 #, 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:4339 +#: parser/parse_utilcmd.c:4340 #, 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\"" @@ -18050,17 +18081,17 @@ msgstr "automatisk vacuum av tabell \"%s.%s.%s\"" msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "automatisk analys av tabell \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2751 +#: postmaster/autovacuum.c:2754 #, c-format msgid "processing work entry for relation \"%s.%s.%s\"" msgstr "processar arbetspost för relation \"%s.%s.%s\"" -#: postmaster/autovacuum.c:3437 +#: postmaster/autovacuum.c:3440 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "autovacuum har inte startats på grund av en felkonfigurering" -#: postmaster/autovacuum.c:3438 +#: postmaster/autovacuum.c:3441 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Slå på flaggan \"track_counts\"." @@ -18180,7 +18211,7 @@ msgstr "Det misslyckade arkiveringskommandot var: %s" msgid "archive command was terminated by exception 0x%X" msgstr "arkiveringskommandot terminerades med avbrott 0x%X" -#: postmaster/pgarch.c:597 postmaster/postmaster.c:3759 +#: postmaster/pgarch.c:597 postmaster/postmaster.c:3761 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "Se C-include-fil \"ntstatus.h\" för en beskrivning av det hexdecimala värdet." @@ -18372,103 +18403,103 @@ msgstr "WAL-strömning (max_wal_senders > 0) kräver wal_level \"replica\" eller msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: ogiltiga datumtokentabeller, det behöver lagas\n" -#: postmaster/postmaster.c:1052 +#: postmaster/postmaster.c:1054 #, c-format msgid "could not create I/O completion port for child queue" msgstr "kunde inte skapa \"I/O completion port\" för barnkö" -#: postmaster/postmaster.c:1128 +#: postmaster/postmaster.c:1130 #, c-format msgid "ending log output to stderr" msgstr "avslutar loggutmatning till stderr" -#: postmaster/postmaster.c:1129 +#: postmaster/postmaster.c:1131 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "Framtida loggutmatning kommer gå till logg-destination \"%s\"." -#: postmaster/postmaster.c:1140 +#: postmaster/postmaster.c:1142 #, c-format msgid "starting %s" msgstr "startar %s" -#: postmaster/postmaster.c:1161 postmaster/postmaster.c:1260 +#: postmaster/postmaster.c:1163 postmaster/postmaster.c:1262 #: utils/init/miscinit.c:1684 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "ogiltigt listsyntax för parameter \"%s\"" -#: postmaster/postmaster.c:1192 +#: postmaster/postmaster.c:1194 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "kunde inte skapa lyssnande uttag (socket) för \"%s\"" -#: postmaster/postmaster.c:1198 +#: postmaster/postmaster.c:1200 #, c-format msgid "could not create any TCP/IP sockets" msgstr "kunde inte skapa TCP/IP-uttag (socket)" -#: postmaster/postmaster.c:1230 +#: postmaster/postmaster.c:1232 #, c-format msgid "DNSServiceRegister() failed: error code %ld" msgstr "DNSServiceRegister() misslyckades: felkod %ld" -#: postmaster/postmaster.c:1282 +#: postmaster/postmaster.c:1284 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "kunde inte skapa unix-domän-uttag (socket) i katalog \"%s\"" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1290 #, c-format msgid "could not create any Unix-domain sockets" msgstr "kunde inte skapa något Unix-domän-uttag (socket)" -#: postmaster/postmaster.c:1300 +#: postmaster/postmaster.c:1302 #, c-format msgid "no socket created for listening" msgstr "inget uttag (socket) skapat för lyssnande" -#: postmaster/postmaster.c:1331 +#: postmaster/postmaster.c:1333 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: kunde inte ändra rättigheter på extern PID-fil \"%s\": %s\n" -#: postmaster/postmaster.c:1335 +#: postmaster/postmaster.c:1337 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: kunde inte skriva extern PID-fil \"%s\": %s\n" -#: postmaster/postmaster.c:1368 utils/init/postinit.c:216 +#: postmaster/postmaster.c:1370 utils/init/postinit.c:216 #, c-format msgid "could not load pg_hba.conf" msgstr "kunde inte ladda pg_hba.conf" -#: postmaster/postmaster.c:1396 +#: postmaster/postmaster.c:1398 #, c-format msgid "postmaster became multithreaded during startup" msgstr "postmaster blev flertrådad under uppstart" -#: postmaster/postmaster.c:1397 postmaster/postmaster.c:5148 +#: postmaster/postmaster.c:1399 postmaster/postmaster.c:5150 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Sätt omgivningsvariabeln LC_ALL till en giltig lokal." -#: postmaster/postmaster.c:1492 +#: postmaster/postmaster.c:1494 #, c-format msgid "%s: could not locate my own executable path" msgstr "%s: kunde inte hitta min egna körbara fils sökväg" -#: postmaster/postmaster.c:1499 +#: postmaster/postmaster.c:1501 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: kunde inte hitta matchande postgres-binär" -#: postmaster/postmaster.c:1522 utils/misc/tzparser.c:340 +#: postmaster/postmaster.c:1524 utils/misc/tzparser.c:340 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." msgstr "Detta tyder på en inkomplett PostgreSQL-installation alternativt att filen \"%s\" har flyttats bort från sin korrekta plats." -#: postmaster/postmaster.c:1549 +#: postmaster/postmaster.c:1551 #, c-format msgid "" "%s: could not find the database system\n" @@ -18479,476 +18510,476 @@ msgstr "" "Förväntade mig att hitta det i katalogen \"%s\",\n" "men kunde inte öppna filen \"%s\": %s\n" -#: postmaster/postmaster.c:1726 +#: postmaster/postmaster.c:1728 #, c-format msgid "select() failed in postmaster: %m" msgstr "select() misslyckades i postmaster: %m" -#: postmaster/postmaster.c:1862 +#: postmaster/postmaster.c:1864 #, c-format msgid "issuing SIGKILL to recalcitrant children" msgstr "skickar SIGKILL till motsträviga barn" -#: postmaster/postmaster.c:1883 +#: postmaster/postmaster.c:1885 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" msgstr "stänger ner omedelbart då datakatalogens låsfil är ogiltig" -#: postmaster/postmaster.c:1986 postmaster/postmaster.c:2014 +#: postmaster/postmaster.c:1988 postmaster/postmaster.c:2016 #, c-format msgid "incomplete startup packet" msgstr "ofullständigt startuppaket" -#: postmaster/postmaster.c:1998 postmaster/postmaster.c:2031 +#: postmaster/postmaster.c:2000 postmaster/postmaster.c:2033 #, c-format msgid "invalid length of startup packet" msgstr "ogiltig längd på startuppaket" -#: postmaster/postmaster.c:2060 +#: postmaster/postmaster.c:2062 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "misslyckades att skicka SSL-förhandlingssvar: %m" -#: postmaster/postmaster.c:2078 +#: postmaster/postmaster.c:2080 #, c-format msgid "received unencrypted data after SSL request" msgstr "tog emot okrypterad data efter SSL-förfrågan" -#: postmaster/postmaster.c:2079 postmaster/postmaster.c:2123 +#: postmaster/postmaster.c:2081 postmaster/postmaster.c:2125 #, c-format msgid "This could be either a client-software bug or evidence of an attempted man-in-the-middle attack." msgstr "Detta kan antingen vara en bug i klientens mjukvara eller bevis på ett försök att utföra en attack av typen man-in-the-middle." -#: postmaster/postmaster.c:2104 +#: postmaster/postmaster.c:2106 #, c-format msgid "failed to send GSSAPI negotiation response: %m" msgstr "misslyckades att skicka GSSAPI-förhandlingssvar: %m" -#: postmaster/postmaster.c:2122 +#: postmaster/postmaster.c:2124 #, c-format msgid "received unencrypted data after GSSAPI encryption request" msgstr "tog emot okrypterad data efter GSSAPI-krypteringsförfrågan" -#: postmaster/postmaster.c:2146 +#: postmaster/postmaster.c:2148 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "inget stöd för framändans protokoll %u.%u: servern stöder %u.0 till %u.%u" -#: postmaster/postmaster.c:2210 utils/misc/guc.c:7138 utils/misc/guc.c:7174 +#: postmaster/postmaster.c:2212 utils/misc/guc.c:7138 utils/misc/guc.c:7174 #: utils/misc/guc.c:7244 utils/misc/guc.c:8628 utils/misc/guc.c:11596 #: utils/misc/guc.c:11637 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "ogiltigt värde för parameter \"%s\": \"%s\"" -#: postmaster/postmaster.c:2213 +#: postmaster/postmaster.c:2215 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "Giltiga värden är: \"false\", 0, \"true\", 1, \"database\"." -#: postmaster/postmaster.c:2258 +#: postmaster/postmaster.c:2260 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "ogiltig startpaketlayout: förväntade en terminator som sista byte" -#: postmaster/postmaster.c:2275 +#: postmaster/postmaster.c:2277 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "inget PostgreSQL-användarnamn angivet i startuppaketet" -#: postmaster/postmaster.c:2339 +#: postmaster/postmaster.c:2341 #, c-format msgid "the database system is starting up" msgstr "databassystemet startar upp" -#: postmaster/postmaster.c:2345 +#: postmaster/postmaster.c:2347 #, c-format msgid "the database system is not yet accepting connections" msgstr "databassystemet tar ännu inte emot anslutningar" -#: postmaster/postmaster.c:2346 +#: postmaster/postmaster.c:2348 #, c-format msgid "Consistent recovery state has not been yet reached." msgstr "Konsistent återställningstillstånd har ännu inte uppnåtts." -#: postmaster/postmaster.c:2350 +#: postmaster/postmaster.c:2352 #, c-format msgid "the database system is not accepting connections" msgstr "databassystemet tar inte emot anslutningar" -#: postmaster/postmaster.c:2351 +#: postmaster/postmaster.c:2353 #, c-format msgid "Hot standby mode is disabled." msgstr "Hot standby-läge är avstängt." -#: postmaster/postmaster.c:2356 +#: postmaster/postmaster.c:2358 #, c-format msgid "the database system is shutting down" msgstr "databassystemet stänger ner" -#: postmaster/postmaster.c:2361 +#: postmaster/postmaster.c:2363 #, c-format msgid "the database system is in recovery mode" msgstr "databassystemet är återställningsläge" -#: postmaster/postmaster.c:2366 storage/ipc/procarray.c:499 +#: postmaster/postmaster.c:2368 storage/ipc/procarray.c:499 #: storage/ipc/sinvaladt.c:297 storage/lmgr/proc.c:361 #, c-format msgid "sorry, too many clients already" msgstr "ledsen, för många klienter" -#: postmaster/postmaster.c:2456 +#: postmaster/postmaster.c:2458 #, c-format msgid "wrong key in cancel request for process %d" msgstr "fel nyckel i avbrytbegäran för process %d" -#: postmaster/postmaster.c:2468 +#: postmaster/postmaster.c:2470 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "PID %d i avbrytbegäran matchade inte någon process" -#: postmaster/postmaster.c:2721 +#: postmaster/postmaster.c:2723 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "mottog SIGHUP, läser om konfigurationsfiler" #. translator: %s is a configuration file -#: postmaster/postmaster.c:2747 postmaster/postmaster.c:2751 +#: postmaster/postmaster.c:2749 postmaster/postmaster.c:2753 #, c-format msgid "%s was not reloaded" msgstr "%s laddades inte om" -#: postmaster/postmaster.c:2761 +#: postmaster/postmaster.c:2763 #, c-format msgid "SSL configuration was not reloaded" msgstr "SSL-konfiguration laddades inte om" -#: postmaster/postmaster.c:2817 +#: postmaster/postmaster.c:2819 #, c-format msgid "received smart shutdown request" msgstr "tog emot förfrågan om att stänga ner smart" -#: postmaster/postmaster.c:2863 +#: postmaster/postmaster.c:2865 #, c-format msgid "received fast shutdown request" msgstr "tog emot förfrågan om att stänga ner snabbt" -#: postmaster/postmaster.c:2881 +#: postmaster/postmaster.c:2883 #, c-format msgid "aborting any active transactions" msgstr "avbryter aktiva transaktioner" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2907 #, c-format msgid "received immediate shutdown request" msgstr "mottog begäran för omedelbar nedstängning" -#: postmaster/postmaster.c:2982 +#: postmaster/postmaster.c:2984 #, c-format msgid "shutdown at recovery target" msgstr "nedstängs vid återställningsmål" -#: postmaster/postmaster.c:3000 postmaster/postmaster.c:3036 +#: postmaster/postmaster.c:3002 postmaster/postmaster.c:3038 msgid "startup process" msgstr "uppstartprocess" -#: postmaster/postmaster.c:3003 +#: postmaster/postmaster.c:3005 #, c-format msgid "aborting startup due to startup process failure" msgstr "avbryter uppstart på grund av fel i startprocessen" -#: postmaster/postmaster.c:3078 +#: postmaster/postmaster.c:3080 #, c-format msgid "database system is ready to accept connections" msgstr "databassystemet är redo att ta emot anslutningar" -#: postmaster/postmaster.c:3099 +#: postmaster/postmaster.c:3101 msgid "background writer process" msgstr "bakgrundsskrivarprocess" -#: postmaster/postmaster.c:3153 +#: postmaster/postmaster.c:3155 msgid "checkpointer process" msgstr "checkpoint-process" -#: postmaster/postmaster.c:3169 +#: postmaster/postmaster.c:3171 msgid "WAL writer process" msgstr "WAL-skrivarprocess" -#: postmaster/postmaster.c:3184 +#: postmaster/postmaster.c:3186 msgid "WAL receiver process" msgstr "WAL-mottagarprocess" -#: postmaster/postmaster.c:3199 +#: postmaster/postmaster.c:3201 msgid "autovacuum launcher process" msgstr "autovacuum-startprocess" -#: postmaster/postmaster.c:3217 +#: postmaster/postmaster.c:3219 msgid "archiver process" msgstr "arkiveringsprocess" -#: postmaster/postmaster.c:3232 +#: postmaster/postmaster.c:3234 msgid "statistics collector process" msgstr "statistikinsamlingsprocess" -#: postmaster/postmaster.c:3246 +#: postmaster/postmaster.c:3248 msgid "system logger process" msgstr "system-logg-process" -#: postmaster/postmaster.c:3310 +#: postmaster/postmaster.c:3312 #, c-format msgid "background worker \"%s\"" msgstr "bakgrundsarbetare \"%s\"" -#: postmaster/postmaster.c:3394 postmaster/postmaster.c:3414 -#: postmaster/postmaster.c:3421 postmaster/postmaster.c:3439 +#: postmaster/postmaster.c:3396 postmaster/postmaster.c:3416 +#: postmaster/postmaster.c:3423 postmaster/postmaster.c:3441 msgid "server process" msgstr "serverprocess" -#: postmaster/postmaster.c:3493 +#: postmaster/postmaster.c:3495 #, c-format msgid "terminating any other active server processes" msgstr "avslutar andra aktiva serverprocesser" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3748 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) avslutade med felkod %d" -#: postmaster/postmaster.c:3748 postmaster/postmaster.c:3760 -#: postmaster/postmaster.c:3770 postmaster/postmaster.c:3781 +#: postmaster/postmaster.c:3750 postmaster/postmaster.c:3762 +#: postmaster/postmaster.c:3772 postmaster/postmaster.c:3783 #, c-format msgid "Failed process was running: %s" msgstr "Misslyckad process körde: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3757 +#: postmaster/postmaster.c:3759 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) terminerades av avbrott 0x%X" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3767 +#: postmaster/postmaster.c:3769 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d) terminerades av signal %d: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3779 +#: postmaster/postmaster.c:3781 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) avslutade med okänd status %d" -#: postmaster/postmaster.c:3993 +#: postmaster/postmaster.c:3995 #, c-format msgid "abnormal database system shutdown" msgstr "ej normal databasnedstängning" -#: postmaster/postmaster.c:4031 +#: postmaster/postmaster.c:4033 #, c-format msgid "shutting down due to startup process failure" msgstr "stänger ner på grund av fel i startprocessen" -#: postmaster/postmaster.c:4037 +#: postmaster/postmaster.c:4039 #, c-format msgid "shutting down because restart_after_crash is off" msgstr "stänger ner då restart_after_crash är av" -#: postmaster/postmaster.c:4049 +#: postmaster/postmaster.c:4051 #, c-format msgid "all server processes terminated; reinitializing" msgstr "alla serverprocesser är avslutade; initierar på nytt" -#: postmaster/postmaster.c:4223 postmaster/postmaster.c:5575 -#: postmaster/postmaster.c:5966 +#: postmaster/postmaster.c:4225 postmaster/postmaster.c:5577 +#: postmaster/postmaster.c:5968 #, c-format msgid "could not generate random cancel key" msgstr "kunde inte skapa slumpad avbrytningsnyckel" -#: postmaster/postmaster.c:4277 +#: postmaster/postmaster.c:4279 #, c-format msgid "could not fork new process for connection: %m" msgstr "kunde inte fork():a ny process for uppkoppling: %m" -#: postmaster/postmaster.c:4319 +#: postmaster/postmaster.c:4321 msgid "could not fork new process for connection: " msgstr "kunde inte fork():a ny process for uppkoppling: " -#: postmaster/postmaster.c:4425 +#: postmaster/postmaster.c:4427 #, c-format msgid "connection received: host=%s port=%s" msgstr "ansluting mottagen: värd=%s port=%s" -#: postmaster/postmaster.c:4430 +#: postmaster/postmaster.c:4432 #, c-format msgid "connection received: host=%s" msgstr "ansluting mottagen: värd=%s" -#: postmaster/postmaster.c:4673 +#: postmaster/postmaster.c:4675 #, 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:4733 #, c-format msgid "could not create backend parameter file mapping: error code %lu" msgstr "kunde inte skapa fil-mapping för backend-parametrar: felkod %lu" -#: postmaster/postmaster.c:4740 +#: postmaster/postmaster.c:4742 #, c-format msgid "could not map backend parameter memory: error code %lu" msgstr "kunde inte mappa minne för backend-parametrar: felkod %lu" -#: postmaster/postmaster.c:4767 +#: postmaster/postmaster.c:4769 #, c-format msgid "subprocess command line too long" msgstr "subprocessens kommando är för långt" -#: postmaster/postmaster.c:4785 +#: postmaster/postmaster.c:4787 #, c-format msgid "CreateProcess() call failed: %m (error code %lu)" msgstr "Anrop till CreateProcess() misslyckades: %m (felkod %lu)" -#: postmaster/postmaster.c:4812 +#: postmaster/postmaster.c:4814 #, c-format msgid "could not unmap view of backend parameter file: error code %lu" msgstr "kunde inte avmappa vy för backend:ens parameterfil: felkod %lu" -#: postmaster/postmaster.c:4816 +#: postmaster/postmaster.c:4818 #, c-format msgid "could not close handle to backend parameter file: error code %lu" msgstr "kunde inte stänga \"handle\" till backend:ens parameterfil: felkod %lu" -#: postmaster/postmaster.c:4838 +#: postmaster/postmaster.c:4840 #, 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:4839 +#: postmaster/postmaster.c:4841 #, c-format msgid "This might be caused by ASLR or antivirus software." msgstr "Detta kan orsakas av ASLR eller antivirusprogram." -#: postmaster/postmaster.c:5021 +#: postmaster/postmaster.c:5023 #, c-format msgid "SSL configuration could not be loaded in child process" msgstr "SSL-konfigurering kunde inte laddas i barnprocess" -#: postmaster/postmaster.c:5147 +#: postmaster/postmaster.c:5149 #, c-format msgid "postmaster became multithreaded" msgstr "postmaster blev flertrådad" -#: postmaster/postmaster.c:5235 +#: postmaster/postmaster.c:5237 #, 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:5499 +#: postmaster/postmaster.c:5501 #, c-format msgid "could not fork startup process: %m" msgstr "kunde inte starta startup-processen: %m" -#: postmaster/postmaster.c:5503 +#: postmaster/postmaster.c:5505 #, c-format msgid "could not fork archiver process: %m" msgstr "kunde inte fork:a arkivprocess: %m" -#: postmaster/postmaster.c:5507 +#: postmaster/postmaster.c:5509 #, c-format msgid "could not fork background writer process: %m" msgstr "kunde inte starta process för bakgrundsskrivare: %m" -#: postmaster/postmaster.c:5511 +#: postmaster/postmaster.c:5513 #, c-format msgid "could not fork checkpointer process: %m" msgstr "kunde inte fork:a bakgrundsprocess: %m" -#: postmaster/postmaster.c:5515 +#: postmaster/postmaster.c:5517 #, c-format msgid "could not fork WAL writer process: %m" msgstr "kunde inte fork:a WAL-skrivprocess: %m" -#: postmaster/postmaster.c:5519 +#: postmaster/postmaster.c:5521 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "kunde inte fork:a WAL-mottagarprocess: %m" -#: postmaster/postmaster.c:5523 +#: postmaster/postmaster.c:5525 #, c-format msgid "could not fork process: %m" msgstr "kunde inte fork:a process: %m" -#: postmaster/postmaster.c:5724 postmaster/postmaster.c:5747 +#: postmaster/postmaster.c:5726 postmaster/postmaster.c:5749 #, c-format msgid "database connection requirement not indicated during registration" msgstr "krav på databasanslutning fanns inte med vid registering" -#: postmaster/postmaster.c:5731 postmaster/postmaster.c:5754 +#: postmaster/postmaster.c:5733 postmaster/postmaster.c:5756 #, c-format msgid "invalid processing mode in background worker" msgstr "ogiltigt processläge i bakgrundsarbetare" -#: postmaster/postmaster.c:5839 +#: postmaster/postmaster.c:5841 #, c-format msgid "could not fork worker process: %m" msgstr "kunde inte starta (fork) arbetarprocess: %m" -#: postmaster/postmaster.c:5952 +#: postmaster/postmaster.c:5954 #, c-format msgid "no slot available for new worker process" msgstr "ingen slot tillgänglig för ny arbetsprocess" -#: postmaster/postmaster.c:6286 +#: postmaster/postmaster.c:6288 #, 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:6318 +#: postmaster/postmaster.c:6320 #, 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:6347 +#: postmaster/postmaster.c:6349 #, 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:6354 +#: postmaster/postmaster.c:6356 #, 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:6363 +#: postmaster/postmaster.c:6365 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "kunde inte ta bort fil \"%s\": %s\n" -#: postmaster/postmaster.c:6380 +#: postmaster/postmaster.c:6382 #, 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:6389 +#: postmaster/postmaster.c:6391 #, 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:6396 +#: postmaster/postmaster.c:6398 #, 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:6558 +#: postmaster/postmaster.c:6560 #, c-format msgid "could not read exit code for process\n" msgstr "kunde inte läsa avslutningskod för process\n" -#: postmaster/postmaster.c:6600 +#: postmaster/postmaster.c:6602 #, c-format msgid "could not post child completion status\n" msgstr "kunde inte skicka barnets avslutningsstatus\n" @@ -19319,12 +19350,12 @@ msgstr "logisk avkodning kräver en databasanslutning" msgid "logical decoding cannot be used while in recovery" msgstr "logisk avkodning kan inte användas under återställning" -#: replication/logical/logical.c:350 replication/logical/logical.c:502 +#: replication/logical/logical.c:350 replication/logical/logical.c:504 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "kan inte använda fysisk replikeringsslot för logisk avkodning" -#: replication/logical/logical.c:355 replication/logical/logical.c:507 +#: replication/logical/logical.c:355 replication/logical/logical.c:509 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "replikeringsslot \"%s\" har inte skapats i denna databasen" @@ -19334,40 +19365,40 @@ msgstr "replikeringsslot \"%s\" har inte skapats i denna databasen" msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "kan inte skapa logisk replikeringsslot i transaktion som redan har utfört skrivningar" -#: replication/logical/logical.c:552 +#: replication/logical/logical.c:554 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "startar logisk avkodning för slot \"%s\"" -#: replication/logical/logical.c:554 +#: replication/logical/logical.c:556 #, c-format msgid "Streaming transactions committing after %X/%X, reading WAL from %X/%X." msgstr "Strömmar transaktioner commit:ade efter %X/%X, läser WAL från %X/%X" -#: replication/logical/logical.c:699 +#: replication/logical/logical.c:701 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "slot \"%s\", utdata-plugin \"%s\", i callback:en %s, associerad LSN %X/%X" -#: replication/logical/logical.c:705 +#: replication/logical/logical.c:707 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "slot \"%s\", utdata-plugin \"%s\", i callback:en %s" -#: replication/logical/logical.c:876 replication/logical/logical.c:921 -#: replication/logical/logical.c:966 replication/logical/logical.c:1012 +#: replication/logical/logical.c:878 replication/logical/logical.c:923 +#: replication/logical/logical.c:968 replication/logical/logical.c:1014 #, c-format msgid "logical replication at prepare time requires a %s callback" msgstr "logisk replikering vid prepare-tillfället kräver en %s-callback" -#: replication/logical/logical.c:1244 replication/logical/logical.c:1293 -#: replication/logical/logical.c:1334 replication/logical/logical.c:1420 -#: replication/logical/logical.c:1469 +#: replication/logical/logical.c:1246 replication/logical/logical.c:1295 +#: replication/logical/logical.c:1336 replication/logical/logical.c:1422 +#: replication/logical/logical.c:1471 #, c-format msgid "logical streaming requires a %s callback" msgstr "logisk strömning kräven en %s-callback" -#: replication/logical/logical.c:1379 +#: replication/logical/logical.c:1381 #, c-format msgid "logical streaming at prepare time requires a %s callback" msgstr "logisk strömning vid prepare-tillfället kräver en %s-callback" @@ -19479,7 +19510,7 @@ msgid "could not find free replication state slot for replication origin with OI msgstr "kunde inte hitta ledig replikerings-state-slot för replikerings-origin med OID %u" #: replication/logical/origin.c:941 replication/logical/origin.c:1128 -#: replication/slot.c:1867 +#: replication/slot.c:1934 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Öka max_replication_slots och försök igen." @@ -19647,17 +19678,12 @@ msgstr "tabell \"%s.%s\" hittades inte hos publicerare" 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:1090 +#: replication/logical/tablesync.c:1104 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "tabellkopiering kunde inte starta transaktion på publiceraren: %s" -#: replication/logical/tablesync.c:1131 -#, c-format -msgid "replication origin \"%s\" already exists" -msgstr "replikeringsurspring \"%s\" finns redan" - -#: replication/logical/tablesync.c:1144 +#: replication/logical/tablesync.c:1142 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "tabellkopiering kunde inte slutföra transaktion på publiceraren: %s" @@ -19752,148 +19778,147 @@ msgstr "ogiltig proto_version" msgid "proto_version \"%s\" out of range" msgstr "proto_version \"%s\" är utanför giltigt intervall" -#: replication/pgoutput/pgoutput.c:227 +#: replication/pgoutput/pgoutput.c:231 #, c-format msgid "invalid publication_names syntax" msgstr "ogiltig publication_names-syntax" -#: replication/pgoutput/pgoutput.c:324 +#: replication/pgoutput/pgoutput.c:328 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or lower" msgstr "klienten skickade proto_version=%d men vi stöder bara protokoll %d eller lägre" -#: replication/pgoutput/pgoutput.c:330 +#: replication/pgoutput/pgoutput.c:334 #, c-format msgid "client sent proto_version=%d but we only support protocol %d or higher" msgstr "klienten skickade proto_version=%d men vi stöder bara protokoll %d eller högre" -#: replication/pgoutput/pgoutput.c:336 +#: replication/pgoutput/pgoutput.c:340 #, c-format msgid "publication_names parameter missing" msgstr "saknar parameter publication_names" -#: replication/pgoutput/pgoutput.c:349 +#: replication/pgoutput/pgoutput.c:353 #, c-format msgid "requested proto_version=%d does not support streaming, need %d or higher" msgstr "efterfrågade proto_version=%d stöder inte strömning, kräver %d eller högre" -#: replication/pgoutput/pgoutput.c:354 +#: replication/pgoutput/pgoutput.c:358 #, c-format msgid "streaming requested, but not supported by output plugin" msgstr "ströming begärdes men det stöds inte av utdata-plugin:en" -#: replication/slot.c:180 +#: replication/slot.c:212 #, c-format msgid "replication slot name \"%s\" is too short" msgstr "replikeringsslotnamn \"%s\" är för kort" -#: replication/slot.c:189 +#: replication/slot.c:220 #, c-format msgid "replication slot name \"%s\" is too long" msgstr "replikeringsslotnamn \"%s\" är för långt" -#: replication/slot.c:202 +#: replication/slot.c:232 #, c-format msgid "replication slot name \"%s\" contains invalid character" msgstr "replikeringsslotnamn \"%s\" innehåller ogiltiga tecken" -#: replication/slot.c:204 -#, c-format +#: replication/slot.c:233 msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character." msgstr "Replikeringsslotnamn får bara innehålla små bokstäver, nummer och understreck." -#: replication/slot.c:258 +#: replication/slot.c:287 #, c-format msgid "replication slot \"%s\" already exists" msgstr "replikeringsslot \"%s\" finns redan" -#: replication/slot.c:268 +#: replication/slot.c:297 #, c-format msgid "all replication slots are in use" msgstr "alla replikeringsslots används" -#: replication/slot.c:269 +#: replication/slot.c:298 #, c-format msgid "Free one or increase max_replication_slots." msgstr "Frigör en eller öka max_replication_slots." -#: replication/slot.c:402 replication/slotfuncs.c:761 +#: replication/slot.c:431 replication/slotfuncs.c:761 #: utils/adt/pgstatfuncs.c:2228 #, c-format msgid "replication slot \"%s\" does not exist" msgstr "replikeringsslot \"%s\" existerar inte" -#: replication/slot.c:448 replication/slot.c:1025 +#: replication/slot.c:477 replication/slot.c:1083 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "replikeringsslot \"%s\" är aktiv för PID %d" -#: replication/slot.c:676 replication/slot.c:1419 replication/slot.c:1802 +#: replication/slot.c:705 replication/slot.c:1479 replication/slot.c:1869 #, c-format msgid "could not remove directory \"%s\"" msgstr "kunde inte ta bort katalog \"%s\"" -#: replication/slot.c:1060 +#: replication/slot.c:1118 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "replikeringsslots kan bara användas om max_replication_slots > 0" -#: replication/slot.c:1065 +#: replication/slot.c:1123 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "replikeringsslots kan bara användas om wal_level >= replica" -#: replication/slot.c:1250 +#: replication/slot.c:1310 #, c-format msgid "terminating process %d to release replication slot \"%s\"" msgstr "avslutar process %d för att frigöra replikeringsslot \"%s\"" -#: replication/slot.c:1288 +#: replication/slot.c:1348 #, c-format msgid "invalidating slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size" msgstr "invaliderar slot \"%s\" då dess restart_lsn %X/%X överskrider max_slot_wal_keep_size" -#: replication/slot.c:1740 +#: replication/slot.c:1807 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "replikeringsslotfil \"%s\" har fel magiskt nummer: %u istället för %u" -#: replication/slot.c:1747 +#: replication/slot.c:1814 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "replikeringsslotfil \"%s\" har en icke stödd version %u" -#: replication/slot.c:1754 +#: replication/slot.c:1821 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "replikeringsslotfil \"%s\" har felaktig längd %u" -#: replication/slot.c:1790 +#: replication/slot.c:1857 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "kontrollsummefel för replikeringsslot-fil \"%s\": är %u, skall vara %u" -#: replication/slot.c:1824 +#: replication/slot.c:1891 #, c-format msgid "logical replication slot \"%s\" exists, but wal_level < logical" msgstr "logisk replikeringsslot \"%s\" finns men wal_level < replica" -#: replication/slot.c:1826 +#: replication/slot.c:1893 #, c-format msgid "Change wal_level to be logical or higher." msgstr "Ändra wal_level till logical eller högre." -#: replication/slot.c:1830 +#: replication/slot.c:1897 #, c-format msgid "physical replication slot \"%s\" exists, but wal_level < replica" msgstr "fysisk replikeringsslot \"%s\" finns men wal_level < replica" -#: replication/slot.c:1832 +#: replication/slot.c:1899 #, c-format msgid "Change wal_level to be replica or higher." msgstr "Ändra wal_level till replica eller högre." -#: replication/slot.c:1866 +#: replication/slot.c:1933 #, c-format msgid "too many replication slots active before shutdown" msgstr "för många aktiva replikeringsslottar innan nerstängning" @@ -20058,124 +20083,124 @@ msgstr "hämtar tidslinjehistorikfil för tidslinje %u från primära servern" 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:525 storage/smgr/md.c:1336 +#: replication/walsender.c:539 storage/smgr/md.c:1339 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "kunde inte söka (seek) till slutet av filen \"%s\": %m" -#: replication/walsender.c:529 +#: replication/walsender.c:543 #, 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:580 +#: replication/walsender.c:594 #, 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:609 +#: replication/walsender.c:623 #, 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:678 +#: replication/walsender.c:692 #, 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:681 +#: replication/walsender.c:695 #, 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:725 +#: replication/walsender.c:739 #, 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" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:975 +#: replication/walsender.c:989 #, c-format msgid "%s must not be called inside a transaction" msgstr "%s får inte anropas i en transaktion" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:985 +#: replication/walsender.c:999 #, c-format msgid "%s must be called inside a transaction" msgstr "%s måste anropas i en transaktion" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:991 +#: replication/walsender.c:1005 #, c-format msgid "%s must be called in REPEATABLE READ isolation mode transaction" msgstr "%s måste anropas i transaktions REPEATABLE READ-isolationsläge" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:997 +#: replication/walsender.c:1011 #, c-format msgid "%s must be called before any query" msgstr "%s måste anropas innan någon fråga" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:1003 +#: replication/walsender.c:1017 #, c-format msgid "%s must not be called in a subtransaction" msgstr "%s får inte anropas i en undertransaktion" -#: replication/walsender.c:1146 +#: replication/walsender.c:1160 #, c-format msgid "cannot read from logical replication slot \"%s\"" msgstr "kan inte läsa från logisk replikeringsslot \"%s\"" -#: replication/walsender.c:1148 +#: replication/walsender.c:1162 #, c-format msgid "This slot has been invalidated because it exceeded the maximum reserved size." msgstr "Denna slot har invaliderats då den överskred maximal reserverad storlek." -#: replication/walsender.c:1158 +#: replication/walsender.c:1172 #, c-format msgid "terminating walsender process after promotion" msgstr "stänger ner walsender-process efter befordran" -#: replication/walsender.c:1552 +#: replication/walsender.c:1566 #, 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:1587 +#: replication/walsender.c:1601 #, 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:1620 +#: replication/walsender.c:1634 #, c-format msgid "received replication command: %s" msgstr "tog emot replikeringskommando: %s" -#: replication/walsender.c:1628 tcop/fastpath.c:208 tcop/postgres.c:1046 +#: replication/walsender.c:1642 tcop/fastpath.c:208 tcop/postgres.c:1046 #: tcop/postgres.c:1405 tcop/postgres.c:1678 tcop/postgres.c:2159 #: tcop/postgres.c:2592 tcop/postgres.c:2671 #, 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:1763 replication/walsender.c:1798 +#: replication/walsender.c:1777 replication/walsender.c:1812 #, c-format msgid "unexpected EOF on standby connection" msgstr "oväntat EOF från standby-anslutning" -#: replication/walsender.c:1786 +#: replication/walsender.c:1800 #, c-format msgid "invalid standby message type \"%c\"" msgstr "ogiltigt standby-meddelandetyp \"%c\"" -#: replication/walsender.c:1875 +#: replication/walsender.c:1889 #, c-format msgid "unexpected message type \"%c\"" msgstr "oväntad meddelandetyp \"%c\"" -#: replication/walsender.c:2292 +#: replication/walsender.c:2306 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "avslutar walsender-process på grund av replikerings-timeout" @@ -20401,198 +20426,198 @@ msgstr "byta namn på en ON SELECT-regel tillåts inte" 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:610 +#: rewrite/rewriteHandler.c:613 #, 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:663 +#: rewrite/rewriteHandler.c:666 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "kan inte ha RETURNING-listor i multipla regler" -#: rewrite/rewriteHandler.c:895 rewrite/rewriteHandler.c:934 +#: rewrite/rewriteHandler.c:898 rewrite/rewriteHandler.c:937 #, c-format msgid "cannot insert a non-DEFAULT value into column \"%s\"" msgstr "kan inte sätta in ett icke-DEFAULT-värde i kolumn \"%s\"" -#: rewrite/rewriteHandler.c:897 rewrite/rewriteHandler.c:963 +#: rewrite/rewriteHandler.c:900 rewrite/rewriteHandler.c:966 #, 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:899 +#: rewrite/rewriteHandler.c:902 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Använd OVERRIDING SYSTEM VALUE för att överskugga." -#: rewrite/rewriteHandler.c:961 rewrite/rewriteHandler.c:969 +#: rewrite/rewriteHandler.c:964 rewrite/rewriteHandler.c:972 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "kolumn \"%s\" kan bara uppdateras till DEFAULT" -#: rewrite/rewriteHandler.c:1104 rewrite/rewriteHandler.c:1122 +#: rewrite/rewriteHandler.c:1107 rewrite/rewriteHandler.c:1125 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "flera tilldelningar till samma kolumn \"%s\"" -#: rewrite/rewriteHandler.c:1723 rewrite/rewriteHandler.c:3178 +#: rewrite/rewriteHandler.c:1726 rewrite/rewriteHandler.c:3181 #, c-format msgid "access to non-system view \"%s\" is restricted" msgstr "access till icke-system vy \"%s\" är begränsad" -#: rewrite/rewriteHandler.c:2155 rewrite/rewriteHandler.c:4064 +#: rewrite/rewriteHandler.c:2158 rewrite/rewriteHandler.c:4084 #, 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:2260 +#: rewrite/rewriteHandler.c:2263 #, 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:2590 +#: rewrite/rewriteHandler.c:2593 msgid "Junk view columns are not updatable." msgstr "Skräpkolumner i vy är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2595 +#: rewrite/rewriteHandler.c:2598 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:2598 +#: rewrite/rewriteHandler.c:2601 msgid "View columns that refer to system columns are not updatable." msgstr "Vykolumner som refererar till systemkolumner är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2601 +#: rewrite/rewriteHandler.c:2604 msgid "View columns that return whole-row references are not updatable." msgstr "Vykolumner som returnerar hel-rad-referenser är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2662 +#: rewrite/rewriteHandler.c:2665 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Vyer som innehåller DISTINCT är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2665 +#: rewrite/rewriteHandler.c:2668 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Vyer som innehåller GROUP BY är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2668 +#: rewrite/rewriteHandler.c:2671 msgid "Views containing HAVING are not automatically updatable." msgstr "Vyer som innehåller HAVING är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2671 +#: rewrite/rewriteHandler.c:2674 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:2674 +#: rewrite/rewriteHandler.c:2677 msgid "Views containing WITH are not automatically updatable." msgstr "Vyer som innehåller WITH är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2677 +#: rewrite/rewriteHandler.c:2680 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:2689 +#: rewrite/rewriteHandler.c:2692 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Vyer som returnerar aggregatfunktioner är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2692 +#: rewrite/rewriteHandler.c:2695 msgid "Views that return window functions are not automatically updatable." msgstr "Vyer som returnerar fönsterfunktioner uppdateras inte automatiskt." -#: rewrite/rewriteHandler.c:2695 +#: rewrite/rewriteHandler.c:2698 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:2702 rewrite/rewriteHandler.c:2706 -#: rewrite/rewriteHandler.c:2714 +#: rewrite/rewriteHandler.c:2705 rewrite/rewriteHandler.c:2709 +#: rewrite/rewriteHandler.c:2717 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:2717 +#: rewrite/rewriteHandler.c:2720 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Vyer som innehåller TABLESAMPLE är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2741 +#: rewrite/rewriteHandler.c:2744 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:3238 +#: rewrite/rewriteHandler.c:3241 #, 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:3246 +#: rewrite/rewriteHandler.c:3249 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "kan inte uppdatera kolumn \"%s\" i view \"%s\"" -#: rewrite/rewriteHandler.c:3728 +#: rewrite/rewriteHandler.c:3747 #, 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:3739 +#: rewrite/rewriteHandler.c:3758 #, 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:3753 +#: rewrite/rewriteHandler.c:3772 #, 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:3757 +#: rewrite/rewriteHandler.c:3776 #, 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:3762 +#: rewrite/rewriteHandler.c:3781 #, 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:3992 rewrite/rewriteHandler.c:4000 -#: rewrite/rewriteHandler.c:4008 +#: rewrite/rewriteHandler.c:4012 rewrite/rewriteHandler.c:4020 +#: rewrite/rewriteHandler.c:4028 #, 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:4113 +#: rewrite/rewriteHandler.c:4134 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "kan inte utföra INSERT RETURNING på relation \"%s\"" -#: rewrite/rewriteHandler.c:4115 +#: rewrite/rewriteHandler.c:4136 #, 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:4120 +#: rewrite/rewriteHandler.c:4141 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "kan inte utföra UPDATE RETURNING på relation \"%s\"" -#: rewrite/rewriteHandler.c:4122 +#: rewrite/rewriteHandler.c:4143 #, 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:4127 +#: rewrite/rewriteHandler.c:4148 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "kan inte utföra DELETE RETURNING på relation \"%s\"" -#: rewrite/rewriteHandler.c:4129 +#: rewrite/rewriteHandler.c:4150 #, 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:4147 +#: rewrite/rewriteHandler.c:4168 #, 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:4204 +#: rewrite/rewriteHandler.c:4225 #, 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" @@ -20752,47 +20777,47 @@ msgstr "statistikobjekt \"%s.%s\" kunde inte beräknas för relation \"%s.%s\"" 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." -#: storage/buffer/bufmgr.c:598 storage/buffer/bufmgr.c:765 +#: storage/buffer/bufmgr.c:605 storage/buffer/bufmgr.c:772 #, c-format 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:843 +#: storage/buffer/bufmgr.c:850 #, 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:930 +#: storage/buffer/bufmgr.c:937 #, 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:932 +#: storage/buffer/bufmgr.c:939 #, 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:1031 +#: storage/buffer/bufmgr.c:1038 #, 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:4534 +#: storage/buffer/bufmgr.c:4600 #, c-format msgid "could not write block %u of %s" msgstr "kunde inte skriva block %u av %s" -#: storage/buffer/bufmgr.c:4536 +#: storage/buffer/bufmgr.c:4602 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Multipla fel --- skrivfelet kan vara permanent." -#: storage/buffer/bufmgr.c:4557 storage/buffer/bufmgr.c:4576 +#: storage/buffer/bufmgr.c:4623 storage/buffer/bufmgr.c:4642 #, c-format msgid "writing block %u of relation %s" msgstr "skriver block %u i relation %s" -#: storage/buffer/bufmgr.c:4880 +#: storage/buffer/bufmgr.c:4946 #, c-format msgid "snapshot too old" msgstr "snapshot för gammal" @@ -20822,7 +20847,7 @@ msgstr "kunde inte bestämma storlek på temporär fil \"%s\" från BufFile \"%s msgid "could not delete shared fileset \"%s\": %m" msgstr "kunde inte radera delad filmängd \"%s\": %m" -#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:871 +#: storage/file/buffile.c:902 storage/smgr/md.c:309 storage/smgr/md.c:874 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "kunde inte trunkera fil \"%s\": %m" @@ -21495,22 +21520,22 @@ msgstr "kunde inte skriva block %u i fil \"%s\": %m" 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:842 +#: storage/smgr/md.c:845 #, 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:897 +#: storage/smgr/md.c:900 #, 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:1301 +#: storage/smgr/md.c:1304 #, 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:1315 +#: storage/smgr/md.c:1318 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "kunde inte öppna fil \"%s\" (målblock %u): %m" @@ -24335,99 +24360,99 @@ msgstr "nolltecken tillåts inte" 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:1228 +#: utils/adt/pg_locale.c:1229 #, c-format msgid "Apply system library package updates." msgstr "Applicera paketuppdateringar för systembibliotek." -#: utils/adt/pg_locale.c:1442 +#: utils/adt/pg_locale.c:1445 #, c-format msgid "could not create locale \"%s\": %m" msgstr "kunde inte skapa locale \"%s\": %m" -#: utils/adt/pg_locale.c:1445 +#: utils/adt/pg_locale.c:1448 #, 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:1547 +#: utils/adt/pg_locale.c:1550 #, 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:1556 +#: utils/adt/pg_locale.c:1559 #, 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:1568 +#: utils/adt/pg_locale.c:1571 #, 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:1574 utils/adt/pg_locale.c:1661 -#: utils/adt/pg_locale.c:1940 +#: utils/adt/pg_locale.c:1577 utils/adt/pg_locale.c:1664 +#: utils/adt/pg_locale.c:1943 #, 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:1588 +#: utils/adt/pg_locale.c:1591 #, c-format msgid "ICU is not supported in this build" msgstr "ICU stöds inte av detta bygge" -#: utils/adt/pg_locale.c:1609 +#: utils/adt/pg_locale.c:1612 #, 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:1616 +#: utils/adt/pg_locale.c:1619 #, 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:1618 +#: utils/adt/pg_locale.c:1621 #, 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:1621 +#: utils/adt/pg_locale.c:1624 #, 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:1692 +#: utils/adt/pg_locale.c:1695 #, c-format msgid "could not load locale \"%s\"" msgstr "kunde inte skapa locale \"%s\"" -#: utils/adt/pg_locale.c:1717 +#: utils/adt/pg_locale.c:1720 #, c-format msgid "could not get collation version for locale \"%s\": error code %lu" msgstr "kunde inte hitta jämförelseversion (collation) för lokal \"%s\": felkod %lu" -#: utils/adt/pg_locale.c:1755 +#: utils/adt/pg_locale.c:1758 #, c-format msgid "encoding \"%s\" not supported by ICU" msgstr "kodning \"%s\" stöds inte av ICU" -#: utils/adt/pg_locale.c:1762 +#: utils/adt/pg_locale.c:1765 #, 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:1793 utils/adt/pg_locale.c:1802 -#: utils/adt/pg_locale.c:1831 utils/adt/pg_locale.c:1841 +#: utils/adt/pg_locale.c:1796 utils/adt/pg_locale.c:1805 +#: utils/adt/pg_locale.c:1834 utils/adt/pg_locale.c:1844 #, c-format msgid "%s failed: %s" msgstr "%s misslyckades: %s" -#: utils/adt/pg_locale.c:2113 +#: utils/adt/pg_locale.c:2116 #, c-format msgid "invalid multibyte character for locale" msgstr "ogiltigt multibyte-tecken för lokalen" -#: utils/adt/pg_locale.c:2114 +#: utils/adt/pg_locale.c:2117 #, 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." @@ -25294,7 +25319,7 @@ msgstr "ej stödd XML-finess" msgid "This functionality requires the server to be built with libxml support." msgstr "Denna funktionalitet kräver att servern byggts med libxml-support." -#: utils/adt/xml.c:253 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:253 utils/mb/mbutils.c:628 #, c-format msgid "invalid encoding name \"%s\"" msgstr "ogiltigt kodningsnamn \"%s\"" @@ -25474,17 +25499,17 @@ msgstr "operatorklass \"%s\" för accessmetod %s saknar supportfunktion %d för msgid "cached plan must not change result type" msgstr "cache:ad plan får inte ändra resultattyp" -#: utils/cache/relcache.c:6328 +#: utils/cache/relcache.c:6344 #, 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:6330 +#: utils/cache/relcache.c:6346 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Fortsätter ändå, trots att något är fel." -#: utils/cache/relcache.c:6652 +#: utils/cache/relcache.c:6668 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "kunde inte ta bort cache-fil \"%s\": %m" @@ -26095,48 +26120,48 @@ msgstr "oväntat kodnings-ID %d för ISO 8859-teckenuppsättningarna" msgid "unexpected encoding ID %d for WIN character sets" msgstr "oväntat kodnings-ID %d för WIN-teckenuppsättningarna" -#: utils/mb/mbutils.c:297 utils/mb/mbutils.c:900 +#: utils/mb/mbutils.c:298 utils/mb/mbutils.c:901 #, c-format msgid "conversion between %s and %s is not supported" msgstr "konvertering mellan %s och %s stöds inte" -#: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 -#: utils/mb/mbutils.c:842 +#: utils/mb/mbutils.c:403 utils/mb/mbutils.c:431 utils/mb/mbutils.c:816 +#: utils/mb/mbutils.c:843 #, c-format msgid "String of %d bytes is too long for encoding conversion." msgstr "Sträng på %d byte är för lång för kodningskonvertering." -#: utils/mb/mbutils.c:568 +#: utils/mb/mbutils.c:569 #, c-format msgid "invalid source encoding name \"%s\"" msgstr "ogiltigt källkodningsnamn \"%s\"" -#: utils/mb/mbutils.c:573 +#: utils/mb/mbutils.c:574 #, c-format msgid "invalid destination encoding name \"%s\"" msgstr "ogiltigt målkodningsnamn \"%s\"" -#: utils/mb/mbutils.c:713 +#: utils/mb/mbutils.c:714 #, c-format msgid "invalid byte value for encoding \"%s\": 0x%02x" msgstr "ogiltigt byte-sekvens för kodning \"%s\": 0x%02x\"" -#: utils/mb/mbutils.c:877 +#: utils/mb/mbutils.c:878 #, c-format msgid "invalid Unicode code point" msgstr "ogiltig Unicode-kodpunkt" -#: utils/mb/mbutils.c:1146 +#: utils/mb/mbutils.c:1147 #, c-format msgid "bind_textdomain_codeset failed" msgstr "bind_textdomain_codeset misslyckades" -#: utils/mb/mbutils.c:1667 +#: utils/mb/mbutils.c:1668 #, c-format msgid "invalid byte sequence for encoding \"%s\": %s" msgstr "ogiltigt byte-sekvens för kodning \"%s\": %s" -#: utils/mb/mbutils.c:1708 +#: utils/mb/mbutils.c:1709 #, c-format msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\"" msgstr "tecken med byte-sekvens %s i kodning \"%s\" har inget motsvarande i kodning \"%s\"" @@ -28380,15 +28405,15 @@ msgstr "Misslyckades vid skapande av minneskontext \"%s\"." msgid "could not attach to dynamic shared area" msgstr "kunde inte ansluta till dynamisk delad area" -#: utils/mmgr/mcxt.c:889 utils/mmgr/mcxt.c:925 utils/mmgr/mcxt.c:963 -#: utils/mmgr/mcxt.c:1001 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1120 -#: utils/mmgr/mcxt.c:1156 utils/mmgr/mcxt.c:1208 utils/mmgr/mcxt.c:1243 -#: utils/mmgr/mcxt.c:1278 +#: utils/mmgr/mcxt.c:892 utils/mmgr/mcxt.c:928 utils/mmgr/mcxt.c:966 +#: utils/mmgr/mcxt.c:1004 utils/mmgr/mcxt.c:1112 utils/mmgr/mcxt.c:1143 +#: utils/mmgr/mcxt.c:1179 utils/mmgr/mcxt.c:1231 utils/mmgr/mcxt.c:1266 +#: utils/mmgr/mcxt.c:1301 #, c-format msgid "Failed on request of size %zu in memory context \"%s\"." msgstr "Misslyckades med förfrågan av storlek %zu i minneskontext \"%s\"." -#: utils/mmgr/mcxt.c:1052 +#: utils/mmgr/mcxt.c:1067 #, c-format msgid "logging memory contexts of PID %d" msgstr "loggar minneskontext för PID %d" diff --git a/src/backend/po/uk.po b/src/backend/po/uk.po index 99cc7cabb74..2ab87eec1b4 100644 --- a/src/backend/po/uk.po +++ b/src/backend/po/uk.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: postgresql\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-03-27 18:47+0000\n" -"PO-Revision-Date: 2025-04-01 15:40\n" +"POT-Creation-Date: 2025-12-31 03:18+0000\n" +"PO-Revision-Date: 2026-01-02 12:56\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -32,17 +32,17 @@ msgstr "не вдалося відкрити файл \"%s\" для читанн #: ../common/controldata_utils.c:96 ../common/controldata_utils.c:99 #: access/transam/timeline.c:143 access/transam/timeline.c:362 -#: access/transam/twophase.c:1329 access/transam/xlog.c:3576 -#: access/transam/xlog.c:4817 access/transam/xlog.c:11662 -#: access/transam/xlog.c:11675 access/transam/xlog.c:12130 -#: access/transam/xlog.c:12210 access/transam/xlog.c:12247 -#: access/transam/xlog.c:12307 access/transam/xlogfuncs.c:703 +#: access/transam/twophase.c:1329 access/transam/xlog.c:3594 +#: access/transam/xlog.c:4843 access/transam/xlog.c:11747 +#: access/transam/xlog.c:11760 access/transam/xlog.c:12215 +#: access/transam/xlog.c:12295 access/transam/xlog.c:12332 +#: access/transam/xlog.c:12392 access/transam/xlogfuncs.c:703 #: access/transam/xlogfuncs.c:722 commands/extension.c:3492 libpq/hba.c:534 #: replication/basebackup.c:2016 replication/logical/origin.c:729 -#: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:4959 -#: replication/logical/snapbuild.c:1872 replication/logical/snapbuild.c:1914 -#: replication/logical/snapbuild.c:1941 replication/slot.c:1727 -#: replication/slot.c:1768 replication/walsender.c:545 +#: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:5090 +#: replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1961 +#: replication/logical/snapbuild.c:1988 replication/slot.c:1792 +#: replication/slot.c:1833 replication/walsender.c:559 #: storage/file/buffile.c:445 storage/file/copydir.c:195 #: utils/adt/genfile.c:202 utils/adt/misc.c:881 utils/cache/relmapper.c:744 #, c-format @@ -50,11 +50,11 @@ msgid "could not read file \"%s\": %m" msgstr "не вдалося прочитати файл \"%s\": %m" #: ../common/controldata_utils.c:107 ../common/controldata_utils.c:111 -#: access/transam/xlog.c:3581 access/transam/xlog.c:4822 +#: access/transam/xlog.c:3599 access/transam/xlog.c:4848 #: replication/basebackup.c:2020 replication/logical/origin.c:734 -#: replication/logical/origin.c:773 replication/logical/snapbuild.c:1877 -#: replication/logical/snapbuild.c:1919 replication/logical/snapbuild.c:1946 -#: replication/slot.c:1731 replication/slot.c:1772 replication/walsender.c:550 +#: replication/logical/origin.c:773 replication/logical/snapbuild.c:1924 +#: replication/logical/snapbuild.c:1966 replication/logical/snapbuild.c:1993 +#: replication/slot.c:1796 replication/slot.c:1837 replication/walsender.c:564 #: utils/cache/relmapper.c:748 #, c-format msgid "could not read file \"%s\": read %d of %zu" @@ -66,16 +66,16 @@ msgstr "не вдалося прочитати файл \"%s\": прочитан #: access/transam/timeline.c:392 access/transam/timeline.c:438 #: access/transam/timeline.c:512 access/transam/twophase.c:1341 #: access/transam/twophase.c:1753 access/transam/xlog.c:3445 -#: access/transam/xlog.c:3616 access/transam/xlog.c:3621 -#: access/transam/xlog.c:3946 access/transam/xlog.c:4787 -#: access/transam/xlog.c:5712 access/transam/xlogfuncs.c:728 +#: access/transam/xlog.c:3634 access/transam/xlog.c:3639 +#: access/transam/xlog.c:3958 access/transam/xlog.c:4813 +#: access/transam/xlog.c:5741 access/transam/xlogfuncs.c:728 #: commands/copyfrom.c:1586 commands/copyto.c:328 libpq/be-fsstubs.c:455 #: libpq/be-fsstubs.c:525 replication/logical/origin.c:667 -#: replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5017 -#: replication/logical/snapbuild.c:1781 replication/logical/snapbuild.c:1954 -#: replication/slot.c:1618 replication/slot.c:1779 replication/walsender.c:560 -#: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:738 -#: storage/file/fd.c:3537 storage/file/fd.c:3640 utils/cache/relmapper.c:759 +#: replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5148 +#: replication/logical/snapbuild.c:1828 replication/logical/snapbuild.c:2001 +#: replication/slot.c:1681 replication/slot.c:1844 replication/walsender.c:574 +#: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:735 +#: storage/file/fd.c:3528 storage/file/fd.c:3631 utils/cache/relmapper.c:759 #: utils/cache/relmapper.c:898 #, c-format msgid "could not close file \"%s\": %m" @@ -99,20 +99,20 @@ msgstr "можлива помилка у послідовності байтів #: ../common/file_utils.c:360 access/heap/rewriteheap.c:1264 #: access/transam/timeline.c:111 access/transam/timeline.c:251 #: access/transam/timeline.c:348 access/transam/twophase.c:1285 -#: access/transam/xlog.c:3331 access/transam/xlog.c:3487 -#: access/transam/xlog.c:3531 access/transam/xlog.c:3726 -#: access/transam/xlog.c:3811 access/transam/xlog.c:3914 -#: access/transam/xlog.c:4807 access/transam/xlogutils.c:803 +#: access/transam/xlog.c:3332 access/transam/xlog.c:3511 +#: access/transam/xlog.c:3549 access/transam/xlog.c:3737 +#: access/transam/xlog.c:3823 access/transam/xlog.c:3926 +#: access/transam/xlog.c:4833 access/transam/xlogutils.c:803 #: postmaster/syslogger.c:1488 replication/basebackup.c:616 #: replication/basebackup.c:1610 replication/logical/origin.c:719 -#: replication/logical/reorderbuffer.c:3612 -#: replication/logical/reorderbuffer.c:4163 -#: replication/logical/reorderbuffer.c:4939 -#: replication/logical/snapbuild.c:1736 replication/logical/snapbuild.c:1843 -#: replication/slot.c:1699 replication/walsender.c:518 -#: replication/walsender.c:2563 storage/file/copydir.c:161 -#: storage/file/fd.c:713 storage/file/fd.c:3306 storage/file/fd.c:3524 -#: storage/file/fd.c:3611 storage/smgr/md.c:506 utils/cache/relmapper.c:724 +#: replication/logical/reorderbuffer.c:3743 +#: replication/logical/reorderbuffer.c:4294 +#: replication/logical/reorderbuffer.c:5070 +#: replication/logical/snapbuild.c:1783 replication/logical/snapbuild.c:1890 +#: replication/slot.c:1764 replication/walsender.c:532 +#: replication/walsender.c:2581 storage/file/copydir.c:161 +#: storage/file/fd.c:710 storage/file/fd.c:3297 storage/file/fd.c:3515 +#: storage/file/fd.c:3602 storage/smgr/md.c:506 utils/cache/relmapper.c:724 #: utils/cache/relmapper.c:842 utils/error/elog.c:1958 #: utils/init/miscinit.c:1403 utils/init/miscinit.c:1537 #: utils/init/miscinit.c:1614 utils/misc/guc.c:8682 utils/misc/guc.c:8714 @@ -122,9 +122,9 @@ msgstr "не можливо відкрити файл \"%s\": %m" #: ../common/controldata_utils.c:251 ../common/controldata_utils.c:254 #: access/transam/twophase.c:1726 access/transam/twophase.c:1735 -#: access/transam/xlog.c:11419 access/transam/xlog.c:11457 -#: access/transam/xlog.c:11870 access/transam/xlogfuncs.c:782 -#: postmaster/postmaster.c:5686 postmaster/syslogger.c:1499 +#: access/transam/xlog.c:11504 access/transam/xlog.c:11542 +#: access/transam/xlog.c:11955 access/transam/xlogfuncs.c:782 +#: postmaster/postmaster.c:5688 postmaster/syslogger.c:1499 #: postmaster/syslogger.c:1512 utils/cache/relmapper.c:876 #, c-format msgid "could not write file \"%s\": %m" @@ -135,11 +135,11 @@ msgstr "не вдалося записати файл \"%s\": %m" #: access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 #: access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 #: access/transam/timeline.c:506 access/transam/twophase.c:1747 -#: access/transam/xlog.c:3438 access/transam/xlog.c:3610 -#: access/transam/xlog.c:4780 access/transam/xlog.c:10902 -#: access/transam/xlog.c:10943 replication/logical/snapbuild.c:1774 -#: replication/slot.c:1604 replication/slot.c:1709 storage/file/fd.c:730 -#: storage/file/fd.c:3632 storage/smgr/md.c:956 storage/smgr/md.c:997 +#: access/transam/xlog.c:3438 access/transam/xlog.c:3628 +#: access/transam/xlog.c:4806 access/transam/xlog.c:10987 +#: access/transam/xlog.c:11028 replication/logical/snapbuild.c:1821 +#: replication/slot.c:1665 replication/slot.c:1774 storage/file/fd.c:727 +#: storage/file/fd.c:3623 storage/smgr/md.c:956 storage/smgr/md.c:997 #: storage/sync/sync.c:454 utils/cache/relmapper.c:891 utils/misc/guc.c:8469 #, c-format msgid "could not fsync file \"%s\": %m" @@ -148,32 +148,32 @@ msgstr "не вдалося fsync файл \"%s\": %m" #: ../common/cryptohash_openssl.c:104 ../common/exec.c:560 ../common/exec.c:605 #: ../common/exec.c:697 ../common/hmac_openssl.c:101 ../common/psprintf.c:143 #: ../common/stringinfo.c:305 ../port/path.c:707 ../port/path.c:745 -#: ../port/path.c:762 access/transam/twophase.c:1399 access/transam/xlog.c:6692 -#: lib/dshash.c:245 libpq/auth.c:1489 libpq/auth.c:1557 libpq/auth.c:2115 -#: libpq/be-secure-gssapi.c:520 postmaster/bgworker.c:349 -#: postmaster/bgworker.c:948 postmaster/postmaster.c:2552 -#: postmaster/postmaster.c:4209 postmaster/postmaster.c:5611 -#: postmaster/postmaster.c:5975 +#: ../port/path.c:762 access/transam/twophase.c:1399 access/transam/xlog.c:6721 +#: lib/dshash.c:245 libpq/auth.c:1497 libpq/auth.c:1565 libpq/auth.c:2123 +#: libpq/be-secure-gssapi.c:530 libpq/be-secure-gssapi.c:702 +#: postmaster/bgworker.c:349 postmaster/bgworker.c:948 +#: postmaster/postmaster.c:2554 postmaster/postmaster.c:4211 +#: postmaster/postmaster.c:5613 postmaster/postmaster.c:5977 #: replication/libpqwalreceiver/libpqwalreceiver.c:287 -#: replication/logical/logical.c:206 replication/walsender.c:592 -#: storage/buffer/localbuf.c:442 storage/file/fd.c:888 storage/file/fd.c:1360 -#: storage/file/fd.c:1521 storage/file/fd.c:2329 storage/ipc/procarray.c:1472 +#: replication/logical/logical.c:206 replication/walsender.c:606 +#: storage/buffer/localbuf.c:442 storage/file/fd.c:879 storage/file/fd.c:1351 +#: storage/file/fd.c:1512 storage/file/fd.c:2320 storage/ipc/procarray.c:1472 #: storage/ipc/procarray.c:2293 storage/ipc/procarray.c:2300 #: storage/ipc/procarray.c:2805 storage/ipc/procarray.c:3482 #: tcop/postgres.c:3620 utils/adt/cryptohashfuncs.c:46 #: utils/adt/cryptohashfuncs.c:66 utils/adt/formatting.c:1699 #: utils/adt/formatting.c:1823 utils/adt/formatting.c:1948 -#: utils/adt/pg_locale.c:450 utils/adt/pg_locale.c:614 utils/adt/regexp.c:223 +#: utils/adt/pg_locale.c:451 utils/adt/pg_locale.c:615 utils/adt/regexp.c:223 #: utils/fmgr/dfmgr.c:229 utils/hash/dynahash.c:513 utils/hash/dynahash.c:613 -#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:401 utils/mb/mbutils.c:429 -#: utils/mb/mbutils.c:814 utils/mb/mbutils.c:841 utils/misc/guc.c:5061 +#: utils/hash/dynahash.c:1116 utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 +#: utils/mb/mbutils.c:815 utils/mb/mbutils.c:842 utils/misc/guc.c:5061 #: utils/misc/guc.c:5077 utils/misc/guc.c:5090 utils/misc/guc.c:8447 #: utils/misc/tzparser.c:476 utils/mmgr/aset.c:476 utils/mmgr/dsa.c:702 #: utils/mmgr/dsa.c:724 utils/mmgr/dsa.c:805 utils/mmgr/generation.c:234 -#: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 -#: utils/mmgr/mcxt.c:1000 utils/mmgr/mcxt.c:1088 utils/mmgr/mcxt.c:1119 -#: utils/mmgr/mcxt.c:1155 utils/mmgr/mcxt.c:1207 utils/mmgr/mcxt.c:1242 -#: utils/mmgr/mcxt.c:1277 utils/mmgr/slab.c:238 +#: utils/mmgr/mcxt.c:891 utils/mmgr/mcxt.c:927 utils/mmgr/mcxt.c:965 +#: utils/mmgr/mcxt.c:1003 utils/mmgr/mcxt.c:1111 utils/mmgr/mcxt.c:1142 +#: utils/mmgr/mcxt.c:1178 utils/mmgr/mcxt.c:1230 utils/mmgr/mcxt.c:1265 +#: utils/mmgr/mcxt.c:1300 utils/mmgr/slab.c:238 #, c-format msgid "out of memory" msgstr "недостатньо пам'яті" @@ -203,7 +203,7 @@ msgstr "неможливо знайти \"%s\" для виконання" msgid "could not change directory to \"%s\": %m" msgstr "не вдалося змінити каталог на \"%s\": %m" -#: ../common/exec.c:299 access/transam/xlog.c:11293 +#: ../common/exec.c:299 access/transam/xlog.c:11378 #: replication/basebackup.c:1428 utils/adt/misc.c:362 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -219,8 +219,8 @@ msgstr "%s() помилка: %m" #: ../common/fe_memutils.c:35 ../common/fe_memutils.c:75 #: ../common/fe_memutils.c:98 ../common/fe_memutils.c:162 #: ../common/psprintf.c:145 ../port/path.c:709 ../port/path.c:747 -#: ../port/path.c:764 utils/misc/ps_status.c:208 utils/misc/ps_status.c:216 -#: utils/misc/ps_status.c:246 utils/misc/ps_status.c:254 +#: ../port/path.c:764 utils/misc/ps_status.c:210 utils/misc/ps_status.c:218 +#: utils/misc/ps_status.c:248 utils/misc/ps_status.c:256 #, c-format msgid "out of memory\n" msgstr "недостатньо пам'яті\n" @@ -232,15 +232,15 @@ msgstr "неможливо дублювати нульовий покажчик #: ../common/file_utils.c:86 ../common/file_utils.c:446 #: ../common/file_utils.c:450 access/transam/twophase.c:1297 -#: access/transam/xlog.c:11395 access/transam/xlog.c:11433 -#: access/transam/xlog.c:11650 access/transam/xlogarchive.c:110 +#: access/transam/xlog.c:11480 access/transam/xlog.c:11518 +#: access/transam/xlog.c:11735 access/transam/xlogarchive.c:110 #: access/transam/xlogarchive.c:227 commands/copyfrom.c:1536 #: commands/copyto.c:730 commands/extension.c:3471 commands/tablespace.c:805 #: commands/tablespace.c:894 postmaster/pgarch.c:696 #: replication/basebackup.c:439 replication/basebackup.c:622 -#: replication/basebackup.c:698 replication/logical/snapbuild.c:1653 -#: storage/file/copydir.c:68 storage/file/copydir.c:107 storage/file/fd.c:1871 -#: storage/file/fd.c:1957 storage/file/fd.c:3157 storage/file/fd.c:3360 +#: replication/basebackup.c:698 replication/logical/snapbuild.c:1700 +#: storage/file/copydir.c:68 storage/file/copydir.c:107 storage/file/fd.c:1862 +#: storage/file/fd.c:1948 storage/file/fd.c:3148 storage/file/fd.c:3351 #: utils/adt/dbsize.c:70 utils/adt/dbsize.c:222 utils/adt/dbsize.c:302 #: utils/adt/genfile.c:418 utils/adt/genfile.c:644 utils/adt/misc.c:348 #: guc-file.l:1062 @@ -249,104 +249,104 @@ msgid "could not stat file \"%s\": %m" msgstr "не вдалося отримати інформацію від файлу \"%s\": %m" #: ../common/file_utils.c:161 ../common/pgfnames.c:48 commands/tablespace.c:729 -#: commands/tablespace.c:739 postmaster/postmaster.c:1520 -#: storage/file/fd.c:2732 storage/file/reinit.c:122 utils/adt/misc.c:263 +#: commands/tablespace.c:739 postmaster/postmaster.c:1522 +#: storage/file/fd.c:2723 storage/file/reinit.c:122 utils/adt/misc.c:263 #: utils/misc/tzparser.c:338 #, c-format msgid "could not open directory \"%s\": %m" msgstr "не вдалося відкрити каталог \"%s\": %m" -#: ../common/file_utils.c:195 ../common/pgfnames.c:69 storage/file/fd.c:2744 +#: ../common/file_utils.c:195 ../common/pgfnames.c:69 storage/file/fd.c:2735 #, c-format msgid "could not read directory \"%s\": %m" msgstr "не вдалося прочитати каталог \"%s\": %m" #: ../common/file_utils.c:378 access/transam/xlogarchive.c:412 -#: postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1793 -#: replication/slot.c:643 replication/slot.c:1490 replication/slot.c:1632 -#: storage/file/fd.c:748 storage/file/fd.c:849 utils/time/snapmgr.c:1282 +#: postmaster/syslogger.c:1523 replication/logical/snapbuild.c:1840 +#: replication/slot.c:672 replication/slot.c:1548 replication/slot.c:1697 +#: storage/file/fd.c:745 storage/file/fd.c:843 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "не вдалося перейменувати файл \"%s\" на \"%s\": %m" -#: ../common/jsonapi.c:1084 +#: ../common/jsonapi.c:1087 #, c-format msgid "Escape sequence \"\\%s\" is invalid." msgstr "Неприпустима спеціальна послідовність \"\\%s\"." -#: ../common/jsonapi.c:1087 +#: ../common/jsonapi.c:1090 #, c-format msgid "Character with value 0x%02x must be escaped." msgstr "Символ зі значенням 0x%02x повинен бути пропущений." -#: ../common/jsonapi.c:1090 +#: ../common/jsonapi.c:1093 #, c-format msgid "Expected end of input, but found \"%s\"." msgstr "Очікувався кінець введення, але знайдено \"%s\"." -#: ../common/jsonapi.c:1093 +#: ../common/jsonapi.c:1096 #, c-format msgid "Expected array element or \"]\", but found \"%s\"." msgstr "Очікувався елемент масиву або \"]\", але знайдено \"%s\"." -#: ../common/jsonapi.c:1096 +#: ../common/jsonapi.c:1099 #, c-format msgid "Expected \",\" or \"]\", but found \"%s\"." msgstr "Очікувалось \",\" або \"]\", але знайдено \"%s\"." -#: ../common/jsonapi.c:1099 +#: ../common/jsonapi.c:1102 #, c-format msgid "Expected \":\", but found \"%s\"." msgstr "Очікувалось \":\", але знайдено \"%s\"." -#: ../common/jsonapi.c:1102 +#: ../common/jsonapi.c:1105 #, c-format msgid "Expected JSON value, but found \"%s\"." msgstr "Очікувалось значення JSON, але знайдено \"%s\"." -#: ../common/jsonapi.c:1105 +#: ../common/jsonapi.c:1108 msgid "The input string ended unexpectedly." msgstr "Несподіваний кінець вхідного рядка." -#: ../common/jsonapi.c:1107 +#: ../common/jsonapi.c:1110 #, c-format msgid "Expected string or \"}\", but found \"%s\"." msgstr "Очікувався рядок або \"}\", але знайдено \"%s\"." -#: ../common/jsonapi.c:1110 +#: ../common/jsonapi.c:1113 #, c-format msgid "Expected \",\" or \"}\", but found \"%s\"." msgstr "Очікувалось \",\" або \"}\", але знайдено \"%s\"." -#: ../common/jsonapi.c:1113 +#: ../common/jsonapi.c:1116 #, c-format msgid "Expected string, but found \"%s\"." msgstr "Очікувався рядок, але знайдено \"%s\"." -#: ../common/jsonapi.c:1116 +#: ../common/jsonapi.c:1119 #, c-format msgid "Token \"%s\" is invalid." msgstr "Неприпустимий маркер \"%s\"." -#: ../common/jsonapi.c:1119 jsonpath_scan.l:499 +#: ../common/jsonapi.c:1122 jsonpath_scan.l:499 #, c-format msgid "\\u0000 cannot be converted to text." msgstr "\\u0000 не можна перетворити в текст." -#: ../common/jsonapi.c:1121 +#: ../common/jsonapi.c:1124 msgid "\"\\u\" must be followed by four hexadecimal digits." msgstr "За \"\\u\" повинні прямувати чотири шістнадцяткових числа." -#: ../common/jsonapi.c:1124 +#: ../common/jsonapi.c:1127 msgid "Unicode escape values cannot be used for code point values above 007F when the encoding is not UTF8." msgstr "Значення виходу Unicode не можна використовувати для значень кодових точок більше 007F, якщо кодування не UTF8." -#: ../common/jsonapi.c:1126 jsonpath_scan.l:520 +#: ../common/jsonapi.c:1129 jsonpath_scan.l:520 #, c-format msgid "Unicode high surrogate must not follow a high surrogate." msgstr "Старший сурогат Unicode не повинен прямувати за іншим старшим сурогатом." -#: ../common/jsonapi.c:1128 jsonpath_scan.l:531 jsonpath_scan.l:541 +#: ../common/jsonapi.c:1131 jsonpath_scan.l:531 jsonpath_scan.l:541 #: jsonpath_scan.l:583 #, c-format msgid "Unicode low surrogate must follow a high surrogate." @@ -382,7 +382,7 @@ msgstr "неприпустима назва відгалуження" msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"." msgstr "Дозволені назви відгалуження: \"main\", \"fsm\", \"vm\" або \"init\"." -#: ../common/restricted_token.c:64 libpq/auth.c:1519 libpq/auth.c:2551 +#: ../common/restricted_token.c:64 libpq/auth.c:1527 libpq/auth.c:2559 #, c-format msgid "could not load library \"%s\": error code %lu" msgstr "не вдалося завантажити бібліотеку \"%s\": код помилки %lu" @@ -450,7 +450,7 @@ msgstr "недостатньо пам'яті\n\n" msgid "could not look up effective user ID %ld: %s" msgstr "не можу знайти користувача з ефективним ID %ld: %s" -#: ../common/username.c:45 libpq/auth.c:2051 +#: ../common/username.c:45 libpq/auth.c:2059 msgid "user does not exist" msgstr "користувача не існує" @@ -573,7 +573,7 @@ msgid "request for BRIN range summarization for index \"%s\" page %u was not rec msgstr "запит на підсумок діапазону BRIN для індексу «%s» сторінки %u не вдалося записати" #: access/brin/brin.c:1036 access/brin/brin.c:1146 access/gin/ginfast.c:1042 -#: access/transam/xlog.c:11064 access/transam/xlog.c:11601 +#: access/transam/xlog.c:11149 access/transam/xlog.c:11686 #: access/transam/xlogfuncs.c:274 access/transam/xlogfuncs.c:301 #: access/transam/xlogfuncs.c:340 access/transam/xlogfuncs.c:361 #: access/transam/xlogfuncs.c:382 access/transam/xlogfuncs.c:452 @@ -620,7 +620,7 @@ msgstr "не можна прийняти значення типу %s" #: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 #: access/brin/brin_pageops.c:848 access/gin/ginentrypage.c:110 -#: access/gist/gist.c:1461 access/spgist/spgdoinsert.c:2000 +#: access/gist/gist.c:1468 access/spgist/spgdoinsert.c:2000 #: access/spgist/spgdoinsert.c:2275 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" @@ -758,57 +758,62 @@ msgstr "перевищено встановлене користувачем о msgid "RESET must not include values for parameters" msgstr "RESET не має містити значення для параметрів" -#: access/common/reloptions.c:1257 +#: access/common/reloptions.c:1258 #, c-format msgid "unrecognized parameter namespace \"%s\"" msgstr "нерозпізнаний параметр простору імен \"%s\"" -#: access/common/reloptions.c:1294 utils/misc/guc.c:12604 +#: access/common/reloptions.c:1288 commands/foreigncmds.c:86 +#, c-format +msgid "invalid option name \"%s\": must not contain \"=\"" +msgstr "неприпустиме ім'я параметра \"%s\": не може містити \"=\"" + +#: access/common/reloptions.c:1303 utils/misc/guc.c:12615 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "таблиці, позначені WITH OIDS, не підтримуються" -#: access/common/reloptions.c:1464 +#: access/common/reloptions.c:1473 #, c-format msgid "unrecognized parameter \"%s\"" msgstr "нерозпізнаний параметр \"%s\"" -#: access/common/reloptions.c:1576 +#: access/common/reloptions.c:1585 #, c-format msgid "parameter \"%s\" specified more than once" msgstr "параметр «%s» вказано кілька разів" -#: access/common/reloptions.c:1592 +#: access/common/reloptions.c:1601 #, c-format msgid "invalid value for boolean option \"%s\": %s" msgstr "неприпустиме значення для булевого параметра \"%s\": %s" -#: access/common/reloptions.c:1604 +#: access/common/reloptions.c:1613 #, c-format msgid "invalid value for integer option \"%s\": %s" msgstr "неприпустиме значення для цілого параметра \"%s\": %s" -#: access/common/reloptions.c:1610 access/common/reloptions.c:1630 +#: access/common/reloptions.c:1619 access/common/reloptions.c:1639 #, c-format msgid "value %s out of bounds for option \"%s\"" msgstr "значення %s поза допустимими межами для параметра \"%s\"" -#: access/common/reloptions.c:1612 +#: access/common/reloptions.c:1621 #, c-format msgid "Valid values are between \"%d\" and \"%d\"." msgstr "Припустимі значення знаходяться між \"%d\" і \"%d\"." -#: access/common/reloptions.c:1624 +#: access/common/reloptions.c:1633 #, c-format msgid "invalid value for floating point option \"%s\": %s" msgstr "неприпустиме значення для числа з плавучою точкою параметра \"%s\": %s" -#: access/common/reloptions.c:1632 +#: access/common/reloptions.c:1641 #, c-format msgid "Valid values are between \"%f\" and \"%f\"." msgstr "Припустимі значення знаходяться між \"%f\" і \"%f\"." -#: access/common/reloptions.c:1654 +#: access/common/reloptions.c:1663 #, c-format msgid "invalid value for enum option \"%s\": %s" msgstr "недійсне значення для параметра перерахування \"%s\": %s" @@ -823,7 +828,7 @@ msgstr "метод стискання lz4 не підтримується" msgid "This functionality requires the server to be built with lz4 support." msgstr "Ця функціональність потребує, щоб сервер був побудований з підтримкою lz4." -#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1589 +#: access/common/toast_compression.c:34 utils/adt/pg_locale.c:1592 #: utils/adt/xml.c:234 #, c-format msgid "You need to rebuild PostgreSQL using %s." @@ -865,12 +870,12 @@ msgstr "доступ до тимчасових індексів з інших с msgid "failed to re-find tuple within index \"%s\"" msgstr "не вдалося повторно знайти кортеж в межах індексу \"%s\"" -#: access/gin/ginscan.c:436 +#: access/gin/ginscan.c:479 #, c-format msgid "old GIN indexes do not support whole-index scans nor searches for nulls" msgstr "старі індекси GIN не підтримують сканування цілого індексу й пошуки значення null" -#: access/gin/ginscan.c:437 +#: access/gin/ginscan.c:480 #, c-format msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Щоб виправити це, зробіть REINDEX INDEX \"%s\"." @@ -918,7 +923,7 @@ msgstr "Це викликано неповним поділом сторінки msgid "Please REINDEX it." msgstr "Будь ласка, виконайте REINDEX." -#: access/gist/gist.c:1194 +#: access/gist/gist.c:1201 #, c-format msgid "fixing incomplete split in index \"%s\", block %u" msgstr "виправлення неповного розділу в індексі \"%s\", блок %u" @@ -963,7 +968,7 @@ msgstr "не вдалося визначити, який параметр сор #: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:714 #: catalog/heap.c:720 commands/createas.c:206 commands/createas.c:515 -#: commands/indexcmds.c:1971 commands/tablecmds.c:17186 commands/view.c:86 +#: commands/indexcmds.c:1971 commands/tablecmds.c:17208 commands/view.c:86 #: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1666 #: utils/adt/formatting.c:1790 utils/adt/formatting.c:1915 utils/adt/like.c:194 #: utils/adt/like_support.c:1004 utils/adt/varchar.c:733 @@ -1018,39 +1023,39 @@ msgstr "сімейство операторів \"%s\" з методом дос msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" msgstr "сімейство операторів \"%s\" з методом доступу %s не містить міжтипового оператора (ів)" -#: access/heap/heapam.c:2299 +#: access/heap/heapam.c:2302 #, c-format msgid "cannot insert tuples in a parallel worker" msgstr "не вдалося вставити кортежі в паралельного працівника" -#: access/heap/heapam.c:2770 +#: access/heap/heapam.c:2773 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "не вдалося видалити кортежі під час паралельної операції" -#: access/heap/heapam.c:2816 +#: access/heap/heapam.c:2819 #, c-format msgid "attempted to delete invisible tuple" msgstr "спроба видалити невидимий кортеж" -#: access/heap/heapam.c:3262 access/heap/heapam.c:6529 access/index/genam.c:816 +#: access/heap/heapam.c:3265 access/heap/heapam.c:6617 access/index/genam.c:816 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "неможливо оновити кортежі під час паралельної операції" -#: access/heap/heapam.c:3449 +#: access/heap/heapam.c:3452 #, c-format msgid "attempted to update invisible tuple" msgstr "спроба оновити невидимий кортеж" -#: access/heap/heapam.c:4936 access/heap/heapam.c:4974 -#: access/heap/heapam.c:5239 access/heap/heapam_handler.c:457 +#: access/heap/heapam.c:4941 access/heap/heapam.c:4979 +#: access/heap/heapam.c:5246 access/heap/heapam_handler.c:457 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "не вдалося отримати блокування у рядку стосовно \"%s\"" -#: access/heap/heapam.c:6342 commands/trigger.c:3122 -#: executor/nodeModifyTable.c:1968 executor/nodeModifyTable.c:2058 +#: access/heap/heapam.c:6371 commands/trigger.c:3152 +#: executor/nodeModifyTable.c:1988 executor/nodeModifyTable.c:2078 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" msgstr "кортеж, який повинен бути оновленим, вже змінений в операції, яка викликана поточною командою" @@ -1072,12 +1077,12 @@ msgstr "не вдалося записати до файлу \"%s\", запис #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:481 -#: access/transam/xlog.c:3354 access/transam/xlog.c:3545 -#: access/transam/xlog.c:4759 access/transam/xlog.c:11410 -#: access/transam/xlog.c:11448 access/transam/xlog.c:11853 -#: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4634 -#: postmaster/postmaster.c:5673 replication/logical/origin.c:587 -#: replication/slot.c:1551 storage/file/copydir.c:167 storage/smgr/md.c:218 +#: access/transam/xlog.c:3354 access/transam/xlog.c:3563 +#: access/transam/xlog.c:4785 access/transam/xlog.c:11495 +#: access/transam/xlog.c:11533 access/transam/xlog.c:11938 +#: access/transam/xlogfuncs.c:776 postmaster/postmaster.c:4636 +#: postmaster/postmaster.c:5675 replication/logical/origin.c:587 +#: replication/slot.c:1609 storage/file/copydir.c:167 storage/smgr/md.c:218 #: utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -1090,11 +1095,11 @@ msgstr "не вдалося скоротити файл \"%s\" до потріб #: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 #: access/transam/timeline.c:424 access/transam/timeline.c:498 -#: access/transam/xlog.c:3426 access/transam/xlog.c:3601 -#: access/transam/xlog.c:4771 postmaster/postmaster.c:4644 -#: postmaster/postmaster.c:4654 replication/logical/origin.c:599 +#: access/transam/xlog.c:3426 access/transam/xlog.c:3619 +#: access/transam/xlog.c:4797 postmaster/postmaster.c:4646 +#: postmaster/postmaster.c:4656 replication/logical/origin.c:599 #: replication/logical/origin.c:641 replication/logical/origin.c:660 -#: replication/logical/snapbuild.c:1750 replication/slot.c:1586 +#: replication/logical/snapbuild.c:1797 replication/slot.c:1645 #: storage/file/buffile.c:506 storage/file/copydir.c:207 #: utils/init/miscinit.c:1478 utils/init/miscinit.c:1489 #: utils/init/miscinit.c:1497 utils/misc/guc.c:8430 utils/misc/guc.c:8461 @@ -1106,11 +1111,11 @@ msgstr "неможливо записати до файлу \"%s\": %m" #: access/heap/rewriteheap.c:1249 access/transam/twophase.c:1686 #: access/transam/xlogarchive.c:118 access/transam/xlogarchive.c:422 -#: postmaster/postmaster.c:1096 postmaster/syslogger.c:1465 -#: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4432 -#: replication/logical/snapbuild.c:1695 replication/logical/snapbuild.c:2111 -#: replication/slot.c:1683 storage/file/fd.c:788 storage/file/fd.c:3177 -#: storage/file/fd.c:3239 storage/file/reinit.c:250 storage/ipc/dsm.c:315 +#: postmaster/postmaster.c:1098 postmaster/syslogger.c:1465 +#: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4563 +#: replication/logical/snapbuild.c:1742 replication/logical/snapbuild.c:2162 +#: replication/slot.c:1748 storage/file/fd.c:785 storage/file/fd.c:3168 +#: storage/file/fd.c:3230 storage/file/reinit.c:250 storage/ipc/dsm.c:315 #: storage/smgr/md.c:347 storage/smgr/md.c:397 storage/sync/sync.c:250 #: utils/time/snapmgr.c:1606 #, c-format @@ -1241,8 +1246,8 @@ msgstr[1] "%u заморожені сторінки.\n" msgstr[2] "%u заморожених сторінок.\n" msgstr[3] "%u заморожених сторінок.\n" -#: access/heap/vacuumlazy.c:1666 commands/indexcmds.c:4135 -#: commands/indexcmds.c:4154 +#: access/heap/vacuumlazy.c:1666 commands/indexcmds.c:4177 +#: commands/indexcmds.c:4196 #, c-format msgid "%s." msgstr "%s." @@ -1399,8 +1404,8 @@ msgid "cannot access index \"%s\" while it is being reindexed" msgstr "неможливо отримати доступ до індекса \"%s\" в процесі реіндексації" #: access/index/indexam.c:208 catalog/objectaddress.c:1355 -#: commands/indexcmds.c:2799 commands/tablecmds.c:267 commands/tablecmds.c:291 -#: commands/tablecmds.c:16882 commands/tablecmds.c:18676 +#: commands/indexcmds.c:2833 commands/tablecmds.c:267 commands/tablecmds.c:291 +#: commands/tablecmds.c:16894 commands/tablecmds.c:18710 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" не є індексом" @@ -1446,17 +1451,17 @@ msgstr "індекс \"%s\" містить наполовину мертву в msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it." msgstr "Це могло статися через переривання VACUUM у версії 9.3 або старше перед оновленням. Будь ласка, виконайте REINDEX." -#: access/nbtree/nbtutils.c:2680 +#: access/nbtree/nbtutils.c:2685 #, c-format msgid "index row size %zu exceeds btree version %u maximum %zu for index \"%s\"" msgstr "розмір рядка індексу %zu перевищує максимальний розмір для версії %u btree %zu для індексу \"%s\"" -#: access/nbtree/nbtutils.c:2686 +#: access/nbtree/nbtutils.c:2691 #, c-format msgid "Index row references tuple (%u,%u) in relation \"%s\"." msgstr "Рядок індексу посилається на кортеж (%u,,%u) у відношенні \"%s\"." -#: access/nbtree/nbtutils.c:2690 +#: access/nbtree/nbtutils.c:2695 #, c-format msgid "Values larger than 1/3 of a buffer page cannot be indexed.\n" "Consider a function index of an MD5 hash of the value, or use full text indexing." @@ -1495,8 +1500,8 @@ msgid "\"%s\" is an index" msgstr "\"%s\" є індексом" #: access/table/table.c:54 access/table/table.c:88 access/table/table.c:117 -#: access/table/table.c:150 catalog/aclchk.c:1800 commands/tablecmds.c:13591 -#: commands/tablecmds.c:16891 +#: access/table/table.c:150 catalog/aclchk.c:1800 commands/tablecmds.c:13603 +#: commands/tablecmds.c:16903 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\" це складений тип" @@ -1551,25 +1556,25 @@ msgstr "Переконайтесь, що в конфігурації основ msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Переконайтесь, що в конфігурації встановлений параметр \"%s\"." -#: access/transam/multixact.c:1022 +#: access/transam/multixact.c:1106 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\"" msgstr "щоб уникнути втрат даних у базі даних \"%s\", база даних не приймає команди, що створюють нові MultiXactIds" -#: access/transam/multixact.c:1024 access/transam/multixact.c:1031 -#: access/transam/multixact.c:1055 access/transam/multixact.c:1064 +#: access/transam/multixact.c:1108 access/transam/multixact.c:1115 +#: access/transam/multixact.c:1139 access/transam/multixact.c:1148 #, c-format msgid "Execute a database-wide VACUUM in that database.\n" "You might also need to commit or roll back old prepared transactions, or drop stale replication slots." msgstr "Виконати очистку (VACUUM) по всій базі даних.\n" "Можливо, вам доведеться зафіксувати, відкотити назад старі підготовані транзакції або видалити застарілі слоти реплікації." -#: access/transam/multixact.c:1029 +#: access/transam/multixact.c:1113 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "щоб уникнути втрат даних в базі даних з OID %u, база даних не приймає команди, що створюють нові MultiXactIds" -#: access/transam/multixact.c:1050 access/transam/multixact.c:2334 +#: access/transam/multixact.c:1134 access/transam/multixact.c:2421 #, 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" @@ -1578,7 +1583,7 @@ msgstr[1] "бази даних \"%s\" повинні бути очищені (va msgstr[2] "баз даних \"%s\" повинні бути очищені (vacuumed) перед тим, як більшість MultiXactIds буде використано (%u)" msgstr[3] "баз даних \"%s\" повинні бути очищені (vacuumed) перед тим, як більшість MultiXactId буде використано (%u)" -#: access/transam/multixact.c:1059 access/transam/multixact.c:2343 +#: access/transam/multixact.c:1143 access/transam/multixact.c:2430 #, 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" @@ -1587,12 +1592,12 @@ msgstr[1] "бази даних з OID %u повинні бути очищені msgstr[2] "баз даних з OID %u повинні бути очищені (vacuumed), перед тим як більшість MultiXactIds буде використано (%u)" msgstr[3] "баз даних з OID %u повинні бути очищені (vacuumed), перед тим як більшість MultiXactId буде використано (%u)" -#: access/transam/multixact.c:1120 +#: access/transam/multixact.c:1207 #, c-format msgid "multixact \"members\" limit exceeded" msgstr "перевищено ліміт членів мультитранзакції" -#: access/transam/multixact.c:1121 +#: access/transam/multixact.c:1208 #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." @@ -1601,12 +1606,12 @@ msgstr[1] "Мультитранзакція створена цією коман msgstr[2] "Мультитранзакція створена цією командою з %u членів, але місця вистачає лише для %u членів." msgstr[3] "Мультитранзакція створена цією командою з %u членів, але місця вистачає лише для %u членів." -#: access/transam/multixact.c:1126 +#: access/transam/multixact.c:1213 #, c-format msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Виконати очистку (VACUUM) по всій базі даних з OID %u зі зменшенням значення vacuum_multixact_freeze_min_age та vacuum_multixact_freeze_table_age settings." -#: access/transam/multixact.c:1157 +#: access/transam/multixact.c:1244 #, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" @@ -1615,22 +1620,27 @@ msgstr[1] "база даних з OID %u повинна бути очищена msgstr[2] "база даних з OID %u повинна бути очищена перед використанням додаткових членів мультитранзакції (%d)" msgstr[3] "база даних з OID %u повинна бути очищена перед використанням додаткових членів мультитранзакції (%d)" -#: access/transam/multixact.c:1162 +#: access/transam/multixact.c:1249 #, c-format msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Виконати очищення (VACUUM) по всій цій базі даних зі зменшенням значення vacuum_multixact_freeze_min_age та vacuum_multixact_freeze_table_age settings." -#: access/transam/multixact.c:1301 +#: access/transam/multixact.c:1388 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u припинив існування -- очевидно відбулося зациклення" -#: access/transam/multixact.c:1307 +#: access/transam/multixact.c:1394 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u ще не був створений -- очевидно відбулося зациклення" -#: access/transam/multixact.c:2339 access/transam/multixact.c:2348 +#: access/transam/multixact.c:1469 +#, c-format +msgid "MultiXact %u has invalid next offset" +msgstr "У MultiXact %u є недійсне наступне зміщення" + +#: access/transam/multixact.c:2426 access/transam/multixact.c:2435 #: access/transam/varsup.c:151 access/transam/varsup.c:158 #: access/transam/varsup.c:466 access/transam/varsup.c:473 #, c-format @@ -1639,61 +1649,61 @@ msgid "To avoid a database shutdown, execute a database-wide VACUUM in that data msgstr "Щоб уникнути вимкнення бази даних, виконайте VACUUM для всієї бази даних.\n" "Можливо, вам доведеться зафіксувати або відкотити назад старі підготовленні транзакції або видалити застарілі слоти реплікації." -#: access/transam/multixact.c:2622 +#: access/transam/multixact.c:2709 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "Захист від зациклення члену MultiXact вимкнена, оскільки найстаріша контрольна точка MultiXact %u не існує на диску" -#: access/transam/multixact.c:2644 +#: access/transam/multixact.c:2731 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "Захист від зациклення члену MultiXact наразі ввімкнена" -#: access/transam/multixact.c:3038 +#: access/transam/multixact.c:3125 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "найстарішу MultiXact %u не знайдено, найновіша MultiXact %u, скорочення пропускається" -#: access/transam/multixact.c:3056 +#: access/transam/multixact.c:3143 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "неможливо виконати скорочення до MultiXact %u, оскільки її не існує на диску, скорочення пропускається" -#: access/transam/multixact.c:3370 +#: access/transam/multixact.c:3481 #, c-format msgid "invalid MultiXactId: %u" msgstr "неприпустимий MultiXactId: %u" -#: access/transam/parallel.c:737 access/transam/parallel.c:856 +#: access/transam/parallel.c:744 access/transam/parallel.c:863 #, c-format msgid "parallel worker failed to initialize" msgstr "не вдалося виконати ініціалізацію паралельного виконавця" -#: access/transam/parallel.c:738 access/transam/parallel.c:857 +#: access/transam/parallel.c:745 access/transam/parallel.c:864 #, c-format msgid "More details may be available in the server log." msgstr "Більше деталей можуть бути доступні в журналі серверу." -#: access/transam/parallel.c:918 +#: access/transam/parallel.c:925 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster завершився під час паралельної транзакції" -#: access/transam/parallel.c:1105 +#: access/transam/parallel.c:1112 #, c-format msgid "lost connection to parallel worker" msgstr "втрачено зв'язок з паралельним виконавцем" -#: access/transam/parallel.c:1171 access/transam/parallel.c:1173 +#: access/transam/parallel.c:1178 access/transam/parallel.c:1180 msgid "parallel worker" msgstr "паралельний виконавець" -#: access/transam/parallel.c:1326 +#: access/transam/parallel.c:1333 #, c-format msgid "could not map dynamic shared memory segment" msgstr "не вдалося відобразити динамічний сегмент спільної пам'яті" -#: access/transam/parallel.c:1331 +#: access/transam/parallel.c:1338 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "неприпустиме магічне число в динамічному сегменті спільної пам'яті" @@ -1895,7 +1905,7 @@ msgstr "неприпустимий розмір, збережений у фай msgid "calculated CRC checksum does not match value stored in file \"%s\"" msgstr "обчислена контрольна сума CRC не відповідає значенню, збереженому у файлі \"%s\"" -#: access/transam/twophase.c:1400 access/transam/xlog.c:6693 +#: access/transam/twophase.c:1400 access/transam/xlog.c:6722 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "Не вдалося розмістити обробник журналу транзакцій." @@ -2012,290 +2022,285 @@ msgstr "база даних з OID %u повинна бути очищена (г msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "в одній транзакції не може бути більше 2^32-2 команд" -#: access/transam/xact.c:1584 +#: access/transam/xact.c:1594 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "перевищено межу числа зафіксованих підтранзакцій (%d)" -#: access/transam/xact.c:2435 +#: access/transam/xact.c:2445 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary objects" msgstr "неможливо виконати PREPARE для транзакції, що здійснювалася на тимчасових об'єктах" -#: access/transam/xact.c:2445 +#: access/transam/xact.c:2455 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "не можна виконати PREPARE для транзакції, яка має експортовані знімки" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3416 +#: access/transam/xact.c:3426 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s неможливо запустити всередині блоку транзакції" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3426 +#: access/transam/xact.c:3436 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s неможливо запустити всередині підтранзакції" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3436 +#: access/transam/xact.c:3446 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s не можна використовувати в межах конвеєра" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3446 +#: access/transam/xact.c:3456 #, c-format msgid "%s cannot be executed from a function" msgstr "%s неможливо виконати з функції" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3517 access/transam/xact.c:3832 -#: access/transam/xact.c:3911 access/transam/xact.c:4034 -#: access/transam/xact.c:4185 access/transam/xact.c:4254 -#: access/transam/xact.c:4365 +#: access/transam/xact.c:3527 access/transam/xact.c:3842 +#: access/transam/xact.c:3921 access/transam/xact.c:4044 +#: access/transam/xact.c:4195 access/transam/xact.c:4264 +#: access/transam/xact.c:4375 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s може використовуватися тільки в блоках транзакції" -#: access/transam/xact.c:3718 +#: access/transam/xact.c:3728 #, c-format msgid "there is already a transaction in progress" msgstr "транзакція вже виконується" -#: access/transam/xact.c:3837 access/transam/xact.c:3916 -#: access/transam/xact.c:4039 +#: access/transam/xact.c:3847 access/transam/xact.c:3926 +#: access/transam/xact.c:4049 #, c-format msgid "there is no transaction in progress" msgstr "немає незавершеної транзакції" -#: access/transam/xact.c:3927 +#: access/transam/xact.c:3937 #, c-format msgid "cannot commit during a parallel operation" msgstr "не можна фіксувати транзакції під час паралельних операцій" -#: access/transam/xact.c:4050 +#: access/transam/xact.c:4060 #, c-format msgid "cannot abort during a parallel operation" msgstr "не можна перервати під час паралельних операцій" -#: access/transam/xact.c:4149 +#: access/transam/xact.c:4159 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "не можна визначати точки збереження під час паралельних операцій" -#: access/transam/xact.c:4236 +#: access/transam/xact.c:4246 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "не можна вивільняти точки збереження під час паралельних транзакцій" -#: access/transam/xact.c:4246 access/transam/xact.c:4297 -#: access/transam/xact.c:4357 access/transam/xact.c:4406 +#: access/transam/xact.c:4256 access/transam/xact.c:4307 +#: access/transam/xact.c:4367 access/transam/xact.c:4416 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "точка збереження \"%s\" не існує" -#: access/transam/xact.c:4303 access/transam/xact.c:4412 +#: access/transam/xact.c:4313 access/transam/xact.c:4422 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "точка збереження \"%s\" не існує на поточному рівні збереження точок" -#: access/transam/xact.c:4345 +#: access/transam/xact.c:4355 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "не можна відкотити назад до точки збереження під час паралельних операцій" -#: access/transam/xact.c:4473 +#: access/transam/xact.c:4483 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "не можна запустити підтранзакцію під час паралельних операцій" -#: access/transam/xact.c:4541 +#: access/transam/xact.c:4551 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "не можна визначити підтранзакцію під час паралельних операцій" -#: access/transam/xact.c:5188 +#: access/transam/xact.c:5198 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "в одній транзакції не може бути більше 2^32-1 підтранзакцій" -#: access/transam/xlog.c:1839 +#: access/transam/xlog.c:1851 #, c-format msgid "request to flush past end of generated WAL; request %X/%X, current position %X/%X" msgstr "запит на очищення минулого кінця згенерованого WAL; запит %X/%X, поточна позиція %X/%X" -#: access/transam/xlog.c:2612 +#: access/transam/xlog.c:2622 #, 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:3489 storage/file/fd.c:839 storage/file/fd.c:852 -#, c-format -msgid "This is known to fail occasionally during archive recovery, where it is harmless." -msgstr "Відомо, що можливі помилки під час відновлення архіву, коли це не шкодить." - -#: access/transam/xlog.c:4014 access/transam/xlogutils.c:798 -#: replication/walsender.c:2557 +#: access/transam/xlog.c:4039 access/transam/xlogutils.c:798 +#: replication/walsender.c:2575 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "запитуваний сегмент WAL %s вже видалений" -#: access/transam/xlog.c:4289 +#: access/transam/xlog.c:4315 #, c-format msgid "could not rename file \"%s\": %m" msgstr "не вдалося перейменувати файл \"%s\": %m" -#: access/transam/xlog.c:4331 access/transam/xlog.c:4341 +#: access/transam/xlog.c:4357 access/transam/xlog.c:4367 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "необхідний каталог WAL \"%s\" не існує" -#: access/transam/xlog.c:4347 +#: access/transam/xlog.c:4373 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "створюється відсутній каталог WAL \"%s\"" -#: access/transam/xlog.c:4350 commands/dbcommands.c:2295 +#: access/transam/xlog.c:4376 commands/dbcommands.c:2295 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "не вдалося створити відстуній каталог \"%s\": %m" -#: access/transam/xlog.c:4472 +#: access/transam/xlog.c:4498 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "неочіукваний ID лінії часу %u в сегменті журналу %s, зсув %u" -#: access/transam/xlog.c:4610 +#: access/transam/xlog.c:4636 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "нова лінія часу %u не є дочірньою для лінії часу системи бази даних %u" -#: access/transam/xlog.c:4624 +#: access/transam/xlog.c:4650 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "нова лінія часу %u відгалузилась від поточної лінії часу бази даних %u до поточної точки відновлення %X/%X" -#: access/transam/xlog.c:4643 +#: access/transam/xlog.c:4669 #, c-format msgid "new target timeline is %u" msgstr "нова цільова лінія часу %u" -#: access/transam/xlog.c:4679 +#: access/transam/xlog.c:4705 #, c-format msgid "could not generate secret authorization token" msgstr "не вдалося згенерувати секретний токен для авторизації" -#: access/transam/xlog.c:4838 access/transam/xlog.c:4847 -#: access/transam/xlog.c:4871 access/transam/xlog.c:4878 -#: access/transam/xlog.c:4885 access/transam/xlog.c:4890 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 #: access/transam/xlog.c:4897 access/transam/xlog.c:4904 -#: access/transam/xlog.c:4911 access/transam/xlog.c:4918 -#: access/transam/xlog.c:4925 access/transam/xlog.c:4932 -#: access/transam/xlog.c:4941 access/transam/xlog.c:4948 +#: access/transam/xlog.c:4911 access/transam/xlog.c:4916 +#: access/transam/xlog.c:4923 access/transam/xlog.c:4930 +#: access/transam/xlog.c:4937 access/transam/xlog.c:4944 +#: access/transam/xlog.c:4951 access/transam/xlog.c:4958 +#: access/transam/xlog.c:4967 access/transam/xlog.c:4974 #: utils/init/miscinit.c:1635 #, c-format msgid "database files are incompatible with server" msgstr "файли бази даних є несумісними з даним сервером" -#: access/transam/xlog.c:4839 +#: access/transam/xlog.c:4865 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "Кластер бази даних було ініціалізовано з PG_CONTROL_VERSION %d (0x%08x), але сервер було скомпільовано з PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4843 +#: access/transam/xlog.c:4869 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Можливо, проблема викликана різним порядком байту. Здається, вам потрібно виконати команду \"initdb\"." -#: access/transam/xlog.c:4848 +#: access/transam/xlog.c:4874 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "Кластер баз даних був ініціалізований з PG_CONTROL_VERSION %d, але сервер скомпільований з PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4851 access/transam/xlog.c:4875 -#: access/transam/xlog.c:4882 access/transam/xlog.c:4887 +#: access/transam/xlog.c:4877 access/transam/xlog.c:4901 +#: access/transam/xlog.c:4908 access/transam/xlog.c:4913 #, c-format msgid "It looks like you need to initdb." msgstr "Здається, Вам треба виконати initdb." -#: access/transam/xlog.c:4862 +#: access/transam/xlog.c:4888 #, c-format msgid "incorrect checksum in control file" msgstr "помилка контрольної суми у файлі pg_control" -#: access/transam/xlog.c:4872 +#: access/transam/xlog.c:4898 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "Кластер бази даних було ініціалізовано з CATALOG_VERSION_NO %d, але сервер було скомпільовано з CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4879 +#: access/transam/xlog.c:4905 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "Кластер бази даних було ініціалізовано з MAXALIGN %d, але сервер було скомпільовано з MAXALIGN %d." -#: access/transam/xlog.c:4886 +#: access/transam/xlog.c:4912 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Здається, в кластері баз даних і в програмі сервера використовуються різні формати чисел з плаваючою точкою." -#: access/transam/xlog.c:4891 +#: access/transam/xlog.c:4917 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "Кластер бази даних було ініціалізовано з BLCKSZ %d, але сервер було скомпільовано з BLCKSZ %d." -#: access/transam/xlog.c:4894 access/transam/xlog.c:4901 -#: access/transam/xlog.c:4908 access/transam/xlog.c:4915 -#: access/transam/xlog.c:4922 access/transam/xlog.c:4929 -#: access/transam/xlog.c:4936 access/transam/xlog.c:4944 -#: access/transam/xlog.c:4951 +#: access/transam/xlog.c:4920 access/transam/xlog.c:4927 +#: access/transam/xlog.c:4934 access/transam/xlog.c:4941 +#: access/transam/xlog.c:4948 access/transam/xlog.c:4955 +#: access/transam/xlog.c:4962 access/transam/xlog.c:4970 +#: access/transam/xlog.c:4977 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Здається, вам потрібно перекомпілювати сервер або виконати initdb." -#: access/transam/xlog.c:4898 +#: access/transam/xlog.c:4924 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "Кластер бази даних було ініціалізовано з ELSEG_SIZE %d, але сервер було скомпільовано з ELSEG_SIZE %d." -#: access/transam/xlog.c:4905 +#: access/transam/xlog.c:4931 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "Кластер бази даних було ініціалізовано з XLOG_BLCKSZ %d, але сервер було скомпільовано з XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4912 +#: access/transam/xlog.c:4938 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "Кластер бази даних було ініціалізовано з NAMEDATALEN %d, але сервер було скомпільовано з NAMEDATALEN %d." -#: access/transam/xlog.c:4919 +#: access/transam/xlog.c:4945 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "Кластер бази даних було ініціалізовано з INDEX_MAX_KEYS %d, але сервер було скомпільовано з INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4926 +#: access/transam/xlog.c:4952 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "Кластер бази даних було ініціалізовано з TOAST_MAX_CHUNK_SIZE %d, але сервер було скомпільовано з TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4933 +#: access/transam/xlog.c:4959 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Кластер бази даних було ініціалізовано з LOBLKSIZE %d, але сервер було скомпільовано з LOBLKSIZE %d." -#: access/transam/xlog.c:4942 +#: access/transam/xlog.c:4968 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Кластер бази даних було ініціалізовано без USE_FLOAT8_BYVAL, але сервер було скомпільовано з USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4949 +#: access/transam/xlog.c:4975 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Кластер бази даних було ініціалізовано з USE_FLOAT8_BYVAL, але сервер було скомпільовано без USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4958 +#: access/transam/xlog.c:4984 #, c-format msgid "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d byte" msgid_plural "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d bytes" @@ -2304,273 +2309,273 @@ msgstr[1] "Розмір сегменту WAL повинен задаватись msgstr[2] "Розмір сегменту WAL повинен задаватись ступенем 2 в інтервалі від 1 МБ до 1 ГБ, але в керуючому файлі вказано значення %d" msgstr[3] "Розмір сегменту WAL повинен задаватись ступенем 2 в інтервалі від 1 МБ до 1 ГБ, але в керуючому файлі вказано значення %d" -#: access/transam/xlog.c:4970 +#: access/transam/xlog.c:4996 #, c-format msgid "\"min_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"min_wal_size\" має бути мінімум у 2 рази більше, ніж \"wal_segment_size\"" -#: access/transam/xlog.c:4974 +#: access/transam/xlog.c:5000 #, c-format msgid "\"max_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"max_wal_size\" має бути мінімум у 2 рази більше, ніж \"wal_segment_size\"" -#: access/transam/xlog.c:5408 +#: access/transam/xlog.c:5438 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "не вдалося записати початкове завантаження випереджувального журналювання: %m" -#: access/transam/xlog.c:5416 +#: access/transam/xlog.c:5446 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "не вдалося скинути на диск початкове завантаження випереджувального журналювання: %m" -#: access/transam/xlog.c:5422 +#: access/transam/xlog.c:5452 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "не вдалося закрити початкове завантаження випереджувального журналювання: %m" -#: access/transam/xlog.c:5483 +#: access/transam/xlog.c:5513 #, c-format msgid "using recovery command file \"%s\" is not supported" msgstr "використання файлу команд відновлення \"%s\" не підтримується" -#: access/transam/xlog.c:5548 +#: access/transam/xlog.c:5578 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "режим очікування не підтримується однокористувацьким сервером" -#: access/transam/xlog.c:5565 +#: access/transam/xlog.c:5595 #, c-format msgid "specified neither primary_conninfo nor restore_command" msgstr "не заззначено ані параметр primary_conninfo, ані параметр restore_command" -#: access/transam/xlog.c:5566 +#: access/transam/xlog.c:5596 #, c-format msgid "The database server will regularly poll the pg_wal subdirectory to check for files placed there." msgstr "Сервер бази даних буде регулярно опитувати підкатолог pg_wal і перевіряти файли, що містяться у ньому." -#: access/transam/xlog.c:5574 +#: access/transam/xlog.c:5604 #, c-format msgid "must specify restore_command when standby mode is not enabled" msgstr "необхідно вказати restore_command, якщо не ввімкнено режиму очікування" -#: access/transam/xlog.c:5612 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery target timeline %u does not exist" msgstr "цільова лінія часу відновлення %u не існує" -#: access/transam/xlog.c:5734 +#: access/transam/xlog.c:5763 #, c-format msgid "archive recovery complete" msgstr "відновлення архіву завершено" -#: access/transam/xlog.c:5800 access/transam/xlog.c:6076 +#: access/transam/xlog.c:5829 access/transam/xlog.c:6105 #, c-format msgid "recovery stopping after reaching consistency" msgstr "відновлення зупиняється після досягнення узгодженості" -#: access/transam/xlog.c:5821 +#: access/transam/xlog.c:5850 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "відновлення зупиняється перед позицією WAL (LSN) \"%X/%X\"" -#: access/transam/xlog.c:5911 +#: access/transam/xlog.c:5940 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "відновлення припиняється до підтвердження транзакції %u, час %s" -#: access/transam/xlog.c:5918 +#: access/transam/xlog.c:5947 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "відновлення припиняється до скасування транзакції %u, час %s" -#: access/transam/xlog.c:5971 +#: access/transam/xlog.c:6000 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "відновлення припиняється в точці відновлення\"%s\", час %s" -#: access/transam/xlog.c:5989 +#: access/transam/xlog.c:6018 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "відновлення припиняється пісня локації WAL (LSN) \"%X/%X\"" -#: access/transam/xlog.c:6056 +#: access/transam/xlog.c:6085 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "відновлення припиняється після підтвердження транзакції %u, час %s" -#: access/transam/xlog.c:6064 +#: access/transam/xlog.c:6093 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "відновлення припиняється після скасування транзакції %u, час %s" -#: access/transam/xlog.c:6109 +#: access/transam/xlog.c:6138 #, c-format msgid "pausing at the end of recovery" msgstr "пауза в кінці відновлення" -#: access/transam/xlog.c:6110 +#: access/transam/xlog.c:6139 #, c-format msgid "Execute pg_wal_replay_resume() to promote." msgstr "Виконайте pg_wal_replay_resume() для підвищення рівня." -#: access/transam/xlog.c:6113 access/transam/xlog.c:6395 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6424 #, c-format msgid "recovery has paused" msgstr "відновлення зупинено" -#: access/transam/xlog.c:6114 +#: access/transam/xlog.c:6143 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Виконайте pg_wal_replay_resume(), щоб продовжити." -#: access/transam/xlog.c:6386 +#: access/transam/xlog.c:6415 #, c-format msgid "hot standby is not possible because of insufficient parameter settings" msgstr "hot standby неможливий через недостатнє налаштування параметрів" -#: access/transam/xlog.c:6387 access/transam/xlog.c:6414 -#: access/transam/xlog.c:6444 +#: access/transam/xlog.c:6416 access/transam/xlog.c:6443 +#: access/transam/xlog.c:6473 #, c-format msgid "%s = %d is a lower setting than on the primary server, where its value was %d." msgstr "%s = %d є нижчим параметром, ніж на основному сервері, де його значення було %d." -#: access/transam/xlog.c:6396 +#: access/transam/xlog.c:6425 #, c-format msgid "If recovery is unpaused, the server will shut down." msgstr "Якщо відновлення не буде зупинено, сервер завершить роботу." -#: access/transam/xlog.c:6397 +#: access/transam/xlog.c:6426 #, c-format msgid "You can then restart the server after making the necessary configuration changes." msgstr "Після здійснення необхідних змін у конфігурації, ви можете перезапустити сервер." -#: access/transam/xlog.c:6408 +#: access/transam/xlog.c:6437 #, c-format msgid "promotion is not possible because of insufficient parameter settings" msgstr "підвищення неможливе через недостатнє налаштування параметрів" -#: access/transam/xlog.c:6418 +#: access/transam/xlog.c:6447 #, c-format msgid "Restart the server after making the necessary configuration changes." msgstr "Перезапустити сервер після здійснення необхідних змін у конфігурації." -#: access/transam/xlog.c:6442 +#: access/transam/xlog.c:6471 #, c-format msgid "recovery aborted because of insufficient parameter settings" msgstr "відновлення перервано через недостатнє налаштування параметрів" -#: access/transam/xlog.c:6448 +#: access/transam/xlog.c:6477 #, c-format msgid "You can restart the server after making the necessary configuration changes." msgstr "Ви можете перезапустити сервер, після здійснення необхідних змін у конфігурації." -#: access/transam/xlog.c:6470 +#: access/transam/xlog.c:6499 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "WAL був створений з параметром wal_level=minimal, неможливо продовжити відновлення" -#: access/transam/xlog.c:6471 +#: access/transam/xlog.c:6500 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "Це трапляється, якщо ви тимчасово встановили параметр wal_level=minimal на сервері." -#: access/transam/xlog.c:6472 +#: access/transam/xlog.c:6501 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "Використовуйте резервну копію, зроблену після встановлення значення wal_level, що перевищує максимальне." -#: access/transam/xlog.c:6541 +#: access/transam/xlog.c:6570 #, c-format msgid "control file contains invalid checkpoint location" msgstr "контрольний файл містить недійсне розташування контрольної точки" -#: access/transam/xlog.c:6552 +#: access/transam/xlog.c:6581 #, c-format msgid "database system was shut down at %s" msgstr "система бази даних була вимкнена %s" -#: access/transam/xlog.c:6558 +#: access/transam/xlog.c:6587 #, c-format msgid "database system was shut down in recovery at %s" msgstr "система бази даних завершила роботу у процесі відновлення %s" -#: access/transam/xlog.c:6564 +#: access/transam/xlog.c:6593 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "завершення роботи бази даних було перервано; останній момент роботи %s" -#: access/transam/xlog.c:6570 +#: access/transam/xlog.c:6599 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "система бази даних була перервана в процесі відновлення %s" -#: access/transam/xlog.c:6572 +#: access/transam/xlog.c:6601 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Це, ймовірно, означає, що деякі дані були пошкоджені, і вам доведеться відновити базу даних з останнього збереження." -#: access/transam/xlog.c:6578 +#: access/transam/xlog.c:6607 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "робота системи бази даних була перервана в процесі відновлення, час в журналі %s" -#: access/transam/xlog.c:6580 +#: access/transam/xlog.c:6609 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "Якщо це відбувається більше, ніж один раз, можливо, якісь дані були зіпсовані, і для відновлення треба вибрати більш ранню точку." -#: access/transam/xlog.c:6586 +#: access/transam/xlog.c:6615 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "робота системи бази даних була перервана; останній момент роботи %s" -#: access/transam/xlog.c:6592 +#: access/transam/xlog.c:6621 #, c-format msgid "control file contains invalid database cluster state" msgstr "контрольний файл містить недійсний стан кластеру бази даних" -#: access/transam/xlog.c:6649 +#: access/transam/xlog.c:6678 #, c-format msgid "entering standby mode" msgstr "перехід у режим очікування" -#: access/transam/xlog.c:6652 +#: access/transam/xlog.c:6681 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "починається відновлення точки в часі до XID %u" -#: access/transam/xlog.c:6656 +#: access/transam/xlog.c:6685 #, c-format msgid "starting point-in-time recovery to %s" msgstr "починається відновлення точки в часі до %s" -#: access/transam/xlog.c:6660 +#: access/transam/xlog.c:6689 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "починається відновлення точки в часі до \"%s\"" -#: access/transam/xlog.c:6664 +#: access/transam/xlog.c:6693 #, c-format msgid "starting point-in-time recovery to WAL location (LSN) \"%X/%X\"" msgstr "починається відновлення точки в часі до локації WAL (LSN) \"%X/%X\"" -#: access/transam/xlog.c:6668 +#: access/transam/xlog.c:6697 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "починається відновлення даних до першої точки домовленості" -#: access/transam/xlog.c:6671 +#: access/transam/xlog.c:6700 #, c-format msgid "starting archive recovery" msgstr "початок відновлення архіву" -#: access/transam/xlog.c:6745 +#: access/transam/xlog.c:6774 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "не вдалося знайти положення REDO, вказане записом контрольної точки" -#: access/transam/xlog.c:6746 access/transam/xlog.c:6756 +#: access/transam/xlog.c:6775 access/transam/xlog.c:6785 #, c-format msgid "If you are restoring from a backup, touch \"%s/recovery.signal\" and add required recovery options.\n" "If you are not restoring from a backup, try removing the file \"%s/backup_label\".\n" @@ -2579,300 +2584,305 @@ msgstr "Якщо ви відновлюєте з резервної копії, "Якщо ви не відновлюєте з резервної копії, спробуйте видалити файл \"%s/backup_label\".\n" "Будьте обережні: видалення \"%s/backup_label\" призведе до пошкодження кластеру при відновленні з резервної копії." -#: access/transam/xlog.c:6755 +#: access/transam/xlog.c:6784 #, c-format msgid "could not locate required checkpoint record" msgstr "не вдалося знайти запис потрібної контрольної точки" -#: access/transam/xlog.c:6784 commands/tablespace.c:665 +#: access/transam/xlog.c:6813 commands/tablespace.c:665 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "не вдалося створити символічне послання \"%s\": %m" -#: access/transam/xlog.c:6816 access/transam/xlog.c:6822 +#: access/transam/xlog.c:6845 access/transam/xlog.c:6851 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "файл \"%s\" ігнорується, тому що файлу \"%s\" не існує" -#: access/transam/xlog.c:6818 access/transam/xlog.c:12386 +#: access/transam/xlog.c:6847 access/transam/xlog.c:12471 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Файл \"%s\" був перейменований на \"%s\"." -#: access/transam/xlog.c:6824 +#: access/transam/xlog.c:6853 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Неможливо перейменувати файл \"%s\" на \"%s\": %m." -#: access/transam/xlog.c:6875 +#: access/transam/xlog.c:6904 #, c-format msgid "could not locate a valid checkpoint record" msgstr "не вдалося знайти запис допустимої контрольної точки" -#: access/transam/xlog.c:6913 +#: access/transam/xlog.c:6915 +#, c-format +msgid "could not find redo location %X/%08X referenced by checkpoint record at %X/%08X" +msgstr "не вдалося знайти місце перезапису %X/%08X, на який посилається запис контрольної точки в %X/%08X" + +#: access/transam/xlog.c:6952 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "запитувана лінія часу %u не є відгалуженням історії цього серверу" -#: access/transam/xlog.c:6915 +#: access/transam/xlog.c:6954 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "Остання контрольна точка %X/%X на лінії часу %u, але в історії запитуваної лінії часу сервер відгалузився з цієї лінії в %X/%X." -#: access/transam/xlog.c:6929 +#: access/transam/xlog.c:6968 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "запитувана лінія часу %u не містить мінімальну точку відновлення %X/%X на лінії часу %u" -#: access/transam/xlog.c:6959 +#: access/transam/xlog.c:6998 #, c-format msgid "invalid next transaction ID" msgstr "невірний ID наступної транзакції" -#: access/transam/xlog.c:7059 +#: access/transam/xlog.c:7098 #, c-format msgid "invalid redo in checkpoint record" msgstr "невірний запис REDO в контрольній точці" -#: access/transam/xlog.c:7070 +#: access/transam/xlog.c:7109 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "невірний запис REDO в контрольній точці вимкнення" -#: access/transam/xlog.c:7110 +#: access/transam/xlog.c:7149 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "робота системи бази даних не була завершена належним чином; відбувається автоматичне відновлення" -#: access/transam/xlog.c:7114 +#: access/transam/xlog.c:7153 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "відновлення після збою починається на лінії часу %u і має цільову лінію часу: %u" -#: access/transam/xlog.c:7161 +#: access/transam/xlog.c:7200 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label містить дані, які не узгоджені з файлом pg_control" -#: access/transam/xlog.c:7162 +#: access/transam/xlog.c:7201 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Це означає, що резервна копія була пошкоджена і вам доведеться використати іншу резервну копію для відновлення." -#: access/transam/xlog.c:7389 +#: access/transam/xlog.c:7428 #, c-format msgid "redo starts at %X/%X" msgstr "запис REDO починається з %X/%X" -#: access/transam/xlog.c:7614 +#: access/transam/xlog.c:7653 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "запитувана точка відновлення передує узгодженій точці відновлення" -#: access/transam/xlog.c:7652 +#: access/transam/xlog.c:7691 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "повторно виконано через %X/%X системне використання: %s" -#: access/transam/xlog.c:7658 +#: access/transam/xlog.c:7697 #, c-format msgid "last completed transaction was at log time %s" msgstr "остання завершена транзакція була в %s" -#: access/transam/xlog.c:7667 +#: access/transam/xlog.c:7706 #, c-format msgid "redo is not required" msgstr "дані REDO не потрібні" -#: access/transam/xlog.c:7679 +#: access/transam/xlog.c:7718 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "відновлення завершилось до досягення налаштованої цілі відновлення" -#: access/transam/xlog.c:7763 access/transam/xlog.c:7767 +#: access/transam/xlog.c:7802 access/transam/xlog.c:7806 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL завершився до завершення онлайн резервного копіювання" -#: access/transam/xlog.c:7764 +#: access/transam/xlog.c:7803 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Всі журнали WAL, створені під час резервного копіювання \"на ходу\", повинні бути в наявності для відновлення." -#: access/transam/xlog.c:7768 +#: access/transam/xlog.c:7807 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Резервне копіювання БД \"на ходу\", розпочате за допомогою команди \"pg_start_backup()\", повинне завершуватися командою \"pg_stop_backup()\", і для відновлення повинні бути доступні усі журнали WAL. " -#: access/transam/xlog.c:7771 +#: access/transam/xlog.c:7810 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL завершився до узгодженої точки відновлення" -#: access/transam/xlog.c:7806 +#: access/transam/xlog.c:7853 #, c-format msgid "selected new timeline ID: %u" msgstr "вибрано новий ID часової лінії: %u" -#: access/transam/xlog.c:8274 +#: access/transam/xlog.c:8321 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "знайдено неочікуваний запис каталогу \"%s\" в %s" -#: access/transam/xlog.c:8276 +#: access/transam/xlog.c:8323 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "Всі записи каталогу в pg_tblspc/ повинні бути символічними посиланнями." -#: access/transam/xlog.c:8277 +#: access/transam/xlog.c:8324 #, c-format msgid "Remove those directories, or set allow_in_place_tablespaces to ON transiently to let recovery complete." msgstr "Видаліть ті каталоги, або тимчасово встановіть для параметра allow_in_place_tablespaces значення ON, щоб завершити відновлення." -#: access/transam/xlog.c:8361 +#: access/transam/xlog.c:8408 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "узгоджений стан відновлення досягнутий %X/%X" -#: access/transam/xlog.c:8570 +#: access/transam/xlog.c:8617 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "невірне посилання на первинну контрольну точку в контрольному файлі" -#: access/transam/xlog.c:8574 +#: access/transam/xlog.c:8621 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "невірне посилання на контрольну точку в файлі backup_label" -#: access/transam/xlog.c:8592 +#: access/transam/xlog.c:8639 #, c-format msgid "invalid primary checkpoint record" msgstr "невірний запис первинної контрольної точки" -#: access/transam/xlog.c:8596 +#: access/transam/xlog.c:8643 #, c-format msgid "invalid checkpoint record" msgstr "невірний запис контрольної точки" -#: access/transam/xlog.c:8607 +#: access/transam/xlog.c:8654 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "невірний ID менеджера ресурсів в записі первинної контрольної точки" -#: access/transam/xlog.c:8611 +#: access/transam/xlog.c:8658 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "невірний ID менеджера ресурсів в записі контрольної точки" -#: access/transam/xlog.c:8624 +#: access/transam/xlog.c:8671 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "невірний xl_info у записі первинної контрольної точки" -#: access/transam/xlog.c:8628 +#: access/transam/xlog.c:8675 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "невірний xl_info у записі контрольної точки" -#: access/transam/xlog.c:8639 +#: access/transam/xlog.c:8686 #, c-format msgid "invalid length of primary checkpoint record" msgstr "невірна довжина запису первинної контрольної очки" -#: access/transam/xlog.c:8643 +#: access/transam/xlog.c:8690 #, c-format msgid "invalid length of checkpoint record" msgstr "невірна довжина запису контрольної точки" -#: access/transam/xlog.c:8824 +#: access/transam/xlog.c:8871 #, c-format msgid "shutting down" msgstr "завершення роботи" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8863 +#: access/transam/xlog.c:8910 #, c-format msgid "restartpoint starting:%s%s%s%s%s%s%s%s" msgstr "початок точки перезапуску: %s%s%s%s%s%s%s%s" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:8875 +#: access/transam/xlog.c:8922 #, c-format msgid "checkpoint starting:%s%s%s%s%s%s%s%s" msgstr "початок контрольної точки: %s%s%s%s%s%s%s%s" -#: access/transam/xlog.c:8935 +#: access/transam/xlog.c:8982 #, c-format msgid "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "точка перезапуску завершена: записано %d буферів (%.1f%%); %d WAL файлів додано, %d видалено, %d перероблених; запис=%ld.%03d сек, синхронізація=%ld.%03d сек, усього=%ld.%03d сек; файли синхронізації=%d, найдовший=%ld.%03d сек, середній=%ld.%03d сек; дистанція=%d кб, приблизно=%d кб" -#: access/transam/xlog.c:8955 +#: access/transam/xlog.c:9002 #, c-format msgid "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d removed, %d recycled; write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; sync files=%d, longest=%ld.%03d s, average=%ld.%03d s; distance=%d kB, estimate=%d kB" msgstr "контрольна точка завершена: записано %d буферів (%.1f%%); %d WAL файлів додано, %d видалено, %d перероблених; запис=%ld.%03d сек, синхронізація=%ld.%03d сек, усього=%ld.%03d сек; файли синхронізації=%d, найдовший=%ld.%03d сек, середній=%ld.%03d сек; дистанція=%d кб, приблизно=%d кб" -#: access/transam/xlog.c:9406 +#: access/transam/xlog.c:9463 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "під час того вимкнення БД помічено конкурентну активність у випереджувальному журналюванні" -#: access/transam/xlog.c:9939 +#: access/transam/xlog.c:10022 #, c-format msgid "recovery restart point at %X/%X" msgstr "відновлення збереженої точки %X/%X" -#: access/transam/xlog.c:9941 +#: access/transam/xlog.c:10024 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Остання завершена транзакція була в %s." -#: access/transam/xlog.c:10187 +#: access/transam/xlog.c:10272 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка відновлення \"%s\" створена в %X/%X" -#: access/transam/xlog.c:10332 +#: access/transam/xlog.c:10417 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "несподіваний ID попередньої лінії часу %u (ID теперішньої лінії часу %u) в записі контрольної точки" -#: access/transam/xlog.c:10341 +#: access/transam/xlog.c:10426 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "неочікуваний ID лінії часу %u (після %u) в записі контрольної точки" -#: access/transam/xlog.c:10357 +#: access/transam/xlog.c:10442 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "неочікуваний ID лінії часу %u в записі контрольної точки, до досягнення мінімальної точки відновлення %X/%X на лінії часу %u" -#: access/transam/xlog.c:10432 +#: access/transam/xlog.c:10517 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "онлайн резервне копіювання скасовано, неможливо продовжити відновлення" -#: access/transam/xlog.c:10489 access/transam/xlog.c:10545 -#: access/transam/xlog.c:10575 +#: access/transam/xlog.c:10574 access/transam/xlog.c:10630 +#: access/transam/xlog.c:10660 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "несподіваний ID лінії часу %u (повинен бути %u) в записі контрольної точки" -#: access/transam/xlog.c:10733 +#: access/transam/xlog.c:10818 #, c-format msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" msgstr "успішно пропущений відсутній contrecord при %X/%X, перезаписано на %s" -#: access/transam/xlog.c:10948 +#: access/transam/xlog.c:11033 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "не вдалосьясинхронізувати файл наскрізного запису %s: %m" -#: access/transam/xlog.c:10954 +#: access/transam/xlog.c:11039 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "не вдалося fdatasync файл \"%s\": %m" -#: access/transam/xlog.c:11065 access/transam/xlog.c:11602 +#: access/transam/xlog.c:11150 access/transam/xlog.c:11687 #: access/transam/xlogfuncs.c:275 access/transam/xlogfuncs.c:302 #: access/transam/xlogfuncs.c:341 access/transam/xlogfuncs.c:362 #: access/transam/xlogfuncs.c:383 @@ -2880,186 +2890,186 @@ msgstr "не вдалося fdatasync файл \"%s\": %m" msgid "WAL control functions cannot be executed during recovery." msgstr "Функції управління WAL не можна використовувати під час відновлення." -#: access/transam/xlog.c:11074 access/transam/xlog.c:11611 +#: access/transam/xlog.c:11159 access/transam/xlog.c:11696 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "Обраний рівень WAL недостатній для резервного копіювання \"на ходу\"" -#: access/transam/xlog.c:11075 access/transam/xlog.c:11612 +#: access/transam/xlog.c:11160 access/transam/xlog.c:11697 #: access/transam/xlogfuncs.c:308 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "встановіть wal_level \"replica\" або \"logical\" при запуску серверу." -#: access/transam/xlog.c:11080 +#: access/transam/xlog.c:11165 #, c-format msgid "backup label too long (max %d bytes)" msgstr "мітка резервного копіювання задовга (максимум %d байт)" -#: access/transam/xlog.c:11117 access/transam/xlog.c:11401 -#: access/transam/xlog.c:11439 +#: access/transam/xlog.c:11202 access/transam/xlog.c:11486 +#: access/transam/xlog.c:11524 #, c-format msgid "a backup is already in progress" msgstr "резервне копіювання вже триває" -#: access/transam/xlog.c:11118 +#: access/transam/xlog.c:11203 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Запустіть pg_stop_backup() і спробуйте знову." -#: access/transam/xlog.c:11214 +#: access/transam/xlog.c:11299 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "Після останньої точки відновлення був відтворений WAL, створений в режимі full_page_writes=off" -#: access/transam/xlog.c:11216 access/transam/xlog.c:11807 +#: access/transam/xlog.c:11301 access/transam/xlog.c:11892 #, 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 primary, and then try an online backup again." msgstr "Це означає, що резервна копія, зроблена на резервному сервері пошкоджена і не повинна використовуватись. Активуйте full_page_writes і запустіть CHECKPOINT на основному сервері, а потім спробуйте ще раз створити резервну копію в Інтернеті." -#: access/transam/xlog.c:11300 replication/basebackup.c:1433 +#: access/transam/xlog.c:11385 replication/basebackup.c:1433 #: utils/adt/misc.c:367 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "таргет символічного посилання \"%s\" задовгий" -#: access/transam/xlog.c:11350 commands/tablespace.c:385 +#: access/transam/xlog.c:11435 commands/tablespace.c:385 #: commands/tablespace.c:561 replication/basebackup.c:1448 utils/adt/misc.c:375 #, c-format msgid "tablespaces are not supported on this platform" msgstr "табличний простір не підтримується на цій платформі" -#: access/transam/xlog.c:11402 access/transam/xlog.c:11440 +#: access/transam/xlog.c:11487 access/transam/xlog.c:11525 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Якщо ви вважаєте, що жодне резервне копіювання не триває, видаліть файл \"%s\" і спробуйте знову." -#: access/transam/xlog.c:11627 +#: access/transam/xlog.c:11712 #, c-format msgid "exclusive backup not in progress" msgstr "ексклюзивне резервне копіювання не виконується" -#: access/transam/xlog.c:11654 +#: access/transam/xlog.c:11739 #, c-format msgid "a backup is not in progress" msgstr "резервне копіювання не виконується" -#: access/transam/xlog.c:11740 access/transam/xlog.c:11753 -#: access/transam/xlog.c:12144 access/transam/xlog.c:12150 -#: access/transam/xlog.c:12198 access/transam/xlog.c:12278 -#: access/transam/xlog.c:12302 access/transam/xlogfuncs.c:733 +#: access/transam/xlog.c:11825 access/transam/xlog.c:11838 +#: access/transam/xlog.c:12229 access/transam/xlog.c:12235 +#: access/transam/xlog.c:12283 access/transam/xlog.c:12363 +#: access/transam/xlog.c:12387 access/transam/xlogfuncs.c:733 #, c-format msgid "invalid data in file \"%s\"" msgstr "невірні дані у файлі \"%s\"" -#: access/transam/xlog.c:11757 replication/basebackup.c:1287 +#: access/transam/xlog.c:11842 replication/basebackup.c:1287 #, c-format msgid "the standby was promoted during online backup" msgstr "режим очікування було підвищено у процесі резервного копіювання \"на ходу\"" -#: access/transam/xlog.c:11758 replication/basebackup.c:1288 +#: access/transam/xlog.c:11843 replication/basebackup.c:1288 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Це означає, що вибрана резервна копія є пошкодженою і її не слід використовувати. Спробуйте використати іншу онлайн резервну копію." -#: access/transam/xlog.c:11805 +#: access/transam/xlog.c:11890 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "У процесі резервного копіювання \"на ходу\" був відтворений WAL, створений в режимі full_page_writes=off" -#: access/transam/xlog.c:11925 +#: access/transam/xlog.c:12010 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "резервне копіювання виконане, очікуються необхідні сегменти WAL для архівації" -#: access/transam/xlog.c:11937 +#: access/transam/xlog.c:12022 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "все ще чекає на необхідні сегменти WAL для архівації (%d секунд пройшло)" -#: access/transam/xlog.c:11939 +#: access/transam/xlog.c:12024 #, c-format msgid "Check that your archive_command is executing properly. You can safely cancel this backup, but the database backup will not be usable without all the WAL segments." msgstr "Перевірте, чи правильно виконується команда archive_command. Ви можете безпечно скасувати це резервне копіювання, але резервна копія БД буде непридатна без усіх сегментів WAL." -#: access/transam/xlog.c:11946 +#: access/transam/xlog.c:12031 #, c-format msgid "all required WAL segments have been archived" msgstr "усі необхідні сегменти WAL архівовані" -#: access/transam/xlog.c:11950 +#: access/transam/xlog.c:12035 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "архівація WAL не налаштована; ви повинні забезпечити копіювання всіх необхідних сегментів WAL іншими засобами для отримання резервної копії" -#: access/transam/xlog.c:12005 +#: access/transam/xlog.c:12090 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "припинення резервного копіювання через завершення обслуговуючого процесу до виклику pg_stop_backup" -#: access/transam/xlog.c:12199 +#: access/transam/xlog.c:12284 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "Проаналізовано ID часової лінії %u, очіувалося %u." #. translator: %s is a WAL record description -#: access/transam/xlog.c:12327 +#: access/transam/xlog.c:12412 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "запис REDO в WAL в позиції %X/%X для %s" -#: access/transam/xlog.c:12375 +#: access/transam/xlog.c:12460 #, c-format msgid "online backup mode was not canceled" msgstr "режим копіювання онлайн не був відмінений" -#: access/transam/xlog.c:12376 +#: access/transam/xlog.c:12461 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Файл \"%s\" не може бути перейменований на \"%s\": %m." -#: access/transam/xlog.c:12385 access/transam/xlog.c:12397 -#: access/transam/xlog.c:12407 +#: access/transam/xlog.c:12470 access/transam/xlog.c:12482 +#: access/transam/xlog.c:12492 #, c-format msgid "online backup mode canceled" msgstr "режим копіювання онлайн був відмінений" -#: access/transam/xlog.c:12398 +#: access/transam/xlog.c:12483 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "Файли \"%s\" і \"%s\" було перейменовано на \"%s\" і \"%s\" відповідно." -#: access/transam/xlog.c:12408 +#: access/transam/xlog.c:12493 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "Файл \"%s\" було перейменовано на \"%s\", але файл \"%s\" не можливо перейменувати на \"%s\": %m." -#: access/transam/xlog.c:12541 access/transam/xlogutils.c:967 +#: access/transam/xlog.c:12626 access/transam/xlogutils.c:967 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "не вдалося прочитати сегмент журналу %s, зсув %u: %m" -#: access/transam/xlog.c:12547 access/transam/xlogutils.c:974 +#: access/transam/xlog.c:12632 access/transam/xlogutils.c:974 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "не вдалося прочитати сегмент журналу %s, зсув %u: прочитано %d з %zu" -#: access/transam/xlog.c:13112 +#: access/transam/xlog.c:13209 #, c-format msgid "WAL receiver process shutdown requested" msgstr "Запит на вимкнення процесу приймача WAL" -#: access/transam/xlog.c:13207 +#: access/transam/xlog.c:13321 #, c-format msgid "received promote request" msgstr "отримано запит підвищення статусу" -#: access/transam/xlog.c:13220 +#: access/transam/xlog.c:13334 #, c-format msgid "promote trigger file found: %s" msgstr "знайдено файл тригера підвищення: %s" -#: access/transam/xlog.c:13228 +#: access/transam/xlog.c:13342 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "не вдалося отримати інформацію про файл тригера підвищення \"%s\": %m" @@ -3123,7 +3133,7 @@ msgstr "Ви мали на увазі використаня pg_stop_backup('f') #: executor/execExpr.c:2518 executor/execSRF.c:738 executor/functions.c:1074 #: foreign/foreign.c:530 libpq/hba.c:2726 replication/logical/launcher.c:937 #: replication/logical/logicalfuncs.c:157 replication/logical/origin.c:1494 -#: replication/slotfuncs.c:255 replication/walsender.c:3328 +#: replication/slotfuncs.c:255 replication/walsender.c:3346 #: storage/ipc/shmem.c:554 utils/adt/datetime.c:4812 utils/adt/genfile.c:507 #: utils/adt/genfile.c:590 utils/adt/jsonfuncs.c:1944 #: utils/adt/jsonfuncs.c:2056 utils/adt/jsonfuncs.c:2244 @@ -3141,7 +3151,7 @@ msgstr "функція \"set-valued\" викликана в контексті, #: commands/extension.c:2078 commands/extension.c:2363 commands/prepare.c:717 #: foreign/foreign.c:535 libpq/hba.c:2730 replication/logical/launcher.c:941 #: replication/logical/logicalfuncs.c:161 replication/logical/origin.c:1498 -#: replication/slotfuncs.c:259 replication/walsender.c:3332 +#: replication/slotfuncs.c:259 replication/walsender.c:3350 #: storage/ipc/shmem.c:558 utils/adt/datetime.c:4816 utils/adt/genfile.c:511 #: utils/adt/genfile.c:594 utils/adt/mcxtfuncs.c:136 utils/adt/misc.c:223 #: utils/adt/pgstatfuncs.c:481 utils/adt/pgstatfuncs.c:591 @@ -3229,122 +3239,122 @@ msgstr "невірний зсув запису: %X/%X" msgid "contrecord is requested by %X/%X" msgstr "по зсуву %X/%X запитано продовження запису" -#: access/transam/xlogreader.c:372 access/transam/xlogreader.c:720 +#: access/transam/xlogreader.c:372 access/transam/xlogreader.c:728 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "невірна довжина запису по зсуву %X/%X: очікувалось %u, отримано %u" -#: access/transam/xlogreader.c:442 +#: access/transam/xlogreader.c:443 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "немає позначки contrecord в позиції %X/%X" -#: access/transam/xlogreader.c:455 +#: access/transam/xlogreader.c:456 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "неприпустима довжина contrecord %u (очікувалось %lld) на %X/%X" -#: access/transam/xlogreader.c:728 +#: access/transam/xlogreader.c:736 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "невірний ID менеджера ресурсів %u в %X/%X" -#: access/transam/xlogreader.c:741 access/transam/xlogreader.c:757 +#: access/transam/xlogreader.c:749 access/transam/xlogreader.c:765 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запис з неправильним попереднім посиланням %X/%X на %X/%X" -#: access/transam/xlogreader.c:795 +#: access/transam/xlogreader.c:803 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "некоректна контрольна сума даних менеджера ресурсів у запису по зсуву %X/%X" -#: access/transam/xlogreader.c:832 +#: access/transam/xlogreader.c:840 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "невірне магічне число %04X в сегменті журналу %s, зсув %u" -#: access/transam/xlogreader.c:846 access/transam/xlogreader.c:887 +#: access/transam/xlogreader.c:854 access/transam/xlogreader.c:895 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "невірні інформаційні біти %04X в сегменті журналу %s, зсув %u" -#: access/transam/xlogreader.c:861 +#: access/transam/xlogreader.c:869 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %llu, pg_control database system identifier is %llu" msgstr "WAL файл належить іншій системі баз даних: ідентифікатор системи баз даних де міститься WAL файл - %llu, а ідентифікатор системи баз даних pg_control - %llu" -#: access/transam/xlogreader.c:869 +#: access/transam/xlogreader.c:877 #, c-format msgid "WAL file is from different database system: incorrect segment size in page header" msgstr "Файл WAL належить іншій системі баз даних: некоректний розмір сегменту в заголовку сторінки" -#: access/transam/xlogreader.c:875 +#: access/transam/xlogreader.c:883 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "Файл WAL належить іншій системі баз даних: некоректний XLOG_BLCKSZ в заголовку сторінки" -#: access/transam/xlogreader.c:906 +#: access/transam/xlogreader.c:914 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неочікуваний pageaddr %X/%X в сегменті журналу %s, зсув %u" -#: access/transam/xlogreader.c:931 +#: access/transam/xlogreader.c:939 #, 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:1276 +#: access/transam/xlogreader.c:1284 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "ідентифікатор блока %u out-of-order в позиції %X/%X" -#: access/transam/xlogreader.c:1298 +#: access/transam/xlogreader.c:1306 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA встановлений, але немає даних в позиції %X/%X" -#: access/transam/xlogreader.c:1305 +#: access/transam/xlogreader.c:1313 #, 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:1341 +#: access/transam/xlogreader.c:1349 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE встановлений, але для пропуску задані: зсув %u, довжина %u, при довжині образу блока %u в позиції %X/%X" -#: access/transam/xlogreader.c:1357 +#: access/transam/xlogreader.c:1365 #, 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:1372 +#: access/transam/xlogreader.c:1380 #, 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:1387 +#: access/transam/xlogreader.c:1395 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "ні BKPIMAGE_HAS_HOLE, ні BKPIMAGE_IS_COMPRESSED не встановлені, але довжина образу блока дорвінює %u в позиції %X/%X" -#: access/transam/xlogreader.c:1403 +#: access/transam/xlogreader.c:1411 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL встановлений, але попереднє значення не задано в позиції %X/%X" -#: access/transam/xlogreader.c:1415 +#: access/transam/xlogreader.c:1423 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "невірний ідентифікатор блоку %u в позиції %X/%X" -#: access/transam/xlogreader.c:1502 +#: access/transam/xlogreader.c:1510 #, c-format msgid "record with invalid length at %X/%X" msgstr "запис з невірною довжиною на %X/%X" -#: access/transam/xlogreader.c:1591 +#: access/transam/xlogreader.c:1599 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "невірно стиснутий образ в позиції %X/%X, блок %d" @@ -3508,10 +3518,10 @@ msgid "large object %u does not exist" msgstr "великого об'єкту %u не існує" #: catalog/aclchk.c:927 catalog/aclchk.c:936 commands/collationcmds.c:119 -#: commands/copy.c:365 commands/copy.c:385 commands/copy.c:395 -#: commands/copy.c:404 commands/copy.c:413 commands/copy.c:423 -#: commands/copy.c:432 commands/copy.c:441 commands/copy.c:459 -#: commands/copy.c:475 commands/copy.c:495 commands/copy.c:512 +#: commands/copy.c:402 commands/copy.c:422 commands/copy.c:432 +#: commands/copy.c:441 commands/copy.c:450 commands/copy.c:460 +#: commands/copy.c:469 commands/copy.c:478 commands/copy.c:496 +#: commands/copy.c:512 commands/copy.c:532 commands/copy.c:549 #: commands/dbcommands.c:158 commands/dbcommands.c:167 #: commands/dbcommands.c:176 commands/dbcommands.c:185 #: commands/dbcommands.c:194 commands/dbcommands.c:203 @@ -3521,8 +3531,8 @@ msgstr "великого об'єкту %u не існує" #: commands/dbcommands.c:1550 commands/dbcommands.c:1559 #: commands/dbcommands.c:1568 commands/extension.c:1757 #: commands/extension.c:1767 commands/extension.c:1777 -#: commands/extension.c:3074 commands/foreigncmds.c:539 -#: commands/foreigncmds.c:548 commands/functioncmds.c:606 +#: commands/extension.c:3074 commands/foreigncmds.c:550 +#: commands/foreigncmds.c:559 commands/functioncmds.c:606 #: commands/functioncmds.c:772 commands/functioncmds.c:781 #: commands/functioncmds.c:790 commands/functioncmds.c:799 #: commands/functioncmds.c:2097 commands/functioncmds.c:2105 @@ -3534,7 +3544,7 @@ msgstr "великого об'єкту %u не існує" #: commands/subscriptioncmds.c:144 commands/subscriptioncmds.c:154 #: commands/subscriptioncmds.c:170 commands/subscriptioncmds.c:181 #: commands/subscriptioncmds.c:195 commands/subscriptioncmds.c:205 -#: commands/subscriptioncmds.c:215 commands/tablecmds.c:7715 +#: commands/subscriptioncmds.c:215 commands/tablecmds.c:7717 #: commands/typecmds.c:335 commands/typecmds.c:1416 commands/typecmds.c:1425 #: commands/typecmds.c:1433 commands/typecmds.c:1441 commands/typecmds.c:1449 #: commands/typecmds.c:1457 commands/user.c:133 commands/user.c:147 @@ -3548,8 +3558,8 @@ msgstr "великого об'єкту %u не існує" #: commands/user.c:663 parser/parse_utilcmd.c:402 #: replication/pgoutput/pgoutput.c:199 replication/pgoutput/pgoutput.c:220 #: replication/pgoutput/pgoutput.c:234 replication/pgoutput/pgoutput.c:244 -#: replication/pgoutput/pgoutput.c:254 replication/walsender.c:883 -#: replication/walsender.c:894 replication/walsender.c:904 +#: replication/pgoutput/pgoutput.c:254 replication/walsender.c:897 +#: replication/walsender.c:908 replication/walsender.c:918 #, c-format msgid "conflicting or redundant options" msgstr "конфліктуючі або надлишкові параметри" @@ -3565,29 +3575,29 @@ msgid "cannot use IN SCHEMA clause when using GRANT/REVOKE ON SCHEMAS" msgstr "речення IN SCHEMA не можна використати в GRANT/REVOKE ON SCHEMAS" #: catalog/aclchk.c:1545 catalog/catalog.c:587 catalog/objectaddress.c:1522 -#: commands/analyze.c:390 commands/copy.c:744 commands/sequence.c:1709 -#: commands/tablecmds.c:7178 commands/tablecmds.c:7334 -#: commands/tablecmds.c:7384 commands/tablecmds.c:7458 -#: commands/tablecmds.c:7528 commands/tablecmds.c:7640 -#: commands/tablecmds.c:7734 commands/tablecmds.c:7793 -#: commands/tablecmds.c:7882 commands/tablecmds.c:7911 -#: commands/tablecmds.c:8066 commands/tablecmds.c:8148 -#: commands/tablecmds.c:8304 commands/tablecmds.c:8426 -#: commands/tablecmds.c:11919 commands/tablecmds.c:12111 -#: commands/tablecmds.c:12271 commands/tablecmds.c:13434 -#: commands/tablecmds.c:15981 commands/trigger.c:942 parser/analyze.c:2471 +#: commands/analyze.c:390 commands/copy.c:781 commands/sequence.c:1709 +#: commands/tablecmds.c:7180 commands/tablecmds.c:7336 +#: commands/tablecmds.c:7386 commands/tablecmds.c:7460 +#: commands/tablecmds.c:7530 commands/tablecmds.c:7642 +#: commands/tablecmds.c:7736 commands/tablecmds.c:7795 +#: commands/tablecmds.c:7884 commands/tablecmds.c:7913 +#: commands/tablecmds.c:8068 commands/tablecmds.c:8150 +#: commands/tablecmds.c:8306 commands/tablecmds.c:8428 +#: commands/tablecmds.c:11908 commands/tablecmds.c:12100 +#: commands/tablecmds.c:12260 commands/tablecmds.c:13446 +#: commands/tablecmds.c:15993 commands/trigger.c:942 parser/analyze.c:2471 #: parser/parse_relation.c:714 parser/parse_target.c:1077 #: parser/parse_type.c:144 parser/parse_utilcmd.c:3425 -#: parser/parse_utilcmd.c:3461 parser/parse_utilcmd.c:3503 utils/adt/acl.c:2845 +#: parser/parse_utilcmd.c:3461 parser/parse_utilcmd.c:3503 utils/adt/acl.c:2862 #: utils/adt/ruleutils.c:2732 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "стовпець \"%s\" зв'язку \"%s\" не існує" #: catalog/aclchk.c:1808 catalog/objectaddress.c:1362 commands/sequence.c:1147 -#: commands/tablecmds.c:249 commands/tablecmds.c:16855 utils/adt/acl.c:2053 -#: utils/adt/acl.c:2083 utils/adt/acl.c:2115 utils/adt/acl.c:2147 -#: utils/adt/acl.c:2175 utils/adt/acl.c:2205 +#: commands/tablecmds.c:249 commands/tablecmds.c:16867 utils/adt/acl.c:2070 +#: utils/adt/acl.c:2100 utils/adt/acl.c:2132 utils/adt/acl.c:2164 +#: utils/adt/acl.c:2192 utils/adt/acl.c:2222 #, c-format msgid "\"%s\" is not a sequence" msgstr "\"%s\" не є послідовністю" @@ -4010,12 +4020,12 @@ msgstr "схема з OID %u не існує" msgid "tablespace with OID %u does not exist" msgstr "табличний простір з OID %u не існує" -#: catalog/aclchk.c:4377 catalog/aclchk.c:5178 commands/foreigncmds.c:325 +#: catalog/aclchk.c:4377 catalog/aclchk.c:5178 commands/foreigncmds.c:336 #, c-format msgid "foreign-data wrapper with OID %u does not exist" msgstr "джерело сторонніх даних з OID %u не існує" -#: catalog/aclchk.c:4439 catalog/aclchk.c:5205 commands/foreigncmds.c:462 +#: catalog/aclchk.c:4439 catalog/aclchk.c:5205 commands/foreigncmds.c:473 #, c-format msgid "foreign server with OID %u does not exist" msgstr "стороннього серверу з OID %u не усніє" @@ -4076,7 +4086,7 @@ msgstr "розширення %u з OID не існує" msgid "publication with OID %u does not exist" msgstr "публікації %u з OID не існує" -#: catalog/aclchk.c:5405 commands/subscriptioncmds.c:1463 +#: catalog/aclchk.c:5405 commands/subscriptioncmds.c:1465 #, c-format msgid "subscription with OID %u does not exist" msgstr "підписки %u з OID не існує" @@ -4181,12 +4191,13 @@ msgstr "неможливо видалити %s, тому що від нього #: catalog/dependency.c:1204 catalog/dependency.c:1211 #: catalog/dependency.c:1223 commands/tablecmds.c:1301 -#: commands/tablecmds.c:14052 commands/tablespace.c:464 commands/user.c:1095 -#: commands/view.c:506 libpq/auth.c:338 replication/syncrep.c:1043 -#: storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1447 utils/misc/guc.c:7140 -#: utils/misc/guc.c:7176 utils/misc/guc.c:7246 utils/misc/guc.c:11490 -#: utils/misc/guc.c:11524 utils/misc/guc.c:11558 utils/misc/guc.c:11601 -#: utils/misc/guc.c:11643 +#: commands/tablecmds.c:14064 commands/tablespace.c:464 commands/user.c:1095 +#: commands/view.c:506 libpq/auth.c:346 replication/slot.c:181 +#: replication/syncrep.c:1110 storage/lmgr/deadlock.c:1151 +#: storage/lmgr/proc.c:1447 utils/misc/guc.c:7140 utils/misc/guc.c:7176 +#: utils/misc/guc.c:7246 utils/misc/guc.c:11490 utils/misc/guc.c:11524 +#: utils/misc/guc.c:11558 utils/misc/guc.c:11601 utils/misc/guc.c:11643 +#: utils/misc/guc.c:12599 utils/misc/guc.c:12601 #, c-format msgid "%s" msgstr "%s" @@ -4232,7 +4243,7 @@ msgstr "Змінення системного каталогу наразі за msgid "tables can have at most %d columns" msgstr "таблиці можуть містити максимум %d стовпців" -#: catalog/heap.c:527 commands/tablecmds.c:7068 +#: catalog/heap.c:527 commands/tablecmds.c:7070 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "ім'я стовпця \"%s\" конфліктує з системним іменем стовпця" @@ -4304,7 +4315,7 @@ msgid "check constraint \"%s\" already exists" msgstr "обмеження перевірки \"%s\" вже інсує" #: catalog/heap.c:2967 catalog/index.c:886 catalog/pg_constraint.c:670 -#: commands/tablecmds.c:8800 +#: commands/tablecmds.c:8802 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "обмеження \"%s\" відношення \"%s\" вже існує" @@ -4354,14 +4365,14 @@ msgstr "Це призведе до того, що згенерований ст msgid "generation expression is not immutable" msgstr "вираз генерації не є незмінним" -#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1285 +#: catalog/heap.c:3197 rewrite/rewriteHandler.c:1288 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "стовпець \"%s\" має тип %s, але тип виразу за замовчуванням %s" #: catalog/heap.c:3202 commands/prepare.c:368 parser/analyze.c:2695 #: parser/parse_target.c:594 parser/parse_target.c:891 -#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1290 +#: parser/parse_target.c:901 rewrite/rewriteHandler.c:1293 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Потрібно буде переписати або привести вираз." @@ -4452,34 +4463,34 @@ msgstr "значення OID індекса в pg_class не встановле msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY повинен бути першою дією в транзакції" -#: catalog/index.c:3653 +#: catalog/index.c:3660 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "повторно індексувати тимчасові таблиці інших сеансів не можна" -#: catalog/index.c:3664 commands/indexcmds.c:3555 +#: catalog/index.c:3671 commands/indexcmds.c:3589 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "переіндексувати неприпустимий індекс в таблиці TOAST не можна" -#: catalog/index.c:3680 commands/indexcmds.c:3435 commands/indexcmds.c:3579 +#: catalog/index.c:3687 commands/indexcmds.c:3469 commands/indexcmds.c:3613 #: commands/tablecmds.c:3282 #, c-format msgid "cannot move system relation \"%s\"" msgstr "перемістити системне відношення \"%s\" не можна" -#: catalog/index.c:3824 +#: catalog/index.c:3831 #, c-format msgid "index \"%s\" was reindexed" msgstr "індекс \"%s\" був перебудований" -#: catalog/index.c:3961 +#: catalog/index.c:3968 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "переіндексувати неприпустимий індекс \"%s.%s\" в таблиці TOAST не можна, пропускається" #: catalog/namespace.c:259 catalog/namespace.c:463 catalog/namespace.c:555 -#: commands/trigger.c:5255 +#: commands/trigger.c:5285 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" msgstr "cross-database посилання не реалізовані: \"%s.%s.%s\"" @@ -4510,7 +4521,7 @@ msgstr "відношення \"%s.%s\" не існує" msgid "relation \"%s\" does not exist" msgstr "відношення \"%s\" не існує" -#: catalog/namespace.c:501 catalog/namespace.c:3076 commands/extension.c:1541 +#: catalog/namespace.c:501 catalog/namespace.c:3079 commands/extension.c:1541 #: commands/extension.c:1547 #, c-format msgid "no schema has been selected to create in" @@ -4536,85 +4547,85 @@ msgstr "в тимчасових схемах можуть бути створе msgid "statistics object \"%s\" does not exist" msgstr "об'єкт статистики \"%s\" не існує" -#: catalog/namespace.c:2391 +#: catalog/namespace.c:2394 #, c-format msgid "text search parser \"%s\" does not exist" msgstr "парсер текстового пошуку \"%s\" не існує" -#: catalog/namespace.c:2517 +#: catalog/namespace.c:2520 #, c-format msgid "text search dictionary \"%s\" does not exist" msgstr "словник текстового пошуку \"%s\" не існує" -#: catalog/namespace.c:2644 +#: catalog/namespace.c:2647 #, c-format msgid "text search template \"%s\" does not exist" msgstr "шаблон текстового пошуку \"%s\" не існує" -#: catalog/namespace.c:2770 commands/tsearchcmds.c:1127 +#: catalog/namespace.c:2773 commands/tsearchcmds.c:1127 #: utils/cache/ts_cache.c:613 #, c-format msgid "text search configuration \"%s\" does not exist" msgstr "конфігурація текстового пошуку \"%s\" не існує" -#: catalog/namespace.c:2883 parser/parse_expr.c:810 parser/parse_target.c:1269 +#: catalog/namespace.c:2886 parser/parse_expr.c:810 parser/parse_target.c:1269 #, c-format msgid "cross-database references are not implemented: %s" msgstr "міжбазові посилання не реалізовані: %s" -#: catalog/namespace.c:2889 parser/parse_expr.c:817 parser/parse_target.c:1276 +#: catalog/namespace.c:2892 parser/parse_expr.c:817 parser/parse_target.c:1276 #: gram.y:15103 gram.y:17077 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "неправильне повне ім'я (забагато компонентів): %s" -#: catalog/namespace.c:3019 +#: catalog/namespace.c:3022 #, c-format msgid "cannot move objects into or out of temporary schemas" msgstr "не можна переміщати об'єкти в або з тимчасових схем" -#: catalog/namespace.c:3025 +#: catalog/namespace.c:3028 #, c-format msgid "cannot move objects into or out of TOAST schema" msgstr "не можна переміщати об'єкти в або з схем TOAST" -#: catalog/namespace.c:3098 commands/schemacmds.c:263 commands/schemacmds.c:343 +#: catalog/namespace.c:3101 commands/schemacmds.c:263 commands/schemacmds.c:343 #: commands/tablecmds.c:1246 #, c-format msgid "schema \"%s\" does not exist" msgstr "схема \"%s\" не існує" -#: catalog/namespace.c:3129 +#: catalog/namespace.c:3132 #, c-format msgid "improper relation name (too many dotted names): %s" msgstr "неправильне ім'я зв'язку (забагато компонентів): %s" -#: catalog/namespace.c:3696 +#: catalog/namespace.c:3699 #, c-format msgid "collation \"%s\" for encoding \"%s\" does not exist" msgstr "правило сортування \"%s\" для кодування \"%s\" не існує" -#: catalog/namespace.c:3751 +#: catalog/namespace.c:3754 #, c-format msgid "conversion \"%s\" does not exist" msgstr "перетворення\"%s\" не існує" -#: catalog/namespace.c:4015 +#: catalog/namespace.c:4018 #, c-format msgid "permission denied to create temporary tables in database \"%s\"" msgstr "немає дозволу для створення тимчасових таблиць в базі даних \"%s\"" -#: catalog/namespace.c:4031 +#: catalog/namespace.c:4034 #, c-format msgid "cannot create temporary tables during recovery" msgstr "не можна створити тимчасові таблиці під час відновлення" -#: catalog/namespace.c:4037 +#: catalog/namespace.c:4040 #, c-format msgid "cannot create temporary tables during a parallel operation" msgstr "не можна створити тимчасові таблиці під час паралельної операції" -#: catalog/namespace.c:4338 commands/tablespace.c:1211 commands/variable.c:64 +#: catalog/namespace.c:4341 commands/tablespace.c:1211 commands/variable.c:64 #: tcop/postgres.c:3589 utils/misc/guc.c:11675 utils/misc/guc.c:11753 #, c-format msgid "List syntax is invalid." @@ -4623,25 +4634,25 @@ msgstr "Помилка синтаксису у списку." #: catalog/objectaddress.c:1370 catalog/pg_publication.c:58 #: commands/policy.c:96 commands/policy.c:376 commands/tablecmds.c:243 #: commands/tablecmds.c:285 commands/tablecmds.c:2157 commands/tablecmds.c:6130 -#: commands/tablecmds.c:12047 +#: commands/tablecmds.c:12036 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\" не є таблицею" #: catalog/objectaddress.c:1377 commands/tablecmds.c:255 -#: commands/tablecmds.c:6169 commands/tablecmds.c:16860 commands/view.c:119 +#: commands/tablecmds.c:6169 commands/tablecmds.c:16872 commands/view.c:119 #, c-format msgid "\"%s\" is not a view" msgstr "\"%s\" не є поданням" #: catalog/objectaddress.c:1384 commands/matview.c:186 commands/tablecmds.c:261 -#: commands/tablecmds.c:16865 +#: commands/tablecmds.c:16877 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\" не є матеріалізованим поданням" #: catalog/objectaddress.c:1391 commands/tablecmds.c:279 -#: commands/tablecmds.c:6172 commands/tablecmds.c:16870 +#: commands/tablecmds.c:6172 commands/tablecmds.c:16882 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\" не є сторонньою таблицею" @@ -4664,7 +4675,7 @@ msgstr "значення за замовчуванням для стовпця \ #: catalog/objectaddress.c:1645 commands/functioncmds.c:139 #: commands/tablecmds.c:271 commands/typecmds.c:274 commands/typecmds.c:3713 #: parser/parse_type.c:243 parser/parse_type.c:272 parser/parse_type.c:791 -#: utils/adt/acl.c:4411 +#: utils/adt/acl.c:4428 #, c-format msgid "type \"%s\" does not exist" msgstr "тип \"%s\" не існує" @@ -4684,8 +4695,9 @@ msgstr "функція %d (%s, %s) з %s не існує" msgid "user mapping for user \"%s\" on server \"%s\" does not exist" msgstr "відображення користувача для користувача \"%s\" на сервері \"%s\"не існує" -#: catalog/objectaddress.c:1861 commands/foreigncmds.c:430 -#: commands/foreigncmds.c:997 commands/foreigncmds.c:1360 foreign/foreign.c:733 +#: catalog/objectaddress.c:1861 commands/foreigncmds.c:441 +#: commands/foreigncmds.c:1008 commands/foreigncmds.c:1371 +#: foreign/foreign.c:733 #, c-format msgid "server \"%s\" does not exist" msgstr "сервер \"%s\" не існує" @@ -5339,7 +5351,7 @@ msgid "The partition is being detached concurrently or has an unfinished detach. msgstr "Розділ відключається одночасно або має незакінчене відключення." #: catalog/pg_inherits.c:596 commands/tablecmds.c:4501 -#: commands/tablecmds.c:15170 +#: commands/tablecmds.c:15182 #, c-format msgid "Use ALTER TABLE ... DETACH PARTITION ... FINALIZE to complete the pending detach operation." msgstr "Використайте ALTER TABLE ... DETACH PARTITION ... FINALIZE щоб завершити очікувану операцію відключення." @@ -5620,17 +5632,17 @@ msgid "cannot reassign ownership of objects owned by %s because they are require msgstr "не вдалося змінити власника об'єктів, що належать ролі %s, тому що вони необхідні системі баз даних" #: catalog/pg_subscription.c:174 commands/subscriptioncmds.c:779 -#: commands/subscriptioncmds.c:1088 commands/subscriptioncmds.c:1431 +#: commands/subscriptioncmds.c:1090 commands/subscriptioncmds.c:1433 #, c-format msgid "subscription \"%s\" does not exist" msgstr "підписка \"%s\" не існує" -#: catalog/pg_subscription.c:432 +#: catalog/pg_subscription.c:457 #, c-format msgid "could not drop relation mapping for subscription \"%s\"" msgstr "не вдалося видалити зіставлення відношень для підписки \"%s\"" -#: catalog/pg_subscription.c:434 +#: catalog/pg_subscription.c:459 #, c-format msgid "Table synchronization for relation \"%s\" is in progress and is in state \"%c\"." msgstr "Синхронізація таблиць для відношення \"%s\" у процесі та знаходиться у стані \"%c\"." @@ -5638,7 +5650,7 @@ msgstr "Синхронізація таблиць для відношення \" #. translator: first %s is a SQL ALTER command and second %s is a #. SQL DROP command #. -#: catalog/pg_subscription.c:441 +#: catalog/pg_subscription.c:466 #, c-format msgid "Use %s to enable subscription if not already enabled or use %s to drop the subscription." msgstr "Використайте %s, щоб активувати підписку, якщо вона ще не активована, або використайте %s, щоб видалити підписку." @@ -5689,13 +5701,13 @@ msgstr "Помилка під час створення багатодіапаз msgid "You can manually specify a multirange type name using the \"multirange_type_name\" attribute." msgstr "Ви можете вручну вказати назву багатодіапазонного типу за допомогою атрибуту \"multirange_type_name\"." -#: catalog/storage.c:523 storage/buffer/bufmgr.c:1039 +#: catalog/storage.c:523 storage/buffer/bufmgr.c:1046 #, c-format msgid "invalid page in block %u of relation %s" msgstr "неприпустима сторінка в блоці %u відношення %s" #: catalog/toasting.c:112 commands/indexcmds.c:699 commands/tablecmds.c:6142 -#: commands/tablecmds.c:16725 +#: commands/tablecmds.c:16737 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\" не є таблицею або матеріалізованим поданням" @@ -5795,12 +5807,12 @@ msgstr "параметр \"%s\" має мати значення READ_ONLY, SHAR msgid "event trigger \"%s\" already exists" msgstr "тригер подій \"%s\" вже існує" -#: commands/alter.c:88 commands/foreigncmds.c:597 +#: commands/alter.c:88 commands/foreigncmds.c:608 #, c-format msgid "foreign-data wrapper \"%s\" already exists" msgstr "джерело сторонніх даних \"%s\" вже існує" -#: commands/alter.c:91 commands/foreigncmds.c:888 +#: commands/alter.c:91 commands/foreigncmds.c:899 #, c-format msgid "server \"%s\" already exists" msgstr "сервер \"%s\" вже існує" @@ -5887,7 +5899,7 @@ msgid "handler function is not specified" msgstr "функція-обробник не вказана" #: commands/amcmds.c:264 commands/event_trigger.c:183 -#: commands/foreigncmds.c:489 commands/proclang.c:80 commands/trigger.c:699 +#: commands/foreigncmds.c:500 commands/proclang.c:80 commands/trigger.c:699 #: parser/parse_clause.c:940 #, c-format msgid "function %s must return type %s" @@ -5938,27 +5950,27 @@ msgstr "пропускається аналіз дерева наслідува msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "пропускається аналіз дерева наслідування \"%s.%s\" --- це дерево наслідування не містить аналізуючих дочірніх таблиць" -#: commands/async.c:646 +#: commands/async.c:645 #, c-format msgid "channel name cannot be empty" msgstr "ім'я каналу не може бути пустим" -#: commands/async.c:652 +#: commands/async.c:651 #, c-format msgid "channel name too long" msgstr "ім'я каналу задовге" -#: commands/async.c:657 +#: commands/async.c:656 #, c-format msgid "payload string too long" msgstr "рядок навантаження задовгий" -#: commands/async.c:876 +#: commands/async.c:875 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "виконати PREPARE для транзакції, яка виконала LISTEN, UNLISTEN або NOTIFY неможливо" -#: commands/async.c:980 +#: commands/async.c:979 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "занадто багато сповіщень у черзі NOTIFY" @@ -5998,7 +6010,7 @@ msgstr "не можна кластеризувати секційну табли msgid "there is no previously clustered index for table \"%s\"" msgstr "немає попереднього кластеризованого індексу для таблиці \"%s\"" -#: commands/cluster.c:187 commands/tablecmds.c:13889 commands/tablecmds.c:15749 +#: commands/cluster.c:187 commands/tablecmds.c:13901 commands/tablecmds.c:15761 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "індекс \"%s\" для таблці \"%s\" не існує" @@ -6013,7 +6025,7 @@ msgstr "не можна кластеризувати спільний катал msgid "cannot vacuum temporary tables of other sessions" msgstr "не можна очищати тимчасові таблиці з інших сеансів" -#: commands/cluster.c:471 commands/tablecmds.c:15759 +#: commands/cluster.c:471 commands/tablecmds.c:15771 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\" не є індексом для таблиці \"%s\"" @@ -6210,148 +6222,160 @@ msgstr "потрібно бути суперкористувачем або чл msgid "must be superuser or a member of the pg_write_server_files role to COPY to a file" msgstr "потрібно бути суперкористувачем або членом ролі pg_write_server_files, щоб виконати COPY з записом у файл" -#: commands/copy.c:188 +#: commands/copy.c:175 +#, c-format +msgid "generated columns are not supported in COPY FROM WHERE conditions" +msgstr "згенеровані стовпці не підтримуються в умовах COPY FROM WHERE" + +#: commands/copy.c:176 commands/tablecmds.c:11928 commands/tablecmds.c:17048 +#: commands/tablecmds.c:17127 commands/trigger.c:653 +#: rewrite/rewriteHandler.c:939 rewrite/rewriteHandler.c:974 +#, c-format +msgid "Column \"%s\" is a generated column." +msgstr "Стовпець \"%s\" є згенерованим стовпцем." + +#: commands/copy.c:225 #, c-format msgid "COPY FROM not supported with row-level security" msgstr "COPY FROM не підтримується із захистом на рівні рядків" -#: commands/copy.c:189 +#: commands/copy.c:226 #, c-format msgid "Use INSERT statements instead." msgstr "Використайте оператори INSERT замість цього." -#: commands/copy.c:377 +#: commands/copy.c:414 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "Формат \"%s\" для COPY не розпізнано" -#: commands/copy.c:450 commands/copy.c:466 commands/copy.c:481 -#: commands/copy.c:503 +#: commands/copy.c:487 commands/copy.c:503 commands/copy.c:518 +#: commands/copy.c:540 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "аргументом функції \"%s\" повинен бути список імен стовпців" -#: commands/copy.c:518 +#: commands/copy.c:555 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "аргументом функції \"%s\" повинне бути припустиме ім'я коду" -#: commands/copy.c:525 commands/dbcommands.c:254 commands/dbcommands.c:1575 +#: commands/copy.c:562 commands/dbcommands.c:254 commands/dbcommands.c:1575 #, c-format msgid "option \"%s\" not recognized" msgstr "параметр \"%s\" не розпізнано" -#: commands/copy.c:537 +#: commands/copy.c:574 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "неможливо визначити DELIMITER в режимі BINARY" -#: commands/copy.c:542 +#: commands/copy.c:579 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "неможливо визначити NULL в режимі BINARY" -#: commands/copy.c:564 +#: commands/copy.c:601 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "роздільник для COPY повинен бути однобайтовим символом" -#: commands/copy.c:571 +#: commands/copy.c:608 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "Роздільник для COPY не може бути символом нового рядка або повернення каретки" -#: commands/copy.c:577 +#: commands/copy.c:614 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "Подання NULL для COPY не може включати символ нового рядка або повернення каретки" -#: commands/copy.c:594 +#: commands/copy.c:631 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "роздільник COPY не може бути \"%s\"" -#: commands/copy.c:600 +#: commands/copy.c:637 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADER доступний тільки в режимі CSV" -#: commands/copy.c:606 +#: commands/copy.c:643 #, c-format msgid "COPY quote available only in CSV mode" msgstr "лапки для COPY доустпні тільки в режимі CSV" -#: commands/copy.c:611 +#: commands/copy.c:648 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "лапки для COPY повинні бути однобайтовим символом" -#: commands/copy.c:616 +#: commands/copy.c:653 #, c-format msgid "COPY delimiter and quote must be different" msgstr "роздільник і лапки для COPY повинні бути різними" -#: commands/copy.c:622 +#: commands/copy.c:659 #, c-format msgid "COPY escape available only in CSV mode" msgstr "вихід для COPY доступний тільки в режимі CSV" -#: commands/copy.c:627 +#: commands/copy.c:664 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "вихід для COPY повинен бути однобайтовим символом" -#: commands/copy.c:633 +#: commands/copy.c:670 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "Параметр force quote для COPY можна використати тільки в режимі CSV" -#: commands/copy.c:637 +#: commands/copy.c:674 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "Параметр force quote для COPY можна використати тільки з COPY TO" -#: commands/copy.c:643 +#: commands/copy.c:680 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "Параметр force not null для COPY можна використати тільки в режимі CSV" -#: commands/copy.c:647 +#: commands/copy.c:684 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "Параметр force not null для COPY можна використати тільки з COPY FROM" -#: commands/copy.c:653 +#: commands/copy.c:690 #, c-format msgid "COPY force null available only in CSV mode" msgstr "Параметр force null для COPY можна використати тільки в режимі CSV" -#: commands/copy.c:658 +#: commands/copy.c:695 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "Параметр force null only для COPY можна використати тільки з COPY FROM" -#: commands/copy.c:664 +#: commands/copy.c:701 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "роздільник COPY не повинен з'являтися у специфікації NULL" -#: commands/copy.c:671 +#: commands/copy.c:708 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "лапки CSV не повинні з'являтися у специфікації NULL" -#: commands/copy.c:732 +#: commands/copy.c:769 #, c-format msgid "column \"%s\" is a generated column" msgstr "стовпець \"%s\" є згенерованим стовпцем" -#: commands/copy.c:734 +#: commands/copy.c:771 #, c-format msgid "Generated columns cannot be used in COPY." msgstr "Згенеровані стовпці не можна використовувати в COPY." -#: commands/copy.c:749 commands/indexcmds.c:1842 commands/statscmds.c:245 +#: commands/copy.c:786 commands/indexcmds.c:1842 commands/statscmds.c:265 #: commands/tablecmds.c:2344 commands/tablecmds.c:3000 #: commands/tablecmds.c:3508 parser/parse_relation.c:3651 #: parser/parse_relation.c:3671 utils/adt/tsvector_op.c:2683 @@ -6359,7 +6383,7 @@ msgstr "Згенеровані стовпці не можна використо msgid "column \"%s\" does not exist" msgstr "стовпця \"%s\" не існує" -#: commands/copy.c:756 commands/tablecmds.c:2370 commands/trigger.c:951 +#: commands/copy.c:793 commands/tablecmds.c:2370 commands/trigger.c:951 #: parser/parse_target.c:1093 parser/parse_target.c:1104 #, c-format msgid "column \"%s\" specified more than once" @@ -6440,7 +6464,7 @@ msgstr "Стовпець FORCE_NOT_NULL \"%s\" не фігурує в COPY" msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "Стовпець FORCE_NULL \"%s\" не фігурує в COPY" -#: commands/copyfrom.c:1343 utils/mb/mbutils.c:385 +#: commands/copyfrom.c:1343 utils/mb/mbutils.c:386 #, c-format msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "функції за замовчуванням перетворення з кодування \"%s\" в \"%s\" не існує" @@ -7049,7 +7073,7 @@ msgstr "Використайте DROP AGGREGATE, щоб видалити агр #: commands/dropcmds.c:158 commands/sequence.c:455 commands/tablecmds.c:3592 #: commands/tablecmds.c:3750 commands/tablecmds.c:3803 -#: commands/tablecmds.c:16176 tcop/utility.c:1324 +#: commands/tablecmds.c:16188 tcop/utility.c:1324 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "відношення \"%s\" не існує, пропускаємо" @@ -7079,7 +7103,7 @@ msgstr "правила сортування \"%s\" не існує, пропус msgid "conversion \"%s\" does not exist, skipping" msgstr "перетворення \"%s\" не існує, пропускаємо" -#: commands/dropcmds.c:293 commands/statscmds.c:674 +#: commands/dropcmds.c:293 commands/statscmds.c:694 #, c-format msgid "statistics object \"%s\" does not exist, skipping" msgstr "об'єкту статистики \"%s\" не існує, пропускаємо" @@ -7174,7 +7198,7 @@ msgstr "правила \"%s\" для відношення \"%s\" не існує msgid "foreign-data wrapper \"%s\" does not exist, skipping" msgstr "джерела сторонніх даних \"%s\" не існує, пропускаємо" -#: commands/dropcmds.c:453 commands/foreigncmds.c:1364 +#: commands/dropcmds.c:453 commands/foreigncmds.c:1375 #, c-format msgid "server \"%s\" does not exist, skipping" msgstr "серверу \"%s\" не існує, пропускаємо" @@ -7534,102 +7558,102 @@ msgstr "неможливо додати схему \"%s\" до розширен msgid "file \"%s\" is too large" msgstr "файл \"%s\" занадто великий" -#: commands/foreigncmds.c:148 commands/foreigncmds.c:157 +#: commands/foreigncmds.c:159 commands/foreigncmds.c:168 #, c-format msgid "option \"%s\" not found" msgstr "параметр \"%s\" не знайдено" -#: commands/foreigncmds.c:167 +#: commands/foreigncmds.c:178 #, c-format msgid "option \"%s\" provided more than once" msgstr "параметр \"%s\" надано більше одного разу" -#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 +#: commands/foreigncmds.c:232 commands/foreigncmds.c:240 #, c-format msgid "permission denied to change owner of foreign-data wrapper \"%s\"" msgstr "немає дозволу для зміни власника джерела сторонніх даних \"%s\"" -#: commands/foreigncmds.c:223 +#: commands/foreigncmds.c:234 #, c-format msgid "Must be superuser to change owner of a foreign-data wrapper." msgstr "Треба бути суперкористувачем, щоб змінити власника джерела сторонніх даних." -#: commands/foreigncmds.c:231 +#: commands/foreigncmds.c:242 #, c-format msgid "The owner of a foreign-data wrapper must be a superuser." msgstr "Власником джерела сторонніх даних може бути тільки суперкористувач." -#: commands/foreigncmds.c:291 commands/foreigncmds.c:711 foreign/foreign.c:711 +#: commands/foreigncmds.c:302 commands/foreigncmds.c:722 foreign/foreign.c:711 #, c-format msgid "foreign-data wrapper \"%s\" does not exist" msgstr "джерела сторонніх даних \"%s\" не існує" -#: commands/foreigncmds.c:584 +#: commands/foreigncmds.c:595 #, c-format msgid "permission denied to create foreign-data wrapper \"%s\"" msgstr "немає дозволу для створення джерела сторонніх даних %s\"" -#: commands/foreigncmds.c:586 +#: commands/foreigncmds.c:597 #, c-format msgid "Must be superuser to create a foreign-data wrapper." msgstr "Треба бути суперкористувачем, щоб створити джерело сторонніх даних." -#: commands/foreigncmds.c:701 +#: commands/foreigncmds.c:712 #, c-format msgid "permission denied to alter foreign-data wrapper \"%s\"" msgstr "немає дозволу на зміну джерела сторонніх даних \"%s\"" -#: commands/foreigncmds.c:703 +#: commands/foreigncmds.c:714 #, c-format msgid "Must be superuser to alter a foreign-data wrapper." msgstr "Треба бути суперкористувачем, щоб змінити джерело сторонніх даних." -#: commands/foreigncmds.c:734 +#: commands/foreigncmds.c:745 #, c-format msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables" msgstr "при зміні обробника в обгортці сторонніх даних може змінитися поведінка існуючих сторонніх таблиць" -#: commands/foreigncmds.c:749 +#: commands/foreigncmds.c:760 #, c-format msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid" msgstr "при зміні функції перевірки в обгортці сторонніх даних параметри залежних об'єктів можуть стати невірними" -#: commands/foreigncmds.c:880 +#: commands/foreigncmds.c:891 #, c-format msgid "server \"%s\" already exists, skipping" msgstr "сервер \"%s\" вже існує, пропускаємо" -#: commands/foreigncmds.c:1148 +#: commands/foreigncmds.c:1159 #, c-format msgid "user mapping for \"%s\" already exists for server \"%s\", skipping" msgstr "зіставлення користувача \"%s\" для сервера \"%s\" вже існує, пропускаємо" -#: commands/foreigncmds.c:1158 +#: commands/foreigncmds.c:1169 #, c-format msgid "user mapping for \"%s\" already exists for server \"%s\"" msgstr "зіставлення користувача \"%s\" для сервера \"%s\" вже існує\"" -#: commands/foreigncmds.c:1258 commands/foreigncmds.c:1378 +#: commands/foreigncmds.c:1269 commands/foreigncmds.c:1389 #, c-format msgid "user mapping for \"%s\" does not exist for server \"%s\"" msgstr "зіставлення користувача \"%s\" не існує для сервера \"%s\"" -#: commands/foreigncmds.c:1383 +#: commands/foreigncmds.c:1394 #, c-format msgid "user mapping for \"%s\" does not exist for server \"%s\", skipping" msgstr "зіставлення користувача \"%s\" не існує для сервера \"%s\", пропускаємо" -#: commands/foreigncmds.c:1511 foreign/foreign.c:399 +#: commands/foreigncmds.c:1522 foreign/foreign.c:399 #, c-format msgid "foreign-data wrapper \"%s\" has no handler" msgstr "джерело сторонніх даних \"%s\" не має обробника" -#: commands/foreigncmds.c:1517 +#: commands/foreigncmds.c:1528 #, c-format msgid "foreign-data wrapper \"%s\" does not support IMPORT FOREIGN SCHEMA" msgstr "джерело сторонніх даних \"%s\" не підтримує IMPORT FOREIGN SCHEMA" -#: commands/foreigncmds.c:1619 +#: commands/foreigncmds.c:1630 #, c-format msgid "importing foreign table \"%s\"" msgstr "імпорт сторонньої таблиці \"%s\"" @@ -8150,7 +8174,7 @@ msgstr "включені стовпці не підтримують параме msgid "could not determine which collation to use for index expression" msgstr "не вдалося визначити, яке правило сортування використати для індексного виразу" -#: commands/indexcmds.c:1978 commands/tablecmds.c:17193 commands/typecmds.c:810 +#: commands/indexcmds.c:1978 commands/tablecmds.c:17215 commands/typecmds.c:810 #: parser/parse_expr.c:2701 parser/parse_type.c:566 parser/parse_utilcmd.c:3783 #: utils/adt/misc.c:621 #, c-format @@ -8187,8 +8211,8 @@ msgstr "метод доступу \"%s\" не підтримує парамет msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "метод доступу \"%s\" не підтримує параметри NULLS FIRST/LAST" -#: commands/indexcmds.c:2160 commands/tablecmds.c:17218 -#: commands/tablecmds.c:17224 commands/typecmds.c:2317 +#: commands/indexcmds.c:2160 commands/tablecmds.c:17240 +#: commands/tablecmds.c:17246 commands/typecmds.c:2317 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "тип даних %s не має класу операторів за замовчуванням для методу доступу \"%s\"" @@ -8214,78 +8238,78 @@ msgstr "клас операторів \"%s\" не приймає тип дани msgid "there are multiple default operator classes for data type %s" msgstr "для типу даних %s є кілька класів операторів за замовчуванням" -#: commands/indexcmds.c:2631 +#: commands/indexcmds.c:2665 #, c-format msgid "unrecognized REINDEX option \"%s\"" msgstr "нерозпізнаний параметр REINDEX \"%s\"" -#: commands/indexcmds.c:2855 +#: commands/indexcmds.c:2889 #, c-format msgid "table \"%s\" has no indexes that can be reindexed concurrently" msgstr "таблиця \"%s\" не має індексів, які можна переіндексувати паралельно" -#: commands/indexcmds.c:2869 +#: commands/indexcmds.c:2903 #, c-format msgid "table \"%s\" has no indexes to reindex" msgstr "таблиця \"%s\" не має індексів для переіндексування" -#: commands/indexcmds.c:2909 commands/indexcmds.c:3416 -#: commands/indexcmds.c:3544 +#: commands/indexcmds.c:2943 commands/indexcmds.c:3450 +#: commands/indexcmds.c:3578 #, c-format msgid "cannot reindex system catalogs concurrently" msgstr "не можна конкурентно переіндексувати системні каталоги" -#: commands/indexcmds.c:2932 +#: commands/indexcmds.c:2966 #, c-format msgid "can only reindex the currently open database" msgstr "переіндексувати можна тільки наразі відкриту базу даних" -#: commands/indexcmds.c:3020 +#: commands/indexcmds.c:3054 #, c-format msgid "cannot reindex system catalogs concurrently, skipping all" msgstr "не можна конкурентно переіндексувати системні каталоги, пропускаємо" -#: commands/indexcmds.c:3053 +#: commands/indexcmds.c:3087 #, c-format msgid "cannot move system relations, skipping all" msgstr "не можна перемістити системні відношення, пропускаються усі" -#: commands/indexcmds.c:3100 +#: commands/indexcmds.c:3134 #, c-format msgid "while reindexing partitioned table \"%s.%s\"" msgstr "під час переіндексування секціонованої таблиці \"%s.%s\"" -#: commands/indexcmds.c:3103 +#: commands/indexcmds.c:3137 #, c-format msgid "while reindexing partitioned index \"%s.%s\"" msgstr "під час переіндексування секціонованого індексу \"%s.%s\"" -#: commands/indexcmds.c:3296 commands/indexcmds.c:4152 +#: commands/indexcmds.c:3330 commands/indexcmds.c:4194 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "таблиця \"%s.%s\" була переіндексована" -#: commands/indexcmds.c:3448 commands/indexcmds.c:3500 +#: commands/indexcmds.c:3482 commands/indexcmds.c:3534 #, c-format msgid "cannot reindex invalid index \"%s.%s\" concurrently, skipping" msgstr "неможливо переіндексувати пошкоджений індекс \"%s.%s\" паралельно, пропускається" -#: commands/indexcmds.c:3454 +#: commands/indexcmds.c:3488 #, c-format msgid "cannot reindex exclusion constraint index \"%s.%s\" concurrently, skipping" msgstr "неможливо переіндексувати індекс обмеження-виключення \"%s.%s\" паралельно, пропускається" -#: commands/indexcmds.c:3609 +#: commands/indexcmds.c:3643 #, c-format msgid "cannot reindex this type of relation concurrently" msgstr "неможливо переіндексувати цей тип відношень паралельон" -#: commands/indexcmds.c:3630 +#: commands/indexcmds.c:3664 #, c-format msgid "cannot move non-shared relation to tablespace \"%s\"" msgstr "не можна перемістити не спільне відношення до табличного простору \"%s\"" -#: commands/indexcmds.c:4133 commands/indexcmds.c:4145 +#: commands/indexcmds.c:4175 commands/indexcmds.c:4187 #, c-format msgid "index \"%s.%s\" was reindexed" msgstr "індекс \"%s.%s\" був перебудований" @@ -8598,11 +8622,11 @@ msgstr "функція оцінювання з'єднання %s повинна msgid "operator attribute \"%s\" cannot be changed" msgstr "атрибут оператора \"%s\" неможливо змінити" -#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:151 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:157 #: commands/tablecmds.c:1582 commands/tablecmds.c:2162 #: commands/tablecmds.c:3402 commands/tablecmds.c:6112 -#: commands/tablecmds.c:9079 commands/tablecmds.c:16781 -#: commands/tablecmds.c:16816 commands/trigger.c:313 commands/trigger.c:1289 +#: commands/tablecmds.c:9081 commands/tablecmds.c:16793 +#: commands/tablecmds.c:16828 commands/trigger.c:313 commands/trigger.c:1289 #: commands/trigger.c:1398 rewrite/rewriteDefine.c:278 #: rewrite/rewriteDefine.c:961 rewrite/rewriteRemove.c:80 #, c-format @@ -8655,7 +8679,7 @@ msgid "cannot create a cursor WITH HOLD within security-restricted operation" msgstr "не можна створити курсос WITH HOLD в межах операції з обмеженням по безпеці" #: commands/portalcmds.c:189 commands/portalcmds.c:242 -#: executor/execCurrent.c:70 utils/adt/xml.c:2643 utils/adt/xml.c:2813 +#: executor/execCurrent.c:70 utils/adt/xml.c:2637 utils/adt/xml.c:2807 #, c-format msgid "cursor \"%s\" does not exist" msgstr "курсор \"%s\" не існує" @@ -8920,13 +8944,13 @@ msgstr "послідовність повинна бути в тій самій msgid "cannot change ownership of identity sequence" msgstr "змінити власника послідовності ідентифікації не можна" -#: commands/sequence.c:1725 commands/tablecmds.c:13581 -#: commands/tablecmds.c:16196 +#: commands/sequence.c:1725 commands/tablecmds.c:13593 +#: commands/tablecmds.c:16208 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "Послідовність \"%s\" зв'язана з таблицею \"%s\"." -#: commands/statscmds.c:112 commands/statscmds.c:121 tcop/utility.c:1866 +#: commands/statscmds.c:112 commands/statscmds.c:121 #, c-format msgid "only a single relation is allowed in CREATE STATISTICS" msgstr "в CREATE STATISTICS можна вказати лише одне відношення" @@ -8936,72 +8960,72 @@ msgstr "в CREATE STATISTICS можна вказати лише одне від msgid "relation \"%s\" is not a table, foreign table, or materialized view" msgstr "відношення \"%s\" - не таблиця, не зовнішня таблиця і не матеріалізоване подання" -#: commands/statscmds.c:193 +#: commands/statscmds.c:213 #, c-format msgid "statistics object \"%s\" already exists, skipping" msgstr "об'єкт статистики \"%s\" вже існує, пропускається" -#: commands/statscmds.c:201 +#: commands/statscmds.c:221 #, c-format msgid "statistics object \"%s\" already exists" msgstr "об'єкт статистики \"%s\" вже існує" -#: commands/statscmds.c:212 +#: commands/statscmds.c:232 #, c-format msgid "cannot have more than %d columns in statistics" msgstr "в статистиці не може бути більше ніж %d стовпців" -#: commands/statscmds.c:253 commands/statscmds.c:276 commands/statscmds.c:309 +#: commands/statscmds.c:273 commands/statscmds.c:296 commands/statscmds.c:329 #, c-format msgid "statistics creation on system columns is not supported" msgstr "створення статистики для системних стовпців не підтримується" -#: commands/statscmds.c:260 commands/statscmds.c:283 +#: commands/statscmds.c:280 commands/statscmds.c:303 #, c-format msgid "column \"%s\" cannot be used in statistics because its type %s has no default btree operator class" msgstr "стовпець \"%s\" не можна використати в статистиці, тому що для його типу %s не визначений клас оператора (btree) за замовчуванням" -#: commands/statscmds.c:326 +#: commands/statscmds.c:346 #, c-format msgid "expression cannot be used in multivariate statistics because its type %s has no default btree operator class" msgstr "вираз не може використовуватись у багатоваріативній статистиці, тому що його тип %s немає визначеного класу оператора btree за замовчуванням" -#: commands/statscmds.c:347 +#: commands/statscmds.c:367 #, c-format msgid "when building statistics on a single expression, statistics kinds may not be specified" msgstr "при побудові статистики для одного виразу види статистики можуть не вказуватись" -#: commands/statscmds.c:376 +#: commands/statscmds.c:396 #, c-format msgid "unrecognized statistics kind \"%s\"" msgstr "нерозпізнаний вид статистики \"%s\"" -#: commands/statscmds.c:405 +#: commands/statscmds.c:425 #, c-format msgid "extended statistics require at least 2 columns" msgstr "для розширеної статистики потрібно мінімум 2 стовпці" -#: commands/statscmds.c:423 +#: commands/statscmds.c:443 #, c-format msgid "duplicate column name in statistics definition" msgstr "дублювання імені стовпця у визначенні статистики" -#: commands/statscmds.c:458 +#: commands/statscmds.c:478 #, c-format msgid "duplicate expression in statistics definition" msgstr "дублікат виразу у визначенні статистики" -#: commands/statscmds.c:639 commands/tablecmds.c:8045 +#: commands/statscmds.c:659 commands/tablecmds.c:8047 #, c-format msgid "statistics target %d is too low" msgstr "мета статистики занадто мала %d" -#: commands/statscmds.c:647 commands/tablecmds.c:8053 +#: commands/statscmds.c:667 commands/tablecmds.c:8055 #, c-format msgid "lowering statistics target to %d" msgstr "мета статистики знижується до %d" -#: commands/statscmds.c:670 +#: commands/statscmds.c:690 #, c-format msgid "statistics object \"%s.%s\" does not exist, skipping" msgstr "об'єкт статистики \"%s.%s\" не існує, пропускається" @@ -9031,7 +9055,7 @@ msgid "must be superuser to create subscriptions" msgstr "для створення підписок потрібно бути суперкористувачем" #: commands/subscriptioncmds.c:474 commands/subscriptioncmds.c:572 -#: replication/logical/tablesync.c:985 replication/logical/worker.c:3226 +#: replication/logical/tablesync.c:1006 replication/logical/worker.c:3233 #, c-format msgid "could not connect to the publisher: %s" msgstr "не вдалося підключитись до сервера публікації: %s" @@ -9072,63 +9096,63 @@ msgstr "Використайте ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH msgid "ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled subscriptions" msgstr "ALTER SUBSCRIPTION ... REFRESH для відключених підписок не допускається" -#: commands/subscriptioncmds.c:1092 +#: commands/subscriptioncmds.c:1094 #, c-format msgid "subscription \"%s\" does not exist, skipping" msgstr "підписка \"%s\" не існує, пропускається" -#: commands/subscriptioncmds.c:1344 +#: commands/subscriptioncmds.c:1346 #, c-format msgid "dropped replication slot \"%s\" on publisher" msgstr "видалено слот реплікації \"%s\" на сервері публікації" -#: commands/subscriptioncmds.c:1353 commands/subscriptioncmds.c:1361 +#: commands/subscriptioncmds.c:1355 commands/subscriptioncmds.c:1363 #, c-format msgid "could not drop replication slot \"%s\" on publisher: %s" msgstr "не вдалося видалити слот реплікації \"%s\" на сервері публікації: %s" -#: commands/subscriptioncmds.c:1395 +#: commands/subscriptioncmds.c:1397 #, c-format msgid "permission denied to change owner of subscription \"%s\"" msgstr "немає прав на зміну власника підписки \"%s\"" -#: commands/subscriptioncmds.c:1397 +#: commands/subscriptioncmds.c:1399 #, c-format msgid "The owner of a subscription must be a superuser." msgstr "Власником підписки повинен бути суперкористувач." -#: commands/subscriptioncmds.c:1513 +#: commands/subscriptioncmds.c:1515 #, c-format msgid "could not receive list of replicated tables from the publisher: %s" msgstr "не вдалося отримати список реплікованих таблиць із сервера публікації: %s" -#: commands/subscriptioncmds.c:1578 +#: commands/subscriptioncmds.c:1580 #, c-format msgid "could not connect to publisher when attempting to drop replication slot \"%s\": %s" msgstr "не вдалося з'єднатись з сервером публікації під час спроби видалити слот реплікації \"%s\": %s" #. translator: %s is an SQL ALTER command -#: commands/subscriptioncmds.c:1581 +#: commands/subscriptioncmds.c:1583 #, c-format msgid "Use %s to disable the subscription, and then use %s to disassociate it from the slot." msgstr "Використовуйте %s, щоб вимкнути підписку, а потім використайте %s, щоб від'єднати її від слоту." -#: commands/subscriptioncmds.c:1612 +#: commands/subscriptioncmds.c:1614 #, c-format msgid "publication name \"%s\" used more than once" msgstr "ім'я публікації \"%s\" використовується більше ніж один раз" -#: commands/subscriptioncmds.c:1656 +#: commands/subscriptioncmds.c:1658 #, c-format msgid "publication \"%s\" is already in subscription \"%s\"" msgstr "публікація \"%s\" вже в підписці \"%s\"" -#: commands/subscriptioncmds.c:1670 +#: commands/subscriptioncmds.c:1672 #, c-format msgid "publication \"%s\" is not in subscription \"%s\"" msgstr "публікація \"%s\" не знаходиться в підписці \"%s\"" -#: commands/subscriptioncmds.c:1681 +#: commands/subscriptioncmds.c:1683 #, c-format msgid "cannot drop all the publications from a subscription" msgstr "не можна видалити всі публікації з підписки" @@ -9189,7 +9213,7 @@ msgstr "матеріалізоване подання \"%s\" не існує, п msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Використайте DROP MATERIALIZED VIEW, щоб видалити матеріалізоване подання." -#: commands/tablecmds.c:265 commands/tablecmds.c:289 commands/tablecmds.c:18719 +#: commands/tablecmds.c:265 commands/tablecmds.c:289 commands/tablecmds.c:18753 #: parser/parse_utilcmd.c:2265 #, c-format msgid "index \"%s\" does not exist" @@ -9213,8 +9237,8 @@ msgstr "\"%s\" не є типом" msgid "Use DROP TYPE to remove a type." msgstr "Використайте DROP TYPE, щоб видалити тип." -#: commands/tablecmds.c:277 commands/tablecmds.c:13420 -#: commands/tablecmds.c:15899 +#: commands/tablecmds.c:277 commands/tablecmds.c:13432 +#: commands/tablecmds.c:15911 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "зовнішня таблиця \"%s\" не існує" @@ -9238,7 +9262,7 @@ msgstr "ON COMMIT можна використовувати лише для ти msgid "cannot create temporary table within security-restricted operation" msgstr "неможливо створити тимчасову таблицю в межах операції з обмеженням безпеки" -#: commands/tablecmds.c:738 commands/tablecmds.c:14706 +#: commands/tablecmds.c:738 commands/tablecmds.c:14718 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "відношення \"%s\" буде успадковуватись більш ніж один раз" @@ -9308,7 +9332,7 @@ msgstr "скоротити зовнішню таблицю \"%s\" не можн msgid "cannot truncate temporary tables of other sessions" msgstr "тимчасові таблиці інших сеансів не можна скоротити" -#: commands/tablecmds.c:2427 commands/tablecmds.c:14603 +#: commands/tablecmds.c:2427 commands/tablecmds.c:14615 #, c-format msgid "cannot inherit from partitioned table \"%s\"" msgstr "успадкування від секціонованої таблиці \"%s\" не допускається" @@ -9329,12 +9353,12 @@ msgstr "успадковане відношення \"%s\" не є таблиц msgid "cannot create a temporary relation as partition of permanent relation \"%s\"" msgstr "створити тимчасове відношення як секцію постійного відношення\"%s\" не можна" -#: commands/tablecmds.c:2461 commands/tablecmds.c:14582 +#: commands/tablecmds.c:2461 commands/tablecmds.c:14594 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "тимчасове відношення \"%s\" не може успадковуватись" -#: commands/tablecmds.c:2471 commands/tablecmds.c:14590 +#: commands/tablecmds.c:2471 commands/tablecmds.c:14602 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "успадкування від тимчасового відношення іншого сеансу неможливе" @@ -9389,7 +9413,7 @@ msgid "inherited column \"%s\" has a generation conflict" msgstr "конфлікт генерування в успадкованому стовпці \"%s\"" #: commands/tablecmds.c:2682 commands/tablecmds.c:2737 -#: commands/tablecmds.c:12145 parser/parse_utilcmd.c:1260 +#: commands/tablecmds.c:12134 parser/parse_utilcmd.c:1260 #: parser/parse_utilcmd.c:1303 parser/parse_utilcmd.c:1749 #: parser/parse_utilcmd.c:1857 #, c-format @@ -9673,12 +9697,12 @@ msgstr "неможливо додати стовпець до типізован msgid "cannot add column to a partition" msgstr "неможливо додати стовпець до розділу" -#: commands/tablecmds.c:6657 commands/tablecmds.c:14833 +#: commands/tablecmds.c:6657 commands/tablecmds.c:14845 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "дочірня таблиця \"%s\" має інший тип для стовпця \"%s\"" -#: commands/tablecmds.c:6663 commands/tablecmds.c:14840 +#: commands/tablecmds.c:6663 commands/tablecmds.c:14852 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "дочірня таблиця \"%s\" має інше правило сортування для стовпця \"%s\"" @@ -9693,928 +9717,921 @@ msgstr "об'єднання визначення стовпця \"%s\" для н msgid "cannot recursively add identity column to table that has child tables" msgstr "неможливо додати стовпець ідентифікації в таблицю, яка має дочірні таблиці" -#: commands/tablecmds.c:6998 +#: commands/tablecmds.c:7000 #, c-format msgid "column must be added to child tables too" msgstr "стовпець також повинен бути доданий до дочірніх таблиць" -#: commands/tablecmds.c:7076 +#: commands/tablecmds.c:7078 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "стовпець \"%s\" відношення \"%s\" вже існує, пропускається" -#: commands/tablecmds.c:7083 +#: commands/tablecmds.c:7085 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "стовпець \"%s\" відношення \"%s\" вже існує" -#: commands/tablecmds.c:7149 commands/tablecmds.c:11773 +#: commands/tablecmds.c:7151 commands/tablecmds.c:11762 #, c-format msgid "cannot remove constraint from only the partitioned table when partitions exist" msgstr "неможливо видалити обмеження тільки з секціонованої таблиці, коли існують секції" -#: commands/tablecmds.c:7150 commands/tablecmds.c:7467 -#: commands/tablecmds.c:8494 commands/tablecmds.c:11774 +#: commands/tablecmds.c:7152 commands/tablecmds.c:7469 +#: commands/tablecmds.c:8496 commands/tablecmds.c:11763 #, c-format msgid "Do not specify the ONLY keyword." msgstr "Не вказуйте ключове слово ONLY." -#: commands/tablecmds.c:7187 commands/tablecmds.c:7393 -#: commands/tablecmds.c:7535 commands/tablecmds.c:7649 -#: commands/tablecmds.c:7743 commands/tablecmds.c:7802 -#: commands/tablecmds.c:7920 commands/tablecmds.c:8086 -#: commands/tablecmds.c:8156 commands/tablecmds.c:8312 -#: commands/tablecmds.c:11928 commands/tablecmds.c:13443 -#: commands/tablecmds.c:15990 +#: commands/tablecmds.c:7189 commands/tablecmds.c:7395 +#: commands/tablecmds.c:7537 commands/tablecmds.c:7651 +#: commands/tablecmds.c:7745 commands/tablecmds.c:7804 +#: commands/tablecmds.c:7922 commands/tablecmds.c:8088 +#: commands/tablecmds.c:8158 commands/tablecmds.c:8314 +#: commands/tablecmds.c:11917 commands/tablecmds.c:13455 +#: commands/tablecmds.c:16002 #, c-format msgid "cannot alter system column \"%s\"" msgstr "не можна змінити системний стовпець \"%s\"" -#: commands/tablecmds.c:7193 commands/tablecmds.c:7541 +#: commands/tablecmds.c:7195 commands/tablecmds.c:7543 #, c-format msgid "column \"%s\" of relation \"%s\" is an identity column" msgstr "стовпець \"%s\" відношення \"%s\" є стовпцем ідентифікації" -#: commands/tablecmds.c:7236 +#: commands/tablecmds.c:7238 #, c-format msgid "column \"%s\" is in a primary key" msgstr "стовпець \"%s\" входить до первинного ключа" -#: commands/tablecmds.c:7241 +#: commands/tablecmds.c:7243 #, c-format msgid "column \"%s\" is in index used as replica identity" msgstr "стовпець \"%s\" в індексі, що використовується як ідентифікація репліки" -#: commands/tablecmds.c:7264 +#: commands/tablecmds.c:7266 #, c-format msgid "column \"%s\" is marked NOT NULL in parent table" msgstr "стовпець \"%s\" в батьківській таблиці позначений як NOT NULL" -#: commands/tablecmds.c:7464 commands/tablecmds.c:8977 +#: commands/tablecmds.c:7466 commands/tablecmds.c:8979 #, c-format msgid "constraint must be added to child tables too" msgstr "обмеження повинно бути додано у дочірні таблиці також" -#: commands/tablecmds.c:7465 +#: commands/tablecmds.c:7467 #, c-format msgid "Column \"%s\" of relation \"%s\" is not already NOT NULL." msgstr "Стовпець \"%s\" відношення \"%s\" вже не NOT NULL." -#: commands/tablecmds.c:7543 +#: commands/tablecmds.c:7545 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY instead." msgstr "Замість цього використайте ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY." -#: commands/tablecmds.c:7548 +#: commands/tablecmds.c:7550 #, c-format msgid "column \"%s\" of relation \"%s\" is a generated column" msgstr "стовпець \"%s\" відношення \"%s\" є згенерованим стовпцем" -#: commands/tablecmds.c:7551 +#: commands/tablecmds.c:7553 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION instead." msgstr "Замість цього використайте ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION." -#: commands/tablecmds.c:7660 +#: commands/tablecmds.c:7662 #, c-format msgid "column \"%s\" of relation \"%s\" must be declared NOT NULL before identity can be added" msgstr "стовпець \"%s\" відношення \"%s\" повинен бути оголошений як NOT NULL, щоб додати ідентифікацію" -#: commands/tablecmds.c:7666 +#: commands/tablecmds.c:7668 #, c-format msgid "column \"%s\" of relation \"%s\" is already an identity column" msgstr "стовпець \"%s\" відношення \"%s\" вже є стовпцем ідентифікації" -#: commands/tablecmds.c:7672 +#: commands/tablecmds.c:7674 #, c-format msgid "column \"%s\" of relation \"%s\" already has a default value" msgstr "стовпець \"%s\" відношення \"%s\" вже має значення за замовчуванням" -#: commands/tablecmds.c:7749 commands/tablecmds.c:7810 +#: commands/tablecmds.c:7751 commands/tablecmds.c:7812 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column" msgstr "стовпець \"%s\" відношення \"%s\" не є стовпцем ідентифікації" -#: commands/tablecmds.c:7815 +#: commands/tablecmds.c:7817 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column, skipping" msgstr "стовпець \"%s\" відношення \"%s\" не є стовпцем ідентифікації, пропускається" -#: commands/tablecmds.c:7868 +#: commands/tablecmds.c:7870 #, c-format msgid "ALTER TABLE / DROP EXPRESSION must be applied to child tables too" msgstr "ALTER TABLE / DROP EXPRESSION повинен бути застосований і до дочірніх таблиць" -#: commands/tablecmds.c:7890 +#: commands/tablecmds.c:7892 #, c-format msgid "cannot drop generation expression from inherited column" msgstr "не можна видалити вираз генерації з успадкованого стовпця" -#: commands/tablecmds.c:7928 +#: commands/tablecmds.c:7930 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column" msgstr "стовпець \"%s\" відношення \"%s\" не є збереженим згенерованим стовпцем" -#: commands/tablecmds.c:7933 +#: commands/tablecmds.c:7935 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column, skipping" msgstr "стовпець \"%s\" відношення \"%s\" не є збереженим згенерованим стовпцем, пропускається" -#: commands/tablecmds.c:8033 +#: commands/tablecmds.c:8035 #, c-format msgid "cannot refer to non-index column by number" msgstr "не можна посилатись на неіндексований стовпець за номером" -#: commands/tablecmds.c:8076 +#: commands/tablecmds.c:8078 #, c-format msgid "column number %d of relation \"%s\" does not exist" msgstr "стовпець з номером %d відношення %s не існує" -#: commands/tablecmds.c:8095 +#: commands/tablecmds.c:8097 #, c-format msgid "cannot alter statistics on included column \"%s\" of index \"%s\"" msgstr "змінити статистику включеного стовпця \"%s\" індексу \"%s\" не можна" -#: commands/tablecmds.c:8100 +#: commands/tablecmds.c:8102 #, c-format msgid "cannot alter statistics on non-expression column \"%s\" of index \"%s\"" msgstr "змінити статистику невираженого стовпця \"%s\" індексу \"%s\" не можна" -#: commands/tablecmds.c:8102 +#: commands/tablecmds.c:8104 #, c-format msgid "Alter statistics on table column instead." msgstr "Замість цього змініть статистику стовпця в таблиці." -#: commands/tablecmds.c:8292 +#: commands/tablecmds.c:8294 #, c-format msgid "invalid storage type \"%s\"" msgstr "неприпустимий тип сховища \"%s\"" -#: commands/tablecmds.c:8324 +#: commands/tablecmds.c:8326 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "тип даних стовпця %s може мати тільки сховище PLAIN" -#: commands/tablecmds.c:8369 +#: commands/tablecmds.c:8371 #, c-format msgid "cannot drop column from typed table" msgstr "не можна видалити стовпець з типізованої таблиці" -#: commands/tablecmds.c:8432 +#: commands/tablecmds.c:8434 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "стовпець \"%s\" відношення \"%s\" не існує, пропускається" -#: commands/tablecmds.c:8445 +#: commands/tablecmds.c:8447 #, c-format msgid "cannot drop system column \"%s\"" msgstr "не можна видалити системний стовпець \"%s\"" -#: commands/tablecmds.c:8455 +#: commands/tablecmds.c:8457 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "не можна видалити успадкований стовпець \"%s\"" -#: commands/tablecmds.c:8468 +#: commands/tablecmds.c:8470 #, c-format msgid "cannot drop column \"%s\" because it is part of the partition key of relation \"%s\"" msgstr "не можна видалити стовпець \"%s\", тому що він є частиною ключа секції відношення \"%s\"" -#: commands/tablecmds.c:8493 +#: commands/tablecmds.c:8495 #, c-format msgid "cannot drop column from only the partitioned table when partitions exist" msgstr "видалити стовпець тільки з секціонованої таблиці, коли існують секції, не можна" -#: commands/tablecmds.c:8697 +#: commands/tablecmds.c:8699 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX is not supported on partitioned tables" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX не підтримується із секціонованими таблицями" -#: commands/tablecmds.c:8722 +#: commands/tablecmds.c:8724 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX перейменує індекс \"%s\" в \"%s\"" -#: commands/tablecmds.c:9057 +#: commands/tablecmds.c:9059 #, c-format msgid "cannot use ONLY for foreign key on partitioned table \"%s\" referencing relation \"%s\"" msgstr "не можна використати ONLY для стороннього ключа в секціонованій таблиці \"%s\", який посилається на відношення \"%s\"" -#: commands/tablecmds.c:9063 +#: commands/tablecmds.c:9065 #, c-format msgid "cannot add NOT VALID foreign key on partitioned table \"%s\" referencing relation \"%s\"" msgstr "не можна додати сторонній ключ з характеристикою NOT VALID в секціоновану таблицю \"%s\", який посилається на відношення \"%s\"" -#: commands/tablecmds.c:9066 +#: commands/tablecmds.c:9068 #, c-format msgid "This feature is not yet supported on partitioned tables." msgstr "Ця функція ще не підтримується з секціонованими таблицями." -#: commands/tablecmds.c:9073 commands/tablecmds.c:9478 +#: commands/tablecmds.c:9075 commands/tablecmds.c:9480 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "вказане відношення \"%s\" не є таблицею" -#: commands/tablecmds.c:9096 +#: commands/tablecmds.c:9098 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "обмеження в постійних таблицях можуть посилатись лише на постійні таблиці" -#: commands/tablecmds.c:9103 +#: commands/tablecmds.c:9105 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" msgstr "обмеження в нежурнальованих таблицях можуть посилатись тільки на постійні або нежурналюємі таблиці" -#: commands/tablecmds.c:9109 +#: commands/tablecmds.c:9111 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "обмеження в тимчасових таблицях можуть посилатись лише на тимчасові таблиці" -#: commands/tablecmds.c:9113 +#: commands/tablecmds.c:9115 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "обмеження в тимчасових таблицях повинні посилатись лише на тичасові таблиці поточного сеансу" -#: commands/tablecmds.c:9179 commands/tablecmds.c:9185 +#: commands/tablecmds.c:9181 commands/tablecmds.c:9187 #, c-format msgid "invalid %s action for foreign key constraint containing generated column" msgstr "неприпустима дія %s для обмеження зовнішнього ключа, який містить згеренований стовпець" -#: commands/tablecmds.c:9201 +#: commands/tablecmds.c:9203 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "число стовпців в джерелі і призначенні зовнішнього ключа не збігається" -#: commands/tablecmds.c:9308 +#: commands/tablecmds.c:9310 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "обмеження зовнішнього ключа \"%s\" не можна реалізувати" -#: commands/tablecmds.c:9310 +#: commands/tablecmds.c:9312 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Стовпці ключа \"%s\" і \"%s\" містять несумісні типи: %s і %s." -#: commands/tablecmds.c:9673 commands/tablecmds.c:10103 +#: commands/tablecmds.c:9675 commands/tablecmds.c:10092 #: parser/parse_utilcmd.c:791 parser/parse_utilcmd.c:920 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "обмеження зовнішнього ключа для сторонніх таблиць не підтримуються" -#: commands/tablecmds.c:10086 +#: commands/tablecmds.c:10075 #, c-format msgid "cannot attach table \"%s\" as a partition because it is referenced by foreign key \"%s\"" msgstr "не можна підключити таблицю \"%s\" в якості секції, тому що на неї посилається сторонній ключ \"%s\"" -#: commands/tablecmds.c:10556 commands/tablecmds.c:10837 -#: commands/tablecmds.c:11730 commands/tablecmds.c:11805 +#: commands/tablecmds.c:10545 commands/tablecmds.c:10826 +#: commands/tablecmds.c:11719 commands/tablecmds.c:11794 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "обмеження \"%s\" відношення \"%s\" не існує" -#: commands/tablecmds.c:10563 +#: commands/tablecmds.c:10552 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "обмеження \"%s\" відношення \"%s\" не є обмеженням зовнішнього ключа" -#: commands/tablecmds.c:10601 +#: commands/tablecmds.c:10590 #, c-format msgid "cannot alter constraint \"%s\" on relation \"%s\"" msgstr "неможливо змінити обмеження \"%s\" відношення \"%s\"" -#: commands/tablecmds.c:10604 +#: commands/tablecmds.c:10593 #, c-format msgid "Constraint \"%s\" is derived from constraint \"%s\" of relation \"%s\"." msgstr "Обмеження \"%s\" походить з обмеження \"%s\" відношення \"%s\"." -#: commands/tablecmds.c:10606 +#: commands/tablecmds.c:10595 #, c-format msgid "You may alter the constraint it derives from, instead." msgstr "Натомість ви можете змінити початкове обмеження." -#: commands/tablecmds.c:10845 +#: commands/tablecmds.c:10834 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" msgstr "обмеження \"%s\" відношення \"%s\" не є зовнішнім ключем або перевіркою обмеженням " -#: commands/tablecmds.c:10923 +#: commands/tablecmds.c:10912 #, c-format msgid "constraint must be validated on child tables too" msgstr "обмеження повинно дотримуватися в дочірніх таблицях також" -#: commands/tablecmds.c:11013 +#: commands/tablecmds.c:11002 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "стовпець \"%s\", вказаний в обмеженні зовнішнього ключа, не існує" -#: commands/tablecmds.c:11019 +#: commands/tablecmds.c:11008 #, c-format msgid "system columns cannot be used in foreign keys" msgstr "в зовнішніх ключах не можна використовувати системні стовпці" -#: commands/tablecmds.c:11023 +#: commands/tablecmds.c:11012 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "у зовнішньому ключі не може бути більш ніж %d ключів" -#: commands/tablecmds.c:11088 +#: commands/tablecmds.c:11077 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "використовувати затримуваний первинний ключ в цільовій зовнішній таблиці \"%s\" не можна" -#: commands/tablecmds.c:11105 +#: commands/tablecmds.c:11094 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "у цільовій зовнішній таблиці \"%s\" немає первинного ключа" -#: commands/tablecmds.c:11174 +#: commands/tablecmds.c:11163 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "у списку стовпців зовнішнього ключа не повинно бути повторень" -#: commands/tablecmds.c:11268 +#: commands/tablecmds.c:11257 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "використовувати затримане обмеження унікальності в цільовій зовнішній таблиці \"%s\" не можна" -#: commands/tablecmds.c:11273 +#: commands/tablecmds.c:11262 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "у цільовій зовнішній таблиці \"%s\" немає обмеження унікальності, відповідного даним ключам" -#: commands/tablecmds.c:11686 +#: commands/tablecmds.c:11675 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "видалити успадковане обмеження \"%s\" відношення \"%s\" не можна" -#: commands/tablecmds.c:11736 +#: commands/tablecmds.c:11725 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "обмеження \"%s\" відношення \"%s\" не існує, пропускається" -#: commands/tablecmds.c:11912 +#: commands/tablecmds.c:11901 #, c-format msgid "cannot alter column type of typed table" msgstr "змінити тип стовпця в типізованій таблиці не можна" -#: commands/tablecmds.c:11938 +#: commands/tablecmds.c:11927 #, c-format msgid "cannot specify USING when altering type of generated column" msgstr "не можна вказати USING під час зміни типу згенерованого стовпця" -#: commands/tablecmds.c:11939 commands/tablecmds.c:17036 -#: commands/tablecmds.c:17126 commands/trigger.c:653 -#: rewrite/rewriteHandler.c:936 rewrite/rewriteHandler.c:971 -#, c-format -msgid "Column \"%s\" is a generated column." -msgstr "Стовпець \"%s\" є згенерованим стовпцем." - -#: commands/tablecmds.c:11949 +#: commands/tablecmds.c:11938 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "змінити успадкований стовпець \"%s\" не можна" -#: commands/tablecmds.c:11958 +#: commands/tablecmds.c:11947 #, c-format msgid "cannot alter column \"%s\" because it is part of the partition key of relation \"%s\"" msgstr "не можна змінити стовпець \"%s\", тому що він є частиною ключа секції відношення \"%s\"" -#: commands/tablecmds.c:12008 +#: commands/tablecmds.c:11997 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" msgstr "результати речення USING для стовпця \"%s\" не можна автоматично наведено для типу %s" -#: commands/tablecmds.c:12011 +#: commands/tablecmds.c:12000 #, c-format msgid "You might need to add an explicit cast." msgstr "Можливо, необхідно додати явне приведення типу." -#: commands/tablecmds.c:12015 +#: commands/tablecmds.c:12004 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "стовпець \"%s\" не можна автоматично привести до типу %s" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:12019 +#: commands/tablecmds.c:12008 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Можливо, необхідно вказати \"USING %s::%s\"." -#: commands/tablecmds.c:12118 +#: commands/tablecmds.c:12107 #, c-format msgid "cannot alter inherited column \"%s\" of relation \"%s\"" msgstr "не можна змінити успадкований стовпець \"%s\" відношення \"%s\"" -#: commands/tablecmds.c:12146 +#: commands/tablecmds.c:12135 #, c-format msgid "USING expression contains a whole-row table reference." msgstr "Вираз USING містить посилання на тип усього рядка таблиці." -#: commands/tablecmds.c:12157 +#: commands/tablecmds.c:12146 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "тип успадкованого стовпця \"%s\" повинен бути змінений і в дочірніх таблицях" -#: commands/tablecmds.c:12282 +#: commands/tablecmds.c:12271 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "не можна змінити тип стовпця \"%s\" двічі" -#: commands/tablecmds.c:12320 +#: commands/tablecmds.c:12309 #, c-format msgid "generation expression for column \"%s\" cannot be cast automatically to type %s" msgstr "вираз генерації для стовпця \"%s\" не можна автоматично привести до типу %s" -#: commands/tablecmds.c:12325 +#: commands/tablecmds.c:12314 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "значення за замовчуванням для стовпця \"%s\" не можна автоматично привести до типу %s" -#: commands/tablecmds.c:12403 +#: commands/tablecmds.c:12392 #, c-format msgid "cannot alter type of a column used by a generated column" msgstr "змінити тип стовпця, який використовується згенерованим стовпцем, не можна" -#: commands/tablecmds.c:12404 +#: commands/tablecmds.c:12393 #, c-format msgid "Column \"%s\" is used by generated column \"%s\"." msgstr "Стовпець \"%s\" використовується згенерованим стовпцем \"%s\"." -#: commands/tablecmds.c:12432 +#: commands/tablecmds.c:12421 #, c-format msgid "cannot alter type of a column used by a function or procedure" msgstr "неможливо змінити тип стовпця, який використовується функцією або процедурою" -#: commands/tablecmds.c:12433 commands/tablecmds.c:12447 -#: commands/tablecmds.c:12466 commands/tablecmds.c:12484 +#: commands/tablecmds.c:12422 commands/tablecmds.c:12436 +#: commands/tablecmds.c:12455 commands/tablecmds.c:12473 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s залежить від стовпця \"%s\"" -#: commands/tablecmds.c:12446 +#: commands/tablecmds.c:12435 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "змінити тип стовпця, залученого в поданні або правилі, не можна" -#: commands/tablecmds.c:12465 +#: commands/tablecmds.c:12454 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "неможливо змінити тип стовпця, що використовується у визначенні тригеру" -#: commands/tablecmds.c:12483 +#: commands/tablecmds.c:12472 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "неможливо змінити тип стовпця, що використовується у визначенні політики" -#: commands/tablecmds.c:13551 commands/tablecmds.c:13563 +#: commands/tablecmds.c:13563 commands/tablecmds.c:13575 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "неможливо змінити власника індексу \"%s\"" -#: commands/tablecmds.c:13553 commands/tablecmds.c:13565 +#: commands/tablecmds.c:13565 commands/tablecmds.c:13577 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Замість цього змініть власника таблиці, що містить цей індекс." -#: commands/tablecmds.c:13579 +#: commands/tablecmds.c:13591 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "неможливо змінити власника послідовності \"%s\"" -#: commands/tablecmds.c:13593 commands/tablecmds.c:16892 +#: commands/tablecmds.c:13605 commands/tablecmds.c:16904 #, c-format msgid "Use ALTER TYPE instead." msgstr "Замість цього використайте ALTER TYPE." -#: commands/tablecmds.c:13602 +#: commands/tablecmds.c:13614 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "\"%s\" - не таблиця, подання, послідовність або зовнішня таблиця" -#: commands/tablecmds.c:13941 +#: commands/tablecmds.c:13953 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "в одній інструкції не може бути декілька підкоманд SET TABLESPACE" -#: commands/tablecmds.c:14018 +#: commands/tablecmds.c:14030 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" msgstr "\"%s\" - не таблиця, подання, матеріалізоване подання, індекс або TOAST-таблиця" -#: commands/tablecmds.c:14051 commands/view.c:505 +#: commands/tablecmds.c:14063 commands/view.c:505 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "WITH CHECK OPTION підтримується лише з автооновлюваними поданнями" -#: commands/tablecmds.c:14304 +#: commands/tablecmds.c:14316 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "у табличних просторах існують лише таблиці, індекси та матеріалізовані подання" -#: commands/tablecmds.c:14316 +#: commands/tablecmds.c:14328 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "переміщувати відношення у або з табличного простору pg_global не можна" -#: commands/tablecmds.c:14408 +#: commands/tablecmds.c:14420 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "переривання через блокування відношення \"%s.%s\" неможливе" -#: commands/tablecmds.c:14424 +#: commands/tablecmds.c:14436 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr " табличному просторі \"%s\" не знайдені відповідні відносини" -#: commands/tablecmds.c:14541 +#: commands/tablecmds.c:14553 #, c-format msgid "cannot change inheritance of typed table" msgstr "змінити успадкування типізованої таблиці не можна" -#: commands/tablecmds.c:14546 commands/tablecmds.c:15102 +#: commands/tablecmds.c:14558 commands/tablecmds.c:15114 #, c-format msgid "cannot change inheritance of a partition" msgstr "змінити успадкування секції не можна" -#: commands/tablecmds.c:14551 +#: commands/tablecmds.c:14563 #, c-format msgid "cannot change inheritance of partitioned table" msgstr "змінити успадкування секціонованої таблиці не можна" -#: commands/tablecmds.c:14597 +#: commands/tablecmds.c:14609 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "успадкування для тимчасового відношення іншого сеансу не можливе" -#: commands/tablecmds.c:14610 +#: commands/tablecmds.c:14622 #, c-format msgid "cannot inherit from a partition" msgstr "успадкування від секції неможливе" -#: commands/tablecmds.c:14632 commands/tablecmds.c:17538 +#: commands/tablecmds.c:14644 commands/tablecmds.c:17560 #, c-format msgid "circular inheritance not allowed" msgstr "циклічне успадкування неприпустиме" -#: commands/tablecmds.c:14633 commands/tablecmds.c:17539 +#: commands/tablecmds.c:14645 commands/tablecmds.c:17561 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" вже є нащадком \"%s\"." -#: commands/tablecmds.c:14646 +#: commands/tablecmds.c:14658 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming an inheritance child" msgstr "тригер \"%s\" не дозволяє таблиці \"%s\" стати нащадком успадкування" -#: commands/tablecmds.c:14648 +#: commands/tablecmds.c:14660 #, c-format msgid "ROW triggers with transition tables are not supported in inheritance hierarchies." msgstr "Тригери ROW з перехідними таблицями не підтримуються в ієрархіях успадкування." -#: commands/tablecmds.c:14851 +#: commands/tablecmds.c:14863 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "стовпець \"%s\" в дочірній таблиці має бути позначений як NOT NULL" -#: commands/tablecmds.c:14860 +#: commands/tablecmds.c:14872 #, c-format msgid "column \"%s\" in child table must be a generated column" msgstr "стовпець \"%s\" у дочірній таблиці повинен бути згенерованим стовпцем" -#: commands/tablecmds.c:14910 +#: commands/tablecmds.c:14922 #, c-format msgid "column \"%s\" in child table has a conflicting generation expression" msgstr "стовпець \"%s\" в дочірній таблиці містить конфліктний вираз генерування" -#: commands/tablecmds.c:14938 +#: commands/tablecmds.c:14950 #, c-format msgid "child table is missing column \"%s\"" msgstr "у дочірній таблиці не вистачає стовпця \"%s\"" -#: commands/tablecmds.c:15026 +#: commands/tablecmds.c:15038 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "дочірня таблиця \"%s\" має інше визначення перевірочного обмеження \"%s\"" -#: commands/tablecmds.c:15034 +#: commands/tablecmds.c:15046 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" msgstr "обмеження \"%s\" конфліктує з неуспадкованим обмеженням дочірньої таблиці \"%s\"" -#: commands/tablecmds.c:15045 +#: commands/tablecmds.c:15057 #, c-format msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" msgstr "обмеження \"%s\" конфліктує з NOT VALID обмеженням дочірньої таблиці \"%s\"" -#: commands/tablecmds.c:15080 +#: commands/tablecmds.c:15092 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "у дочірній таблиці не вистачає обмеження \"%s\"" -#: commands/tablecmds.c:15166 +#: commands/tablecmds.c:15178 #, c-format msgid "partition \"%s\" already pending detach in partitioned table \"%s.%s\"" msgstr "розділ \"%s\" вже очікує відключення в секціонованій таблиці \"%s.%s\"" -#: commands/tablecmds.c:15195 commands/tablecmds.c:15243 +#: commands/tablecmds.c:15207 commands/tablecmds.c:15255 #, c-format msgid "relation \"%s\" is not a partition of relation \"%s\"" msgstr "відношення \"%s\" не є секцією відношення \"%s\"" -#: commands/tablecmds.c:15249 +#: commands/tablecmds.c:15261 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "відношення \"%s\" не є предком відношення \"%s\"" -#: commands/tablecmds.c:15477 +#: commands/tablecmds.c:15489 #, c-format msgid "typed tables cannot inherit" msgstr "типізовані таблиці не можуть успадковуватись" -#: commands/tablecmds.c:15507 +#: commands/tablecmds.c:15519 #, c-format msgid "table is missing column \"%s\"" msgstr "у таблиці не вистачає стовпця \"%s\"" -#: commands/tablecmds.c:15518 +#: commands/tablecmds.c:15530 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "таблиця містить стовпець \"%s\", а тип потребує \"%s\"" -#: commands/tablecmds.c:15527 +#: commands/tablecmds.c:15539 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "таблиця \"%s\" містить стовпець \"%s\" іншого типу" -#: commands/tablecmds.c:15541 +#: commands/tablecmds.c:15553 #, c-format msgid "table has extra column \"%s\"" msgstr "таблиця містить зайвий стовпець \"%s\"" -#: commands/tablecmds.c:15593 +#: commands/tablecmds.c:15605 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\" - не типізована таблиця" -#: commands/tablecmds.c:15767 +#: commands/tablecmds.c:15779 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "для ідентифікації репліки не можна використати неунікальний індекс \"%s\"" -#: commands/tablecmds.c:15773 +#: commands/tablecmds.c:15785 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "для ідентифікації репліки не можна використати небезпосередній індекс \"%s\"" -#: commands/tablecmds.c:15779 +#: commands/tablecmds.c:15791 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "для ідентифікації репліки не можна використати індекс з виразом \"%s\"" -#: commands/tablecmds.c:15785 +#: commands/tablecmds.c:15797 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "для ідентифікації репліки не можна використати частковий індекс \"%s\"" -#: commands/tablecmds.c:15802 +#: commands/tablecmds.c:15814 #, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" msgstr "індекс \"%s\" не можна використати як ідентифікацію репліки, тому що стовпець %d - системний стовпець" -#: commands/tablecmds.c:15809 +#: commands/tablecmds.c:15821 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" msgstr "індекс \"%s\" не можна використати як ідентифікацію репліки, тому що стовпець \"%s\" допускає Null" -#: commands/tablecmds.c:16056 +#: commands/tablecmds.c:16068 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "змінити стан журналювання таблиці \"%s\" не можна, тому що вона тимчасова" -#: commands/tablecmds.c:16080 +#: commands/tablecmds.c:16092 #, c-format msgid "cannot change table \"%s\" to unlogged because it is part of a publication" msgstr "таблицю \"%s\" не можна змінити на нежурнальовану, тому що вона є частиною публікації" -#: commands/tablecmds.c:16082 +#: commands/tablecmds.c:16094 #, c-format msgid "Unlogged relations cannot be replicated." msgstr "Нежурнальовані відношення не підтримують реплікацію." -#: commands/tablecmds.c:16127 +#: commands/tablecmds.c:16139 #, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" msgstr "не вдалося змінити таблицю \"%s\" на журнальовану, тому що вона посилається на нежурнальовану таблицю \"%s\"" -#: commands/tablecmds.c:16137 +#: commands/tablecmds.c:16149 #, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" msgstr "не вдалося змінити таблицю \"%s\" на нежурнальовану, тому що вона посилається на журнальовану таблицю \"%s\"" -#: commands/tablecmds.c:16195 +#: commands/tablecmds.c:16207 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "перемістити послідовність з власником в іншу схему не можна" -#: commands/tablecmds.c:16300 +#: commands/tablecmds.c:16312 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "відношення \"%s\" вже існує в схемі \"%s\"" -#: commands/tablecmds.c:16875 +#: commands/tablecmds.c:16887 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" - не складений тип" -#: commands/tablecmds.c:16907 +#: commands/tablecmds.c:16919 #, c-format msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table" msgstr "\"%s\" - не таблиця, подання, матеріалізоване подання, послідовність або зовнішня таблиця" -#: commands/tablecmds.c:16942 +#: commands/tablecmds.c:16954 #, c-format msgid "unrecognized partitioning strategy \"%s\"" msgstr "нерозпізнана стратегія секціонування \"%s\"" -#: commands/tablecmds.c:16950 +#: commands/tablecmds.c:16962 #, c-format msgid "cannot use \"list\" partition strategy with more than one column" msgstr "стратегія секціонування \"по списку\" не може використовувати декілька стовпців" -#: commands/tablecmds.c:17016 +#: commands/tablecmds.c:17028 #, c-format msgid "column \"%s\" named in partition key does not exist" msgstr "стовпець \"%s\", згаданий в ключі секціонування, не існує" -#: commands/tablecmds.c:17024 +#: commands/tablecmds.c:17036 #, c-format msgid "cannot use system column \"%s\" in partition key" msgstr "системний стовпець \"%s\" не можна використати в ключі секціонування" -#: commands/tablecmds.c:17035 commands/tablecmds.c:17125 +#: commands/tablecmds.c:17047 commands/tablecmds.c:17126 #, c-format msgid "cannot use generated column in partition key" msgstr "використати згенерований стовпець в ключі секції, не можна" -#: commands/tablecmds.c:17108 +#: commands/tablecmds.c:17116 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "вирази ключа секціонування не можуть містити посилання на системний стовпець" -#: commands/tablecmds.c:17155 +#: commands/tablecmds.c:17177 #, c-format msgid "functions in partition key expression must be marked IMMUTABLE" msgstr "функції у виразі ключа секціонування повинні бути позначені як IMMUTABLE" -#: commands/tablecmds.c:17164 +#: commands/tablecmds.c:17186 #, c-format msgid "cannot use constant expression as partition key" msgstr "не можна використати константий вираз як ключ секціонування" -#: commands/tablecmds.c:17185 +#: commands/tablecmds.c:17207 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "не вдалося визначити, яке правило сортування використати для виразу секціонування" -#: commands/tablecmds.c:17220 +#: commands/tablecmds.c:17242 #, c-format msgid "You must specify a hash operator class or define a default hash operator class for the data type." msgstr "Ви повинні вказати клас операторів гешування або визначити клас операторів гешування за замовчуванням для цього типу даних." -#: commands/tablecmds.c:17226 +#: commands/tablecmds.c:17248 #, c-format msgid "You must specify a btree operator class or define a default btree operator class for the data type." msgstr "Ви повинні вказати клас операторів (btree) або визначити клас операторів (btree) за замовчуванням для цього типу даних." -#: commands/tablecmds.c:17478 +#: commands/tablecmds.c:17500 #, c-format msgid "\"%s\" is already a partition" msgstr "\"%s\" вже є секцією" -#: commands/tablecmds.c:17484 +#: commands/tablecmds.c:17506 #, c-format msgid "cannot attach a typed table as partition" msgstr "неможливо підключити типізовану таблицю в якості секції" -#: commands/tablecmds.c:17500 +#: commands/tablecmds.c:17522 #, c-format msgid "cannot attach inheritance child as partition" msgstr "неможливо підключити нащадка успадкування в якості секції" -#: commands/tablecmds.c:17514 +#: commands/tablecmds.c:17536 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "неможливо підключити предка успадкування в якості секції" -#: commands/tablecmds.c:17548 +#: commands/tablecmds.c:17570 #, c-format msgid "cannot attach a temporary relation as partition of permanent relation \"%s\"" msgstr "неможливо підкючити тимчасове відношення в якості секції постійного відношення \"%s\"" -#: commands/tablecmds.c:17556 +#: commands/tablecmds.c:17578 #, c-format msgid "cannot attach a permanent relation as partition of temporary relation \"%s\"" msgstr "неможливо підключити постійне відношення в якості секції тимчасового відношення \"%s\"" -#: commands/tablecmds.c:17564 +#: commands/tablecmds.c:17586 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "неможливо підключити секцію до тимчасового відношення в іншому сеансі" -#: commands/tablecmds.c:17571 +#: commands/tablecmds.c:17593 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "неможливо підключити тимчасове відношення з іншого сеансу в якості секції" -#: commands/tablecmds.c:17591 +#: commands/tablecmds.c:17613 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "таблиця \"%s\" містить стовпець \"%s\", відсутній в батьківській \"%s\"" -#: commands/tablecmds.c:17594 +#: commands/tablecmds.c:17616 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "Нова секція може містити лише стовпці, що є у батьківській таблиці." -#: commands/tablecmds.c:17606 +#: commands/tablecmds.c:17628 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "тригер \"%s\" не дозволяє зробити таблицю \"%s\" секцією" -#: commands/tablecmds.c:17608 commands/trigger.c:459 +#: commands/tablecmds.c:17630 commands/trigger.c:459 #, c-format msgid "ROW triggers with transition tables are not supported on partitions" msgstr "Тригери ROW з перехідними таблицями для секцій не підтримуються" -#: commands/tablecmds.c:17787 +#: commands/tablecmds.c:17809 #, c-format msgid "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "не можна підключити зовнішню таблицю \"%s\" в якості секції секціонованої таблиці \"%s\"" -#: commands/tablecmds.c:17790 +#: commands/tablecmds.c:17812 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "Секціонована таблиця \"%s\" містить унікальні індекси." -#: commands/tablecmds.c:18114 +#: commands/tablecmds.c:18137 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "не можна одночасно відключити розділи, коли існує розділ за замовчуванням" -#: commands/tablecmds.c:18223 +#: commands/tablecmds.c:18249 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "секціоновану таблицю \"%s\" було видалено одночасно" -#: commands/tablecmds.c:18229 +#: commands/tablecmds.c:18255 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "розділ \"%s\" було видалено паралельно" -#: commands/tablecmds.c:18753 commands/tablecmds.c:18773 -#: commands/tablecmds.c:18793 commands/tablecmds.c:18812 -#: commands/tablecmds.c:18854 +#: commands/tablecmds.c:18787 commands/tablecmds.c:18807 +#: commands/tablecmds.c:18827 commands/tablecmds.c:18846 +#: commands/tablecmds.c:18888 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "неможливо підключити індекс \"%s\" в якості секції індексу \"%s\"" -#: commands/tablecmds.c:18756 +#: commands/tablecmds.c:18790 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "Індекс \"%s\" вже підключений до іншого індексу." -#: commands/tablecmds.c:18776 +#: commands/tablecmds.c:18810 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "Індекс \"%s\" не є індексом жодної секції таблиці \"%s\"." -#: commands/tablecmds.c:18796 +#: commands/tablecmds.c:18830 #, c-format msgid "The index definitions do not match." msgstr "Визначення індексів не співпадають." -#: commands/tablecmds.c:18815 +#: commands/tablecmds.c:18849 #, c-format msgid "The index \"%s\" belongs to a constraint in table \"%s\" but no constraint exists for index \"%s\"." msgstr "Індекс \"%s\" належить обмеженню в таблиці \"%s\", але обмеження для індексу \"%s\" не існує." -#: commands/tablecmds.c:18857 +#: commands/tablecmds.c:18891 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "До секції \"%s\" вже підключений інший індекс." -#: commands/tablecmds.c:19094 +#: commands/tablecmds.c:19128 #, c-format msgid "column data type %s does not support compression" msgstr "тип даних стовпця %s не підтримує стискання" -#: commands/tablecmds.c:19101 +#: commands/tablecmds.c:19135 #, c-format msgid "invalid compression method \"%s\"" msgstr "неприпустимий метод стискання \"%s\"" #: commands/tablespace.c:161 commands/tablespace.c:177 -#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1478 +#: commands/tablespace.c:594 commands/tablespace.c:639 replication/slot.c:1536 #: storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" @@ -10713,8 +10730,8 @@ msgid "directory \"%s\" already in use as a tablespace" msgstr "каталог \"%s\" вже використовується в якості табличного простору" #: commands/tablespace.c:768 commands/tablespace.c:781 -#: commands/tablespace.c:816 commands/tablespace.c:906 storage/file/fd.c:3169 -#: storage/file/fd.c:3560 +#: commands/tablespace.c:816 commands/tablespace.c:906 storage/file/fd.c:3160 +#: storage/file/fd.c:3551 #, c-format msgid "could not remove directory \"%s\": %m" msgstr "не вдалося видалити каталог \"%s\": %m" @@ -10945,59 +10962,64 @@ msgstr "тригер \"%s\" для таблиці \"%s\" не існує" msgid "permission denied: \"%s\" is a system trigger" msgstr "немає доступу: \"%s\" - системний тригер" -#: commands/trigger.c:2221 +#: commands/trigger.c:2223 #, c-format msgid "trigger function %u returned null value" msgstr "тригерна функція %u повернула значення null" -#: commands/trigger.c:2281 commands/trigger.c:2495 commands/trigger.c:2734 -#: commands/trigger.c:3056 +#: commands/trigger.c:2283 commands/trigger.c:2506 commands/trigger.c:2754 +#: commands/trigger.c:3086 #, c-format msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "Тригер BEFORE STATEMENT не може повертати значення" -#: commands/trigger.c:2355 +#: commands/trigger.c:2357 #, c-format msgid "moving row to another partition during a BEFORE FOR EACH ROW trigger is not supported" msgstr "переміщення рядка до іншої секції під час тригеру BEFORE FOR EACH ROW не підтримується" -#: commands/trigger.c:2356 +#: commands/trigger.c:2358 #, c-format msgid "Before executing trigger \"%s\", the row was to be in partition \"%s.%s\"." msgstr "Перед виконанням тригера \"%s\", рядок повинен був бути в секції \"%s.%s\"." -#: commands/trigger.c:3123 executor/nodeModifyTable.c:1314 -#: executor/nodeModifyTable.c:1388 executor/nodeModifyTable.c:1969 -#: executor/nodeModifyTable.c:2059 +#: commands/trigger.c:2387 commands/trigger.c:2627 commands/trigger.c:2941 +#, c-format +msgid "cannot collect transition tuples from child foreign tables" +msgstr "неможливо зібрати перехідні кортежі з дочірніх сторонніх таблиць" + +#: commands/trigger.c:3153 executor/nodeModifyTable.c:1334 +#: executor/nodeModifyTable.c:1408 executor/nodeModifyTable.c:1989 +#: executor/nodeModifyTable.c:2079 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Можливо, для поширення змін в інші рядки слід використати тригер AFTER замість тригера BEFORE." -#: commands/trigger.c:3152 executor/nodeLockRows.c:229 -#: executor/nodeLockRows.c:238 executor/nodeModifyTable.c:238 -#: executor/nodeModifyTable.c:1330 executor/nodeModifyTable.c:1986 -#: executor/nodeModifyTable.c:2232 +#: commands/trigger.c:3182 executor/nodeLockRows.c:229 +#: executor/nodeLockRows.c:238 executor/nodeModifyTable.c:258 +#: executor/nodeModifyTable.c:1350 executor/nodeModifyTable.c:2006 +#: executor/nodeModifyTable.c:2252 #, c-format msgid "could not serialize access due to concurrent update" msgstr "не вдалося серіалізувати доступ через паралельне оновлення" -#: commands/trigger.c:3160 executor/nodeModifyTable.c:1420 -#: executor/nodeModifyTable.c:2076 executor/nodeModifyTable.c:2256 +#: commands/trigger.c:3190 executor/nodeModifyTable.c:1440 +#: executor/nodeModifyTable.c:2096 executor/nodeModifyTable.c:2276 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "не вдалося серіалізувати доступ через паралельне видалення" -#: commands/trigger.c:4254 +#: commands/trigger.c:4284 #, c-format msgid "cannot fire deferred trigger within security-restricted operation" msgstr "не можна виконати відкладений тригер в межах операції з обмеженням по безпеці" -#: commands/trigger.c:5306 +#: commands/trigger.c:5336 #, c-format msgid "constraint \"%s\" is not deferrable" msgstr "обмеження \"%s\" не є відкладеним" -#: commands/trigger.c:5329 +#: commands/trigger.c:5359 #, c-format msgid "constraint \"%s\" does not exist" msgstr "обмеження \"%s\" не існує" @@ -11464,7 +11486,7 @@ msgid "permission denied to create role" msgstr "немає прав для створення ролі" #: commands/user.c:325 commands/user.c:1226 commands/user.c:1233 -#: utils/adt/acl.c:5248 utils/adt/acl.c:5254 gram.y:15260 gram.y:15305 +#: utils/adt/acl.c:5265 utils/adt/acl.c:5271 gram.y:15260 gram.y:15305 #, c-format msgid "role name \"%s\" is reserved" msgstr "ім'я ролі \"%s\" зарезервовано" @@ -11535,8 +11557,8 @@ msgstr "використати спеціальну роль у DROP ROLE не #: commands/user.c:1040 commands/user.c:1197 commands/variable.c:793 #: commands/variable.c:796 commands/variable.c:913 commands/variable.c:916 -#: utils/adt/acl.c:5103 utils/adt/acl.c:5151 utils/adt/acl.c:5179 -#: utils/adt/acl.c:5198 utils/init/miscinit.c:755 +#: utils/adt/acl.c:5120 utils/adt/acl.c:5168 utils/adt/acl.c:5196 +#: utils/adt/acl.c:5215 utils/init/miscinit.c:755 #, c-format msgid "role \"%s\" does not exist" msgstr "роль \"%s\" не існує" @@ -11641,134 +11663,134 @@ msgstr "роль \"%s\" вже є учасником ролі \"%s\"" msgid "role \"%s\" is not a member of role \"%s\"" msgstr "роль \"%s\" не є учасником ролі \"%s\"" -#: commands/vacuum.c:133 +#: commands/vacuum.c:134 #, c-format msgid "unrecognized ANALYZE option \"%s\"" msgstr "нерозпізнаний параметр ANALYZE \"%s\"" -#: commands/vacuum.c:171 +#: commands/vacuum.c:172 #, c-format msgid "parallel option requires a value between 0 and %d" msgstr "паралельний параметр потребує значення між 0 і %d" -#: commands/vacuum.c:183 +#: commands/vacuum.c:184 #, c-format msgid "parallel workers for vacuum must be between 0 and %d" msgstr "одночасні процеси для очищення повинні бути між 0 і %d" -#: commands/vacuum.c:200 +#: commands/vacuum.c:201 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "нерозпізнаний параметр VACUUM \"%s\"" -#: commands/vacuum.c:223 +#: commands/vacuum.c:224 #, c-format msgid "VACUUM FULL cannot be performed in parallel" msgstr "VACUUM FULL не можна виконати паралельно" -#: commands/vacuum.c:239 +#: commands/vacuum.c:240 #, c-format msgid "ANALYZE option must be specified when a column list is provided" msgstr "Якщо задається список стовпців, необхідно вказати параметр ANALYZE" -#: commands/vacuum.c:329 +#: commands/vacuum.c:330 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%s не можна виконати під час VACUUM або ANALYZE" -#: commands/vacuum.c:339 +#: commands/vacuum.c:340 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "Параметр VACUUM DISABLE_PAGE_SKIPPING не можна використовувати з FULL" -#: commands/vacuum.c:346 +#: commands/vacuum.c:347 #, c-format msgid "PROCESS_TOAST required with VACUUM FULL" msgstr "PROCESS_TOAST потребується з VACUUM FULL" -#: commands/vacuum.c:587 +#: commands/vacuum.c:597 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "\"%s\" пропускається --- лише суперкористувач може очистити" -#: commands/vacuum.c:591 +#: commands/vacuum.c:601 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "пропускається \"%s\" --- лише суперкористувач або власник БД може очистити" -#: commands/vacuum.c:595 +#: commands/vacuum.c:605 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "пропускається \"%s\" --- лише власник таблиці або бази даних може очистити" -#: commands/vacuum.c:610 +#: commands/vacuum.c:620 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" msgstr "пропуск об'єкта \"%s\" --- тільки суперкористувач може його аналізувати" -#: commands/vacuum.c:614 +#: commands/vacuum.c:624 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "пропуск об'єкта \"%s\" --- тільки суперкористувач або власник бази даних може його аналізувати" -#: commands/vacuum.c:618 +#: commands/vacuum.c:628 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "пропуск об'єкта \"%s\" --- тільки власник таблиці або бази даних може його аналізувати" -#: commands/vacuum.c:697 commands/vacuum.c:793 +#: commands/vacuum.c:707 commands/vacuum.c:803 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "очистка \"%s\" пропускається --- блокування недоступне" -#: commands/vacuum.c:702 +#: commands/vacuum.c:712 #, c-format msgid "skipping vacuum of \"%s\" --- relation no longer exists" msgstr "очистка \"%s\" пропускається --- це відношення більше не існує" -#: commands/vacuum.c:718 commands/vacuum.c:798 +#: commands/vacuum.c:728 commands/vacuum.c:808 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" msgstr "пропуск аналізу об'єкта \"%s\" --- блокування недоступне" -#: commands/vacuum.c:723 +#: commands/vacuum.c:733 #, c-format msgid "skipping analyze of \"%s\" --- relation no longer exists" msgstr "пропуск аналізу об'єкта\"%s\" --- відношення більше не існує" -#: commands/vacuum.c:1041 +#: commands/vacuum.c:1051 #, c-format msgid "oldest xmin is far in the past" msgstr "найстарший xmin далеко в минулому" -#: commands/vacuum.c:1042 +#: commands/vacuum.c:1052 #, c-format msgid "Close open transactions soon to avoid wraparound problems.\n" "You might also need to commit or roll back old prepared transactions, or drop stale replication slots." msgstr "Завершіть відкриті транзакції якнайшвидше, щоб уникнути проблеми зациклення.\n" "Можливо, вам також доведеться затвердити або відкотити старі підготовленні транзакції, або видалити застарілі слоти реплікації." -#: commands/vacuum.c:1083 +#: commands/vacuum.c:1093 #, c-format msgid "oldest multixact is far in the past" msgstr "найстарший multixact далеко в минулому" -#: commands/vacuum.c:1084 +#: commands/vacuum.c:1094 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "Завершіть відкриті транзакції з multixacts якнайшвидше, щоб уникнути проблеми зациклення." -#: commands/vacuum.c:1769 +#: commands/vacuum.c:1779 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "деякі бази даних не очищалися протягом більш ніж 2 мільярдів транзакцій" -#: commands/vacuum.c:1770 +#: commands/vacuum.c:1780 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "Можливо, ви вже втратили дані в результаті зациклення транзакцій." -#: commands/vacuum.c:1938 +#: commands/vacuum.c:1961 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "пропускається \"%s\" --- очищати не таблиці або спеціальні системні таблиці не можна" @@ -11983,8 +12005,8 @@ msgstr "не знайдено значення для параметру %d" #: executor/execExpr.c:636 executor/execExpr.c:643 executor/execExpr.c:649 #: executor/execExprInterp.c:4045 executor/execExprInterp.c:4062 #: executor/execExprInterp.c:4161 executor/nodeModifyTable.c:127 -#: executor/nodeModifyTable.c:138 executor/nodeModifyTable.c:155 -#: executor/nodeModifyTable.c:163 +#: executor/nodeModifyTable.c:146 executor/nodeModifyTable.c:163 +#: executor/nodeModifyTable.c:173 executor/nodeModifyTable.c:183 #, c-format msgid "table row type and query-specified row type do not match" msgstr "тип рядка таблиці відрізняється від типу рядка-результату запиту" @@ -11994,18 +12016,18 @@ msgstr "тип рядка таблиці відрізняється від ти msgid "Query has too many columns." msgstr "Запит повертає дуже багато стовпців." -#: executor/execExpr.c:644 executor/nodeModifyTable.c:156 +#: executor/execExpr.c:644 executor/nodeModifyTable.c:147 #, c-format msgid "Query provides a value for a dropped column at ordinal position %d." msgstr "Запит надає значення для видаленого стовпця з порядковим номером %d." #: executor/execExpr.c:650 executor/execExprInterp.c:4063 -#: executor/nodeModifyTable.c:139 +#: executor/nodeModifyTable.c:174 #, c-format msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "Таблиця має тип %s у порядковому розташуванні %d, але запит очікує %s." -#: executor/execExpr.c:1098 parser/parse_agg.c:828 +#: executor/execExpr.c:1098 parser/parse_agg.c:881 #, c-format msgid "window function calls cannot be nested" msgstr "виклики віконних функцій не можуть бути вкладеними" @@ -12170,165 +12192,165 @@ msgstr "Ключ %s конфліктує з існуючим ключем %s." msgid "Key conflicts with existing key." msgstr "Ключ конфліктує з існуючим ключем." -#: executor/execMain.c:1006 +#: executor/execMain.c:1016 #, c-format msgid "cannot change sequence \"%s\"" msgstr "послідовність \"%s\" не можна змінити" -#: executor/execMain.c:1012 +#: executor/execMain.c:1022 #, c-format msgid "cannot change TOAST relation \"%s\"" msgstr "TOAST-відношення \"%s\" не можна змінити" -#: executor/execMain.c:1030 rewrite/rewriteHandler.c:3145 -#: rewrite/rewriteHandler.c:3990 +#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:4010 #, c-format msgid "cannot insert into view \"%s\"" msgstr "вставити дані в подання \"%s\" не можна" -#: executor/execMain.c:1032 rewrite/rewriteHandler.c:3148 -#: rewrite/rewriteHandler.c:3993 +#: executor/execMain.c:1042 rewrite/rewriteHandler.c:3151 +#: rewrite/rewriteHandler.c:4013 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "Щоб подання допускало додавання даних, встановіть тригер INSTEAD OF INSERT або безумовне правило ON INSERT DO INSTEAD." -#: executor/execMain.c:1038 rewrite/rewriteHandler.c:3153 -#: rewrite/rewriteHandler.c:3998 +#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3156 +#: rewrite/rewriteHandler.c:4018 #, c-format msgid "cannot update view \"%s\"" msgstr "оновити подання \"%s\" не можна" -#: executor/execMain.c:1040 rewrite/rewriteHandler.c:3156 -#: rewrite/rewriteHandler.c:4001 +#: executor/execMain.c:1050 rewrite/rewriteHandler.c:3159 +#: rewrite/rewriteHandler.c:4021 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "Щоб подання допускало оновлення, встановіть тригер INSTEAD OF UPDATE або безумовне правило ON UPDATE DO INSTEAD." -#: executor/execMain.c:1046 rewrite/rewriteHandler.c:3161 -#: rewrite/rewriteHandler.c:4006 +#: executor/execMain.c:1056 rewrite/rewriteHandler.c:3164 +#: rewrite/rewriteHandler.c:4026 #, c-format msgid "cannot delete from view \"%s\"" msgstr "видалити дані з подання \"%s\" не можна" -#: executor/execMain.c:1048 rewrite/rewriteHandler.c:3164 -#: rewrite/rewriteHandler.c:4009 +#: executor/execMain.c:1058 rewrite/rewriteHandler.c:3167 +#: rewrite/rewriteHandler.c:4029 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "Щоб подання допускало видалення даних, встановіть тригер INSTEAD OF DELETE або безумновне правило ON DELETE DO INSTEAD." -#: executor/execMain.c:1059 +#: executor/execMain.c:1069 #, c-format msgid "cannot change materialized view \"%s\"" msgstr "змінити матеріалізоване подання \"%s\" не можна" -#: executor/execMain.c:1071 +#: executor/execMain.c:1081 #, c-format msgid "cannot insert into foreign table \"%s\"" msgstr "вставляти дані в зовнішню таблицю \"%s\" не можна" -#: executor/execMain.c:1077 +#: executor/execMain.c:1087 #, c-format msgid "foreign table \"%s\" does not allow inserts" msgstr "зовнішня таблиця \"%s\" не допускає додавання даних" -#: executor/execMain.c:1084 +#: executor/execMain.c:1094 #, c-format msgid "cannot update foreign table \"%s\"" msgstr "оновити зовнішню таблицю \"%s\" не можна" -#: executor/execMain.c:1090 +#: executor/execMain.c:1100 #, c-format msgid "foreign table \"%s\" does not allow updates" msgstr "зовнішня таблиця \"%s\" не дозволяє оновлення" -#: executor/execMain.c:1097 +#: executor/execMain.c:1107 #, c-format msgid "cannot delete from foreign table \"%s\"" msgstr "видаляти дані з зовнішньої таблиці \"%s\" не можна" -#: executor/execMain.c:1103 +#: executor/execMain.c:1113 #, c-format msgid "foreign table \"%s\" does not allow deletes" msgstr "зовнішня таблиця \"%s\" не дозволяє видалення даних" -#: executor/execMain.c:1114 +#: executor/execMain.c:1124 #, c-format msgid "cannot change relation \"%s\"" msgstr "відношення \"%s\" не можна змінити" -#: executor/execMain.c:1141 +#: executor/execMain.c:1161 #, c-format msgid "cannot lock rows in sequence \"%s\"" msgstr "блокувати рядки в послідовності \"%s\" не можна" -#: executor/execMain.c:1148 +#: executor/execMain.c:1168 #, c-format msgid "cannot lock rows in TOAST relation \"%s\"" msgstr "блокувати рядки в TOAST-відношенні \"%s\" не можна" -#: executor/execMain.c:1155 +#: executor/execMain.c:1175 #, c-format msgid "cannot lock rows in view \"%s\"" msgstr "блокувати рядки в поданні \"%s\" не можна" -#: executor/execMain.c:1163 +#: executor/execMain.c:1183 #, c-format msgid "cannot lock rows in materialized view \"%s\"" msgstr "блокувати рядки в матеріалізованому поданні \"%s\" не можна" -#: executor/execMain.c:1172 executor/execMain.c:2593 +#: executor/execMain.c:1192 executor/execMain.c:2613 #: executor/nodeLockRows.c:136 #, c-format msgid "cannot lock rows in foreign table \"%s\"" msgstr "блокувати рядки в зовнішній таблиці \"%s\" не можна" -#: executor/execMain.c:1178 +#: executor/execMain.c:1198 #, c-format msgid "cannot lock rows in relation \"%s\"" msgstr "блокувати рядки у відношенні \"%s\" не можна" -#: executor/execMain.c:1807 +#: executor/execMain.c:1827 #, c-format msgid "new row for relation \"%s\" violates partition constraint" msgstr "новий рядок для відношення \"%s\" порушує обмеження секції" -#: executor/execMain.c:1809 executor/execMain.c:1892 executor/execMain.c:1942 -#: executor/execMain.c:2051 +#: executor/execMain.c:1829 executor/execMain.c:1912 executor/execMain.c:1962 +#: executor/execMain.c:2071 #, c-format msgid "Failing row contains %s." msgstr "Помилковий рядок містить %s." -#: executor/execMain.c:1889 +#: executor/execMain.c:1909 #, c-format msgid "null value in column \"%s\" of relation \"%s\" violates not-null constraint" msgstr "null значення в стовпці \"%s\" відношення \"%s\" порушує not-null обмеження" -#: executor/execMain.c:1940 +#: executor/execMain.c:1960 #, c-format msgid "new row for relation \"%s\" violates check constraint \"%s\"" msgstr "новий рядок для відношення \"%s\" порушує перевірне обмеження перевірку \"%s\"" -#: executor/execMain.c:2049 +#: executor/execMain.c:2069 #, c-format msgid "new row violates check option for view \"%s\"" msgstr "новий рядок порушує параметр перевірки для подання \"%s\"" -#: executor/execMain.c:2059 +#: executor/execMain.c:2079 #, c-format msgid "new row violates row-level security policy \"%s\" for table \"%s\"" msgstr "новий рядок порушує політику захисту на рівні рядків \"%s\" для таблиці \"%s\"" -#: executor/execMain.c:2064 +#: executor/execMain.c:2084 #, c-format msgid "new row violates row-level security policy for table \"%s\"" msgstr "новий рядок порушує політику захисту на рівні рядків для таблиці \"%s\"" -#: executor/execMain.c:2071 +#: executor/execMain.c:2091 #, c-format msgid "new row violates row-level security policy \"%s\" (USING expression) for table \"%s\"" msgstr "новий рядок порушує політику захисту на рівні рядків \"%s\" (вираз USING) для таблиці \"%s\"" -#: executor/execMain.c:2076 +#: executor/execMain.c:2096 #, c-format msgid "new row violates row-level security policy (USING expression) for table \"%s\"" msgstr "новий рядок порушує політику захисту на рівні рядків (вираз USING) для таблиці \"%s\"" @@ -12358,7 +12380,7 @@ msgstr "паралельне оновлення, триває повторна msgid "concurrent delete, retrying" msgstr "паралельне видалення, триває повторна спроба" -#: executor/execReplication.c:277 parser/parse_cte.c:301 +#: executor/execReplication.c:277 parser/parse_cte.c:302 #: parser/parse_oper.c:233 utils/adt/array_userfuncs.c:724 #: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3709 #: utils/adt/arrayfuncs.c:4263 utils/adt/arrayfuncs.c:6257 @@ -12546,7 +12568,7 @@ msgstr "для SQL функцій тип повернення %s не підтр msgid "unexpected EOF for tape %d: requested %zu bytes, read %zu bytes" msgstr "неочікуваний обрив для стрічки %d: запитано %zu байт, прочитано %zu байт" -#: executor/nodeAgg.c:3979 parser/parse_agg.c:670 parser/parse_agg.c:698 +#: executor/nodeAgg.c:3979 parser/parse_agg.c:677 parser/parse_agg.c:720 #, c-format msgid "aggregate function calls cannot be nested" msgstr "виклики агрегатних функцій не можуть бути вкладеними" @@ -12598,30 +12620,35 @@ msgstr "FULL JOIN підтримується лише з умовами, які #: executor/nodeModifyTable.c:164 #, c-format +msgid "Query provides a value for a generated column at ordinal position %d." +msgstr "Запит надає значення для згенерованого стовпця з порядковим номером %d." + +#: executor/nodeModifyTable.c:184 +#, c-format msgid "Query has too few columns." msgstr "Запит повертає дуже мало стовпців." -#: executor/nodeModifyTable.c:1313 executor/nodeModifyTable.c:1387 +#: executor/nodeModifyTable.c:1333 executor/nodeModifyTable.c:1407 #, c-format msgid "tuple to be deleted was already modified by an operation triggered by the current command" msgstr "кортеж, який підлягає видаленню, вже змінений в операції, яка викликана поточною командою" -#: executor/nodeModifyTable.c:1591 +#: executor/nodeModifyTable.c:1611 #, c-format msgid "invalid ON UPDATE specification" msgstr "неприпустима специфікація ON UPDATE" -#: executor/nodeModifyTable.c:1592 +#: executor/nodeModifyTable.c:1612 #, c-format msgid "The result tuple would appear in a different partition than the original tuple." msgstr "Результуючий кортеж з'явиться в іншій секції в порівнянні з оригінальним кортежем." -#: executor/nodeModifyTable.c:2211 +#: executor/nodeModifyTable.c:2231 #, c-format msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" msgstr "Команда ON CONFLICT DO UPDATE не може змінювати рядок вдруге" -#: executor/nodeModifyTable.c:2212 +#: executor/nodeModifyTable.c:2232 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." msgstr "Переконайтеся, що немає рядків для вставки з тією ж командою з дуплікованими обмежувальними значеннями." @@ -12636,8 +12663,8 @@ msgstr "Параметр TABLESAMPLE не може бути null" msgid "TABLESAMPLE REPEATABLE parameter cannot be null" msgstr "Параметр TABLESAMPLE REPEATABLE не може бути null" -#: executor/nodeSubplan.c:325 executor/nodeSubplan.c:351 -#: executor/nodeSubplan.c:405 executor/nodeSubplan.c:1174 +#: executor/nodeSubplan.c:306 executor/nodeSubplan.c:332 +#: executor/nodeSubplan.c:386 executor/nodeSubplan.c:1158 #, c-format msgid "more than one row returned by a subquery used as an expression" msgstr "підзапит, використаний в якості вираження, повернув більше ніж один рядок" @@ -12743,7 +12770,7 @@ msgstr "неможливо відкрити запит %s як курсор" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE не підтримується" -#: executor/spi.c:1730 parser/analyze.c:2864 +#: executor/spi.c:1730 parser/analyze.c:2865 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Курсори з прокручуванням повинні бути READ ONLY." @@ -12784,7 +12811,7 @@ msgstr "не вдалося передати кортеж у чергу в сп msgid "user mapping not found for \"%s\"" msgstr "зіставлення користувача \"%s\" не знайдено" -#: foreign/foreign.c:331 optimizer/plan/createplan.c:7047 +#: foreign/foreign.c:331 optimizer/plan/createplan.c:7049 #: optimizer/util/plancat.c:474 #, c-format msgid "access to non-system foreign table is restricted" @@ -12961,428 +12988,428 @@ msgstr "Неправильне підтвердження в останньом msgid "Garbage found at the end of client-final-message." msgstr "Сміття знайдено в кінці останнього повідомлення клієнта." -#: libpq/auth.c:284 +#: libpq/auth.c:292 #, c-format msgid "authentication failed for user \"%s\": host rejected" msgstr "користувач \"%s\" не пройшов автентифікацію: відхилений хост" -#: libpq/auth.c:287 +#: libpq/auth.c:295 #, c-format msgid "\"trust\" authentication failed for user \"%s\"" msgstr "користувач \"%s\" не пройшов автентифікацію \"trust\"" -#: libpq/auth.c:290 +#: libpq/auth.c:298 #, c-format msgid "Ident authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію Ident" -#: libpq/auth.c:293 +#: libpq/auth.c:301 #, c-format msgid "Peer authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію Peer" -#: libpq/auth.c:298 +#: libpq/auth.c:306 #, c-format msgid "password authentication failed for user \"%s\"" msgstr "користувач \"%s\" не пройшов автентифікацію за допомогою пароля" -#: libpq/auth.c:303 +#: libpq/auth.c:311 #, c-format msgid "GSSAPI authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію GSSAPI" -#: libpq/auth.c:306 +#: libpq/auth.c:314 #, c-format msgid "SSPI authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію SSPI" -#: libpq/auth.c:309 +#: libpq/auth.c:317 #, c-format msgid "PAM authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію PAM" -#: libpq/auth.c:312 +#: libpq/auth.c:320 #, c-format msgid "BSD authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію BSD" -#: libpq/auth.c:315 +#: libpq/auth.c:323 #, c-format msgid "LDAP authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію LDAP" -#: libpq/auth.c:318 +#: libpq/auth.c:326 #, c-format msgid "certificate authentication failed for user \"%s\"" msgstr "користувач \"%s\" не пройшов автентифікацію за сертифікатом" -#: libpq/auth.c:321 +#: libpq/auth.c:329 #, c-format msgid "RADIUS authentication failed for user \"%s\"" msgstr "Користувач \"%s\" не пройшов автентифікацію RADIUS" -#: libpq/auth.c:324 +#: libpq/auth.c:332 #, c-format msgid "authentication failed for user \"%s\": invalid authentication method" msgstr "користувач \"%s\" не пройшов автентифікацію: неприпустимий метод автентифікації" -#: libpq/auth.c:328 +#: libpq/auth.c:336 #, c-format msgid "Connection matched pg_hba.conf line %d: \"%s\"" msgstr "З'єднання відповідає рядку %d в pg_hba.conf: \"%s\"" -#: libpq/auth.c:371 +#: libpq/auth.c:379 #, c-format msgid "authentication identifier set more than once" msgstr "ідентифікатор автентифікації встановлено більш ніж один раз" -#: libpq/auth.c:372 +#: libpq/auth.c:380 #, c-format msgid "previous identifier: \"%s\"; new identifier: \"%s\"" msgstr "попередній ідентифікатор: \"%s\"; новий ідентифікатор: \"%s\"" -#: libpq/auth.c:381 +#: libpq/auth.c:389 #, c-format msgid "connection authenticated: identity=\"%s\" method=%s (%s:%d)" msgstr "підключення автентифіковано: ідентифікатор=\"%s\" метод=%s (%s:%d)" -#: libpq/auth.c:420 +#: libpq/auth.c:428 #, c-format msgid "client certificates can only be checked if a root certificate store is available" msgstr "сертифікати клієнтів можуть перевірятися, лише якщо доступне сховище кореневих сертифікатів" -#: libpq/auth.c:431 +#: libpq/auth.c:439 #, c-format msgid "connection requires a valid client certificate" msgstr "підключення потребує припустимий сертифікат клієнта" -#: libpq/auth.c:462 libpq/auth.c:508 +#: libpq/auth.c:470 libpq/auth.c:516 msgid "GSS encryption" msgstr "Шифрування GSS" -#: libpq/auth.c:465 libpq/auth.c:511 +#: libpq/auth.c:473 libpq/auth.c:519 msgid "SSL encryption" msgstr "Шифрування SSL" -#: libpq/auth.c:467 libpq/auth.c:513 +#: libpq/auth.c:475 libpq/auth.c:521 msgid "no encryption" msgstr "без шифрування" #. translator: last %s describes encryption state -#: libpq/auth.c:473 +#: libpq/auth.c:481 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" msgstr "pg_hba.conf відхиляє підключення реплікації для хосту \"%s\", користувача \"%s\", %s" #. translator: last %s describes encryption state -#: libpq/auth.c:480 +#: libpq/auth.c:488 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "pg_hba.conf відхиляє підключення для хосту \"%s\", користувача \"%s\", бази даних \"%s\", %s" -#: libpq/auth.c:518 +#: libpq/auth.c:526 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup matches." msgstr "IP-адреса клієнта дозволяється в \"%s\", відповідає прямому перетворенню." -#: libpq/auth.c:521 +#: libpq/auth.c:529 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup not checked." msgstr "IP-адреса клієнта дозволяється в \"%s\", пряме перетворення не перевірялося." -#: libpq/auth.c:524 +#: libpq/auth.c:532 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup does not match." msgstr "IP-адреса клієнта дозволяється в \"%s\", не відповідає прямому перетворенню." -#: libpq/auth.c:527 +#: libpq/auth.c:535 #, c-format msgid "Could not translate client host name \"%s\" to IP address: %s." msgstr "Перекласти ім'я клієнтського хосту \"%s\" в IP-адресу: %s, не вдалося." -#: libpq/auth.c:532 +#: libpq/auth.c:540 #, c-format msgid "Could not resolve client IP address to a host name: %s." msgstr "Отримати ім'я хосту з IP-адреси клієнта: %s, не вдалося." #. translator: last %s describes encryption state -#: libpq/auth.c:540 +#: libpq/auth.c:548 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" msgstr "в pg_hba.conf немає запису, що дозволяє підключення для реплікації з хосту \"%s\", користувача \"%s\", %s" #. translator: last %s describes encryption state -#: libpq/auth.c:548 +#: libpq/auth.c:556 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "в pg_hba.conf немає запису для хосту \"%s\", користувача \"%s\", бази даних \"%s\", %s" -#: libpq/auth.c:721 +#: libpq/auth.c:729 #, c-format msgid "expected password response, got message type %d" msgstr "очікувалася відповід з паролем, але отримано тип повідомлення %d" -#: libpq/auth.c:742 +#: libpq/auth.c:750 #, c-format msgid "invalid password packet size" msgstr "неприпустимий розмір пакету з паролем" -#: libpq/auth.c:760 +#: libpq/auth.c:768 #, c-format msgid "empty password returned by client" msgstr "клієнт повернув пустий пароль" -#: libpq/auth.c:885 libpq/hba.c:1366 +#: libpq/auth.c:893 libpq/hba.c:1366 #, c-format msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "Автентифікація MD5 не підтримується, коли увімкнуто режим \"db_user_namespace\"" -#: libpq/auth.c:891 +#: libpq/auth.c:899 #, c-format msgid "could not generate random MD5 salt" msgstr "не вдалося створити випадкову сіль для MD5" -#: libpq/auth.c:957 +#: libpq/auth.c:965 #, c-format msgid "expected SASL response, got message type %d" msgstr "очікувалася відповідь SASL, але отримано тип повідомлення %d" -#: libpq/auth.c:1086 libpq/be-secure-gssapi.c:535 +#: libpq/auth.c:1094 libpq/be-secure-gssapi.c:545 #, c-format msgid "could not set environment: %m" msgstr "не вдалося встановити середовище: %m" -#: libpq/auth.c:1122 +#: libpq/auth.c:1130 #, c-format msgid "expected GSS response, got message type %d" msgstr "очікувалася відповідь GSS, але отримано тип повідомлення %d" -#: libpq/auth.c:1182 +#: libpq/auth.c:1190 msgid "accepting GSS security context failed" msgstr "прийняти контекст безпеки GSS не вдалось" -#: libpq/auth.c:1223 +#: libpq/auth.c:1231 msgid "retrieving GSS user name failed" msgstr "отримання ім'я користувача GSS не виконано" -#: libpq/auth.c:1372 +#: libpq/auth.c:1380 msgid "could not acquire SSPI credentials" msgstr "не вдалось отримати облікові дані SSPI" -#: libpq/auth.c:1397 +#: libpq/auth.c:1405 #, c-format msgid "expected SSPI response, got message type %d" msgstr "очікувалась відповідь SSPI, але отримано тип повідомлення %d" -#: libpq/auth.c:1475 +#: libpq/auth.c:1483 msgid "could not accept SSPI security context" msgstr "прийняти контекст безпеки SSPI не вдалося" -#: libpq/auth.c:1537 +#: libpq/auth.c:1545 msgid "could not get token from SSPI security context" msgstr "не вдалося отримати маркер з контексту безпеки SSPI" -#: libpq/auth.c:1676 libpq/auth.c:1695 +#: libpq/auth.c:1684 libpq/auth.c:1703 #, c-format msgid "could not translate name" msgstr "не вдалося перекласти ім'я" -#: libpq/auth.c:1708 +#: libpq/auth.c:1716 #, c-format msgid "realm name too long" msgstr "ім'я області дуже довге" -#: libpq/auth.c:1723 +#: libpq/auth.c:1731 #, c-format msgid "translated account name too long" msgstr "ім'я перекладеного облікового запису дуже довге" -#: libpq/auth.c:1904 +#: libpq/auth.c:1912 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "не вдалося створити сокет для підключення до серверу Ident: %m" -#: libpq/auth.c:1919 +#: libpq/auth.c:1927 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "не вдалося прив'язатися до локальної адреси \"%s\": %m" -#: libpq/auth.c:1931 +#: libpq/auth.c:1939 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "не вдалося підключитися до Ident-серверу за адресою \"%s\", порт %s: %m" -#: libpq/auth.c:1953 +#: libpq/auth.c:1961 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "не вдалося надіслати запит до Ident -серверу за адресою \"%s\", порт %s: %m" -#: libpq/auth.c:1970 +#: libpq/auth.c:1978 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "не вдалося отримати відповідь від Ident-серверу за адресою \"%s\", порт %s: %m" -#: libpq/auth.c:1980 +#: libpq/auth.c:1988 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "неприпустимо форматована відповідь від Ident-серверу: \"%s\"" -#: libpq/auth.c:2033 +#: libpq/auth.c:2041 #, c-format msgid "peer authentication is not supported on this platform" msgstr "автентифікація peer не підтримується на цій платформі" -#: libpq/auth.c:2037 +#: libpq/auth.c:2045 #, c-format msgid "could not get peer credentials: %m" msgstr "не вдалося отримати облікові дані користувача через peer: %m" -#: libpq/auth.c:2049 +#: libpq/auth.c:2057 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "не вдалося знайти локального користувача за ідентифікатором (%ld): %s" -#: libpq/auth.c:2150 +#: libpq/auth.c:2158 #, c-format msgid "error from underlying PAM layer: %s" msgstr "помилка у нижчому шарі PAM: %s" -#: libpq/auth.c:2161 +#: libpq/auth.c:2169 #, c-format msgid "unsupported PAM conversation %d/\"%s\"" msgstr "непідтримувана розмова PAM %d/\"%s\"" -#: libpq/auth.c:2221 +#: libpq/auth.c:2229 #, c-format msgid "could not create PAM authenticator: %s" msgstr "не вдалося створити автентифікатор PAM: %s" -#: libpq/auth.c:2232 +#: libpq/auth.c:2240 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "помилка в pam_set_item(PAM_USER): %s" -#: libpq/auth.c:2264 +#: libpq/auth.c:2272 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "помилка в pam_set_item(PAM_RHOST): %s" -#: libpq/auth.c:2276 +#: libpq/auth.c:2284 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "помилка в pam_set_item(PAM_CONV): %s" -#: libpq/auth.c:2289 +#: libpq/auth.c:2297 #, c-format msgid "pam_authenticate failed: %s" msgstr "помилка в pam_authenticate: %sв" -#: libpq/auth.c:2302 +#: libpq/auth.c:2310 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "помилка в pam_acct_mgmt: %s" -#: libpq/auth.c:2313 +#: libpq/auth.c:2321 #, c-format msgid "could not release PAM authenticator: %s" msgstr "не вдалося вивільнити автентифікатор PAM: %s" -#: libpq/auth.c:2393 +#: libpq/auth.c:2401 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "не вдалося ініціалізувати протокол LDAP: код помилки %d" -#: libpq/auth.c:2430 +#: libpq/auth.c:2438 #, c-format msgid "could not extract domain name from ldapbasedn" msgstr "не вдалося отримати назву домена з ldapbasedn" -#: libpq/auth.c:2438 +#: libpq/auth.c:2446 #, c-format msgid "LDAP authentication could not find DNS SRV records for \"%s\"" msgstr "Автентифікація LDAP не змогла знайти записи DNS SRV для \"%s\"" -#: libpq/auth.c:2440 +#: libpq/auth.c:2448 #, c-format msgid "Set an LDAP server name explicitly." msgstr "Встановіть назву сервера LDAP, явно." -#: libpq/auth.c:2492 +#: libpq/auth.c:2500 #, c-format msgid "could not initialize LDAP: %s" msgstr "не вдалося ініціалізувати протокол LDAP: %s" -#: libpq/auth.c:2502 +#: libpq/auth.c:2510 #, c-format msgid "ldaps not supported with this LDAP library" msgstr "протокол ldaps з поточною бібліотекою LDAP не підтримується" -#: libpq/auth.c:2510 +#: libpq/auth.c:2518 #, c-format msgid "could not initialize LDAP: %m" msgstr "не вдалося ініціалізувати протокол LDAP: %m" -#: libpq/auth.c:2520 +#: libpq/auth.c:2528 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "не вдалося встановити версію протоколу LDAP: %s" -#: libpq/auth.c:2560 +#: libpq/auth.c:2568 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "не вдалося завантажити функцію _ldap_start_tls_sA in wldap32.dll" -#: libpq/auth.c:2561 +#: libpq/auth.c:2569 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "Протокол LDAP через протокол SSL не підтримується на цій платформі." -#: libpq/auth.c:2577 +#: libpq/auth.c:2585 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "не вдалося почати сеанс протоколу LDAP TLS: %s" -#: libpq/auth.c:2648 +#: libpq/auth.c:2656 #, c-format msgid "LDAP server not specified, and no ldapbasedn" msgstr "Сервер LDAP не вказаний, і не ldapbasedn" -#: libpq/auth.c:2655 +#: libpq/auth.c:2663 #, c-format msgid "LDAP server not specified" msgstr "LDAP-сервер не вказаний" -#: libpq/auth.c:2717 +#: libpq/auth.c:2725 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "неприпустимий символ в імені користувача для автентифікації LDAP" -#: libpq/auth.c:2734 +#: libpq/auth.c:2742 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "не вдалося виконати початкову прив'язку LDAP для ldapbinddn \"%s\" на сервері \"%s\": %s" -#: libpq/auth.c:2763 +#: libpq/auth.c:2771 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "не вдалося виконати LDAP-пошук за фільтром \"%s\" на сервері \"%s\": %s" -#: libpq/auth.c:2777 +#: libpq/auth.c:2785 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "LDAP-користувач \"%s\" не існує" -#: libpq/auth.c:2778 +#: libpq/auth.c:2786 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-пошук за фільтром \"%s\" на сервері \"%s\" не повернув записів." -#: libpq/auth.c:2782 +#: libpq/auth.c:2790 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "LDAP-користувач \"%s\" не унікальний" -#: libpq/auth.c:2783 +#: libpq/auth.c:2791 #, 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." @@ -13391,137 +13418,137 @@ msgstr[1] "LDAP-пошук за фільтром \"%s\" на сервері \"%s msgstr[2] "LDAP-пошук за фільтром \"%s\" на сервері \"%s\" повернув %d записів." msgstr[3] "LDAP-пошук за фільтром \"%s\" на сервері \"%s\" повернув %d записів." -#: libpq/auth.c:2803 +#: libpq/auth.c:2811 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "не вдалося отримати dn для першого результату, що відповідає \"%s\" на сервері \"%s\": %s" -#: libpq/auth.c:2824 +#: libpq/auth.c:2832 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\"" msgstr "не вдалося відв'язатись після пошуку користувача \"%s\" на сервері \"%s\"" -#: libpq/auth.c:2855 +#: libpq/auth.c:2863 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "Помилка під час реєстрації в протоколі LDAP користувача \"%s\" на сервері \"%s\": %s" -#: libpq/auth.c:2887 +#: libpq/auth.c:2895 #, c-format msgid "LDAP diagnostics: %s" msgstr "Діагностика LDAP: %s" -#: libpq/auth.c:2925 +#: libpq/auth.c:2933 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "помилка автентифікації сертифіката для користувача \"%s\": сертифікат клієнта не містить імені користувача" -#: libpq/auth.c:2946 +#: libpq/auth.c:2954 #, c-format msgid "certificate authentication failed for user \"%s\": unable to retrieve subject DN" msgstr "помилка автентифікації сертифікату для користувача \"%s\": не вдалося отримати DN суб'єкта" -#: libpq/auth.c:2969 +#: libpq/auth.c:2977 #, c-format msgid "certificate validation (clientcert=verify-full) failed for user \"%s\": DN mismatch" msgstr "помилка перевірки сертифікату (clientcert=verify-full) для користувача \"%s\": DN невідповідність" -#: libpq/auth.c:2974 +#: libpq/auth.c:2982 #, c-format msgid "certificate validation (clientcert=verify-full) failed for user \"%s\": CN mismatch" msgstr "помилка перевірки сертифікату (clientcert=verify-full) для користувача \"%s\": CN невідповідність" -#: libpq/auth.c:3076 +#: libpq/auth.c:3084 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-сервер не вказаний" -#: libpq/auth.c:3083 +#: libpq/auth.c:3091 #, c-format msgid "RADIUS secret not specified" msgstr "Секрет RADIUS не вказаний" -#: libpq/auth.c:3097 +#: libpq/auth.c:3105 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "Автентифікація RADIUS не підтримує паролі довші ніж %d символів" -#: libpq/auth.c:3204 libpq/hba.c:2008 +#: libpq/auth.c:3212 libpq/hba.c:2008 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "не вдалося перетворити ім'я серверу RADIUS \"%s\" в адресу: %s" -#: libpq/auth.c:3218 +#: libpq/auth.c:3226 #, c-format msgid "could not generate random encryption vector" msgstr "не вдалося створити випадковий вектор шифрування" -#: libpq/auth.c:3252 +#: libpq/auth.c:3260 #, c-format msgid "could not perform MD5 encryption of password" msgstr "не вдалося виконати MD5 шифрування паролю" -#: libpq/auth.c:3278 +#: libpq/auth.c:3286 #, c-format msgid "could not create RADIUS socket: %m" msgstr "не вдалося створити сокет RADIUS: %m" -#: libpq/auth.c:3300 +#: libpq/auth.c:3308 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "не вдалося прив'язатися до локального сокету RADIUS: %m" -#: libpq/auth.c:3310 +#: libpq/auth.c:3318 #, c-format msgid "could not send RADIUS packet: %m" msgstr "не вдалося відправити пакет RADIUS: %m" -#: libpq/auth.c:3343 libpq/auth.c:3369 +#: libpq/auth.c:3351 libpq/auth.c:3377 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "перевищено час очікування відповіді RADIUS від %s" -#: libpq/auth.c:3362 +#: libpq/auth.c:3370 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "не вдалося перевірити статус сокету RADIUS: %m" -#: libpq/auth.c:3392 +#: libpq/auth.c:3400 #, c-format msgid "could not read RADIUS response: %m" msgstr "не вдалося прочитати відповідь RADIUS: %m" -#: libpq/auth.c:3405 libpq/auth.c:3409 +#: libpq/auth.c:3413 libpq/auth.c:3417 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "Відповідь RADIUS від %s була відправлена з неправильного порту: %d" -#: libpq/auth.c:3418 +#: libpq/auth.c:3426 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "Занадто коротка відповідь RADIUS від %s: %d" -#: libpq/auth.c:3425 +#: libpq/auth.c:3433 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "У відповіді RADIUS від %s покшоджена довжина: %d (фактична довжина %d)" -#: libpq/auth.c:3433 +#: libpq/auth.c:3441 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "Прийшла відповідь RADIUS від %s на інший запит: %d (очікувалася %d)" -#: libpq/auth.c:3458 +#: libpq/auth.c:3466 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "не вдалося виконати шифрування MD5 для отриманого пакету" -#: libpq/auth.c:3467 +#: libpq/auth.c:3475 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "Відповідь RADIUS від %s має неправильний підпис MD5" -#: libpq/auth.c:3485 +#: libpq/auth.c:3493 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "Відповідь RADIUS від %s має неприпустимий код (%d) для користувача \"%s\"" @@ -13626,44 +13653,39 @@ msgstr "до файлу закритого ключа \"%s\" мають дост msgid "File must have permissions u=rw (0600) or less if owned by the database user, or permissions u=rw,g=r (0640) or less if owned by root." msgstr "Файл повинен мати дозволи u=rw (0600) або менше, якщо він належить користувачу бази даних, або u=rw,g=r (0640) або менше, якщо він належить кореню." -#: libpq/be-secure-gssapi.c:201 +#: libpq/be-secure-gssapi.c:208 msgid "GSSAPI wrap error" msgstr "помилка при згортанні GSSAPI" -#: libpq/be-secure-gssapi.c:208 +#: libpq/be-secure-gssapi.c:215 #, c-format msgid "outgoing GSSAPI message would not use confidentiality" msgstr "вихідне повідомлення GSSAPI не буде використовувати конфіденційність" -#: libpq/be-secure-gssapi.c:215 libpq/be-secure-gssapi.c:622 +#: libpq/be-secure-gssapi.c:222 libpq/be-secure-gssapi.c:632 #, c-format msgid "server tried to send oversize GSSAPI packet (%zu > %zu)" msgstr "сервер намагався надіслати переповнений пакет GSSAPI (%zu > %zu)" -#: libpq/be-secure-gssapi.c:351 +#: libpq/be-secure-gssapi.c:358 libpq/be-secure-gssapi.c:580 #, c-format msgid "oversize GSSAPI packet sent by the client (%zu > %zu)" msgstr "переповнений пакет GSSAPI, надісланий клієнтом (%zu > %zu)" -#: libpq/be-secure-gssapi.c:389 +#: libpq/be-secure-gssapi.c:396 msgid "GSSAPI unwrap error" msgstr "помилка при розгортанні GSSAPI" -#: libpq/be-secure-gssapi.c:396 +#: libpq/be-secure-gssapi.c:403 #, c-format msgid "incoming GSSAPI message did not use confidentiality" msgstr "вхідне повідомлення GSSAPI не використовувало конфіденційність" -#: libpq/be-secure-gssapi.c:570 -#, c-format -msgid "oversize GSSAPI packet sent by the client (%zu > %d)" -msgstr "переповнений пакет GSSAPI, надісланий клієнтом (%zu > %d)" - -#: libpq/be-secure-gssapi.c:594 +#: libpq/be-secure-gssapi.c:604 msgid "could not accept GSSAPI security context" msgstr "не вдалося прийняти контекст безпеки GSSAPI" -#: libpq/be-secure-gssapi.c:689 +#: libpq/be-secure-gssapi.c:716 msgid "GSSAPI size check error" msgstr "помилка перевірки розміру GSSAPI" @@ -14748,7 +14770,7 @@ msgstr "розширений тип вузла \"%s\" вже існує" msgid "ExtensibleNodeMethods \"%s\" was not registered" msgstr "Методи розширеного вузла \"%s\" не зареєстровані" -#: nodes/makefuncs.c:150 nodes/makefuncs.c:176 statistics/extended_stats.c:2346 +#: nodes/makefuncs.c:150 nodes/makefuncs.c:176 statistics/extended_stats.c:2326 #, c-format msgid "relation \"%s\" does not have a composite type" msgstr "відношення \"%s\" не має складеного типу" @@ -14783,44 +14805,44 @@ msgid "%s cannot be applied to the nullable side of an outer join" msgstr "%s не можна застосовувати до нульової сторони зовнішнього з’єднання" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1316 parser/analyze.c:1720 parser/analyze.c:1976 -#: parser/analyze.c:3155 +#: optimizer/plan/planner.c:1346 parser/analyze.c:1720 parser/analyze.c:1976 +#: parser/analyze.c:3156 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s несумісно з UNION/INTERSECT/EXCEPT" -#: optimizer/plan/planner.c:1973 optimizer/plan/planner.c:3630 +#: optimizer/plan/planner.c:2003 optimizer/plan/planner.c:3660 #, c-format msgid "could not implement GROUP BY" msgstr "не вдалося реалізувати GROUP BY" -#: optimizer/plan/planner.c:1974 optimizer/plan/planner.c:3631 -#: optimizer/plan/planner.c:4388 optimizer/prep/prepunion.c:1045 +#: optimizer/plan/planner.c:2004 optimizer/plan/planner.c:3661 +#: optimizer/plan/planner.c:4418 optimizer/prep/prepunion.c:1045 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "Деякі типи даних підтримують лише хешування, в той час як інші підтримують тільки сортування." -#: optimizer/plan/planner.c:4387 +#: optimizer/plan/planner.c:4417 #, c-format msgid "could not implement DISTINCT" msgstr "не вдалося реалізувати DISTINCT" -#: optimizer/plan/planner.c:5235 +#: optimizer/plan/planner.c:5265 #, c-format msgid "could not implement window PARTITION BY" msgstr "не вдалося реалізувати PARTITION BY для вікна" -#: optimizer/plan/planner.c:5236 +#: optimizer/plan/planner.c:5266 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "Стовпці, що розділяють вікна, повинні мати типи даних з можливістю сортування." -#: optimizer/plan/planner.c:5240 +#: optimizer/plan/planner.c:5270 #, c-format msgid "could not implement window ORDER BY" msgstr "не вдалося реалізувати ORDER BY для вікна" -#: optimizer/plan/planner.c:5241 +#: optimizer/plan/planner.c:5271 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "Стовпці, що впорядковують вікна, повинні мати типи даних з можливістю сортування." @@ -14861,22 +14883,22 @@ msgstr "неможливо відкрити відношення \"%s\"" msgid "cannot access temporary or unlogged relations during recovery" msgstr "отримати доступ до тимчасових або нежурнальованих відношень під час відновлення не можна" -#: optimizer/util/plancat.c:702 +#: optimizer/util/plancat.c:707 #, c-format msgid "whole row unique index inference specifications are not supported" msgstr "вказівки з посиланням на весь рядок для вибору унікального індексу не підтримуються" -#: optimizer/util/plancat.c:719 +#: optimizer/util/plancat.c:724 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" msgstr "з обмеженням в реченні ON CONFLICT не пов'язаний індекс" -#: optimizer/util/plancat.c:769 +#: optimizer/util/plancat.c:774 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" msgstr "ON CONFLICT DO UPDATE не підтримується з обмеженнями-винятками" -#: optimizer/util/plancat.c:879 +#: optimizer/util/plancat.c:884 #, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" msgstr "немає унікального обмеження або обмеження-виключення відповідного специфікації ON CONFLICT" @@ -14907,7 +14929,7 @@ msgid "SELECT ... INTO is not allowed here" msgstr "SELECT ... INTO не дозволяється тут" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1623 parser/analyze.c:3366 +#: parser/analyze.c:1623 parser/analyze.c:3367 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s не можна застосовувати до VALUES" @@ -14962,455 +14984,465 @@ msgid "variable \"%s\" is of type %s but expression is of type %s" msgstr "змінна \"%s\" має тип %s, але вираз має тип %s" #. translator: %s is a SQL keyword -#: parser/analyze.c:2814 parser/analyze.c:2822 +#: parser/analyze.c:2815 parser/analyze.c:2823 #, c-format msgid "cannot specify both %s and %s" msgstr "не можна вказати як %s, так і %s" -#: parser/analyze.c:2842 +#: parser/analyze.c:2843 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSOR не повинен містити операторів, які змінюють дані в WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2850 +#: parser/analyze.c:2851 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s не підтримується" -#: parser/analyze.c:2853 +#: parser/analyze.c:2854 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "Курсори, що зберігаються повинні бути READ ONLY." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2861 +#: parser/analyze.c:2862 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %s не підтримується" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2872 +#: parser/analyze.c:2873 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not valid" msgstr "DECLARE INSENSITIVE CURSOR ... %s не є припустимим" -#: parser/analyze.c:2875 +#: parser/analyze.c:2876 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "Нечутливі курсори повинні бути READ ONLY." -#: parser/analyze.c:2941 +#: parser/analyze.c:2942 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "в матеріалізованих поданнях не повинні використовуватись оператори, які змінюють дані в WITH" -#: parser/analyze.c:2951 +#: parser/analyze.c:2952 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "в матеріалізованих поданнях не повинні використовуватись тимчасові таблиці або подання" -#: parser/analyze.c:2961 +#: parser/analyze.c:2962 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "визначати матеріалізовані подання з зв'язаними параметрами не можна" -#: parser/analyze.c:2973 +#: parser/analyze.c:2974 #, c-format msgid "materialized views cannot be unlogged" msgstr "матеріалізовані подання не можуть бути нежурнальованими" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3162 +#: parser/analyze.c:3163 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "%s не дозволяється з реченням DISTINCT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3169 +#: parser/analyze.c:3170 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "%s не дозволяється з реченням GROUP BY" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3176 +#: parser/analyze.c:3177 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "%s не дозволяється з реченням HAVING" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3183 +#: parser/analyze.c:3184 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "%s не дозволяється з агрегатними функціями" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3190 +#: parser/analyze.c:3191 #, c-format msgid "%s is not allowed with window functions" msgstr "%s не дозволяється з віконними функціями" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3197 +#: parser/analyze.c:3198 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "%s не дозволяється з функціями, які повертають безлічі, в цільовому списку" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3289 +#: parser/analyze.c:3290 #, 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:3339 +#: parser/analyze.c:3340 #, 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:3348 +#: parser/analyze.c:3349 #, 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:3357 +#: parser/analyze.c:3358 #, 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:3375 +#: parser/analyze.c:3376 #, 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:3384 +#: parser/analyze.c:3385 #, 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:3404 +#: parser/analyze.c:3405 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "відношення \"%s\" в реченні %s не знайдено в реченні FROM" -#: parser/parse_agg.c:208 parser/parse_oper.c:227 +#: parser/parse_agg.c:211 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "для типу %s не вдалося визначити оператора сортування" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:213 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Агрегатним функціям з DISTINCT необхідно сортувати їх вхідні дані." -#: parser/parse_agg.c:268 +#: parser/parse_agg.c:271 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING повинно містити меньше, ніж 32 аргумента" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:375 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "агрегатні функції не дозволяються в умовах JOIN" -#: parser/parse_agg.c:373 +#: parser/parse_agg.c:377 msgid "grouping operations are not allowed in JOIN conditions" msgstr "операції групування не дозволяються в умовах JOIN" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:387 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "агрегатні функції не можна застосовувати в реченні FROM їх рівня запиту" -#: parser/parse_agg.c:385 +#: parser/parse_agg.c:389 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "операції групування не можна застосовувати в реченні FROM їх рівня запиту" -#: parser/parse_agg.c:390 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in functions in FROM" msgstr "агрегатні функції не можна застосовувати у функціях у FROM" -#: parser/parse_agg.c:392 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in functions in FROM" msgstr "операції групування не можна застосовувати у функціях у FROM" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:404 msgid "aggregate functions are not allowed in policy expressions" msgstr "агрегатні функції не можна застосовувати у виразах політики" -#: parser/parse_agg.c:402 +#: parser/parse_agg.c:406 msgid "grouping operations are not allowed in policy expressions" msgstr "операції групування не можна застосовувати у виразах політики" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:423 msgid "aggregate functions are not allowed in window RANGE" msgstr "агрегатні функції не можна застосовувати у вікні RANGE " -#: parser/parse_agg.c:421 +#: parser/parse_agg.c:425 msgid "grouping operations are not allowed in window RANGE" msgstr "операції групування не можна застосовувати у вікні RANGE" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:430 msgid "aggregate functions are not allowed in window ROWS" msgstr "агрегатні функції не можна застосовувати у вікні ROWS" -#: parser/parse_agg.c:428 +#: parser/parse_agg.c:432 msgid "grouping operations are not allowed in window ROWS" msgstr "операції групування не можна застосовувати у вікні ROWS" -#: parser/parse_agg.c:433 +#: parser/parse_agg.c:437 msgid "aggregate functions are not allowed in window GROUPS" msgstr "агрегатні функції не можна застосовувати у вікні GROUPS" -#: parser/parse_agg.c:435 +#: parser/parse_agg.c:439 msgid "grouping operations are not allowed in window GROUPS" msgstr "операції групування не можна застосовувати у вікні GROUPS" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:473 msgid "aggregate functions are not allowed in check constraints" msgstr "агрегатні функції не можна застосовувати в перевірці обмежень" -#: parser/parse_agg.c:471 +#: parser/parse_agg.c:475 msgid "grouping operations are not allowed in check constraints" msgstr "операції групування не можна застосовувати в перевірці обмежень" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:482 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "агрегатні функції не можна застосовувати у виразах DEFAULT" -#: parser/parse_agg.c:480 +#: parser/parse_agg.c:484 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "операції групування не можна застосовувати у виразах DEFAULT" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:489 msgid "aggregate functions are not allowed in index expressions" msgstr "агрегатні функції не можна застосовувати у виразах індексів" -#: parser/parse_agg.c:487 +#: parser/parse_agg.c:491 msgid "grouping operations are not allowed in index expressions" msgstr "операції групування не можна застосовувати у виразах індексів" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:496 msgid "aggregate functions are not allowed in index predicates" msgstr "агрегатні функції не можна застосовувати в предикатах індексів" -#: parser/parse_agg.c:494 +#: parser/parse_agg.c:498 msgid "grouping operations are not allowed in index predicates" msgstr "операції групування не можна застосовувати в предикатах індексів" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:503 msgid "aggregate functions are not allowed in statistics expressions" msgstr "агрегатні функції не можна застосовувати у виразах статистики" -#: parser/parse_agg.c:501 +#: parser/parse_agg.c:505 msgid "grouping operations are not allowed in statistics expressions" msgstr "операції групування не можна застосовувати у виразах статистики" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:510 msgid "aggregate functions are not allowed in transform expressions" msgstr "агрегатні функції не можна застосовувати у виразах перетворювання" -#: parser/parse_agg.c:508 +#: parser/parse_agg.c:512 msgid "grouping operations are not allowed in transform expressions" msgstr "операції групування не можна застосовувати у виразах перетворювання" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:517 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "агрегатні функції не можна застосовувати в параметрах EXECUTE" -#: parser/parse_agg.c:515 +#: parser/parse_agg.c:519 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "операції групування не можна застосовувати в параметрах EXECUTE" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:524 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "агрегатні функції не можна застосовувати в умовах для тригерів WHEN" -#: parser/parse_agg.c:522 +#: parser/parse_agg.c:526 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "операції групування не можна застосовувати в умовах для тригерів WHEN" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:531 msgid "aggregate functions are not allowed in partition bound" msgstr "агрегатні функції не можна застосовувати в границі секції" -#: parser/parse_agg.c:529 +#: parser/parse_agg.c:533 msgid "grouping operations are not allowed in partition bound" msgstr "операції групування не можна застосовувати в границі секції" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:538 msgid "aggregate functions are not allowed in partition key expressions" msgstr "агрегатні функції не можна застосовувати у виразах ключа секціонування" -#: parser/parse_agg.c:536 +#: parser/parse_agg.c:540 msgid "grouping operations are not allowed in partition key expressions" msgstr "операції групування не можна застосовувати у виразах ключа секціонування" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:546 msgid "aggregate functions are not allowed in column generation expressions" msgstr "агрегатні функції не можна застосовувати у виразах генерації стовпців" -#: parser/parse_agg.c:544 +#: parser/parse_agg.c:548 msgid "grouping operations are not allowed in column generation expressions" msgstr "операції групування не можна застосовувати у виразах генерації стовпців" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:554 msgid "aggregate functions are not allowed in CALL arguments" msgstr "агрегатні функції не можна застосовувати в аргументах CALL" -#: parser/parse_agg.c:552 +#: parser/parse_agg.c:556 msgid "grouping operations are not allowed in CALL arguments" msgstr "операції групування не можна застосовувати в аргументах CALL" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:562 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "агрегатні функції не можна застосовувати в умовах COPY FROM WHERE" -#: parser/parse_agg.c:560 +#: parser/parse_agg.c:564 msgid "grouping operations are not allowed in COPY FROM WHERE conditions" msgstr "операції групування не можна застосовувати в умовах COPY FROM WHERE" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:587 parser/parse_clause.c:1834 +#: parser/parse_agg.c:591 parser/parse_clause.c:1834 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "агрегатні функції не можна застосовувати в %s" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:590 +#: parser/parse_agg.c:594 #, c-format msgid "grouping operations are not allowed in %s" msgstr "операції групування не можна застосовувати в %s" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:690 parser/parse_agg.c:727 +#, c-format +msgid "outer-level aggregate cannot use a nested CTE" +msgstr "агрегатна функція зовнішнього рівня не може використовувати вкладений CTE" + +#: parser/parse_agg.c:691 parser/parse_agg.c:728 +#, c-format +msgid "CTE \"%s\" is below the aggregate's semantic level." +msgstr "CTE \"%s\" знаходиться нижче семантичного рівня агрегату." + +#: parser/parse_agg.c:713 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "агрегат зовнішнього рівня не може містити змінну нижчого рівня у своїх аргументах" -#: parser/parse_agg.c:769 +#: parser/parse_agg.c:798 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "виклики агрегатної функції не можуть містити викликів функції, що повертають множину" -#: parser/parse_agg.c:770 parser/parse_expr.c:1678 parser/parse_expr.c:2167 +#: parser/parse_agg.c:799 parser/parse_expr.c:1678 parser/parse_expr.c:2167 #: parser/parse_func.c:883 #, c-format msgid "You might be able to move the set-returning function into a LATERAL FROM item." msgstr "Можливо перемістити функцію, що повертає множину, в елемент LATERAL FROM." -#: parser/parse_agg.c:775 +#: parser/parse_agg.c:804 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "виклики агрегатних функцій не можуть містити виклики віконних функцій" -#: parser/parse_agg.c:854 +#: parser/parse_agg.c:907 msgid "window functions are not allowed in JOIN conditions" msgstr "віконні функції не можна застосовувати в умовах JOIN" -#: parser/parse_agg.c:861 +#: parser/parse_agg.c:914 msgid "window functions are not allowed in functions in FROM" msgstr "віконні функції не можна застосовувати у функціях в FROM" -#: parser/parse_agg.c:867 +#: parser/parse_agg.c:920 msgid "window functions are not allowed in policy expressions" msgstr "віконні функції не можна застосовувати у виразах політики" -#: parser/parse_agg.c:880 +#: parser/parse_agg.c:933 msgid "window functions are not allowed in window definitions" msgstr "віконні функції не можна застосовувати у визначенні вікна" -#: parser/parse_agg.c:912 +#: parser/parse_agg.c:965 msgid "window functions are not allowed in check constraints" msgstr "віконні функції не можна застосовувати в перевірках обмежень" -#: parser/parse_agg.c:916 +#: parser/parse_agg.c:969 msgid "window functions are not allowed in DEFAULT expressions" msgstr "віконні функції не можна застосовувати у виразах DEFAULT" -#: parser/parse_agg.c:919 +#: parser/parse_agg.c:972 msgid "window functions are not allowed in index expressions" msgstr "віконні функції не можна застосовувати у виразах індексів" -#: parser/parse_agg.c:922 +#: parser/parse_agg.c:975 msgid "window functions are not allowed in statistics expressions" msgstr "віконні функції не можна застосовувати у виразах статистики" -#: parser/parse_agg.c:925 +#: parser/parse_agg.c:978 msgid "window functions are not allowed in index predicates" msgstr "віконні функції не можна застосовувати в предикатах індексів" -#: parser/parse_agg.c:928 +#: parser/parse_agg.c:981 msgid "window functions are not allowed in transform expressions" msgstr "віконні функції не можна застосовувати у виразах перетворювання" -#: parser/parse_agg.c:931 +#: parser/parse_agg.c:984 msgid "window functions are not allowed in EXECUTE parameters" msgstr "віконні функції не можна застосовувати в параметрах EXECUTE" -#: parser/parse_agg.c:934 +#: parser/parse_agg.c:987 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "віконні функції не можна застосовувати в умовах WHEN для тригерів" -#: parser/parse_agg.c:937 +#: parser/parse_agg.c:990 msgid "window functions are not allowed in partition bound" msgstr "віконні функції не можна застосовувати в границі секції" -#: parser/parse_agg.c:940 +#: parser/parse_agg.c:993 msgid "window functions are not allowed in partition key expressions" msgstr "віконні функції не можна застосовувати у виразах ключа секціонування" -#: parser/parse_agg.c:943 +#: parser/parse_agg.c:996 msgid "window functions are not allowed in CALL arguments" msgstr "віконні функції не можна застосовувати в аргументах CALL" -#: parser/parse_agg.c:946 +#: parser/parse_agg.c:999 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "віконні функції не можна застосовувати в умовах COPY FROM WHERE" -#: parser/parse_agg.c:949 +#: parser/parse_agg.c:1002 msgid "window functions are not allowed in column generation expressions" msgstr "віконні функції не можна застосовувати у виразах генерації стовпців" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:972 parser/parse_clause.c:1843 +#: parser/parse_agg.c:1025 parser/parse_clause.c:1843 #, c-format msgid "window functions are not allowed in %s" msgstr "віконні функції не можна застосовувати в %s" -#: parser/parse_agg.c:1006 parser/parse_clause.c:2677 +#: parser/parse_agg.c:1059 parser/parse_clause.c:2677 #, c-format msgid "window \"%s\" does not exist" msgstr "вікно \"%s\" не існує" -#: parser/parse_agg.c:1090 +#: parser/parse_agg.c:1143 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "забагато наборів групування (максимум 4096)" -#: parser/parse_agg.c:1230 +#: parser/parse_agg.c:1283 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "агрегатні функції не дозволені у рекурсивному терміні рекурсивного запиту" -#: parser/parse_agg.c:1423 +#: parser/parse_agg.c:1476 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" msgstr "стовпець \"%s.%s\" повинен з'являтися у реченні Група BY або використовуватися в агрегатній функції" -#: parser/parse_agg.c:1426 +#: parser/parse_agg.c:1479 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Прямі аргументи сортувального агрегату можуть використовувати лише згруповані стовпці." -#: parser/parse_agg.c:1431 +#: parser/parse_agg.c:1484 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "вкладений запит використовує не згруповані стовпці \"%s.%s\" з зовнішнього запиту" -#: parser/parse_agg.c:1595 +#: parser/parse_agg.c:1648 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "аргументами групування мають бути вирази групування пов'язаного рівня запиту" @@ -15885,147 +15917,147 @@ msgstr "рекурсивне посилання на запит \"%s\" не по msgid "recursive reference to query \"%s\" must not appear within EXCEPT" msgstr "рекурсивне посилання на запит \"%s\" не повинне з'являтись в EXCEPT" -#: parser/parse_cte.c:136 +#: parser/parse_cte.c:137 #, c-format msgid "WITH query name \"%s\" specified more than once" msgstr "Ім’я запиту WITH \"%s\" вказано неодноразово" -#: parser/parse_cte.c:307 +#: parser/parse_cte.c:308 #, c-format msgid "could not identify an inequality operator for type %s" msgstr "не вдалося визначити оператора нерівності для типу %s" -#: parser/parse_cte.c:334 +#: parser/parse_cte.c:335 #, c-format msgid "WITH clause containing a data-modifying statement must be at the top level" msgstr "Речення WITH, яке містить оператор, що змінює дані, повинне бути на верхньому рівні" -#: parser/parse_cte.c:383 +#: parser/parse_cte.c:384 #, c-format msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall" msgstr "у рекурсивному запиті \"%s\" стовпець %d має тип %s у нерекурсивній частині, але загалом тип %s" -#: parser/parse_cte.c:389 +#: parser/parse_cte.c:390 #, c-format msgid "Cast the output of the non-recursive term to the correct type." msgstr "Приведіть результат нерекурсивної частини до правильного типу." -#: parser/parse_cte.c:394 +#: parser/parse_cte.c:395 #, c-format msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall" msgstr "у рекурсивному запиті \"%s\" стовпець %d має параметри сортування \"%s\" у нерекурсивній частині, але загалом параметри сортування \"%s\"" -#: parser/parse_cte.c:398 +#: parser/parse_cte.c:399 #, c-format msgid "Use the COLLATE clause to set the collation of the non-recursive term." msgstr "Використайте речення COLLATE, щоб встановити параметри сортування в нерекурсивній частині." -#: parser/parse_cte.c:419 +#: parser/parse_cte.c:420 #, c-format msgid "WITH query is not recursive" msgstr "Запит WITH не є рекурсивним" -#: parser/parse_cte.c:450 +#: parser/parse_cte.c:451 #, c-format msgid "with a SEARCH or CYCLE clause, the left side of the UNION must be a SELECT" msgstr "з реченням з SEARCH або CYCLE, ліва сторона UNION повинна бути SELECT" -#: parser/parse_cte.c:455 +#: parser/parse_cte.c:456 #, c-format msgid "with a SEARCH or CYCLE clause, the right side of the UNION must be a SELECT" msgstr "з реченням з SEARCH або CYCLE, права сторона UNION повинна бути SELECT" -#: parser/parse_cte.c:470 +#: parser/parse_cte.c:471 #, c-format msgid "search column \"%s\" not in WITH query column list" msgstr "пошуковий стовпець \"%s\" відсутній в списку стовпців запиту WITH" -#: parser/parse_cte.c:477 +#: parser/parse_cte.c:478 #, c-format msgid "search column \"%s\" specified more than once" msgstr "пошуковий стовпець \"%s\" вказано більше одного разу" -#: parser/parse_cte.c:486 +#: parser/parse_cte.c:487 #, c-format msgid "search sequence column name \"%s\" already used in WITH query column list" msgstr "назва послідовності пошуку \"%s\" вже використовується у списку стовпців запиту WITH" -#: parser/parse_cte.c:503 +#: parser/parse_cte.c:504 #, c-format msgid "cycle column \"%s\" not in WITH query column list" msgstr "стовпець циклу \"%s\" відсутній в списку стовпців запиту WITH" -#: parser/parse_cte.c:510 +#: parser/parse_cte.c:511 #, c-format msgid "cycle column \"%s\" specified more than once" msgstr "стовпець циклу \"%s\" вказано більше одного разу" -#: parser/parse_cte.c:519 +#: parser/parse_cte.c:520 #, c-format msgid "cycle mark column name \"%s\" already used in WITH query column list" msgstr "назва стовпця позначки циклу \"%s\" вже використовується у списку стовпців запиту WITH" -#: parser/parse_cte.c:526 +#: parser/parse_cte.c:527 #, c-format msgid "cycle path column name \"%s\" already used in WITH query column list" msgstr "назва стовпця циклу шляху \"%s\" вже використовується у списку стовпців запиту WITH" -#: parser/parse_cte.c:534 +#: parser/parse_cte.c:535 #, c-format msgid "cycle mark column name and cycle path column name are the same" msgstr "назва стовпця позначки циклу і назва стовпця циклу шляху однакові" -#: parser/parse_cte.c:544 +#: parser/parse_cte.c:545 #, c-format msgid "search sequence column name and cycle mark column name are the same" msgstr "назва стовпця послідовності пошуку і назва стовпця позначки циклу однакові" -#: parser/parse_cte.c:551 +#: parser/parse_cte.c:552 #, c-format msgid "search sequence column name and cycle path column name are the same" msgstr "назва стовпця послідовності пошуку і назва стовпця циклу шляху однакові" -#: parser/parse_cte.c:635 +#: parser/parse_cte.c:636 #, c-format msgid "WITH query \"%s\" has %d columns available but %d columns specified" msgstr "Запит WITH \"%s\" має %d доступних стовпців, але %d стовпців вказано" -#: parser/parse_cte.c:815 +#: parser/parse_cte.c:868 #, c-format msgid "mutual recursion between WITH items is not implemented" msgstr "взаємна рекурсія між елементами WITH не реалізована" -#: parser/parse_cte.c:867 +#: parser/parse_cte.c:920 #, c-format msgid "recursive query \"%s\" must not contain data-modifying statements" msgstr "рекурсивний запит \"%s\" не повинен містити оператори, які змінюють дані" -#: parser/parse_cte.c:875 +#: parser/parse_cte.c:928 #, c-format msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term" msgstr "рекурсивний запит \"%s\" не має форми (нерекурсивна частина) UNION [ALL] (рекурсивна частина)" -#: parser/parse_cte.c:910 +#: parser/parse_cte.c:963 #, c-format msgid "ORDER BY in a recursive query is not implemented" msgstr "ORDER BY в рекурсивному запиті не реалізовано" -#: parser/parse_cte.c:916 +#: parser/parse_cte.c:969 #, c-format msgid "OFFSET in a recursive query is not implemented" msgstr "OFFSET у рекурсивному запиті не реалізовано" -#: parser/parse_cte.c:922 +#: parser/parse_cte.c:975 #, c-format msgid "LIMIT in a recursive query is not implemented" msgstr "LIMIT у рекурсивному запиті не реалізовано" -#: parser/parse_cte.c:928 +#: parser/parse_cte.c:981 #, c-format msgid "FOR UPDATE/SHARE in a recursive query is not implemented" msgstr "FOR UPDATE/SHARE в рекурсивному запиті не реалізовано" -#: parser/parse_cte.c:1007 +#: parser/parse_cte.c:1060 #, c-format msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "рекурсивне посилання на запит \"%s\" не повинне з'являтись неодноразово" @@ -17323,7 +17355,7 @@ msgid "column %d of the partition key has type \"%s\", but supplied value is of msgstr "стовпець %d ключа секціонування має тип \"%s\", але для нього вказано значення типу \"%s\"" #: port/pg_sema.c:209 port/pg_shmem.c:678 port/posix_sema.c:209 -#: port/sysv_sema.c:327 port/sysv_shmem.c:678 +#: port/sysv_sema.c:347 port/sysv_shmem.c:678 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "не вдалося встановити дані каталогу \"%s\": %m" @@ -17389,24 +17421,24 @@ msgstr "раніше виділений блок спільної пам'яті msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "Припинити будь-які старі серверні процеси, пов'язані з каталогом даних \"%s\"." -#: port/sysv_sema.c:124 +#: port/sysv_sema.c:139 #, c-format msgid "could not create semaphores: %m" msgstr "не вдалося створити семафори: %m" -#: port/sysv_sema.c:125 +#: port/sysv_sema.c:140 #, c-format msgid "Failed system call was semget(%lu, %d, 0%o)." msgstr "Помилка системного виклику semget(%lu, %d, 0%o)." -#: port/sysv_sema.c:129 +#: port/sysv_sema.c:144 #, c-format msgid "This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.\n" "The PostgreSQL documentation contains more information about configuring your system for PostgreSQL." msgstr "Ця помилка НЕ означає, що на диску немає місця. Ймовірніше за все перевищено ліміт числа встановлених семафорів (SEMMNI), або загального числа семафорів (SEMMNS) в системі. Вам потрібно збільшити відповідний параметр ядра. Інший спосіб - зменшити споживання PostgreSQL в семафорах, зменшивши параметр max_connections.\n" "Більше інформації про налаштування вашої системи для PostgreSQL міститься в інструкції PostgreSQL." -#: port/sysv_sema.c:159 +#: port/sysv_sema.c:174 #, c-format msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details." msgstr "Можливо, вам потрібно збілшити значення SEMVMX вашого ядра, мінімум до %d. Детальніше про це написано в інструкції PostgreSQL." @@ -17546,27 +17578,27 @@ msgstr "не вдалося породити робочий процес авт msgid "autovacuum: dropping orphan temp table \"%s.%s.%s\"" msgstr "автоочистка: видалення застарілої тимчасової таблиці \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2548 +#: postmaster/autovacuum.c:2555 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\"" msgstr "автоматична очистка таблиці \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2551 +#: postmaster/autovacuum.c:2558 #, c-format msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "автоматичний аналіз таблиці \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2744 +#: postmaster/autovacuum.c:2754 #, c-format msgid "processing work entry for relation \"%s.%s.%s\"" msgstr "обробка робочого введення для відношення \"%s.%s.%s\"" -#: postmaster/autovacuum.c:3430 +#: postmaster/autovacuum.c:3440 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "автоочистку не запущено через неправильну конфігурацію" -#: postmaster/autovacuum.c:3431 +#: postmaster/autovacuum.c:3441 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Активувати параметр \"track_counts\"." @@ -17630,7 +17662,7 @@ msgstr[3] "Максимальне можливе число фонових пр msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Можливо, слід збільшити параметр конфігурації \"max_worker_processes\"." -#: postmaster/checkpointer.c:428 +#: postmaster/checkpointer.c:431 #, c-format msgid "checkpoints are occurring too frequently (%d second apart)" msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" @@ -17639,17 +17671,17 @@ msgstr[1] "контрольні точки відбуваються занадт msgstr[2] "контрольні точки відбуваються занадто часто (через %d сек.)" msgstr[3] "контрольні точки відбуваються занадто часто (через %d сек.)" -#: postmaster/checkpointer.c:432 +#: postmaster/checkpointer.c:435 #, c-format msgid "Consider increasing the configuration parameter \"max_wal_size\"." msgstr "Можливо, слід збільшити параметр конфігурації \"max_wal_size\"." -#: postmaster/checkpointer.c:1062 +#: postmaster/checkpointer.c:1068 #, c-format msgid "checkpoint request failed" msgstr "збій при запиті контрольної точки" -#: postmaster/checkpointer.c:1063 +#: postmaster/checkpointer.c:1069 #, c-format msgid "Consult recent messages in the server log for details." msgstr "Для деталей, зверніться до останніх повідомлень в протоколі серверу." @@ -17690,7 +17722,7 @@ msgstr "Команда архівації з помилкою: %s" msgid "archive command was terminated by exception 0x%X" msgstr "команда архівації була перервана винятком 0x%X" -#: postmaster/pgarch.c:597 postmaster/postmaster.c:3759 +#: postmaster/pgarch.c:597 postmaster/postmaster.c:3761 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "Опис цього Шістнадцяткового значення дивіться у включаємому C-файлі \"ntstatus.h\"." @@ -17882,103 +17914,103 @@ msgstr "Потокове передавання WAL (max_wal_senders > 0) вим msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: неприпустимі таблиці маркерів часу, будь-ласка виправіть\n" -#: postmaster/postmaster.c:1052 +#: postmaster/postmaster.c:1054 #, c-format msgid "could not create I/O completion port for child queue" msgstr "не вдалося створити завершений порт вводу-виводу для черги дітей" -#: postmaster/postmaster.c:1128 +#: postmaster/postmaster.c:1130 #, c-format msgid "ending log output to stderr" msgstr "завершення запису виводу Stderr" -#: postmaster/postmaster.c:1129 +#: postmaster/postmaster.c:1131 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "В майбутньому запис виведення буде записуватися в призначення \"%s\"." -#: postmaster/postmaster.c:1140 +#: postmaster/postmaster.c:1142 #, c-format msgid "starting %s" msgstr "початок %s" -#: postmaster/postmaster.c:1161 postmaster/postmaster.c:1260 +#: postmaster/postmaster.c:1163 postmaster/postmaster.c:1262 #: utils/init/miscinit.c:1684 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "неприпустимий синтаксис списку в параметрі \"%s\"" -#: postmaster/postmaster.c:1192 +#: postmaster/postmaster.c:1194 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "не вдалося створити сокет прослуховування для \"%s\"" -#: postmaster/postmaster.c:1198 +#: postmaster/postmaster.c:1200 #, c-format msgid "could not create any TCP/IP sockets" msgstr "не вдалося створити TCP/IP сокети" -#: postmaster/postmaster.c:1230 +#: postmaster/postmaster.c:1232 #, c-format msgid "DNSServiceRegister() failed: error code %ld" msgstr "Помилка DNSServiceRegister(): код помилки %ld" -#: postmaster/postmaster.c:1282 +#: postmaster/postmaster.c:1284 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "не вдалося створити Unix-domain сокет в каталозі \"%s\"" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1290 #, c-format msgid "could not create any Unix-domain sockets" msgstr "не вдалося створити Unix-domain сокети" -#: postmaster/postmaster.c:1300 +#: postmaster/postmaster.c:1302 #, c-format msgid "no socket created for listening" msgstr "не створено жодного сокету для прослуховування" -#: postmaster/postmaster.c:1331 +#: postmaster/postmaster.c:1333 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: не вдалося змінити дозволи зовнішнього PID файлу \"%s\": %s\n" -#: postmaster/postmaster.c:1335 +#: postmaster/postmaster.c:1337 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: не вдалося записати зовнішній PID файл \"%s\": %s\n" -#: postmaster/postmaster.c:1368 utils/init/postinit.c:216 +#: postmaster/postmaster.c:1370 utils/init/postinit.c:216 #, c-format msgid "could not load pg_hba.conf" msgstr "не вдалося завантажити pg_hba.conf" -#: postmaster/postmaster.c:1396 +#: postmaster/postmaster.c:1398 #, c-format msgid "postmaster became multithreaded during startup" msgstr "адміністратор поштового сервера став багатопотоковим під час запуску" -#: postmaster/postmaster.c:1397 postmaster/postmaster.c:5148 +#: postmaster/postmaster.c:1399 postmaster/postmaster.c:5150 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Встановити в змінній середовища LC_ALL дійісну локаль." -#: postmaster/postmaster.c:1492 +#: postmaster/postmaster.c:1494 #, c-format msgid "%s: could not locate my own executable path" msgstr "%s: не вдалося знайти свій власний шлях для виконання" -#: postmaster/postmaster.c:1499 +#: postmaster/postmaster.c:1501 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: не вдалося знайти відповідний postgres файл, що виконується" -#: postmaster/postmaster.c:1522 utils/misc/tzparser.c:340 +#: postmaster/postmaster.c:1524 utils/misc/tzparser.c:340 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." msgstr "Це може означати неповне встановлення PostgreSQL, або те, що файл \"%s\" було переміщено з його правильного розташування." -#: postmaster/postmaster.c:1549 +#: postmaster/postmaster.c:1551 #, c-format msgid "%s: could not find the database system\n" "Expected to find it in the directory \"%s\",\n" @@ -17987,476 +18019,476 @@ msgstr "%s: не вдалося знайти систему бази даних\ "Очікувалося знайти її у каталозі \"%s\",\n" "але не вдалося відкрити файл \"%s\": %s\n" -#: postmaster/postmaster.c:1726 +#: postmaster/postmaster.c:1728 #, c-format msgid "select() failed in postmaster: %m" msgstr "помилка вибирати() в адміністраторі поштового сервера: %m" -#: postmaster/postmaster.c:1862 +#: postmaster/postmaster.c:1864 #, c-format msgid "issuing SIGKILL to recalcitrant children" msgstr "надсилання SIGKILL непокірливим дітям" -#: postmaster/postmaster.c:1883 +#: postmaster/postmaster.c:1885 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" msgstr "виконується негайне припинення роботи через неприпустимий файл блокування каталогу даних" -#: postmaster/postmaster.c:1986 postmaster/postmaster.c:2014 +#: postmaster/postmaster.c:1988 postmaster/postmaster.c:2016 #, c-format msgid "incomplete startup packet" msgstr "неповний стартовий пакет" -#: postmaster/postmaster.c:1998 postmaster/postmaster.c:2031 +#: postmaster/postmaster.c:2000 postmaster/postmaster.c:2033 #, c-format msgid "invalid length of startup packet" msgstr "неприпустима довжина стартового пакету" -#: postmaster/postmaster.c:2060 +#: postmaster/postmaster.c:2062 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "помилка надсилання протоколу SSL в процесі відповіді зв'язування: %m" -#: postmaster/postmaster.c:2078 +#: postmaster/postmaster.c:2080 #, c-format msgid "received unencrypted data after SSL request" msgstr "отримані незашифровані дані після запиту SSL" -#: postmaster/postmaster.c:2079 postmaster/postmaster.c:2123 +#: postmaster/postmaster.c:2081 postmaster/postmaster.c:2125 #, c-format msgid "This could be either a client-software bug or evidence of an attempted man-in-the-middle attack." msgstr "Це може бути або помилкою клієнтського програмного забезпечення, або доказом спроби техносферної атаки." -#: postmaster/postmaster.c:2104 +#: postmaster/postmaster.c:2106 #, c-format msgid "failed to send GSSAPI negotiation response: %m" msgstr "помилка надсилання GSSAPI в процесі відповіді зв'язування: %m" -#: postmaster/postmaster.c:2122 +#: postmaster/postmaster.c:2124 #, c-format msgid "received unencrypted data after GSSAPI encryption request" msgstr "отримані незашифровані дані після запиту шифрування GSSAPI" -#: postmaster/postmaster.c:2146 +#: postmaster/postmaster.c:2148 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "протокол інтерфейсу, що не підтримується, %u.%u: сервер підтримує %u.0 до %u.%u" -#: postmaster/postmaster.c:2210 utils/misc/guc.c:7138 utils/misc/guc.c:7174 +#: postmaster/postmaster.c:2212 utils/misc/guc.c:7138 utils/misc/guc.c:7174 #: utils/misc/guc.c:7244 utils/misc/guc.c:8628 utils/misc/guc.c:11596 #: utils/misc/guc.c:11637 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "неприпустиме значення параметру \"%s\": \"%s\"" -#: postmaster/postmaster.c:2213 +#: postmaster/postmaster.c:2215 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "Дійсні значення: \"false\", 0, \"true\", 1, \"database\"." -#: postmaster/postmaster.c:2258 +#: postmaster/postmaster.c:2260 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "неприпустима структура стартового пакету: останнім байтом очікувався термінатор" -#: postmaster/postmaster.c:2275 +#: postmaster/postmaster.c:2277 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "не вказано жодного ім'я користувача PostgreSQL у стартовому пакеті" -#: postmaster/postmaster.c:2339 +#: postmaster/postmaster.c:2341 #, c-format msgid "the database system is starting up" msgstr "система бази даних запускається" -#: postmaster/postmaster.c:2345 +#: postmaster/postmaster.c:2347 #, c-format msgid "the database system is not yet accepting connections" msgstr "система бази даних ще не приймає підключення" -#: postmaster/postmaster.c:2346 +#: postmaster/postmaster.c:2348 #, c-format msgid "Consistent recovery state has not been yet reached." msgstr "Узгодженого стану відновлення ще не досягнуто." -#: postmaster/postmaster.c:2350 +#: postmaster/postmaster.c:2352 #, c-format msgid "the database system is not accepting connections" msgstr "система бази даних не приймає підключення" -#: postmaster/postmaster.c:2351 +#: postmaster/postmaster.c:2353 #, c-format msgid "Hot standby mode is disabled." msgstr "Режим Hot standby вимкнений." -#: postmaster/postmaster.c:2356 +#: postmaster/postmaster.c:2358 #, c-format msgid "the database system is shutting down" msgstr "система бази даних завершує роботу" -#: postmaster/postmaster.c:2361 +#: postmaster/postmaster.c:2363 #, c-format msgid "the database system is in recovery mode" msgstr "система бази даних у режимі відновлення" -#: postmaster/postmaster.c:2366 storage/ipc/procarray.c:499 +#: postmaster/postmaster.c:2368 storage/ipc/procarray.c:499 #: storage/ipc/sinvaladt.c:297 storage/lmgr/proc.c:361 #, c-format msgid "sorry, too many clients already" msgstr "вибачте, вже забагато клієнтів" -#: postmaster/postmaster.c:2456 +#: postmaster/postmaster.c:2458 #, c-format msgid "wrong key in cancel request for process %d" msgstr "неправильний ключ в запиті скасування процесу %d" -#: postmaster/postmaster.c:2468 +#: postmaster/postmaster.c:2470 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "PID %d в запиті на скасування не відповідає жодному процесу" -#: postmaster/postmaster.c:2721 +#: postmaster/postmaster.c:2723 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "отримано SIGHUP, поновлення файлів конфігурацій" #. translator: %s is a configuration file -#: postmaster/postmaster.c:2747 postmaster/postmaster.c:2751 +#: postmaster/postmaster.c:2749 postmaster/postmaster.c:2753 #, c-format msgid "%s was not reloaded" msgstr "%s не було перезавантажено" -#: postmaster/postmaster.c:2761 +#: postmaster/postmaster.c:2763 #, c-format msgid "SSL configuration was not reloaded" msgstr "Конфігурація протоколу SSL не була перезавантажена" -#: postmaster/postmaster.c:2817 +#: postmaster/postmaster.c:2819 #, c-format msgid "received smart shutdown request" msgstr "отримано smart запит на завершення роботи" -#: postmaster/postmaster.c:2863 +#: postmaster/postmaster.c:2865 #, c-format msgid "received fast shutdown request" msgstr "отримано швидкий запит на завершення роботи" -#: postmaster/postmaster.c:2881 +#: postmaster/postmaster.c:2883 #, c-format msgid "aborting any active transactions" msgstr "переривання будь-яких активних транзакцій" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2907 #, c-format msgid "received immediate shutdown request" msgstr "отримано запит на негайне завершення роботи" -#: postmaster/postmaster.c:2982 +#: postmaster/postmaster.c:2984 #, c-format msgid "shutdown at recovery target" msgstr "завершення роботи при відновленні мети" -#: postmaster/postmaster.c:3000 postmaster/postmaster.c:3036 +#: postmaster/postmaster.c:3002 postmaster/postmaster.c:3038 msgid "startup process" msgstr "стартовий процес" -#: postmaster/postmaster.c:3003 +#: postmaster/postmaster.c:3005 #, c-format msgid "aborting startup due to startup process failure" msgstr "переривання запуску через помилку в стартовому процесі" -#: postmaster/postmaster.c:3078 +#: postmaster/postmaster.c:3080 #, c-format msgid "database system is ready to accept connections" msgstr "система бази даних готова до отримання підключення" -#: postmaster/postmaster.c:3099 +#: postmaster/postmaster.c:3101 msgid "background writer process" msgstr "процес фонового запису" -#: postmaster/postmaster.c:3153 +#: postmaster/postmaster.c:3155 msgid "checkpointer process" msgstr "процес контрольних точок" -#: postmaster/postmaster.c:3169 +#: postmaster/postmaster.c:3171 msgid "WAL writer process" msgstr "Процес запису WAL" -#: postmaster/postmaster.c:3184 +#: postmaster/postmaster.c:3186 msgid "WAL receiver process" msgstr "Процес отримання WAL" -#: postmaster/postmaster.c:3199 +#: postmaster/postmaster.c:3201 msgid "autovacuum launcher process" msgstr "процес запуску автоочистки" -#: postmaster/postmaster.c:3217 +#: postmaster/postmaster.c:3219 msgid "archiver process" msgstr "процес архівації" -#: postmaster/postmaster.c:3232 +#: postmaster/postmaster.c:3234 msgid "statistics collector process" msgstr "процес збору статистики" -#: postmaster/postmaster.c:3246 +#: postmaster/postmaster.c:3248 msgid "system logger process" msgstr "процес системного журналювання" -#: postmaster/postmaster.c:3310 +#: postmaster/postmaster.c:3312 #, c-format msgid "background worker \"%s\"" msgstr "фоновий виконавець \"%s\"" -#: postmaster/postmaster.c:3394 postmaster/postmaster.c:3414 -#: postmaster/postmaster.c:3421 postmaster/postmaster.c:3439 +#: postmaster/postmaster.c:3396 postmaster/postmaster.c:3416 +#: postmaster/postmaster.c:3423 postmaster/postmaster.c:3441 msgid "server process" msgstr "процес сервера" -#: postmaster/postmaster.c:3493 +#: postmaster/postmaster.c:3495 #, c-format msgid "terminating any other active server processes" msgstr "завершення будь-яких інших активних серверних процесів" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3748 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) завершився з кодом виходу %d" -#: postmaster/postmaster.c:3748 postmaster/postmaster.c:3760 -#: postmaster/postmaster.c:3770 postmaster/postmaster.c:3781 +#: postmaster/postmaster.c:3750 postmaster/postmaster.c:3762 +#: postmaster/postmaster.c:3772 postmaster/postmaster.c:3783 #, c-format msgid "Failed process was running: %s" msgstr "Процес що завершився виконував дію: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3757 +#: postmaster/postmaster.c:3759 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) був перерваний винятком 0x%X" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3767 +#: postmaster/postmaster.c:3769 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d) був перерваний сигналом %d: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3779 +#: postmaster/postmaster.c:3781 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) завершився з нерозпізнаним статусом %d" -#: postmaster/postmaster.c:3993 +#: postmaster/postmaster.c:3995 #, c-format msgid "abnormal database system shutdown" msgstr "ненормальне завершення роботи системи бази даних" -#: postmaster/postmaster.c:4031 +#: postmaster/postmaster.c:4033 #, c-format msgid "shutting down due to startup process failure" msgstr "завершення роботи через помилку в стартовому процесі" -#: postmaster/postmaster.c:4037 +#: postmaster/postmaster.c:4039 #, c-format msgid "shutting down because restart_after_crash is off" msgstr "завершення роботи, тому що restart_after_crash вимкнено" -#: postmaster/postmaster.c:4049 +#: postmaster/postmaster.c:4051 #, c-format msgid "all server processes terminated; reinitializing" msgstr "усі серверні процеси перервано; повторна ініціалізація" -#: postmaster/postmaster.c:4223 postmaster/postmaster.c:5575 -#: postmaster/postmaster.c:5966 +#: postmaster/postmaster.c:4225 postmaster/postmaster.c:5577 +#: postmaster/postmaster.c:5968 #, c-format msgid "could not generate random cancel key" msgstr "не вдалося згенерувати випадковий ключ скасування" -#: postmaster/postmaster.c:4277 +#: postmaster/postmaster.c:4279 #, c-format msgid "could not fork new process for connection: %m" msgstr "не вдалося породити нові процеси для з'єднання: %m" -#: postmaster/postmaster.c:4319 +#: postmaster/postmaster.c:4321 msgid "could not fork new process for connection: " msgstr "не вдалося породити нові процеси для з'єднання: " -#: postmaster/postmaster.c:4425 +#: postmaster/postmaster.c:4427 #, c-format msgid "connection received: host=%s port=%s" msgstr "з'єднання отримано: хост=%s порт=%s" -#: postmaster/postmaster.c:4430 +#: postmaster/postmaster.c:4432 #, c-format msgid "connection received: host=%s" msgstr "з'єднання отримано: хост=%s" -#: postmaster/postmaster.c:4673 +#: postmaster/postmaster.c:4675 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "не вдалося виконати серверні процеси \"%s\":%m" -#: postmaster/postmaster.c:4731 +#: postmaster/postmaster.c:4733 #, c-format msgid "could not create backend parameter file mapping: error code %lu" msgstr "не вдалося створити відображення файлу параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4740 +#: postmaster/postmaster.c:4742 #, c-format msgid "could not map backend parameter memory: error code %lu" msgstr "не вдалося відобразити пам'ять параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4767 +#: postmaster/postmaster.c:4769 #, c-format msgid "subprocess command line too long" msgstr "командний рядок підпроцесу занадто довгий" -#: postmaster/postmaster.c:4785 +#: postmaster/postmaster.c:4787 #, c-format msgid "CreateProcess() call failed: %m (error code %lu)" msgstr "помилка виклику CreateProcess(): %m (код помилки %lu)" -#: postmaster/postmaster.c:4812 +#: postmaster/postmaster.c:4814 #, c-format msgid "could not unmap view of backend parameter file: error code %lu" msgstr "не вдалося вимкнути відображення файлу параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4816 +#: postmaster/postmaster.c:4818 #, c-format msgid "could not close handle to backend parameter file: error code %lu" msgstr "не вдалося закрити покажчик файлу параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4838 +#: postmaster/postmaster.c:4840 #, c-format msgid "giving up after too many tries to reserve shared memory" msgstr "кількість повторних спроб резервування спільної пам'яті досягло межі" -#: postmaster/postmaster.c:4839 +#: postmaster/postmaster.c:4841 #, c-format msgid "This might be caused by ASLR or antivirus software." msgstr "Це може бути викликано антивірусним програмним забезпеченням або ASLR." -#: postmaster/postmaster.c:5021 +#: postmaster/postmaster.c:5023 #, c-format msgid "SSL configuration could not be loaded in child process" msgstr "Не вдалося завантажити конфігурацію SSL в дочірній процес" -#: postmaster/postmaster.c:5147 +#: postmaster/postmaster.c:5149 #, c-format msgid "postmaster became multithreaded" msgstr "postmaster став багатопотоковим" -#: postmaster/postmaster.c:5235 +#: postmaster/postmaster.c:5237 #, c-format msgid "database system is ready to accept read-only connections" msgstr "система бази даних готова до отримання підключення лише для читання" -#: postmaster/postmaster.c:5499 +#: postmaster/postmaster.c:5501 #, c-format msgid "could not fork startup process: %m" msgstr "не вдалося породити стартовий процес: %m" -#: postmaster/postmaster.c:5503 +#: postmaster/postmaster.c:5505 #, c-format msgid "could not fork archiver process: %m" msgstr "не вдалося породити процес архіватора: %m" -#: postmaster/postmaster.c:5507 +#: postmaster/postmaster.c:5509 #, c-format msgid "could not fork background writer process: %m" msgstr "не вдалося породити фоновий процес запису: %m" -#: postmaster/postmaster.c:5511 +#: postmaster/postmaster.c:5513 #, c-format msgid "could not fork checkpointer process: %m" msgstr "не вдалося породити процес контрольних точок: %m" -#: postmaster/postmaster.c:5515 +#: postmaster/postmaster.c:5517 #, c-format msgid "could not fork WAL writer process: %m" msgstr "не вдалося породити процес запису WAL: %m" -#: postmaster/postmaster.c:5519 +#: postmaster/postmaster.c:5521 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "не вдалося породити процес отримання WAL: %m" -#: postmaster/postmaster.c:5523 +#: postmaster/postmaster.c:5525 #, c-format msgid "could not fork process: %m" msgstr "не вдалося породити процес: %m" -#: postmaster/postmaster.c:5724 postmaster/postmaster.c:5747 +#: postmaster/postmaster.c:5726 postmaster/postmaster.c:5749 #, c-format msgid "database connection requirement not indicated during registration" msgstr "під час реєстрації не вказувалося, що вимагається підключення до бази даних" -#: postmaster/postmaster.c:5731 postmaster/postmaster.c:5754 +#: postmaster/postmaster.c:5733 postmaster/postmaster.c:5756 #, c-format msgid "invalid processing mode in background worker" msgstr "неприпустимий режим обробки у фоновому записі" -#: postmaster/postmaster.c:5839 +#: postmaster/postmaster.c:5841 #, c-format msgid "could not fork worker process: %m" msgstr "не вдалося породити процес запису: %m" -#: postmaster/postmaster.c:5952 +#: postmaster/postmaster.c:5954 #, c-format msgid "no slot available for new worker process" msgstr "немає доступного слоту для нового робочого процесу" -#: postmaster/postmaster.c:6286 +#: postmaster/postmaster.c:6288 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "не вдалося продублювати сокет %d для використання: код помилки %d" -#: postmaster/postmaster.c:6318 +#: postmaster/postmaster.c:6320 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "не вдалося створити успадкований сокет: код помилки %d\n" -#: postmaster/postmaster.c:6347 +#: postmaster/postmaster.c:6349 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "не вдалося відкрити внутрішні змінні файли \"%s\": %s\n" -#: postmaster/postmaster.c:6354 +#: postmaster/postmaster.c:6356 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "не вдалося прочитати внутрішні змінні файли \"%s\": %s\n" -#: postmaster/postmaster.c:6363 +#: postmaster/postmaster.c:6365 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "не вдалося видалити файл \"%s\": %s\n" -#: postmaster/postmaster.c:6380 +#: postmaster/postmaster.c:6382 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "не вдалося відобразити файл серверних змінних: код помилки %lu\n" -#: postmaster/postmaster.c:6389 +#: postmaster/postmaster.c:6391 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "не вдалося вимкнути відображення файлу серверних змінних: код помилки %lu\n" -#: postmaster/postmaster.c:6396 +#: postmaster/postmaster.c:6398 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "не вдалося закрити покажчик файлу серверних змінних: код помилки %lu\n" -#: postmaster/postmaster.c:6558 +#: postmaster/postmaster.c:6560 #, c-format msgid "could not read exit code for process\n" msgstr "не вдалося прочитати код завершення процесу\n" -#: postmaster/postmaster.c:6600 +#: postmaster/postmaster.c:6602 #, c-format msgid "could not post child completion status\n" msgstr "не вдалося надіслати статус завершення нащадка\n" @@ -18713,7 +18745,7 @@ msgid "error reading result of streaming command: %s" msgstr "помилка при читанні результату команди потокового передавання: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:570 -#: replication/libpqwalreceiver/libpqwalreceiver.c:808 +#: replication/libpqwalreceiver/libpqwalreceiver.c:805 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "неочікуваний результат CommandComplete: %s" @@ -18728,43 +18760,43 @@ msgstr "не вдалося отримати файл історії часов msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Очікувалося 1 кортеж з 2 поле, отримано %d кортежів з %d полями." -#: replication/libpqwalreceiver/libpqwalreceiver.c:771 -#: replication/libpqwalreceiver/libpqwalreceiver.c:824 -#: replication/libpqwalreceiver/libpqwalreceiver.c:831 +#: replication/libpqwalreceiver/libpqwalreceiver.c:768 +#: replication/libpqwalreceiver/libpqwalreceiver.c:821 +#: replication/libpqwalreceiver/libpqwalreceiver.c:828 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "не вдалося отримати дані з WAL потоку: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:851 +#: replication/libpqwalreceiver/libpqwalreceiver.c:848 #, c-format msgid "could not send data to WAL stream: %s" msgstr "не вдалося передати дані потоку WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:905 +#: replication/libpqwalreceiver/libpqwalreceiver.c:902 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "не вдалося створити слот реплікації \"%s\": %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:951 +#: replication/libpqwalreceiver/libpqwalreceiver.c:948 #, c-format msgid "invalid query response" msgstr "неприпустима відповідь на запит" -#: replication/libpqwalreceiver/libpqwalreceiver.c:952 +#: replication/libpqwalreceiver/libpqwalreceiver.c:949 #, c-format msgid "Expected %d fields, got %d fields." msgstr "Очікувалося %d полів, отримано %d полі." -#: replication/libpqwalreceiver/libpqwalreceiver.c:1022 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1019 #, c-format msgid "the query interface requires a database connection" msgstr "інтерфейс запитів вимагає підключення до бази даних" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1053 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1050 msgid "empty query" msgstr "пустий запит" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1059 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1056 msgid "unexpected pipeline mode" msgstr "неочікуваний режим конвеєра" @@ -18818,12 +18850,12 @@ msgstr "логічне декодування вимагає підключен msgid "logical decoding cannot be used while in recovery" msgstr "логічне декодування неможливо використовувати під час відновлення" -#: replication/logical/logical.c:350 replication/logical/logical.c:502 +#: replication/logical/logical.c:350 replication/logical/logical.c:504 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "неможливо використовувати слот невідповідної реплікації для логічного кодування" -#: replication/logical/logical.c:355 replication/logical/logical.c:507 +#: replication/logical/logical.c:355 replication/logical/logical.c:509 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "слот реплікації \"%s\" був створений не в цій базі даних" @@ -18833,40 +18865,40 @@ msgstr "слот реплікації \"%s\" був створений не в msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "неможливо створити слот логічної реплікації у транзакції, що виконує записування" -#: replication/logical/logical.c:552 +#: replication/logical/logical.c:554 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "початок логічного декодування для слоту \"%s\"" -#: replication/logical/logical.c:554 +#: replication/logical/logical.c:556 #, c-format msgid "Streaming transactions committing after %X/%X, reading WAL from %X/%X." msgstr "Потокове передавання транзакцій, що затверджені, після %X/%X, читання WAL з %X/%X." -#: replication/logical/logical.c:699 +#: replication/logical/logical.c:701 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "слот \"%s\", плагін виходу \"%s\", у зворотньому виклику %s, пов'язаний номер LSN %X/%X" -#: replication/logical/logical.c:705 +#: replication/logical/logical.c:707 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "слот \"%s\", плагін виходу \"%s\", у зворотньому виклику %s" -#: replication/logical/logical.c:876 replication/logical/logical.c:921 -#: replication/logical/logical.c:966 replication/logical/logical.c:1012 +#: replication/logical/logical.c:878 replication/logical/logical.c:923 +#: replication/logical/logical.c:968 replication/logical/logical.c:1014 #, c-format msgid "logical replication at prepare time requires a %s callback" msgstr "логічна реплікація під час підготовки потребує %s зворотнього виклику" -#: replication/logical/logical.c:1244 replication/logical/logical.c:1293 -#: replication/logical/logical.c:1334 replication/logical/logical.c:1420 -#: replication/logical/logical.c:1469 +#: replication/logical/logical.c:1246 replication/logical/logical.c:1295 +#: replication/logical/logical.c:1336 replication/logical/logical.c:1422 +#: replication/logical/logical.c:1471 #, c-format msgid "logical streaming requires a %s callback" msgstr "логічне потокове передавання потребує %s зворотнього виклику" -#: replication/logical/logical.c:1379 +#: replication/logical/logical.c:1381 #, c-format msgid "logical streaming at prepare time requires a %s callback" msgstr "логічне потокове передавання під час підготовки потребує %s зворотнього виклику" @@ -18978,7 +19010,7 @@ msgid "could not find free replication state slot for replication origin with OI msgstr "не вдалося знайти вільний слот стану реплікації для джерела реплікації з OID %u" #: replication/logical/origin.c:941 replication/logical/origin.c:1128 -#: replication/slot.c:1867 +#: replication/slot.c:1932 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Збільшіть max_replication_slots і спробуйте знову." @@ -19033,29 +19065,29 @@ msgstr "в цільовому відношенні логічної реплік msgid "logical replication target relation \"%s.%s\" does not exist" msgstr "цільове відношення логічної реплікації \"%s.%s\" не існує" -#: replication/logical/reorderbuffer.c:3842 +#: replication/logical/reorderbuffer.c:3973 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "не вдалося записати у файл даних для XID %u: %m" -#: replication/logical/reorderbuffer.c:4188 -#: replication/logical/reorderbuffer.c:4213 +#: replication/logical/reorderbuffer.c:4319 +#: replication/logical/reorderbuffer.c:4344 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "не вдалося прочитати з файлу розгортання буферу пересортування: %m" -#: replication/logical/reorderbuffer.c:4192 -#: replication/logical/reorderbuffer.c:4217 +#: replication/logical/reorderbuffer.c:4323 +#: replication/logical/reorderbuffer.c:4348 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "не вдалося прочитати з файлу розгортання буферу пересортування: прочитано %d замість %u байт" -#: replication/logical/reorderbuffer.c:4467 +#: replication/logical/reorderbuffer.c:4598 #, 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:4966 +#: replication/logical/reorderbuffer.c:5097 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "не вдалося прочитати з файлу \"%s\": прочитано %d замість %d байт" @@ -19074,58 +19106,58 @@ msgstr[1] "експортовано знімок логічного декоду msgstr[2] "експортовано знімок логічного декодування \"%s\" з %u ID транзакціями" msgstr[3] "експортовано знімок логічного декодування \"%s\" з %u ID транзакціями" -#: replication/logical/snapbuild.c:1374 replication/logical/snapbuild.c:1486 -#: replication/logical/snapbuild.c:2017 +#: replication/logical/snapbuild.c:1421 replication/logical/snapbuild.c:1533 +#: replication/logical/snapbuild.c:2068 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "узгодження процесу логічного кодування знайдено в точці %X/%X" -#: replication/logical/snapbuild.c:1376 +#: replication/logical/snapbuild.c:1423 #, c-format msgid "There are no running transactions." msgstr "Більше активних транзакцій немає." -#: replication/logical/snapbuild.c:1437 +#: replication/logical/snapbuild.c:1484 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "початкова стартова точка процесу логічного декодування знайдена в точці %X/%X" -#: replication/logical/snapbuild.c:1439 replication/logical/snapbuild.c:1463 +#: replication/logical/snapbuild.c:1486 replication/logical/snapbuild.c:1510 #, c-format msgid "Waiting for transactions (approximately %d) older than %u to end." msgstr "Очікування транзакцій (приблизно %d) старіше, ніж %u до кінця." -#: replication/logical/snapbuild.c:1461 +#: replication/logical/snapbuild.c:1508 #, c-format msgid "logical decoding found initial consistent point at %X/%X" msgstr "початкова точка узгодження процесу логічного кодування знайдена в точці %X/%X" -#: replication/logical/snapbuild.c:1488 +#: replication/logical/snapbuild.c:1535 #, c-format msgid "There are no old transactions anymore." msgstr "Більше старих транзакцій немає." -#: replication/logical/snapbuild.c:1885 +#: replication/logical/snapbuild.c:1932 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" msgstr "файл стану snapbuild \"%s\" має неправильне магічне число: %u замість %u" -#: replication/logical/snapbuild.c:1891 +#: replication/logical/snapbuild.c:1938 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "файл стану snapbuild \"%s\" має непідтримуючу версію: %u замість %u" -#: replication/logical/snapbuild.c:1962 +#: replication/logical/snapbuild.c:2009 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "у файлі стану snapbuild \"%s\" невідповідність контрольної суми: %u, повинно бути %u" -#: replication/logical/snapbuild.c:2019 +#: replication/logical/snapbuild.c:2070 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "Логічне декодування почнеться зі збереженого знімку." -#: replication/logical/snapbuild.c:2091 +#: replication/logical/snapbuild.c:2142 #, c-format msgid "could not parse file name \"%s\"" msgstr "не вдалося аналізувати ім'я файлу \"%s\"" @@ -19135,32 +19167,27 @@ msgstr "не вдалося аналізувати ім'я файлу \"%s\"" msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has finished" msgstr "процес синхронізації таблиці при логічній реплікації для підписки \"%s\", таблиці \"%s\" закінчив обробку" -#: replication/logical/tablesync.c:737 replication/logical/tablesync.c:780 +#: replication/logical/tablesync.c:758 replication/logical/tablesync.c:801 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "не вдалося отримати інформацію про таблицю \"%s.%s\" з серверу публікації: %s" -#: replication/logical/tablesync.c:744 +#: replication/logical/tablesync.c:765 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "таблиця \"%s.%s\" не знайдена на сервері публікації" -#: replication/logical/tablesync.c:868 +#: replication/logical/tablesync.c:889 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "не вдалося почати копіювання початкового змісту таблиці \"%s.%s\": %s" -#: replication/logical/tablesync.c:1069 +#: replication/logical/tablesync.c:1104 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "копії таблиці не вдалося запустити транзакцію на сервері публікації: %s" -#: replication/logical/tablesync.c:1110 -#, c-format -msgid "replication origin \"%s\" already exists" -msgstr "джерело реплікації \"%s\" вже існує" - -#: replication/logical/tablesync.c:1123 +#: replication/logical/tablesync.c:1142 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "копії таблиці не вдалося завершити транзакцію на сервері публікації: %s" @@ -19220,27 +19247,27 @@ msgstr "процес, що застосовує логічну реплікац msgid "could not read from streaming transaction's subxact file \"%s\": read only %zu of %zu bytes" msgstr "не вдалося прочитати з файлу subxact потокової транзакції \"%s\": прочитано лише %zu з %zu байтів" -#: replication/logical/worker.c:3136 +#: replication/logical/worker.c:3143 #, c-format msgid "logical replication apply worker for subscription %u will not start because the subscription was removed during startup" msgstr "застосовуючий процес логічної реплікації для підписки %u не буде почато, тому, що підписка була видалена під час запуску" -#: replication/logical/worker.c:3148 +#: replication/logical/worker.c:3155 #, c-format msgid "logical replication apply worker for subscription \"%s\" will not start because the subscription was disabled during startup" msgstr "застосовуючий процес логічної реплікації для підписки \"%s\" не буде почато, тому, що підписка була вимкнута під час запуску" -#: replication/logical/worker.c:3166 +#: replication/logical/worker.c:3173 #, c-format msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has started" msgstr "просец синхронізації таблиці під час логічної реплікації для підписки \"%s\", таблиці \"%s\" запущений" -#: replication/logical/worker.c:3170 +#: replication/logical/worker.c:3177 #, c-format msgid "logical replication apply worker for subscription \"%s\" has started" msgstr "застосовуючий процес логічної реплікації для підписки \"%s\" запущений" -#: replication/logical/worker.c:3208 +#: replication/logical/worker.c:3215 #, c-format msgid "subscription has no replication slot set" msgstr "для підписки не встановлений слот реплікації" @@ -19285,118 +19312,117 @@ msgstr "запитувана proto_version=%d не підтримує поток msgid "streaming requested, but not supported by output plugin" msgstr "запитане потокова передавача, але не підтримується плагіном виводу" -#: replication/slot.c:180 +#: replication/slot.c:212 #, c-format msgid "replication slot name \"%s\" is too short" msgstr "ім'я слоту реплікації \"%s\" занадто коротке" -#: replication/slot.c:189 +#: replication/slot.c:220 #, c-format msgid "replication slot name \"%s\" is too long" msgstr "ім'я слоту реплікації \"%s\" занадто довге" -#: replication/slot.c:202 +#: replication/slot.c:232 #, c-format msgid "replication slot name \"%s\" contains invalid character" msgstr "ім'я слоту реплікації \"%s\" містить неприпустимий символ" -#: replication/slot.c:204 -#, c-format +#: replication/slot.c:233 msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character." msgstr "Імена слота реплікації можуть містити лише букви в нижньому кейсі, числа, і символ підкреслення." -#: replication/slot.c:258 +#: replication/slot.c:287 #, c-format msgid "replication slot \"%s\" already exists" msgstr "слот реплікації \"%s\" вже існує" -#: replication/slot.c:268 +#: replication/slot.c:297 #, c-format msgid "all replication slots are in use" msgstr "використовуються всі слоти реплікації" -#: replication/slot.c:269 +#: replication/slot.c:298 #, c-format msgid "Free one or increase max_replication_slots." msgstr "Звільніть непотрібні або збільшіть max_replication_slots." -#: replication/slot.c:402 replication/slotfuncs.c:761 +#: replication/slot.c:431 replication/slotfuncs.c:761 #: utils/adt/pgstatfuncs.c:2228 #, c-format msgid "replication slot \"%s\" does not exist" msgstr "слот реплікації \"%s\" не існує" -#: replication/slot.c:448 replication/slot.c:1025 +#: replication/slot.c:477 replication/slot.c:1083 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "слот реплікації \"%s\" активний для PID %d" -#: replication/slot.c:676 replication/slot.c:1419 replication/slot.c:1802 +#: replication/slot.c:705 replication/slot.c:1477 replication/slot.c:1867 #, c-format msgid "could not remove directory \"%s\"" msgstr "не вдалося видалити каталог \"%s\"" -#: replication/slot.c:1060 +#: replication/slot.c:1118 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "слоти реплікації можна використовувати лише якщо max_replication_slots > 0" -#: replication/slot.c:1065 +#: replication/slot.c:1123 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "слоти реплікації можна використовувати лише якщо wal_level >= replica" -#: replication/slot.c:1250 +#: replication/slot.c:1308 #, c-format msgid "terminating process %d to release replication slot \"%s\"" msgstr "завершення процесу %d для звільнення слоту реплікації \"%s\"" -#: replication/slot.c:1288 +#: replication/slot.c:1346 #, c-format msgid "invalidating slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size" msgstr "припинення слоту \"%s\" тому, що його restart_lsn %X/%X перевищує max_slot_wal_keep_size" -#: replication/slot.c:1740 +#: replication/slot.c:1805 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "файл слоту реплікації \"%s\" має неправильне магічне число: %u замість %u" -#: replication/slot.c:1747 +#: replication/slot.c:1812 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "файл слоту реплікації \"%s\" має непідтримуючу версію %u" -#: replication/slot.c:1754 +#: replication/slot.c:1819 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "файл слоту реплікації \"%s\" має пошкоджену довжину %u" -#: replication/slot.c:1790 +#: replication/slot.c:1855 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "у файлі слоту реплікації \"%s\" невідповідність контрольної суми: %u, повинно бути %u" -#: replication/slot.c:1824 +#: replication/slot.c:1889 #, c-format msgid "logical replication slot \"%s\" exists, but wal_level < logical" msgstr "слот логічної реплікації \"%s\" існує, але wal_level < logical" -#: replication/slot.c:1826 +#: replication/slot.c:1891 #, c-format msgid "Change wal_level to be logical or higher." msgstr "Змініть wal_level на logical або вище." -#: replication/slot.c:1830 +#: replication/slot.c:1895 #, c-format msgid "physical replication slot \"%s\" exists, but wal_level < replica" msgstr "слот фізичної реплікації \"%s\" існує, але wal_level < replica" -#: replication/slot.c:1832 +#: replication/slot.c:1897 #, c-format msgid "Change wal_level to be replica or higher." msgstr "Змініть wal_level на replica або вище." -#: replication/slot.c:1866 +#: replication/slot.c:1931 #, c-format msgid "too many replication slots active before shutdown" msgstr "перед завершенням роботи активно занадто багато слотів реплікації" @@ -19451,37 +19477,37 @@ msgstr "не можна скопіювати незавершений слот msgid "Retry when the source replication slot's confirmed_flush_lsn is valid." msgstr "Повторіть, коли confirmed_flush_lsn слоту джерела реплікації є дійсним." -#: replication/syncrep.c:268 +#: replication/syncrep.c:311 #, c-format msgid "canceling the wait for synchronous replication and terminating connection due to administrator command" msgstr "скасування очікування синхронної реплікації і завершення з'єднання по команді адміністратора" -#: replication/syncrep.c:269 replication/syncrep.c:286 +#: replication/syncrep.c:312 replication/syncrep.c:329 #, c-format msgid "The transaction has already committed locally, but might not have been replicated to the standby." msgstr "Транзакція вже була затверджена локально, але можливо не була реплікована до режиму очікування." -#: replication/syncrep.c:285 +#: replication/syncrep.c:328 #, c-format msgid "canceling wait for synchronous replication due to user request" msgstr "скасування очікування синхронної реплікації по запиту користувача" -#: replication/syncrep.c:494 +#: replication/syncrep.c:537 #, c-format msgid "standby \"%s\" is now a synchronous standby with priority %u" msgstr "режим очікування \"%s\" зараз є синхронним з пріоритетом %u" -#: replication/syncrep.c:498 +#: replication/syncrep.c:541 #, c-format msgid "standby \"%s\" is now a candidate for quorum synchronous standby" msgstr "режим очікування \"%s\" зараз є кандидатом для включення в кворум синхронних" -#: replication/syncrep.c:1045 +#: replication/syncrep.c:1112 #, c-format msgid "synchronous_standby_names parser failed" msgstr "помилка при аналізуванні synchronous_standby_names" -#: replication/syncrep.c:1051 +#: replication/syncrep.c:1118 #, c-format msgid "number of synchronous standbys (%d) must be greater than zero" msgstr "кількість синхронних режимів очікування (%d) повинно бути більше нуля" @@ -19546,7 +19572,7 @@ msgstr "завершення процесу walreceiver через тайм-ау msgid "primary server contains no more WAL on requested timeline %u" msgstr "основний сервер більше не містить WAL для запитаної часової шкали %u" -#: replication/walreceiver.c:616 replication/walreceiver.c:1036 +#: replication/walreceiver.c:616 replication/walreceiver.c:1034 #, c-format msgid "could not close log segment %s: %m" msgstr "не вдалося закрити сегмент журналу %s: %m" @@ -19556,129 +19582,129 @@ msgstr "не вдалося закрити сегмент журналу %s: %m" msgid "fetching timeline history file for timeline %u from primary server" msgstr "отримання файлу історії часової шкали для часової шкали %u з основного серверу" -#: replication/walreceiver.c:927 +#: replication/walreceiver.c:925 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "не вдалося записати в сегмент журналу %s зсув %u, довжина %lu: %m" -#: replication/walsender.c:525 storage/smgr/md.c:1336 +#: replication/walsender.c:539 storage/smgr/md.c:1336 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "не вдалося досягти кінця файлу \"%s\": %m" -#: replication/walsender.c:529 +#: replication/walsender.c:543 #, c-format msgid "could not seek to beginning of file \"%s\": %m" msgstr "не вдалося знайти початок файлу \"%s\": %m" -#: replication/walsender.c:580 +#: replication/walsender.c:594 #, c-format msgid "IDENTIFY_SYSTEM has not been run before START_REPLICATION" msgstr "Команда IDENTIFY_SYSTEM не виконувалась до START_REPLICATION" -#: replication/walsender.c:609 +#: replication/walsender.c:623 #, c-format msgid "cannot use a logical replication slot for physical replication" msgstr "використовувати логічний слот реплікації для фізичної реплікації, не можна" -#: replication/walsender.c:678 +#: replication/walsender.c:692 #, c-format msgid "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "в історії серверу немає запитаної початкової точки %X/%X на часовій шкалі %u" -#: replication/walsender.c:681 +#: replication/walsender.c:695 #, c-format msgid "This server's history forked from timeline %u at %X/%X." msgstr "Історія цього серверу відгалузилась від часової шкали %u в позиції %X/%X." -#: replication/walsender.c:725 +#: replication/walsender.c:739 #, c-format msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "запитана початкова точка %X/%X попереду позиція очищених даних WAL на цьому сервері %X/%X" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:975 +#: replication/walsender.c:989 #, c-format msgid "%s must not be called inside a transaction" msgstr "%s не має викликатися всередині транзакції" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:985 +#: replication/walsender.c:999 #, c-format msgid "%s must be called inside a transaction" msgstr "%s має викликатися всередині транзакції" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:991 +#: replication/walsender.c:1005 #, c-format msgid "%s must be called in REPEATABLE READ isolation mode transaction" msgstr "%s повинен бути викликаний в режимі ізоляції REPEATABLE READ" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:997 +#: replication/walsender.c:1011 #, c-format msgid "%s must be called before any query" msgstr "%s має викликатися до будь-якого запиту" #. translator: %s is a CREATE_REPLICATION_SLOT statement -#: replication/walsender.c:1003 +#: replication/walsender.c:1017 #, c-format msgid "%s must not be called in a subtransaction" msgstr "%s не має викликатися всередині підтранзакції" -#: replication/walsender.c:1146 +#: replication/walsender.c:1160 #, c-format msgid "cannot read from logical replication slot \"%s\"" msgstr "не можна прочитати із слоту логічної реплікації \"%s\"" -#: replication/walsender.c:1148 +#: replication/walsender.c:1162 #, c-format msgid "This slot has been invalidated because it exceeded the maximum reserved size." msgstr "Цей слот визнано недійсним, тому що він перевищив максимально зарезервований розмір." -#: replication/walsender.c:1158 +#: replication/walsender.c:1172 #, c-format msgid "terminating walsender process after promotion" msgstr "завершення процесу walsender після підвищення" -#: replication/walsender.c:1552 +#: replication/walsender.c:1566 #, c-format msgid "cannot execute new commands while WAL sender is in stopping mode" msgstr "не можна виконувати нові команди, поки процес відправки WAL знаходиться в режимі зупинки" -#: replication/walsender.c:1587 +#: replication/walsender.c:1601 #, c-format msgid "cannot execute SQL commands in WAL sender for physical replication" msgstr "не можна виконувати команди SQL в процесі відправки WAL для фізичної реплікації" -#: replication/walsender.c:1620 +#: replication/walsender.c:1634 #, c-format msgid "received replication command: %s" msgstr "отримано команду реплікації: %s" -#: replication/walsender.c:1628 tcop/fastpath.c:208 tcop/postgres.c:1046 +#: replication/walsender.c:1642 tcop/fastpath.c:208 tcop/postgres.c:1046 #: tcop/postgres.c:1405 tcop/postgres.c:1678 tcop/postgres.c:2159 #: tcop/postgres.c:2592 tcop/postgres.c:2671 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "поточна транзакція перервана, команди до кінця блока транзакції пропускаються" -#: replication/walsender.c:1763 replication/walsender.c:1798 +#: replication/walsender.c:1777 replication/walsender.c:1812 #, c-format msgid "unexpected EOF on standby connection" msgstr "неочікуваний обрив з'єднання з резервним сервером" -#: replication/walsender.c:1786 +#: replication/walsender.c:1800 #, c-format msgid "invalid standby message type \"%c\"" msgstr "неприпустимий тип повідомлення резервного серверу \"%c\"" -#: replication/walsender.c:1875 +#: replication/walsender.c:1889 #, c-format msgid "unexpected message type \"%c\"" msgstr "неочікуваний тип повідомлення \"%c\"" -#: replication/walsender.c:2288 +#: replication/walsender.c:2306 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "завершення процесу walsender через тайм-аут реплікації" @@ -19904,198 +19930,198 @@ msgstr "не допускається перейменування правил msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten" msgstr "Ім'я запиту WITH \"%s\" з'являється і в дії правила, і в переписаному запиті" -#: rewrite/rewriteHandler.c:610 +#: rewrite/rewriteHandler.c:613 #, 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:663 +#: rewrite/rewriteHandler.c:666 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "списки RETURNING може мати лише одне правило" -#: rewrite/rewriteHandler.c:895 rewrite/rewriteHandler.c:934 +#: rewrite/rewriteHandler.c:898 rewrite/rewriteHandler.c:937 #, c-format msgid "cannot insert a non-DEFAULT value into column \"%s\"" msgstr "вставити значення non-DEFAULT до стовпця \"%s\" не можна" -#: rewrite/rewriteHandler.c:897 rewrite/rewriteHandler.c:963 +#: rewrite/rewriteHandler.c:900 rewrite/rewriteHandler.c:966 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "Стовпець \"%s\" є ідентифікаційним стовпцем визначеним як GENERATED ALWAYS." -#: rewrite/rewriteHandler.c:899 +#: rewrite/rewriteHandler.c:902 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Для зміни використайте OVERRIDING SYSTEM VALUE." -#: rewrite/rewriteHandler.c:961 rewrite/rewriteHandler.c:969 +#: rewrite/rewriteHandler.c:964 rewrite/rewriteHandler.c:972 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "стовпець \"%s\" може бути оновлено тільки до DEFAULT" -#: rewrite/rewriteHandler.c:1104 rewrite/rewriteHandler.c:1122 +#: rewrite/rewriteHandler.c:1107 rewrite/rewriteHandler.c:1125 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "кілька завдань для одного стовпця \"%s\"" -#: rewrite/rewriteHandler.c:1723 rewrite/rewriteHandler.c:3178 +#: rewrite/rewriteHandler.c:1726 rewrite/rewriteHandler.c:3181 #, c-format msgid "access to non-system view \"%s\" is restricted" msgstr "доступ до несистемного подання \"%s\" обмежено" -#: rewrite/rewriteHandler.c:2155 rewrite/rewriteHandler.c:4064 +#: rewrite/rewriteHandler.c:2158 rewrite/rewriteHandler.c:4084 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "виявлена безкінечна рекурсія у правилах для відносин \"%s\"" -#: rewrite/rewriteHandler.c:2260 +#: rewrite/rewriteHandler.c:2263 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "виявлена безкінечна рекурсія в політиці для зв'язка \"%s\"" -#: rewrite/rewriteHandler.c:2590 +#: rewrite/rewriteHandler.c:2593 msgid "Junk view columns are not updatable." msgstr "Утилізовані стовпці подань не оновлюються." -#: rewrite/rewriteHandler.c:2595 +#: rewrite/rewriteHandler.c:2598 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Стовпці подання, які не є стовпцями базового зв'язку, не оновлюються." -#: rewrite/rewriteHandler.c:2598 +#: rewrite/rewriteHandler.c:2601 msgid "View columns that refer to system columns are not updatable." msgstr "Стовпці подання, які посилаються на системні стовпці, не оновлюються." -#: rewrite/rewriteHandler.c:2601 +#: rewrite/rewriteHandler.c:2604 msgid "View columns that return whole-row references are not updatable." msgstr "Стовпці подання, що повертають посилання на весь рядок, не оновлюються." -#: rewrite/rewriteHandler.c:2662 +#: rewrite/rewriteHandler.c:2665 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Подання які містять DISTINCT не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2665 +#: rewrite/rewriteHandler.c:2668 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Подання які містять GROUP BY не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2668 +#: rewrite/rewriteHandler.c:2671 msgid "Views containing HAVING are not automatically updatable." msgstr "Подання які містять HAVING не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2671 +#: rewrite/rewriteHandler.c:2674 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Подання які містять UNION, INTERSECT, або EXCEPT не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2674 +#: rewrite/rewriteHandler.c:2677 msgid "Views containing WITH are not automatically updatable." msgstr "Подання які містять WITH не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2677 +#: rewrite/rewriteHandler.c:2680 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Подання які містять LIMIT або OFFSET не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2689 +#: rewrite/rewriteHandler.c:2692 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Подання які повертають агрегатні функції не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2692 +#: rewrite/rewriteHandler.c:2695 msgid "Views that return window functions are not automatically updatable." msgstr "Подання які повертають віконні функції не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2695 +#: rewrite/rewriteHandler.c:2698 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Подання які повертають set-returning функції не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2702 rewrite/rewriteHandler.c:2706 -#: rewrite/rewriteHandler.c:2714 +#: rewrite/rewriteHandler.c:2705 rewrite/rewriteHandler.c:2709 +#: rewrite/rewriteHandler.c:2717 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Подання які обирають дані не з одної таблиці або подання не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2717 +#: rewrite/rewriteHandler.c:2720 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Подання які містять TABLESAMPLE не оновлюються автоматично." -#: rewrite/rewriteHandler.c:2741 +#: rewrite/rewriteHandler.c:2744 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Подання які не мають оновлюваних стовпців не оновлюються автоматично." -#: rewrite/rewriteHandler.c:3238 +#: rewrite/rewriteHandler.c:3241 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "вставити дані в стовпець \"%s\" подання \"%s\" не можна" -#: rewrite/rewriteHandler.c:3246 +#: rewrite/rewriteHandler.c:3249 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "оновити дані в стовпці \"%s\" подання \"%s\" не можна" -#: rewrite/rewriteHandler.c:3728 +#: rewrite/rewriteHandler.c:3747 #, c-format msgid "DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH" msgstr "Правила DO INSTEAD NOTIFY не підтримуються для операторів, які змінюють дані в WITH" -#: rewrite/rewriteHandler.c:3739 +#: rewrite/rewriteHandler.c:3758 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "Правила DO INSTEAD NOTHING не підтримуються для операторів, які змінюють дані в WITH" -#: rewrite/rewriteHandler.c:3753 +#: rewrite/rewriteHandler.c:3772 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "умовні правила DO INSTEAD не підтримуються для операторів, які змінюють дані в WITH" -#: rewrite/rewriteHandler.c:3757 +#: rewrite/rewriteHandler.c:3776 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "Правила DO ALSO не підтримуються для операторів, які змінюють дані в WITH" -#: rewrite/rewriteHandler.c:3762 +#: rewrite/rewriteHandler.c:3781 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "складові правила DO INSTEAD не підтримуються операторами, які змінюють дані у WITH" -#: rewrite/rewriteHandler.c:3992 rewrite/rewriteHandler.c:4000 -#: rewrite/rewriteHandler.c:4008 +#: rewrite/rewriteHandler.c:4012 rewrite/rewriteHandler.c:4020 +#: rewrite/rewriteHandler.c:4028 #, c-format msgid "Views with conditional DO INSTEAD rules are not automatically updatable." msgstr "Подання з умовними правилами DO INSTEAD не оновлюються автоматично." -#: rewrite/rewriteHandler.c:4113 +#: rewrite/rewriteHandler.c:4134 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "виконати INSERT RETURNING для зв'язка \"%s\" не можна" -#: rewrite/rewriteHandler.c:4115 +#: rewrite/rewriteHandler.c:4136 #, 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:4120 +#: rewrite/rewriteHandler.c:4141 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "виконати UPDATE RETURNING для зв'язка \"%s\" не можна" -#: rewrite/rewriteHandler.c:4122 +#: rewrite/rewriteHandler.c:4143 #, 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:4127 +#: rewrite/rewriteHandler.c:4148 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "виконати DELETE RETURNING для зв'язка \"%s\" не можна" -#: rewrite/rewriteHandler.c:4129 +#: rewrite/rewriteHandler.c:4150 #, 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:4147 +#: rewrite/rewriteHandler.c:4168 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "INSERT з реченням ON CONFLICT не можна використовувати з таблицею, яка має правила INSERT або UPDATE" -#: rewrite/rewriteHandler.c:4204 +#: rewrite/rewriteHandler.c:4225 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH не можна використовувати в запиті, який переписаний правилами в декілька запитів" @@ -20156,47 +20182,47 @@ msgstr "об'єкт статистики \"%s.%s\" не вдалося обчи msgid "function returning record called in context that cannot accept type record" msgstr "функція, що повертає набір, викликана у контексті, що не приймає тип запис" -#: storage/buffer/bufmgr.c:598 storage/buffer/bufmgr.c:765 +#: storage/buffer/bufmgr.c:605 storage/buffer/bufmgr.c:772 #, c-format msgid "cannot access temporary tables of other sessions" msgstr "доступ до тимчасових таблиць з інших сесій заблоковано" -#: storage/buffer/bufmgr.c:843 +#: storage/buffer/bufmgr.c:850 #, c-format msgid "cannot extend relation %s beyond %u blocks" msgstr "не можна розширити відношення %s понад %u блоків" -#: storage/buffer/bufmgr.c:930 +#: storage/buffer/bufmgr.c:937 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "неочікуванні дані після EOF в блоці %u відношення %s" -#: storage/buffer/bufmgr.c:932 +#: storage/buffer/bufmgr.c:939 #, c-format msgid "This has been seen to occur with buggy kernels; consider updating your system." msgstr "Ця ситуація може виникати через помилки в ядрі; можливо, вам слід оновити вашу систему." -#: storage/buffer/bufmgr.c:1031 +#: storage/buffer/bufmgr.c:1038 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "неприпустима сторінка в блоці %u відношення %s; сторінка обнуляється" -#: storage/buffer/bufmgr.c:4534 +#: storage/buffer/bufmgr.c:4600 #, c-format msgid "could not write block %u of %s" msgstr "неможливо записати блок %u файлу %s" -#: storage/buffer/bufmgr.c:4536 +#: storage/buffer/bufmgr.c:4602 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Кілька неполадок --- можливо, постійна помилка запису." -#: storage/buffer/bufmgr.c:4557 storage/buffer/bufmgr.c:4576 +#: storage/buffer/bufmgr.c:4623 storage/buffer/bufmgr.c:4642 #, c-format msgid "writing block %u of relation %s" msgstr "записування блоку %u зв'язку %s" -#: storage/buffer/bufmgr.c:4880 +#: storage/buffer/bufmgr.c:4946 #, c-format msgid "snapshot too old" msgstr "знімок є застарим" @@ -20231,108 +20257,108 @@ msgstr "не вдалося видалити спільний набір фай msgid "could not truncate file \"%s\": %m" msgstr "не вдалося скоротити файл \"%s\": %m" -#: storage/file/fd.c:515 storage/file/fd.c:587 storage/file/fd.c:623 +#: storage/file/fd.c:512 storage/file/fd.c:584 storage/file/fd.c:620 #, c-format msgid "could not flush dirty data: %m" msgstr "не вдалося очистити \"брудні\" дані: %m" -#: storage/file/fd.c:545 +#: storage/file/fd.c:542 #, c-format msgid "could not determine dirty data size: %m" msgstr "не вдалося визначити розмір \"брудних\" даних: %m" -#: storage/file/fd.c:597 +#: storage/file/fd.c:594 #, c-format msgid "could not munmap() while flushing data: %m" msgstr "не вдалося munmap() під час очищення даних: %m" -#: storage/file/fd.c:836 +#: storage/file/fd.c:833 #, c-format msgid "could not link file \"%s\" to \"%s\": %m" msgstr "для файлу \"%s\" не вдалося створити посилання \"%s\": %m" -#: storage/file/fd.c:937 +#: storage/file/fd.c:928 #, c-format msgid "getrlimit failed: %m" msgstr "помилка getrlimit: %m" -#: storage/file/fd.c:1027 +#: storage/file/fd.c:1018 #, c-format msgid "insufficient file descriptors available to start server process" msgstr "недостатньо доступних дескрипторів файлу для запуску серверного процесу" -#: storage/file/fd.c:1028 +#: storage/file/fd.c:1019 #, c-format msgid "System allows %d, we need at least %d." msgstr "Система дозволяє %d, потрібно щонайменше %d." -#: storage/file/fd.c:1079 storage/file/fd.c:2416 storage/file/fd.c:2526 -#: storage/file/fd.c:2677 +#: storage/file/fd.c:1070 storage/file/fd.c:2407 storage/file/fd.c:2517 +#: storage/file/fd.c:2668 #, c-format msgid "out of file descriptors: %m; release and retry" msgstr "нестача дескрипторів файлу: %m; вивільніть і спробуйте знову" -#: storage/file/fd.c:1453 +#: storage/file/fd.c:1444 #, c-format msgid "temporary file: path \"%s\", size %lu" msgstr "тимчасовий файл: шлях \"%s\", розмір %lu" -#: storage/file/fd.c:1584 +#: storage/file/fd.c:1575 #, c-format msgid "cannot create temporary directory \"%s\": %m" msgstr "неможливо створити тимчасовий каталог \"%s\": %m" -#: storage/file/fd.c:1591 +#: storage/file/fd.c:1582 #, c-format msgid "cannot create temporary subdirectory \"%s\": %m" msgstr "неможливо створити тимчасовий підкаталог \"%s\": %m" -#: storage/file/fd.c:1784 +#: storage/file/fd.c:1775 #, c-format msgid "could not create temporary file \"%s\": %m" msgstr "неможливо створити тимчасовий файл \"%s\": %m" -#: storage/file/fd.c:1818 +#: storage/file/fd.c:1809 #, c-format msgid "could not open temporary file \"%s\": %m" msgstr "неможливо відкрити тимчасовий файл \"%s\": %m" -#: storage/file/fd.c:1859 +#: storage/file/fd.c:1850 #, c-format msgid "could not unlink temporary file \"%s\": %m" msgstr "помилка видалення тимчасового файлу \"%s\": %m" -#: storage/file/fd.c:1947 +#: storage/file/fd.c:1938 #, c-format msgid "could not delete file \"%s\": %m" msgstr "не вдалося видалити файл \"%s\": %m" -#: storage/file/fd.c:2127 +#: storage/file/fd.c:2118 #, c-format msgid "temporary file size exceeds temp_file_limit (%dkB)" msgstr "розмір тимчасового файлу перевищує temp_file_limit (%d Кб)" -#: storage/file/fd.c:2392 storage/file/fd.c:2451 +#: storage/file/fd.c:2383 storage/file/fd.c:2442 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" msgstr "перевищено maxAllocatedDescs (%d) при спробі відкрити файл \"%s\"" -#: storage/file/fd.c:2496 +#: storage/file/fd.c:2487 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" msgstr "перевищено maxAllocatedDescs (%d) при спробі виконати команду \"%s\"" -#: storage/file/fd.c:2653 +#: storage/file/fd.c:2644 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "перевищено maxAllocatedDescs (%d) при спробі відкрити каталог \"%s\"" -#: storage/file/fd.c:3183 +#: storage/file/fd.c:3174 #, c-format msgid "unexpected file found in temporary-files directory: \"%s\"" msgstr "знайдено неочікуваний файл в каталозі тимчасових файлів: \"%s\"" -#: storage/file/fd.c:3312 +#: storage/file/fd.c:3303 #, c-format msgid "could not synchronize file system for file \"%s\": %m" msgstr "не вдалося синхронізувати файлову систему для файлу \"%s\": %m" @@ -20616,102 +20642,102 @@ msgstr "виявлено взаємне блокування" msgid "See server log for query details." msgstr "Подробиці запиту перегляньте в записі серверу." -#: storage/lmgr/lmgr.c:825 +#: storage/lmgr/lmgr.c:831 #, c-format msgid "while updating tuple (%u,%u) in relation \"%s\"" msgstr "при оновленні кортежу (%u,%u) в зв'язку \"%s\"" -#: storage/lmgr/lmgr.c:828 +#: storage/lmgr/lmgr.c:834 #, c-format msgid "while deleting tuple (%u,%u) in relation \"%s\"" msgstr "при видаленні кортежу (%u,%u) в зв'язку \"%s\"" -#: storage/lmgr/lmgr.c:831 +#: storage/lmgr/lmgr.c:837 #, c-format msgid "while locking tuple (%u,%u) in relation \"%s\"" msgstr "при блокуванні кортежу (%u,%u) в зв'язку \"%s\"" -#: storage/lmgr/lmgr.c:834 +#: storage/lmgr/lmgr.c:840 #, c-format msgid "while locking updated version (%u,%u) of tuple in relation \"%s\"" msgstr "при блокуванні оновленої версії (%u,%u) кортежу в зв'язку \"%s\"" -#: storage/lmgr/lmgr.c:837 +#: storage/lmgr/lmgr.c:843 #, c-format msgid "while inserting index tuple (%u,%u) in relation \"%s\"" msgstr "при вставці кортежу індексу (%u,%u) в зв'язку \"%s\"" -#: storage/lmgr/lmgr.c:840 +#: storage/lmgr/lmgr.c:846 #, c-format msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\"" msgstr "під час перевірки унікальності кортежа (%u,%u) у відношенні \"%s\"" -#: storage/lmgr/lmgr.c:843 +#: storage/lmgr/lmgr.c:849 #, c-format msgid "while rechecking updated tuple (%u,%u) in relation \"%s\"" msgstr "під час повторної перевірки оновленого кортежа (%u,%u) у відношенні \"%s\"" -#: storage/lmgr/lmgr.c:846 +#: storage/lmgr/lmgr.c:852 #, c-format msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"" msgstr "під час перевірки обмеження-виключення для кортежа (%u,%u) у відношенні \"%s\"" -#: storage/lmgr/lmgr.c:1139 +#: storage/lmgr/lmgr.c:1145 #, c-format msgid "relation %u of database %u" msgstr "відношення %u бази даних %u" -#: storage/lmgr/lmgr.c:1145 +#: storage/lmgr/lmgr.c:1151 #, c-format msgid "extension of relation %u of database %u" msgstr "розширення відношення %u бази даних %u" -#: storage/lmgr/lmgr.c:1151 +#: storage/lmgr/lmgr.c:1157 #, c-format msgid "pg_database.datfrozenxid of database %u" msgstr "pg_database.datfrozenxid бази даних %u" -#: storage/lmgr/lmgr.c:1156 +#: storage/lmgr/lmgr.c:1162 #, c-format msgid "page %u of relation %u of database %u" msgstr "сторінка %u відношення %u бази даних %u" -#: storage/lmgr/lmgr.c:1163 +#: storage/lmgr/lmgr.c:1169 #, c-format msgid "tuple (%u,%u) of relation %u of database %u" msgstr "кортеж (%u,%u) відношення %u бази даних %u" -#: storage/lmgr/lmgr.c:1171 +#: storage/lmgr/lmgr.c:1177 #, c-format msgid "transaction %u" msgstr "транзакція %u" -#: storage/lmgr/lmgr.c:1176 +#: storage/lmgr/lmgr.c:1182 #, c-format msgid "virtual transaction %d/%u" msgstr "віртуальна транзакція %d/%u" -#: storage/lmgr/lmgr.c:1182 +#: storage/lmgr/lmgr.c:1188 #, c-format msgid "speculative token %u of transaction %u" msgstr "орієнтовний маркер %u транзакції %u" -#: storage/lmgr/lmgr.c:1188 +#: storage/lmgr/lmgr.c:1194 #, c-format msgid "object %u of class %u of database %u" msgstr "об’єкт %u класу %u бази даних %u" -#: storage/lmgr/lmgr.c:1196 +#: storage/lmgr/lmgr.c:1202 #, c-format msgid "user lock [%u,%u,%u]" msgstr "користувацьке блокування [%u,%u,%u]" -#: storage/lmgr/lmgr.c:1203 +#: storage/lmgr/lmgr.c:1209 #, c-format msgid "advisory lock [%u,%u,%u,%u]" msgstr "рекомендаційне блокування [%u,%u,%u,%u]" -#: storage/lmgr/lmgr.c:1211 +#: storage/lmgr/lmgr.c:1217 #, c-format msgid "unrecognized locktag type %d" msgstr "нерозпізнаний тип блокування %d" @@ -21259,12 +21285,12 @@ msgstr "відключення: час сеансу: %d:%02d:%02d.%03d кори msgid "bind message has %d result formats but query has %d columns" msgstr "повідомлення bind має %d форматів, але запит має %d стовпців" -#: tcop/pquery.c:939 tcop/pquery.c:1698 +#: tcop/pquery.c:939 tcop/pquery.c:1689 #, c-format msgid "cursor can only scan forward" msgstr "курсор може сканувати лише вперед" -#: tcop/pquery.c:940 tcop/pquery.c:1699 +#: tcop/pquery.c:940 tcop/pquery.c:1690 #, c-format msgid "Declare it with SCROLL option to enable backward scan." msgstr "Оголосити з параметром SCROLL, щоб активувати зворотню розгортку." @@ -21304,6 +21330,11 @@ msgstr "не можна виконати %s у фоновому процесі" msgid "must be superuser to do CHECKPOINT" msgstr "для виконання CHECKPOINT потрібно бути суперкористувачем" +#: tcop/utility.c:1866 +#, c-format +msgid "CREATE STATISTICS only supports relation names in the FROM clause" +msgstr "CREATE STATISTICS підтримує тільки назви відношень в реченні FROM" + #: tsearch/dict_ispell.c:52 tsearch/dict_thesaurus.c:615 #, c-format msgid "multiple DictFile parameters" @@ -21492,7 +21523,7 @@ msgstr "кількість псевдонімів перевищує вказа msgid "affix file contains both old-style and new-style commands" msgstr "файл affix містить команди і в старому, і в новому стилі" -#: tsearch/to_tsany.c:195 utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:1121 +#: tsearch/to_tsany.c:195 utils/adt/tsvector.c:269 utils/adt/tsvector_op.c:1121 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" msgstr "рядок занадто довгий для tsvector (%d байт, максимум %d байт)" @@ -21559,112 +21590,112 @@ msgstr "Значення ShortWord повинно бути >= 0" msgid "MaxFragments should be >= 0" msgstr "Значення MaxFragments повинно бути >= 0" -#: utils/adt/acl.c:165 utils/adt/name.c:93 +#: utils/adt/acl.c:182 utils/adt/name.c:93 #, c-format msgid "identifier too long" msgstr "занадто довгий ідентифікатор" -#: utils/adt/acl.c:166 utils/adt/name.c:94 +#: utils/adt/acl.c:183 utils/adt/name.c:94 #, c-format msgid "Identifier must be less than %d characters." msgstr "Ідентифікатор повинен бути короче ніж %d символів." -#: utils/adt/acl.c:249 +#: utils/adt/acl.c:266 #, c-format msgid "unrecognized key word: \"%s\"" msgstr "нерозпізнане ключове слово: \"%s\"" -#: utils/adt/acl.c:250 +#: utils/adt/acl.c:267 #, c-format msgid "ACL key word must be \"group\" or \"user\"." msgstr "Ключовим словом ACL повинно бути \"group\" або \"user\"." -#: utils/adt/acl.c:255 +#: utils/adt/acl.c:272 #, c-format msgid "missing name" msgstr "пропущено ім'я" -#: utils/adt/acl.c:256 +#: utils/adt/acl.c:273 #, c-format msgid "A name must follow the \"group\" or \"user\" key word." msgstr "За ключовими словами \"group\" або \"user\" повинно йти ім'я." -#: utils/adt/acl.c:262 +#: utils/adt/acl.c:279 #, c-format msgid "missing \"=\" sign" msgstr "пропущено знак \"=\"" -#: utils/adt/acl.c:315 +#: utils/adt/acl.c:332 #, c-format msgid "invalid mode character: must be one of \"%s\"" msgstr "неприпустимий символ режиму: повинен бути один з \"%s\"" -#: utils/adt/acl.c:337 +#: utils/adt/acl.c:354 #, c-format msgid "a name must follow the \"/\" sign" msgstr "за знаком \"/\" повинно прямувати ім'я" -#: utils/adt/acl.c:345 +#: utils/adt/acl.c:362 #, c-format msgid "defaulting grantor to user ID %u" msgstr "призначив права користувач з ідентифікатором %u" -#: utils/adt/acl.c:531 +#: utils/adt/acl.c:548 #, c-format msgid "ACL array contains wrong data type" msgstr "Масив ACL містить неправильний тип даних" -#: utils/adt/acl.c:535 +#: utils/adt/acl.c:552 #, c-format msgid "ACL arrays must be one-dimensional" msgstr "Масиви ACL повинні бути одновимірними" -#: utils/adt/acl.c:539 +#: utils/adt/acl.c:556 #, c-format msgid "ACL arrays must not contain null values" msgstr "Масиви ACL не повинні містити значення null" -#: utils/adt/acl.c:563 +#: utils/adt/acl.c:580 #, c-format msgid "extra garbage at the end of the ACL specification" msgstr "зайве сміття в кінці специфікації ACL" -#: utils/adt/acl.c:1198 +#: utils/adt/acl.c:1215 #, c-format msgid "grant options cannot be granted back to your own grantor" msgstr "параметри призначення прав не можна повернути тому, хто призначив їх вам" -#: utils/adt/acl.c:1259 +#: utils/adt/acl.c:1276 #, c-format msgid "dependent privileges exist" msgstr "залежні права існують" -#: utils/adt/acl.c:1260 +#: utils/adt/acl.c:1277 #, c-format msgid "Use CASCADE to revoke them too." msgstr "Використайте CASCADE, щоб відкликати їх." -#: utils/adt/acl.c:1514 +#: utils/adt/acl.c:1531 #, c-format msgid "aclinsert is no longer supported" msgstr "aclinsert більше не підтримується" -#: utils/adt/acl.c:1524 +#: utils/adt/acl.c:1541 #, c-format msgid "aclremove is no longer supported" msgstr "aclremove більше не підтримується" -#: utils/adt/acl.c:1610 utils/adt/acl.c:1664 +#: utils/adt/acl.c:1627 utils/adt/acl.c:1681 #, c-format msgid "unrecognized privilege type: \"%s\"" msgstr "нерозпізнаний тип прав: \"%s\"" -#: utils/adt/acl.c:3446 utils/adt/regproc.c:101 utils/adt/regproc.c:277 +#: utils/adt/acl.c:3463 utils/adt/regproc.c:101 utils/adt/regproc.c:277 #, c-format msgid "function \"%s\" does not exist" msgstr "функція \"%s\" не існує" -#: utils/adt/acl.c:4898 +#: utils/adt/acl.c:4915 #, c-format msgid "must be member of role \"%s\"" msgstr "потрібно бути учасником ролі \"%s\"" @@ -21690,7 +21721,7 @@ msgstr "тип вхідних даних не є масивом" #: utils/adt/int.c:1004 utils/adt/int.c:1037 utils/adt/int.c:1051 #: utils/adt/int.c:1065 utils/adt/int.c:1096 utils/adt/int.c:1178 #: utils/adt/int.c:1242 utils/adt/int.c:1310 utils/adt/int.c:1316 -#: utils/adt/int8.c:1299 utils/adt/numeric.c:1783 utils/adt/numeric.c:4246 +#: utils/adt/int8.c:1299 utils/adt/numeric.c:1784 utils/adt/numeric.c:4247 #: utils/adt/varbit.c:1195 utils/adt/varbit.c:1596 utils/adt/varlena.c:1114 #: utils/adt/varlena.c:3422 #, c-format @@ -22035,8 +22066,8 @@ msgstr "перетворення кодування з %s в ASCII не підт #: utils/adt/jsonpath.c:182 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/network.c:100 utils/adt/numeric.c:701 -#: utils/adt/numeric.c:720 utils/adt/numeric.c:6901 utils/adt/numeric.c:6925 -#: utils/adt/numeric.c:6949 utils/adt/numeric.c:7907 utils/adt/numutils.c:116 +#: utils/adt/numeric.c:720 utils/adt/numeric.c:6902 utils/adt/numeric.c:6926 +#: utils/adt/numeric.c:6950 utils/adt/numeric.c:7908 utils/adt/numutils.c:116 #: utils/adt/numutils.c:126 utils/adt/numutils.c:170 utils/adt/numutils.c:246 #: utils/adt/numutils.c:322 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:74 @@ -22057,9 +22088,9 @@ msgstr "гроші поза діапазоном" #: utils/adt/int.c:1080 utils/adt/int.c:1118 utils/adt/int.c:1146 #: utils/adt/int8.c:600 utils/adt/int8.c:658 utils/adt/int8.c:985 #: utils/adt/int8.c:1065 utils/adt/int8.c:1127 utils/adt/int8.c:1207 -#: utils/adt/numeric.c:3046 utils/adt/numeric.c:3069 utils/adt/numeric.c:3154 -#: utils/adt/numeric.c:3172 utils/adt/numeric.c:3268 utils/adt/numeric.c:8456 -#: utils/adt/numeric.c:8746 utils/adt/numeric.c:10392 +#: utils/adt/numeric.c:3047 utils/adt/numeric.c:3070 utils/adt/numeric.c:3155 +#: utils/adt/numeric.c:3173 utils/adt/numeric.c:3269 utils/adt/numeric.c:8457 +#: utils/adt/numeric.c:8747 utils/adt/numeric.c:10393 #: utils/adt/timestamp.c:3317 #, c-format msgid "division by zero" @@ -22102,7 +22133,7 @@ msgid "date out of range: \"%s\"" msgstr "дата поза діапазоном: \"%s\"" #: utils/adt/date.c:214 utils/adt/date.c:525 utils/adt/date.c:549 -#: utils/adt/xml.c:2259 +#: utils/adt/xml.c:2253 #, c-format msgid "date out of range" msgstr "дата поза діапазоном" @@ -22164,8 +22195,8 @@ msgstr "одиниці вимірювання дати \"%s\" не розпіз #: utils/adt/timestamp.c:5575 utils/adt/timestamp.c:5662 #: utils/adt/timestamp.c:5703 utils/adt/timestamp.c:5707 #: utils/adt/timestamp.c:5776 utils/adt/timestamp.c:5780 -#: utils/adt/timestamp.c:5794 utils/adt/timestamp.c:5828 utils/adt/xml.c:2281 -#: utils/adt/xml.c:2288 utils/adt/xml.c:2308 utils/adt/xml.c:2315 +#: utils/adt/timestamp.c:5794 utils/adt/timestamp.c:5828 utils/adt/xml.c:2275 +#: utils/adt/xml.c:2282 utils/adt/xml.c:2302 utils/adt/xml.c:2309 #, c-format msgid "timestamp out of range" msgstr "позначка часу поза діапазоном" @@ -22182,7 +22213,7 @@ msgstr "значення поля типу time поза діапазоном: % #: utils/adt/date.c:2109 utils/adt/date.c:2643 utils/adt/float.c:1047 #: utils/adt/float.c:1123 utils/adt/int.c:614 utils/adt/int.c:661 -#: utils/adt/int.c:696 utils/adt/int8.c:499 utils/adt/numeric.c:2450 +#: utils/adt/int.c:696 utils/adt/int8.c:499 utils/adt/numeric.c:2451 #: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3419 #: utils/adt/timestamp.c:3450 #, c-format @@ -22375,34 +22406,34 @@ msgstr "\"%s\" поза діапазоном для типу double precision" #: utils/adt/float.c:1258 utils/adt/float.c:1332 utils/adt/int.c:334 #: utils/adt/int.c:872 utils/adt/int.c:894 utils/adt/int.c:908 #: utils/adt/int.c:922 utils/adt/int.c:954 utils/adt/int.c:1192 -#: utils/adt/int8.c:1320 utils/adt/numeric.c:4358 utils/adt/numeric.c:4363 +#: utils/adt/int8.c:1320 utils/adt/numeric.c:4359 utils/adt/numeric.c:4364 #, c-format msgid "smallint out of range" msgstr "двобайтове ціле поза діапазоном" -#: utils/adt/float.c:1458 utils/adt/numeric.c:3564 utils/adt/numeric.c:9339 +#: utils/adt/float.c:1458 utils/adt/numeric.c:3565 utils/adt/numeric.c:9340 #, c-format msgid "cannot take square root of a negative number" msgstr "вилучити квадратний корінь від'ємного числа не можна" -#: utils/adt/float.c:1526 utils/adt/numeric.c:3839 utils/adt/numeric.c:3951 +#: utils/adt/float.c:1526 utils/adt/numeric.c:3840 utils/adt/numeric.c:3952 #, c-format msgid "zero raised to a negative power is undefined" msgstr "нуль у від'ємному ступені дає невизначеність" -#: utils/adt/float.c:1530 utils/adt/numeric.c:3843 utils/adt/numeric.c:10244 +#: utils/adt/float.c:1530 utils/adt/numeric.c:3844 utils/adt/numeric.c:10245 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" msgstr "від'ємне число у не цілому ступені дає комплексний результат" -#: utils/adt/float.c:1706 utils/adt/float.c:1739 utils/adt/numeric.c:3751 -#: utils/adt/numeric.c:10017 +#: utils/adt/float.c:1706 utils/adt/float.c:1739 utils/adt/numeric.c:3752 +#: utils/adt/numeric.c:10018 #, c-format msgid "cannot take logarithm of zero" msgstr "обчислити логарифм нуля не можна" -#: utils/adt/float.c:1710 utils/adt/float.c:1743 utils/adt/numeric.c:3689 -#: utils/adt/numeric.c:3746 utils/adt/numeric.c:10021 +#: utils/adt/float.c:1710 utils/adt/float.c:1743 utils/adt/numeric.c:3690 +#: utils/adt/numeric.c:3747 utils/adt/numeric.c:10022 #, c-format msgid "cannot take logarithm of a negative number" msgstr "обчислити логарифм від'ємного числа не можна" @@ -22421,22 +22452,22 @@ msgstr "введене значення поза діапазоном" msgid "setseed parameter %g is out of allowed range [-1,1]" msgstr "параметр setseed %g поза допустимим діапазоном [-1,1]" -#: utils/adt/float.c:4030 utils/adt/numeric.c:1723 +#: utils/adt/float.c:4030 utils/adt/numeric.c:1724 #, c-format msgid "count must be greater than zero" msgstr "лічильник повинен бути більше нуля" -#: utils/adt/float.c:4035 utils/adt/numeric.c:1734 +#: utils/adt/float.c:4035 utils/adt/numeric.c:1735 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" msgstr "операнд, нижня границя і верхня границя не можуть бути NaN" -#: utils/adt/float.c:4041 utils/adt/numeric.c:1739 +#: utils/adt/float.c:4041 utils/adt/numeric.c:1740 #, c-format msgid "lower and upper bounds must be finite" msgstr "нижня і верхня границі повинні бути скінченними" -#: utils/adt/float.c:4075 utils/adt/numeric.c:1753 +#: utils/adt/float.c:4075 utils/adt/numeric.c:1754 #, c-format msgid "lower bound cannot equal upper bound" msgstr "нижня границя не може дорівнювати верхній границі" @@ -22846,7 +22877,7 @@ msgstr "розмір кроку не може дорівнювати нулю" #: utils/adt/int8.c:1037 utils/adt/int8.c:1051 utils/adt/int8.c:1084 #: utils/adt/int8.c:1098 utils/adt/int8.c:1112 utils/adt/int8.c:1143 #: utils/adt/int8.c:1165 utils/adt/int8.c:1179 utils/adt/int8.c:1193 -#: utils/adt/int8.c:1355 utils/adt/int8.c:1390 utils/adt/numeric.c:4317 +#: utils/adt/int8.c:1355 utils/adt/int8.c:1390 utils/adt/numeric.c:4318 #: utils/adt/varbit.c:1676 #, c-format msgid "bigint out of range" @@ -22964,23 +22995,23 @@ msgstr "привести об'єкт jsonb до типу %s не можна" msgid "cannot cast jsonb array or object to type %s" msgstr "привести масив або об'єкт jsonb до типу %s не можна" -#: utils/adt/jsonb_util.c:751 +#: utils/adt/jsonb_util.c:748 #, c-format msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)" msgstr "кількість пар об'єкта jsonb перевищує максимально дозволену (%zu)" -#: utils/adt/jsonb_util.c:792 +#: utils/adt/jsonb_util.c:789 #, c-format msgid "number of jsonb array elements exceeds the maximum allowed (%zu)" msgstr "кількість елементів масиву jsonb перевищує максимально дозволену(%zu)" -#: utils/adt/jsonb_util.c:1666 utils/adt/jsonb_util.c:1686 +#: utils/adt/jsonb_util.c:1672 utils/adt/jsonb_util.c:1692 #, c-format msgid "total size of jsonb array elements exceeds the maximum of %u bytes" msgstr "загальний розмір елементів масиву jsonb перевищує максимум (%u байт)" -#: utils/adt/jsonb_util.c:1747 utils/adt/jsonb_util.c:1782 -#: utils/adt/jsonb_util.c:1802 +#: utils/adt/jsonb_util.c:1753 utils/adt/jsonb_util.c:1788 +#: utils/adt/jsonb_util.c:1808 #, c-format msgid "total size of jsonb object elements exceeds the maximum of %u bytes" msgstr "загальний розмір елементів об'єкту jsonb перевищує максимум (%u байт)" @@ -23388,12 +23419,12 @@ msgstr "недетерміновані параметри сортування msgid "LIKE pattern must not end with escape character" msgstr "Шаблон LIKE не повинен закінчуватись символом виходу" -#: utils/adt/like_match.c:293 utils/adt/regexp.c:700 +#: utils/adt/like_match.c:293 utils/adt/regexp.c:701 #, c-format msgid "invalid escape string" msgstr "неприпустимий рядок виходу" -#: utils/adt/like_match.c:294 utils/adt/regexp.c:701 +#: utils/adt/like_match.c:294 utils/adt/regexp.c:702 #, c-format msgid "Escape string must be empty or one character." msgstr "Рядок виходу повинен бути пустим або складатися з одного символу." @@ -23674,46 +23705,46 @@ msgstr "розмір кроку не може бути NaN" msgid "step size cannot be infinity" msgstr "розмір кроку не може бути нескінченністю" -#: utils/adt/numeric.c:3504 +#: utils/adt/numeric.c:3505 #, c-format msgid "factorial of a negative number is undefined" msgstr "факторіал від'ємного числа не визначено" -#: utils/adt/numeric.c:3514 utils/adt/numeric.c:6964 utils/adt/numeric.c:7437 -#: utils/adt/numeric.c:9814 utils/adt/numeric.c:10302 utils/adt/numeric.c:10428 -#: utils/adt/numeric.c:10502 +#: utils/adt/numeric.c:3515 utils/adt/numeric.c:6965 utils/adt/numeric.c:7438 +#: utils/adt/numeric.c:9815 utils/adt/numeric.c:10303 utils/adt/numeric.c:10429 +#: utils/adt/numeric.c:10503 #, c-format msgid "value overflows numeric format" msgstr "значення переповнюють формат numeric" -#: utils/adt/numeric.c:4224 utils/adt/numeric.c:4304 utils/adt/numeric.c:4345 -#: utils/adt/numeric.c:4539 +#: utils/adt/numeric.c:4225 utils/adt/numeric.c:4305 utils/adt/numeric.c:4346 +#: utils/adt/numeric.c:4540 #, c-format msgid "cannot convert NaN to %s" msgstr "неможливо перетворити NaN на %s" -#: utils/adt/numeric.c:4228 utils/adt/numeric.c:4308 utils/adt/numeric.c:4349 -#: utils/adt/numeric.c:4543 +#: utils/adt/numeric.c:4229 utils/adt/numeric.c:4309 utils/adt/numeric.c:4350 +#: utils/adt/numeric.c:4544 #, c-format msgid "cannot convert infinity to %s" msgstr "неможливо перетворити нескінченність на %s" -#: utils/adt/numeric.c:4552 +#: utils/adt/numeric.c:4553 #, c-format msgid "pg_lsn out of range" msgstr "pg_lsn поза діапазоном" -#: utils/adt/numeric.c:7521 utils/adt/numeric.c:7568 +#: utils/adt/numeric.c:7522 utils/adt/numeric.c:7569 #, c-format msgid "numeric field overflow" msgstr "надлишок поля numeric" -#: utils/adt/numeric.c:7522 +#: utils/adt/numeric.c:7523 #, c-format msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." msgstr "Поле з точністю %d, масштабом %d повинне округлятись до абсолютного значення меньше, ніж %s%d." -#: utils/adt/numeric.c:7569 +#: utils/adt/numeric.c:7570 #, c-format msgid "A field with precision %d, scale %d cannot hold an infinite value." msgstr "Поле з точністю %d, масштабом %d не може містити нескінченне значення." @@ -23754,99 +23785,99 @@ msgstr "символ не може бути null" msgid "percentile value %g is not between 0 and 1" msgstr "значення процентиля %g не є між 0 і 1" -#: utils/adt/pg_locale.c:1228 +#: utils/adt/pg_locale.c:1229 #, c-format msgid "Apply system library package updates." msgstr "Застосуйте оновлення для пакету з системною бібліотекою." -#: utils/adt/pg_locale.c:1442 +#: utils/adt/pg_locale.c:1445 #, c-format msgid "could not create locale \"%s\": %m" msgstr "не вдалося створити локалізацію \"%s\": %m" -#: utils/adt/pg_locale.c:1445 +#: utils/adt/pg_locale.c:1448 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "Операційній системі не вдалося знайти дані локалізації з іменем \"%s\"." -#: utils/adt/pg_locale.c:1547 +#: utils/adt/pg_locale.c:1550 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "параметри сортування з різними значеннями collate і ctype не підтримуються на цій платформі" -#: utils/adt/pg_locale.c:1556 +#: utils/adt/pg_locale.c:1559 #, c-format msgid "collation provider LIBC is not supported on this platform" msgstr "провайдер параметрів сортування LIBC не підтримується на цій платформі" -#: utils/adt/pg_locale.c:1568 +#: utils/adt/pg_locale.c:1571 #, c-format msgid "collations with different collate and ctype values are not supported by ICU" msgstr "ICU не підтримує параметри сортування з різними значеннями collate і ctype" -#: utils/adt/pg_locale.c:1574 utils/adt/pg_locale.c:1661 -#: utils/adt/pg_locale.c:1940 +#: utils/adt/pg_locale.c:1577 utils/adt/pg_locale.c:1664 +#: utils/adt/pg_locale.c:1943 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "не вдалося відкрити сортувальник для локалізації \"%s\": %s" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1591 #, c-format msgid "ICU is not supported in this build" msgstr "ICU не підтримується в цій збірці" -#: utils/adt/pg_locale.c:1609 +#: utils/adt/pg_locale.c:1612 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "для параметру сортування \"%s\" який не має фактичної версії, була вказана версія" -#: utils/adt/pg_locale.c:1616 +#: utils/adt/pg_locale.c:1619 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "невідповідність версій для параметру сортування \"%s\"" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "The collation in the database was created using version %s, but the operating system provides version %s." msgstr "Параметр сортування в базі даних був створений з версією %s, але операційна система надає версію %s." -#: utils/adt/pg_locale.c:1621 +#: utils/adt/pg_locale.c:1624 #, 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 "Перебудуйте всі об'єкти, які стосуються цього параметру сортування і виконайте ALTER COLLATION %s REFRESH VERSION, або побудуйте PostgreSQL з правильною версією бібліотеки." -#: utils/adt/pg_locale.c:1692 +#: utils/adt/pg_locale.c:1695 #, c-format msgid "could not load locale \"%s\"" msgstr "не вдалося завантажити локаль \"%s\"" -#: utils/adt/pg_locale.c:1717 +#: utils/adt/pg_locale.c:1720 #, c-format msgid "could not get collation version for locale \"%s\": error code %lu" msgstr "не вдалося отримати версію параметрів сортування для локалізації \"%s\": код помилки %lu" -#: utils/adt/pg_locale.c:1755 +#: utils/adt/pg_locale.c:1758 #, c-format msgid "encoding \"%s\" not supported by ICU" msgstr "ICU не підтримує кодування \"%s\"" -#: utils/adt/pg_locale.c:1762 +#: utils/adt/pg_locale.c:1765 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "не вдалося відкрити перетворювач ICU для кодування \"%s\": %s" -#: utils/adt/pg_locale.c:1793 utils/adt/pg_locale.c:1802 -#: utils/adt/pg_locale.c:1831 utils/adt/pg_locale.c:1841 +#: utils/adt/pg_locale.c:1796 utils/adt/pg_locale.c:1805 +#: utils/adt/pg_locale.c:1834 utils/adt/pg_locale.c:1844 #, c-format msgid "%s failed: %s" msgstr "%s помилка: %s" -#: utils/adt/pg_locale.c:2113 +#: utils/adt/pg_locale.c:2116 #, c-format msgid "invalid multibyte character for locale" msgstr "неприпустимий мультибайтний символ для локалізації" -#: utils/adt/pg_locale.c:2114 +#: utils/adt/pg_locale.c:2117 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "Параметр локалізації серверу LC_CTYPE, можливо, несумісний з кодуванням бази даних." @@ -23956,7 +23987,7 @@ msgstr "Занадто багато ком." msgid "Junk after right parenthesis or bracket." msgstr "Сміття після правої дужки." -#: utils/adt/regexp.c:289 utils/adt/regexp.c:1543 utils/adt/varlena.c:4549 +#: utils/adt/regexp.c:289 utils/adt/regexp.c:1612 utils/adt/varlena.c:4549 #, c-format msgid "regular expression failed: %s" msgstr "помилка в регулярному виразі: %s" @@ -23966,23 +23997,23 @@ msgstr "помилка в регулярному виразі: %s" msgid "invalid regular expression option: \"%.*s\"" msgstr "неприпустимий параметр регулярного виразу: \"%.*s\"" -#: utils/adt/regexp.c:836 +#: utils/adt/regexp.c:848 #, c-format msgid "SQL regular expression may not contain more than two escape-double-quote separators" msgstr "Регулярний вираз SQL не може містити більше двох роздільників escape-double-quote" #. translator: %s is a SQL function name -#: utils/adt/regexp.c:981 utils/adt/regexp.c:1363 utils/adt/regexp.c:1418 +#: utils/adt/regexp.c:1050 utils/adt/regexp.c:1432 utils/adt/regexp.c:1487 #, c-format msgid "%s does not support the \"global\" option" msgstr "%s не підтримує параметр \"global\"" -#: utils/adt/regexp.c:983 +#: utils/adt/regexp.c:1052 #, c-format msgid "Use the regexp_matches function instead." msgstr "Використайте функцію regexp_matches замість." -#: utils/adt/regexp.c:1165 +#: utils/adt/regexp.c:1234 #, c-format msgid "too many regular expression matches" msgstr "занадто багато відповідностей для регулярного виразу" @@ -24008,7 +24039,7 @@ msgid "Use NONE to denote the missing argument of a unary operator." msgstr "Щоб позначити пропущений аргумент унарного оператору, використайте NONE." #: utils/adt/regproc.c:715 utils/adt/regproc.c:756 utils/adt/regproc.c:2055 -#: utils/adt/ruleutils.c:9828 utils/adt/ruleutils.c:9997 +#: utils/adt/ruleutils.c:9838 utils/adt/ruleutils.c:10007 #, c-format msgid "too many arguments" msgstr "занадто багато аргументів" @@ -24425,12 +24456,12 @@ msgstr "масив значимості не повинен містити null" msgid "weight out of range" msgstr "значимість поза діапазоном" -#: utils/adt/tsvector.c:215 +#: utils/adt/tsvector.c:212 #, c-format msgid "word is too long (%ld bytes, max %ld bytes)" msgstr "слово занадто довге (%ld байт, при максимумі %ld)" -#: utils/adt/tsvector.c:222 +#: utils/adt/tsvector.c:219 #, c-format msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" msgstr "рядок занадто довгий для tsvector (%ld байт, при максимумі %ld)" @@ -24728,7 +24759,7 @@ msgstr "XML-функції не підтримуються" msgid "This functionality requires the server to be built with libxml support." msgstr "Ця функціональність потребує, щоб сервер був побудований з підтримкою libxml." -#: utils/adt/xml.c:253 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:253 utils/mb/mbutils.c:628 #, c-format msgid "invalid encoding name \"%s\"" msgstr "неприпустиме ім’я кодування \"%s\"" @@ -24783,96 +24814,96 @@ msgstr "не вдалося встановити обробник XML-помил msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with." msgstr "Можливо це означає, що використовувана версія libxml2 несумісна з файлами-заголовками libxml2, з котрими був зібраний PostgreSQL." -#: utils/adt/xml.c:1985 +#: utils/adt/xml.c:1979 msgid "Invalid character value." msgstr "Неприпустиме значення символу." -#: utils/adt/xml.c:1988 +#: utils/adt/xml.c:1982 msgid "Space required." msgstr "Потребується пробіл." -#: utils/adt/xml.c:1991 +#: utils/adt/xml.c:1985 msgid "standalone accepts only 'yes' or 'no'." msgstr "значеннями атрибуту standalone можуть бути лише 'yes' або 'no'." -#: utils/adt/xml.c:1994 +#: utils/adt/xml.c:1988 msgid "Malformed declaration: missing version." msgstr "Неправильне оголошення: пропущена версія." -#: utils/adt/xml.c:1997 +#: utils/adt/xml.c:1991 msgid "Missing encoding in text declaration." msgstr "В оголошенні пропущене кодування." -#: utils/adt/xml.c:2000 +#: utils/adt/xml.c:1994 msgid "Parsing XML declaration: '?>' expected." msgstr "Аналіз XML-оголошення: '?>' очікується." -#: utils/adt/xml.c:2003 +#: utils/adt/xml.c:1997 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "Нерозпізнаний код помилки libxml: %d." -#: utils/adt/xml.c:2260 +#: utils/adt/xml.c:2254 #, c-format msgid "XML does not support infinite date values." msgstr "XML не підтримує безкінечні значення в датах." -#: utils/adt/xml.c:2282 utils/adt/xml.c:2309 +#: utils/adt/xml.c:2276 utils/adt/xml.c:2303 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML не підтримує безкінченні значення в позначках часу." -#: utils/adt/xml.c:2725 +#: utils/adt/xml.c:2719 #, c-format msgid "invalid query" msgstr "неприпустимий запит" -#: utils/adt/xml.c:2817 +#: utils/adt/xml.c:2811 #, c-format msgid "portal \"%s\" does not return tuples" msgstr "portal \"%s\" не повертає кортежі" -#: utils/adt/xml.c:4069 +#: utils/adt/xml.c:4063 #, c-format msgid "invalid array for XML namespace mapping" msgstr "неприпустимий масив з зіставленням простіру імен XML" -#: utils/adt/xml.c:4070 +#: utils/adt/xml.c:4064 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "Масив повинен бути двовимірним і містити 2 елемента по другій вісі." -#: utils/adt/xml.c:4094 +#: utils/adt/xml.c:4088 #, c-format msgid "empty XPath expression" msgstr "пустий вираз XPath" -#: utils/adt/xml.c:4146 +#: utils/adt/xml.c:4140 #, c-format msgid "neither namespace name nor URI may be null" msgstr "ні ім'я простіру імен ні URI не можуть бути null" -#: utils/adt/xml.c:4153 +#: utils/adt/xml.c:4147 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "не вдалося зареєструвати простір імен XML з ім'ям \"%s\" і URI \"%s\"" -#: utils/adt/xml.c:4510 +#: utils/adt/xml.c:4504 #, c-format msgid "DEFAULT namespace is not supported" msgstr "Простір імен DEFAULT не підтримується" -#: utils/adt/xml.c:4539 +#: utils/adt/xml.c:4533 #, c-format msgid "row path filter must not be empty string" msgstr "шлях фільтруючих рядків не повинен бути пустим" -#: utils/adt/xml.c:4573 +#: utils/adt/xml.c:4567 #, c-format msgid "column path filter must not be empty string" msgstr "шлях фільтруючого стовпця не повинен бути пустим" -#: utils/adt/xml.c:4720 +#: utils/adt/xml.c:4714 #, c-format msgid "more than one value returned by column XPath expression" msgstr "вираз XPath, який відбирає стовпець, повернув більше одного значення" @@ -24908,17 +24939,17 @@ msgstr "в класі операторів \"%s\" методу доступу %s msgid "cached plan must not change result type" msgstr "в кешованому плані не повинен змінюватись тип результату" -#: utils/cache/relcache.c:6328 +#: utils/cache/relcache.c:6344 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "не вдалося створити файл ініціалізації для кешу відношень \"%s\": %m" -#: utils/cache/relcache.c:6330 +#: utils/cache/relcache.c:6346 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Продовжуємо усе одно, але щось не так." -#: utils/cache/relcache.c:6652 +#: utils/cache/relcache.c:6668 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "не вдалося видалити файл кешу \"%s\": %m" @@ -25529,48 +25560,48 @@ msgstr "неочікуваний ідентифікатор кодування % msgid "unexpected encoding ID %d for WIN character sets" msgstr "неочікуваний ідентифікатор кодування %d для наборів символів WIN" -#: utils/mb/mbutils.c:297 utils/mb/mbutils.c:900 +#: utils/mb/mbutils.c:298 utils/mb/mbutils.c:901 #, c-format msgid "conversion between %s and %s is not supported" msgstr "перетворення між %s і %s не підтримується" -#: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 -#: utils/mb/mbutils.c:842 +#: utils/mb/mbutils.c:403 utils/mb/mbutils.c:431 utils/mb/mbutils.c:816 +#: utils/mb/mbutils.c:843 #, c-format msgid "String of %d bytes is too long for encoding conversion." msgstr "Рядок з %d байт занадто довгий для перетворення кодування." -#: utils/mb/mbutils.c:568 +#: utils/mb/mbutils.c:569 #, c-format msgid "invalid source encoding name \"%s\"" msgstr "неприпустиме ім’я вихідного кодування \"%s\"" -#: utils/mb/mbutils.c:573 +#: utils/mb/mbutils.c:574 #, c-format msgid "invalid destination encoding name \"%s\"" msgstr "неприпустиме ім’я кодування результату \"%s\"" -#: utils/mb/mbutils.c:713 +#: utils/mb/mbutils.c:714 #, c-format msgid "invalid byte value for encoding \"%s\": 0x%02x" msgstr "неприпустиме значення байту для кодування \"%s\": 0x%02x" -#: utils/mb/mbutils.c:877 +#: utils/mb/mbutils.c:878 #, c-format msgid "invalid Unicode code point" msgstr "неприпустима кодова точка Unicode" -#: utils/mb/mbutils.c:1146 +#: utils/mb/mbutils.c:1147 #, c-format msgid "bind_textdomain_codeset failed" msgstr "помилка в bind_textdomain_codeset" -#: utils/mb/mbutils.c:1667 +#: utils/mb/mbutils.c:1668 #, c-format msgid "invalid byte sequence for encoding \"%s\": %s" msgstr "неприпустима послідовність байтів для кодування \"%s\": %s" -#: utils/mb/mbutils.c:1700 +#: utils/mb/mbutils.c:1709 #, c-format msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\"" msgstr "символ з послідовністю байтів %s в кодуванні \"%s\" не має еквіваленту в кодуванні \"%s\"" @@ -27813,15 +27844,15 @@ msgstr "Помилка під час створення контексту па msgid "could not attach to dynamic shared area" msgstr "не вдалося підключитись до динамічно-спільної області" -#: utils/mmgr/mcxt.c:889 utils/mmgr/mcxt.c:925 utils/mmgr/mcxt.c:963 -#: utils/mmgr/mcxt.c:1001 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1120 -#: utils/mmgr/mcxt.c:1156 utils/mmgr/mcxt.c:1208 utils/mmgr/mcxt.c:1243 -#: utils/mmgr/mcxt.c:1278 +#: utils/mmgr/mcxt.c:892 utils/mmgr/mcxt.c:928 utils/mmgr/mcxt.c:966 +#: utils/mmgr/mcxt.c:1004 utils/mmgr/mcxt.c:1112 utils/mmgr/mcxt.c:1143 +#: utils/mmgr/mcxt.c:1179 utils/mmgr/mcxt.c:1231 utils/mmgr/mcxt.c:1266 +#: utils/mmgr/mcxt.c:1301 #, c-format msgid "Failed on request of size %zu in memory context \"%s\"." msgstr "Помилка в запиті розміру %zu в контексті пам'яті \"%s\"." -#: utils/mmgr/mcxt.c:1052 +#: utils/mmgr/mcxt.c:1067 #, c-format msgid "logging memory contexts of PID %d" msgstr "журналювання контекстів пам'яті PID %d" diff --git a/src/backend/replication/backup_manifest.c b/src/backend/replication/backup_manifest.c index 27191044871..0968d91c61b 100644 --- a/src/backend/replication/backup_manifest.c +++ b/src/backend/replication/backup_manifest.c @@ -249,7 +249,7 @@ AddWALInfoToBackupManifest(backup_manifest_info *manifest, XLogRecPtr startptr, if (first_wal_range && endtli != entry->tli) ereport(ERROR, errmsg("expected end timeline %u but found timeline %u", - starttli, entry->tli)); + endtli, entry->tli)); /* * If this timeline entry matches with the timeline on which the diff --git a/src/backend/replication/logical/decode.c b/src/backend/replication/logical/decode.c index 8c27c532857..c6858da9b0b 100644 --- a/src/backend/replication/logical/decode.c +++ b/src/backend/replication/logical/decode.c @@ -559,20 +559,13 @@ DecodeHeapOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf) /* * Inplace updates are only ever performed on catalog tuples and * can, per definition, not change tuple visibility. Since we - * don't decode catalog tuples, we're not interested in the + * also don't decode catalog tuples, we're not interested in the * record's contents. - * - * In-place updates can be used either by XID-bearing transactions - * (e.g. in CREATE INDEX CONCURRENTLY) or by XID-less - * transactions (e.g. VACUUM). In the former case, the commit - * record will include cache invalidations, so we mark the - * transaction as catalog modifying here. Currently that's - * redundant because the commit will do that as well, but once we - * support decoding in-progress relations, this will be important. */ if (!TransactionIdIsValid(xid)) break; + /* PostgreSQL 13 was the last to need these actions. */ SnapBuildProcessChange(builder, xid, buf->origptr); ReorderBufferXidSetCatalogChanges(ctx->reorder, xid, buf->origptr); break; diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c index 5ba7b17ba70..24c937c644e 100644 --- a/src/backend/replication/logical/logical.c +++ b/src/backend/replication/logical/logical.c @@ -396,11 +396,11 @@ CreateInitDecodingContext(const char *plugin, * without further interlock its return value might immediately be out of * date. * - * So we have to acquire the ProcArrayLock to prevent computation of new - * xmin horizons by other backends, get the safe decoding xid, and inform - * the slot machinery about the new limit. Once that's done the - * ProcArrayLock can be released as the slot machinery now is - * protecting against vacuum. + * So we have to acquire both the ReplicationSlotControlLock and the + * ProcArrayLock to prevent concurrent computation and update of new xmin + * horizons by other backends, get the safe decoding xid, and inform the + * slot machinery about the new limit. Once that's done both locks can be + * released as the slot machinery now is protecting against vacuum. * * Note that, temporarily, the data, not just the catalog, xmin has to be * reserved if a data snapshot is to be exported. Otherwise the initial @@ -413,6 +413,7 @@ CreateInitDecodingContext(const char *plugin, * * ---- */ + LWLockAcquire(ReplicationSlotControlLock, LW_EXCLUSIVE); LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); xmin_horizon = GetOldestSafeDecodingTransactionId(!need_full_snapshot); @@ -427,6 +428,7 @@ CreateInitDecodingContext(const char *plugin, ReplicationSlotsComputeRequiredXmin(true); LWLockRelease(ProcArrayLock); + LWLockRelease(ReplicationSlotControlLock); ReplicationSlotMarkDirty(); ReplicationSlotSave(); diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index 3e9de50ff12..c02d2b7b5f7 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -1057,12 +1057,26 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos) MyLogicalRepWorker->relstate_lsn = InvalidXLogRecPtr; SpinLockRelease(&MyLogicalRepWorker->relmutex); - /* Update the state and make it visible to others. */ + /* + * Update the state, create the replication origin, and make them visible + * to others. + */ StartTransactionCommand(); UpdateSubscriptionRelState(MyLogicalRepWorker->subid, MyLogicalRepWorker->relid, MyLogicalRepWorker->relstate, MyLogicalRepWorker->relstate_lsn); + + /* + * Create the replication origin in a separate transaction from the one + * that sets up the origin in shared memory. This prevents the risk that + * changes to the origin in shared memory cannot be rolled back if the + * transaction aborts. + */ + originid = replorigin_by_name(originname, true); + if (!OidIsValid(originid)) + originid = replorigin_create(originname); + CommitTransactionCommand(); pgstat_report_stat(false); @@ -1100,37 +1114,21 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos) CRS_USE_SNAPSHOT, origin_startpos); /* - * Setup replication origin tracking. The purpose of doing this before the - * copy is to avoid doing the copy again due to any error in setting up - * origin tracking. + * Advance the origin to the LSN got from walrcv_create_slot and then set + * up the origin. The advancement is WAL logged for the purpose of + * recovery. Locks are to prevent the replication origin from vanishing + * while advancing. + * + * The purpose of doing these before the copy is to avoid doing the copy + * again due to any error in advancing or setting up origin tracking. */ - originid = replorigin_by_name(originname, true); - if (!OidIsValid(originid)) - { - /* - * Origin tracking does not exist, so create it now. - * - * Then advance to the LSN got from walrcv_create_slot. This is WAL - * logged for the purpose of recovery. Locks are to prevent the - * replication origin from vanishing while advancing. - */ - originid = replorigin_create(originname); - - LockRelationOid(ReplicationOriginRelationId, RowExclusiveLock); - replorigin_advance(originid, *origin_startpos, InvalidXLogRecPtr, - true /* go backward */ , true /* WAL log */ ); - UnlockRelationOid(ReplicationOriginRelationId, RowExclusiveLock); + LockRelationOid(ReplicationOriginRelationId, RowExclusiveLock); + replorigin_advance(originid, *origin_startpos, InvalidXLogRecPtr, + true /* go backward */ , true /* WAL log */ ); + UnlockRelationOid(ReplicationOriginRelationId, RowExclusiveLock); - replorigin_session_setup(originid); - replorigin_session_origin = originid; - } - else - { - ereport(ERROR, - (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("replication origin \"%s\" already exists", - originname))); - } + replorigin_session_setup(originid); + replorigin_session_origin = originid; /* Now do the initial data copy */ PushActiveSnapshot(GetTransactionSnapshot()); diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c index a81215cff86..e7b85fcdddf 100644 --- a/src/backend/replication/pgoutput/pgoutput.c +++ b/src/backend/replication/pgoutput/pgoutput.c @@ -220,7 +220,11 @@ parse_output_parameters(List *options, PGOutputData *data) errmsg("conflicting or redundant options"))); publication_names_given = true; - if (!SplitIdentifierString(strVal(defel->arg), ',', + /* + * Pass a copy of the DefElem->arg since SplitIdentifierString + * modifies its input. + */ + if (!SplitIdentifierString(pstrdup(strVal(defel->arg)), ',', &data->publication_names)) ereport(ERROR, (errcode(ERRCODE_INVALID_NAME), diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index f0c7af0b832..167907b5354 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -798,8 +798,11 @@ ReplicationSlotPersist(void) /* * Compute the oldest xmin across all slots and store it in the ProcArray. * - * If already_locked is true, ProcArrayLock has already been acquired - * exclusively. + * If already_locked is true, both the ReplicationSlotControlLock and the + * ProcArrayLock have already been acquired exclusively. It is crucial that the + * caller first acquires the ReplicationSlotControlLock, followed by the + * ProcArrayLock, to prevent any undetectable deadlocks since this function + * acquires them in that order. */ void ReplicationSlotsComputeRequiredXmin(bool already_locked) @@ -809,8 +812,33 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked) TransactionId agg_catalog_xmin = InvalidTransactionId; Assert(ReplicationSlotCtl != NULL); + Assert(!already_locked || + (LWLockHeldByMeInMode(ReplicationSlotControlLock, LW_EXCLUSIVE) && + LWLockHeldByMeInMode(ProcArrayLock, LW_EXCLUSIVE))); - LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); + /* + * Hold the ReplicationSlotControlLock until after updating the slot xmin + * values, so no backend updates the initial xmin for newly created slot + * concurrently. A shared lock is used here to minimize lock contention, + * especially when many slots exist and advancements occur frequently. + * This is safe since an exclusive lock is taken during initial slot xmin + * update in slot creation. + * + * One might think that we can hold the ProcArrayLock exclusively and + * update the slot xmin values, but it could increase lock contention on + * the ProcArrayLock, which is not great since this function can be called + * at non-negligible frequency. + * + * Concurrent invocation of this function may cause the computed slot xmin + * to regress. However, this is harmless because tuples prior to the most + * recent xmin are no longer useful once advancement occurs (see + * LogicalConfirmReceivedLocation where the slot's xmin value is flushed + * before updating the effective_xmin). Thus, such regression merely + * prevents VACUUM from prematurely removing tuples without causing the + * early deletion of required data. + */ + if (!already_locked) + LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); for (i = 0; i < max_replication_slots; i++) { @@ -846,9 +874,10 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked) agg_catalog_xmin = effective_catalog_xmin; } - LWLockRelease(ReplicationSlotControlLock); - ProcArraySetReplicationSlotXmin(agg_xmin, agg_catalog_xmin, already_locked); + + if (!already_locked) + LWLockRelease(ReplicationSlotControlLock); } /* @@ -1114,71 +1143,73 @@ void ReplicationSlotReserveWal(void) { ReplicationSlot *slot = MyReplicationSlot; + XLogSegNo segno; + XLogRecPtr restart_lsn; Assert(slot != NULL); Assert(slot->data.restart_lsn == InvalidXLogRecPtr); /* - * The replication slot mechanism is used to prevent removal of required - * WAL. As there is no interlock between this routine and checkpoints, WAL - * segments could concurrently be removed when a now stale return value of - * ReplicationSlotsComputeRequiredLSN() is used. In the unlikely case that - * this happens we'll just retry. + * The replication slot mechanism is used to prevent the removal of + * required WAL. + * + * Acquire an exclusive lock to prevent the checkpoint process from + * concurrently computing the minimum slot LSN (see the call to + * XLogGetReplicationSlotMinimumLSN in CreateCheckPoint). This ensures + * that the WAL reserved for replication cannot be removed during a + * checkpoint. + * + * The mechanism is reliable because if WAL reservation occurs first, the + * checkpoint must wait for the restart_lsn update before determining the + * minimum non-removable LSN. On the other hand, if the checkpoint happens + * first, subsequent WAL reservations will select positions at or beyond + * the redo pointer of that checkpoint. + */ + LWLockAcquire(ReplicationSlotAllocationLock, LW_EXCLUSIVE); + + /* + * For logical slots log a standby snapshot and start logical decoding at + * exactly that position. That allows the slot to start up more quickly. + * + * That's not needed (or indeed helpful) for physical slots as they'll + * start replay at the last logged checkpoint anyway. Instead return the + * location of the last redo LSN, where a base backup has to start replay + * at. */ - while (true) + if (!RecoveryInProgress() && SlotIsLogical(slot)) { - XLogSegNo segno; - XLogRecPtr restart_lsn; + XLogRecPtr flushptr; - /* - * For logical slots log a standby snapshot and start logical decoding - * at exactly that position. That allows the slot to start up more - * quickly. - * - * That's not needed (or indeed helpful) for physical slots as they'll - * start replay at the last logged checkpoint anyway. Instead return - * the location of the last redo LSN. While that slightly increases - * the chance that we have to retry, it's where a base backup has to - * start replay at. - */ - if (!RecoveryInProgress() && SlotIsLogical(slot)) - { - XLogRecPtr flushptr; + /* start at current insert position */ + restart_lsn = GetXLogInsertRecPtr(); + SpinLockAcquire(&slot->mutex); + slot->data.restart_lsn = restart_lsn; + SpinLockRelease(&slot->mutex); - /* start at current insert position */ - restart_lsn = GetXLogInsertRecPtr(); - SpinLockAcquire(&slot->mutex); - slot->data.restart_lsn = restart_lsn; - SpinLockRelease(&slot->mutex); + /* make sure we have enough information to start */ + flushptr = LogStandbySnapshot(); - /* make sure we have enough information to start */ - flushptr = LogStandbySnapshot(); + /* and make sure it's fsynced to disk */ + XLogFlush(flushptr); + } + else + { + restart_lsn = GetRedoRecPtr(); + SpinLockAcquire(&slot->mutex); + slot->data.restart_lsn = restart_lsn; + SpinLockRelease(&slot->mutex); + } - /* and make sure it's fsynced to disk */ - XLogFlush(flushptr); - } - else - { - restart_lsn = GetRedoRecPtr(); - SpinLockAcquire(&slot->mutex); - slot->data.restart_lsn = restart_lsn; - SpinLockRelease(&slot->mutex); - } + /* prevent WAL removal as fast as possible */ + ReplicationSlotsComputeRequiredLSN(); - /* prevent WAL removal as fast as possible */ - ReplicationSlotsComputeRequiredLSN(); + /* Checkpoint shouldn't remove the required WAL. */ + XLByteToSeg(slot->data.restart_lsn, segno, wal_segment_size); + if (XLogGetLastRemovedSegno() >= segno) + elog(ERROR, "WAL required by replication slot %s has been removed concurrently", + NameStr(slot->data.name)); - /* - * If all required WAL is still there, great, otherwise retry. The - * slot should prevent further removal of WAL, unless there's a - * concurrent ReplicationSlotsComputeRequiredLSN() after we've written - * the new restart_lsn above, so normally we should never need to loop - * more than twice. - */ - XLByteToSeg(slot->data.restart_lsn, segno, wal_segment_size); - if (XLogGetLastRemovedSegno() < segno) - break; - } + LWLockRelease(ReplicationSlotAllocationLock); } /* diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index bbec678daa6..5e154f1ae9b 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -585,7 +585,10 @@ rewriteRuleAction(Query *parsetree, } } - /* OK, it's safe to combine the CTE lists */ + /* + * OK, it's safe to combine the CTE lists. Beware that RewriteQuery + * knows we concatenate the lists in this order. + */ sub_action->cteList = list_concat(sub_action->cteList, copyObject(parsetree->cteList)); /* ... and don't forget about the associated flags */ @@ -3677,9 +3680,13 @@ rewriteTargetView(Query *parsetree, Relation view) * orig_rt_length is the length of the originating query's rtable, for product * queries created by fireRules(), and 0 otherwise. This is used to skip any * already-processed VALUES RTEs from the original query. + * + * num_ctes_processed is the number of CTEs at the end of the query's cteList + * that have already been rewritten, and must not be rewritten again. */ static List * -RewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length) +RewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length, + int num_ctes_processed) { CmdType event = parsetree->commandType; bool instead = false; @@ -3693,17 +3700,29 @@ RewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length) * First, recursively process any insert/update/delete statements in WITH * clauses. (We have to do this first because the WITH clauses may get * copied into rule actions below.) + * + * Any new WITH clauses from rule actions are processed when we recurse + * into product queries below. However, when recursing, we must take care + * to avoid rewriting a CTE query more than once (because expanding + * generated columns in the targetlist more than once would fail). Since + * new CTEs from product queries are added to the start of the list (see + * rewriteRuleAction), we just skip the last num_ctes_processed items. */ foreach(lc1, parsetree->cteList) { CommonTableExpr *cte = lfirst_node(CommonTableExpr, lc1); Query *ctequery = castNode(Query, cte->ctequery); + int i = foreach_current_index(lc1); List *newstuff; + /* Skip already-processed CTEs at the end of the list */ + if (i >= list_length(parsetree->cteList) - num_ctes_processed) + break; + if (ctequery->commandType == CMD_SELECT) continue; - newstuff = RewriteQuery(ctequery, rewrite_events, 0); + newstuff = RewriteQuery(ctequery, rewrite_events, 0, 0); /* * Currently we can only handle unconditional, single-statement DO @@ -3762,6 +3781,7 @@ RewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length) errmsg("multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"))); } } + num_ctes_processed = list_length(parsetree->cteList); /* * If the statement is an insert, update, or delete, adjust its targetlist @@ -4087,7 +4107,8 @@ RewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length) newstuff = RewriteQuery(pt, rewrite_events, pt == parsetree ? orig_rt_length : - product_orig_rt_length); + product_orig_rt_length, + num_ctes_processed); rewritten = list_concat(rewritten, newstuff); } @@ -4239,7 +4260,7 @@ QueryRewrite(Query *parsetree) * * Apply all non-SELECT rules possibly getting 0 or many queries */ - querylist = RewriteQuery(parsetree, NIL, 0); + querylist = RewriteQuery(parsetree, NIL, 0, 0); /* * Step 2 diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index c851711b9ed..30de68be169 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -36,6 +36,9 @@ #include "access/tableam.h" #include "access/xlog.h" #include "catalog/catalog.h" +#ifdef USE_ASSERT_CHECKING +#include "catalog/pg_tablespace_d.h" +#endif #include "catalog/storage.h" #include "executor/instrument.h" #include "lib/binaryheap.h" @@ -491,6 +494,10 @@ static void FindAndDropRelFileNodeBuffers(RelFileNode rnode, BlockNumber firstDelBlock); static void AtProcExit_Buffers(int code, Datum arg); static void CheckForBufferLeaks(void); +#ifdef USE_ASSERT_CHECKING +static void AssertNotCatalogBufferLock(LWLock *lock, LWLockMode mode, + void *unused_context); +#endif static int rnode_comparator(const void *p1, const void *p2); static inline int buffertag_comparator(const BufferTag *a, const BufferTag *b); static inline int ckpt_buforder_comparator(const CkptSortItem *a, const CkptSortItem *b); @@ -2816,6 +2823,65 @@ CheckForBufferLeaks(void) #endif } +#ifdef USE_ASSERT_CHECKING +/* + * Check for exclusive-locked catalog buffers. This is the core of + * AssertCouldGetRelation(). + * + * A backend would self-deadlock on LWLocks if the catalog scan read the + * exclusive-locked buffer. The main threat is exclusive-locked buffers of + * catalogs used in relcache, because a catcache search on any catalog may + * build that catalog's relcache entry. We don't have an inventory of + * catalogs relcache uses, so just check buffers of most catalogs. + * + * It's better to minimize waits while holding an exclusive buffer lock, so it + * would be nice to broaden this check not to be catalog-specific. However, + * bttextcmp() accesses pg_collation, and non-core opclasses might similarly + * read tables. That is deadlock-free as long as there's no loop in the + * dependency graph: modifying table A may cause an opclass to read table B, + * but it must not cause a read of table A. + */ +void +AssertBufferLocksPermitCatalogRead(void) +{ + ForEachLWLockHeldByMe(AssertNotCatalogBufferLock, NULL); +} + +static void +AssertNotCatalogBufferLock(LWLock *lock, LWLockMode mode, + void *unused_context) +{ + BufferDesc *bufHdr; + BufferTag tag; + Oid relid; + + if (mode != LW_EXCLUSIVE) + return; + + if (!((BufferDescPadded *) lock > BufferDescriptors && + (BufferDescPadded *) lock < BufferDescriptors + NBuffers)) + return; /* not a buffer lock */ + + bufHdr = (BufferDesc *) + ((char *) lock - offsetof(BufferDesc, content_lock)); + tag = bufHdr->tag; + + /* + * This relNode==relid assumption holds until a catalog experiences VACUUM + * FULL or similar. After a command like that, relNode will be in the + * normal (non-catalog) range, and we lose the ability to detect hazardous + * access to that catalog. Calling RelidByRelfilenode() would close that + * gap, but RelidByRelfilenode() might then deadlock with a held lock. + */ + relid = tag.rnode.relNode; + + Assert(!IsCatalogRelationOid(relid)); + /* Shared rels are always catalogs: detect even after VACUUM FULL. */ + Assert(tag.rnode.spcNode != GLOBALTABLESPACE_OID); +} +#endif + + /* * Helper routine to issue warnings when a buffer is unexpectedly pinned */ diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c index df89a28d2ff..3ba32382dbf 100644 --- a/src/backend/storage/ipc/ipc.c +++ b/src/backend/storage/ipc/ipc.c @@ -29,6 +29,7 @@ #endif #include "storage/dsm.h" #include "storage/ipc.h" +#include "storage/lwlock.h" #include "tcop/tcopprot.h" @@ -229,13 +230,19 @@ shmem_exit(int code) { shmem_exit_inprogress = true; + /* + * Release any LWLocks we might be holding before callbacks run. This + * prevents accessing locks in detached DSM segments and allows callbacks + * to acquire new locks. + */ + LWLockReleaseAll(); + /* * Call before_shmem_exit callbacks. * * These should be things that need most of the system to still be up and * working, such as cleanup of temp relations, which requires catalog - * access; or things that need to be completed because later cleanup steps - * depend on them, such as releasing lwlocks. + * access. */ elog(DEBUG3, "shmem_exit(%d): %d before_shmem_exit callbacks to make", code, before_shmem_exit_index); diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c index 28a540961ea..640a21b107a 100644 --- a/src/backend/storage/lmgr/lwlock.c +++ b/src/backend/storage/lmgr/lwlock.c @@ -1029,7 +1029,7 @@ LWLockWakeup(LWLock *lock) else desired_state &= ~LW_FLAG_RELEASE_OK; - if (proclist_is_empty(&wakeup)) + if (proclist_is_empty(&lock->waiters)) desired_state &= ~LW_FLAG_HAS_WAITERS; desired_state &= ~LW_FLAG_LOCKED; /* release lock */ @@ -1908,6 +1908,10 @@ LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val) * unchanged by this operation. This is necessary since InterruptHoldoffCount * has been set to an appropriate level earlier in error recovery. We could * decrement it below zero if we allow it to drop for each released lock! + * + * Note that this function must be safe to call even before the LWLock + * subsystem has been initialized (e.g., during early startup failures). + * In that case, num_held_lwlocks will be 0 and we do nothing. */ void LWLockReleaseAll(void) @@ -1918,9 +1922,26 @@ LWLockReleaseAll(void) LWLockRelease(held_lwlocks[num_held_lwlocks - 1].lock); } + + Assert(num_held_lwlocks == 0); } +/* + * ForEachLWLockHeldByMe - run a callback for each held lock + * + * This is meant as debug support only. + */ +void +ForEachLWLockHeldByMe(void (*callback) (LWLock *, LWLockMode, void *), + void *context) +{ + int i; + + for (i = 0; i < num_held_lwlocks; i++) + callback(held_lwlocks[i].lock, held_lwlocks[i].mode, context); +} + /* * LWLockHeldByMe - test whether my process holds a lock in any mode * diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index 03402551387..329537c7618 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -834,6 +834,9 @@ mdnblocks(SMgrRelation reln, ForkNumber forknum) * functions for this relation or handled interrupts in between. This makes * sure we have opened all active segments, so that truncate loop will get * them all! + * + * If nblocks > curnblk, the request is ignored when we are in InRecovery, + * otherwise, an error is raised. */ void mdtruncate(SMgrRelation reln, ForkNumber forknum, diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index 25289a39f30..d38b6675c2c 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -670,11 +670,20 @@ smgrtruncate2(SMgrRelation reln, ForkNumber *forknum, int nforks, /* * We might as well update the local smgr_cached_nblocks values. The * smgr cache inval message that this function sent will cause other - * backends to invalidate their copies of smgr_fsm_nblocks and - * smgr_vm_nblocks, and these ones too at the next command boundary. - * But these ensure they aren't outright wrong until then. + * backends to invalidate their copies of smgr_cached_nblocks, and + * these ones too at the next command boundary. But ensure they aren't + * outright wrong until then. + * + * We can have nblocks > old_nblocks when a relation was truncated + * multiple times, a replica applied all the truncations, and later + * restarts from a restartpoint located before the truncations. The + * relation on disk will be the size of the last truncate. When + * replaying the first truncate, we will have nblocks > current size. + * In such cases, smgr_truncate does nothing, so set the cached size + * to the old size rather than the requested size. */ - reln->smgr_cached_nblocks[forknum[i]] = nblocks[i]; + reln->smgr_cached_nblocks[forknum[i]] = + nblocks[i] > old_nblocks[i] ? old_nblocks[i] : nblocks[i]; } } diff --git a/src/backend/tsearch/dict_synonym.c b/src/backend/tsearch/dict_synonym.c index ed885ca5551..8c99ecaa0a0 100644 --- a/src/backend/tsearch/dict_synonym.c +++ b/src/backend/tsearch/dict_synonym.c @@ -47,8 +47,8 @@ findwrd(char *in, char **end, uint16 *flags) char *lastchar; /* Skip leading spaces */ - while (*in && t_isspace(in)) - in += pg_mblen(in); + while (*in && t_isspace_cstr(in)) + in += pg_mblen_cstr(in); /* Return NULL on empty lines */ if (*in == '\0') @@ -60,10 +60,10 @@ findwrd(char *in, char **end, uint16 *flags) lastchar = start = in; /* Find end of word */ - while (*in && !t_isspace(in)) + while (*in && !t_isspace_cstr(in)) { lastchar = in; - in += pg_mblen(in); + in += pg_mblen_cstr(in); } if (in - lastchar == 1 && t_iseq(lastchar, '*') && flags) diff --git a/src/backend/tsearch/dict_thesaurus.c b/src/backend/tsearch/dict_thesaurus.c index a95ed0891dd..45686654c93 100644 --- a/src/backend/tsearch/dict_thesaurus.c +++ b/src/backend/tsearch/dict_thesaurus.c @@ -190,8 +190,8 @@ thesaurusRead(const char *filename, DictThesaurus *d) ptr = line; /* is it a comment? */ - while (*ptr && t_isspace(ptr)) - ptr += pg_mblen(ptr); + while (*ptr && t_isspace_cstr(ptr)) + ptr += pg_mblen_cstr(ptr); if (t_iseq(ptr, '#') || *ptr == '\0' || t_iseq(ptr, '\n') || t_iseq(ptr, '\r')) @@ -212,7 +212,7 @@ thesaurusRead(const char *filename, DictThesaurus *d) errmsg("unexpected delimiter"))); state = TR_WAITSUBS; } - else if (!t_isspace(ptr)) + else if (!t_isspace_cstr(ptr)) { beginwrd = ptr; state = TR_INLEX; @@ -225,7 +225,7 @@ thesaurusRead(const char *filename, DictThesaurus *d) newLexeme(d, beginwrd, ptr, idsubst, posinsubst++); state = TR_WAITSUBS; } - else if (t_isspace(ptr)) + else if (t_isspace_cstr(ptr)) { newLexeme(d, beginwrd, ptr, idsubst, posinsubst++); state = TR_WAITLEX; @@ -237,15 +237,15 @@ thesaurusRead(const char *filename, DictThesaurus *d) { useasis = true; state = TR_INSUBS; - beginwrd = ptr + pg_mblen(ptr); + beginwrd = ptr + pg_mblen_cstr(ptr); } else if (t_iseq(ptr, '\\')) { useasis = false; state = TR_INSUBS; - beginwrd = ptr + pg_mblen(ptr); + beginwrd = ptr + pg_mblen_cstr(ptr); } - else if (!t_isspace(ptr)) + else if (!t_isspace_cstr(ptr)) { useasis = false; beginwrd = ptr; @@ -254,7 +254,7 @@ thesaurusRead(const char *filename, DictThesaurus *d) } else if (state == TR_INSUBS) { - if (t_isspace(ptr)) + if (t_isspace_cstr(ptr)) { if (ptr == beginwrd) ereport(ERROR, @@ -267,7 +267,7 @@ thesaurusRead(const char *filename, DictThesaurus *d) else elog(ERROR, "unrecognized thesaurus state: %d", state); - ptr += pg_mblen(ptr); + ptr += pg_mblen_cstr(ptr); } if (state == TR_INSUBS) diff --git a/src/backend/tsearch/regis.c b/src/backend/tsearch/regis.c index 80017177222..d890b65b063 100644 --- a/src/backend/tsearch/regis.c +++ b/src/backend/tsearch/regis.c @@ -37,7 +37,7 @@ RS_isRegis(const char *str) { if (state == RS_IN_WAIT) { - if (t_isalpha(c)) + if (t_isalpha_cstr(c)) /* okay */ ; else if (t_iseq(c, '[')) state = RS_IN_ONEOF; @@ -48,14 +48,14 @@ RS_isRegis(const char *str) { if (t_iseq(c, '^')) state = RS_IN_NONEOF; - else if (t_isalpha(c)) + else if (t_isalpha_cstr(c)) state = RS_IN_ONEOF_IN; else return false; } else if (state == RS_IN_ONEOF_IN || state == RS_IN_NONEOF) { - if (t_isalpha(c)) + if (t_isalpha_cstr(c)) /* okay */ ; else if (t_iseq(c, ']')) state = RS_IN_WAIT; @@ -64,7 +64,7 @@ RS_isRegis(const char *str) } else elog(ERROR, "internal error in RS_isRegis: state %d", state); - c += pg_mblen(c); + c += pg_mblen_cstr(c); } return (state == RS_IN_WAIT); @@ -96,15 +96,14 @@ RS_compile(Regis *r, bool issuffix, const char *str) { if (state == RS_IN_WAIT) { - if (t_isalpha(c)) + if (t_isalpha_cstr(c)) { if (ptr) ptr = newRegisNode(ptr, len); else ptr = r->node = newRegisNode(NULL, len); - COPYCHAR(ptr->data, c); ptr->type = RSF_ONEOF; - ptr->len = pg_mblen(c); + ptr->len = ts_copychar_cstr(ptr->data, c); } else if (t_iseq(c, '[')) { @@ -125,10 +124,9 @@ RS_compile(Regis *r, bool issuffix, const char *str) ptr->type = RSF_NONEOF; state = RS_IN_NONEOF; } - else if (t_isalpha(c)) + else if (t_isalpha_cstr(c)) { - COPYCHAR(ptr->data, c); - ptr->len = pg_mblen(c); + ptr->len = ts_copychar_cstr(ptr->data, c); state = RS_IN_ONEOF_IN; } else /* shouldn't get here */ @@ -136,11 +134,8 @@ RS_compile(Regis *r, bool issuffix, const char *str) } else if (state == RS_IN_ONEOF_IN || state == RS_IN_NONEOF) { - if (t_isalpha(c)) - { - COPYCHAR(ptr->data + ptr->len, c); - ptr->len += pg_mblen(c); - } + if (t_isalpha_cstr(c)) + ptr->len += ts_copychar_cstr(ptr->data + ptr->len, c); else if (t_iseq(c, ']')) state = RS_IN_WAIT; else /* shouldn't get here */ @@ -148,7 +143,7 @@ RS_compile(Regis *r, bool issuffix, const char *str) } else elog(ERROR, "internal error in RS_compile: state %d", state); - c += pg_mblen(c); + c += pg_mblen_cstr(c); } if (state != RS_IN_WAIT) /* shouldn't get here */ @@ -187,10 +182,10 @@ mb_strchr(char *str, char *c) char *ptr = str; bool res = false; - clen = pg_mblen(c); + clen = pg_mblen_cstr(c); while (*ptr && !res) { - plen = pg_mblen(ptr); + plen = pg_mblen_cstr(ptr); if (plen == clen) { i = plen; @@ -219,7 +214,7 @@ RS_execute(Regis *r, char *str) while (*c) { len++; - c += pg_mblen(c); + c += pg_mblen_cstr(c); } if (len < r->nchar) @@ -230,7 +225,7 @@ RS_execute(Regis *r, char *str) { len -= r->nchar; while (len-- > 0) - c += pg_mblen(c); + c += pg_mblen_cstr(c); } @@ -250,7 +245,7 @@ RS_execute(Regis *r, char *str) elog(ERROR, "unrecognized regis node type: %d", ptr->type); } ptr = ptr->next; - c += pg_mblen(c); + c += pg_mblen_cstr(c); } return true; diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c index 2c555ebdcce..f65c083c06f 100644 --- a/src/backend/tsearch/spell.c +++ b/src/backend/tsearch/spell.c @@ -232,7 +232,7 @@ findchar(char *str, int c) { if (t_iseq(str, c)) return str; - str += pg_mblen(str); + str += pg_mblen_cstr(str); } return NULL; @@ -245,7 +245,7 @@ findchar2(char *str, int c1, int c2) { if (t_iseq(str, c1) || t_iseq(str, c2)) return str; - str += pg_mblen(str); + str += pg_mblen_cstr(str); } return NULL; @@ -352,6 +352,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag) char *next, *sbuf = *sflagset; int maxstep; + int clen; bool stop = false; bool met_comma = false; @@ -363,11 +364,11 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag) { case FM_LONG: case FM_CHAR: - COPYCHAR(sflag, *sflagset); - sflag += pg_mblen(*sflagset); + clen = ts_copychar_cstr(sflag, *sflagset); + sflag += clen; /* Go to start of the next flag */ - *sflagset += pg_mblen(*sflagset); + *sflagset += clen; /* Check if we get all characters of flag */ maxstep--; @@ -391,7 +392,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag) *sflagset = next; while (**sflagset) { - if (t_isdigit(*sflagset)) + if (t_isdigit_cstr(*sflagset)) { if (!met_comma) ereport(ERROR, @@ -409,7 +410,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag) *sflagset))); met_comma = true; } - else if (!t_isspace(*sflagset)) + else if (!t_isspace_cstr(*sflagset)) { ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), @@ -417,7 +418,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag) *sflagset))); } - *sflagset += pg_mblen(*sflagset); + *sflagset += pg_mblen_cstr(*sflagset); } stop = true; break; @@ -543,7 +544,7 @@ NIImportDictionary(IspellDict *Conf, const char *filename) while (*s) { /* we allow only single encoded flags for faster works */ - if (pg_mblen(s) == 1 && t_isprint(s) && !t_isspace(s)) + if (pg_mblen_cstr(s) == 1 && t_isprint_unbounded(s) && !t_isspace_unbounded(s)) s++; else { @@ -559,12 +560,12 @@ NIImportDictionary(IspellDict *Conf, const char *filename) s = line; while (*s) { - if (t_isspace(s)) + if (t_isspace_cstr(s)) { *s = '\0'; break; } - s += pg_mblen(s); + s += pg_mblen_cstr(s); } pstr = lowerstr_ctx(Conf, line); @@ -816,17 +817,17 @@ get_nextfield(char **str, char *next) while (**str) { + int clen = pg_mblen_cstr(*str); + if (state == PAE_WAIT_MASK) { if (t_iseq(*str, '#')) return false; - else if (!t_isspace(*str)) + else if (!t_isspace_cstr(*str)) { - int clen = pg_mblen(*str); - if (clen < avail) { - COPYCHAR(next, *str); + ts_copychar_with_len(next, *str, clen); next += clen; avail -= clen; } @@ -835,24 +836,22 @@ get_nextfield(char **str, char *next) } else /* state == PAE_INMASK */ { - if (t_isspace(*str)) + if (t_isspace_cstr(*str)) { *next = '\0'; return true; } else { - int clen = pg_mblen(*str); - if (clen < avail) { - COPYCHAR(next, *str); + ts_copychar_with_len(next, *str, clen); next += clen; avail -= clen; } } } - *str += pg_mblen(*str); + *str += clen; } *next = '\0'; @@ -942,14 +941,15 @@ parse_affentry(char *str, char *mask, char *find, char *repl) while (*str) { + int clen = pg_mblen_cstr(str); + if (state == PAE_WAIT_MASK) { if (t_iseq(str, '#')) return false; - else if (!t_isspace(str)) + else if (!t_isspace_cstr(str)) { - COPYCHAR(pmask, str); - pmask += pg_mblen(str); + pmask += ts_copychar_with_len(pmask, str, clen); state = PAE_INMASK; } } @@ -960,10 +960,9 @@ parse_affentry(char *str, char *mask, char *find, char *repl) *pmask = '\0'; state = PAE_WAIT_FIND; } - else if (!t_isspace(str)) + else if (!t_isspace_cstr(str)) { - COPYCHAR(pmask, str); - pmask += pg_mblen(str); + pmask += ts_copychar_with_len(pmask, str, clen); } } else if (state == PAE_WAIT_FIND) @@ -972,13 +971,12 @@ parse_affentry(char *str, char *mask, char *find, char *repl) { state = PAE_INFIND; } - else if (t_isalpha(str) || t_iseq(str, '\'') /* english 's */ ) + else if (t_isalpha_cstr(str) || t_iseq(str, '\'') /* english 's */ ) { - COPYCHAR(prepl, str); - prepl += pg_mblen(str); + prepl += ts_copychar_with_len(prepl, str, clen); state = PAE_INREPL; } - else if (!t_isspace(str)) + else if (!t_isspace_cstr(str)) ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("syntax error"))); @@ -990,12 +988,11 @@ parse_affentry(char *str, char *mask, char *find, char *repl) *pfind = '\0'; state = PAE_WAIT_REPL; } - else if (t_isalpha(str)) + else if (t_isalpha_cstr(str)) { - COPYCHAR(pfind, str); - pfind += pg_mblen(str); + pfind += ts_copychar_with_len(pfind, str, clen); } - else if (!t_isspace(str)) + else if (!t_isspace_cstr(str)) ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("syntax error"))); @@ -1006,13 +1003,12 @@ parse_affentry(char *str, char *mask, char *find, char *repl) { break; /* void repl */ } - else if (t_isalpha(str)) + else if (t_isalpha_cstr(str)) { - COPYCHAR(prepl, str); - prepl += pg_mblen(str); + prepl += ts_copychar_with_len(prepl, str, clen); state = PAE_INREPL; } - else if (!t_isspace(str)) + else if (!t_isspace_cstr(str)) ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("syntax error"))); @@ -1024,12 +1020,11 @@ parse_affentry(char *str, char *mask, char *find, char *repl) *prepl = '\0'; break; } - else if (t_isalpha(str)) + else if (t_isalpha_cstr(str)) { - COPYCHAR(prepl, str); - prepl += pg_mblen(str); + prepl += ts_copychar_with_len(prepl, str, clen); } - else if (!t_isspace(str)) + else if (!t_isspace_cstr(str)) ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("syntax error"))); @@ -1037,7 +1032,7 @@ parse_affentry(char *str, char *mask, char *find, char *repl) else elog(ERROR, "unrecognized state in parse_affentry: %d", state); - str += pg_mblen(str); + str += clen; } *pmask = *pfind = *prepl = '\0'; @@ -1090,10 +1085,9 @@ addCompoundAffixFlagValue(IspellDict *Conf, char *s, uint32 val) CompoundAffixFlag *newValue; char sbuf[BUFSIZ]; char *sflag; - int clen; - while (*s && t_isspace(s)) - s += pg_mblen(s); + while (*s && t_isspace_cstr(s)) + s += pg_mblen_cstr(s); if (!*s) ereport(ERROR, @@ -1102,10 +1096,10 @@ addCompoundAffixFlagValue(IspellDict *Conf, char *s, uint32 val) /* Get flag without \n */ sflag = sbuf; - while (*s && !t_isspace(s) && *s != '\n') + while (*s && !t_isspace_cstr(s) && *s != '\n') { - clen = pg_mblen(s); - COPYCHAR(sflag, s); + int clen = ts_copychar_cstr(sflag, s); + sflag += clen; s += clen; } @@ -1248,7 +1242,7 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename) while ((recoded = tsearch_readline(&trst)) != NULL) { - if (*recoded == '\0' || t_isspace(recoded) || t_iseq(recoded, '#')) + if (*recoded == '\0' || t_isspace_cstr(recoded) || t_iseq(recoded, '#')) { pfree(recoded); continue; @@ -1285,8 +1279,8 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename) { char *s = recoded + strlen("FLAG"); - while (*s && t_isspace(s)) - s += pg_mblen(s); + while (*s && t_isspace_cstr(s)) + s += pg_mblen_cstr(s); if (*s) { @@ -1321,7 +1315,7 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename) { int fields_read; - if (*recoded == '\0' || t_isspace(recoded) || t_iseq(recoded, '#')) + if (*recoded == '\0' || t_isspace_cstr(recoded) || t_iseq(recoded, '#')) goto nextline; fields_read = parse_ooaffentry(recoded, type, sflag, find, repl, mask); @@ -1484,12 +1478,12 @@ NIImportAffixes(IspellDict *Conf, const char *filename) s = findchar2(recoded, 'l', 'L'); if (s) { - while (*s && !t_isspace(s)) - s += pg_mblen(s); - while (*s && t_isspace(s)) - s += pg_mblen(s); + while (*s && !t_isspace_cstr(s)) + s += pg_mblen_cstr(s); + while (*s && t_isspace_cstr(s)) + s += pg_mblen_cstr(s); - if (*s && pg_mblen(s) == 1) + if (*s && pg_mblen_cstr(s) == 1) { addCompoundAffixFlagValue(Conf, s, FF_COMPOUNDFLAG); Conf->usecompound = true; @@ -1517,8 +1511,8 @@ NIImportAffixes(IspellDict *Conf, const char *filename) s = recoded + 4; /* we need non-lowercased string */ flagflags = 0; - while (*s && t_isspace(s)) - s += pg_mblen(s); + while (*s && t_isspace_cstr(s)) + s += pg_mblen_cstr(s); if (*s == '*') { @@ -1539,14 +1533,13 @@ NIImportAffixes(IspellDict *Conf, const char *filename) * be followed by EOL, whitespace, or ':'. Otherwise this is a * new-format flag command. */ - if (*s && pg_mblen(s) == 1) + if (*s && pg_mblen_cstr(s) == 1) { - COPYCHAR(flag, s); + flag[0] = *s++; flag[1] = '\0'; - s++; if (*s == '\0' || *s == '#' || *s == '\n' || *s == ':' || - t_isspace(s)) + t_isspace_cstr(s)) { oldformat = true; goto nextline; @@ -1769,7 +1762,7 @@ NISortDictionary(IspellDict *Conf) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("invalid affix alias \"%s\"", Conf->Spell[i]->p.flag))); - if (*end != '\0' && !t_isdigit(end) && !t_isspace(end)) + if (*end != '\0' && !t_isdigit_cstr(end) && !t_isspace_cstr(end)) ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("invalid affix alias \"%s\"", diff --git a/src/backend/tsearch/ts_locale.c b/src/backend/tsearch/ts_locale.c index f918cc8908b..cc9e71ec708 100644 --- a/src/backend/tsearch/ts_locale.c +++ b/src/backend/tsearch/ts_locale.c @@ -33,70 +33,43 @@ static void tsearch_readline_callback(void *arg); */ #define WC_BUF_LEN 3 -int -t_isdigit(const char *ptr) -{ - int clen = pg_mblen(ptr); - wchar_t character[WC_BUF_LEN]; - Oid collation = DEFAULT_COLLATION_OID; /* TODO */ - pg_locale_t mylocale = 0; /* TODO */ - - if (clen == 1 || lc_ctype_is_c(collation)) - return isdigit(TOUCHAR(ptr)); - - char2wchar(character, WC_BUF_LEN, ptr, clen, mylocale); - - return iswdigit((wint_t) character[0]); -} - -int -t_isspace(const char *ptr) -{ - int clen = pg_mblen(ptr); - wchar_t character[WC_BUF_LEN]; - Oid collation = DEFAULT_COLLATION_OID; /* TODO */ - pg_locale_t mylocale = 0; /* TODO */ - - if (clen == 1 || lc_ctype_is_c(collation)) - return isspace(TOUCHAR(ptr)); - - char2wchar(character, WC_BUF_LEN, ptr, clen, mylocale); - - return iswspace((wint_t) character[0]); -} - -int -t_isalpha(const char *ptr) -{ - int clen = pg_mblen(ptr); - wchar_t character[WC_BUF_LEN]; - Oid collation = DEFAULT_COLLATION_OID; /* TODO */ - pg_locale_t mylocale = 0; /* TODO */ - - if (clen == 1 || lc_ctype_is_c(collation)) - return isalpha(TOUCHAR(ptr)); - - char2wchar(character, WC_BUF_LEN, ptr, clen, mylocale); - - return iswalpha((wint_t) character[0]); -} - -int -t_isprint(const char *ptr) -{ - int clen = pg_mblen(ptr); - wchar_t character[WC_BUF_LEN]; - Oid collation = DEFAULT_COLLATION_OID; /* TODO */ - pg_locale_t mylocale = 0; /* TODO */ - - if (clen == 1 || lc_ctype_is_c(collation)) - return isprint(TOUCHAR(ptr)); - - char2wchar(character, WC_BUF_LEN, ptr, clen, mylocale); - - return iswprint((wint_t) character[0]); +#define GENERATE_T_ISCLASS_DEF(character_class) \ +/* mblen shall be that of the first character */ \ +int \ +t_is##character_class##_with_len(const char *ptr, int mblen) \ +{ \ + int clen = pg_mblen_with_len(ptr, mblen); \ + wchar_t character[WC_BUF_LEN]; \ + pg_locale_t mylocale = 0; /* TODO */ \ + if (clen == 1 || lc_ctype_is_c(DEFAULT_COLLATION_OID)) \ + return is##character_class(TOUCHAR(ptr)); \ + char2wchar(character, WC_BUF_LEN, ptr, clen, mylocale); \ + return isw##character_class((wint_t) character[0]); \ +} \ +\ +/* ptr shall point to a NUL-terminated string */ \ +int \ +t_is##character_class##_cstr(const char *ptr) \ +{ \ + return t_is##character_class##_with_len(ptr, pg_mblen_cstr(ptr)); \ +} \ +/* ptr shall point to a string with pre-validated encoding */ \ +int \ +t_is##character_class##_unbounded(const char *ptr) \ +{ \ + return t_is##character_class##_with_len(ptr, pg_mblen_unbounded(ptr)); \ +} \ +/* historical name for _unbounded */ \ +int \ +t_is##character_class(const char *ptr) \ +{ \ + return t_is##character_class##_unbounded(ptr); \ } +GENERATE_T_ISCLASS_DEF(alpha) +GENERATE_T_ISCLASS_DEF(digit) +GENERATE_T_ISCLASS_DEF(print) +GENERATE_T_ISCLASS_DEF(space) /* * Set up to read a file using tsearch_readline(). This facility is diff --git a/src/backend/tsearch/ts_selfuncs.c b/src/backend/tsearch/ts_selfuncs.c index be2546a86ea..7796c63af94 100644 --- a/src/backend/tsearch/ts_selfuncs.c +++ b/src/backend/tsearch/ts_selfuncs.c @@ -109,12 +109,14 @@ tsmatchsel(PG_FUNCTION_ARGS) * OK, there's a Var and a Const we're dealing with here. We need the * Const to be a TSQuery, else we can't do anything useful. We have to * check this because the Var might be the TSQuery not the TSVector. + * + * Also check that the Var really is a TSVector, in case this estimator is + * mistakenly attached to some other operator. */ - if (((Const *) other)->consttype == TSQUERYOID) + if (((Const *) other)->consttype == TSQUERYOID && + vardata.vartype == TSVECTOROID) { /* tsvector @@ tsquery or the other way around */ - Assert(vardata.vartype == TSVECTOROID); - selec = tsquerysel(&vardata, ((Const *) other)->constvalue); } else diff --git a/src/backend/tsearch/ts_utils.c b/src/backend/tsearch/ts_utils.c index ed16a2e25a2..51902ab1e14 100644 --- a/src/backend/tsearch/ts_utils.c +++ b/src/backend/tsearch/ts_utils.c @@ -88,8 +88,8 @@ readstoplist(const char *fname, StopList *s, char *(*wordop) (const char *)) char *pbuf = line; /* Trim trailing space */ - while (*pbuf && !t_isspace(pbuf)) - pbuf += pg_mblen(pbuf); + while (*pbuf && !t_isspace_cstr(pbuf)) + pbuf += pg_mblen_cstr(pbuf); *pbuf = '\0'; /* Skip empty lines */ diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c index 290c2223205..48f9a87523c 100644 --- a/src/backend/tsearch/wparser_def.c +++ b/src/backend/tsearch/wparser_def.c @@ -1728,7 +1728,8 @@ TParserGet(TParser *prs) prs->state->charlen = 0; else prs->state->charlen = (prs->charmaxlen == 1) ? prs->charmaxlen : - pg_mblen(prs->str + prs->state->posbyte); + pg_mblen_range(prs->str + prs->state->posbyte, + prs->str + prs->lenstr); Assert(prs->state->posbyte + prs->state->charlen <= prs->lenstr); Assert(prs->state->state >= TPS_Base && prs->state->state < TPS_Null); diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index e7e0589ae1c..6eb9f293318 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -3384,6 +3384,92 @@ construct_array(Datum *elems, int nelems, elmtype, elmlen, elmbyval, elmalign); } +/* + * Like construct_array(), where elmtype must be a built-in type, and + * elmlen/elmbyval/elmalign is looked up from hardcoded data. This is often + * useful when manipulating arrays from/for system catalogs. + */ +ArrayType * +construct_array_builtin(Datum *elems, int nelems, Oid elmtype) +{ + int elmlen; + bool elmbyval; + char elmalign; + + switch (elmtype) + { + case CHAROID: + elmlen = 1; + elmbyval = true; + elmalign = TYPALIGN_CHAR; + break; + + case CSTRINGOID: + elmlen = -2; + elmbyval = false; + elmalign = TYPALIGN_CHAR; + break; + + case FLOAT4OID: + elmlen = sizeof(float4); + elmbyval = true; + elmalign = TYPALIGN_INT; + break; + + case INT2OID: + elmlen = sizeof(int16); + elmbyval = true; + elmalign = TYPALIGN_SHORT; + break; + + case INT4OID: + elmlen = sizeof(int32); + elmbyval = true; + elmalign = TYPALIGN_INT; + break; + + case INT8OID: + elmlen = sizeof(int64); + elmbyval = FLOAT8PASSBYVAL; + elmalign = TYPALIGN_DOUBLE; + break; + + case NAMEOID: + elmlen = NAMEDATALEN; + elmbyval = false; + elmalign = TYPALIGN_CHAR; + break; + + case OIDOID: + case REGTYPEOID: + elmlen = sizeof(Oid); + elmbyval = true; + elmalign = TYPALIGN_INT; + break; + + case TEXTOID: + elmlen = -1; + elmbyval = false; + elmalign = TYPALIGN_INT; + break; + + case TIDOID: + elmlen = sizeof(ItemPointerData); + elmbyval = false; + elmalign = TYPALIGN_SHORT; + break; + + default: + elog(ERROR, "type %u not supported by construct_array_builtin()", elmtype); + /* keep compiler quiet */ + elmlen = 0; + elmbyval = false; + elmalign = 0; + } + + return construct_array(elems, nelems, elmtype, elmlen, elmbyval, elmalign); +} + /* * construct_md_array --- simple method for constructing an array object * with arbitrary dimensions and possible NULLs @@ -3602,6 +3688,81 @@ deconstruct_array(ArrayType *array, } } +/* + * Like deconstruct_array(), where elmtype must be a built-in type, and + * elmlen/elmbyval/elmalign is looked up from hardcoded data. This is often + * useful when manipulating arrays from/for system catalogs. + */ +void +deconstruct_array_builtin(ArrayType *array, + Oid elmtype, + Datum **elemsp, bool **nullsp, int *nelemsp) +{ + int elmlen; + bool elmbyval; + char elmalign; + + switch (elmtype) + { + case CHAROID: + elmlen = 1; + elmbyval = true; + elmalign = TYPALIGN_CHAR; + break; + + case CSTRINGOID: + elmlen = -2; + elmbyval = false; + elmalign = TYPALIGN_CHAR; + break; + + case FLOAT8OID: + elmlen = sizeof(float8); + elmbyval = FLOAT8PASSBYVAL; + elmalign = TYPALIGN_DOUBLE; + break; + + case INT2OID: + elmlen = sizeof(int16); + elmbyval = true; + elmalign = TYPALIGN_SHORT; + break; + + case INT4OID: + elmlen = sizeof(int32); + elmbyval = true; + elmalign = TYPALIGN_INT; + break; + + case OIDOID: + elmlen = sizeof(Oid); + elmbyval = true; + elmalign = TYPALIGN_INT; + break; + + case TEXTOID: + elmlen = -1; + elmbyval = false; + elmalign = TYPALIGN_INT; + break; + + case TIDOID: + elmlen = sizeof(ItemPointerData); + elmbyval = false; + elmalign = TYPALIGN_SHORT; + break; + + default: + elog(ERROR, "type %u not supported by deconstruct_array_builtin()", elmtype); + /* keep compiler quiet */ + elmlen = 0; + elmbyval = false; + elmalign = 0; + } + + deconstruct_array(array, elmtype, elmlen, elmbyval, elmalign, elemsp, nullsp, nelemsp); +} + /* * array_contains_nulls --- detect whether an array has any null elements * diff --git a/src/backend/utils/adt/encode.c b/src/backend/utils/adt/encode.c index 6dd93f9a322..06ea275c59c 100644 --- a/src/backend/utils/adt/encode.c +++ b/src/backend/utils/adt/encode.c @@ -172,7 +172,7 @@ hex_encode(const char *src, size_t len, char *dst) } static inline char -get_hex(const char *cp) +get_hex(const char *cp, const char *end) { unsigned char c = (unsigned char) *cp; int res = -1; @@ -184,7 +184,7 @@ get_hex(const char *cp) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid hexadecimal digit: \"%.*s\"", - pg_mblen(cp), cp))); + pg_mblen_range(cp, end), cp))); return (char) res; } @@ -208,14 +208,14 @@ hex_decode(const char *src, size_t len, char *dst) s++; continue; } - v1 = get_hex(s) << 4; + v1 = get_hex(s, srcend) << 4; s++; if (s >= srcend) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid hexadecimal data: odd number of digits"))); - v2 = get_hex(s); + v2 = get_hex(s, srcend); s++; *p++ = v1 | v2; } @@ -344,7 +344,7 @@ pg_base64_decode(const char *src, size_t len, char *dst) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid symbol \"%.*s\" found while decoding base64 sequence", - pg_mblen(s - 1), s - 1))); + pg_mblen_range(s - 1, srcend), s - 1))); } /* add it to buffer */ buf = (buf << 6) + b; diff --git a/src/backend/utils/adt/format_type.c b/src/backend/utils/adt/format_type.c index 0e8e0654575..7a2b755722d 100644 --- a/src/backend/utils/adt/format_type.c +++ b/src/backend/utils/adt/format_type.c @@ -444,11 +444,15 @@ oidvectortypes(PG_FUNCTION_ARGS) { oidvector *oidArray = (oidvector *) PG_GETARG_POINTER(0); char *result; - int numargs = oidArray->dim1; + int numargs; int num; size_t total; size_t left; + /* validate input before fetching dim1 */ + check_valid_oidvector(oidArray); + numargs = oidArray->dim1; + total = 20 * numargs + 1; result = palloc(total); result[0] = '\0'; diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 9169539b76d..5b617ff4619 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1392,7 +1392,7 @@ parse_format(FormatNode *node, const char *str, const KeyWord *kw, ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), errmsg("invalid datetime format separator: \"%s\"", - pnstrdup(str, pg_mblen(str))))); + pnstrdup(str, pg_mblen_cstr(str))))); if (*str == ' ') n->type = NODE_TYPE_SPACE; @@ -1422,7 +1422,7 @@ parse_format(FormatNode *node, const char *str, const KeyWord *kw, /* backslash quotes the next character, if any */ if (*str == '\\' && *(str + 1)) str++; - chlen = pg_mblen(str); + chlen = pg_mblen_cstr(str); n->type = NODE_TYPE_CHAR; memcpy(n->character, str, chlen); n->character[chlen] = '\0'; @@ -1440,7 +1440,7 @@ parse_format(FormatNode *node, const char *str, const KeyWord *kw, */ if (*str == '\\' && *(str + 1) == '"') str++; - chlen = pg_mblen(str); + chlen = pg_mblen_cstr(str); if ((flags & DCH_FLAG) && is_separator_char(str)) n->type = NODE_TYPE_SEPARATOR; @@ -2151,8 +2151,8 @@ asc_toupper_z(const char *buff) do { \ if (S_THth(_suf)) \ { \ - if (*(ptr)) (ptr) += pg_mblen(ptr); \ - if (*(ptr)) (ptr) += pg_mblen(ptr); \ + if (*(ptr)) (ptr) += pg_mblen_cstr(ptr); \ + if (*(ptr)) (ptr) += pg_mblen_cstr(ptr); \ } \ } while (0) @@ -3365,7 +3365,7 @@ DCH_from_char(FormatNode *node, const char *in, TmFromChar *out, * insist that the consumed character match the format's * character. */ - s += pg_mblen(s); + s += pg_mblen_cstr(s); } continue; } @@ -3387,11 +3387,11 @@ DCH_from_char(FormatNode *node, const char *in, TmFromChar *out, if (extra_skip > 0) extra_skip--; else - s += pg_mblen(s); + s += pg_mblen_cstr(s); } else { - int chlen = pg_mblen(s); + int chlen = pg_mblen_cstr(s); /* * Standard mode requires strict match of format characters. @@ -5563,13 +5563,15 @@ NUM_numpart_to_char(NUMProc *Np, int id) static void NUM_eat_non_data_chars(NUMProc *Np, int n, int input_len) { + const char *end = Np->inout + input_len; + while (n-- > 0) { if (OVERLOAD_TEST) break; /* end of input */ if (strchr("0123456789.,+-", *Np->inout_p) != NULL) break; /* it's a data character */ - Np->inout_p += pg_mblen(Np->inout_p); + Np->inout_p += pg_mblen_range(Np->inout_p, end); } } @@ -6026,7 +6028,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, } else { - Np->inout_p += pg_mblen(Np->inout_p); + Np->inout_p += pg_mblen_range(Np->inout_p, Np->inout + input_len); } continue; } diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c index e9f108425c5..a18a0b93d0a 100644 --- a/src/backend/utils/adt/int.c +++ b/src/backend/utils/adt/int.c @@ -134,6 +134,30 @@ buildint2vector(const int16 *int2s, int n) return result; } +/* + * validate that an array object meets the restrictions of int2vector + * + * We need this because there are pathways by which a general int2[] array can + * be cast to int2vector, allowing the type's restrictions to be violated. + * All code that receives an int2vector as a SQL parameter should check this. + */ +static void +check_valid_int2vector(const int2vector *int2Array) +{ + /* + * We insist on ndim == 1 and dataoffset == 0 (that is, no nulls) because + * otherwise the array's layout will not be what calling code expects. We + * needn't be picky about the index lower bound though. Checking elemtype + * is just paranoia. + */ + if (int2Array->ndim != 1 || + int2Array->dataoffset != 0 || + int2Array->elemtype != INT2OID) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("array is not a valid int2vector"))); +} + /* * int2vectorin - converts "num num ..." to internal form */ @@ -181,10 +205,14 @@ int2vectorout(PG_FUNCTION_ARGS) { int2vector *int2Array = (int2vector *) PG_GETARG_POINTER(0); int num, - nnums = int2Array->dim1; + nnums; char *rp; char *result; + /* validate input before fetching dim1 */ + check_valid_int2vector(int2Array); + nnums = int2Array->dim1; + /* assumes sign, 5 digits, ' ' */ rp = result = (char *) palloc(nnums * 7 + 1); for (num = 0; num < nnums; num++) @@ -251,6 +279,7 @@ int2vectorrecv(PG_FUNCTION_ARGS) Datum int2vectorsend(PG_FUNCTION_ARGS) { + /* We don't do check_valid_int2vector, since array_send won't care */ return array_send(fcinfo); } diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c index f6a074aa7d0..583c1712ad1 100644 --- a/src/backend/utils/adt/jsonfuncs.c +++ b/src/backend/utils/adt/jsonfuncs.c @@ -663,7 +663,7 @@ report_json_context(JsonLexContext *lex) { /* Advance to next multibyte character */ if (IS_HIGHBIT_SET(*context_start)) - context_start += pg_mblen(context_start); + context_start += pg_mblen_range(context_start, context_end); else context_start++; } diff --git a/src/backend/utils/adt/jsonpath_gram.y b/src/backend/utils/adt/jsonpath_gram.y index 3377cc81cbf..30183f66b15 100644 --- a/src/backend/utils/adt/jsonpath_gram.y +++ b/src/backend/utils/adt/jsonpath_gram.y @@ -527,7 +527,7 @@ makeItemLikeRegex(JsonPathParseItem *expr, JsonPathString *pattern, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid input syntax for type %s", "jsonpath"), errdetail("unrecognized flag character \"%.*s\" in LIKE_REGEX predicate", - pg_mblen(flags->val + i), flags->val + i))); + pg_mblen_range(flags->val + i, flags->val + flags->len), flags->val + i))); break; } } diff --git a/src/backend/utils/adt/levenshtein.c b/src/backend/utils/adt/levenshtein.c index f8979776d0d..38d4f580d01 100644 --- a/src/backend/utils/adt/levenshtein.c +++ b/src/backend/utils/adt/levenshtein.c @@ -84,6 +84,8 @@ varstr_levenshtein(const char *source, int slen, int i, j; const char *y; + const char *send = source + slen; + const char *tend = target + tlen; /* * For varstr_levenshtein_less_equal, we have real variables called @@ -184,10 +186,10 @@ varstr_levenshtein(const char *source, int slen, #endif /* - * In order to avoid calling pg_mblen() repeatedly on each character in s, - * we cache all the lengths before starting the main loop -- but if all - * the characters in both strings are single byte, then we skip this and - * use a fast-path in the main loop. If only one string contains + * In order to avoid calling pg_mblen_range() repeatedly on each character + * in s, we cache all the lengths before starting the main loop -- but if + * all the characters in both strings are single byte, then we skip this + * and use a fast-path in the main loop. If only one string contains * multi-byte characters, we still build the array, so that the fast-path * needn't deal with the case where the array hasn't been initialized. */ @@ -199,7 +201,7 @@ varstr_levenshtein(const char *source, int slen, s_char_len = (int *) palloc((m + 1) * sizeof(int)); for (i = 0; i < m; ++i) { - s_char_len[i] = pg_mblen(cp); + s_char_len[i] = pg_mblen_range(cp, send); cp += s_char_len[i]; } s_char_len[i] = 0; @@ -225,7 +227,7 @@ varstr_levenshtein(const char *source, int slen, { int *temp; const char *x = source; - int y_char_len = n != tlen + 1 ? pg_mblen(y) : 1; + int y_char_len = n != tlen + 1 ? pg_mblen_range(y, tend) : 1; #ifdef LEVENSHTEIN_LESS_EQUAL diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c index eed183cd0dc..080bb6af840 100644 --- a/src/backend/utils/adt/like.c +++ b/src/backend/utils/adt/like.c @@ -54,20 +54,20 @@ static int Generic_Text_IC_like(text *str, text *pat, Oid collation); *-------------------- */ static inline int -wchareq(const char *p1, const char *p2) +wchareq(const char *p1, int p1len, const char *p2, int p2len) { - int p1_len; + int p1clen; /* Optimization: quickly compare the first byte. */ if (*p1 != *p2) return 0; - p1_len = pg_mblen(p1); - if (pg_mblen(p2) != p1_len) + p1clen = pg_mblen_with_len(p1, p1len); + if (pg_mblen_with_len(p2, p2len) != p1clen) return 0; /* They are the same length */ - while (p1_len--) + while (p1clen--) { if (*p1++ != *p2++) return 0; @@ -106,11 +106,11 @@ SB_lower_char(unsigned char c, pg_locale_t locale, bool locale_is_c) #define NextByte(p, plen) ((p)++, (plen)--) /* Set up to compile like_match.c for multibyte characters */ -#define CHAREQ(p1, p2) wchareq((p1), (p2)) +#define CHAREQ(p1, p1len, p2, p2len) wchareq((p1), (p1len), (p2), (p2len)) #define NextChar(p, plen) \ - do { int __l = pg_mblen(p); (p) +=__l; (plen) -=__l; } while (0) + do { int __l = pg_mblen_with_len((p), (plen)); (p) +=__l; (plen) -=__l; } while (0) #define CopyAdvChar(dst, src, srclen) \ - do { int __l = pg_mblen(src); \ + do { int __l = pg_mblen_with_len((src), (srclen)); \ (srclen) -= __l; \ while (__l-- > 0) \ *(dst)++ = *(src)++; \ @@ -122,7 +122,7 @@ SB_lower_char(unsigned char c, pg_locale_t locale, bool locale_is_c) #include "like_match.c" /* Set up to compile like_match.c for single-byte characters */ -#define CHAREQ(p1, p2) (*(p1) == *(p2)) +#define CHAREQ(p1, p1len, p2, p2len) (*(p1) == *(p2)) #define NextChar(p, plen) NextByte((p), (plen)) #define CopyAdvChar(dst, src, srclen) (*(dst)++ = *(src)++, (srclen)--) diff --git a/src/backend/utils/adt/like_match.c b/src/backend/utils/adt/like_match.c index 2f32cdaf020..9df572e92bd 100644 --- a/src/backend/utils/adt/like_match.c +++ b/src/backend/utils/adt/like_match.c @@ -294,6 +294,7 @@ do_like_escape(text *pat, text *esc) errhint("Escape string must be empty or one character."))); e = VARDATA_ANY(esc); + elen = VARSIZE_ANY_EXHDR(esc); /* * If specified escape is '\', just copy the pattern as-is. @@ -312,7 +313,7 @@ do_like_escape(text *pat, text *esc) afterescape = false; while (plen > 0) { - if (CHAREQ(p, e) && !afterescape) + if (CHAREQ(p, plen, e, elen) && !afterescape) { *r++ = '\\'; NextChar(p, plen); diff --git a/src/backend/utils/adt/multirangetypes.c b/src/backend/utils/adt/multirangetypes.c index 51b0ec95ab4..64d25fbfe66 100644 --- a/src/backend/utils/adt/multirangetypes.c +++ b/src/backend/utils/adt/multirangetypes.c @@ -477,8 +477,9 @@ multirange_canonicalize(TypeCacheEntry *rangetyp, int32 input_range_count, int32 output_range_count = 0; /* Sort the ranges so we can find the ones that overlap/meet. */ - qsort_arg(ranges, input_range_count, sizeof(RangeType *), range_compare, - rangetyp); + if (ranges != NULL) + qsort_arg(ranges, input_range_count, sizeof(RangeType *), + range_compare, rangetyp); /* Now merge where possible: */ for (i = 0; i < input_range_count; i++) diff --git a/src/backend/utils/adt/network_selfuncs.c b/src/backend/utils/adt/network_selfuncs.c index dca2c632123..ff4ec8d91e0 100644 --- a/src/backend/utils/adt/network_selfuncs.c +++ b/src/backend/utils/adt/network_selfuncs.c @@ -43,9 +43,9 @@ /* Maximum number of items to consider in join selectivity calculations */ #define MAX_CONSIDERED_ELEMS 1024 -static Selectivity networkjoinsel_inner(Oid operator, +static Selectivity networkjoinsel_inner(Oid operator, int opr_codenum, VariableStatData *vardata1, VariableStatData *vardata2); -static Selectivity networkjoinsel_semi(Oid operator, +static Selectivity networkjoinsel_semi(Oid operator, int opr_codenum, VariableStatData *vardata1, VariableStatData *vardata2); static Selectivity mcv_population(float4 *mcv_numbers, int mcv_nvalues); static Selectivity inet_hist_value_sel(Datum *values, int nvalues, @@ -82,6 +82,7 @@ networksel(PG_FUNCTION_ARGS) Oid operator = PG_GETARG_OID(1); List *args = (List *) PG_GETARG_POINTER(2); int varRelid = PG_GETARG_INT32(3); + int opr_codenum; VariableStatData vardata; Node *other; bool varonleft; @@ -95,6 +96,14 @@ networksel(PG_FUNCTION_ARGS) nullfrac; FmgrInfo proc; + /* + * Before all else, verify that the operator is one of the ones supported + * by this function, which in turn proves that the input datatypes are + * what we expect. Otherwise, attaching this selectivity function to some + * unexpected operator could cause trouble. + */ + opr_codenum = inet_opr_codenum(operator); + /* * If expression is not (variable op something) or (something op * variable), then punt and return a default estimate. @@ -150,13 +159,12 @@ networksel(PG_FUNCTION_ARGS) STATISTIC_KIND_HISTOGRAM, InvalidOid, ATTSTATSSLOT_VALUES)) { - int opr_codenum = inet_opr_codenum(operator); + int h_codenum; /* Commute if needed, so we can consider histogram to be on the left */ - if (!varonleft) - opr_codenum = -opr_codenum; + h_codenum = varonleft ? opr_codenum : -opr_codenum; non_mcv_selec = inet_hist_value_sel(hslot.values, hslot.nvalues, - constvalue, opr_codenum); + constvalue, h_codenum); free_attstatsslot(&hslot); } @@ -203,10 +211,19 @@ networkjoinsel(PG_FUNCTION_ARGS) #endif SpecialJoinInfo *sjinfo = (SpecialJoinInfo *) PG_GETARG_POINTER(4); double selec; + int opr_codenum; VariableStatData vardata1; VariableStatData vardata2; bool join_is_reversed; + /* + * Before all else, verify that the operator is one of the ones supported + * by this function, which in turn proves that the input datatypes are + * what we expect. Otherwise, attaching this selectivity function to some + * unexpected operator could cause trouble. + */ + opr_codenum = inet_opr_codenum(operator); + get_join_variables(root, args, sjinfo, &vardata1, &vardata2, &join_is_reversed); @@ -220,15 +237,18 @@ networkjoinsel(PG_FUNCTION_ARGS) * Selectivity for left/full join is not exactly the same as inner * join, but we neglect the difference, as eqjoinsel does. */ - selec = networkjoinsel_inner(operator, &vardata1, &vardata2); + selec = networkjoinsel_inner(operator, opr_codenum, + &vardata1, &vardata2); break; case JOIN_SEMI: case JOIN_ANTI: /* Here, it's important that we pass the outer var on the left. */ if (!join_is_reversed) - selec = networkjoinsel_semi(operator, &vardata1, &vardata2); + selec = networkjoinsel_semi(operator, opr_codenum, + &vardata1, &vardata2); else selec = networkjoinsel_semi(get_commutator(operator), + -opr_codenum, &vardata2, &vardata1); break; default: @@ -260,7 +280,7 @@ networkjoinsel(PG_FUNCTION_ARGS) * Also, MCV vs histogram selectivity is not neglected as in eqjoinsel_inner(). */ static Selectivity -networkjoinsel_inner(Oid operator, +networkjoinsel_inner(Oid operator, int opr_codenum, VariableStatData *vardata1, VariableStatData *vardata2) { Form_pg_statistic stats; @@ -273,7 +293,6 @@ networkjoinsel_inner(Oid operator, mcv2_exists = false, hist1_exists = false, hist2_exists = false; - int opr_codenum; int mcv1_length = 0, mcv2_length = 0; AttStatsSlot mcv1_slot; @@ -325,8 +344,6 @@ networkjoinsel_inner(Oid operator, memset(&hist2_slot, 0, sizeof(hist2_slot)); } - opr_codenum = inet_opr_codenum(operator); - /* * Calculate selectivity for MCV vs MCV matches. */ @@ -387,7 +404,7 @@ networkjoinsel_inner(Oid operator, * histogram selectivity for semi/anti join cases. */ static Selectivity -networkjoinsel_semi(Oid operator, +networkjoinsel_semi(Oid operator, int opr_codenum, VariableStatData *vardata1, VariableStatData *vardata2) { Form_pg_statistic stats; @@ -401,7 +418,6 @@ networkjoinsel_semi(Oid operator, mcv2_exists = false, hist1_exists = false, hist2_exists = false; - int opr_codenum; FmgrInfo proc; int i, mcv1_length = 0, @@ -455,7 +471,6 @@ networkjoinsel_semi(Oid operator, memset(&hist2_slot, 0, sizeof(hist2_slot)); } - opr_codenum = inet_opr_codenum(operator); fmgr_info(get_opcode(operator), &proc); /* Estimate number of input rows represented by RHS histogram. */ @@ -827,6 +842,9 @@ inet_semi_join_sel(Datum lhs_value, /* * Assign useful code numbers for the subnet inclusion/overlap operators * + * This will throw an error if the operator is not one of the ones we + * support in networksel() and networkjoinsel(). + * * Only inet_masklen_inclusion_cmp() and inet_hist_match_divider() depend * on the exact codes assigned here; but many other places in this file * know that they can negate a code to obtain the code for the commutator diff --git a/src/backend/utils/adt/oid.c b/src/backend/utils/adt/oid.c index fd94e0c8818..dbab114a6e1 100644 --- a/src/backend/utils/adt/oid.c +++ b/src/backend/utils/adt/oid.c @@ -187,6 +187,30 @@ buildoidvector(const Oid *oids, int n) return result; } +/* + * validate that an array object meets the restrictions of oidvector + * + * We need this because there are pathways by which a general oid[] array can + * be cast to oidvector, allowing the type's restrictions to be violated. + * All code that receives an oidvector as a SQL parameter should check this. + */ +void +check_valid_oidvector(const oidvector *oidArray) +{ + /* + * We insist on ndim == 1 and dataoffset == 0 (that is, no nulls) because + * otherwise the array's layout will not be what calling code expects. We + * needn't be picky about the index lower bound though. Checking elemtype + * is just paranoia. + */ + if (oidArray->ndim != 1 || + oidArray->dataoffset != 0 || + oidArray->elemtype != OIDOID) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("array is not a valid oidvector"))); +} + /* * oidvectorin - converts "num num ..." to internal form */ @@ -232,10 +256,14 @@ oidvectorout(PG_FUNCTION_ARGS) { oidvector *oidArray = (oidvector *) PG_GETARG_POINTER(0); int num, - nnums = oidArray->dim1; + nnums; char *rp; char *result; + /* validate input before fetching dim1 */ + check_valid_oidvector(oidArray); + nnums = oidArray->dim1; + /* assumes sign, 10 digits, ' ' */ rp = result = (char *) palloc(nnums * 12 + 1); for (num = 0; num < nnums; num++) @@ -304,6 +332,7 @@ oidvectorrecv(PG_FUNCTION_ARGS) Datum oidvectorsend(PG_FUNCTION_ARGS) { + /* We don't do check_valid_oidvector, since array_send won't care */ return array_send(fcinfo); } diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c index bd9e5f9e243..471c6967be0 100644 --- a/src/backend/utils/adt/oracle_compat.c +++ b/src/backend/utils/adt/oracle_compat.c @@ -150,8 +150,8 @@ lpad(PG_FUNCTION_ARGS) char *ptr1, *ptr2, *ptr2start, - *ptr2end, *ptr_ret; + const char *ptr2end; int m, s1len, s2len; @@ -196,7 +196,7 @@ lpad(PG_FUNCTION_ARGS) while (m--) { - int mlen = pg_mblen(ptr2); + int mlen = pg_mblen_range(ptr2, ptr2end); memcpy(ptr_ret, ptr2, mlen); ptr_ret += mlen; @@ -209,7 +209,7 @@ lpad(PG_FUNCTION_ARGS) while (s1len--) { - int mlen = pg_mblen(ptr1); + int mlen = pg_mblen_unbounded(ptr1); memcpy(ptr_ret, ptr1, mlen); ptr_ret += mlen; @@ -248,8 +248,8 @@ rpad(PG_FUNCTION_ARGS) char *ptr1, *ptr2, *ptr2start, - *ptr2end, *ptr_ret; + const char *ptr2end; int m, s1len, s2len; @@ -288,11 +288,12 @@ rpad(PG_FUNCTION_ARGS) m = len - s1len; ptr1 = VARDATA_ANY(string1); + ptr_ret = VARDATA(ret); while (s1len--) { - int mlen = pg_mblen(ptr1); + int mlen = pg_mblen_unbounded(ptr1); memcpy(ptr_ret, ptr1, mlen); ptr_ret += mlen; @@ -304,7 +305,7 @@ rpad(PG_FUNCTION_ARGS) while (m--) { - int mlen = pg_mblen(ptr2); + int mlen = pg_mblen_range(ptr2, ptr2end); memcpy(ptr_ret, ptr2, mlen); ptr_ret += mlen; @@ -389,6 +390,7 @@ dotrim(const char *string, int stringlen, */ const char **stringchars; const char **setchars; + const char *setend; int *stringmblen; int *setmblen; int stringnchars; @@ -396,6 +398,7 @@ dotrim(const char *string, int stringlen, int resultndx; int resultnchars; const char *p; + const char *pend; int len; int mblen; const char *str_pos; @@ -406,10 +409,11 @@ dotrim(const char *string, int stringlen, stringnchars = 0; p = string; len = stringlen; + pend = p + len; while (len > 0) { stringchars[stringnchars] = p; - stringmblen[stringnchars] = mblen = pg_mblen(p); + stringmblen[stringnchars] = mblen = pg_mblen_range(p, pend); stringnchars++; p += mblen; len -= mblen; @@ -420,10 +424,11 @@ dotrim(const char *string, int stringlen, setnchars = 0; p = set; len = setlen; + setend = set + setlen; while (len > 0) { setchars[setnchars] = p; - setmblen[setnchars] = mblen = pg_mblen(p); + setmblen[setnchars] = mblen = pg_mblen_range(p, setend); setnchars++; p += mblen; len -= mblen; @@ -801,6 +806,8 @@ translate(PG_FUNCTION_ARGS) *to_end; char *source, *target; + const char *source_end; + const char *from_end; int m, fromlen, tolen, @@ -815,9 +822,11 @@ translate(PG_FUNCTION_ARGS) if (m <= 0) PG_RETURN_TEXT_P(string); source = VARDATA_ANY(string); + source_end = source + m; fromlen = VARSIZE_ANY_EXHDR(from); from_ptr = VARDATA_ANY(from); + from_end = from_ptr + fromlen; tolen = VARSIZE_ANY_EXHDR(to); to_ptr = VARDATA_ANY(to); to_end = to_ptr + tolen; @@ -840,12 +849,12 @@ translate(PG_FUNCTION_ARGS) while (m > 0) { - source_len = pg_mblen(source); + source_len = pg_mblen_range(source, source_end); from_index = 0; for (i = 0; i < fromlen; i += len) { - len = pg_mblen(&from_ptr[i]); + len = pg_mblen_range(&from_ptr[i], from_end); if (len == source_len && memcmp(source, &from_ptr[i], len) == 0) break; @@ -861,11 +870,11 @@ translate(PG_FUNCTION_ARGS) { if (p >= to_end) break; - p += pg_mblen(p); + p += pg_mblen_range(p, to_end); } if (p < to_end) { - len = pg_mblen(p); + len = pg_mblen_range(p, to_end); memcpy(target, p, len); target += len; retlen += len; diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index bf523c18249..8ae101cefc2 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -64,6 +64,7 @@ #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/pg_locale.h" +#include "utils/relcache.h" #include "utils/syscache.h" #ifdef USE_ICU @@ -1262,6 +1263,8 @@ lookup_collation_cache(Oid collation, bool set_flags) Assert(OidIsValid(collation)); Assert(collation != DEFAULT_COLLATION_OID); + AssertCouldGetRelation(); + if (collation_cache == NULL) { /* First time through, initialize the hash table */ diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 6fc2196d59a..4125c2b0331 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -1028,7 +1028,7 @@ pg_stat_get_backend_activity(PG_FUNCTION_ARGS) activity = beentry->st_activity_raw; clipped_activity = pgstat_clip_activity(activity); - ret = cstring_to_text(activity); + ret = cstring_to_text(clipped_activity); pfree(clipped_activity); PG_RETURN_TEXT_P(ret); diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index 4d2ea4848fb..0eaa528dc5c 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -424,7 +424,7 @@ parse_re_flags(pg_re_flags *flags, text *opts) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid regular expression option: \"%.*s\"", - pg_mblen(opt_p + i), opt_p + i))); + pg_mblen_range(opt_p + i, opt_p + opt_len), opt_p + i))); break; } } @@ -672,6 +672,7 @@ similar_escape_internal(text *pat_text, text *esc_text) *r; int plen, elen; + const char *pend; bool afterescape = false; int nquotes = 0; int bracket_depth = 0; /* square bracket nesting level */ @@ -679,6 +680,7 @@ similar_escape_internal(text *pat_text, text *esc_text) p = VARDATA_ANY(pat_text); plen = VARSIZE_ANY_EXHDR(pat_text); + pend = p + plen; if (esc_text == NULL) { /* No ESCAPE clause provided; default to backslash as escape */ @@ -778,7 +780,7 @@ similar_escape_internal(text *pat_text, text *esc_text) if (elen > 1) { - int mblen = pg_mblen(p); + int mblen = pg_mblen_range(p, pend); if (mblen > 1) { diff --git a/src/backend/utils/adt/tsquery.c b/src/backend/utils/adt/tsquery.c index dde3a90cc3b..370f57ede58 100644 --- a/src/backend/utils/adt/tsquery.c +++ b/src/backend/utils/adt/tsquery.c @@ -109,7 +109,7 @@ get_modifiers(char *buf, int16 *weight, bool *prefix) return buf; buf++; - while (*buf && pg_mblen(buf) == 1) + while (*buf && pg_mblen_cstr(buf) == 1) { switch (*buf) { @@ -186,7 +186,7 @@ parse_phrase_operator(TSQueryParserState pstate, int16 *distance) continue; } - if (!t_isdigit(ptr)) + if (!t_isdigit_cstr(ptr)) return false; errno = 0; @@ -248,12 +248,12 @@ parse_or_operator(TSQueryParserState pstate) return false; /* it shouldn't be a part of any word */ - if (t_iseq(ptr, '-') || t_iseq(ptr, '_') || t_isalpha(ptr) || t_isdigit(ptr)) + if (t_iseq(ptr, '-') || t_iseq(ptr, '_') || t_isalpha_cstr(ptr) || t_isdigit_cstr(ptr)) return false; for (;;) { - ptr += pg_mblen(ptr); + ptr += pg_mblen_cstr(ptr); if (*ptr == '\0') /* got end of string without operand */ return false; @@ -263,7 +263,7 @@ parse_or_operator(TSQueryParserState pstate) * So we still treat OR literal as operation with possibly incorrect * operand and will not search it as lexeme */ - if (!t_isspace(ptr)) + if (!t_isspace_cstr(ptr)) break; } @@ -306,7 +306,7 @@ gettoken_query_standard(TSQueryParserState state, int8 *operator, errmsg("syntax error in tsquery: \"%s\"", state->buffer))); } - else if (!t_isspace(state->buf)) + else if (!t_isspace_cstr(state->buf)) { /* * We rely on the tsvector parser to parse the value for @@ -364,14 +364,14 @@ gettoken_query_standard(TSQueryParserState state, int8 *operator, { return (state->count) ? PT_ERR : PT_END; } - else if (!t_isspace(state->buf)) + else if (!t_isspace_cstr(state->buf)) { return PT_ERR; } break; } - state->buf += pg_mblen(state->buf); + state->buf += pg_mblen_cstr(state->buf); } } @@ -425,7 +425,7 @@ gettoken_query_websearch(TSQueryParserState state, int8 *operator, state->state = WAITOPERAND; continue; } - else if (!t_isspace(state->buf)) + else if (!t_isspace_cstr(state->buf)) { /* * We rely on the tsvector parser to parse the value for @@ -468,7 +468,7 @@ gettoken_query_websearch(TSQueryParserState state, int8 *operator, state->buf++; continue; } - else if (!t_isspace(state->buf)) + else if (!t_isspace_cstr(state->buf)) { /* insert implicit AND between operands */ state->state = WAITOPERAND; @@ -478,7 +478,7 @@ gettoken_query_websearch(TSQueryParserState state, int8 *operator, break; } - state->buf += pg_mblen(state->buf); + state->buf += pg_mblen_cstr(state->buf); } } @@ -961,9 +961,8 @@ infix(INFIX *in, int parentPriority, bool rightPhraseOp) *(in->cur) = '\\'; in->cur++; } - COPYCHAR(in->cur, op); - clen = pg_mblen(op); + clen = ts_copychar_cstr(in->cur, op); op += clen; in->cur += clen; } diff --git a/src/backend/utils/adt/tsvector.c b/src/backend/utils/adt/tsvector.c index 3831dd3c806..bc600915f74 100644 --- a/src/backend/utils/adt/tsvector.c +++ b/src/backend/utils/adt/tsvector.c @@ -313,9 +313,9 @@ tsvectorout(PG_FUNCTION_ARGS) lenbuf = 0, pp; WordEntry *ptr = ARRPTR(out); - char *curbegin, - *curin, + char *curin, *curout; + const char *curend; lenbuf = out->size * 2 /* '' */ + out->size - 1 /* space */ + 2 /* \0 */ ; for (i = 0; i < out->size; i++) @@ -328,13 +328,14 @@ tsvectorout(PG_FUNCTION_ARGS) curout = outbuf = (char *) palloc(lenbuf); for (i = 0; i < out->size; i++) { - curbegin = curin = STRPTR(out) + ptr->pos; + curin = STRPTR(out) + ptr->pos; + curend = curin + ptr->len; if (i != 0) *curout++ = ' '; *curout++ = '\''; - while (curin - curbegin < ptr->len) + while (curin < curend) { - int len = pg_mblen(curin); + int len = pg_mblen_range(curin, curend); if (t_iseq(curin, '\'')) *curout++ = '\''; diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c index 4237806d6d8..d9562e209da 100644 --- a/src/backend/utils/adt/tsvector_op.c +++ b/src/backend/utils/adt/tsvector_op.c @@ -2434,11 +2434,15 @@ ts_stat_sql(MemoryContext persistentContext, text *txt, text *ws) if (ws) { char *buf; + const char *end; buf = VARDATA_ANY(ws); - while (buf - VARDATA_ANY(ws) < VARSIZE_ANY_EXHDR(ws)) + end = buf + VARSIZE_ANY_EXHDR(ws); + while (buf < end) { - if (pg_mblen(buf) == 1) + int len = pg_mblen_range(buf, end); + + if (len == 1) { switch (*buf) { @@ -2462,7 +2466,7 @@ ts_stat_sql(MemoryContext persistentContext, text *txt, text *ws) stat->weight |= 0; } } - buf += pg_mblen(buf); + buf += len; } } diff --git a/src/backend/utils/adt/tsvector_parser.c b/src/backend/utils/adt/tsvector_parser.c index c2df4093e6b..1187f0af523 100644 --- a/src/backend/utils/adt/tsvector_parser.c +++ b/src/backend/utils/adt/tsvector_parser.c @@ -185,10 +185,9 @@ gettoken_tsvector(TSVectorParseState state, else if ((state->oprisdelim && ISOPERATOR(state->prsbuf)) || (state->is_web && t_iseq(state->prsbuf, '"'))) PRSSYNTAXERROR; - else if (!t_isspace(state->prsbuf)) + else if (!t_isspace_cstr(state->prsbuf)) { - COPYCHAR(curpos, state->prsbuf); - curpos += pg_mblen(state->prsbuf); + curpos += ts_copychar_cstr(curpos, state->prsbuf); statecode = WAITENDWORD; } } @@ -202,8 +201,7 @@ gettoken_tsvector(TSVectorParseState state, else { RESIZEPRSBUF; - COPYCHAR(curpos, state->prsbuf); - curpos += pg_mblen(state->prsbuf); + curpos += ts_copychar_cstr(curpos, state->prsbuf); Assert(oldstate != 0); statecode = oldstate; } @@ -215,7 +213,7 @@ gettoken_tsvector(TSVectorParseState state, statecode = WAITNEXTCHAR; oldstate = WAITENDWORD; } - else if (t_isspace(state->prsbuf) || *(state->prsbuf) == '\0' || + else if (t_isspace_cstr(state->prsbuf) || *(state->prsbuf) == '\0' || (state->oprisdelim && ISOPERATOR(state->prsbuf)) || (state->is_web && t_iseq(state->prsbuf, '"'))) { @@ -238,8 +236,7 @@ gettoken_tsvector(TSVectorParseState state, else { RESIZEPRSBUF; - COPYCHAR(curpos, state->prsbuf); - curpos += pg_mblen(state->prsbuf); + curpos += ts_copychar_cstr(curpos, state->prsbuf); } } else if (statecode == WAITENDCMPLX) @@ -258,8 +255,7 @@ gettoken_tsvector(TSVectorParseState state, else { RESIZEPRSBUF; - COPYCHAR(curpos, state->prsbuf); - curpos += pg_mblen(state->prsbuf); + curpos += ts_copychar_cstr(curpos, state->prsbuf); } } else if (statecode == WAITCHARCMPLX) @@ -267,8 +263,7 @@ gettoken_tsvector(TSVectorParseState state, if (!state->is_web && t_iseq(state->prsbuf, '\'')) { RESIZEPRSBUF; - COPYCHAR(curpos, state->prsbuf); - curpos += pg_mblen(state->prsbuf); + curpos += ts_copychar_cstr(curpos, state->prsbuf); statecode = WAITENDCMPLX; } else @@ -279,7 +274,7 @@ gettoken_tsvector(TSVectorParseState state, PRSSYNTAXERROR; if (state->oprisdelim) { - /* state->prsbuf+=pg_mblen(state->prsbuf); */ + /* state->prsbuf+=pg_mblen_cstr(state->prsbuf); */ RETURN_TOKEN; } else @@ -296,7 +291,7 @@ gettoken_tsvector(TSVectorParseState state, } else if (statecode == INPOSINFO) { - if (t_isdigit(state->prsbuf)) + if (t_isdigit_cstr(state->prsbuf)) { if (posalen == 0) { @@ -351,10 +346,10 @@ gettoken_tsvector(TSVectorParseState state, PRSSYNTAXERROR; WEP_SETWEIGHT(pos[npos - 1], 0); } - else if (t_isspace(state->prsbuf) || + else if (t_isspace_cstr(state->prsbuf) || *(state->prsbuf) == '\0') RETURN_TOKEN; - else if (!t_isdigit(state->prsbuf)) + else if (!t_isdigit_cstr(state->prsbuf)) PRSSYNTAXERROR; } else /* internal error */ @@ -362,6 +357,6 @@ gettoken_tsvector(TSVectorParseState state, statecode); /* get next char */ - state->prsbuf += pg_mblen(state->prsbuf); + state->prsbuf += pg_mblen_cstr(state->prsbuf); } } diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 0d0c0fd9f3c..b008959ab54 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -232,7 +232,7 @@ bit_in(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("\"%.*s\" is not a valid binary digit", - pg_mblen(sp), sp))); + pg_mblen_cstr(sp), sp))); x >>= 1; if (x == 0) @@ -257,7 +257,7 @@ bit_in(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("\"%.*s\" is not a valid hexadecimal digit", - pg_mblen(sp), sp))); + pg_mblen_cstr(sp), sp))); if (bc) { @@ -533,7 +533,7 @@ varbit_in(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("\"%.*s\" is not a valid binary digit", - pg_mblen(sp), sp))); + pg_mblen_cstr(sp), sp))); x >>= 1; if (x == 0) @@ -558,7 +558,7 @@ varbit_in(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("\"%.*s\" is not a valid hexadecimal digit", - pg_mblen(sp), sp))); + pg_mblen_cstr(sp), sp))); if (bc) { diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index d62cbdce325..b79ae35a0d2 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -779,8 +779,11 @@ text_catenate(text *t1, text *t2) * charlen_to_bytelen() * Compute the number of bytes occupied by n characters starting at *p * - * It is caller's responsibility that there actually are n characters; - * the string need not be null-terminated. + * The caller shall ensure there are n complete characters. Callers achieve + * this by deriving "n" from regmatch_t findings from searching a wchar array. + * pg_mb2wchar_with_len() skips any trailing incomplete character, so regex + * matches will end no later than the last complete character. (The string + * need not be null-terminated.) */ static int charlen_to_bytelen(const char *p, int n) @@ -795,7 +798,7 @@ charlen_to_bytelen(const char *p, int n) const char *s; for (s = p; n > 0; n--) - s += pg_mblen(s); + s += pg_mblen_unbounded(s); /* caller verified encoding */ return s - p; } @@ -928,6 +931,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified) int32 slice_start; int32 slice_size; int32 slice_strlen; + int32 slice_len; text *slice; int32 E1; int32 i; @@ -997,7 +1001,8 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified) slice = (text *) DatumGetPointer(str); /* see if we got back an empty string */ - if (VARSIZE_ANY_EXHDR(slice) == 0) + slice_len = VARSIZE_ANY_EXHDR(slice); + if (slice_len == 0) { if (slice != (text *) DatumGetPointer(str)) pfree(slice); @@ -1006,7 +1011,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified) /* Now we can get the actual length of the slice in MB characters */ slice_strlen = pg_mbstrlen_with_len(VARDATA_ANY(slice), - VARSIZE_ANY_EXHDR(slice)); + slice_len); /* * Check that the start position wasn't > slice_strlen. If so, SQL99 @@ -1033,7 +1038,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified) */ p = VARDATA_ANY(slice); for (i = 0; i < S1 - 1; i++) - p += pg_mblen(p); + p += pg_mblen_unbounded(p); /* hang onto a pointer to our start position */ s = p; @@ -1043,7 +1048,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified) * length. */ for (i = S1; i < E1; i++) - p += pg_mblen(p); + p += pg_mblen_unbounded(p); ret = (text *) palloc(VARHDRSZ + (p - s)); SET_VARSIZE(ret, VARHDRSZ + (p - s)); @@ -1350,6 +1355,8 @@ text_position_next(TextPositionState *state) */ if (state->is_multibyte_char_in_char) { + const char *haystack_end = state->str1 + state->len1; + /* Walk one character at a time, until we reach the match. */ /* the search should never move backwards. */ @@ -1358,7 +1365,7 @@ text_position_next(TextPositionState *state) while (state->refpoint < matchptr) { /* step to next character. */ - state->refpoint += pg_mblen(state->refpoint); + state->refpoint += pg_mblen_range(state->refpoint, haystack_end); state->refpos++; /* @@ -1473,7 +1480,8 @@ text_position_get_match_pos(TextPositionState *state) /* Convert the byte position to char position. */ while (state->refpoint < state->last_match) { - state->refpoint += pg_mblen(state->refpoint); + state->refpoint += pg_mblen_range(state->refpoint, + state->last_match); state->refpos++; } Assert(state->refpoint == state->last_match); @@ -4368,7 +4376,7 @@ check_replace_text_has_escape_char(const text *replace_text) } else { - for (; p < p_end; p += pg_mblen(p)) + for (; p < p_end; p += pg_mblen_range(p, p_end)) { if (*p == '\\') return true; @@ -4408,7 +4416,7 @@ appendStringInfoRegexpSubstr(StringInfo str, text *replace_text, } else { - for (; p < p_end && *p != '\\'; p += pg_mblen(p)) + for (; p < p_end && *p != '\\'; p += pg_mblen_range(p, p_end)) /* nothing */ ; } @@ -4966,6 +4974,8 @@ split_text(FunctionCallInfo fcinfo, SplitTextOutputData *tstate) } else { + const char *end_ptr; + /* * When fldsep is NULL, each character in the input string becomes a * separate element in the result set. The separator is effectively @@ -4974,10 +4984,11 @@ split_text(FunctionCallInfo fcinfo, SplitTextOutputData *tstate) inputstring_len = VARSIZE_ANY_EXHDR(inputstring); start_ptr = VARDATA_ANY(inputstring); + end_ptr = start_ptr + inputstring_len; while (inputstring_len > 0) { - int chunk_len = pg_mblen(start_ptr); + int chunk_len = pg_mblen_range(start_ptr, end_ptr); CHECK_FOR_INTERRUPTS(); @@ -5656,7 +5667,7 @@ text_reverse(PG_FUNCTION_ARGS) { int sz; - sz = pg_mblen(p); + sz = pg_mblen_range(p, endp); dst -= sz; memcpy(dst, p, sz); p += sz; @@ -5817,7 +5828,7 @@ text_format(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("unrecognized format() type specifier \"%.*s\"", - pg_mblen(cp), cp), + pg_mblen_range(cp, end_ptr), cp), errhint("For a single \"%%\" use \"%%%%\"."))); /* If indirect width was specified, get its value */ @@ -5938,7 +5949,7 @@ text_format(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("unrecognized format() type specifier \"%.*s\"", - pg_mblen(cp), cp), + pg_mblen_range(cp, end_ptr), cp), errhint("For a single \"%%\" use \"%%%%\"."))); break; } diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 0137ff90f0a..98dcc04122b 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -2037,8 +2037,7 @@ sqlchar_to_unicode(const char *s) char *utf8string; pg_wchar ret[2]; /* need space for trailing zero */ - /* note we're not assuming s is null-terminated */ - utf8string = pg_server_to_any(s, pg_mblen(s), PG_UTF8); + utf8string = pg_server_to_any(s, pg_mblen_cstr(s), PG_UTF8); pg_encoding_mb2wchar_with_len(PG_UTF8, utf8string, ret, pg_encoding_mblen(PG_UTF8, utf8string)); @@ -2091,7 +2090,7 @@ map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, initStringInfo(&buf); - for (p = ident; *p; p += pg_mblen(p)) + for (p = ident; *p; p += pg_mblen_cstr(p)) { if (*p == ':' && (p == ident || fully_escaped)) appendStringInfoString(&buf, "_x003A_"); @@ -2116,7 +2115,7 @@ map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, : !is_valid_xml_namechar(u)) appendStringInfo(&buf, "_x%04X_", (unsigned int) u); else - appendBinaryStringInfo(&buf, p, pg_mblen(p)); + appendBinaryStringInfo(&buf, p, pg_mblen_cstr(p)); } } @@ -2139,7 +2138,7 @@ map_xml_name_to_sql_identifier(const char *name) initStringInfo(&buf); - for (p = name; *p; p += pg_mblen(p)) + for (p = name; *p; p += pg_mblen_cstr(p)) { if (*p == '_' && *(p + 1) == 'x' && isxdigit((unsigned char) *(p + 2)) @@ -2157,7 +2156,7 @@ map_xml_name_to_sql_identifier(const char *name) p += 6; } else - appendBinaryStringInfo(&buf, p, pg_mblen(p)); + appendBinaryStringInfo(&buf, p, pg_mblen_cstr(p)); } return buf.data; diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index 6cb6885bb9b..655920e019a 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -942,12 +942,41 @@ RehashCatCache(CatCache *cp) cp->cc_bucket = newbucket; } +/* + * ConditionalCatalogCacheInitializeCache + * + * Call CatalogCacheInitializeCache() if not yet done. + */ +pg_attribute_always_inline +static void +ConditionalCatalogCacheInitializeCache(CatCache *cache) +{ +#ifdef USE_ASSERT_CHECKING + /* + * TypeCacheRelCallback() runs outside transactions and relies on TYPEOID + * for hashing. This isn't ideal. Since lookup_type_cache() both + * registers the callback and searches TYPEOID, reaching trouble likely + * requires OOM at an unlucky moment. + * + * InvalidateAttoptCacheCallback() runs outside transactions and likewise + * relies on ATTNUM. InitPostgres() initializes ATTNUM, so it's reliable. + */ + if (!(cache->id == TYPEOID || cache->id == ATTNUM) || + IsTransactionState()) + AssertCouldGetRelation(); + else + Assert(cache->cc_tupdesc != NULL); +#endif + + if (unlikely(cache->cc_tupdesc == NULL)) + CatalogCacheInitializeCache(cache); +} + /* * CatalogCacheInitializeCache * * This function does final initialization of a catcache: obtain the tuple - * descriptor and set up the hash and equality function links. We assume - * that the relcache entry can be opened at this point! + * descriptor and set up the hash and equality function links. */ #ifdef CACHEDEBUG #define CatalogCacheInitializeCache_DEBUG1 \ @@ -1082,8 +1111,7 @@ CatalogCacheInitializeCache(CatCache *cache) void InitCatCachePhase2(CatCache *cache, bool touch_index) { - if (cache->cc_tupdesc == NULL) - CatalogCacheInitializeCache(cache); + ConditionalCatalogCacheInitializeCache(cache); if (touch_index && cache->id != AMOID && @@ -1262,16 +1290,12 @@ SearchCatCacheInternal(CatCache *cache, dlist_head *bucket; CatCTup *ct; - /* Make sure we're in an xact, even if this ends up being a cache hit */ - Assert(IsTransactionState()); - Assert(cache->cc_nkeys == nkeys); /* * one-time startup overhead for each cache */ - if (unlikely(cache->cc_tupdesc == NULL)) - CatalogCacheInitializeCache(cache); + ConditionalCatalogCacheInitializeCache(cache); #ifdef CATCACHE_STATS cache->cc_searches++; @@ -1550,8 +1574,7 @@ GetCatCacheHashValue(CatCache *cache, /* * one-time startup overhead for each cache */ - if (cache->cc_tupdesc == NULL) - CatalogCacheInitializeCache(cache); + ConditionalCatalogCacheInitializeCache(cache); /* * calculate the hash value @@ -1600,8 +1623,7 @@ SearchCatCacheList(CatCache *cache, /* * one-time startup overhead for each cache */ - if (cache->cc_tupdesc == NULL) - CatalogCacheInitializeCache(cache); + ConditionalCatalogCacheInitializeCache(cache); Assert(nkeys > 0 && nkeys < cache->cc_nkeys); @@ -2190,7 +2212,8 @@ void PrepareToInvalidateCacheTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple, - void (*function) (int, uint32, Oid)) + void (*function) (int, uint32, Oid, void *), + void *context) { slist_iter iter; Oid reloid; @@ -2225,13 +2248,12 @@ PrepareToInvalidateCacheTuple(Relation relation, continue; /* Just in case cache hasn't finished initialization yet... */ - if (ccp->cc_tupdesc == NULL) - CatalogCacheInitializeCache(ccp); + ConditionalCatalogCacheInitializeCache(ccp); hashvalue = CatalogCacheComputeTupleHashValue(ccp, ccp->cc_nkeys, tuple); dbid = ccp->cc_relisshared ? (Oid) 0 : MyDatabaseId; - (*function) (ccp->id, hashvalue, dbid); + (*function) (ccp->id, hashvalue, dbid, context); if (newtuple) { @@ -2240,7 +2262,7 @@ PrepareToInvalidateCacheTuple(Relation relation, newhashvalue = CatalogCacheComputeTupleHashValue(ccp, ccp->cc_nkeys, newtuple); if (newhashvalue != hashvalue) - (*function) (ccp->id, newhashvalue, dbid); + (*function) (ccp->id, newhashvalue, dbid, context); } } } diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index 9d764ad81f9..e1f0cf3347f 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -99,6 +99,10 @@ * worth trying to avoid sending such inval traffic in the future, if those * problems can be overcome cheaply. * + * When making a nontransactional change to a cacheable object, we must + * likewise send the invalidation immediately, before ending the change's + * critical section. This includes inplace heap updates, relmap, and smgr. + * * When wal_level=logical, write invalidations into WAL at each command end to * support the decoding of the in-progress transactions. See * CommandEndInvalidationMessages. @@ -154,7 +158,7 @@ typedef struct InvalidationListHeader } InvalidationListHeader; /*---------------- - * Invalidation info is divided into two lists: + * Transactional invalidation info is divided into two lists: * 1) events so far in current command, not yet reflected to caches. * 2) events in previous commands of current transaction; these have * been reflected to local caches, and must be either broadcast to @@ -170,26 +174,36 @@ typedef struct InvalidationListHeader *---------------- */ -typedef struct TransInvalidationInfo +/* fields common to both transactional and inplace invalidation */ +typedef struct InvalidationInfo { - /* Back link to parent transaction's info */ - struct TransInvalidationInfo *parent; - - /* Subtransaction nesting depth */ - int my_level; - /* head of current-command event list */ InvalidationListHeader CurrentCmdInvalidMsgs; + /* init file must be invalidated? */ + bool RelcacheInitFileInval; +} InvalidationInfo; + +/* subclass adding fields specific to transactional invalidation */ +typedef struct TransInvalidationInfo +{ + /* Base class */ + struct InvalidationInfo ii; + /* head of previous-commands event list */ InvalidationListHeader PriorCmdInvalidMsgs; - /* init file must be invalidated? */ - bool RelcacheInitFileInval; + /* Back link to parent transaction's info */ + struct TransInvalidationInfo *parent; + + /* Subtransaction nesting depth */ + int my_level; } TransInvalidationInfo; static TransInvalidationInfo *transInvalInfo = NULL; +static InvalidationInfo *inplaceInvalInfo = NULL; + static SharedInvalidationMessage *SharedInvalidMessagesArray; static int numSharedInvalidMessagesArray; static int maxSharedInvalidMessagesArray; @@ -505,9 +519,12 @@ ProcessInvalidationMessagesMulti(InvalidationListHeader *hdr, static void RegisterCatcacheInvalidation(int cacheId, uint32 hashValue, - Oid dbId) + Oid dbId, + void *context) { - AddCatcacheInvalidationMessage(&transInvalInfo->CurrentCmdInvalidMsgs, + InvalidationInfo *info = (InvalidationInfo *) context; + + AddCatcacheInvalidationMessage(&info->CurrentCmdInvalidMsgs, cacheId, hashValue, dbId); } @@ -517,10 +534,9 @@ RegisterCatcacheInvalidation(int cacheId, * Register an invalidation event for all catcache entries from a catalog. */ static void -RegisterCatalogInvalidation(Oid dbId, Oid catId) +RegisterCatalogInvalidation(InvalidationInfo *info, Oid dbId, Oid catId) { - AddCatalogInvalidationMessage(&transInvalInfo->CurrentCmdInvalidMsgs, - dbId, catId); + AddCatalogInvalidationMessage(&info->CurrentCmdInvalidMsgs, dbId, catId); } /* @@ -529,10 +545,9 @@ RegisterCatalogInvalidation(Oid dbId, Oid catId) * As above, but register a relcache invalidation event. */ static void -RegisterRelcacheInvalidation(Oid dbId, Oid relId) +RegisterRelcacheInvalidation(InvalidationInfo *info, Oid dbId, Oid relId) { - AddRelcacheInvalidationMessage(&transInvalInfo->CurrentCmdInvalidMsgs, - dbId, relId); + AddRelcacheInvalidationMessage(&info->CurrentCmdInvalidMsgs, dbId, relId); /* * Most of the time, relcache invalidation is associated with system @@ -549,7 +564,7 @@ RegisterRelcacheInvalidation(Oid dbId, Oid relId) * as well. Also zap when we are invalidating whole relcache. */ if (relId == InvalidOid || RelationIdIsInInitFile(relId)) - transInvalInfo->RelcacheInitFileInval = true; + info->RelcacheInitFileInval = true; } /* @@ -559,10 +574,9 @@ RegisterRelcacheInvalidation(Oid dbId, Oid relId) * Only needed for catalogs that don't have catcaches. */ static void -RegisterSnapshotInvalidation(Oid dbId, Oid relId) +RegisterSnapshotInvalidation(InvalidationInfo *info, Oid dbId, Oid relId) { - AddSnapshotInvalidationMessage(&transInvalInfo->CurrentCmdInvalidMsgs, - dbId, relId); + AddSnapshotInvalidationMessage(&info->CurrentCmdInvalidMsgs, dbId, relId); } /* @@ -706,6 +720,12 @@ InvalidateSystemCachesExtended(bool debug_discard) void AcceptInvalidationMessages(void) { +#ifdef USE_ASSERT_CHECKING + /* message handlers shall access catalogs only during transactions */ + if (IsTransactionState()) + AssertCouldGetRelation(); +#endif + ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage, InvalidateSystemCaches); @@ -752,14 +772,19 @@ AcceptInvalidationMessages(void) * PrepareInvalidationState * Initialize inval lists for the current (sub)transaction. */ -static void +static InvalidationInfo * PrepareInvalidationState(void) { TransInvalidationInfo *myInfo; + /* PrepareToInvalidateCacheTuple() needs relcache */ + AssertCouldGetRelation(); + /* Can't queue transactional message while collecting inplace messages. */ + Assert(inplaceInvalInfo == NULL); + if (transInvalInfo != NULL && transInvalInfo->my_level == GetCurrentTransactionNestLevel()) - return; + return (InvalidationInfo *) transInvalInfo; myInfo = (TransInvalidationInfo *) MemoryContextAllocZero(TopTransactionContext, @@ -775,6 +800,29 @@ PrepareInvalidationState(void) myInfo->my_level > transInvalInfo->my_level); transInvalInfo = myInfo; + return (InvalidationInfo *) myInfo; +} + +/* + * PrepareInplaceInvalidationState + * Initialize inval data for an inplace update. + * + * See previous function for more background. + */ +static InvalidationInfo * +PrepareInplaceInvalidationState(void) +{ + InvalidationInfo *myInfo; + + AssertCouldGetRelation(); + /* limit of one inplace update under assembly */ + Assert(inplaceInvalInfo == NULL); + + /* gone after WAL insertion CritSection ends, so use current context */ + myInfo = (InvalidationInfo *) palloc0(sizeof(InvalidationInfo)); + + inplaceInvalInfo = myInfo; + return myInfo; } /* @@ -870,7 +918,7 @@ xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, * after we send the SI messages. However, we need not do anything unless * we committed. */ - *RelcacheInitFileInval = transInvalInfo->RelcacheInitFileInval; + *RelcacheInitFileInval = transInvalInfo->ii.RelcacheInitFileInval; /* * Walk through TransInvalidationInfo to collect all the messages into a @@ -882,7 +930,7 @@ xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, */ oldcontext = MemoryContextSwitchTo(CurTransactionContext); - ProcessInvalidationMessagesMulti(&transInvalInfo->CurrentCmdInvalidMsgs, + ProcessInvalidationMessagesMulti(&transInvalInfo->ii.CurrentCmdInvalidMsgs, MakeSharedInvalidMessagesArray); ProcessInvalidationMessagesMulti(&transInvalInfo->PriorCmdInvalidMsgs, MakeSharedInvalidMessagesArray); @@ -972,7 +1020,9 @@ ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs, void AtEOXact_Inval(bool isCommit) { - /* Quick exit if no messages */ + inplaceInvalInfo = NULL; + + /* Quick exit if no transactional messages */ if (transInvalInfo == NULL) return; @@ -986,16 +1036,16 @@ AtEOXact_Inval(bool isCommit) * after we send the SI messages. However, we need not do anything * unless we committed. */ - if (transInvalInfo->RelcacheInitFileInval) + if (transInvalInfo->ii.RelcacheInitFileInval) RelationCacheInitFilePreInvalidate(); AppendInvalidationMessages(&transInvalInfo->PriorCmdInvalidMsgs, - &transInvalInfo->CurrentCmdInvalidMsgs); + &transInvalInfo->ii.CurrentCmdInvalidMsgs); ProcessInvalidationMessagesMulti(&transInvalInfo->PriorCmdInvalidMsgs, SendSharedInvalidMessages); - if (transInvalInfo->RelcacheInitFileInval) + if (transInvalInfo->ii.RelcacheInitFileInval) RelationCacheInitFilePostInvalidate(); } else @@ -1010,6 +1060,57 @@ AtEOXact_Inval(bool isCommit) numSharedInvalidMessagesArray = 0; } +/* + * PreInplace_Inval + * Process queued-up invalidation before inplace update critical section. + * + * Tasks belong here if they are safe even if the inplace update does not + * complete. Currently, this just unlinks a cache file, which can fail. The + * sum of this and AtInplace_Inval() mirrors AtEOXact_Inval(isCommit=true). + */ +void +PreInplace_Inval(void) +{ + Assert(CritSectionCount == 0); + + if (inplaceInvalInfo && inplaceInvalInfo->RelcacheInitFileInval) + RelationCacheInitFilePreInvalidate(); +} + +/* + * AtInplace_Inval + * Process queued-up invalidations after inplace update buffer mutation. + */ +void +AtInplace_Inval(void) +{ + Assert(CritSectionCount > 0); + + if (inplaceInvalInfo == NULL) + return; + + ProcessInvalidationMessagesMulti(&inplaceInvalInfo->CurrentCmdInvalidMsgs, + SendSharedInvalidMessages); + + if (inplaceInvalInfo->RelcacheInitFileInval) + RelationCacheInitFilePostInvalidate(); + + inplaceInvalInfo = NULL; + /* inplace doesn't use SharedInvalidMessagesArray */ +} + +/* + * ForgetInplace_Inval + * Alternative to PreInplace_Inval()+AtInplace_Inval(): discard queued-up + * invalidations. This lets inplace update enumerate invalidations + * optimistically, before locking the buffer. + */ +void +ForgetInplace_Inval(void) +{ + inplaceInvalInfo = NULL; +} + /* * AtEOSubXact_Inval * Process queued-up invalidation messages at end of subtransaction. @@ -1032,9 +1133,20 @@ void AtEOSubXact_Inval(bool isCommit) { int my_level; - TransInvalidationInfo *myInfo = transInvalInfo; + TransInvalidationInfo *myInfo; - /* Quick exit if no messages. */ + /* + * Successful inplace update must clear this, but we clear it on abort. + * Inplace updates allocate this in CurrentMemoryContext, which has + * lifespan <= subtransaction lifespan. Hence, don't free it explicitly. + */ + if (isCommit) + Assert(inplaceInvalInfo == NULL); + else + inplaceInvalInfo = NULL; + + /* Quick exit if no transactional messages. */ + myInfo = transInvalInfo; if (myInfo == NULL) return; @@ -1068,8 +1180,8 @@ AtEOSubXact_Inval(bool isCommit) &myInfo->PriorCmdInvalidMsgs); /* Pending relcache inval becomes parent's problem too */ - if (myInfo->RelcacheInitFileInval) - myInfo->parent->RelcacheInitFileInval = true; + if (myInfo->ii.RelcacheInitFileInval) + myInfo->parent->ii.RelcacheInitFileInval = true; /* Pop the transaction state stack */ transInvalInfo = myInfo->parent; @@ -1116,7 +1228,7 @@ CommandEndInvalidationMessages(void) if (transInvalInfo == NULL) return; - ProcessInvalidationMessages(&transInvalInfo->CurrentCmdInvalidMsgs, + ProcessInvalidationMessages(&transInvalInfo->ii.CurrentCmdInvalidMsgs, LocalExecuteInvalidationMessage); /* WAL Log per-command invalidation messages for wal_level=logical */ @@ -1124,30 +1236,28 @@ CommandEndInvalidationMessages(void) LogLogicalInvalidations(); AppendInvalidationMessages(&transInvalInfo->PriorCmdInvalidMsgs, - &transInvalInfo->CurrentCmdInvalidMsgs); + &transInvalInfo->ii.CurrentCmdInvalidMsgs); } /* - * CacheInvalidateHeapTuple - * Register the given tuple for invalidation at end of command - * (ie, current command is creating or outdating this tuple). - * Also, detect whether a relcache invalidation is implied. - * - * For an insert or delete, tuple is the target tuple and newtuple is NULL. - * For an update, we are called just once, with tuple being the old tuple - * version and newtuple the new version. This allows avoidance of duplicate - * effort during an update. + * CacheInvalidateHeapTupleCommon + * Common logic for end-of-command and inplace variants. */ -void -CacheInvalidateHeapTuple(Relation relation, - HeapTuple tuple, - HeapTuple newtuple) +static void +CacheInvalidateHeapTupleCommon(Relation relation, + HeapTuple tuple, + HeapTuple newtuple, + InvalidationInfo *(*prepare_callback) (void)) { + InvalidationInfo *info; Oid tupleRelId; Oid databaseId; Oid relationId; + /* PrepareToInvalidateCacheTuple() needs relcache */ + AssertCouldGetRelation(); + /* Do nothing during bootstrap */ if (IsBootstrapProcessingMode()) return; @@ -1167,11 +1277,8 @@ CacheInvalidateHeapTuple(Relation relation, if (IsToastRelation(relation)) return; - /* - * If we're not prepared to queue invalidation messages for this - * subtransaction level, get ready now. - */ - PrepareInvalidationState(); + /* Allocate any required resources. */ + info = prepare_callback(); /* * First let the catcache do its thing @@ -1180,11 +1287,12 @@ CacheInvalidateHeapTuple(Relation relation, if (RelationInvalidatesSnapshotsOnly(tupleRelId)) { databaseId = IsSharedRelation(tupleRelId) ? InvalidOid : MyDatabaseId; - RegisterSnapshotInvalidation(databaseId, tupleRelId); + RegisterSnapshotInvalidation(info, databaseId, tupleRelId); } else PrepareToInvalidateCacheTuple(relation, tuple, newtuple, - RegisterCatcacheInvalidation); + RegisterCatcacheInvalidation, + (void *) info); /* * Now, is this tuple one of the primary definers of a relcache entry? See @@ -1257,7 +1365,48 @@ CacheInvalidateHeapTuple(Relation relation, /* * Yes. We need to register a relcache invalidation event. */ - RegisterRelcacheInvalidation(databaseId, relationId); + RegisterRelcacheInvalidation(info, databaseId, relationId); +} + +/* + * CacheInvalidateHeapTuple + * Register the given tuple for invalidation at end of command + * (ie, current command is creating or outdating this tuple) and end of + * transaction. Also, detect whether a relcache invalidation is implied. + * + * For an insert or delete, tuple is the target tuple and newtuple is NULL. + * For an update, we are called just once, with tuple being the old tuple + * version and newtuple the new version. This allows avoidance of duplicate + * effort during an update. + */ +void +CacheInvalidateHeapTuple(Relation relation, + HeapTuple tuple, + HeapTuple newtuple) +{ + CacheInvalidateHeapTupleCommon(relation, tuple, newtuple, + PrepareInvalidationState); +} + +/* + * CacheInvalidateHeapTupleInplace + * Register the given tuple for nontransactional invalidation pertaining + * to an inplace update. Also, detect whether a relcache invalidation is + * implied. + * + * Like CacheInvalidateHeapTuple(), but for inplace updates. + * + * Just before and just after the inplace update, the tuple's cache keys must + * match those in key_equivalent_tuple. Cache keys consist of catcache lookup + * key columns and columns referencing pg_class.oid values, + * e.g. pg_constraint.conrelid, which would trigger relcache inval. + */ +void +CacheInvalidateHeapTupleInplace(Relation relation, + HeapTuple key_equivalent_tuple) +{ + CacheInvalidateHeapTupleCommon(relation, key_equivalent_tuple, NULL, + PrepareInplaceInvalidationState); } /* @@ -1276,14 +1425,13 @@ CacheInvalidateCatalog(Oid catalogId) { Oid databaseId; - PrepareInvalidationState(); - if (IsSharedRelation(catalogId)) databaseId = InvalidOid; else databaseId = MyDatabaseId; - RegisterCatalogInvalidation(databaseId, catalogId); + RegisterCatalogInvalidation(PrepareInvalidationState(), + databaseId, catalogId); } /* @@ -1301,15 +1449,14 @@ CacheInvalidateRelcache(Relation relation) Oid databaseId; Oid relationId; - PrepareInvalidationState(); - relationId = RelationGetRelid(relation); if (relation->rd_rel->relisshared) databaseId = InvalidOid; else databaseId = MyDatabaseId; - RegisterRelcacheInvalidation(databaseId, relationId); + RegisterRelcacheInvalidation(PrepareInvalidationState(), + databaseId, relationId); } /* @@ -1322,9 +1469,8 @@ CacheInvalidateRelcache(Relation relation) void CacheInvalidateRelcacheAll(void) { - PrepareInvalidationState(); - - RegisterRelcacheInvalidation(InvalidOid, InvalidOid); + RegisterRelcacheInvalidation(PrepareInvalidationState(), + InvalidOid, InvalidOid); } /* @@ -1338,14 +1484,13 @@ CacheInvalidateRelcacheByTuple(HeapTuple classTuple) Oid databaseId; Oid relationId; - PrepareInvalidationState(); - relationId = classtup->oid; if (classtup->relisshared) databaseId = InvalidOid; else databaseId = MyDatabaseId; - RegisterRelcacheInvalidation(databaseId, relationId); + RegisterRelcacheInvalidation(PrepareInvalidationState(), + databaseId, relationId); } /* @@ -1359,8 +1504,6 @@ CacheInvalidateRelcacheByRelid(Oid relid) { HeapTuple tup; - PrepareInvalidationState(); - tup = SearchSysCache1(RELOID, ObjectIdGetDatum(relid)); if (!HeapTupleIsValid(tup)) elog(ERROR, "cache lookup failed for relation %u", relid); @@ -1549,7 +1692,7 @@ LogLogicalInvalidations() if (transInvalInfo == NULL) return; - ProcessInvalidationMessagesMulti(&transInvalInfo->CurrentCmdInvalidMsgs, + ProcessInvalidationMessagesMulti(&transInvalInfo->ii.CurrentCmdInvalidMsgs, MakeSharedInvalidMessagesArray); Assert(!(numSharedInvalidMessagesArray > 0 && diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 01ff1528da9..70d197292d3 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -2020,6 +2020,23 @@ formrdesc(const char *relationName, Oid relationReltype, relation->rd_isvalid = true; } +#ifdef USE_ASSERT_CHECKING +/* + * AssertCouldGetRelation + * + * Check safety of calling RelationIdGetRelation(). + * + * In code that reads catalogs in the event of a cache miss, call this + * before checking the cache. + */ +void +AssertCouldGetRelation(void) +{ + Assert(IsTransactionState()); + AssertBufferLocksPermitCatalogRead(); +} +#endif + /* ---------------------------------------------------------------- * Relation Descriptor Lookup Interface @@ -2047,8 +2064,7 @@ RelationIdGetRelation(Oid relationId) { Relation rd; - /* Make sure we're in an xact, even if this ends up being a cache hit */ - Assert(IsTransactionState()); + AssertCouldGetRelation(); /* * first try to find reldesc in the cache diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index b4f45cf4f2d..5d0cca6177c 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -39,6 +39,7 @@ #include "catalog/pg_description.h" #include "catalog/pg_enum.h" #include "catalog/pg_event_trigger.h" +#include "catalog/pg_extension.h" #include "catalog/pg_foreign_data_wrapper.h" #include "catalog/pg_foreign_server.h" #include "catalog/pg_foreign_table.h" @@ -994,6 +995,18 @@ static const struct cachedesc cacheinfo[] = { 0 }, 2 + }, + /* intentionally out of alphabetical order, to avoid an ABI break: */ + {ExtensionRelationId, /* EXTENSIONOID */ + ExtensionOidIndexId, + 1, + { + Anum_pg_extension_oid, + 0, + 0, + 0 + }, + 2 } }; @@ -1265,8 +1278,7 @@ SearchSysCacheLocked1(int cacheId, /* * If an inplace update just finished, ensure we process the syscache - * inval. XXX this is insufficient: the inplace updater may not yet - * have reached AtEOXact_Inval(). See test at inplace-inval.spec. + * inval. * * If a heap_update() call just released its LOCKTAG_TUPLE, we'll * probably find the old tuple and reach "tuple concurrently updated". diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c index 1abe90d4aa5..c7b9a403a7f 100644 --- a/src/backend/utils/mb/mbutils.c +++ b/src/backend/utils/mb/mbutils.c @@ -38,7 +38,9 @@ #include "catalog/namespace.h" #include "mb/pg_wchar.h" #include "utils/builtins.h" +#include "utils/memdebug.h" #include "utils/memutils.h" +#include "utils/relcache.h" #include "utils/syscache.h" /* @@ -96,6 +98,13 @@ static char *perform_default_encoding_conversion(const char *src, int len, bool is_client_to_server); static int cliplen(const char *str, int len, int limit); +pg_attribute_noreturn() +static void report_invalid_encoding_int(int encoding, const char *mbstr, + int mblen, int len); + +pg_attribute_noreturn() +static void report_invalid_encoding_db(const char *mbstr, int mblen, int len); + /* * Prepare for a future call to SetClientEncoding. Success should mean @@ -310,7 +319,7 @@ InitializeClientEncoding(void) { Oid utf8_to_server_proc; - Assert(IsTransactionState()); + AssertCouldGetRelation(); utf8_to_server_proc = FindDefaultConversionProc(PG_UTF8, current_server_encoding); @@ -961,11 +970,126 @@ pg_encoding_wchar2mb_with_len(int encoding, return pg_wchar_table[encoding].wchar2mb_with_len(from, (unsigned char *) to, len); } -/* returns the byte length of a multibyte character */ +/* + * Returns the byte length of a multibyte character sequence in a + * null-terminated string. Raises an illegal byte sequence error if the + * sequence would hit a null terminator. + * + * The caller is expected to have checked for a terminator at *mbstr == 0 + * before calling, but some callers want 1 in that case, so this function + * continues that tradition. + * + * This must only be used for strings that have a null-terminator to enable + * bounds detection. + */ +int +pg_mblen_cstr(const char *mbstr) +{ + int length = pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); + + /* + * The .mblen functions return 1 when given a pointer to a terminator. + * Some callers depend on that, so we tolerate it for now. Well-behaved + * callers check the leading byte for a terminator *before* calling. + */ + for (int i = 1; i < length; ++i) + if (unlikely(mbstr[i] == 0)) + report_invalid_encoding_db(mbstr, length, i); + + /* + * String should be NUL-terminated, but checking that would make typical + * callers O(N^2), tripling Valgrind check-world time. Unless + * VALGRIND_EXPENSIVE, check 1 byte after each actual character. (If we + * found a character, not a terminator, the next byte must be a terminator + * or the start of the next character.) If the caller iterates the whole + * string, the last call will diagnose a missing terminator. + */ + if (mbstr[0] != '\0') + { +#ifdef VALGRIND_EXPENSIVE + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr, strlen(mbstr)); +#else + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr + length, 1); +#endif + } + + return length; +} + +/* + * Returns the byte length of a multibyte character sequence bounded by a range + * [mbstr, end) of at least one byte in size. Raises an illegal byte sequence + * error if the sequence would exceed the range. + */ +int +pg_mblen_range(const char *mbstr, const char *end) +{ + int length = pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); + + Assert(end > mbstr); +#ifdef VALGRIND_EXPENSIVE + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr, end - mbstr); +#else + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr, length); +#endif + + if (unlikely(mbstr + length > end)) + report_invalid_encoding_db(mbstr, length, end - mbstr); + + return length; +} + +/* + * Returns the byte length of a multibyte character sequence bounded by a range + * extending for 'limit' bytes, which must be at least one. Raises an illegal + * byte sequence error if the sequence would exceed the range. + */ +int +pg_mblen_with_len(const char *mbstr, int limit) +{ + int length = pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); + + Assert(limit >= 1); +#ifdef VALGRIND_EXPENSIVE + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr, limit); +#else + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr, length); +#endif + + if (unlikely(length > limit)) + report_invalid_encoding_db(mbstr, length, limit); + + return length; +} + + +/* + * Returns the length of a multibyte character sequence, without any + * validation of bounds. + * + * PLEASE NOTE: This function can only be used safely if the caller has + * already verified the input string, since otherwise there is a risk of + * overrunning the buffer if the string is invalid. A prior call to a + * pg_mbstrlen* function suffices. + */ +int +pg_mblen_unbounded(const char *mbstr) +{ + int length = pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); + + VALGRIND_CHECK_MEM_IS_DEFINED(mbstr, length); + + return length; +} + +/* + * Historical name for pg_mblen_unbounded(). Should not be used and will be + * removed in a later version. + */ int pg_mblen(const char *mbstr) { - return pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); + return pg_mblen_unbounded(mbstr); } /* returns the display length of a multibyte character */ @@ -987,14 +1111,14 @@ pg_mbstrlen(const char *mbstr) while (*mbstr) { - mbstr += pg_mblen(mbstr); + mbstr += pg_mblen_cstr(mbstr); len++; } return len; } /* returns the length (counted in wchars) of a multibyte string - * (not necessarily NULL terminated) + * (stops at the first of "limit" or a NUL) */ int pg_mbstrlen_with_len(const char *mbstr, int limit) @@ -1007,7 +1131,7 @@ pg_mbstrlen_with_len(const char *mbstr, int limit) while (limit > 0 && *mbstr) { - int l = pg_mblen(mbstr); + int l = pg_mblen_with_len(mbstr, limit); limit -= l; mbstr += l; @@ -1077,7 +1201,7 @@ pg_mbcharcliplen(const char *mbstr, int len, int limit) while (len > 0 && *mbstr) { - l = pg_mblen(mbstr); + l = pg_mblen_with_len(mbstr, len); nch++; if (nch > limit) break; @@ -1647,12 +1771,19 @@ void report_invalid_encoding(int encoding, const char *mbstr, int len) { int l = pg_encoding_mblen_or_incomplete(encoding, mbstr, len); + + report_invalid_encoding_int(encoding, mbstr, l, len); +} + +static void +report_invalid_encoding_int(int encoding, const char *mbstr, int mblen, int len) +{ char buf[8 * 5 + 1]; char *p = buf; int j, jlimit; - jlimit = Min(l, len); + jlimit = Min(mblen, len); jlimit = Min(jlimit, 8); /* prevent buffer overrun */ for (j = 0; j < jlimit; j++) @@ -1669,6 +1800,12 @@ report_invalid_encoding(int encoding, const char *mbstr, int len) buf))); } +static void +report_invalid_encoding_db(const char *mbstr, int mblen, int len) +{ + report_invalid_encoding_int(GetDatabaseEncoding(), mbstr, mblen, len); +} + /* * report_untranslatable_char: complain about untranslatable character * diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 34a5798a9cd..618cdabcecc 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -229,7 +229,7 @@ #wal_skip_threshold = 2MB #commit_delay = 0 # range 0-100000, in microseconds -#commit_siblings = 5 # range 1-1000 +#commit_siblings = 5 # range 0-1000 # - Checkpoints - diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c index f1a02d602c8..9162226032d 100644 --- a/src/backend/utils/misc/ps_status.c +++ b/src/backend/utils/misc/ps_status.c @@ -73,9 +73,9 @@ bool update_process_title = true; #define PS_USE_PSTAT #elif defined(HAVE_PS_STRINGS) #define PS_USE_PS_STRINGS -#elif (defined(BSD) || defined(__hurd__)) && !defined(__darwin__) +#elif defined(BSD) && !defined(__darwin__) #define PS_USE_CHANGE_ARGV -#elif defined(__linux__) || defined(_AIX) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(__svr5__) || defined(__darwin__) +#elif defined(__linux__) || defined(_AIX) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(__svr5__) || defined(__darwin__) || defined(__GNU__) #define PS_USE_CLOBBER_ARGV #elif defined(WIN32) #define PS_USE_WIN32 @@ -85,7 +85,7 @@ bool update_process_title = true; /* Different systems want the buffer padded differently */ -#if defined(_AIX) || defined(__linux__) || defined(__darwin__) +#if defined(_AIX) || defined(__linux__) || defined(__darwin__) || defined(__GNU__) #define PS_PADDING '\0' #else #define PS_PADDING ' ' diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c index a5f31e23a02..ffdab7b087d 100644 --- a/src/backend/utils/mmgr/mcxt.c +++ b/src/backend/utils/mmgr/mcxt.c @@ -56,6 +56,9 @@ MemoryContext CurTransactionContext = NULL; /* This is a transient link to the active portal's memory context: */ MemoryContext PortalContext = NULL; +/* Is memory context logging currently in progress? */ +static bool LogMemoryContextInProgress = false; + static void MemoryContextCallResetCallbacks(MemoryContext context); static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, @@ -1043,25 +1046,45 @@ ProcessLogMemoryContextInterrupt(void) LogMemoryContextPending = false; /* - * Use LOG_SERVER_ONLY to prevent this message from being sent to the - * connected client. + * Exit immediately if memory context logging is already in progress. This + * prevents recursive calls, which could occur if logging is requested + * repeatedly and rapidly, potentially leading to infinite recursion and a + * crash. */ - ereport(LOG_SERVER_ONLY, - (errhidestmt(true), - errhidecontext(true), - errmsg("logging memory contexts of PID %d", MyProcPid))); + if (LogMemoryContextInProgress) + return; + LogMemoryContextInProgress = true; - /* - * When a backend process is consuming huge memory, logging all its memory - * contexts might overrun available disk space. To prevent this, we limit - * the number of child contexts to log per parent to 100. - * - * As with MemoryContextStats(), we suppose that practical cases where the - * dump gets long will typically be huge numbers of siblings under the - * same parent context; while the additional debugging value from seeing - * details about individual siblings beyond 100 will not be large. - */ - MemoryContextStatsDetail(TopMemoryContext, 100, false); + PG_TRY(); + { + /* + * Use LOG_SERVER_ONLY to prevent this message from being sent to the + * connected client. + */ + ereport(LOG_SERVER_ONLY, + (errhidestmt(true), + errhidecontext(true), + errmsg("logging memory contexts of PID %d", MyProcPid))); + + /* + * When a backend process is consuming huge memory, logging all its + * memory contexts might overrun available disk space. To prevent + * this, we limit the number of child contexts to log per parent to + * 100. + * + * As with MemoryContextStats(), we suppose that practical cases where + * the dump gets long will typically be huge numbers of siblings under + * the same parent context; while the additional debugging value from + * seeing details about individual siblings beyond 100 will not be + * large. + */ + MemoryContextStatsDetail(TopMemoryContext, 100, false); + } + PG_FINALLY(); + { + LogMemoryContextInProgress = false; + } + PG_END_TRY(); } void * diff --git a/src/backend/utils/sort/sharedtuplestore.c b/src/backend/utils/sort/sharedtuplestore.c index fd29ce9609e..fd246a60b6b 100644 --- a/src/backend/utils/sort/sharedtuplestore.c +++ b/src/backend/utils/sort/sharedtuplestore.c @@ -320,7 +320,8 @@ sts_puttuple(SharedTuplestoreAccessor *accessor, void *meta_data, /* Do we have space? */ size = accessor->sts->meta_data_size + tuple->t_len; - if (accessor->write_pointer + size > accessor->write_end) + if (accessor->write_pointer == NULL || + accessor->write_pointer + size > accessor->write_end) { if (accessor->write_chunk == NULL) { diff --git a/src/bin/initdb/po/es.po b/src/bin/initdb/po/es.po index 4eb30c5a4cc..555208939f5 100644 --- a/src/bin/initdb/po/es.po +++ b/src/bin/initdb/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: initdb (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:22+0000\n" +"POT-Creation-Date: 2026-02-06 21:32+0000\n" "PO-Revision-Date: 2021-10-13 23:44-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_amcheck/nls.mk b/src/bin/pg_amcheck/nls.mk index e8b71ceba52..d646c08611c 100644 --- a/src/bin/pg_amcheck/nls.mk +++ b/src/bin/pg_amcheck/nls.mk @@ -1,6 +1,6 @@ # src/bin/pg_amcheck/nls.mk CATALOG_NAME = pg_amcheck -AVAIL_LANGUAGES = de el es fr ja ru sv uk zh_CN +AVAIL_LANGUAGES = de el es fr ja pl ru sv uk zh_CN GETTEXT_FILES = $(FRONTEND_COMMON_GETTEXT_FILES) \ pg_amcheck.c \ ../../fe_utils/cancel.c \ diff --git a/src/bin/pg_amcheck/po/es.po b/src/bin/pg_amcheck/po/es.po index f73bfa455f6..93611aa5b10 100644 --- a/src/bin/pg_amcheck/po/es.po +++ b/src/bin/pg_amcheck/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_amcheck (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:23+0000\n" +"POT-Creation-Date: 2026-02-06 21:33+0000\n" "PO-Revision-Date: 2021-10-13 23:57-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_amcheck/po/pl.po b/src/bin/pg_amcheck/po/pl.po new file mode 100644 index 00000000000..89db1e1d36f --- /dev/null +++ b/src/bin/pg_amcheck/po/pl.po @@ -0,0 +1,506 @@ +msgid "" +msgstr "" +"Project-Id-Version: postgresql\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2025-03-27 18:55+0000\n" +"PO-Revision-Date: 2026-01-03 14:10\n" +"Last-Translator: \n" +"Language-Team: Polish\n" +"Language: pl_PL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Crowdin-Project: postgresql\n" +"X-Crowdin-Project-ID: 324573\n" +"X-Crowdin-Language: pl\n" +"X-Crowdin-File: /REL_14_STABLE/pg_amcheck.pot\n" +"X-Crowdin-File-ID: 786\n" + +#: ../../../src/common/logging.c:259 +#, c-format +msgid "fatal: " +msgstr "" + +#: ../../../src/common/logging.c:266 +#, c-format +msgid "error: " +msgstr "błąd: " + +#: ../../../src/common/logging.c:273 +#, c-format +msgid "warning: " +msgstr "ostrzeżenie: " + +#: ../../fe_utils/cancel.c:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Wysłano żądanie anulowania\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "" + +#: ../../fe_utils/connect_utils.c:92 +#, c-format +msgid "could not connect to database %s: out of memory" +msgstr "" + +#: ../../fe_utils/connect_utils.c:120 +#, c-format +msgid "%s" +msgstr "%s" + +#: ../../fe_utils/query_utils.c:33 ../../fe_utils/query_utils.c:58 +#: pg_amcheck.c:1680 pg_amcheck.c:2128 +#, c-format +msgid "query failed: %s" +msgstr "zapytanie nie powiodło się: %s" + +#: ../../fe_utils/query_utils.c:34 ../../fe_utils/query_utils.c:59 +#: pg_amcheck.c:598 pg_amcheck.c:1130 pg_amcheck.c:1681 pg_amcheck.c:2129 +#, c-format +msgid "query was: %s" +msgstr "" + +#: pg_amcheck.c:330 +#, c-format +msgid "number of parallel jobs must be at least 1" +msgstr "" + +#: pg_amcheck.c:402 +#, c-format +msgid "invalid argument for option %s" +msgstr "" + +#: pg_amcheck.c:411 +#, c-format +msgid "invalid start block" +msgstr "nieprawidłowy blok startowy" + +#: pg_amcheck.c:416 +#, c-format +msgid "start block out of bounds" +msgstr "blok startowy jest poza zakresem" + +#: pg_amcheck.c:426 +#, c-format +msgid "invalid end block" +msgstr "nieprawidłowy blok końcowy" + +#: pg_amcheck.c:431 +#, c-format +msgid "end block out of bounds" +msgstr "book końcowy poza zakresem" + +#: pg_amcheck.c:456 pg_amcheck.c:482 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Użyj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_amcheck.c:464 +#, c-format +msgid "end block precedes start block" +msgstr "blok końcowy poprzedza blok startowy" + +#: pg_amcheck.c:480 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "" + +#: pg_amcheck.c:501 +#, c-format +msgid "cannot specify a database name with --all" +msgstr "nie można określić nazwy bazy danych z --all" + +#: pg_amcheck.c:510 +#, c-format +msgid "cannot specify both a database name and database patterns" +msgstr "nie można określić nazwy bazy danych i wzorców bazy danych" + +#: pg_amcheck.c:540 +#, c-format +msgid "no databases to check" +msgstr "brak baz danych do sprawdzenia" + +#: pg_amcheck.c:596 +#, c-format +msgid "database \"%s\": %s" +msgstr "baza danych \"%s\": %s" + +#: pg_amcheck.c:607 +#, c-format +msgid "skipping database \"%s\": amcheck is not installed" +msgstr "pominięto bazę danych \"%s\": amcheck nie jest zainstalowany" + +#: pg_amcheck.c:615 +#, c-format +msgid "in database \"%s\": using amcheck version \"%s\" in schema \"%s\"" +msgstr "w bazie danych \"%s\": używana wersja amcheck \"%s\" w schemacie \"%s\"" + +#: pg_amcheck.c:637 +#, c-format +msgid "no heap tables to check matching \"%s\"" +msgstr "brak tablic kopca do sprawdzania pasujących \"%s\"" + +#: pg_amcheck.c:640 +#, c-format +msgid "no btree indexes to check matching \"%s\"" +msgstr "brak indeksów bdrzewa by sprawdzić pasujące \"%s\"" + +#: pg_amcheck.c:643 +#, c-format +msgid "no relations to check in schemas matching \"%s\"" +msgstr "brak relacji do sprawdzenia w schematach postaciach do \"%s\"" + +#: pg_amcheck.c:646 +#, c-format +msgid "no relations to check matching \"%s\"" +msgstr "brak relacji do sprawdzenia pasujących \"%s\"" + +#: pg_amcheck.c:674 +#, c-format +msgid "no relations to check" +msgstr "brak relacji do sprawdzenia" + +#: pg_amcheck.c:758 +#, c-format +msgid "checking heap table \"%s.%s.%s\"" +msgstr "sprawdzanie kopca tabeli \"%s.%s.%s\"" + +#: pg_amcheck.c:774 +#, c-format +msgid "checking btree index \"%s.%s.%s\"" +msgstr "sprawdzanie indeksu bdrzewa \"%s.%s.%s\"" + +#: pg_amcheck.c:921 +#, c-format +msgid "error sending command to database \"%s\": %s" +msgstr "błąd wysyłania polecania do bazy danych \"%s\": %s" + +#: pg_amcheck.c:924 +#, c-format +msgid "command was: %s" +msgstr "polecenie było: %s" + +#: pg_amcheck.c:1043 +#, c-format +msgid "heap table \"%s.%s.%s\", block %s, offset %s, attribute %s:\n" +msgstr "kopiec tabeli \"%s.%s.%s\", blok %s, przesunięcie %s, atrybut %s:\n" + +#: pg_amcheck.c:1050 +#, c-format +msgid "heap table \"%s.%s.%s\", block %s, offset %s:\n" +msgstr "kopiec tabeli \"%s.%s.%s\", blok %s, przesunięcie %s:\n" + +#: pg_amcheck.c:1056 +#, c-format +msgid "heap table \"%s.%s.%s\", block %s:\n" +msgstr "kopiec tabeli \"%s.%s.%s\", blok %s:\n" + +#: pg_amcheck.c:1061 pg_amcheck.c:1072 +#, c-format +msgid "heap table \"%s.%s.%s\":\n" +msgstr "kopiec tabeli \"%s.%s.%s\":\n" + +#: pg_amcheck.c:1076 pg_amcheck.c:1145 +#, c-format +msgid "query was: %s\n" +msgstr "zapytanie brzmiało: %s\n" + +#: pg_amcheck.c:1127 +#, c-format +msgid "btree index \"%s.%s.%s\": btree checking function returned unexpected number of rows: %d" +msgstr "indeks btree \"%s.%s.%s\": funkcja sprawdzania btree zwróciła nieoczekiwaną liczbę wierszy: %d" + +#: pg_amcheck.c:1131 +#, c-format +msgid "Are %s's and amcheck's versions compatible?" +msgstr "Czy wersje %s i amcheck są kompatybilne?" + +#: pg_amcheck.c:1141 +#, c-format +msgid "btree index \"%s.%s.%s\":\n" +msgstr "indeks btree \"%s.%s.%s\":\n" + +#: pg_amcheck.c:1166 +#, c-format +msgid "%s checks objects in a PostgreSQL database for corruption.\n\n" +msgstr "%s sprawdza obiekty w bazie danych PostgreSQL pod kątem korupcji.\n\n" + +#: pg_amcheck.c:1167 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: pg_amcheck.c:1168 +#, c-format +msgid " %s [OPTION]... [DBNAME]\n" +msgstr " %s [OPCJA]... [NAZWADB]\n" + +#: pg_amcheck.c:1169 +#, c-format +msgid "\n" +"Target options:\n" +msgstr "\n" +"Opcje docelowe:\n" + +#: pg_amcheck.c:1170 +#, c-format +msgid " -a, --all check all databases\n" +msgstr " -a, --all sprawdź wszystkie bazy danych\n" + +#: pg_amcheck.c:1171 +#, c-format +msgid " -d, --database=PATTERN check matching database(s)\n" +msgstr " -d, --database=WZORZEC sprawdź pasujące bazy danych\n" + +#: pg_amcheck.c:1172 +#, c-format +msgid " -D, --exclude-database=PATTERN do NOT check matching database(s)\n" +msgstr " -D, --exclude-database=WZORZEC nie sprawdzaj bez danych pasujących do wzoru\n" + +#: pg_amcheck.c:1173 +#, c-format +msgid " -i, --index=PATTERN check matching index(es)\n" +msgstr " -i, --index=WZORZEC sprawdź pasujące indeksy\n" + +#: pg_amcheck.c:1174 +#, c-format +msgid " -I, --exclude-index=PATTERN do NOT check matching index(es)\n" +msgstr " -I, --exclude-index=WZORZEC nie sprawdzaj pasujących indeksów\n" + +#: pg_amcheck.c:1175 +#, c-format +msgid " -r, --relation=PATTERN check matching relation(s)\n" +msgstr " -r, --relation=WZORZEC sprawdź pasujące relacje\n" + +#: pg_amcheck.c:1176 +#, c-format +msgid " -R, --exclude-relation=PATTERN do NOT check matching relation(s)\n" +msgstr " -R, --exclude-relation=WZORZEC NIE sprawdza pasujących relacji\n" + +#: pg_amcheck.c:1177 +#, c-format +msgid " -s, --schema=PATTERN check matching schema(s)\n" +msgstr " -s, --schema=WZORZEC sprawdza pasujące schematy\n" + +#: pg_amcheck.c:1178 +#, c-format +msgid " -S, --exclude-schema=PATTERN do NOT check matching schema(s)\n" +msgstr " -S, --exclude-shema=WZORZEC NIE sprawdza pasujących schematów\n" + +#: pg_amcheck.c:1179 +#, c-format +msgid " -t, --table=PATTERN check matching table(s)\n" +msgstr " -t, --table=WZORZEC sprawdź pasujące tabele\n" + +#: pg_amcheck.c:1180 +#, c-format +msgid " -T, --exclude-table=PATTERN do NOT check matching table(s)\n" +msgstr " -T, --exclude-table=WZORZEC NIE sprawdzaj pasujących tabeli\n" + +#: pg_amcheck.c:1181 +#, c-format +msgid " --no-dependent-indexes do NOT expand list of relations to include indexes\n" +msgstr " --no-dependent-indexes NIE rozszerzaj listy relacji by włączyć indeksy\n" + +#: pg_amcheck.c:1182 +#, c-format +msgid " --no-dependent-toast do NOT expand list of relations to include TOAST tables\n" +msgstr " --no-dependent-toast NIE rozszerza listy relacji, aby włączyć tabele TOAST\n" + +#: pg_amcheck.c:1183 +#, c-format +msgid " --no-strict-names do NOT require patterns to match objects\n" +msgstr " --no-strict-names NIE wymaga by wzorce pasowały do obiektów\n" + +#: pg_amcheck.c:1184 +#, c-format +msgid "\n" +"Table checking options:\n" +msgstr "\n" +"Opcje sprawdzania tabeli:\n" + +#: pg_amcheck.c:1185 +#, c-format +msgid " --exclude-toast-pointers do NOT follow relation TOAST pointers\n" +msgstr " --exclude-toast-pointers ignoruj relacje wskaźników TOAST\n" + +#: pg_amcheck.c:1186 +#, c-format +msgid " --on-error-stop stop checking at end of first corrupt page\n" +msgstr " --on-error-stop zatrzymaj sprawdzanie po pierwszej uszkodzonej stronie\n" + +#: pg_amcheck.c:1187 +#, c-format +msgid " --skip=OPTION do NOT check \"all-frozen\" or \"all-visible\" blocks\n" +msgstr " --skip=OPTION NIE sprawdzaj bloków \"all-frozen\" oraz \"all-visible\"\n" + +#: pg_amcheck.c:1188 +#, c-format +msgid " --startblock=BLOCK begin checking table(s) at the given block number\n" +msgstr " --startblock=BLOCK rozpocznij sprawdzanie tabeli od bloku o podanym numerze\n" + +#: pg_amcheck.c:1189 +#, c-format +msgid " --endblock=BLOCK check table(s) only up to the given block number\n" +msgstr " --endblock=BLOCK sprawdzaj tabele tylko do bloku o podanym numerze\n" + +#: pg_amcheck.c:1190 +#, c-format +msgid "\n" +"B-tree index checking options:\n" +msgstr "\n" +"Opcje sprawdzania indeksu B-tree:\n" + +#: pg_amcheck.c:1191 +#, c-format +msgid " --heapallindexed check that all heap tuples are found within indexes\n" +msgstr " --heapallindexed sprawdź czy wszystkie krotki kopca znajdują się pomiędzy indeksami\n" + +#: pg_amcheck.c:1192 +#, c-format +msgid " --parent-check check index parent/child relationships\n" +msgstr " --parent-check sprawdź indeks relacji nadrzędne/podrzędne\n" + +#: pg_amcheck.c:1193 +#, c-format +msgid " --rootdescend search from root page to refind tuples\n" +msgstr " --rootdescend szukaj od strony początkowej, by ponownie zneleźdź krotki\n" + +#: pg_amcheck.c:1194 +#, c-format +msgid "\n" +"Connection options:\n" +msgstr "\n" +"Opcje połączenia:\n" + +#: pg_amcheck.c:1195 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr " -h, --host=HOSTNAME host serwera bazy danych lub katalog gniazda\n" + +#: pg_amcheck.c:1196 +#, c-format +msgid " -p, --port=PORT database server port\n" +msgstr " -p, --port=PORT port serwera bazy danych\n" + +#: pg_amcheck.c:1197 +#, c-format +msgid " -U, --username=USERNAME user name to connect as\n" +msgstr " -U --username=USERNAME nazwa użytkownika użyta do nawiązania połączenia\n" + +#: pg_amcheck.c:1198 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nigdy nie pytaj o hasło\n" + +#: pg_amcheck.c:1199 +#, c-format +msgid " -W, --password force password prompt\n" +msgstr " -W, --password wymuś zapytanie o hasło\n" + +#: pg_amcheck.c:1200 +#, c-format +msgid " --maintenance-db=DBNAME alternate maintenance database\n" +msgstr " --maintenance-db=DBNAME alternatywna baza danych do konserwacji\n" + +#: pg_amcheck.c:1201 +#, c-format +msgid "\n" +"Other options:\n" +msgstr "\n" +"Pozostałe opcje:\n" + +#: pg_amcheck.c:1202 +#, c-format +msgid " -e, --echo show the commands being sent to the server\n" +msgstr " -e, --echo pokazuje polecenia przesyłane do serwera\n" + +#: pg_amcheck.c:1203 +#, c-format +msgid " -j, --jobs=NUM use this many concurrent connections to the server\n" +msgstr " -j, --jobs=NUM liczba równoczesnych połączeń do serwera\n" + +#: pg_amcheck.c:1204 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress pokazanie informacji o postępie\n" + +#: pg_amcheck.c:1205 +#, c-format +msgid " -v, --verbose write a lot of output\n" +msgstr " -v, --verbose wypisuje dużo danych wyjściowych\n" + +#: pg_amcheck.c:1206 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version pokaż informacje o wersji i zakończ\n" + +#: pg_amcheck.c:1207 +#, c-format +msgid " --install-missing install missing extensions\n" +msgstr " --install-missing zainstaluj brakujące rozszerzenia\n" + +#: pg_amcheck.c:1208 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help pokaż tą pomoc i zakończ działanie\n" + +#: pg_amcheck.c:1210 +#, c-format +msgid "\n" +"Report bugs to <%s>.\n" +msgstr "\n" +"Zgłoś błędy do <%s>.\n" + +#: pg_amcheck.c:1211 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s strona główna: <%s>\n" + +#: pg_amcheck.c:1269 +#, c-format +msgid "%*s/%s relations (%d%%), %*s/%s pages (%d%%) %*s" +msgstr "%*s/%s relacje (%d%%), %*s/%s strony (%d%%) %*s" + +#: pg_amcheck.c:1280 +#, c-format +msgid "%*s/%s relations (%d%%), %*s/%s pages (%d%%) (%s%-*.*s)" +msgstr "%*s/%s relacje (%d%%), %*s/%s strony (%d%%) (%s%-*.*s)" + +#: pg_amcheck.c:1295 +#, c-format +msgid "%*s/%s relations (%d%%), %*s/%s pages (%d%%)" +msgstr "%*s/%s relacje (%d%%), %*s/%s strony (%d%%)" + +#: pg_amcheck.c:1354 pg_amcheck.c:1387 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "niewłaściwa nazwa kwalifikowana (zbyt dużo nazw kropkowanych): %s" + +#: pg_amcheck.c:1432 +#, c-format +msgid "improper relation name (too many dotted names): %s" +msgstr "niewłaściwa nazwa relacji (zbyt dużo nazw kropkowanych): %s" + +#: pg_amcheck.c:1585 pg_amcheck.c:1727 +#, c-format +msgid "including database \"%s\"" +msgstr "wliczając w to bazę danych \"%s\"" + +#: pg_amcheck.c:1707 +#, c-format +msgid "internal error: received unexpected database pattern_id %d" +msgstr "błąd wewnętrzny: otrzymano nieoczekiwany pattern_id bazy danych %d" + +#: pg_amcheck.c:1711 +#, c-format +msgid "no connectable databases to check matching \"%s\"" +msgstr "brak baz danych możliwych do połączenia do sprawdzenia pasujących \"%s\"" + +#: pg_amcheck.c:2170 +#, c-format +msgid "internal error: received unexpected relation pattern_id %d" +msgstr "błąd wewnętrzny: otrzymano nieoczekiwany pattern_id relacji %d" + diff --git a/src/bin/pg_archivecleanup/po/es.po b/src/bin/pg_archivecleanup/po/es.po index 3bdcd652751..7599227b408 100644 --- a/src/bin/pg_archivecleanup/po/es.po +++ b/src/bin/pg_archivecleanup/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_archivecleanup (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:23+0000\n" +"POT-Creation-Date: 2026-02-06 21:33+0000\n" "PO-Revision-Date: 2020-09-12 23:13-0300\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_basebackup/po/es.po b/src/bin/pg_basebackup/po/es.po index 4976f5a2108..0fb6360e311 100644 --- a/src/bin/pg_basebackup/po/es.po +++ b/src/bin/pg_basebackup/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:21+0000\n" +"POT-Creation-Date: 2026-02-06 21:31+0000\n" "PO-Revision-Date: 2022-01-12 17:29-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_basebackup/po/ru.po b/src/bin/pg_basebackup/po/ru.po index 4815258490a..8c1fd78a0ae 100644 --- a/src/bin/pg_basebackup/po/ru.po +++ b/src/bin/pg_basebackup/po/ru.po @@ -1,7 +1,7 @@ # 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. -# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 Alexander Lakhin msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL current)\n" diff --git a/src/bin/pg_checksums/po/es.po b/src/bin/pg_checksums/po/es.po index a358941fb2b..b96f3c53a2c 100644 --- a/src/bin/pg_checksums/po/es.po +++ b/src/bin/pg_checksums/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_checksums (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:24+0000\n" +"POT-Creation-Date: 2026-02-06 21:34+0000\n" "PO-Revision-Date: 2021-05-20 21:25-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: pgsql-es-ayuda \n" diff --git a/src/bin/pg_config/po/es.po b/src/bin/pg_config/po/es.po index df8cc219963..7714ca73b8b 100644 --- a/src/bin/pg_config/po/es.po +++ b/src/bin/pg_config/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_config (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:20+0000\n" +"POT-Creation-Date: 2026-02-06 21:31+0000\n" "PO-Revision-Date: 2021-05-20 23:11-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_controldata/po/es.po b/src/bin/pg_controldata/po/es.po index 2661e099387..efaa2703c29 100644 --- a/src/bin/pg_controldata/po/es.po +++ b/src/bin/pg_controldata/po/es.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_controldata (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:24+0000\n" +"POT-Creation-Date: 2026-02-06 21:34+0000\n" "PO-Revision-Date: 2020-09-12 22:55-0300\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_ctl/nls.mk b/src/bin/pg_ctl/nls.mk index aa8b5ac546b..0ce4ab5d787 100644 --- a/src/bin/pg_ctl/nls.mk +++ b/src/bin/pg_ctl/nls.mk @@ -1,4 +1,4 @@ # src/bin/pg_ctl/nls.mk CATALOG_NAME = pg_ctl -AVAIL_LANGUAGES = cs de el es fr it ja ko ru sv tr uk zh_CN +AVAIL_LANGUAGES = cs de el es fr it ja ko pl ru sv tr uk zh_CN GETTEXT_FILES = pg_ctl.c ../../common/exec.c ../../common/fe_memutils.c ../../common/wait_error.c ../../port/path.c diff --git a/src/bin/pg_ctl/po/es.po b/src/bin/pg_ctl/po/es.po index 3666627d555..19e5698db2d 100644 --- a/src/bin/pg_ctl/po/es.po +++ b/src/bin/pg_ctl/po/es.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_ctl (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:21+0000\n" +"POT-Creation-Date: 2026-02-06 21:31+0000\n" "PO-Revision-Date: 2021-05-20 23:12-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_ctl/po/pl.po b/src/bin/pg_ctl/po/pl.po new file mode 100644 index 00000000000..74e62df49ca --- /dev/null +++ b/src/bin/pg_ctl/po/pl.po @@ -0,0 +1,831 @@ +msgid "" +msgstr "" +"Project-Id-Version: postgresql\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2025-03-27 18:53+0000\n" +"PO-Revision-Date: 2026-01-03 13:40\n" +"Last-Translator: \n" +"Language-Team: Polish\n" +"Language: pl_PL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Crowdin-Project: postgresql\n" +"X-Crowdin-Project-ID: 324573\n" +"X-Crowdin-Language: pl\n" +"X-Crowdin-File: /REL_14_STABLE/pg_ctl.pot\n" +"X-Crowdin-File-ID: 740\n" + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "nie można zidentyfikować bieżącego katalogu: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "nie można zmienić katalogu na \"%s\": %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "nie można odczytać linku symbolicznego \"%s\": %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() nie powiodło się: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +msgid "out of memory" +msgstr "brak pamięci" + +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162 +#: ../../port/path.c:709 ../../port/path.c:747 ../../port/path.c:764 +#, c-format +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154 +#, c-format +msgid "cannot duplicate null pointer (internal error)\n" +msgstr "nie można powielić pustego wskazania (błąd wewnętrzny)\n" + +#: ../../common/wait_error.c:45 +#, c-format +msgid "command not executable" +msgstr "polecenie nie wykonywalne" + +#: ../../common/wait_error.c:49 +#, c-format +msgid "command not found" +msgstr "polecenia nie znaleziono" + +#: ../../common/wait_error.c:54 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../../common/wait_error.c:62 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../../common/wait_error.c:66 +#, c-format +msgid "child process was terminated by signal %d: %s" +msgstr "" + +#: ../../common/wait_error.c:72 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" + +#: ../../port/path.c:731 +#, c-format +msgid "could not get current working directory: %s\n" +msgstr "nie można zidentyfikować aktualnego folderu roboczego: %s\n" + +#: pg_ctl.c:260 +#, c-format +msgid "%s: directory \"%s\" does not exist\n" +msgstr "%s: folder \"%s\" nie istnieje\n" + +#: pg_ctl.c:263 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: brak dostępu do katalogu \"%s\": %s\n" + +#: pg_ctl.c:276 +#, c-format +msgid "%s: directory \"%s\" is not a database cluster directory\n" +msgstr "%s: folder \"%s\" nie jest folderem klastra bazy danych\n" + +#: pg_ctl.c:289 +#, c-format +msgid "%s: could not open PID file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku PID \"%s\": %s\n" + +#: pg_ctl.c:298 +#, c-format +msgid "%s: the PID file \"%s\" is empty\n" +msgstr "%s: plik PID \"%s\" jest pusty\n" + +#: pg_ctl.c:301 +#, c-format +msgid "%s: invalid data in PID file \"%s\"\n" +msgstr "%s: niepoprawne dane w pliku PID \"%s\"\n" + +#: pg_ctl.c:464 pg_ctl.c:506 +#, c-format +msgid "%s: could not start server: %s\n" +msgstr "%s: nie można uruchomić serwera: %s\n" + +#: pg_ctl.c:484 +#, c-format +msgid "%s: could not start server due to setsid() failure: %s\n" +msgstr "" + +#: pg_ctl.c:554 +#, c-format +msgid "%s: could not open log file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku logów \"%s\": %s\n" + +#: pg_ctl.c:571 +#, c-format +msgid "%s: could not start server: error code %lu\n" +msgstr "%s: nie udało się uruchomić serwera: kod błędu %lu\n" + +#: pg_ctl.c:788 +#, c-format +msgid "%s: cannot set core file size limit; disallowed by hard limit\n" +msgstr "%s: nie można ustawić ograniczenia rozmiaru pliku jądra; zablokowane przez twardy limit\n" + +#: pg_ctl.c:814 +#, c-format +msgid "%s: could not read file \"%s\"\n" +msgstr "%s: nie można czytać z pliku \"%s\"\n" + +#: pg_ctl.c:819 +#, c-format +msgid "%s: option file \"%s\" must have exactly one line\n" +msgstr "%s: plik opcji \"%s\" musi mieć dokładnie jedną linię\n" + +#: pg_ctl.c:861 pg_ctl.c:1049 pg_ctl.c:1132 +#, c-format +msgid "%s: could not send stop signal (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału zatrzymującego (PID: %ld): %s\n" + +#: pg_ctl.c:889 +#, c-format +msgid "The program \"%s\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "Program \"%s\" jest wymagany przez %s ale nie został znaleziony\n" +"w tym samym folderze co \"%s\".\n" +"Sprawdź instalację.\n" + +#: pg_ctl.c:894 +#, c-format +msgid "The program \"%s\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "Program \"%s\" został znaleziony przez \"%s\"\n" +"ale nie jest w tej samej wersji co %s.\n" +"Sprawdź instalację.\n" + +#: pg_ctl.c:927 +#, c-format +msgid "%s: database system initialization failed\n" +msgstr "%s: inicjacja systemu bazy danych nie powiodła się\n" + +#: pg_ctl.c:942 +#, c-format +msgid "%s: another server might be running; trying to start server anyway\n" +msgstr "%s: inny serwer może być uruchomiony, próba uruchomienia serwera mimo to\n" + +#: pg_ctl.c:990 +msgid "waiting for server to start..." +msgstr "oczekiwanie na uruchomienie serwera..." + +#: pg_ctl.c:995 pg_ctl.c:1087 pg_ctl.c:1165 pg_ctl.c:1277 +msgid " done\n" +msgstr " zakończono\n" + +#: pg_ctl.c:996 +msgid "server started\n" +msgstr "uruchomiono serwer\n" + +#: pg_ctl.c:999 pg_ctl.c:1005 pg_ctl.c:1282 +msgid " stopped waiting\n" +msgstr " oczekiwanie zakończone\n" + +#: pg_ctl.c:1000 +#, c-format +msgid "%s: server did not start in time\n" +msgstr "" + +#: pg_ctl.c:1006 +#, c-format +msgid "%s: could not start server\n" +"Examine the log output.\n" +msgstr "%s: Nie udało się uruchomić serwera\n" +"Sprawdź logi wyjścia.\n" + +#: pg_ctl.c:1014 +msgid "server starting\n" +msgstr "serwer w trakcie uruchamiania\n" + +#: pg_ctl.c:1034 pg_ctl.c:1108 pg_ctl.c:1186 pg_ctl.c:1225 pg_ctl.c:1306 +#, c-format +msgid "%s: PID file \"%s\" does not exist\n" +msgstr "%s: plik PID \"%s\" nie istnieje\n" + +#: pg_ctl.c:1035 pg_ctl.c:1110 pg_ctl.c:1187 pg_ctl.c:1226 pg_ctl.c:1307 +msgid "Is server running?\n" +msgstr "Czy serwer działa?\n" + +#: pg_ctl.c:1041 +#, c-format +msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" +msgstr "%s: Nie można zatrzymać serwera; jest uruchomiony serwer pojedynczego użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1056 +msgid "server shutting down\n" +msgstr "zatrzymywanie serwera\n" + +#: pg_ctl.c:1071 pg_ctl.c:1147 +msgid "WARNING: online backup mode is active\n" +"Shutdown will not complete until pg_stop_backup() is called.\n\n" +msgstr "OSTRZEŻENIE: jest aktywny tryb robienia kopii roboczej online\n" +"Zatrzymanie nie zakończy się póki wywoływana jest pg_stop_backup().\n\n" + +#: pg_ctl.c:1075 pg_ctl.c:1151 +msgid "waiting for server to shut down..." +msgstr "oczekiwanie na zatrzymanie serwera..." + +#: pg_ctl.c:1079 pg_ctl.c:1156 +msgid " failed\n" +msgstr " niepowodzenie\n" + +#: pg_ctl.c:1081 pg_ctl.c:1158 +#, c-format +msgid "%s: server does not shut down\n" +msgstr "%s: serwer nie zatrzymał się\n" + +#: pg_ctl.c:1083 pg_ctl.c:1160 +msgid "HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "PORADA: Opcja \"-m fast\" rozłącza natychmiast sesje zamiast\n" +"czekać na odłączenie sesji przez użytkowników.\n" + +#: pg_ctl.c:1089 pg_ctl.c:1166 +msgid "server stopped\n" +msgstr "serwer zatrzymany\n" + +#: pg_ctl.c:1111 +msgid "trying to start server anyway\n" +msgstr "" + +#: pg_ctl.c:1120 +#, c-format +msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" +msgstr "%s: Nie można zrestartować serwera; jest uruchomiony serwer pojedynczego użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1123 pg_ctl.c:1196 +msgid "Please terminate the single-user server and try again.\n" +msgstr "Proszę zakończyć działanie serwera pojedynczego użytkownika i spróbować raz jeszcze.\n" + +#: pg_ctl.c:1170 +#, c-format +msgid "%s: old server process (PID: %ld) seems to be gone\n" +msgstr "%s: poprzedni proces serwera (PID: %ld) wydaje się zginął\n" + +#: pg_ctl.c:1172 +msgid "starting server anyway\n" +msgstr "uruchomienie serwera mimo wszystko\n" + +#: pg_ctl.c:1193 +#, c-format +msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" +msgstr "%s: Nie można przeładować serwera; jest uruchomiony serwer pojedynczego użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1202 +#, c-format +msgid "%s: could not send reload signal (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału przeładowującego (PID: %ld): %s\n" + +#: pg_ctl.c:1207 +msgid "server signaled\n" +msgstr "serwer zasygnalizowany\n" + +#: pg_ctl.c:1232 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "%s: Nie można rozgłosić serwera; jest uruchomiony serwer pojedynczego użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1240 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: nie można rozgłosić serwera; nie jest w trybie gotowości\n" + +#: pg_ctl.c:1250 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: nie można utworzyć pliku sygnału rozgłoszenia \"%s\": %s\n" + +#: pg_ctl.c:1256 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: nie można zapisać pliku sygnału rozgłoszenia \"%s\": %s\n" + +#: pg_ctl.c:1264 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału rozgłaszającego (PID: %ld): %s\n" + +#: pg_ctl.c:1267 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: nie można usunąć pliku sygnału rozgłoszenia \"%s\": %s\n" + +#: pg_ctl.c:1274 +msgid "waiting for server to promote..." +msgstr "oczekiwanie na rozgłoszenie serwera..." + +#: pg_ctl.c:1278 +msgid "server promoted\n" +msgstr "serwer rozgłoszony\n" + +#: pg_ctl.c:1283 +#, c-format +msgid "%s: server did not promote in time\n" +msgstr "" + +#: pg_ctl.c:1289 +msgid "server promoting\n" +msgstr "serwer w trakcie rozgłaszania\n" + +#: pg_ctl.c:1313 +#, c-format +msgid "%s: cannot rotate log file; single-user server is running (PID: %ld)\n" +msgstr "" + +#: pg_ctl.c:1323 +#, c-format +msgid "%s: could not create log rotation signal file \"%s\": %s\n" +msgstr "" + +#: pg_ctl.c:1329 +#, c-format +msgid "%s: could not write log rotation signal file \"%s\": %s\n" +msgstr "" + +#: pg_ctl.c:1337 +#, c-format +msgid "%s: could not send log rotation signal (PID: %ld): %s\n" +msgstr "" + +#: pg_ctl.c:1340 +#, c-format +msgid "%s: could not remove log rotation signal file \"%s\": %s\n" +msgstr "" + +#: pg_ctl.c:1345 +msgid "server signaled to rotate log file\n" +msgstr "" + +#: pg_ctl.c:1392 +#, c-format +msgid "%s: single-user server is running (PID: %ld)\n" +msgstr "%s: jest uruchomiony serwer pojedynczego użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1406 +#, c-format +msgid "%s: server is running (PID: %ld)\n" +msgstr "%s: jest uruchomiony serwer (PID: %ld)\n" + +#: pg_ctl.c:1422 +#, c-format +msgid "%s: no server running\n" +msgstr "%s: brak uruchomionego serwera\n" + +#: pg_ctl.c:1439 +#, c-format +msgid "%s: could not send signal %d (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału %d (PID: %ld): %s\n" + +#: pg_ctl.c:1470 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: nie udało się znaleźć własnego programu wykonywalnego\n" + +#: pg_ctl.c:1480 +#, c-format +msgid "%s: could not find postgres program executable\n" +msgstr "%s: nie udało się znaleźć programu wykonywalnego postgresa\n" + +#: pg_ctl.c:1550 pg_ctl.c:1584 +#, c-format +msgid "%s: could not open service manager\n" +msgstr "%s: nie udało się otworzyć menadżera usług\n" + +#: pg_ctl.c:1556 +#, c-format +msgid "%s: service \"%s\" already registered\n" +msgstr "%s: usługa \"%s\" jest już zarejestrowana\n" + +#: pg_ctl.c:1567 +#, c-format +msgid "%s: could not register service \"%s\": error code %lu\n" +msgstr "%s: nie udało się zarejestrować usługi \"%s\": kod błędu %lu\n" + +#: pg_ctl.c:1590 +#, c-format +msgid "%s: service \"%s\" not registered\n" +msgstr "%s: usługa \"%s\" niezarejestrowana\n" + +#: pg_ctl.c:1597 +#, c-format +msgid "%s: could not open service \"%s\": error code %lu\n" +msgstr "%s: nie udało się otworzyć usługi \"%s\": kod błędu %lu\n" + +#: pg_ctl.c:1606 +#, c-format +msgid "%s: could not unregister service \"%s\": error code %lu\n" +msgstr "%s: nie udało się wyrejestrować usługi \"%s\": kod błędu %lu\n" + +#: pg_ctl.c:1693 +msgid "Waiting for server startup...\n" +msgstr "Oczekiwanie na uruchomienie serwera...\n" + +#: pg_ctl.c:1696 +msgid "Timed out waiting for server startup\n" +msgstr "Minął czas oczekiwania na uruchomienie serwera\n" + +#: pg_ctl.c:1700 +msgid "Server started and accepting connections\n" +msgstr "Serwer uruchomiony i akceptuje połączenia\n" + +#: pg_ctl.c:1755 +#, c-format +msgid "%s: could not start service \"%s\": error code %lu\n" +msgstr "%s: nie udało się uruchomić usługi \"%s\": kod błędu %lu\n" + +#: pg_ctl.c:1825 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "%s: OSTRZEŻENIE nie można tworzyć ograniczonych tokenów na tej platformie\n" + +#: pg_ctl.c:1838 +#, c-format +msgid "%s: could not open process token: error code %lu\n" +msgstr "%s: nie można otworzyć tokenu procesu: kod błędu %lu\n" + +#: pg_ctl.c:1852 +#, c-format +msgid "%s: could not allocate SIDs: error code %lu\n" +msgstr "%s: nie udało się przydzielić SIDów: kod błędu %lu\n" + +#: pg_ctl.c:1879 +#, c-format +msgid "%s: could not create restricted token: error code %lu\n" +msgstr "%s: nie udało się utworzyć ograniczonego tokena: kod błędu %lu\n" + +#: pg_ctl.c:1910 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "%s: OSTRZEŻENIE: nie może zlokalizować wszystkich funkcji obiektów zadań w systemowym API\n" + +#: pg_ctl.c:2007 +#, c-format +msgid "%s: could not get LUIDs for privileges: error code %lu\n" +msgstr "" + +#: pg_ctl.c:2015 pg_ctl.c:2030 +#, c-format +msgid "%s: could not get token information: error code %lu\n" +msgstr "" + +#: pg_ctl.c:2024 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#: pg_ctl.c:2054 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Użyj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_ctl.c:2062 +#, c-format +msgid "%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n\n" +msgstr "%s jest narzędziem do inicjacji, uruchamiania, zatrzymywania i kontroli serwera PostgreSQL.\n\n" + +#: pg_ctl.c:2063 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: pg_ctl.c:2064 +#, c-format +msgid " %s init[db] [-D DATADIR] [-s] [-o OPTIONS]\n" +msgstr "" + +#: pg_ctl.c:2065 +#, c-format +msgid " %s start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]\n" +" [-o OPTIONS] [-p PATH] [-c]\n" +msgstr "" + +#: pg_ctl.c:2067 +#, c-format +msgid " %s stop [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]\n" +msgstr "" + +#: pg_ctl.c:2068 +#, c-format +msgid " %s restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]\n" +" [-o OPTIONS] [-c]\n" +msgstr "" + +#: pg_ctl.c:2070 +#, c-format +msgid " %s reload [-D DATADIR] [-s]\n" +msgstr "" + +#: pg_ctl.c:2071 +#, c-format +msgid " %s status [-D DATADIR]\n" +msgstr "" + +#: pg_ctl.c:2072 +#, c-format +msgid " %s promote [-D DATADIR] [-W] [-t SECS] [-s]\n" +msgstr "" + +#: pg_ctl.c:2073 +#, c-format +msgid " %s logrotate [-D DATADIR] [-s]\n" +msgstr "" + +#: pg_ctl.c:2074 +#, c-format +msgid " %s kill SIGNALNAME PID\n" +msgstr "" + +#: pg_ctl.c:2076 +#, c-format +msgid " %s register [-D DATADIR] [-N SERVICENAME] [-U USERNAME] [-P PASSWORD]\n" +" [-S START-TYPE] [-e SOURCE] [-W] [-t SECS] [-s] [-o OPTIONS]\n" +msgstr "" + +#: pg_ctl.c:2078 +#, c-format +msgid " %s unregister [-N SERVICENAME]\n" +msgstr " %s unregister [-N NAZWAUSLUGI]\n" + +#: pg_ctl.c:2081 +#, c-format +msgid "\n" +"Common options:\n" +msgstr "\n" +"Opcje ogólne:\n" + +#: pg_ctl.c:2082 +#, c-format +msgid " -D, --pgdata=DATADIR location of the database storage area\n" +msgstr " -D, --pgdata=KATDANE położenie miejsca przechowywania bazy danych\n" + +#: pg_ctl.c:2084 +#, c-format +msgid " -e SOURCE event source for logging when running as a service\n" +msgstr " -e ŹRÓDŁO źródło zdarzenia do logowania gdy uruchomiono jako usługę\n" + +#: pg_ctl.c:2086 +#, c-format +msgid " -s, --silent only print errors, no informational messages\n" +msgstr " -s, --silent wypisz tylko błędy, bez komunikatów informacyjnych\n" + +#: pg_ctl.c:2087 +#, c-format +msgid " -t, --timeout=SECS seconds to wait when using -w option\n" +msgstr " -t, --timeout=SEKUNDY sekundy oczekiwania podczas użycia opcji -w\n" + +#: pg_ctl.c:2088 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version pokaż informacje o wersji i zakończ\n" + +#: pg_ctl.c:2089 +#, c-format +msgid " -w, --wait wait until operation completes (default)\n" +msgstr " -w, --wait czekaj na zakończenie operacji (domyślnie)\n" + +#: pg_ctl.c:2090 +#, c-format +msgid " -W, --no-wait do not wait until operation completes\n" +msgstr " -W, --no-wait nie czekaj na zakończenie operacji\n" + +#: pg_ctl.c:2091 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help pokaż tą pomoc i zakończ działanie\n" + +#: pg_ctl.c:2092 +#, c-format +msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" +msgstr "Jeśli nie jest podana -D, używana jest zmienna środowiskowa PGDATA.\n" + +#: pg_ctl.c:2094 +#, c-format +msgid "\n" +"Options for start or restart:\n" +msgstr "\n" +"Opcje uruchomienia lub restartu:\n" + +#: pg_ctl.c:2096 +#, c-format +msgid " -c, --core-files allow postgres to produce core files\n" +msgstr " -c, --core-files zezwól postgresowi utworzyć pliki jądra\n" + +#: pg_ctl.c:2098 +#, c-format +msgid " -c, --core-files not applicable on this platform\n" +msgstr " -c, --core-files niedostępne na tej platformie\n" + +#: pg_ctl.c:2100 +#, c-format +msgid " -l, --log=FILENAME write (or append) server log to FILENAME\n" +msgstr " -l, --log=NAZWAPLIKU zapisuje (lub dodaje) komunikaty serwera do NAZWAPLIKU\n" + +#: pg_ctl.c:2101 +#, c-format +msgid " -o, --options=OPTIONS command line options to pass to postgres\n" +" (PostgreSQL server executable) or initdb\n" +msgstr " -o, --options=OPCJE opcje wiersza poleceń przekazywanych postgresowi\n" +" (program wykonywalny PostgreSQL) lub initdb\n" + +#: pg_ctl.c:2103 +#, c-format +msgid " -p PATH-TO-POSTGRES normally not necessary\n" +msgstr " -p ŚCIEŻKA-DO-POSTGRES zwykle niekonieczna\n" + +#: pg_ctl.c:2104 +#, c-format +msgid "\n" +"Options for stop or restart:\n" +msgstr "\n" +"Opcje dla zatrzymania lub restartu:\n" + +#: pg_ctl.c:2105 +#, c-format +msgid " -m, --mode=MODE MODE can be \"smart\", \"fast\", or \"immediate\"\n" +msgstr " -m, --mode=TRYB TRYB może być \"smart\", \"fast\" lub \"immediate\"\n" + +#: pg_ctl.c:2107 +#, c-format +msgid "\n" +"Shutdown modes are:\n" +msgstr "\n" +"Tryby zamknięcia to:\n" + +#: pg_ctl.c:2108 +#, c-format +msgid " smart quit after all clients have disconnected\n" +msgstr " smart wyjście po rozłączeniu się wszystkich klientów\n" + +#: pg_ctl.c:2109 +#, c-format +msgid " fast quit directly, with proper shutdown (default)\n" +msgstr "" + +#: pg_ctl.c:2110 +#, c-format +msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" +msgstr " immediate wyjście bez pełnego zamknięcia; doprowadzi do odzyskiwania przy restarcie\n" + +#: pg_ctl.c:2112 +#, c-format +msgid "\n" +"Allowed signal names for kill:\n" +msgstr "\n" +"Dopuszczalne nazwy sygnałów dla zabicia:\n" + +#: pg_ctl.c:2116 +#, c-format +msgid "\n" +"Options for register and unregister:\n" +msgstr "\n" +"Opcje rejestracji i wyrejestrowania:\n" + +#: pg_ctl.c:2117 +#, c-format +msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" +msgstr " -N SERVICENAME nazwa usługi, na której rejestruje się serwer PostgreSQL\n" + +#: pg_ctl.c:2118 +#, c-format +msgid " -P PASSWORD password of account to register PostgreSQL server\n" +msgstr " -P PASSWORD hasło konta rejestracji serwera PostgreSQL\n" + +#: pg_ctl.c:2119 +#, c-format +msgid " -U USERNAME user name of account to register PostgreSQL server\n" +msgstr " -U USERNAME nazwa użytkownika konta rejestracji serwera PostgreSQL\n" + +#: pg_ctl.c:2120 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr " -S TYP-STARTU typ startu usługi rejestracji serwera PostgreSQL\n" + +#: pg_ctl.c:2122 +#, c-format +msgid "\n" +"Start types are:\n" +msgstr "\n" +"Rodzaje startu to:\n" + +#: pg_ctl.c:2123 +#, c-format +msgid " auto start service automatically during system startup (default)\n" +msgstr " auto uruchamia usługę automatycznie w czasie startu systemu (domyślnie)\n" + +#: pg_ctl.c:2124 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand uruchamia usługę na żądanie\n" + +#: pg_ctl.c:2127 +#, c-format +msgid "\n" +"Report bugs to <%s>.\n" +msgstr "\n" +"Zgłoś błędy do <%s>.\n" + +#: pg_ctl.c:2128 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s strona główna: <%s>\n" + +#: pg_ctl.c:2153 +#, c-format +msgid "%s: unrecognized shutdown mode \"%s\"\n" +msgstr "%s: nierozpoznany tryb wyłączenia \"%s\"\n" + +#: pg_ctl.c:2182 +#, c-format +msgid "%s: unrecognized signal name \"%s\"\n" +msgstr "%s: nierozpoznana nazwa sygnału \"%s\"\n" + +#: pg_ctl.c:2199 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: nierozpoznany tryb uruchomienia \"%s\"\n" + +#: pg_ctl.c:2254 +#, c-format +msgid "%s: could not determine the data directory using command \"%s\"\n" +msgstr "%s: nie można określić folderu danych przy użyciu polecenia \"%s\"\n" + +#: pg_ctl.c:2278 +#, c-format +msgid "%s: control file appears to be corrupt\n" +msgstr "%s: plik kontrolny wydaje się uszkodzony\n" + +#: pg_ctl.c:2346 +#, c-format +msgid "%s: cannot be run as root\n" +"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" +"own the server process.\n" +msgstr "%s: nie można uruchomić jako root\n" +"Proszę zalogować się (używając np: \"su\") na (nieuprzywilejowanego) użytkownika który\n" +"będzie właścicielem procesu.\n" + +#: pg_ctl.c:2429 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: opcja -S nieobsługiwana na tej platformie\n" + +#: pg_ctl.c:2466 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: za duża ilość parametrów (pierwszy to \"%s\")\n" + +#: pg_ctl.c:2492 +#, c-format +msgid "%s: missing arguments for kill mode\n" +msgstr "%s: nie wskazano wszystkich argumentów trybu zabicia\n" + +#: pg_ctl.c:2510 +#, c-format +msgid "%s: unrecognized operation mode \"%s\"\n" +msgstr "%s: nierozpoznany tryb autoryzacji \"%s\"\n" + +#: pg_ctl.c:2520 +#, c-format +msgid "%s: no operation specified\n" +msgstr "%s: nie podano operacji\n" + +#: pg_ctl.c:2541 +#, c-format +msgid "%s: no database directory specified and environment variable PGDATA unset\n" +msgstr "%s: nie wskazano folderu bazy danych ani nie ustawiono zmiennej środowiska PGDATA\n" + diff --git a/src/bin/pg_dump/po/es.po b/src/bin/pg_dump/po/es.po index 7d44a6241d8..966a2e4566d 100644 --- a/src/bin/pg_dump/po/es.po +++ b/src/bin/pg_dump/po/es.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:22+0000\n" +"POT-Creation-Date: 2026-02-06 21:33+0000\n" "PO-Revision-Date: 2022-01-12 17:37-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_dump/po/ru.po b/src/bin/pg_dump/po/ru.po index 2c4d788f4c5..7ec149c6d4b 100644 --- a/src/bin/pg_dump/po/ru.po +++ b/src/bin/pg_dump/po/ru.po @@ -5,7 +5,7 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2012. # Dmitriy Olshevskiy , 2014. -# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 Alexander Lakhin msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL current)\n" diff --git a/src/bin/pg_dump/po/uk.po b/src/bin/pg_dump/po/uk.po index ef130782ba5..92f6852e719 100644 --- a/src/bin/pg_dump/po/uk.po +++ b/src/bin/pg_dump/po/uk.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: postgresql\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-03-27 18:55+0000\n" -"PO-Revision-Date: 2025-04-01 13:47\n" +"POT-Creation-Date: 2025-12-31 03:26+0000\n" +"PO-Revision-Date: 2025-12-31 15:41\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -112,222 +112,222 @@ msgstr "дочірній процес перервано через сигнал msgid "child process exited with unrecognized status %d" msgstr "дочірній процес завершився з невизнаним статусом %d" -#: common.c:124 +#: common.c:127 #, c-format msgid "reading extensions" msgstr "читання розширень" -#: common.c:128 +#: common.c:131 #, c-format msgid "identifying extension members" msgstr "ідентифікація членів розширення" -#: common.c:131 +#: common.c:134 #, c-format msgid "reading schemas" msgstr "читання схемів" -#: common.c:141 +#: common.c:144 #, c-format msgid "reading user-defined tables" msgstr "читання користувацьких таблиць" -#: common.c:148 +#: common.c:151 #, c-format msgid "reading user-defined functions" msgstr "читання користувацьких функцій" -#: common.c:153 +#: common.c:156 #, c-format msgid "reading user-defined types" msgstr "читання користувацьких типів" -#: common.c:158 +#: common.c:161 #, c-format msgid "reading procedural languages" msgstr "читання процедурних мов" -#: common.c:161 +#: common.c:164 #, c-format msgid "reading user-defined aggregate functions" msgstr "читання користувацьких агрегатних функцій" -#: common.c:164 +#: common.c:167 #, c-format msgid "reading user-defined operators" msgstr "читання користувацьких операторів" -#: common.c:168 +#: common.c:171 #, c-format msgid "reading user-defined access methods" msgstr "читання користувацьких методів доступу" -#: common.c:171 +#: common.c:175 #, c-format msgid "reading user-defined operator classes" msgstr "читання користувацьких класів операторів" -#: common.c:174 +#: common.c:178 #, c-format msgid "reading user-defined operator families" msgstr "читання користувацьких сімейств операторів" -#: common.c:177 +#: common.c:181 #, c-format msgid "reading user-defined text search parsers" msgstr "читання користувацьких парсерів текстового пошуку" -#: common.c:180 +#: common.c:184 #, c-format msgid "reading user-defined text search templates" msgstr "читання користувацьких шаблонів текстового пошуку" -#: common.c:183 +#: common.c:187 #, c-format msgid "reading user-defined text search dictionaries" msgstr "читання користувацьких словників текстового пошуку" -#: common.c:186 +#: common.c:190 #, c-format msgid "reading user-defined text search configurations" msgstr "читання користувацьких конфігурацій текстового пошуку" -#: common.c:189 +#: common.c:193 #, c-format msgid "reading user-defined foreign-data wrappers" msgstr "читання користувацьких джерел сторонніх даних" -#: common.c:192 +#: common.c:196 #, c-format msgid "reading user-defined foreign servers" msgstr "читання користувацьких сторонніх серверів" -#: common.c:195 +#: common.c:199 #, c-format msgid "reading default privileges" msgstr "читання прав за замовчуванням" -#: common.c:198 +#: common.c:202 #, c-format msgid "reading user-defined collations" msgstr "читання користувацьких сортувань" -#: common.c:202 +#: common.c:206 #, c-format msgid "reading user-defined conversions" msgstr "читання користувацьких перетворень" -#: common.c:205 +#: common.c:209 #, c-format msgid "reading type casts" msgstr "читання типу приведення" -#: common.c:208 +#: common.c:212 #, c-format msgid "reading transforms" msgstr "читання перетворень" -#: common.c:211 +#: common.c:215 #, c-format msgid "reading table inheritance information" msgstr "читання інформації про успадкування таблиці" -#: common.c:214 +#: common.c:218 #, c-format msgid "reading event triggers" msgstr "читання тригерів подій" -#: common.c:218 +#: common.c:222 #, c-format msgid "finding extension tables" msgstr "пошук таблиць розширень" -#: common.c:222 +#: common.c:226 #, c-format msgid "finding inheritance relationships" msgstr "пошук відносин успадкування" -#: common.c:225 +#: common.c:229 #, c-format msgid "reading column info for interesting tables" msgstr "читання інформації про стовпці цікавлячої таблиці" -#: common.c:228 +#: common.c:232 #, c-format msgid "flagging inherited columns in subtables" msgstr "помітка успадкованих стовпців в підтаблицях" -#: common.c:231 +#: common.c:235 #, c-format msgid "reading partitioning data" msgstr "читання даних секції" -#: common.c:234 +#: common.c:238 #, c-format msgid "reading indexes" msgstr "читання індексів" -#: common.c:237 +#: common.c:241 #, c-format msgid "flagging indexes in partitioned tables" msgstr "помітка індексів в секційних таблицях" -#: common.c:240 +#: common.c:244 #, c-format msgid "reading extended statistics" msgstr "читання розширеної статистики" -#: common.c:243 +#: common.c:247 #, c-format msgid "reading constraints" msgstr "читання обмежень" -#: common.c:246 +#: common.c:250 #, c-format msgid "reading triggers" msgstr "читання тригерів" -#: common.c:249 +#: common.c:253 #, c-format msgid "reading rewrite rules" msgstr "читання правил перезаписування" -#: common.c:252 +#: common.c:256 #, c-format msgid "reading policies" msgstr "читання політик" -#: common.c:255 +#: common.c:259 #, c-format msgid "reading publications" msgstr "читання публікацій" -#: common.c:260 +#: common.c:264 #, c-format msgid "reading publication membership" msgstr "читання публікацій учасників" -#: common.c:263 +#: common.c:267 #, c-format msgid "reading subscriptions" msgstr "читання підписок" -#: common.c:340 +#: common.c:344 #, c-format msgid "invalid number of parents %d for table \"%s\"" msgstr "неприпустиме число батьківських елементів %d для таблиці \"%s\"" -#: common.c:1102 +#: common.c:1117 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found" msgstr "помилка перевірки, батьківський елемент ідентифікатора OID %u для таблиці \"%s\" (ідентифікатор OID %u) не знайдено" -#: common.c:1144 +#: common.c:1159 #, c-format msgid "could not parse numeric array \"%s\": too many numbers" msgstr "не вдалося проаналізувати числовий масив \"%s\": забагато чисел" -#: common.c:1159 +#: common.c:1174 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number" msgstr "не вдалося проаналізувати числовий масив \"%s\": неприпустимий характер числа" @@ -456,7 +456,7 @@ msgstr "pgpipe: не вдалося зв'язатися з сокетом: ко msgid "pgpipe: could not accept connection: error code %d" msgstr "pgpipe: не вдалося прийняти зв'язок: код помилки %d" -#: pg_backup_archiver.c:279 pg_backup_archiver.c:1632 +#: pg_backup_archiver.c:279 pg_backup_archiver.c:1651 #, c-format msgid "could not close output file: %m" msgstr "не вдалося закрити вихідний файл: %m" @@ -501,72 +501,72 @@ msgstr "прямі з'днання з базою даних не підтрим msgid "implied data-only restore" msgstr "мається на увазі відновлення лише даних" -#: pg_backup_archiver.c:520 +#: pg_backup_archiver.c:531 #, c-format msgid "dropping %s %s" msgstr "видалення %s %s" -#: pg_backup_archiver.c:615 +#: pg_backup_archiver.c:626 #, c-format msgid "could not find where to insert IF EXISTS in statement \"%s\"" msgstr "не вдалося знайти, куди вставити IF EXISTS в інструкції \"%s\"" -#: pg_backup_archiver.c:771 pg_backup_archiver.c:773 +#: pg_backup_archiver.c:790 pg_backup_archiver.c:792 #, c-format msgid "warning from original dump file: %s" msgstr "попередження з оригінального файлу дамп: %s" -#: pg_backup_archiver.c:788 +#: pg_backup_archiver.c:807 #, c-format msgid "creating %s \"%s.%s\"" msgstr "створення %s \"%s.%s\"" -#: pg_backup_archiver.c:791 +#: pg_backup_archiver.c:810 #, c-format msgid "creating %s \"%s\"" msgstr "створення %s \" \"%s\"" -#: pg_backup_archiver.c:841 +#: pg_backup_archiver.c:860 #, c-format msgid "connecting to new database \"%s\"" msgstr "підключення до нової бази даних \"%s\"" -#: pg_backup_archiver.c:868 +#: pg_backup_archiver.c:887 #, c-format msgid "processing %s" msgstr "обробка %s" -#: pg_backup_archiver.c:890 +#: pg_backup_archiver.c:909 #, c-format msgid "processing data for table \"%s.%s\"" msgstr "обробка даних для таблиці \"%s.%s\"" -#: pg_backup_archiver.c:963 +#: pg_backup_archiver.c:982 #, c-format msgid "executing %s %s" msgstr "виконання %s %s" -#: pg_backup_archiver.c:1002 +#: pg_backup_archiver.c:1021 #, c-format msgid "disabling triggers for %s" msgstr "вимкнення тригерів для %s" -#: pg_backup_archiver.c:1028 +#: pg_backup_archiver.c:1047 #, c-format msgid "enabling triggers for %s" msgstr "увімкнення тригерів для %s" -#: pg_backup_archiver.c:1093 +#: pg_backup_archiver.c:1112 #, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine" msgstr "внутрішня помилка - WriteData не може бути викликана поза контекстом підпрограми DataDumper " -#: pg_backup_archiver.c:1279 +#: pg_backup_archiver.c:1298 #, c-format msgid "large-object output not supported in chosen format" msgstr "вивід великих об'єктів не підтримується у вибраному форматі" -#: pg_backup_archiver.c:1337 +#: pg_backup_archiver.c:1356 #, c-format msgid "restored %d large object" msgid_plural "restored %d large objects" @@ -575,55 +575,55 @@ msgstr[1] "відновлено %d великих об'єкти" msgstr[2] "відновлено %d великих об'єктів" msgstr[3] "відновлено %d великих об'єктів" -#: pg_backup_archiver.c:1358 pg_backup_tar.c:733 +#: pg_backup_archiver.c:1377 pg_backup_tar.c:733 #, c-format msgid "restoring large object with OID %u" msgstr "відновлення великого об'єкту з OID %u" -#: pg_backup_archiver.c:1370 +#: pg_backup_archiver.c:1389 #, c-format msgid "could not create large object %u: %s" msgstr "не вдалося створити великий об'єкт %u: %s" -#: pg_backup_archiver.c:1375 pg_dump.c:3816 +#: pg_backup_archiver.c:1394 pg_dump.c:3847 #, c-format msgid "could not open large object %u: %s" msgstr "не вдалося відкрити великий об'єкт %u: %s" -#: pg_backup_archiver.c:1431 +#: pg_backup_archiver.c:1450 #, c-format msgid "could not open TOC file \"%s\": %m" msgstr "не вдалося відкрити файл TOC \"%s\": %m" -#: pg_backup_archiver.c:1459 +#: pg_backup_archiver.c:1478 #, c-format msgid "line ignored: %s" msgstr "рядок проігноровано: %s" -#: pg_backup_archiver.c:1466 +#: pg_backup_archiver.c:1485 #, c-format msgid "could not find entry for ID %d" msgstr "не вдалося знайти введення для ID %d" -#: pg_backup_archiver.c:1489 pg_backup_directory.c:222 +#: pg_backup_archiver.c:1508 pg_backup_directory.c:222 #: pg_backup_directory.c:599 #, c-format msgid "could not close TOC file: %m" msgstr "не вдалося закрити файл TOC: %m" -#: pg_backup_archiver.c:1603 pg_backup_custom.c:156 pg_backup_directory.c:332 +#: pg_backup_archiver.c:1622 pg_backup_custom.c:156 pg_backup_directory.c:332 #: pg_backup_directory.c:586 pg_backup_directory.c:649 -#: pg_backup_directory.c:668 pg_dumpall.c:489 +#: pg_backup_directory.c:668 pg_dumpall.c:514 #, c-format msgid "could not open output file \"%s\": %m" msgstr "не вдалося відкрити вихідний файл \"%s\": %m" -#: pg_backup_archiver.c:1605 pg_backup_custom.c:162 +#: pg_backup_archiver.c:1624 pg_backup_custom.c:162 #, c-format msgid "could not open output file: %m" msgstr "не вдалося відкрити вихідний файл: %m" -#: pg_backup_archiver.c:1699 +#: pg_backup_archiver.c:1718 #, c-format msgid "wrote %zu byte of large object data (result = %d)" msgid_plural "wrote %zu bytes of large object data (result = %d)" @@ -632,258 +632,258 @@ msgstr[1] "записано %zu байти даних великого об'єк msgstr[2] "записано %zu байтів даних великого об'єкта (результат = %d)" msgstr[3] "записано %zu байтів даних великого об'єкта (результат = %d)" -#: pg_backup_archiver.c:1705 +#: pg_backup_archiver.c:1724 #, c-format msgid "could not write to large object: %s" msgstr "не вдалося записати до великого об'єкту: %s" -#: pg_backup_archiver.c:1795 +#: pg_backup_archiver.c:1814 #, c-format msgid "while INITIALIZING:" msgstr "при ІНІЦІАЛІЗАЦІЇ:" -#: pg_backup_archiver.c:1800 +#: pg_backup_archiver.c:1819 #, c-format msgid "while PROCESSING TOC:" msgstr "при ОБРОБЦІ TOC:" -#: pg_backup_archiver.c:1805 +#: pg_backup_archiver.c:1824 #, c-format msgid "while FINALIZING:" msgstr "при ЗАВЕРШЕННІ:" -#: pg_backup_archiver.c:1810 +#: pg_backup_archiver.c:1829 #, c-format msgid "from TOC entry %d; %u %u %s %s %s" msgstr "зі входження до TOC %d; %u %u %s %s %s" -#: pg_backup_archiver.c:1886 +#: pg_backup_archiver.c:1905 #, c-format msgid "bad dumpId" msgstr "невірний dumpId" -#: pg_backup_archiver.c:1907 +#: pg_backup_archiver.c:1926 #, c-format msgid "bad table dumpId for TABLE DATA item" msgstr "невірна таблиця dumpId для елементу даних таблиці" -#: pg_backup_archiver.c:1999 +#: pg_backup_archiver.c:2018 #, c-format msgid "unexpected data offset flag %d" msgstr "неочікувана позначка зсуву даних %d" -#: pg_backup_archiver.c:2012 +#: pg_backup_archiver.c:2031 #, c-format msgid "file offset in dump file is too large" msgstr "зсув файлу у файлі дампу завеликий" -#: pg_backup_archiver.c:2150 pg_backup_archiver.c:2160 +#: pg_backup_archiver.c:2169 pg_backup_archiver.c:2179 #, c-format msgid "directory name too long: \"%s\"" msgstr "ім'я каталогу задовге: \"%s\"" -#: pg_backup_archiver.c:2168 +#: pg_backup_archiver.c:2187 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)" msgstr "каталог \"%s\" не схожий на архівний (\"toc.dat\" не існує)" -#: pg_backup_archiver.c:2176 pg_backup_custom.c:173 pg_backup_custom.c:807 +#: pg_backup_archiver.c:2195 pg_backup_custom.c:173 pg_backup_custom.c:807 #: pg_backup_directory.c:207 pg_backup_directory.c:395 #, c-format msgid "could not open input file \"%s\": %m" msgstr "не вдалося відкрити вхідний файл \"%s\": %m" -#: pg_backup_archiver.c:2183 pg_backup_custom.c:179 +#: pg_backup_archiver.c:2202 pg_backup_custom.c:179 #, c-format msgid "could not open input file: %m" msgstr "не вдалося відкрити вхідний файл: %m" -#: pg_backup_archiver.c:2189 +#: pg_backup_archiver.c:2208 #, c-format msgid "could not read input file: %m" msgstr "не вдалося прочитати вхідний файл: %m" -#: pg_backup_archiver.c:2191 +#: pg_backup_archiver.c:2210 #, c-format msgid "input file is too short (read %lu, expected 5)" msgstr "вхідний файл закороткий (прочитано %lu, очікувалось 5)" -#: pg_backup_archiver.c:2223 +#: pg_backup_archiver.c:2242 #, c-format msgid "input file appears to be a text format dump. Please use psql." msgstr "вхідний файл схожий на дамп текстового формату. Будь ласка, використайте psql." -#: pg_backup_archiver.c:2229 +#: pg_backup_archiver.c:2248 #, c-format msgid "input file does not appear to be a valid archive (too short?)" msgstr "вхідний файл не схожий на архівний (закороткий?)" -#: pg_backup_archiver.c:2235 +#: pg_backup_archiver.c:2254 #, c-format msgid "input file does not appear to be a valid archive" msgstr "вхідний файл не схожий на архівний" -#: pg_backup_archiver.c:2244 +#: pg_backup_archiver.c:2263 #, c-format msgid "could not close input file: %m" msgstr "не вдалося закрити вхідний файл: %m" -#: pg_backup_archiver.c:2361 +#: pg_backup_archiver.c:2380 #, c-format msgid "unrecognized file format \"%d\"" msgstr "нерозпізнаний формат файлу \"%d\"" -#: pg_backup_archiver.c:2443 pg_backup_archiver.c:4490 +#: pg_backup_archiver.c:2462 pg_backup_archiver.c:4514 #, c-format msgid "finished item %d %s %s" msgstr "завершений об'єкт %d %s %s" -#: pg_backup_archiver.c:2447 pg_backup_archiver.c:4503 +#: pg_backup_archiver.c:2466 pg_backup_archiver.c:4527 #, c-format msgid "worker process failed: exit code %d" msgstr "помилка при робочому процесі: код виходу %d" -#: pg_backup_archiver.c:2567 +#: pg_backup_archiver.c:2586 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC" msgstr "введення ідентифікатора %d поза діапазоном -- можливо, зміст пошкоджений" -#: pg_backup_archiver.c:2634 +#: pg_backup_archiver.c:2653 #, c-format msgid "restoring tables WITH OIDS is not supported anymore" msgstr "відновлення таблиць WITH OIDS більше не підтримується" -#: pg_backup_archiver.c:2716 +#: pg_backup_archiver.c:2735 #, c-format msgid "unrecognized encoding \"%s\"" msgstr "нерозпізнане кодування \"%s\"" -#: pg_backup_archiver.c:2722 +#: pg_backup_archiver.c:2741 #, c-format msgid "invalid ENCODING item: %s" msgstr "невірний об'єкт КОДУВАННЯ: %s" -#: pg_backup_archiver.c:2740 +#: pg_backup_archiver.c:2759 #, c-format msgid "invalid STDSTRINGS item: %s" msgstr "невірний об'єкт STDSTRINGS: %s" -#: pg_backup_archiver.c:2765 +#: pg_backup_archiver.c:2784 #, c-format msgid "schema \"%s\" not found" msgstr "схему \"%s\" не знайдено" -#: pg_backup_archiver.c:2772 +#: pg_backup_archiver.c:2791 #, c-format msgid "table \"%s\" not found" msgstr "таблицю \"%s\" не знайдено" -#: pg_backup_archiver.c:2779 +#: pg_backup_archiver.c:2798 #, c-format msgid "index \"%s\" not found" msgstr "індекс \"%s\" не знайдено" -#: pg_backup_archiver.c:2786 +#: pg_backup_archiver.c:2805 #, c-format msgid "function \"%s\" not found" msgstr "функцію \"%s\" не знайдено" -#: pg_backup_archiver.c:2793 +#: pg_backup_archiver.c:2812 #, c-format msgid "trigger \"%s\" not found" msgstr "тригер \"%s\" не знайдено" -#: pg_backup_archiver.c:3207 +#: pg_backup_archiver.c:3257 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "не вдалося встановити користувача сеансу для \"%s\": %s" -#: pg_backup_archiver.c:3339 +#: pg_backup_archiver.c:3399 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "не вдалося встановити search_path для \"%s\": %s" -#: pg_backup_archiver.c:3401 +#: pg_backup_archiver.c:3461 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "не вдалося встановити default_tablespace для %s: %s" -#: pg_backup_archiver.c:3446 +#: pg_backup_archiver.c:3506 #, c-format msgid "could not set default_table_access_method: %s" msgstr "не вдалося встановити default_table_access_method для : %s" -#: pg_backup_archiver.c:3538 pg_backup_archiver.c:3696 +#: pg_backup_archiver.c:3598 pg_backup_archiver.c:3756 #, c-format msgid "don't know how to set owner for object type \"%s\"" msgstr "невідомо, як встановити власника об'єкту типу \"%s\"" -#: pg_backup_archiver.c:3799 +#: pg_backup_archiver.c:3823 #, c-format msgid "did not find magic string in file header" msgstr "в заголовку файлу не знайдено магічного рядка" -#: pg_backup_archiver.c:3813 +#: pg_backup_archiver.c:3837 #, c-format msgid "unsupported version (%d.%d) in file header" msgstr "в заголовку непідтримувана версія (%d.%d)" -#: pg_backup_archiver.c:3818 +#: pg_backup_archiver.c:3842 #, c-format msgid "sanity check on integer size (%lu) failed" msgstr "перевірка на розмір цілого числа (%lu) не вдалася" -#: pg_backup_archiver.c:3822 +#: pg_backup_archiver.c:3846 #, c-format msgid "archive was made on a machine with larger integers, some operations might fail" msgstr "архів зроблено на архітектурі з більшими цілими числами, деякі операції можуть не виконуватися" -#: pg_backup_archiver.c:3832 +#: pg_backup_archiver.c:3856 #, c-format msgid "expected format (%d) differs from format found in file (%d)" msgstr "очікуваний формат (%d) відрізняється від знайденого формату у файлі (%d)" -#: pg_backup_archiver.c:3847 +#: pg_backup_archiver.c:3871 #, c-format msgid "archive is compressed, but this installation does not support compression -- no data will be available" msgstr "архів стиснено, але ця інсталяція не підтримує стискання -- дані не будуть доступними " -#: pg_backup_archiver.c:3881 +#: pg_backup_archiver.c:3905 #, c-format msgid "invalid creation date in header" msgstr "неприпустима дата створення у заголовку" -#: pg_backup_archiver.c:4015 +#: pg_backup_archiver.c:4039 #, c-format msgid "processing item %d %s %s" msgstr "обробка елементу %d %s %s" -#: pg_backup_archiver.c:4094 +#: pg_backup_archiver.c:4118 #, c-format msgid "entering main parallel loop" msgstr "введення головного паралельного циклу" -#: pg_backup_archiver.c:4105 +#: pg_backup_archiver.c:4129 #, c-format msgid "skipping item %d %s %s" msgstr "пропускається елемент %d %s %s " -#: pg_backup_archiver.c:4114 +#: pg_backup_archiver.c:4138 #, c-format msgid "launching item %d %s %s" msgstr "запуск елементу %d %s %s " -#: pg_backup_archiver.c:4168 +#: pg_backup_archiver.c:4192 #, c-format msgid "finished main parallel loop" msgstr "головний паралельний цикл завершився" -#: pg_backup_archiver.c:4204 +#: pg_backup_archiver.c:4228 #, c-format msgid "processing missed item %d %s %s" msgstr "обробка втраченого елементу %d %s %s" -#: pg_backup_archiver.c:4809 +#: pg_backup_archiver.c:4833 #, c-format msgid "table \"%s\" could not be created, will not restore its data" msgstr "не вдалося створити таблицю \"%s\", дані не будуть відновлені" @@ -975,12 +975,12 @@ msgstr "ущільнювач активний" msgid "could not get server_version from libpq" msgstr "не вдалося отримати версію серверу з libpq" -#: pg_backup_db.c:53 pg_dumpall.c:1863 +#: pg_backup_db.c:53 pg_dumpall.c:1912 #, c-format msgid "server version: %s; %s version: %s" msgstr "версія серверу: %s; версія %s: %s" -#: pg_backup_db.c:55 pg_dumpall.c:1865 +#: pg_backup_db.c:55 pg_dumpall.c:1914 #, c-format msgid "aborting because of server version mismatch" msgstr "переривання через невідповідність версії серверу" @@ -990,7 +990,7 @@ msgstr "переривання через невідповідність вер msgid "already connected to a database" msgstr "вже під'єднано до бази даних" -#: pg_backup_db.c:132 pg_backup_db.c:182 pg_dumpall.c:1692 pg_dumpall.c:1803 +#: pg_backup_db.c:132 pg_backup_db.c:182 pg_dumpall.c:1741 pg_dumpall.c:1852 msgid "Password: " msgstr "Пароль: " @@ -1004,17 +1004,17 @@ msgstr "не вдалося зв'язатися з базою даних" msgid "reconnection failed: %s" msgstr "помилка повторного підключення: %s" -#: pg_backup_db.c:194 pg_backup_db.c:269 pg_dumpall.c:1723 pg_dumpall.c:1813 +#: pg_backup_db.c:194 pg_backup_db.c:269 pg_dumpall.c:1772 pg_dumpall.c:1862 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:276 pg_dumpall.c:1926 pg_dumpall.c:1949 +#: pg_backup_db.c:276 pg_dumpall.c:1975 pg_dumpall.c:1998 #, c-format msgid "query failed: %s" msgstr "запит не вдався: %s" -#: pg_backup_db.c:278 pg_dumpall.c:1927 pg_dumpall.c:1950 +#: pg_backup_db.c:278 pg_dumpall.c:1976 pg_dumpall.c:1999 #, c-format msgid "query was: %s" msgstr "запит був: %s" @@ -1052,7 +1052,7 @@ msgstr "помилка повернулася від PQputCopyEnd: %s" msgid "COPY failed for table \"%s\": %s" msgstr "КОПІЮВАННЯ для таблиці \"%s\" не вдалося: %s" -#: pg_backup_db.c:525 pg_dump.c:2166 +#: pg_backup_db.c:525 pg_dump.c:2194 #, c-format msgid "unexpected extra results during COPY of table \"%s\"" msgstr "неочікувані зайві результати під час копіювання таблиці \"%s\"" @@ -1240,10 +1240,10 @@ msgstr "знайдено пошкоджений tar-верхній колонт msgid "unrecognized section name: \"%s\"" msgstr "нерозпізнане ім’я розділу: \"%s\"" -#: pg_backup_utils.c:55 pg_dump.c:627 pg_dump.c:644 pg_dumpall.c:341 -#: pg_dumpall.c:351 pg_dumpall.c:360 pg_dumpall.c:369 pg_dumpall.c:377 -#: pg_dumpall.c:391 pg_dumpall.c:469 pg_restore.c:284 pg_restore.c:300 -#: pg_restore.c:318 +#: pg_backup_utils.c:55 pg_dump.c:632 pg_dump.c:649 pg_dumpall.c:350 +#: pg_dumpall.c:360 pg_dumpall.c:369 pg_dumpall.c:378 pg_dumpall.c:386 +#: pg_dumpall.c:400 pg_dumpall.c:494 pg_restore.c:289 pg_restore.c:305 +#: pg_restore.c:323 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Спробуйте \"%s --help\" для додаткової інформації.\n" @@ -1253,72 +1253,87 @@ msgstr "Спробуйте \"%s --help\" для додаткової інфор msgid "out of on_exit_nicely slots" msgstr "перевищено межу on_exit_nicely слотів" -#: pg_dump.c:553 +#: pg_dump.c:554 #, c-format msgid "compression level must be in range 0..9" msgstr "рівень стискання має бути у діапазоні 0..9" -#: pg_dump.c:591 +#: pg_dump.c:592 #, c-format msgid "extra_float_digits must be in range -15..3" msgstr "extra_float_digits повинні бути у діапазоні -15..3" -#: pg_dump.c:614 +#: pg_dump.c:615 #, c-format msgid "rows-per-insert must be in range %d..%d" msgstr "рядків-на-вставку має бути у діапазоні %d..%d" -#: pg_dump.c:642 pg_dumpall.c:349 pg_restore.c:298 +#: pg_dump.c:647 pg_dumpall.c:358 pg_restore.c:303 #, c-format msgid "too many command-line arguments (first is \"%s\")" msgstr "забагато аргументів у командному рядку (перший \"%s\")" -#: pg_dump.c:663 pg_restore.c:327 +#: pg_dump.c:668 pg_restore.c:357 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together" msgstr "параметри -s/--schema-only і -a/--data-only не можуть використовуватись разом" -#: pg_dump.c:668 +#: pg_dump.c:673 #, c-format msgid "options -s/--schema-only and --include-foreign-data cannot be used together" msgstr "параметри -s/--schema-only і --include-foreign-data не можуть використовуватись разом" -#: pg_dump.c:671 +#: pg_dump.c:676 #, c-format msgid "option --include-foreign-data is not supported with parallel backup" msgstr "параметр --include-foreign-data не підтримується з паралельним резервним копіюванням" -#: pg_dump.c:675 pg_restore.c:333 +#: pg_dump.c:680 pg_restore.c:363 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together" msgstr "параметри -c/--clean і -a/--data-only не можна використовувати разом" -#: pg_dump.c:680 pg_dumpall.c:384 pg_restore.c:382 +#: pg_dump.c:685 pg_dumpall.c:393 pg_restore.c:412 #, c-format msgid "option --if-exists requires option -c/--clean" msgstr "параметр --if-exists потребує параметр -c/--clean" -#: pg_dump.c:687 +#: pg_dump.c:692 #, c-format msgid "option --on-conflict-do-nothing requires option --inserts, --rows-per-insert, or --column-inserts" msgstr "параметр --on-conflict-do-nothing вимагає опції --inserts, --rows-per-insert або --column-inserts" -#: pg_dump.c:709 +#: pg_dump.c:708 pg_dumpall.c:456 pg_restore.c:345 +#, c-format +msgid "could not generate restrict key" +msgstr "не вдалося згенерувати ключ обмеження" + +#: pg_dump.c:710 pg_dumpall.c:461 pg_restore.c:350 +#, c-format +msgid "invalid restrict key" +msgstr "неприпустимий ключ обмеження" + +#: pg_dump.c:713 +#, c-format +msgid "option --restrict-key can only be used with --format=plain" +msgstr "параметр --restrict-key можна використовувати тільки для --format=plain" + +#: pg_dump.c:728 #, c-format msgid "requested compression not available in this installation -- archive will be uncompressed" msgstr "затребуване стискання недоступне на цій системі -- архів не буде стискатися" -#: pg_dump.c:730 pg_restore.c:349 +#: pg_dump.c:749 pg_restore.c:379 #, c-format msgid "invalid number of parallel jobs" msgstr "неприпустима кількість паралельних завдань" -#: pg_dump.c:734 +#: pg_dump.c:753 #, c-format msgid "parallel backup only supported by the directory format" msgstr "паралельне резервне копіювання підтримується лише з форматом \"каталог\"" -#: pg_dump.c:789 +#: pg_dump.c:808 #, c-format msgid "Synchronized snapshots are not supported by this server version.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" @@ -1327,227 +1342,227 @@ msgstr "У цій версії серверу синхронізовані зн "Якщо вам не потрібні синхронізовані знімки, виконайте \n" " --no-synchronized-snapshots." -#: pg_dump.c:795 +#: pg_dump.c:814 #, c-format msgid "Exported snapshots are not supported by this server version." msgstr "Експортовані знімки не підтримуються цією версією серверу." -#: pg_dump.c:807 +#: pg_dump.c:826 #, c-format msgid "last built-in OID is %u" msgstr "останній вбудований OID %u" -#: pg_dump.c:816 +#: pg_dump.c:835 #, c-format msgid "no matching schemas were found" msgstr "відповідних схем не знайдено" -#: pg_dump.c:830 +#: pg_dump.c:849 #, c-format msgid "no matching tables were found" msgstr "відповідних таблиць не знайдено" -#: pg_dump.c:852 +#: pg_dump.c:871 #, c-format msgid "no matching extensions were found" msgstr "не знайдено відповідних розширень" -#: pg_dump.c:1022 +#: pg_dump.c:1042 #, c-format msgid "%s dumps a database as a text file or to other formats.\n\n" msgstr "%s зберігає резервну копію бази даних в текстовому файлі або в інших форматах.\n\n" -#: pg_dump.c:1023 pg_dumpall.c:623 pg_restore.c:462 +#: pg_dump.c:1043 pg_dumpall.c:664 pg_restore.c:492 #, c-format msgid "Usage:\n" msgstr "Використання:\n" -#: pg_dump.c:1024 +#: pg_dump.c:1044 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: pg_dump.c:1026 pg_dumpall.c:626 pg_restore.c:465 +#: pg_dump.c:1046 pg_dumpall.c:667 pg_restore.c:495 #, c-format msgid "\n" "General options:\n" msgstr "\n" "Основні налаштування:\n" -#: pg_dump.c:1027 +#: pg_dump.c:1047 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=FILENAME ім'я файлу виводу або каталогу\n" -#: pg_dump.c:1028 +#: pg_dump.c:1048 #, c-format msgid " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" " plain text (default))\n" msgstr " -F, --format=c|d|t|p формат файлу виводу (спеціальний, каталог, tar,\n" " звичайний текст (за замовчуванням))\n" -#: pg_dump.c:1030 +#: pg_dump.c:1050 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=NUM використовувати ці паралельні завдання для вивантаження\n" -#: pg_dump.c:1031 pg_dumpall.c:628 +#: pg_dump.c:1051 pg_dumpall.c:669 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose детальний режим\n" -#: pg_dump.c:1032 pg_dumpall.c:629 +#: pg_dump.c:1052 pg_dumpall.c:670 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version вивести інформацію про версію, потім вийти\n" -#: pg_dump.c:1033 +#: pg_dump.c:1053 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 рівень стискання для стиснутих форматів\n" -#: pg_dump.c:1034 pg_dumpall.c:630 +#: pg_dump.c:1054 pg_dumpall.c:671 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr " --lock-wait-timeout=TIMEOUT помилка після очікування TIMEOUT для блокування таблиці\n" -#: pg_dump.c:1035 pg_dumpall.c:657 +#: pg_dump.c:1055 pg_dumpall.c:698 #, c-format msgid " --no-sync do not wait for changes to be written safely to disk\n" msgstr " --no-sync не чекати безпечного збереження змін на диск\n" -#: pg_dump.c:1036 pg_dumpall.c:631 +#: pg_dump.c:1056 pg_dumpall.c:672 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показати цю довідку, потім вийти\n" -#: pg_dump.c:1038 pg_dumpall.c:632 +#: pg_dump.c:1058 pg_dumpall.c:673 #, c-format msgid "\n" "Options controlling the output content:\n" msgstr "\n" "Параметри, що керують вихідним вмістом:\n" -#: pg_dump.c:1039 pg_dumpall.c:633 +#: pg_dump.c:1059 pg_dumpall.c:674 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only вивантажити лише дані, без схеми\n" -#: pg_dump.c:1040 +#: pg_dump.c:1060 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs включити у вивантаження великі об'єкти\n" -#: pg_dump.c:1041 +#: pg_dump.c:1061 #, c-format msgid " -B, --no-blobs exclude large objects in dump\n" msgstr " -B, --no-blobs виключити з вивантаження великі об'єкти\n" -#: pg_dump.c:1042 pg_restore.c:476 +#: pg_dump.c:1062 pg_restore.c:506 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean видалити об'єкти бази даних перед перед повторним створенням\n" -#: pg_dump.c:1043 +#: pg_dump.c:1063 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr " -C, --create включити у вивантаження команди для створення бази даних\n" -#: pg_dump.c:1044 +#: pg_dump.c:1064 #, c-format msgid " -e, --extension=PATTERN dump the specified extension(s) only\n" msgstr " -e, --extension=PATTERN вивантажити лише вказане(і) розширення\n" -#: pg_dump.c:1045 pg_dumpall.c:635 +#: pg_dump.c:1065 pg_dumpall.c:676 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=ENCODING вивантажити дані в кодуванні ENCODING\n" -#: pg_dump.c:1046 +#: pg_dump.c:1066 #, c-format msgid " -n, --schema=PATTERN dump the specified schema(s) only\n" msgstr " -n, --schema=PATTERN вивантажити лише вказану схему(и)\n" -#: pg_dump.c:1047 +#: pg_dump.c:1067 #, c-format msgid " -N, --exclude-schema=PATTERN do NOT dump the specified schema(s)\n" msgstr " -N, --exclude-schema=PATTERN НЕ вивантажувати вказану схему(и)\n" -#: pg_dump.c:1048 +#: pg_dump.c:1068 #, c-format msgid " -O, --no-owner skip restoration of object ownership in\n" " plain-text format\n" msgstr " -O, --no-owner пропускати відновлення володіння об'єктами\n" " при використанні текстового формату\n" -#: pg_dump.c:1050 pg_dumpall.c:639 +#: pg_dump.c:1070 pg_dumpall.c:680 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only вивантажити лише схему, без даних\n" -#: pg_dump.c:1051 +#: pg_dump.c:1071 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr " -S, --superuser=NAME ім'я користувача, яке буде використовуватись у звичайних текстових форматах\n" -#: pg_dump.c:1052 +#: pg_dump.c:1072 #, c-format msgid " -t, --table=PATTERN dump the specified table(s) only\n" msgstr " -t, --table=PATTERN вивантажити лише вказані таблиці\n" -#: pg_dump.c:1053 +#: pg_dump.c:1073 #, c-format msgid " -T, --exclude-table=PATTERN do NOT dump the specified table(s)\n" msgstr " -T, --exclude-table=PATTERN НЕ вивантажувати вказані таблиці\n" -#: pg_dump.c:1054 pg_dumpall.c:642 +#: pg_dump.c:1074 pg_dumpall.c:683 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges не вивантажувати права (надання/відкликання)\n" -#: pg_dump.c:1055 pg_dumpall.c:643 +#: pg_dump.c:1075 pg_dumpall.c:684 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade для використання лише утилітами оновлення\n" -#: pg_dump.c:1056 pg_dumpall.c:644 +#: pg_dump.c:1076 pg_dumpall.c:685 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr " --column-inserts вивантажити дані у вигляді команд INSERT з іменами стовпців\n" -#: pg_dump.c:1057 pg_dumpall.c:645 +#: pg_dump.c:1077 pg_dumpall.c:686 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr " --disable-dollar-quoting вимкнути цінову пропозицію $, використовувати SQL стандартну цінову пропозицію\n" -#: pg_dump.c:1058 pg_dumpall.c:646 pg_restore.c:493 +#: pg_dump.c:1078 pg_dumpall.c:687 pg_restore.c:523 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers вимкнути тригери лише під час відновлення даних\n" -#: pg_dump.c:1059 +#: pg_dump.c:1079 #, c-format msgid " --enable-row-security enable row security (dump only content user has\n" " access to)\n" msgstr " --enable-row-security активувати захист на рівні рядків (вивантажити лише той вміст, до якого\n" " користувач має доступ)\n" -#: pg_dump.c:1061 +#: pg_dump.c:1081 #, c-format msgid " --exclude-table-data=PATTERN do NOT dump data for the specified table(s)\n" msgstr " --exclude-table-data=PATTERN НЕ вивантажувати дані вказаних таблиць\n" -#: pg_dump.c:1062 pg_dumpall.c:648 +#: pg_dump.c:1082 pg_dumpall.c:689 #, c-format msgid " --extra-float-digits=NUM override default setting for extra_float_digits\n" msgstr " --extra-float-digits=NUM змінити параметр за замовчуванням для extra_float_digits\n" -#: pg_dump.c:1063 pg_dumpall.c:649 pg_restore.c:495 +#: pg_dump.c:1083 pg_dumpall.c:690 pg_restore.c:525 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr " --if-exists використовувати IF EXISTS під час видалення об'єктів\n" -#: pg_dump.c:1064 +#: pg_dump.c:1084 #, c-format msgid " --include-foreign-data=PATTERN\n" " include data of foreign tables on foreign\n" @@ -1556,94 +1571,99 @@ msgstr " --include-foreign-data=ШАБЛОН\n" " включають дані підлеглих таблиць на підлеглих\n" " сервери, що відповідають ШАБЛОНУ\n" -#: pg_dump.c:1067 pg_dumpall.c:650 +#: pg_dump.c:1087 pg_dumpall.c:691 #, c-format msgid " --inserts dump data as INSERT commands, rather than COPY\n" msgstr " --inserts вивантажити дані у вигляді команд INSERT, не COPY\n" -#: pg_dump.c:1068 pg_dumpall.c:651 +#: pg_dump.c:1088 pg_dumpall.c:692 #, c-format msgid " --load-via-partition-root load partitions via the root table\n" msgstr " --load-via-partition-root завантажувати секції через головну таблицю\n" -#: pg_dump.c:1069 pg_dumpall.c:652 +#: pg_dump.c:1089 pg_dumpall.c:693 #, c-format msgid " --no-comments do not dump comments\n" msgstr " --no-comments не вивантажувати коментарі\n" -#: pg_dump.c:1070 pg_dumpall.c:653 +#: pg_dump.c:1090 pg_dumpall.c:694 #, c-format msgid " --no-publications do not dump publications\n" msgstr " --no-publications не вивантажувати публікації\n" -#: pg_dump.c:1071 pg_dumpall.c:655 +#: pg_dump.c:1091 pg_dumpall.c:696 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels не вивантажувати завдання міток безпеки\n" -#: pg_dump.c:1072 pg_dumpall.c:656 +#: pg_dump.c:1092 pg_dumpall.c:697 #, c-format msgid " --no-subscriptions do not dump subscriptions\n" msgstr " --no-subscriptions не вивантажувати підписки\n" -#: pg_dump.c:1073 +#: pg_dump.c:1093 #, c-format msgid " --no-synchronized-snapshots do not use synchronized snapshots in parallel jobs\n" msgstr " --no-synchronized-snapshots не використовувати синхронізовані знімки в паралельних завданнях\n" -#: pg_dump.c:1074 pg_dumpall.c:658 +#: pg_dump.c:1094 pg_dumpall.c:699 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces не вивантажувати призначення табличних просторів\n" -#: pg_dump.c:1075 pg_dumpall.c:659 +#: pg_dump.c:1095 pg_dumpall.c:700 #, c-format msgid " --no-toast-compression do not dump TOAST compression methods\n" msgstr " --no-toast-compression не вивантажувати методи стиснення TOAST\n" -#: pg_dump.c:1076 pg_dumpall.c:660 +#: pg_dump.c:1096 pg_dumpall.c:701 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data не вивантажувати дані таблиць, які не журналюються\n" -#: pg_dump.c:1077 pg_dumpall.c:661 +#: pg_dump.c:1097 pg_dumpall.c:702 #, c-format msgid " --on-conflict-do-nothing add ON CONFLICT DO NOTHING to INSERT commands\n" msgstr " --on-conflict-do-nothing додавати ON CONFLICT DO NOTHING до команди INSERT\n" -#: pg_dump.c:1078 pg_dumpall.c:662 +#: pg_dump.c:1098 pg_dumpall.c:703 #, c-format msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr " --quote-all-identifiers укладати в лапки всі ідентифікатори, а не тільки ключові слова\n" -#: pg_dump.c:1079 pg_dumpall.c:663 +#: pg_dump.c:1099 pg_dumpall.c:704 pg_restore.c:533 +#, c-format +msgid " --restrict-key=RESTRICT_KEY use provided string as psql \\restrict key\n" +msgstr " --restrict-key=RESTRICT_KEY використовувати вказаний рядок як ключ psql \\restrict\n" + +#: pg_dump.c:1100 pg_dumpall.c:705 #, c-format msgid " --rows-per-insert=NROWS number of rows per INSERT; implies --inserts\n" msgstr " --rows-per-insert=NROWS кількість рядків для INSERT; вимагає параметру --inserts\n" -#: pg_dump.c:1080 +#: pg_dump.c:1101 #, c-format msgid " --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr " --section=SECTION вивантажити вказану секцію (pre-data, data або post-data)\n" -#: pg_dump.c:1081 +#: pg_dump.c:1102 #, c-format msgid " --serializable-deferrable wait until the dump can run without anomalies\n" msgstr " --serializable-deferrable чекати коли вивантаження можна буде виконати без аномалій\n" -#: pg_dump.c:1082 +#: pg_dump.c:1103 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr " --snapshot=SNAPSHOT використовувати під час вивантаження вказаний знімок\n" -#: pg_dump.c:1083 pg_restore.c:504 +#: pg_dump.c:1104 pg_restore.c:535 #, c-format msgid " --strict-names require table and/or schema include patterns to\n" " match at least one entity each\n" msgstr " --strict-names потребувати, щоб при вказівці шаблону включення\n" " таблиці і/або схеми йому відповідав мінімум один об'єкт\n" -#: pg_dump.c:1085 pg_dumpall.c:664 pg_restore.c:506 +#: pg_dump.c:1106 pg_dumpall.c:706 pg_restore.c:537 #, c-format msgid " --use-set-session-authorization\n" " use SET SESSION AUTHORIZATION commands instead of\n" @@ -1652,49 +1672,49 @@ msgstr " --use-set-session-authorization\n" " щоб встановити власника, використати команди SET SESSION AUTHORIZATION,\n" " замість команд ALTER OWNER\n" -#: pg_dump.c:1089 pg_dumpall.c:668 pg_restore.c:510 +#: pg_dump.c:1110 pg_dumpall.c:710 pg_restore.c:541 #, c-format msgid "\n" "Connection options:\n" msgstr "\n" "Налаштування з'єднання:\n" -#: pg_dump.c:1090 +#: pg_dump.c:1111 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=DBNAME ім'я бази даних для вивантаження\n" -#: pg_dump.c:1091 pg_dumpall.c:670 pg_restore.c:511 +#: pg_dump.c:1112 pg_dumpall.c:712 pg_restore.c:542 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME хост серверу баз даних або каталог сокетів\n" -#: pg_dump.c:1092 pg_dumpall.c:672 pg_restore.c:512 +#: pg_dump.c:1113 pg_dumpall.c:714 pg_restore.c:543 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT номер порту сервера бази даних\n" -#: pg_dump.c:1093 pg_dumpall.c:673 pg_restore.c:513 +#: pg_dump.c:1114 pg_dumpall.c:715 pg_restore.c:544 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME підключатись як вказаний користувач бази даних\n" -#: pg_dump.c:1094 pg_dumpall.c:674 pg_restore.c:514 +#: pg_dump.c:1115 pg_dumpall.c:716 pg_restore.c:545 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ніколи не запитувати пароль\n" -#: pg_dump.c:1095 pg_dumpall.c:675 pg_restore.c:515 +#: pg_dump.c:1116 pg_dumpall.c:717 pg_restore.c:546 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password запитувати пароль завжди (повинно траплятись автоматично)\n" -#: pg_dump.c:1096 pg_dumpall.c:676 +#: pg_dump.c:1117 pg_dumpall.c:718 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ROLENAME виконати SET ROLE до вивантаження\n" -#: pg_dump.c:1098 +#: pg_dump.c:1119 #, c-format msgid "\n" "If no database name is supplied, then the PGDATABASE environment\n" @@ -1702,284 +1722,284 @@ msgid "\n" msgstr "\n" "Якщо ім'я бази даних не вказано, тоді використовується значення змінної середовища PGDATABASE.\n\n" -#: pg_dump.c:1100 pg_dumpall.c:680 pg_restore.c:522 +#: pg_dump.c:1121 pg_dumpall.c:722 pg_restore.c:553 #, c-format msgid "Report bugs to <%s>.\n" msgstr "Повідомляти про помилки на <%s>.\n" -#: pg_dump.c:1101 pg_dumpall.c:681 pg_restore.c:523 +#: pg_dump.c:1122 pg_dumpall.c:723 pg_restore.c:554 #, c-format msgid "%s home page: <%s>\n" msgstr "Домашня сторінка %s: <%s>\n" -#: pg_dump.c:1120 pg_dumpall.c:504 +#: pg_dump.c:1141 pg_dumpall.c:529 #, c-format msgid "invalid client encoding \"%s\" specified" msgstr "вказано неприпустиме клієнтське кодування \"%s\"" -#: pg_dump.c:1274 +#: pg_dump.c:1295 #, c-format msgid "Synchronized snapshots on standby servers are not supported by this server version.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots." msgstr "Синхронізовані знімки на резервному сервері не підтримуються цією версією сервера. Запустіть із параметром --no-synchronized-snapshots, якщо вам не потрібні синхронізовані знімки." -#: pg_dump.c:1343 +#: pg_dump.c:1364 #, c-format msgid "invalid output format \"%s\" specified" msgstr "вказано неприпустимий формат виводу \"%s\"" -#: pg_dump.c:1384 pg_dump.c:1440 pg_dump.c:1493 pg_dumpall.c:1477 +#: pg_dump.c:1405 pg_dump.c:1461 pg_dump.c:1514 pg_dumpall.c:1523 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "неправильне повне ім'я (забагато компонентів): %s" -#: pg_dump.c:1392 +#: pg_dump.c:1413 #, c-format msgid "no matching schemas were found for pattern \"%s\"" msgstr "не знайдено відповідних схем для візерунку \"%s\"" -#: pg_dump.c:1445 +#: pg_dump.c:1466 #, c-format msgid "no matching extensions were found for pattern \"%s\"" msgstr "не знайдено відповідних розширень для шаблону \"%s\"" -#: pg_dump.c:1498 +#: pg_dump.c:1519 #, c-format msgid "no matching foreign servers were found for pattern \"%s\"" msgstr "не знайдено відповідних підлеглих серверів для шаблону \"%s\"" -#: pg_dump.c:1561 +#: pg_dump.c:1582 #, c-format msgid "improper relation name (too many dotted names): %s" msgstr "неправильне ім'я зв'язку (забагато компонентів): %s" -#: pg_dump.c:1572 +#: pg_dump.c:1593 #, c-format msgid "no matching tables were found for pattern \"%s\"" msgstr "не знайдено відповідних таблиць для візерунку\"%s\"" -#: pg_dump.c:1599 +#: pg_dump.c:1620 #, c-format msgid "You are currently not connected to a database." msgstr "На даний момент ви від'єднанні від бази даних." -#: pg_dump.c:1602 +#: pg_dump.c:1623 #, c-format msgid "cross-database references are not implemented: %s" msgstr "міжбазові посилання не реалізовані: %s" -#: pg_dump.c:2036 +#: pg_dump.c:2064 #, c-format msgid "dumping contents of table \"%s.%s\"" msgstr "вивантажування змісту таблиці \"%s.%s\"" -#: pg_dump.c:2147 +#: pg_dump.c:2175 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed." msgstr "Помилка вивантажування змісту таблиці \"%s\": помилка в PQgetCopyData()." -#: pg_dump.c:2148 pg_dump.c:2158 +#: pg_dump.c:2176 pg_dump.c:2186 #, c-format msgid "Error message from server: %s" msgstr "Повідомлення про помилку від сервера: %s" -#: pg_dump.c:2149 pg_dump.c:2159 +#: pg_dump.c:2177 pg_dump.c:2187 #, c-format msgid "The command was: %s" msgstr "Команда була: %s" -#: pg_dump.c:2157 +#: pg_dump.c:2185 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed." msgstr "Помилка вивантажування змісту таблиці \"%s\": помилка в PQgetResult(). " -#: pg_dump.c:2248 +#: pg_dump.c:2276 #, c-format msgid "wrong number of fields retrieved from table \"%s\"" msgstr "неправильна кількість полів отриманих з таблиці \"%s\"" -#: pg_dump.c:3003 +#: pg_dump.c:3034 #, c-format msgid "saving database definition" msgstr "збереження визначення бази даних" -#: pg_dump.c:3475 +#: pg_dump.c:3506 #, c-format msgid "saving encoding = %s" msgstr "збереження кодування = %s" -#: pg_dump.c:3500 +#: pg_dump.c:3531 #, c-format msgid "saving standard_conforming_strings = %s" msgstr "збереження standard_conforming_strings = %s" -#: pg_dump.c:3539 +#: pg_dump.c:3570 #, c-format msgid "could not parse result of current_schemas()" msgstr "не вдалося проаналізувати результат current_schemas()" -#: pg_dump.c:3558 +#: pg_dump.c:3589 #, c-format msgid "saving search_path = %s" msgstr "збереження search_path = %s" -#: pg_dump.c:3598 +#: pg_dump.c:3629 #, c-format msgid "reading large objects" msgstr "читання великих об’єктів" -#: pg_dump.c:3780 +#: pg_dump.c:3811 #, c-format msgid "saving large objects" msgstr "збереження великих об’єктів" -#: pg_dump.c:3826 +#: pg_dump.c:3857 #, c-format msgid "error reading large object %u: %s" msgstr "помилка читання великих об’єктів %u: %s" -#: pg_dump.c:3930 +#: pg_dump.c:3961 #, c-format msgid "reading row-level security policies" msgstr "читання політик безпеки на рівні рядків" -#: pg_dump.c:4069 +#: pg_dump.c:4100 #, c-format msgid "unexpected policy command type: %c" msgstr "неочікуваний тип команди в політиці: %c" -#: pg_dump.c:4223 +#: pg_dump.c:4254 #, c-format msgid "owner of publication \"%s\" appears to be invalid" msgstr "власник публікації \"%s\" здається недійсним" -#: pg_dump.c:4537 +#: pg_dump.c:4568 #, c-format msgid "subscriptions not dumped because current user is not a superuser" msgstr "підписки не вивантажені через те, що чинний користувач не є суперкористувачем" -#: pg_dump.c:4608 +#: pg_dump.c:4639 #, c-format msgid "owner of subscription \"%s\" appears to be invalid" msgstr "власник підписки \"%s\" є недійсним" -#: pg_dump.c:4651 +#: pg_dump.c:4682 #, c-format msgid "could not parse subpublications array" msgstr "не вдалося аналізувати масив підпублікацій" -#: pg_dump.c:5009 +#: pg_dump.c:5040 #, c-format msgid "could not find parent extension for %s %s" msgstr "не вдалося знайти батьківський елемент для %s %s" -#: pg_dump.c:5141 +#: pg_dump.c:5172 #, c-format msgid "owner of schema \"%s\" appears to be invalid" msgstr "власник схеми \"%s\" виглядає недійсним" -#: pg_dump.c:5164 +#: pg_dump.c:5195 #, c-format msgid "schema with OID %u does not exist" msgstr "схема з OID %u не існує" -#: pg_dump.c:5494 +#: pg_dump.c:5525 #, c-format msgid "owner of data type \"%s\" appears to be invalid" msgstr "власник типу даних \"%s\" здається недійсним" -#: pg_dump.c:5578 +#: pg_dump.c:5617 #, c-format msgid "owner of operator \"%s\" appears to be invalid" msgstr "власник оператора \"%s\" здається недійсним" -#: pg_dump.c:5877 +#: pg_dump.c:5941 #, c-format msgid "owner of operator class \"%s\" appears to be invalid" msgstr "власник класу операторів \"%s\" здається недійсним" -#: pg_dump.c:5960 +#: pg_dump.c:6027 #, c-format msgid "owner of operator family \"%s\" appears to be invalid" msgstr "власник сімейства операторів \"%s\" здається недійсним" -#: pg_dump.c:6128 +#: pg_dump.c:6195 #, c-format msgid "owner of aggregate function \"%s\" appears to be invalid" msgstr "власник агрегатної функції \"%s\" є недійсним" -#: pg_dump.c:6389 +#: pg_dump.c:6456 #, c-format msgid "owner of function \"%s\" appears to be invalid" msgstr "власник функції \"%s\" здається недійсним" -#: pg_dump.c:7185 +#: pg_dump.c:7252 #, c-format msgid "owner of table \"%s\" appears to be invalid" msgstr "власник таблиці \"%s\" здається недійсним" -#: pg_dump.c:7227 pg_dump.c:17778 +#: pg_dump.c:7294 pg_dump.c:17880 #, c-format msgid "failed sanity check, parent table with OID %u of sequence with OID %u not found" msgstr "помилка цілісності, за OID %u не вдалося знайти батьківську таблицю послідовності з OID %u" -#: pg_dump.c:7372 +#: pg_dump.c:7439 #, c-format msgid "failed sanity check, table OID %u appearing in pg_partitioned_table not found" msgstr "помилка цілісності, OID %u не знайдено в таблиці pg_partitioned_table" -#: pg_dump.c:7438 +#: pg_dump.c:7505 #, c-format msgid "reading indexes for table \"%s.%s\"" msgstr "читання індексів таблиці \"%s.%s\"" -#: pg_dump.c:7856 +#: pg_dump.c:7923 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"" msgstr "читання обмежень зовнішніх ключів таблиці \"%s.%s\"" -#: pg_dump.c:8135 +#: pg_dump.c:8202 #, c-format msgid "failed sanity check, parent table with OID %u of pg_rewrite entry with OID %u not found" msgstr "помилка цілісності, за OID %u не вдалося знайти батьківську таблицю для запису pg_rewrite з OID %u" -#: pg_dump.c:8219 +#: pg_dump.c:8286 #, c-format msgid "reading triggers for table \"%s.%s\"" msgstr "читання тригерів таблиці \"%s.%s\"" -#: pg_dump.c:8401 +#: pg_dump.c:8468 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)" msgstr "запит не повернув ім'я цільової таблиці для тригера зовнішнього ключа \"%s\" в таблиці \"%s\" (OID цільової таблиці: %u)" -#: pg_dump.c:8951 +#: pg_dump.c:9018 #, c-format msgid "finding the columns and types of table \"%s.%s\"" msgstr "пошук стовпців і типів таблиці \"%s.%s\"" -#: pg_dump.c:9075 +#: pg_dump.c:9142 #, c-format msgid "invalid column numbering in table \"%s\"" msgstr "неприпустима нумерація стовпців у таблиці \"%s\"" -#: pg_dump.c:9114 +#: pg_dump.c:9181 #, c-format msgid "finding default expressions of table \"%s.%s\"" msgstr "пошук виразів за замовчуванням для таблиці \"%s.%s\"" -#: pg_dump.c:9136 +#: pg_dump.c:9203 #, c-format msgid "invalid adnum value %d for table \"%s\"" msgstr "неприпустиме значення adnum %d для таблиці \"%s\"" -#: pg_dump.c:9229 +#: pg_dump.c:9296 #, c-format msgid "finding check constraints for table \"%s.%s\"" msgstr "пошук обмежень-перевірок для таблиці \"%s.%s\"" -#: pg_dump.c:9278 +#: pg_dump.c:9345 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d" msgid_plural "expected %d check constraints on table \"%s\" but found %d" @@ -1988,182 +2008,182 @@ msgstr[1] "очікувалось %d обмеження-перевірки дл msgstr[2] "очікувалось %d обмежень-перевірок для таблиці \"%s\", але знайдено %d" msgstr[3] "очікувалось %d обмежень-перевірок для таблиці \"%s\", але знайдено %d" -#: pg_dump.c:9282 +#: pg_dump.c:9349 #, c-format msgid "(The system catalogs might be corrupted.)" msgstr "(Можливо, системні каталоги пошкоджені.)" -#: pg_dump.c:10884 +#: pg_dump.c:10951 #, c-format msgid "typtype of data type \"%s\" appears to be invalid" msgstr "typtype типу даних \"%s\" має неприпустимий вигляд" -#: pg_dump.c:12232 +#: pg_dump.c:12304 #, c-format msgid "bogus value in proargmodes array" msgstr "неприпустиме значення в масиві proargmodes" -#: pg_dump.c:12534 +#: pg_dump.c:12606 #, c-format msgid "could not parse proallargtypes array" msgstr "не вдалося аналізувати масив proallargtypes" -#: pg_dump.c:12550 +#: pg_dump.c:12622 #, c-format msgid "could not parse proargmodes array" msgstr "не вдалося аналізувати масив proargmodes" -#: pg_dump.c:12564 +#: pg_dump.c:12636 #, c-format msgid "could not parse proargnames array" msgstr "не вдалося аналізувати масив proargnames" -#: pg_dump.c:12574 +#: pg_dump.c:12646 #, c-format msgid "could not parse proconfig array" msgstr "не вдалося аналізувати масив proconfig" -#: pg_dump.c:12650 +#: pg_dump.c:12722 #, c-format msgid "unrecognized provolatile value for function \"%s\"" msgstr "нерозпізнане значення provolatile для функції \"%s\"" -#: pg_dump.c:12700 pg_dump.c:14642 +#: pg_dump.c:12772 pg_dump.c:14714 #, c-format msgid "unrecognized proparallel value for function \"%s\"" msgstr "нерозпізнане значення proparallel для функції \"%s\"" -#: pg_dump.c:12840 pg_dump.c:12946 pg_dump.c:12953 +#: pg_dump.c:12912 pg_dump.c:13018 pg_dump.c:13025 #, c-format msgid "could not find function definition for function with OID %u" msgstr "не вдалося знайти визначення функції для функції з OID %u" -#: pg_dump.c:12879 +#: pg_dump.c:12951 #, c-format msgid "bogus value in pg_cast.castfunc or pg_cast.castmethod field" msgstr "неприпустиме значення в полі pg_cast.castfunc або pg_cast.castmethod" -#: pg_dump.c:12882 +#: pg_dump.c:12954 #, c-format msgid "bogus value in pg_cast.castmethod field" msgstr "неприпустиме значення в полі pg_cast.castmethod" -#: pg_dump.c:12972 +#: pg_dump.c:13044 #, c-format msgid "bogus transform definition, at least one of trffromsql and trftosql should be nonzero" msgstr "неприпустиме визначення перетворення, як мінімум одне з trffromsql і trftosql повинно бути ненульовим" -#: pg_dump.c:12989 +#: pg_dump.c:13061 #, c-format msgid "bogus value in pg_transform.trffromsql field" msgstr "неприпустиме значення в полі pg_transform.trffromsql" -#: pg_dump.c:13010 +#: pg_dump.c:13082 #, c-format msgid "bogus value in pg_transform.trftosql field" msgstr "неприпустиме значення в полі pg_transform.trftosql" -#: pg_dump.c:13161 +#: pg_dump.c:13233 #, c-format msgid "postfix operators are not supported anymore (operator \"%s\")" msgstr "постфіксні оператори більше не підтримуються (оператор \"%s\")" -#: pg_dump.c:13331 +#: pg_dump.c:13403 #, c-format msgid "could not find operator with OID %s" msgstr "не вдалося знайти оператора з OID %s" -#: pg_dump.c:13399 +#: pg_dump.c:13471 #, c-format msgid "invalid type \"%c\" of access method \"%s\"" msgstr "неприпустимий тип \"%c\" методу доступу \"%s\"" -#: pg_dump.c:14153 +#: pg_dump.c:14225 #, c-format msgid "unrecognized collation provider: %s" msgstr "нерозпізнаний постачальник правил сортування: %s" -#: pg_dump.c:14561 +#: pg_dump.c:14633 #, c-format msgid "unrecognized aggfinalmodify value for aggregate \"%s\"" msgstr "нерозпізнане значення aggfinalmodify для агрегату \"%s\"" -#: pg_dump.c:14617 +#: pg_dump.c:14689 #, c-format msgid "unrecognized aggmfinalmodify value for aggregate \"%s\"" msgstr "нерозпізнане значення aggmfinalmodify для агрегату \"%s\"" -#: pg_dump.c:15339 +#: pg_dump.c:15411 #, c-format msgid "unrecognized object type in default privileges: %d" msgstr "нерозпізнаний тип об’єкта у стандартному праві: %d" -#: pg_dump.c:15357 +#: pg_dump.c:15429 #, c-format msgid "could not parse default ACL list (%s)" msgstr "не вдалося проаналізувати стандартний ACL список (%s)" -#: pg_dump.c:15442 +#: pg_dump.c:15514 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)" msgstr "не вдалося аналізувати початковий список GRANT ACL (%s) або початковий список REVOKE ACL (%s) для об'єкта \"%s\" (%s)" -#: pg_dump.c:15450 +#: pg_dump.c:15522 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)" msgstr "не вдалося аналізувати список GRANT ACL (%s) або список REVOKE ACL (%s) для об'єкта \"%s\" (%s)" -#: pg_dump.c:15965 +#: pg_dump.c:16037 #, c-format msgid "query to obtain definition of view \"%s\" returned no data" msgstr "запит на отримання визначення перегляду \"%s\" не повернув дані" -#: pg_dump.c:15968 +#: pg_dump.c:16040 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition" msgstr "запит на отримання визначення перегляду \"%s\" повернув більше, ніж одне визначення" -#: pg_dump.c:15975 +#: pg_dump.c:16047 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)" msgstr "визначення перегляду \"%s\" пусте (довжина нуль)" -#: pg_dump.c:16059 +#: pg_dump.c:16131 #, c-format msgid "WITH OIDS is not supported anymore (table \"%s\")" msgstr "WITH OIDS більше не підтримується (таблиця\"%s\")" -#: pg_dump.c:16965 +#: pg_dump.c:17037 #, c-format msgid "invalid column number %d for table \"%s\"" msgstr "неприпустиме число стовпців %d для таблиці \"%s\"" -#: pg_dump.c:17042 +#: pg_dump.c:17114 #, c-format msgid "could not parse index statistic columns" msgstr "не вдалося проаналізувати стовпці статистики індексів" -#: pg_dump.c:17044 +#: pg_dump.c:17116 #, c-format msgid "could not parse index statistic values" msgstr "не вдалося проаналізувати значення статистики індексів" -#: pg_dump.c:17046 +#: pg_dump.c:17118 #, c-format msgid "mismatched number of columns and values for index statistics" msgstr "невідповідна кількість стовпців і значень для статистики індексів" -#: pg_dump.c:17263 +#: pg_dump.c:17349 #, c-format msgid "missing index for constraint \"%s\"" msgstr "пропущено індекс для обмеження \"%s\"" -#: pg_dump.c:17488 +#: pg_dump.c:17590 #, c-format msgid "unrecognized constraint type: %c" msgstr "нерозпізнаний тип обмеження: %c" -#: pg_dump.c:17620 pg_dump.c:17843 +#: pg_dump.c:17722 pg_dump.c:17945 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)" @@ -2172,82 +2192,82 @@ msgstr[1] "запит на отримання даних послідовнос msgstr[2] "запит на отримання даних послідовності \"%s\" повернув %d рядків (очікувалося 1)" msgstr[3] "запит на отримання даних послідовності \"%s\" повернув %d рядків (очікувалося 1)" -#: pg_dump.c:17654 +#: pg_dump.c:17756 #, c-format msgid "unrecognized sequence type: %s" msgstr "нерозпізнаний тип послідовності: %s" -#: pg_dump.c:17941 +#: pg_dump.c:18043 #, c-format msgid "unexpected tgtype value: %d" msgstr "неочікуване значення tgtype: %d" -#: pg_dump.c:18015 +#: pg_dump.c:18117 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"" msgstr "неприпустимий рядок аргументу (%s) для тригера \"%s\" у таблиці \"%s\"" -#: pg_dump.c:18284 +#: pg_dump.c:18391 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned" msgstr "помилка запиту на отримання правила \"%s\" для таблиці \"%s\": повернено неправильне число рядків " -#: pg_dump.c:18446 +#: pg_dump.c:18553 #, c-format msgid "could not find referenced extension %u" msgstr "не вдалося знайти згадане розширення %u" -#: pg_dump.c:18537 +#: pg_dump.c:18644 #, c-format msgid "could not parse extension configuration array" msgstr "не вдалося проаналізувати масив конфігурації розширення" -#: pg_dump.c:18539 +#: pg_dump.c:18646 #, c-format msgid "could not parse extension condition array" msgstr "не вдалося проаналізувати масив умов розширення" -#: pg_dump.c:18541 +#: pg_dump.c:18648 #, c-format msgid "mismatched number of configurations and conditions for extension" msgstr "невідповідна кількість конфігурацій і умов для розширення" -#: pg_dump.c:18673 +#: pg_dump.c:18780 #, c-format msgid "reading dependency data" msgstr "читання даних залежності" -#: pg_dump.c:18766 +#: pg_dump.c:18873 #, c-format msgid "no referencing object %u %u" msgstr "немає об’єкту посилання %u %u" -#: pg_dump.c:18777 +#: pg_dump.c:18884 #, c-format msgid "no referenced object %u %u" msgstr "немає посилання на об'єкт %u %u" -#: pg_dump.c:19166 +#: pg_dump.c:19273 #, c-format msgid "could not parse reloptions array" msgstr "неможливо розібрати масив reloptions" -#: pg_dump_sort.c:420 +#: pg_dump_sort.c:633 #, c-format msgid "invalid dumpId %d" msgstr "неприпустимий dumpId %d" -#: pg_dump_sort.c:426 +#: pg_dump_sort.c:639 #, c-format msgid "invalid dependency %d" msgstr "неприпустима залежність %d" -#: pg_dump_sort.c:659 +#: pg_dump_sort.c:872 #, c-format msgid "could not identify dependency loop" msgstr "не вдалося ідентифікувати цикл залежності" -#: pg_dump_sort.c:1274 +#: pg_dump_sort.c:1487 #, c-format msgid "there are circular foreign-key constraints on this table:" msgid_plural "there are circular foreign-key constraints among these tables:" @@ -2256,27 +2276,27 @@ msgstr[1] "у наступних таблицях зациклені зовні msgstr[2] "у наступних таблицях зациклені зовнішні ключі:" msgstr[3] "у наступних таблицях зациклені зовнішні ключі:" -#: pg_dump_sort.c:1278 pg_dump_sort.c:1298 +#: pg_dump_sort.c:1491 pg_dump_sort.c:1511 #, c-format msgid " %s" msgstr " %s" -#: pg_dump_sort.c:1279 +#: pg_dump_sort.c:1492 #, c-format msgid "You might not be able to restore the dump without using --disable-triggers or temporarily dropping the constraints." msgstr "Ви не зможете відновити дамп без використання --disable-triggers або тимчасово розірвати обмеження." -#: pg_dump_sort.c:1280 +#: pg_dump_sort.c:1493 #, c-format msgid "Consider using a full dump instead of a --data-only dump to avoid this problem." msgstr "Можливо, використання повного вивантажування замість --data-only вивантажування допоможе уникнути цієї проблеми." -#: pg_dump_sort.c:1292 +#: pg_dump_sort.c:1505 #, c-format msgid "could not resolve dependency loop among these items:" msgstr "не вдалося вирішити цикл залежності серед цих елементів:" -#: pg_dumpall.c:202 +#: pg_dumpall.c:205 #, c-format msgid "The program \"%s\" is needed by %s but was not found in the\n" "same directory as \"%s\".\n" @@ -2284,7 +2304,7 @@ msgid "The program \"%s\" is needed by %s but was not found in the\n" msgstr "Програма \"%s\" потрібна для %s, але не знайдена в тому ж каталозі, що й \"%s\".\n" "Перевірте вашу установку." -#: pg_dumpall.c:207 +#: pg_dumpall.c:210 #, c-format msgid "The program \"%s\" was found by \"%s\"\n" "but was not the same version as %s.\n" @@ -2292,104 +2312,104 @@ msgid "The program \"%s\" was found by \"%s\"\n" msgstr "Програма \"%s\" була знайдена \"%s\", але не була тієї ж версії, що %s.\n" "Перевірте вашу установку." -#: pg_dumpall.c:359 +#: pg_dumpall.c:368 #, c-format msgid "option --exclude-database cannot be used together with -g/--globals-only, -r/--roles-only, or -t/--tablespaces-only" msgstr "параметр --exclude-database не можна використовувати разом з -g/--globals-only, -r/--roles-only або -t/--tablespaces-only" -#: pg_dumpall.c:368 +#: pg_dumpall.c:377 #, c-format msgid "options -g/--globals-only and -r/--roles-only cannot be used together" msgstr "параметри -g/--globals-only і -r/--roles-only не можна використовувати разом" -#: pg_dumpall.c:376 +#: pg_dumpall.c:385 #, c-format msgid "options -g/--globals-only and -t/--tablespaces-only cannot be used together" msgstr "параметри -g/--globals-only і -t/--tablespaces-only не можна використовувати разом" -#: pg_dumpall.c:390 +#: pg_dumpall.c:399 #, c-format msgid "options -r/--roles-only and -t/--tablespaces-only cannot be used together" msgstr "параметри -r/--roles-only і -t/--tablespaces-only не можна використовувати разом" -#: pg_dumpall.c:453 pg_dumpall.c:1793 +#: pg_dumpall.c:478 pg_dumpall.c:1842 #, c-format msgid "could not connect to database \"%s\"" msgstr "не вдалося зв'язатися з базою даних \"%s\"" -#: pg_dumpall.c:467 +#: pg_dumpall.c:492 #, c-format msgid "could not connect to databases \"postgres\" or \"template1\"\n" "Please specify an alternative database." msgstr "не вдалося зв'язатися з базами даних \"postgres\" або \"template1\"\n" "Будь ласка, вкажіть альтернативну базу даних." -#: pg_dumpall.c:622 +#: pg_dumpall.c:663 #, c-format msgid "%s extracts a PostgreSQL database cluster into an SQL script file.\n\n" msgstr "%s експортує кластер баз даних PostgreSQL до SQL-скрипту.\n\n" -#: pg_dumpall.c:624 +#: pg_dumpall.c:665 #, c-format msgid " %s [OPTION]...\n" msgstr " %s: [OPTION]...\n" -#: pg_dumpall.c:627 +#: pg_dumpall.c:668 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=FILENAME ім'я вихідного файлу\n" -#: pg_dumpall.c:634 +#: pg_dumpall.c:675 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean очистити (видалити) бази даних перед відтворенням\n" -#: pg_dumpall.c:636 +#: pg_dumpall.c:677 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only вивантажувати лише глобальні об’єкти, не бази даних\n" -#: pg_dumpall.c:637 pg_restore.c:485 +#: pg_dumpall.c:678 pg_restore.c:515 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner пропускається відновлення форми власності об’єктом\n" -#: pg_dumpall.c:638 +#: pg_dumpall.c:679 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr " -r, --roles-only вивантажувати лише ролі, не бази даних або табличні простори\n" -#: pg_dumpall.c:640 +#: pg_dumpall.c:681 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NAME ім'я суперкористувача для використання при вивантажуванні\n" -#: pg_dumpall.c:641 +#: pg_dumpall.c:682 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr " -t, --tablespaces-only вивантажувати лише табличні простори, не бази даних або ролі\n" -#: pg_dumpall.c:647 +#: pg_dumpall.c:688 #, c-format msgid " --exclude-database=PATTERN exclude databases whose name matches PATTERN\n" msgstr " --exclude-database=PATTERN виключити бази даних, ім'я яких відповідає PATTERN\n" -#: pg_dumpall.c:654 +#: pg_dumpall.c:695 #, c-format msgid " --no-role-passwords do not dump passwords for roles\n" msgstr " --no-role-passwords не вивантажувати паролі для ролей\n" -#: pg_dumpall.c:669 +#: pg_dumpall.c:711 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=CONNSTR підключення з використанням рядку підключення \n" -#: pg_dumpall.c:671 +#: pg_dumpall.c:713 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=DBNAME альтернативна база даних за замовчуванням\n" -#: pg_dumpall.c:678 +#: pg_dumpall.c:720 #, c-format msgid "\n" "If -f/--file is not used, then the SQL script will be written to the standard\n" @@ -2397,273 +2417,278 @@ msgid "\n" msgstr "\n" "Якщо -f/--file не використовується, тоді SQL- сценарій буде записаний до стандартного виводу.\n\n" -#: pg_dumpall.c:887 +#: pg_dumpall.c:929 #, c-format msgid "role name starting with \"pg_\" skipped (%s)" msgstr "пропущено ім’я ролі, що починається з \"pg_\" (%s)" #. translator: %s represents a numeric role OID -#: pg_dumpall.c:1042 pg_dumpall.c:1049 +#: pg_dumpall.c:1084 pg_dumpall.c:1091 #, c-format msgid "found orphaned pg_auth_members entry for role %s" msgstr "знайдено забутий запис в pg_auth_members для ролі %s" -#: pg_dumpall.c:1310 +#: pg_dumpall.c:1352 #, c-format msgid "could not parse ACL list (%s) for tablespace \"%s\"" msgstr "не вдалося аналізувати список ACL (%s) для табличного простору \"%s\"" -#: pg_dumpall.c:1538 +#: pg_dumpall.c:1585 #, c-format msgid "excluding database \"%s\"" msgstr "виключаємо базу даних \"%s\"" -#: pg_dumpall.c:1542 +#: pg_dumpall.c:1589 #, c-format msgid "dumping database \"%s\"" msgstr "вивантажуємо базу даних \"%s\"" -#: pg_dumpall.c:1574 +#: pg_dumpall.c:1623 #, c-format msgid "pg_dump failed on database \"%s\", exiting" msgstr "помилка pg_dump для бази даних \"%s\", завершення роботи" -#: pg_dumpall.c:1583 +#: pg_dumpall.c:1632 #, c-format msgid "could not re-open the output file \"%s\": %m" msgstr "не вдалося повторно відкрити файл виводу \"%s\": %m" -#: pg_dumpall.c:1627 +#: pg_dumpall.c:1676 #, c-format msgid "running \"%s\"" msgstr "виконується \"%s\"" -#: pg_dumpall.c:1842 +#: pg_dumpall.c:1891 #, c-format msgid "could not get server version" msgstr "не вдалося отримати версію серверу" -#: pg_dumpall.c:1848 +#: pg_dumpall.c:1897 #, c-format msgid "could not parse server version \"%s\"" msgstr "не вдалося аналізувати версію серверу \"%s\"" -#: pg_dumpall.c:1920 pg_dumpall.c:1943 +#: pg_dumpall.c:1969 pg_dumpall.c:1992 #, c-format msgid "executing %s" msgstr "виконується %s" -#: pg_restore.c:308 +#: pg_restore.c:313 #, c-format msgid "one of -d/--dbname and -f/--file must be specified" msgstr "необхідно вказати один з -d/--dbname або -f/--file" -#: pg_restore.c:317 +#: pg_restore.c:322 #, c-format msgid "options -d/--dbname and -f/--file cannot be used together" msgstr "параметри -d/--dbname і -f/--file не можуть використовуватись разом" -#: pg_restore.c:343 +#: pg_restore.c:330 +#, c-format +msgid "options -d/--dbname and --restrict-key cannot be used together" +msgstr "параметри -d/--dbname і --restrict-key не можуть використовуватись разом" + +#: pg_restore.c:373 #, c-format msgid "options -C/--create and -1/--single-transaction cannot be used together" msgstr "параметри -C/--create і -1/--single-transaction не можуть використовуватись разом" -#: pg_restore.c:357 +#: pg_restore.c:387 #, c-format msgid "maximum number of parallel jobs is %d" msgstr "максимальна кількість паралельних завдань: %d" -#: pg_restore.c:366 +#: pg_restore.c:396 #, c-format msgid "cannot specify both --single-transaction and multiple jobs" msgstr "параметр --single-transaction допускається лише з одним завданням" -#: pg_restore.c:408 +#: pg_restore.c:438 #, c-format msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"" msgstr "нерозпізнаний формат архіву \"%s\"; будь ласка, вкажіть \"c\", \"d\" або \"t\"" -#: pg_restore.c:448 +#: pg_restore.c:478 #, c-format msgid "errors ignored on restore: %d" msgstr "при відновленні проігноровано помилок: %d" -#: pg_restore.c:461 +#: pg_restore.c:491 #, c-format msgid "%s restores a PostgreSQL database from an archive created by pg_dump.\n\n" msgstr "%s відновлює базу даних PostgreSQL з архіву, створеного командою pg_dump.\n\n" -#: pg_restore.c:463 +#: pg_restore.c:493 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPTION]... [FILE]\n" -#: pg_restore.c:466 +#: pg_restore.c:496 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NAME підключитись до вказаної бази даних\n" -#: pg_restore.c:467 +#: pg_restore.c:497 #, c-format msgid " -f, --file=FILENAME output file name (- for stdout)\n" msgstr " -f, --file=FILENAME ім'я файлу виводу (- для stdout)\n" -#: pg_restore.c:468 +#: pg_restore.c:498 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr " -F, --format=c|d|t формат файлу резервної копії (розпізнається автоматично)\n" -#: pg_restore.c:469 +#: pg_restore.c:499 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list вивести короткий зміст архіву\n" -#: pg_restore.c:470 +#: pg_restore.c:500 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose детальний режим\n" -#: pg_restore.c:471 +#: pg_restore.c:501 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version вивести інформацію про версію, потім вийти\n" -#: pg_restore.c:472 +#: pg_restore.c:502 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показати цю довідку, потім вийти\n" -#: pg_restore.c:474 +#: pg_restore.c:504 #, c-format msgid "\n" "Options controlling the restore:\n" msgstr "\n" "Параметри, що керують відновленням:\n" -#: pg_restore.c:475 +#: pg_restore.c:505 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only відновити лише дані, без схеми\n" -#: pg_restore.c:477 +#: pg_restore.c:507 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create створити цільову базу даних\n" -#: pg_restore.c:478 +#: pg_restore.c:508 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error вийти при помилці, продовжувати за замовчуванням\n" -#: pg_restore.c:479 +#: pg_restore.c:509 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NAME відновити вказаний індекс\n" -#: pg_restore.c:480 +#: pg_restore.c:510 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM щоб виконати відновлення, використайте ці паралельні завдання\n" -#: pg_restore.c:481 +#: pg_restore.c:511 #, c-format msgid " -L, --use-list=FILENAME use table of contents from this file for\n" " selecting/ordering output\n" msgstr " -L, --use-list=FILENAME використовувати зміст з цього файлу для \n" " вибору/упорядкування даних\n" -#: pg_restore.c:483 +#: pg_restore.c:513 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME відновити об'єкти лише в цій схемі\n" -#: pg_restore.c:484 +#: pg_restore.c:514 #, c-format msgid " -N, --exclude-schema=NAME do not restore objects in this schema\n" msgstr " -N, --exclude-schema=NAME не відновлювати об'єкти в цій схемі\n" -#: pg_restore.c:486 +#: pg_restore.c:516 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=NAME(args) відновити вказану функцію\n" -#: pg_restore.c:487 +#: pg_restore.c:517 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only відновити лише схему, без даних\n" -#: pg_restore.c:488 +#: pg_restore.c:518 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr " -S, --superuser=NAME ім'я суперкористувача для вимкнення тригерів\n" -#: pg_restore.c:489 +#: pg_restore.c:519 #, c-format msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr " -t, --table=NAME відновити вказане відношення (таблицю, подання і т. д.)\n" -#: pg_restore.c:490 +#: pg_restore.c:520 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME відновити вказаний тригер\n" -#: pg_restore.c:491 +#: pg_restore.c:521 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges пропустити відновлення прав доступу (grant/revoke)\n" -#: pg_restore.c:492 +#: pg_restore.c:522 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction відновити в одній транзакції\n" -#: pg_restore.c:494 +#: pg_restore.c:524 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security активувати захист на рівні рядків\n" -#: pg_restore.c:496 +#: pg_restore.c:526 #, c-format msgid " --no-comments do not restore comments\n" msgstr " --no-comments не відновлювати коментарі\n" -#: pg_restore.c:497 +#: pg_restore.c:527 #, c-format msgid " --no-data-for-failed-tables do not restore data of tables that could not be\n" " created\n" msgstr " --no-data-for-failed-tables не відновлювати дані таблиць, які не вдалося створити\n" -#: pg_restore.c:499 +#: pg_restore.c:529 #, c-format msgid " --no-publications do not restore publications\n" msgstr " --no-publications не відновлювати публікації \n" -#: pg_restore.c:500 +#: pg_restore.c:530 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels не відновлювати мітки безпеки \n" -#: pg_restore.c:501 +#: pg_restore.c:531 #, c-format msgid " --no-subscriptions do not restore subscriptions\n" msgstr " --no-subscriptions не відновлювати підписки\n" -#: pg_restore.c:502 +#: pg_restore.c:532 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces не відновлювати завдання табличного простору\n" -#: pg_restore.c:503 +#: pg_restore.c:534 #, c-format msgid " --section=SECTION restore named section (pre-data, data, or post-data)\n" msgstr " --section=SECTION відновлювати названий розділ (pre-data, data або post-data)\n" -#: pg_restore.c:516 +#: pg_restore.c:547 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=ROLENAME виконати SET ROLE перед відновленням\n" -#: pg_restore.c:518 +#: pg_restore.c:549 #, c-format msgid "\n" "The options -I, -n, -N, -P, -t, -T, and --section can be combined and specified\n" @@ -2672,7 +2697,7 @@ msgstr "\n" "Параметри -I, -n, -N, -P, -t, -T, і --section можна групувати і вказувати\n" "декілька разів для вибору декількох об'єктів.\n" -#: pg_restore.c:521 +#: pg_restore.c:552 #, c-format msgid "\n" "If no input file name is supplied, then standard input is used.\n\n" diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c index f8d5ecb6adb..8757cb7c108 100644 --- a/src/bin/pg_resetwal/pg_resetwal.c +++ b/src/bin/pg_resetwal/pg_resetwal.c @@ -857,6 +857,10 @@ PrintNewControlValues(void) { printf(_("NextXID: %u\n"), XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid)); + } + + if (set_oldest_xid != 0) + { printf(_("OldestXID: %u\n"), ControlFile.checkPointCopy.oldestXid); printf(_("OldestXID's DB: %u\n"), diff --git a/src/bin/pg_resetwal/po/es.po b/src/bin/pg_resetwal/po/es.po index 0457dae19dc..11d761f15d5 100644 --- a/src/bin/pg_resetwal/po/es.po +++ b/src/bin/pg_resetwal/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_resetwal (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:22+0000\n" +"POT-Creation-Date: 2026-02-06 21:32+0000\n" "PO-Revision-Date: 2021-10-14 10:01-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" @@ -388,7 +388,7 @@ msgstr "Bloques por segmento de relación grande: %u\n" msgid "WAL block size: %u\n" msgstr "Tamaño del bloque de WAL: %u\n" -#: pg_resetwal.c:799 pg_resetwal.c:885 +#: pg_resetwal.c:799 pg_resetwal.c:889 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Bytes por segmento WAL: %u\n" @@ -488,67 +488,67 @@ msgstr "NextOID: %u\n" msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetwal.c:860 +#: pg_resetwal.c:864 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetwal.c:862 +#: pg_resetwal.c:866 #, c-format msgid "OldestXID's DB: %u\n" msgstr "Base de datos del OldestXID: %u\n" -#: pg_resetwal.c:868 +#: pg_resetwal.c:872 #, c-format msgid "NextXID epoch: %u\n" msgstr "Epoch del NextXID: %u\n" -#: pg_resetwal.c:874 +#: pg_resetwal.c:878 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetwal.c:879 +#: pg_resetwal.c:883 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080 +#: pg_resetwal.c:969 pg_resetwal.c:1037 pg_resetwal.c:1084 #, c-format msgid "could not open directory \"%s\": %m" msgstr "no se pudo abrir el directorio «%s»: %m" -#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103 +#: pg_resetwal.c:1004 pg_resetwal.c:1057 pg_resetwal.c:1107 #, c-format msgid "could not read directory \"%s\": %m" msgstr "no se pudo leer el directorio «%s»: %m" -#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109 +#: pg_resetwal.c:1010 pg_resetwal.c:1063 pg_resetwal.c:1113 #, c-format msgid "could not close directory \"%s\": %m" msgstr "no se pudo abrir el directorio «%s»: %m" -#: pg_resetwal.c:1045 pg_resetwal.c:1095 +#: pg_resetwal.c:1049 pg_resetwal.c:1099 #, c-format msgid "could not delete file \"%s\": %m" msgstr "no se pudo borrar el archivo «%s»: %m" -#: pg_resetwal.c:1176 +#: pg_resetwal.c:1180 #, c-format msgid "could not open file \"%s\": %m" msgstr "no se pudo abrir el archivo «%s»: %m" -#: pg_resetwal.c:1186 pg_resetwal.c:1199 +#: pg_resetwal.c:1190 pg_resetwal.c:1203 #, c-format msgid "could not write file \"%s\": %m" msgstr "no se pudo escribir el archivo «%s»: %m" -#: pg_resetwal.c:1206 +#: pg_resetwal.c:1210 #, c-format msgid "fsync error: %m" msgstr "error de fsync: %m" -#: pg_resetwal.c:1217 +#: pg_resetwal.c:1221 #, c-format msgid "" "%s resets the PostgreSQL write-ahead log.\n" @@ -557,7 +557,7 @@ msgstr "" "%s restablece el WAL («write-ahead log») de PostgreSQL.\n" "\n" -#: pg_resetwal.c:1218 +#: pg_resetwal.c:1222 #, c-format msgid "" "Usage:\n" @@ -568,12 +568,12 @@ msgstr "" " %s [OPCIÓN]... DATADIR\n" "\n" -#: pg_resetwal.c:1219 +#: pg_resetwal.c:1223 #, c-format msgid "Options:\n" msgstr "Opciones:\n" -#: pg_resetwal.c:1220 +#: pg_resetwal.c:1224 #, c-format msgid "" " -c, --commit-timestamp-ids=XID,XID\n" @@ -585,29 +585,29 @@ msgstr "" " que llevan timestamp de commit (cero significa no\n" " cambiar)\n" -#: pg_resetwal.c:1223 +#: pg_resetwal.c:1227 #, c-format msgid " [-D, --pgdata=]DATADIR data directory\n" msgstr " [-D, --pgdata=]DATADIR directorio de datos\n" -#: pg_resetwal.c:1224 +#: pg_resetwal.c:1228 #, c-format msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n" msgstr " -e, --epoch=XIDEPOCH asigna el siguiente «epoch» de ID de transacción\n" -#: pg_resetwal.c:1225 +#: pg_resetwal.c:1229 #, c-format msgid " -f, --force force update to be done\n" msgstr " -f, --force fuerza que la actualización sea hecha\n" -#: pg_resetwal.c:1226 +#: pg_resetwal.c:1230 #, c-format msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n" msgstr "" " -l, --next-wal-file=ARCHIVOWAL\n" " fuerza una ubicación inicial mínima para nuevo WAL\n" -#: pg_resetwal.c:1227 +#: pg_resetwal.c:1231 #, c-format msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n" msgstr "" @@ -615,53 +615,53 @@ msgstr "" " asigna el siguiente ID de multitransacción y\n" " el más antiguo\n" -#: pg_resetwal.c:1228 +#: pg_resetwal.c:1232 #, c-format msgid " -n, --dry-run no update, just show what would be done\n" msgstr " -n, --dry-run no actualiza, sólo muestra lo que se haría\n" -#: pg_resetwal.c:1229 +#: pg_resetwal.c:1233 #, c-format msgid " -o, --next-oid=OID set next OID\n" msgstr " -o, --next-oid=OID asigna el siguiente OID\n" -#: pg_resetwal.c:1230 +#: pg_resetwal.c:1234 #, c-format msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n" msgstr "" " -O, --multixact-offset=OFFSET\n" " asigna la siguiente posición de multitransacción\n" -#: pg_resetwal.c:1231 +#: pg_resetwal.c:1235 #, c-format msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n" msgstr "" " -u, --oldest-transaction-id=XID\n" " asigna el ID de transacción más antiguo\n" -#: pg_resetwal.c:1232 +#: pg_resetwal.c:1236 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de versión y salir\n" -#: pg_resetwal.c:1233 +#: pg_resetwal.c:1237 #, c-format msgid " -x, --next-transaction-id=XID set next transaction ID\n" msgstr "" " -x, --next-transaction-id=XID\n" " asigna el siguiente ID de transacción\n" -#: pg_resetwal.c:1234 +#: pg_resetwal.c:1238 #, c-format msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n" msgstr " --wal-segsize=TAMAÑO tamaño de segmentos de WAL, en megabytes\n" -#: pg_resetwal.c:1235 +#: pg_resetwal.c:1239 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: pg_resetwal.c:1236 +#: pg_resetwal.c:1240 #, c-format msgid "" "\n" @@ -670,7 +670,7 @@ msgstr "" "\n" "Reporte errores a <%s>.\n" -#: pg_resetwal.c:1237 +#: pg_resetwal.c:1241 #, c-format msgid "%s home page: <%s>\n" msgstr "Sitio web de %s: <%s>\n" diff --git a/src/bin/pg_resetwal/po/ru.po b/src/bin/pg_resetwal/po/ru.po index 08a02bb76e0..16020f93eb6 100644 --- a/src/bin/pg_resetwal/po/ru.po +++ b/src/bin/pg_resetwal/po/ru.po @@ -5,12 +5,12 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2009. # Dmitriy Olshevskiy , 2014. -# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 Alexander Lakhin msgid "" msgstr "" "Project-Id-Version: pg_resetxlog (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2021-08-14 06:29+0300\n" +"POT-Creation-Date: 2026-02-07 08:59+0200\n" "PO-Revision-Date: 2024-09-05 12:19+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -419,7 +419,7 @@ msgstr "Блоков в макс. сегменте отношений: %u\n" msgid "WAL block size: %u\n" msgstr "Размер блока WAL: %u\n" -#: pg_resetwal.c:799 pg_resetwal.c:885 +#: pg_resetwal.c:799 pg_resetwal.c:889 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Байт в сегменте WAL: %u\n" @@ -519,67 +519,67 @@ msgstr "NextOID: %u\n" msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetwal.c:860 +#: pg_resetwal.c:864 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetwal.c:862 +#: pg_resetwal.c:866 #, c-format msgid "OldestXID's DB: %u\n" msgstr "БД с oldestXID: %u\n" -#: pg_resetwal.c:868 +#: pg_resetwal.c:872 #, c-format msgid "NextXID epoch: %u\n" msgstr "Эпоха NextXID: %u\n" -#: pg_resetwal.c:874 +#: pg_resetwal.c:878 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetwal.c:879 +#: pg_resetwal.c:883 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080 +#: pg_resetwal.c:969 pg_resetwal.c:1037 pg_resetwal.c:1084 #, c-format msgid "could not open directory \"%s\": %m" msgstr "не удалось открыть каталог \"%s\": %m" -#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103 +#: pg_resetwal.c:1004 pg_resetwal.c:1057 pg_resetwal.c:1107 #, c-format msgid "could not read directory \"%s\": %m" msgstr "не удалось прочитать каталог \"%s\": %m" -#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109 +#: pg_resetwal.c:1010 pg_resetwal.c:1063 pg_resetwal.c:1113 #, c-format msgid "could not close directory \"%s\": %m" msgstr "не удалось закрыть каталог \"%s\": %m" -#: pg_resetwal.c:1045 pg_resetwal.c:1095 +#: pg_resetwal.c:1049 pg_resetwal.c:1099 #, c-format msgid "could not delete file \"%s\": %m" msgstr "ошибка удаления файла \"%s\": %m" -#: pg_resetwal.c:1176 +#: pg_resetwal.c:1180 #, c-format msgid "could not open file \"%s\": %m" msgstr "не удалось открыть файл \"%s\": %m" -#: pg_resetwal.c:1186 pg_resetwal.c:1199 +#: pg_resetwal.c:1190 pg_resetwal.c:1203 #, c-format msgid "could not write file \"%s\": %m" msgstr "не удалось записать файл \"%s\": %m" -#: pg_resetwal.c:1206 +#: pg_resetwal.c:1210 #, c-format msgid "fsync error: %m" msgstr "ошибка синхронизации с ФС: %m" -#: pg_resetwal.c:1217 +#: pg_resetwal.c:1221 #, c-format msgid "" "%s resets the PostgreSQL write-ahead log.\n" @@ -588,7 +588,7 @@ msgstr "" "%s сбрасывает журнал предзаписи PostgreSQL.\n" "\n" -#: pg_resetwal.c:1218 +#: pg_resetwal.c:1222 #, c-format msgid "" "Usage:\n" @@ -599,12 +599,12 @@ msgstr "" " %s [ПАРАМЕТР]... КАТАЛОГ-ДАННЫХ\n" "\n" -#: pg_resetwal.c:1219 +#: pg_resetwal.c:1223 #, c-format msgid "Options:\n" msgstr "Параметры:\n" -#: pg_resetwal.c:1220 +#: pg_resetwal.c:1224 #, c-format msgid "" " -c, --commit-timestamp-ids=XID,XID\n" @@ -616,24 +616,24 @@ msgstr "" " задать старейшую и новейшую транзакции,\n" " несущие метки времени (0 — не менять)\n" -#: pg_resetwal.c:1223 +#: pg_resetwal.c:1227 #, c-format msgid " [-D, --pgdata=]DATADIR data directory\n" msgstr " [-D, --pgdata=]КАТ_ДАННЫХ каталог данных\n" -#: pg_resetwal.c:1224 +#: pg_resetwal.c:1228 #, c-format msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n" msgstr "" " -e, --epoch=XIDEPOCH задать эпоху для ID следующей транзакции\n" -#: pg_resetwal.c:1225 +#: pg_resetwal.c:1229 #, c-format msgid " -f, --force force update to be done\n" msgstr "" " -f, --force принудительное выполнение операции\n" -#: pg_resetwal.c:1226 +#: pg_resetwal.c:1230 #, c-format msgid "" " -l, --next-wal-file=WALFILE set minimum starting location for new " @@ -642,7 +642,7 @@ msgstr "" " -l, --next-wal-file=ФАЙЛ_WAL задать минимальное начальное положение\n" " для нового WAL\n" -#: pg_resetwal.c:1227 +#: pg_resetwal.c:1231 #, c-format msgid "" " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n" @@ -650,7 +650,7 @@ msgstr "" " -m, --multixact-ids=MXID,MXID задать ID следующей и старейшей\n" " мультитранзакции\n" -#: pg_resetwal.c:1228 +#: pg_resetwal.c:1232 #, c-format msgid "" " -n, --dry-run no update, just show what would be done\n" @@ -659,46 +659,46 @@ msgstr "" "выполнены,\n" " но не выполнять их\n" -#: pg_resetwal.c:1229 +#: pg_resetwal.c:1233 #, c-format msgid " -o, --next-oid=OID set next OID\n" msgstr " -o, --next-oid=OID задать следующий OID\n" -#: pg_resetwal.c:1230 +#: pg_resetwal.c:1234 #, c-format msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n" msgstr "" " -O, --multixact-offset=СМЕЩЕНИЕ задать смещение следующей " "мультитранзакции\n" -#: pg_resetwal.c:1231 +#: pg_resetwal.c:1235 #, c-format msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n" msgstr " -u, --oldest-transaction-id=XID задать ID старейшей ID\n" -#: pg_resetwal.c:1232 +#: pg_resetwal.c:1236 #, c-format msgid "" " -V, --version output version information, then exit\n" msgstr " -V, --version показать версию и выйти\n" -#: pg_resetwal.c:1233 +#: pg_resetwal.c:1237 #, c-format msgid " -x, --next-transaction-id=XID set next transaction ID\n" msgstr " -x, --next-transaction-id=XID задать ID следующей транзакции\n" -#: pg_resetwal.c:1234 +#: pg_resetwal.c:1238 #, c-format msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n" msgstr "" " --wal-segsize=РАЗМЕР размер сегментов WAL (в мегабайтах)\n" -#: pg_resetwal.c:1235 +#: pg_resetwal.c:1239 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать эту справку и выйти\n" -#: pg_resetwal.c:1236 +#: pg_resetwal.c:1240 #, c-format msgid "" "\n" @@ -707,7 +707,7 @@ msgstr "" "\n" "Об ошибках сообщайте по адресу <%s>.\n" -#: pg_resetwal.c:1237 +#: pg_resetwal.c:1241 #, c-format msgid "%s home page: <%s>\n" msgstr "Домашняя страница %s: <%s>\n" diff --git a/src/bin/pg_rewind/file_ops.c b/src/bin/pg_rewind/file_ops.c index 1671feea68f..a8070864bbe 100644 --- a/src/bin/pg_rewind/file_ops.c +++ b/src/bin/pg_rewind/file_ops.c @@ -327,7 +327,7 @@ slurpFile(const char *datadir, const char *path, size_t *filesize) fullpath); if (fstat(fd, &statbuf) < 0) - pg_fatal("could not open file \"%s\" for reading: %m", + pg_fatal("could not stat file \"%s\": %m", fullpath); len = statbuf.st_size; diff --git a/src/bin/pg_rewind/po/es.po b/src/bin/pg_rewind/po/es.po index 38581000451..24146d59c28 100644 --- a/src/bin/pg_rewind/po/es.po +++ b/src/bin/pg_rewind/po/es.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:23+0000\n" -"PO-Revision-Date: 2022-08-08 01:00+0200\n" +"POT-Creation-Date: 2026-02-06 21:34+0000\n" +"PO-Revision-Date: 2026-02-07 09:09+0100\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" "Language: es\n" @@ -205,11 +205,17 @@ msgstr "no se pudo crear el link simbólico en «%s»: %m" msgid "could not remove symbolic link \"%s\": %m" msgstr "no se pudo eliminar el enlace simbólico «%s»: %m" -#: file_ops.c:326 file_ops.c:330 +#: file_ops.c:326 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "no se pudo abrir archivo «%s» para lectura: %m" +#: file_ops.c:330 +#, c-format +#| msgid "could not open file \"%s\" for reading: %m" +msgid "could not stat file \"%s\" for reading: %m" +msgstr "no se pudo efectuar «stat» al archivo «%s» para lectura: %m" + #: file_ops.c:341 local_source.c:107 parsexlog.c:369 #, c-format msgid "could not read file \"%s\": %m" diff --git a/src/bin/pg_rewind/po/ru.po b/src/bin/pg_rewind/po/ru.po index bf12860784f..7c35a3d8591 100644 --- a/src/bin/pg_rewind/po/ru.po +++ b/src/bin/pg_rewind/po/ru.po @@ -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. -# SPDX-FileCopyrightText: 2015-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2015-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 Alexander Lakhin msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-08-02 11:38+0300\n" -"PO-Revision-Date: 2025-09-13 18:56+0300\n" +"POT-Creation-Date: 2026-02-07 08:59+0200\n" +"PO-Revision-Date: 2026-02-07 09:14+0200\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -201,11 +201,16 @@ msgstr "не удалось создать символическую ссылк msgid "could not remove symbolic link \"%s\": %m" msgstr "ошибка при удалении символической ссылки \"%s\": %m" -#: file_ops.c:326 file_ops.c:330 +#: file_ops.c:326 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "не удалось открыть файл \"%s\" для чтения: %m" +#: file_ops.c:330 +#, c-format +msgid "could not stat file \"%s\" for reading: %m" +msgstr "не удалось получить информацию о файле \"%s\" для чтения: %m" + #: file_ops.c:341 local_source.c:107 parsexlog.c:369 #, c-format msgid "could not read file \"%s\": %m" diff --git a/src/bin/pg_rewind/po/sv.po b/src/bin/pg_rewind/po/sv.po index 529ec2c398b..7ab29a3d277 100644 --- a/src/bin/pg_rewind/po/sv.po +++ b/src/bin/pg_rewind/po/sv.po @@ -1,14 +1,14 @@ # 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, 2020, 2021, 2022. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2022-04-06 21:19+0000\n" -"PO-Revision-Date: 2022-04-11 14:02+0200\n" +"POT-Creation-Date: 2026-02-06 21:34+0000\n" +"PO-Revision-Date: 2026-02-07 09:31+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -116,12 +116,12 @@ msgstr "kunde inte återställa fil \"%s\" från arkiv" #: ../../fe_utils/recovery_gen.c:35 ../../fe_utils/recovery_gen.c:49 #: ../../fe_utils/recovery_gen.c:77 ../../fe_utils/recovery_gen.c:100 #: ../../fe_utils/recovery_gen.c:171 parsexlog.c:77 parsexlog.c:137 -#: parsexlog.c:197 +#: parsexlog.c:199 #, c-format msgid "out of memory" msgstr "slut på minne" -#: ../../fe_utils/recovery_gen.c:134 parsexlog.c:310 +#: ../../fe_utils/recovery_gen.c:134 parsexlog.c:331 #, c-format msgid "could not open file \"%s\": %m" msgstr "kunde inte öppna fil \"%s\": %m" @@ -134,7 +134,7 @@ msgstr "kunde inte skriva till fil \"%s\": %m" #: ../../fe_utils/recovery_gen.c:152 #, c-format msgid "could not create file \"%s\": %m" -msgstr "kan inte skapa fil \"%s\": %m" +msgstr "kunde inte skapa fil \"%s\": %m" #: file_ops.c:67 #, c-format @@ -201,17 +201,22 @@ msgstr "kunde inte skapa en symnbolisk länk vid \"%s\": %m" msgid "could not remove symbolic link \"%s\": %m" msgstr "kan inte ta bort symbolisk länk \"%s\": %m" -#: file_ops.c:326 file_ops.c:330 +#: file_ops.c:326 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "kunde inte öppna filen \"%s\" för läsning: %m" -#: file_ops.c:341 local_source.c:107 parsexlog.c:348 +#: file_ops.c:330 +#, c-format +msgid "could not stat file \"%s\" for reading: %m" +msgstr "kunde inte göra stat() på filen \"%s\" för läsning: %m" + +#: file_ops.c:341 local_source.c:107 parsexlog.c:369 #, c-format msgid "could not read file \"%s\": %m" msgstr "kunde inte läsa fil \"%s\": %m" -#: file_ops.c:344 parsexlog.c:350 +#: file_ops.c:344 parsexlog.c:371 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "kunde inte läsa fil \"%s\": läste %d av %zu" @@ -221,57 +226,57 @@ msgstr "kunde inte läsa fil \"%s\": läste %d av %zu" msgid "could not open directory \"%s\": %m" msgstr "kunde inte öppna katalog \"%s\": %m" -#: file_ops.c:446 +#: file_ops.c:442 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "kan inte läsa symbolisk länk \"%s\": %m" -#: file_ops.c:449 +#: file_ops.c:445 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "mål för symbolisk länk \"%s\" är för lång" -#: file_ops.c:464 +#: file_ops.c:460 #, c-format msgid "\"%s\" is a symbolic link, but symbolic links are not supported on this platform" msgstr "\"%s\" är en symbolisk länk men symboliska länkar stöds inte på denna plattform" -#: file_ops.c:471 +#: file_ops.c:467 #, c-format msgid "could not read directory \"%s\": %m" msgstr "kunde inte läsa katalog \"%s\": %m" -#: file_ops.c:475 +#: file_ops.c:471 #, c-format msgid "could not close directory \"%s\": %m" msgstr "kunde inte stänga katalog \"%s\": %m" -#: filemap.c:237 +#: filemap.c:299 #, c-format msgid "data file \"%s\" in source is not a regular file" msgstr "datafil \"%s\" i källan är inte en vanlig fil" -#: filemap.c:242 filemap.c:275 +#: filemap.c:304 filemap.c:337 #, c-format msgid "duplicate source file \"%s\"" msgstr "duplicerad källflagga \"%s\"" -#: filemap.c:330 +#: filemap.c:392 #, c-format msgid "unexpected page modification for non-regular file \"%s\"" msgstr "oväntad sidmodifiering för icke-regulär fil \"%s\"" -#: filemap.c:680 filemap.c:774 +#: filemap.c:742 filemap.c:844 #, c-format msgid "unknown file type for \"%s\"" msgstr "okänd filtyp på \"%s\"" -#: filemap.c:707 +#: filemap.c:777 #, c-format msgid "file \"%s\" is of different type in source and target" msgstr "filen \"%s\" har olika typ i källa och mål" -#: filemap.c:779 +#: filemap.c:849 #, c-format msgid "could not decide what to do with file \"%s\"" msgstr "kunde inte bestämma vad som skulle göras med filen \"%s\"" @@ -431,22 +436,22 @@ msgstr "kunde inte läsa WAL-post vid %X/%X" msgid "end pointer %X/%X is not a valid end point; expected %X/%X" msgstr "slutpekare %X/%X är inte en giltig slutposition; förväntade %X/%X" -#: parsexlog.c:210 +#: parsexlog.c:212 #, c-format msgid "could not find previous WAL record at %X/%X: %s" msgstr "kunde inte hitta föregående WAL-post vid %X/%X: %s" -#: parsexlog.c:214 +#: parsexlog.c:216 #, c-format msgid "could not find previous WAL record at %X/%X" msgstr "kunde inte hitta förgående WAL-post vid %X/%X" -#: parsexlog.c:339 +#: parsexlog.c:360 #, c-format msgid "could not seek in file \"%s\": %m" msgstr "kunde inte söka (seek) i fil \"%s\": %m" -#: parsexlog.c:431 +#: parsexlog.c:452 #, c-format msgid "WAL record modifies a relation, but record type is not recognized: lsn: %X/%X, rmgr: %s, info: %02X" msgstr "WAL-post modifierar en relation, men posttypen känns inte igen: lsn: %X/%X, rmgr: %s, info: %02X" @@ -525,9 +530,8 @@ msgid "" " -R, --write-recovery-conf write configuration for replication\n" " (requires --source-server)\n" msgstr "" -" -R, --write-recovery-conf\n" -" skriv konfiguration för replikering\n" -" (kräver --source-server)\n" +" -R, --write-recovery-conf skriv konfiguration för replikering\n" +" (kräver --source-server)\n" #: pg_rewind.c:98 #, c-format @@ -634,124 +638,124 @@ msgstr "servrarna divergerade vid WAL-position %X/%X på tidslinje %u" msgid "no rewind required" msgstr "ingen rewind krävs" -#: pg_rewind.c:403 +#: pg_rewind.c:406 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u" msgstr "rewind från senaste gemensamma checkpoint vid %X/%X på tidslinje %u" -#: pg_rewind.c:413 +#: pg_rewind.c:416 #, c-format msgid "reading source file list" msgstr "läser källfillista" -#: pg_rewind.c:417 +#: pg_rewind.c:420 #, c-format msgid "reading target file list" msgstr "läser målfillista" -#: pg_rewind.c:426 +#: pg_rewind.c:429 #, c-format msgid "reading WAL in target" msgstr "läser WAL i målet" -#: pg_rewind.c:447 +#: pg_rewind.c:450 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)" msgstr "behöver kopiera %lu MB (total källkatalogstorlek är %lu MB)" -#: pg_rewind.c:465 +#: pg_rewind.c:468 #, c-format msgid "syncing target data directory" msgstr "synkar måldatakatalog" -#: pg_rewind.c:481 +#: pg_rewind.c:484 #, c-format msgid "Done!" msgstr "Klar!" -#: pg_rewind.c:564 +#: pg_rewind.c:567 #, c-format msgid "no action decided for file \"%s\"" msgstr "ingen åtgärd beslutades för filen \"%s\"" -#: pg_rewind.c:596 +#: pg_rewind.c:599 #, c-format msgid "source system was modified while pg_rewind was running" msgstr "källsystemet ändrades samtidigt som pg_rewind kördes" -#: pg_rewind.c:600 +#: pg_rewind.c:603 #, c-format msgid "creating backup label and updating control file" msgstr "skapar backupetikett och uppdaterar kontrollfil" -#: pg_rewind.c:650 +#: pg_rewind.c:653 #, c-format msgid "source system was in unexpected state at end of rewind" msgstr "källsystemet var i ett oväntat tillstånd vid slutet av återspolningen" -#: pg_rewind.c:681 +#: pg_rewind.c:684 #, c-format msgid "source and target clusters are from different systems" msgstr "källa och målkluster är från olika system" -#: pg_rewind.c:689 +#: pg_rewind.c:692 #, c-format msgid "clusters are not compatible with this version of pg_rewind" msgstr "klustren är inte kompatibla med denna version av pg_rewind" -#: pg_rewind.c:699 +#: pg_rewind.c:702 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"" msgstr "målservern behöver använda antingen datachecksums eller \"wal_log_hints = on\"" -#: pg_rewind.c:710 +#: pg_rewind.c:713 #, c-format msgid "target server must be shut down cleanly" msgstr "målserver måste stängas ner utan fel" -#: pg_rewind.c:720 +#: pg_rewind.c:723 #, c-format msgid "source data directory must be shut down cleanly" msgstr "måldatakatalog måste stängas ner utan fel" -#: pg_rewind.c:772 +#: pg_rewind.c:775 #, c-format msgid "%*s/%s kB (%d%%) copied" msgstr "%*s/%s kB (%d%%) kopierad" -#: pg_rewind.c:835 +#: pg_rewind.c:838 #, c-format msgid "invalid control file" msgstr "ogiltig kontrollfil" -#: pg_rewind.c:919 +#: pg_rewind.c:920 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines" msgstr "kunde inte finna en gemensam anfader av källa och målklusterets tidslinjer" -#: pg_rewind.c:960 +#: pg_rewind.c:961 #, c-format msgid "backup label buffer too small" msgstr "backupetikett-buffer för liten" -#: pg_rewind.c:983 +#: pg_rewind.c:984 #, c-format msgid "unexpected control file CRC" msgstr "oväntad kontrollfil-CRC" -#: pg_rewind.c:995 +#: pg_rewind.c:996 #, c-format msgid "unexpected control file size %d, expected %d" msgstr "oväntad kontrollfilstorlek %d, förväntade %d" -#: pg_rewind.c:1004 +#: pg_rewind.c:1005 #, c-format msgid "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d byte" msgid_plural "WAL segment size must be a power of two between 1 MB and 1 GB, but the control file specifies %d bytes" msgstr[0] "WAL-segmentstorlek måste vara en tvåpotens mellan 1MB och 1GB men kontrollfilen anger %d byte" msgstr[1] "WAL-segmentstorlek måste vara en tvåpotens mellan 1MB och 1GB men kontrollfilen anger %d byte" -#: pg_rewind.c:1043 pg_rewind.c:1101 +#: pg_rewind.c:1044 pg_rewind.c:1102 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -762,7 +766,7 @@ msgstr "" "katalog som \"%s\".\n" "Kontrollera din installation." -#: pg_rewind.c:1048 pg_rewind.c:1106 +#: pg_rewind.c:1049 pg_rewind.c:1107 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -773,22 +777,22 @@ msgstr "" "men är inte av samma version som %s.\n" "Kontrollera din installation." -#: pg_rewind.c:1069 +#: pg_rewind.c:1070 #, c-format msgid "restore_command is not set in the target cluster" msgstr "restore_command är inte satt i målklustret" -#: pg_rewind.c:1112 +#: pg_rewind.c:1113 #, c-format msgid "executing \"%s\" for target server to complete crash recovery" msgstr "kör \"%s\" för målservern för att slutföra krashåterställning" -#: pg_rewind.c:1132 +#: pg_rewind.c:1133 #, c-format msgid "postgres single-user mode in target cluster failed" msgstr "postgres enanvändarläge misslyckades i målklustret" -#: pg_rewind.c:1133 +#: pg_rewind.c:1134 #, c-format msgid "Command was: %s" msgstr "Kommandot var: %s" @@ -828,137 +832,132 @@ msgstr "ogiltig data i historikfil" msgid "Timeline IDs must be less than child timeline's ID." msgstr "Tidslinje-ID:er måste vara mindre än barnens tidslinje-ID:er." -#: xlogreader.c:354 +#: xlogreader.c:323 #, c-format msgid "invalid record offset at %X/%X" msgstr "ogiltig postoffset vid %X/%X" -#: xlogreader.c:362 +#: xlogreader.c:331 #, c-format msgid "contrecord is requested by %X/%X" msgstr "contrecord är begärd vid %X/%X" -#: xlogreader.c:403 xlogreader.c:733 +#: xlogreader.c:372 xlogreader.c:728 #, 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:429 -#, 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:477 +#: xlogreader.c:443 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "det finns ingen contrecord-flagga vid %X/%X" -#: xlogreader.c:490 +#: xlogreader.c:456 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "ogiltig contrecord-längd %u (förväntade %lld) vid %X/%X" -#: xlogreader.c:741 +#: xlogreader.c:736 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ogiltigt resurshanterar-ID %u vid %X/%X" -#: xlogreader.c:754 xlogreader.c:770 +#: xlogreader.c:749 xlogreader.c:765 #, 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:806 +#: xlogreader.c:803 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "felaktig resurshanterardatakontrollsumma i post vid %X/%X" -#: xlogreader.c:843 +#: xlogreader.c:840 #, 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:857 xlogreader.c:898 +#: xlogreader.c:854 xlogreader.c:895 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ogiltiga infobitar %04X i loggsegment %s, offset %u" -#: xlogreader.c:872 +#: xlogreader.c:869 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %llu, pg_control database system identifier is %llu" msgstr "WAL-fil är från ett annat databassystem: WAL-filens databassystemidentifierare är %llu, pg_control databassystemidentifierare är %llu" -#: xlogreader.c:880 +#: xlogreader.c:877 #, c-format msgid "WAL file is from different database system: incorrect segment size in page header" msgstr "WAL-fil är från ett annat databassystem: inkorrekt segmentstorlek i sidhuvud" -#: xlogreader.c:886 +#: xlogreader.c:883 #, 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 sidhuvud" -#: xlogreader.c:917 +#: xlogreader.c:914 #, 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:942 +#: xlogreader.c:939 #, 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:1287 +#: xlogreader.c:1284 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "ej-i-sekvens block_id %u vid %X/%X" -#: xlogreader.c:1309 +#: xlogreader.c:1306 #, 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" +msgstr "BKPBLOCK_HAS_DATA är satt men ingen data inkluderad vid %X/%X" -#: xlogreader.c:1316 +#: xlogreader.c:1313 #, 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" +msgstr "BKPBLOCK_HAS_DATA är ej satt men datalängden är %u vid %X/%X" -#: xlogreader.c:1352 +#: xlogreader.c:1349 #, 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" +msgstr "BKPIMAGE_HAS_HOLE är satt men håloffset %u längd %u blockavbildlängd %u vid %X/%X" -#: xlogreader.c:1368 +#: xlogreader.c:1365 #, 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" +msgstr "BKPIMAGE_HAS_HOLE är inte satt men håloffset %u längd %u vid %X/%X" -#: xlogreader.c:1383 +#: xlogreader.c:1380 #, 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:1398 +#: xlogreader.c:1395 #, 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:1414 +#: xlogreader.c:1411 #, 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" +msgstr "BKPBLOCK_SAME_REL är satt men ingen tidigare rel vid %X/%X" -#: xlogreader.c:1426 +#: xlogreader.c:1423 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ogiltig block_id %u vid %X/%X" -#: xlogreader.c:1513 +#: xlogreader.c:1510 #, c-format msgid "record with invalid length at %X/%X" msgstr "post med ogiltig längd vid %X/%X" -#: xlogreader.c:1602 +#: xlogreader.c:1599 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "ogiltig komprimerad image vid %X/%X, block %d" diff --git a/src/bin/pg_test_fsync/po/es.po b/src/bin/pg_test_fsync/po/es.po index ed0d10faf98..93e442c1cc4 100644 --- a/src/bin/pg_test_fsync/po/es.po +++ b/src/bin/pg_test_fsync/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_test_fsync (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:24+0000\n" +"POT-Creation-Date: 2026-02-06 21:34+0000\n" "PO-Revision-Date: 2021-05-21 23:25-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_test_fsync/po/pl.po b/src/bin/pg_test_fsync/po/pl.po index 1554043d154..687f436e079 100644 --- a/src/bin/pg_test_fsync/po/pl.po +++ b/src/bin/pg_test_fsync/po/pl.po @@ -1,189 +1,162 @@ -# LANGUAGE 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. -# grzegorz , 2017. msgid "" msgstr "" -"Project-Id-Version: pg_test_fsync (PostgreSQL) 10\n" -"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-03-14 17:46+0000\n" -"PO-Revision-Date: 2017-03-14 19:29+0200\n" -"Last-Translator: grzegorz \n" -"Language-Team: begina.felicysym@wp.eu\n" -"Language: pl\n" +"Project-Id-Version: postgresql\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2025-03-27 18:56+0000\n" +"PO-Revision-Date: 2026-01-03 13:40\n" +"Last-Translator: \n" +"Language-Team: Polish\n" +"Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Virtaal 0.7.1\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Crowdin-Project: postgresql\n" +"X-Crowdin-Project-ID: 324573\n" +"X-Crowdin-Language: pl\n" +"X-Crowdin-File: /REL_14_STABLE/pg_test_fsync.pot\n" +"X-Crowdin-File-ID: 750\n" -#: pg_test_fsync.c:47 +#. translator: maintain alignment with NA_FORMAT +#: pg_test_fsync.c:31 #, c-format -msgid "Cannot create thread for alarm\n" -msgstr "Nie da się utworzyć wątku dla alarmu\n" +msgid "%13.3f ops/sec %6.0f usecs/op\n" +msgstr "" -#: pg_test_fsync.c:152 +#: pg_test_fsync.c:159 #, c-format msgid "Usage: %s [-f FILENAME] [-s SECS-PER-TEST]\n" msgstr "Składnia: %s [-f NAZWAPLIKU] [-s SEK-NA-TEST]\n" -#: pg_test_fsync.c:176 pg_test_fsync.c:188 +#: pg_test_fsync.c:186 pg_test_fsync.c:200 pg_test_fsync.c:211 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Użyj \"%s --help\" aby uzyskać więcej informacji.\n" -#: pg_test_fsync.c:186 -#, c-format -msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: za duża ilość parametrów (pierwszy to \"%s\")\n" - -#: pg_test_fsync.c:193 +#: pg_test_fsync.c:216 #, c-format -msgid "%d seconds per test\n" -msgstr "%d sekund na test\n" +msgid "%u second per test\n" +msgid_plural "%u seconds per test\n" +msgstr[0] "%u s na test\n" +msgstr[1] "%u s na test\n" +msgstr[2] "%u s na test\n" +msgstr[3] "%u s na test\n" -#: pg_test_fsync.c:195 +#: pg_test_fsync.c:221 #, c-format msgid "O_DIRECT supported on this platform for open_datasync and open_sync.\n" msgstr "O_DIRECT wspierane na tej platformie dla open_datasync i open_sync.\n" -#: pg_test_fsync.c:197 +#: pg_test_fsync.c:223 #, c-format msgid "Direct I/O is not supported on this platform.\n" msgstr "Bezpośrednie We/Wy nie jest wspierane na tej platformie.\n" -#: pg_test_fsync.c:222 pg_test_fsync.c:286 pg_test_fsync.c:310 -#: pg_test_fsync.c:333 pg_test_fsync.c:474 pg_test_fsync.c:486 -#: pg_test_fsync.c:502 pg_test_fsync.c:508 pg_test_fsync.c:533 +#: pg_test_fsync.c:248 pg_test_fsync.c:314 pg_test_fsync.c:339 +#: pg_test_fsync.c:363 pg_test_fsync.c:507 pg_test_fsync.c:519 +#: pg_test_fsync.c:535 pg_test_fsync.c:541 pg_test_fsync.c:563 msgid "could not open output file" msgstr "nie można otworzyć pliku wyjścia" -#: pg_test_fsync.c:225 pg_test_fsync.c:267 pg_test_fsync.c:292 -#: pg_test_fsync.c:316 pg_test_fsync.c:339 pg_test_fsync.c:377 -#: pg_test_fsync.c:435 pg_test_fsync.c:476 pg_test_fsync.c:504 -#: pg_test_fsync.c:535 +#: pg_test_fsync.c:252 pg_test_fsync.c:297 pg_test_fsync.c:323 +#: pg_test_fsync.c:348 pg_test_fsync.c:372 pg_test_fsync.c:411 +#: pg_test_fsync.c:470 pg_test_fsync.c:509 pg_test_fsync.c:537 +#: pg_test_fsync.c:568 msgid "write failed" msgstr "niepowodzenie zapisu" -#: pg_test_fsync.c:229 pg_test_fsync.c:318 pg_test_fsync.c:341 -#: pg_test_fsync.c:478 pg_test_fsync.c:510 +#: pg_test_fsync.c:256 pg_test_fsync.c:350 pg_test_fsync.c:374 +#: pg_test_fsync.c:511 pg_test_fsync.c:543 msgid "fsync failed" msgstr "niepowodzenie fsync" -#: pg_test_fsync.c:243 +#: pg_test_fsync.c:270 #, c-format -msgid "" -"\n" +msgid "\n" "Compare file sync methods using one %dkB write:\n" -msgstr "" -"\n" +msgstr "\n" "Porównanie metod sync plików używając jednego zapisu %dkB:\n" -#: pg_test_fsync.c:245 +#: pg_test_fsync.c:272 #, c-format -msgid "" -"\n" +msgid "\n" "Compare file sync methods using two %dkB writes:\n" -msgstr "" -"\n" +msgstr "\n" "Porównanie metod sync plików używając dwóch zapisów %dkB:\n" -#: pg_test_fsync.c:246 +#: pg_test_fsync.c:273 #, c-format msgid "(in wal_sync_method preference order, except fdatasync is Linux's default)\n" -msgstr "(w porząsku preferencji wal_sync_method, poza fdatasync domyślną na " -"Linuksie)\n" - -#: pg_test_fsync.c:257 pg_test_fsync.c:360 pg_test_fsync.c:426 -msgid "n/a*\n" -msgstr "nd.*\n" +msgstr "(w porząsku preferencji wal_sync_method, poza fdatasync domyślną na Linuksie)\n" -#: pg_test_fsync.c:269 pg_test_fsync.c:295 pg_test_fsync.c:320 -#: pg_test_fsync.c:343 pg_test_fsync.c:379 pg_test_fsync.c:437 -msgid "seek failed" -msgstr "niepowodzenie pozycjonowania" +#: pg_test_fsync.c:284 pg_test_fsync.c:391 pg_test_fsync.c:458 +msgid "n/a*" +msgstr "" -#: pg_test_fsync.c:275 pg_test_fsync.c:300 pg_test_fsync.c:348 -#: pg_test_fsync.c:385 pg_test_fsync.c:443 -msgid "n/a\n" -msgstr "nd.\n" +#: pg_test_fsync.c:303 pg_test_fsync.c:329 pg_test_fsync.c:379 +#: pg_test_fsync.c:417 pg_test_fsync.c:476 +msgid "n/a" +msgstr "" -#: pg_test_fsync.c:390 +#: pg_test_fsync.c:422 #, c-format -msgid "" -"* This file system and its mount options do not support direct\n" +msgid "* This file system and its mount options do not support direct\n" " I/O, e.g. ext4 in journaled mode.\n" -msgstr "" -"* Ten system plików i jego opcje systemowe mount nie obsługują\n" +msgstr "* Ten system plików i jego opcje systemowe mount nie obsługują\n" " bezpośredniego We/Wy, np. ext4 trybie dziennikowym.\n" -#: pg_test_fsync.c:398 +#: pg_test_fsync.c:430 #, c-format -msgid "" -"\n" +msgid "\n" "Compare open_sync with different write sizes:\n" -msgstr "" -"\n" +msgstr "\n" "Porównanie open_sync z różnymi długościami zapisu:\n" -#: pg_test_fsync.c:399 +#: pg_test_fsync.c:431 #, c-format -msgid "" -"(This is designed to compare the cost of writing 16kB in different write\n" +msgid "(This is designed to compare the cost of writing 16kB in different write\n" "open_sync sizes.)\n" -msgstr "" -"(Zaprojektowano to dla porównanie kosztów zapisu 16kB w różnych \n" +msgstr "(Zaprojektowano to dla porównanie kosztów zapisu 16kB w różnych \n" "długościach zapisu open_sync.)\n" -#: pg_test_fsync.c:402 +#: pg_test_fsync.c:434 msgid " 1 * 16kB open_sync write" msgstr " 1 * 16kB zapis open_sync" -#: pg_test_fsync.c:403 +#: pg_test_fsync.c:435 msgid " 2 * 8kB open_sync writes" msgstr " 2 * 8kB zapis open_sync" -#: pg_test_fsync.c:404 +#: pg_test_fsync.c:436 msgid " 4 * 4kB open_sync writes" msgstr " 4 * 4kB zapis open_sync" -#: pg_test_fsync.c:405 +#: pg_test_fsync.c:437 msgid " 8 * 2kB open_sync writes" msgstr " 8 * 2kB zapis open_sync" -#: pg_test_fsync.c:406 +#: pg_test_fsync.c:438 msgid "16 * 1kB open_sync writes" msgstr "16 * 1kB zapis open_sync" -#: pg_test_fsync.c:459 +#: pg_test_fsync.c:492 #, c-format -msgid "" -"\n" +msgid "\n" "Test if fsync on non-write file descriptor is honored:\n" -msgstr "" -"\n" +msgstr "\n" "Test czy jest honorowany fsync na niezapisywalnym deskryptorze pliku:\n" -#: pg_test_fsync.c:460 +#: pg_test_fsync.c:493 #, c-format -msgid "" -"(If the times are similar, fsync() can sync data written on a different\n" +msgid "(If the times are similar, fsync() can sync data written on a different\n" "descriptor.)\n" -msgstr "" -"(Jeśli czasy są podobne, fsync() może sync dane zapisane na innym\n" +msgstr "(Jeśli czasy są podobne, fsync() może sync dane zapisane na innym\n" "deskryptorze.)\n" -#: pg_test_fsync.c:525 +#: pg_test_fsync.c:558 #, c-format -msgid "" -"\n" +msgid "\n" "Non-sync'ed %dkB writes:\n" -msgstr "" -"\n" +msgstr "\n" "Nie-syncowane zapisy %dkB:\n" -#: pg_test_fsync.c:602 -#, c-format -msgid "%s: %s\n" -msgstr "%s: %s\n" diff --git a/src/bin/pg_test_timing/po/es.po b/src/bin/pg_test_timing/po/es.po index f669aeadc5a..a7d0a8a19c6 100644 --- a/src/bin/pg_test_timing/po/es.po +++ b/src/bin/pg_test_timing/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_test_timing (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:21+0000\n" +"POT-Creation-Date: 2026-02-06 21:32+0000\n" "PO-Revision-Date: 2024-11-09 09:57+0100\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_upgrade/po/es.po b/src/bin/pg_upgrade/po/es.po index 621b771d487..b766d573e42 100644 --- a/src/bin/pg_upgrade/po/es.po +++ b/src/bin/pg_upgrade/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_upgrade (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:21+0000\n" +"POT-Creation-Date: 2026-02-06 21:32+0000\n" "PO-Revision-Date: 2024-08-02 19:36-0400\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/pg_upgrade/po/uk.po b/src/bin/pg_upgrade/po/uk.po index f92b47f644d..d849a51f0a6 100644 --- a/src/bin/pg_upgrade/po/uk.po +++ b/src/bin/pg_upgrade/po/uk.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: postgresql\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-03-27 18:54+0000\n" -"PO-Revision-Date: 2025-04-01 15:40\n" +"POT-Creation-Date: 2025-12-31 03:25+0000\n" +"PO-Revision-Date: 2026-01-02 12:56\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -17,28 +17,28 @@ msgstr "" "X-Crowdin-File: /REL_14_STABLE/pg_upgrade.pot\n" "X-Crowdin-File-ID: 778\n" -#: check.c:74 +#: check.c:75 #, c-format msgid "Performing Consistency Checks on Old Live Server\n" "------------------------------------------------\n" msgstr "Перевірка цілістності на старому працюючому сервері\n" "------------------------------------------------\n" -#: check.c:80 +#: check.c:81 #, c-format msgid "Performing Consistency Checks\n" "-----------------------------\n" msgstr "Проведення перевірок цілістності\n" "-----------------------------\n" -#: check.c:234 +#: check.c:242 #, c-format msgid "\n" "*Clusters are compatible*\n" msgstr "\n" "*Кластери сумісні*\n" -#: check.c:240 +#: check.c:248 #, c-format msgid "\n" "If pg_upgrade fails after this point, you must re-initdb the\n" @@ -47,7 +47,7 @@ msgstr "\n" "Якщо робота pg_upgrade після цієї точки перерветься, вам потрібно буде заново виконати initdb \n" "для нового кластера, перед продовженням.\n" -#: check.c:285 +#: check.c:293 #, c-format msgid "Optimizer statistics are not transferred by pg_upgrade.\n" "Once you start the new server, consider running:\n" @@ -56,14 +56,14 @@ msgstr "Статистика оптимізатора не передаєтьс "Після запуску нового серверу, розгляньте можливість запуску:\n" " %s/vacuumdb %s--all --analyze-in-stages\n\n" -#: check.c:291 +#: check.c:299 #, c-format msgid "Running this script will delete the old cluster's data files:\n" " %s\n" msgstr "При запуску цього скрипту файли даних старого кластера будуть видалені:\n" " %s\n" -#: check.c:296 +#: check.c:304 #, c-format msgid "Could not create a script to delete the old cluster's data files\n" "because user-defined tablespaces or the new cluster's data directory\n" @@ -74,170 +74,170 @@ msgstr "Не вдалося створити скрипт для видален "простори або каталог даних нового кластера. Вміст старого кластера\n" "треба буде видалити вручну.\n" -#: check.c:308 +#: check.c:316 #, c-format msgid "Checking cluster versions" msgstr "Перевірка версій кластерів" -#: check.c:325 +#: check.c:333 #, c-format msgid "This utility can only upgrade from PostgreSQL version 9.0 and later.\n" msgstr "Ця утиліта може виконувати оновлення тільки з версії PostgreSQL 9.0 і новіше.\n" -#: check.c:329 +#: check.c:337 #, c-format msgid "This utility can only upgrade to PostgreSQL version %s.\n" msgstr "Ця утиліта може тільки підвищувати версію PostgreSQL до %s.\n" -#: check.c:338 +#: check.c:346 #, c-format msgid "This utility cannot be used to downgrade to older major PostgreSQL versions.\n" msgstr "Ця утиліта не може не може використовуватись щоб понижувати версію до більш старих основних версій PostgreSQL.\n" -#: check.c:343 +#: check.c:351 #, c-format msgid "Old cluster data and binary directories are from different major versions.\n" msgstr "Каталог даних і двійковий каталог старого кластера з різних основних версій.\n" -#: check.c:346 +#: check.c:354 #, c-format msgid "New cluster data and binary directories are from different major versions.\n" msgstr "Каталог даних і двійковий каталог нового кластера з різних основних версій.\n" -#: check.c:363 +#: check.c:371 #, c-format msgid "When checking a pre-PG 9.1 live old server, you must specify the old server's port number.\n" msgstr "Для перевірки старого працюючого сервера до версії 9.1, вам необхідно вказати номер порта цього сервера.\n" -#: check.c:367 +#: check.c:375 #, c-format msgid "When checking a live server, the old and new port numbers must be different.\n" msgstr "Для перевірки працюючого сервера, старий і новий номер порта повинні бути різними.\n" -#: check.c:382 +#: check.c:390 #, c-format msgid "encodings for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "кодування для бази даних \"%s\" не збігаються: старе \"%s\", нове \"%s\"\n" -#: check.c:387 +#: check.c:395 #, c-format msgid "lc_collate values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "значення lc_collate для бази даних \"%s\" не збігаються: старе \"%s\", нове \"%s\"\n" -#: check.c:390 +#: check.c:398 #, c-format msgid "lc_ctype values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "значення lc_ctype для бази даних \"%s\" не збігаються: старе \"%s\", нове \"%s\"\n" -#: check.c:463 +#: check.c:471 #, c-format msgid "New cluster database \"%s\" is not empty: found relation \"%s.%s\"\n" msgstr "Новий кластер бази даних \"%s\" не порожній: знайдено відношення \"%s.%s\"\n" -#: check.c:520 +#: check.c:528 #, c-format msgid "Checking for new cluster tablespace directories" msgstr "Перевірка каталогів табличних просторів кластера" -#: check.c:531 +#: check.c:539 #, c-format msgid "new cluster tablespace directory already exists: \"%s\"\n" msgstr "каталог нового кластерного табличного простору вже існує: \"%s\"\n" -#: check.c:564 +#: check.c:572 #, c-format msgid "\n" "WARNING: new data directory should not be inside the old data directory, e.g. %s\n" msgstr "\n" "ПОПЕРЕДЖЕННЯ: новий каталог даних не повинен бути всередині старого каталогу даних, наприклад %s\n" -#: check.c:588 +#: check.c:596 #, c-format msgid "\n" "WARNING: user-defined tablespace locations should not be inside the data directory, e.g. %s\n" msgstr "\n" "ПОПЕРЕДЖЕННЯ: користувацькі розташування табличних просторів не повинні бути всередині каталогу даних, наприклад %s\n" -#: check.c:598 +#: check.c:606 #, c-format msgid "Creating script to delete old cluster" msgstr "Створення скрипту для видалення старого кластеру" -#: check.c:601 check.c:865 check.c:963 check.c:1093 check.c:1171 check.c:1467 -#: file.c:338 function.c:240 option.c:497 version.c:54 version.c:204 -#: version.c:376 version.c:511 +#: check.c:609 check.c:873 check.c:971 check.c:1101 check.c:1179 check.c:1258 +#: check.c:1553 file.c:338 function.c:240 option.c:497 version.c:54 +#: version.c:204 version.c:376 version.c:511 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "не вдалося відкрити файл \"%s\": %s\n" -#: check.c:657 +#: check.c:665 #, c-format msgid "could not add execute permission to file \"%s\": %s\n" msgstr "не вдалося додати право виконання для файлу \"%s\": %s\n" -#: check.c:677 +#: check.c:685 #, c-format msgid "Checking database user is the install user" msgstr "Перевірка, чи є користувач бази даних стартовим користувачем" -#: check.c:693 +#: check.c:701 #, c-format msgid "database user \"%s\" is not the install user\n" msgstr "користувач бази даних \"%s\" не є стартовим користувачем\n" -#: check.c:704 +#: check.c:712 #, c-format msgid "could not determine the number of users\n" msgstr "не вдалося визначити кількість користувачів\n" -#: check.c:712 +#: check.c:720 #, c-format msgid "Only the install user can be defined in the new cluster.\n" msgstr "В новому кластері може бути визначеним тільки стартовий користувач.\n" -#: check.c:732 +#: check.c:740 #, c-format msgid "Checking database connection settings" msgstr "Перевірка параметрів підключення до бази даних" -#: check.c:754 +#: check.c:762 #, c-format msgid "template0 must not allow connections, i.e. its pg_database.datallowconn must be false\n" msgstr "template0 не повинна дозволяти підключення, тобто pg_database.datallowconn повинно бути false\n" -#: check.c:764 +#: check.c:772 #, c-format msgid "All non-template0 databases must allow connections, i.e. their pg_database.datallowconn must be true\n" msgstr "Всі бази даних, окрім template0, повинні дозволяти підключення, тобто pg_database.datallowconn повинно бути true\n" -#: check.c:789 +#: check.c:797 #, c-format msgid "Checking for prepared transactions" msgstr "Перевірка підготовлених транзакцій" -#: check.c:798 +#: check.c:806 #, c-format msgid "The source cluster contains prepared transactions\n" msgstr "Початковий кластер містить підготовлені транзакції\n" -#: check.c:800 +#: check.c:808 #, c-format msgid "The target cluster contains prepared transactions\n" msgstr "Цільовий кластер містить підготовлені транзакції\n" -#: check.c:826 +#: check.c:834 #, c-format msgid "Checking for contrib/isn with bigint-passing mismatch" msgstr "Перевірка невідповідності при передаванні bigint в contrib/isn" -#: check.c:887 check.c:988 check.c:1113 check.c:1193 check.c:1250 check.c:1309 -#: check.c:1343 check.c:1372 check.c:1490 function.c:262 version.c:278 -#: version.c:316 version.c:460 +#: check.c:895 check.c:996 check.c:1121 check.c:1201 check.c:1278 check.c:1336 +#: check.c:1395 check.c:1429 check.c:1458 check.c:1576 function.c:262 +#: version.c:278 version.c:316 version.c:460 #, c-format msgid "fatal\n" msgstr "збій\n" -#: check.c:888 +#: check.c:896 #, c-format msgid "Your installation contains \"contrib/isn\" functions which rely on the\n" "bigint data type. Your old and new clusters pass bigint values\n" @@ -249,12 +249,12 @@ msgid "Your installation contains \"contrib/isn\" functions which rely on the\n" msgstr "Ваша інсталяція містить функції \"contrib/isn\", що використовують тип даних bigint. Старі та нові кластери передають значення bigint по-різному, тому цей кластер наразі неможливо оновити. Ви можете вручну вивантажити бази даних зі старого кластеру, що використовує засоби \"contrib/isn\", видалити їх, виконати оновлення, а потім відновити їх. Список проблемних функцій подано у файлі:\n" " %s\n\n" -#: check.c:911 +#: check.c:919 #, c-format msgid "Checking for user-defined postfix operators" msgstr "Перевірка постфіксних операторів визначених користувачем" -#: check.c:989 +#: check.c:997 #, c-format msgid "Your installation contains user-defined postfix operators, which are not\n" "supported anymore. Consider dropping the postfix operators and replacing\n" @@ -266,12 +266,12 @@ msgstr "Ваша інсталяція містить користувацькі "Список користувацьких постфіксних операторів знаходиться у файлі:\n" " %s\n\n" -#: check.c:1013 +#: check.c:1021 #, c-format msgid "Checking for incompatible polymorphic functions" msgstr "Перевірка несумісних поліморфних функцій" -#: check.c:1114 +#: check.c:1122 #, c-format msgid "Your installation contains user-defined objects that refer to internal\n" "polymorphic functions with arguments of type \"anyarray\" or \"anyelement\".\n" @@ -288,12 +288,12 @@ msgstr "У вашій інсталяції містяться користува "Список проблемних об'єктів знаходиться у файлі:\n" " %s\n\n" -#: check.c:1139 +#: check.c:1147 #, c-format msgid "Checking for tables WITH OIDS" msgstr "Перевірка таблиць WITH OIDS" -#: check.c:1194 +#: check.c:1202 #, c-format msgid "Your installation contains tables declared WITH OIDS, which is not\n" "supported anymore. Consider removing the oid column using\n" @@ -305,12 +305,33 @@ msgstr "Ваша інсталяція містить таблиці, створ "Список проблемних таблиць подано у файлі:\n" " %s\n\n" -#: check.c:1222 +#: check.c:1227 +#, c-format +msgid "Checking for not-null constraint inconsistencies" +msgstr "Перевірка невідповідності обмеженням-null" + +#: check.c:1279 +#, c-format +msgid "Your installation contains inconsistent NOT NULL constraints.\n" +"If the parent column(s) are NOT NULL, then the child column must\n" +"also be marked NOT NULL, or the upgrade will fail.\n" +"You can fix this by running\n" +" ALTER TABLE tablename ALTER column SET NOT NULL;\n" +"on each column listed in the file:\n" +" %s\n\n" +msgstr "Ваша інсталяція містить суперечливі обмеження NOT NULL.\n" +"Якщо батьківські стовпці мають значення NOT NULL, то дочірні стовпці також повинні бути позначені як NOT NULL, інакше оновлення не відбудеться.\n" +"Ви можете виправити це, виконавши команду\n" +" ALTER TABLE tablename ALTER column SET NOT NULL;\n" +"для кожного стовпця, зазначеного у файлі:\n" +" %s\n\n" + +#: check.c:1308 #, c-format msgid "Checking for system-defined composite types in user tables" msgstr "Перевірка складених типів визначених системою у таблицях користувача" -#: check.c:1251 +#: check.c:1337 #, 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" @@ -324,12 +345,12 @@ msgstr "Ваша інсталяція містить складені типи "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: check.c:1279 +#: check.c:1365 #, c-format msgid "Checking for reg* data types in user tables" msgstr "Перевірка типів даних reg* в користувацьких таблицях" -#: check.c:1310 +#: check.c:1396 #, c-format msgid "Your installation contains one of the reg* data types in user tables.\n" "These data types reference system OIDs that are not preserved by\n" @@ -343,12 +364,12 @@ msgstr "Ваша інсталяція містить один з типів да "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: check.c:1334 +#: check.c:1420 #, c-format msgid "Checking for removed \"%s\" data type in user tables" msgstr "Перевірка видаленого типу даних \"%s\" в користувацьких таблицях" -#: check.c:1344 +#: check.c:1430 #, c-format msgid "Your installation contains the \"%s\" data type in user tables.\n" "The \"%s\" type has been removed in PostgreSQL version %s,\n" @@ -363,12 +384,12 @@ msgstr "Користувацькі таблиці у вашій інсталяц "оновлення. Список проблемних стовпців є у файлі:\n" " %s\n\n" -#: check.c:1366 +#: check.c:1452 #, c-format msgid "Checking for incompatible \"jsonb\" data type" msgstr "Перевірка несумісного типу даних \"jsonb\"" -#: check.c:1373 +#: check.c:1459 #, c-format msgid "Your installation contains the \"jsonb\" data type in user tables.\n" "The internal format of \"jsonb\" changed during 9.4 beta so this\n" @@ -383,27 +404,27 @@ msgstr "Ваша інсталяція містить тип даних \"jsonb\" "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: check.c:1395 +#: check.c:1481 #, c-format msgid "Checking for roles starting with \"pg_\"" msgstr "Перевірка ролей, які починаються з \"pg_\"" -#: check.c:1405 +#: check.c:1491 #, c-format msgid "The source cluster contains roles starting with \"pg_\"\n" msgstr "Початковий кластер містить ролі, які починаються з \"pg_\"\n" -#: check.c:1407 +#: check.c:1493 #, c-format msgid "The target cluster contains roles starting with \"pg_\"\n" msgstr "Цільовий кластер містить ролі, які починаються з \"pg_\"\n" -#: check.c:1428 +#: check.c:1514 #, c-format msgid "Checking for user-defined encoding conversions" msgstr "Перевірка користувацьких перетворення кодувань" -#: check.c:1491 +#: check.c:1577 #, c-format msgid "Your installation contains user-defined encoding conversions.\n" "The conversion function parameters changed in PostgreSQL version 14\n" @@ -418,17 +439,17 @@ msgstr "Ваша інсталяція містить користувацькі "Список перетворень кодувань знаходиться у файлі:\n" " %s\n\n" -#: check.c:1518 +#: check.c:1604 #, c-format msgid "failed to get the current locale\n" msgstr "не вдалося отримати поточну локаль\n" -#: check.c:1527 +#: check.c:1613 #, c-format msgid "failed to get system locale name for \"%s\"\n" msgstr "не вдалося отримати системне ім'я локалі для \"%s\"\n" -#: check.c:1533 +#: check.c:1619 #, c-format msgid "failed to restore old locale \"%s\"\n" msgstr "не вдалося відновити стару локаль \"%s\"\n" diff --git a/src/bin/pg_verifybackup/po/es.po b/src/bin/pg_verifybackup/po/es.po index fc8b4155df9..6c9054f06f4 100644 --- a/src/bin/pg_verifybackup/po/es.po +++ b/src/bin/pg_verifybackup/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_verifybackup (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:19+0000\n" +"POT-Creation-Date: 2026-02-06 21:30+0000\n" "PO-Revision-Date: 2021-05-24 16:53-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-ayuda \n" diff --git a/src/bin/pg_waldump/po/es.po b/src/bin/pg_waldump/po/es.po index c094a085dc9..84c5636ec4d 100644 --- a/src/bin/pg_waldump/po/es.po +++ b/src/bin/pg_waldump/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_waldump (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:20+0000\n" +"POT-Creation-Date: 2026-02-06 21:31+0000\n" "PO-Revision-Date: 2021-09-16 09:26+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/psql/po/es.po b/src/bin/psql/po/es.po index d2a9352efbc..f02a7e2ceb6 100644 --- a/src/bin/psql/po/es.po +++ b/src/bin/psql/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:20+0000\n" +"POT-Creation-Date: 2026-02-06 21:30+0000\n" "PO-Revision-Date: 2022-01-12 17:40-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/bin/psql/po/ru.po b/src/bin/psql/po/ru.po index 618b03e0a16..6c8f2c07dec 100644 --- a/src/bin/psql/po/ru.po +++ b/src/bin/psql/po/ru.po @@ -4,7 +4,7 @@ # Serguei A. Mokhov , 2001-2005. # Oleg Bartunov , 2004-2005. # Sergey Burladyan , 2012. -# SPDX-FileCopyrightText: 2012-2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2012-2025, 2026 Alexander Lakhin # Maxim Yablokov , 2021. msgid "" msgstr "" diff --git a/src/bin/psql/po/sv.po b/src/bin/psql/po/sv.po index 72bdf620595..09e66447113 100644 --- a/src/bin/psql/po/sv.po +++ b/src/bin/psql/po/sv.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-08-17 12:21+0000\n" -"PO-Revision-Date: 2025-08-17 09:01+0200\n" +"POT-Creation-Date: 2026-01-30 21:53+0000\n" +"PO-Revision-Date: 2026-02-02 23:07+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -2442,7 +2442,7 @@ msgstr "" "psql är den interaktiva PostgreSQL-terminalen.\n" "\n" -#: help.c:74 help.c:359 help.c:437 help.c:480 +#: help.c:74 help.c:359 help.c:437 help.c:483 #, c-format msgid "Usage:\n" msgstr "Användning:\n" @@ -3737,13 +3737,22 @@ msgstr "" #: help.c:444 #, c-format msgid "" +" csv_fieldsep\n" +" field separator for CSV output format (default \"%c\")\n" +msgstr "" +" csv_fieldsep\n" +" fältseparator för utdataformatet CSV (standard \"%c\")\n" + +#: help.c:447 +#, c-format +msgid "" " expanded (or x)\n" " expanded output [on, off, auto]\n" msgstr "" " expanded (eller x)\n" " expanderat utmatningsläge [on, off, auto]\n" -#: help.c:446 +#: help.c:449 #, c-format msgid "" " fieldsep\n" @@ -3752,7 +3761,7 @@ msgstr "" " fieldsep\n" " fältseparator för ej justerad utdata (standard \"%s\")\n" -#: help.c:449 +#: help.c:452 #, c-format msgid "" " fieldsep_zero\n" @@ -3761,7 +3770,7 @@ msgstr "" " fieldsep_zero\n" " sätt fältseparator för ej justerad utdata till noll-byte\n" -#: help.c:451 +#: help.c:454 #, c-format msgid "" " footer\n" @@ -3770,7 +3779,7 @@ msgstr "" " footer\n" " slå på/av visning av tabellfot [on, off]\n" -#: help.c:453 +#: help.c:456 #, c-format msgid "" " format\n" @@ -3779,7 +3788,7 @@ msgstr "" " format\n" " sätt utdataformat [unaligned, aligned, wrapped, html, asciidoc, ...]\n" -#: help.c:455 +#: help.c:458 #, c-format msgid "" " linestyle\n" @@ -3788,7 +3797,7 @@ msgstr "" " linestyle\n" " sätt ramlinjestil [ascii, old-ascii, unicode]\n" -#: help.c:457 +#: help.c:460 #, c-format msgid "" " null\n" @@ -3797,7 +3806,7 @@ msgstr "" " null\n" " sätt sträng som visas istället för null-värden\n" -#: help.c:459 +#: help.c:462 #, c-format msgid "" " numericlocale\n" @@ -3806,7 +3815,7 @@ msgstr "" " numericlocale\n" " slå på visning av lokalspecifika tecken för gruppering av siffror\n" -#: help.c:461 +#: help.c:464 #, c-format msgid "" " pager\n" @@ -3815,7 +3824,7 @@ msgstr "" " pager\n" " styr när en extern pagenerare används [yes, no, always]\n" -#: help.c:463 +#: help.c:466 #, c-format msgid "" " recordsep\n" @@ -3824,7 +3833,7 @@ msgstr "" " recordsep\n" " post (rad) separator för ej justerad utdata\n" -#: help.c:465 +#: help.c:468 #, c-format msgid "" " recordsep_zero\n" @@ -3833,7 +3842,7 @@ msgstr "" " recordsep_zero\n" " sätt postseparator för ej justerad utdata till noll-byte\n" -#: help.c:467 +#: help.c:470 #, c-format msgid "" " tableattr (or T)\n" @@ -3844,7 +3853,7 @@ msgstr "" " ange attribut för tabelltaggen i html-format eller proportionella\n" " kolumnvidder för vänsterjusterade datatypet i latex-longtable-format\n" -#: help.c:470 +#: help.c:473 #, c-format msgid "" " title\n" @@ -3853,7 +3862,7 @@ msgstr "" " title\n" " sätt tabelltitel för efterkommande tabellutskrifter\n" -#: help.c:472 +#: help.c:475 #, c-format msgid "" " tuples_only\n" @@ -3862,7 +3871,7 @@ msgstr "" " tuples_only\n" " om satt, bara tabelldatan visas\n" -#: help.c:474 +#: help.c:477 #, c-format msgid "" " unicode_border_linestyle\n" @@ -3875,7 +3884,7 @@ msgstr "" " unicode_header_linestyle\n" " sätter stilen på Unicode-linjer [single, double]\n" -#: help.c:479 +#: help.c:482 #, c-format msgid "" "\n" @@ -3884,7 +3893,7 @@ msgstr "" "\n" "Omgivningsvariabler:\n" -#: help.c:483 +#: help.c:486 #, c-format msgid "" " NAME=VALUE [NAME=VALUE] psql ...\n" @@ -3895,7 +3904,7 @@ msgstr "" " eller \\setenv NAMN [VÄRDE] inne psql\n" "\n" -#: help.c:485 +#: help.c:488 #, c-format msgid "" " set NAME=VALUE\n" @@ -3908,7 +3917,7 @@ msgstr "" " eller \\setenv NAMN [VÄRDE] inne i psql\n" "\n" -#: help.c:488 +#: help.c:491 #, c-format msgid "" " COLUMNS\n" @@ -3917,7 +3926,7 @@ msgstr "" " COLUMNS\n" " antal kolumner i wrappade format\n" -#: help.c:490 +#: help.c:493 #, c-format msgid "" " PGAPPNAME\n" @@ -3926,7 +3935,7 @@ msgstr "" " PGAPPNAME\n" " samma som anslutningsparametern \"application_name\"\n" -#: help.c:492 +#: help.c:495 #, c-format msgid "" " PGDATABASE\n" @@ -3935,7 +3944,7 @@ msgstr "" " PGDATABASE\n" " samma som anslutningsparametern \"dbname\"\n" -#: help.c:494 +#: help.c:497 #, c-format msgid "" " PGHOST\n" @@ -3944,7 +3953,7 @@ msgstr "" " PGHOST\n" " samma som anslutningsparametern \"host\"\n" -#: help.c:496 +#: help.c:499 #, c-format msgid "" " PGPASSFILE\n" @@ -3953,7 +3962,7 @@ msgstr "" " PGPASSFILE\n" " lösenordsfilnamn\n" -#: help.c:498 +#: help.c:501 #, c-format msgid "" " PGPASSWORD\n" @@ -3962,7 +3971,7 @@ msgstr "" " PGPASSWORD\n" " uppkoppingens lösenord (rekommenderas inte)\n" -#: help.c:500 +#: help.c:503 #, c-format msgid "" " PGPORT\n" @@ -3971,7 +3980,7 @@ msgstr "" " PGPORT\n" " samma som anslutingsparametern \"port\"\n" -#: help.c:502 +#: help.c:505 #, c-format msgid "" " PGUSER\n" @@ -3980,7 +3989,7 @@ msgstr "" " PGUSER\n" " samma som anslutningsparametern \"user\"\n" -#: help.c:504 +#: help.c:507 #, c-format msgid "" " PSQL_EDITOR, EDITOR, VISUAL\n" @@ -3989,7 +3998,7 @@ msgstr "" " PSQL_EDITOR, EDITOR, VISUAL\n" " redigerare som används av kommanona \\e, \\ef och \\ev\n" -#: help.c:506 +#: help.c:509 #, c-format msgid "" " PSQL_EDITOR_LINENUMBER_ARG\n" @@ -3998,7 +4007,7 @@ msgstr "" " PSQL_EDITOR_LINENUMBER_ARG\n" " hur radnummer anges när redigerare startas\n" -#: help.c:508 +#: help.c:511 #, c-format msgid "" " PSQL_HISTORY\n" @@ -4007,7 +4016,7 @@ msgstr "" " PSQL_HISTORY\n" " alternativ plats för kommandohistorikfilen\n" -#: help.c:510 +#: help.c:513 #, c-format msgid "" " PSQL_PAGER, PAGER\n" @@ -4016,7 +4025,7 @@ msgstr "" " PAGER\n" " namnet på den externa pageneraren\n" -#: help.c:512 +#: help.c:515 #, c-format msgid "" " PSQLRC\n" @@ -4025,7 +4034,7 @@ msgstr "" " PSQLRC\n" " alternativ plats för användarens \".psqlrc\"-fil\n" -#: help.c:514 +#: help.c:517 #, c-format msgid "" " SHELL\n" @@ -4034,7 +4043,7 @@ msgstr "" " SHELL\n" " skalet som används av kommandot \\!\n" -#: help.c:516 +#: help.c:519 #, c-format msgid "" " TMPDIR\n" @@ -4043,11 +4052,11 @@ msgstr "" " TMPDIR\n" " katalog för temporärfiler\n" -#: help.c:561 +#: help.c:564 msgid "Available help:\n" msgstr "Tillgänglig hjälp:\n" -#: help.c:656 +#: help.c:659 #, c-format msgid "" "Command: %s\n" @@ -4066,7 +4075,7 @@ msgstr "" "URL: %s\n" "\n" -#: help.c:679 +#: help.c:682 #, c-format msgid "" "No help available for \"%s\".\n" diff --git a/src/bin/psql/po/uk.po b/src/bin/psql/po/uk.po index 0b7a8ed69b0..7ab713806ba 100644 --- a/src/bin/psql/po/uk.po +++ b/src/bin/psql/po/uk.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: postgresql\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-03-27 18:52+0000\n" -"PO-Revision-Date: 2025-04-01 15:40\n" +"POT-Creation-Date: 2025-12-31 03:23+0000\n" +"PO-Revision-Date: 2025-12-31 15:41\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -68,7 +68,7 @@ msgid "%s() failed: %m" msgstr "%s() помилка: %m" #: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 -#: command.c:1317 command.c:3249 command.c:3298 command.c:3415 input.c:227 +#: command.c:1338 command.c:3339 command.c:3388 command.c:3505 input.c:227 #: mainloop.c:81 mainloop.c:402 #, c-format msgid "out of memory" @@ -90,7 +90,7 @@ msgstr "неможливо дублювати нульовий покажчик msgid "could not look up effective user ID %ld: %s" msgstr "не можу знайти користувача з ефективним ID %ld: %s" -#: ../../common/username.c:45 command.c:564 +#: ../../common/username.c:45 command.c:585 msgid "user does not exist" msgstr "користувача не існує" @@ -171,91 +171,96 @@ msgstr "невірний формат виводу (внутрішня поми msgid "skipping recursive expansion of variable \"%s\"" msgstr "пропуск рекурсивного розгортання змінної \"%s\"" -#: command.c:229 +#: command.c:238 +#, c-format +msgid "backslash commands are restricted; only \\unrestrict is allowed" +msgstr "команди зворотнього слешу обмежені; дозволяється лише \\unstrict" + +#: command.c:246 #, c-format msgid "invalid command \\%s" msgstr "Невірна команда \\%s" -#: command.c:231 +#: command.c:248 #, c-format msgid "Try \\? for help." msgstr "Спробуйте \\? для отримання довідки." -#: command.c:249 +#: command.c:266 #, c-format msgid "\\%s: extra argument \"%s\" ignored" msgstr "\\%s: зайвий аргумент \"%s\" проігноровано" -#: command.c:301 +#: command.c:318 #, c-format msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" msgstr "\\%s команду проігноровано; скористайтесь \\endif або Ctrl-C, щоб вийти з поточного блоку \\if" -#: command.c:562 +#: command.c:583 #, c-format msgid "could not get home directory for user ID %ld: %s" msgstr "неможливо отримати домашню директорію для користувача ID %ld: %s" -#: command.c:580 +#: command.c:601 #, c-format msgid "\\%s: could not change directory to \"%s\": %m" msgstr "\\%s: неможливо змінити директорію на \"%s\": %m" -#: command.c:605 +#: command.c:626 #, c-format msgid "You are currently not connected to a database.\n" msgstr "На даний момент ви від'єднанні від бази даних.\n" -#: command.c:615 +#: command.c:636 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n" msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" за аресою \"%s\" на порту \"%s\".\n" -#: command.c:618 +#: command.c:639 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" через сокет в \"%s\" на порту \"%s\".\n" -#: command.c:624 +#: command.c:645 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n" msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" (за аресою \"%s\") на порту \"%s\".\n" -#: command.c:627 +#: command.c:648 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" на порту \"%s\".\n" -#: command.c:1011 command.c:1120 command.c:2605 +#: command.c:1032 command.c:1141 command.c:2695 #, c-format msgid "no query buffer" msgstr "немає буферу запитів" -#: command.c:1044 command.c:5317 +#: command.c:1065 command.c:5407 #, c-format msgid "invalid line number: %s" msgstr "невірний номер рядка: %s" -#: command.c:1111 +#: command.c:1132 #, c-format msgid "The server (version %s) does not support editing function source." msgstr "Сервер (версія %s) не пітдримує редагування вихідного коду функцій." -#: command.c:1114 +#: command.c:1135 #, c-format msgid "The server (version %s) does not support editing view definitions." msgstr "Сервер (версія %s) не підтримує редагування визначення подання." -#: command.c:1198 +#: command.c:1219 msgid "No changes" msgstr "Без змін" -#: command.c:1277 +#: command.c:1298 #, c-format msgid "%s: invalid encoding name or conversion procedure not found" msgstr "%s: невірне ім'я кодування або не знайдено процедуру конверсії" -#: command.c:1313 command.c:2065 command.c:3245 command.c:3437 command.c:5423 +#: command.c:1334 command.c:2086 command.c:3335 command.c:3527 command.c:5513 #: common.c:174 common.c:223 common.c:392 common.c:1248 common.c:1276 #: common.c:1385 common.c:1492 common.c:1530 copy.c:488 copy.c:710 help.c:62 #: large_obj.c:157 large_obj.c:192 large_obj.c:254 startup.c:298 @@ -263,208 +268,218 @@ msgstr "%s: невірне ім'я кодування або не знайден msgid "%s" msgstr "%s" -#: command.c:1320 +#: command.c:1341 msgid "There is no previous error." msgstr "Попередня помилка відсутня." -#: command.c:1433 +#: command.c:1454 #, c-format msgid "\\%s: missing right parenthesis" msgstr "\\%s: відсутня права дужка" -#: command.c:1610 command.c:1915 command.c:1929 command.c:1946 command.c:2116 -#: command.c:2352 command.c:2572 command.c:2612 +#: command.c:1631 command.c:1936 command.c:1950 command.c:1967 command.c:2137 +#: command.c:2291 command.c:2402 command.c:2620 command.c:2662 command.c:2702 #, c-format msgid "\\%s: missing required argument" msgstr "\\%s: не вистачає обов'язкового аргументу" -#: command.c:1741 +#: command.c:1762 #, c-format msgid "\\elif: cannot occur after \\else" msgstr "\\elif: не може йти після \\else" -#: command.c:1746 +#: command.c:1767 #, c-format msgid "\\elif: no matching \\if" msgstr "\\elif: немає відповідного \\if" -#: command.c:1810 +#: command.c:1831 #, c-format msgid "\\else: cannot occur after \\else" msgstr "\\else: не може йти після \\else" -#: command.c:1815 +#: command.c:1836 #, c-format msgid "\\else: no matching \\if" msgstr "\\else: немає відповідного \\if" -#: command.c:1855 +#: command.c:1876 #, c-format msgid "\\endif: no matching \\if" msgstr "\\endif: немає відповідного \\if" -#: command.c:2010 +#: command.c:2031 msgid "Query buffer is empty." msgstr "Буфер запиту порожній." -#: command.c:2047 +#: command.c:2068 #, c-format msgid "Enter new password for user \"%s\": " msgstr "Введіть новий пароль користувача \"%s\": " -#: command.c:2050 +#: command.c:2071 msgid "Enter it again: " msgstr "Введіть знову: " -#: command.c:2054 +#: command.c:2075 #, c-format msgid "Passwords didn't match." msgstr "Паролі не співпадають." -#: command.c:2145 +#: command.c:2166 #, c-format msgid "\\%s: could not read value for variable" msgstr "\\%s: не вдалося прочитати значення змінної" -#: command.c:2248 +#: command.c:2269 msgid "Query buffer reset (cleared)." msgstr "Буфер запитів скинуто (очищено)." -#: command.c:2270 +#: command.c:2320 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Історію записано до файлу \"%s\".\n" -#: command.c:2357 +#: command.c:2407 #, c-format msgid "\\%s: environment variable name must not contain \"=\"" msgstr "\\%s: змінна середовища не повинна містити \"=\"" -#: command.c:2409 +#: command.c:2459 #, c-format msgid "The server (version %s) does not support showing function source." msgstr "Сервер (версія %s) не пітдримує відображнення вихідного коду функцій." -#: command.c:2412 +#: command.c:2462 #, c-format msgid "The server (version %s) does not support showing view definitions." msgstr "Сервер (версія %s) не підтримує відображення визначення подання." -#: command.c:2419 +#: command.c:2469 #, c-format msgid "function name is required" msgstr "необхідне ім'я функції" -#: command.c:2421 +#: command.c:2471 #, c-format msgid "view name is required" msgstr "необхідне ім'я подання" -#: command.c:2544 +#: command.c:2594 msgid "Timing is on." msgstr "Таймер увімкнено." -#: command.c:2546 +#: command.c:2596 msgid "Timing is off." msgstr "Таймер вимкнено." -#: command.c:2631 command.c:2659 command.c:3878 command.c:3881 command.c:3884 -#: command.c:3890 command.c:3892 command.c:3918 command.c:3928 command.c:3940 -#: command.c:3954 command.c:3981 command.c:4039 common.c:70 copy.c:331 +#: command.c:2626 +#, c-format +msgid "\\%s: not currently in restricted mode" +msgstr "\\%s: наразі не обмежено" + +#: command.c:2636 +#, c-format +msgid "\\%s: wrong key" +msgstr "\\%s: неправильний ключ" + +#: command.c:2721 command.c:2749 command.c:3968 command.c:3971 command.c:3974 +#: command.c:3980 command.c:3982 command.c:4008 command.c:4018 command.c:4030 +#: command.c:4044 command.c:4071 command.c:4129 common.c:70 copy.c:331 #: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805 #, c-format msgid "%s: %m" msgstr "%s: %m" -#: command.c:3050 startup.c:237 startup.c:287 +#: command.c:3140 startup.c:237 startup.c:287 msgid "Password: " msgstr "Пароль: " -#: command.c:3055 startup.c:284 +#: command.c:3145 startup.c:284 #, c-format msgid "Password for user %s: " msgstr "Пароль користувача %s:" -#: command.c:3107 +#: command.c:3197 #, c-format msgid "Do not give user, host, or port separately when using a connection string" msgstr "Не надайте користувачеві, хосту або порту окремо під час використання рядка підключення" -#: command.c:3142 +#: command.c:3232 #, c-format msgid "No database connection exists to re-use parameters from" msgstr "Не існує підключення до бази даних для повторного використання параметрів" -#: command.c:3443 +#: command.c:3533 #, c-format msgid "Previous connection kept" msgstr "Попереднє підключення триває" -#: command.c:3449 +#: command.c:3539 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:3505 +#: command.c:3595 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n" msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" за адресою \"%s\" на порту \"%s\".\n" -#: command.c:3508 +#: command.c:3598 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\" через сокет в \"%s\" на порту \"%s\".\n" -#: command.c:3514 +#: command.c:3604 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n" msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" (за адресою \"%s\") на порту \"%s\".\n" -#: command.c:3517 +#: command.c:3607 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" на порту \"%s\".\n" -#: command.c:3522 +#: command.c:3612 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\".\n" -#: command.c:3562 +#: command.c:3652 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, сервер %s)\n" -#: command.c:3570 +#: command.c:3660 #, c-format msgid "WARNING: %s major version %s, server major version %s.\n" " Some psql features might not work.\n" msgstr "УВАГА: мажорна версія %s %s, мажорна версія сервера %s.\n" " Деякі функції psql можуть не працювати.\n" -#: command.c:3609 +#: command.c:3699 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "З'єднання SSL (протокол: %s, шифр: %s, біти: %s, компресія: %s)\n" -#: command.c:3610 command.c:3611 command.c:3612 +#: command.c:3700 command.c:3701 command.c:3702 msgid "unknown" msgstr "невідомо" -#: command.c:3613 help.c:45 +#: command.c:3703 help.c:45 msgid "off" msgstr "вимк" -#: command.c:3613 help.c:45 +#: command.c:3703 help.c:45 msgid "on" msgstr "увімк" -#: command.c:3627 +#: command.c:3717 #, c-format msgid "GSSAPI-encrypted connection\n" msgstr "З'єднання зашифровано GSSAPI\n" -#: command.c:3647 +#: command.c:3737 #, c-format msgid "WARNING: Console code page (%u) differs from Windows code page (%u)\n" " 8-bit characters might not work correctly. See psql reference\n" @@ -473,172 +488,172 @@ msgstr "УВАГА: Кодова сторінка консолі (%u) відрі " 8-бітові символи можуть працювати неправильно. Детальніше у розділі \n" " \"Нотатки для користувачів Windows\" у документації psql.\n" -#: command.c:3754 +#: command.c:3844 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" msgstr "змінна середовища PSQL_EDITOR_LINENUMBER_ARG має бути встановлена, щоб вказувати номер рядка" -#: command.c:3783 +#: command.c:3873 #, c-format msgid "could not start editor \"%s\"" msgstr "неможливо запустити редактор \"%s\"" -#: command.c:3785 +#: command.c:3875 #, c-format msgid "could not start /bin/sh" msgstr "неможливо запустити /bin/sh" -#: command.c:3835 +#: command.c:3925 #, c-format msgid "could not locate temporary directory: %s" msgstr "неможливо знайти тимчасову директорію: %s" -#: command.c:3862 +#: command.c:3952 #, c-format msgid "could not open temporary file \"%s\": %m" msgstr "неможливо відкрити тимчасовий файл \"%s\": %m" -#: command.c:4198 +#: command.c:4288 #, c-format msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" msgstr "\\pset: неоднозначна абревіатура \"%s\" відповідає обом \"%s\" і \"%s" -#: command.c:4218 +#: command.c:4308 #, c-format msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped" msgstr "\\pset: дозволені формати: aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped" -#: command.c:4237 +#: command.c:4327 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" msgstr "\\pset: дозволені стилі ліній: ascii, old-ascii, unicode" -#: command.c:4252 +#: command.c:4342 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double" msgstr "\\pset: дозволені стилі ліній рамок Unicode: single, double" -#: command.c:4267 +#: command.c:4357 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double" msgstr "\\pset: дозволені стилі ліній стовпців для Unicode: single, double" -#: command.c:4282 +#: command.c:4372 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double" msgstr "\\pset: дозволені стилі ліній заголовків для Unicode: single, double" -#: command.c:4325 +#: command.c:4415 #, c-format msgid "\\pset: csv_fieldsep must be a single one-byte character" msgstr "\\pset: csv_fieldsep повинен бути однобайтовим символом" -#: command.c:4330 +#: command.c:4420 #, c-format msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return" msgstr "\\pset: csv_fieldsep не може бути подвійною лапкою, новим рядком або поверненням каретки" -#: command.c:4467 command.c:4655 +#: command.c:4557 command.c:4745 #, c-format msgid "\\pset: unknown option: %s" msgstr "\\pset: невідомий параметр: %s" -#: command.c:4487 +#: command.c:4577 #, c-format msgid "Border style is %d.\n" msgstr "Стиль рамки %d.\n" -#: command.c:4493 +#: command.c:4583 #, c-format msgid "Target width is unset.\n" msgstr "Цільова ширина не встановлена.\n" -#: command.c:4495 +#: command.c:4585 #, c-format msgid "Target width is %d.\n" msgstr "Цільова ширина %d.\n" -#: command.c:4502 +#: command.c:4592 #, c-format msgid "Expanded display is on.\n" msgstr "Розширене відображення увімкнуто.\n" -#: command.c:4504 +#: command.c:4594 #, c-format msgid "Expanded display is used automatically.\n" msgstr "Розширене відображення використовується автоматично.\n" -#: command.c:4506 +#: command.c:4596 #, c-format msgid "Expanded display is off.\n" msgstr "Розширене відображення вимкнуто.\n" -#: command.c:4512 +#: command.c:4602 #, c-format msgid "Field separator for CSV is \"%s\".\n" msgstr "Розділювач полів CSV: \"%s\".\n" -#: command.c:4520 command.c:4528 +#: command.c:4610 command.c:4618 #, c-format msgid "Field separator is zero byte.\n" msgstr "Розділювач полів - нульовий байт.\n" -#: command.c:4522 +#: command.c:4612 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Розділювач полів \"%s\".\n" -#: command.c:4535 +#: command.c:4625 #, c-format msgid "Default footer is on.\n" msgstr "Нинжній колонтитул увімкнуто за замовчуванням.\n" -#: command.c:4537 +#: command.c:4627 #, c-format msgid "Default footer is off.\n" msgstr "Нинжній колонтитул вимкнуто за замовчуванням.\n" -#: command.c:4543 +#: command.c:4633 #, c-format msgid "Output format is %s.\n" msgstr "Формат виводу %s.\n" -#: command.c:4549 +#: command.c:4639 #, c-format msgid "Line style is %s.\n" msgstr "Стиль лінії %s.\n" -#: command.c:4556 +#: command.c:4646 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null відображається як \"%s\".\n" -#: command.c:4564 +#: command.c:4654 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "Локалізоване виведення чисел ввімкнено.\n" -#: command.c:4566 +#: command.c:4656 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "Локалізоване виведення чисел вимкнено.\n" -#: command.c:4573 +#: command.c:4663 #, c-format msgid "Pager is used for long output.\n" msgstr "Пейджер використовується для виведення довгого тексту.\n" -#: command.c:4575 +#: command.c:4665 #, c-format msgid "Pager is always used.\n" msgstr "Завжди використовується пейджер.\n" -#: command.c:4577 +#: command.c:4667 #, c-format msgid "Pager usage is off.\n" msgstr "Пейджер не використовується.\n" -#: command.c:4583 +#: command.c:4673 #, 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" @@ -647,87 +662,87 @@ msgstr[1] "Пейджер не буде використовуватися дл msgstr[2] "Пейджер не буде використовуватися для менш ніж %d рядків.\n" msgstr[3] "Пейджер не буде використовуватися для менш ніж %d рядка.\n" -#: command.c:4593 command.c:4603 +#: command.c:4683 command.c:4693 #, c-format msgid "Record separator is zero byte.\n" msgstr "Розділювач записів - нульовий байт.\n" -#: command.c:4595 +#: command.c:4685 #, c-format msgid "Record separator is .\n" msgstr "Розділювач записів: .\n" -#: command.c:4597 +#: command.c:4687 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Розділювач записів: \"%s\".\n" -#: command.c:4610 +#: command.c:4700 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Табличні атрибути \"%s\".\n" -#: command.c:4613 +#: command.c:4703 #, c-format msgid "Table attributes unset.\n" msgstr "Атрибути таблиць не задані.\n" -#: command.c:4620 +#: command.c:4710 #, c-format msgid "Title is \"%s\".\n" msgstr "Заголовок: \"%s\".\n" -#: command.c:4622 +#: command.c:4712 #, c-format msgid "Title is unset.\n" msgstr "Заголовок не встановлено.\n" -#: command.c:4629 +#: command.c:4719 #, c-format msgid "Tuples only is on.\n" msgstr "Увімкнуто тільки кортежі.\n" -#: command.c:4631 +#: command.c:4721 #, c-format msgid "Tuples only is off.\n" msgstr "Вимкнуто тільки кортежі.\n" -#: command.c:4637 +#: command.c:4727 #, c-format msgid "Unicode border line style is \"%s\".\n" msgstr "Стиль ліній рамки для Unicode: \"%s\".\n" -#: command.c:4643 +#: command.c:4733 #, c-format msgid "Unicode column line style is \"%s\".\n" msgstr "Стиль ліній стовпців для Unicode: \"%s\".\n" -#: command.c:4649 +#: command.c:4739 #, c-format msgid "Unicode header line style is \"%s\".\n" msgstr "Стиль ліній заголовків для Unicode: \"%s\".\n" -#: command.c:4882 +#: command.c:4972 #, c-format msgid "\\!: failed" msgstr "\\!: помилка" -#: command.c:4907 common.c:652 +#: command.c:4997 common.c:652 #, c-format msgid "\\watch cannot be used with an empty query" msgstr "\\watch не може бути використано із пустим запитом" -#: command.c:4948 +#: command.c:5038 #, c-format msgid "%s\t%s (every %gs)\n" msgstr "%s\t%s (кожні %g сек)\n" -#: command.c:4951 +#: command.c:5041 #, c-format msgid "%s (every %gs)\n" msgstr "%s (кожні %g сек)\n" -#: command.c:5013 command.c:5020 common.c:552 common.c:559 common.c:1231 +#: command.c:5103 command.c:5110 common.c:552 common.c:559 common.c:1231 #, c-format msgid "********* QUERY **********\n" "%s\n" @@ -736,12 +751,12 @@ msgstr "********* ЗАПИТ **********\n" "%s\n" "**************************\n\n" -#: command.c:5212 +#: command.c:5302 #, c-format msgid "\"%s.%s\" is not a view" msgstr "\"%s.%s\" не є поданням" -#: command.c:5228 +#: command.c:5318 #, c-format msgid "could not parse reloptions array" msgstr "неможливо розібрати масив reloptions" @@ -2407,7 +2422,7 @@ msgstr "Список функцій підтримки сімейств опер msgid "psql is the PostgreSQL interactive terminal.\n\n" msgstr "psql - це інтерактивний термінал PostgreSQL.\n\n" -#: help.c:74 help.c:355 help.c:433 help.c:476 +#: help.c:74 help.c:359 help.c:437 help.c:483 #, c-format msgid "Usage:\n" msgstr "Використання:\n" @@ -2721,424 +2736,438 @@ msgstr " \\q вийти з psql\n" #: help.c:182 #, c-format +msgid " \\restrict RESTRICT_KEY\n" +" enter restricted mode with provided key\n" +msgstr " \\restrict RESTRICT_KEY\n" +" увійти в обмежений режим з наданим ключем\n" + +#: help.c:184 +#, c-format +msgid " \\unrestrict RESTRICT_KEY\n" +" exit restricted mode if key matches\n" +msgstr " \\unrestrict RESTRICT_KEY\n" +" вийти з обмеженого режиму, якщо ключ збігається\n" + +#: help.c:186 +#, c-format msgid " \\watch [SEC] execute query every SEC seconds\n" msgstr " \\watch [SEC] виконувати запит кожні SEC секунд\n" -#: help.c:185 +#: help.c:189 #, c-format msgid "Help\n" msgstr "Довідка\n" -#: help.c:187 +#: help.c:191 #, c-format msgid " \\? [commands] show help on backslash commands\n" msgstr " \\? [commands] показати довідку по командах з \\\n" -#: help.c:188 +#: help.c:192 #, c-format msgid " \\? options show help on psql command-line options\n" msgstr " \\? options показати довідку по параметрах командного рядку psql\n" -#: help.c:189 +#: help.c:193 #, c-format msgid " \\? variables show help on special variables\n" msgstr " \\? variables показати довідку по спеціальних змінних\n" -#: help.c:190 +#: help.c:194 #, c-format msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" msgstr " \\h [NAME] довідка з синтаксису команд SQL, * для всіх команд\n" -#: help.c:193 +#: help.c:197 #, c-format msgid "Query Buffer\n" msgstr "Буфер запитів\n" -#: help.c:194 +#: help.c:198 #, c-format msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" msgstr " \\e [FILE] [LINE] редагувати буфер запитів (або файл) зовнішнім редактором\n" -#: help.c:195 +#: help.c:199 #, c-format msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr " \\ef [FUNCNAME [LINE]] редагувати визначення функції зовнішнім редактором\n" -#: help.c:196 +#: help.c:200 #, c-format msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" msgstr " \\ev [VIEWNAME [LINE]] редагувати визначення подання зовнішнім редактором\n" -#: help.c:197 +#: help.c:201 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p показати вміст буфера запитів\n" -#: help.c:198 +#: help.c:202 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r скинути (очистити) буфер запитів\n" -#: help.c:200 +#: help.c:204 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [FILE] відобразити історію або зберегти її до файлу\n" -#: help.c:202 +#: help.c:206 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w FILE писати буфер запитів до файлу\n" -#: help.c:205 +#: help.c:209 #, c-format msgid "Input/Output\n" msgstr "Ввід/Вивід\n" -#: help.c:206 +#: help.c:210 #, c-format msgid " \\copy ... perform SQL COPY with data stream to the client host\n" msgstr " \\copy ... виконати команду SQL COPY з потоком даних на клієнтський хост\n" -#: help.c:207 +#: help.c:211 #, c-format msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" msgstr " \\echo [-n] [STRING] записати рядок до стандартного виводу (-n для пропуску нового рядка)\n" -#: help.c:208 +#: help.c:212 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i FILE виконати команди з файлу\n" -#: help.c:209 +#: help.c:213 #, c-format msgid " \\ir FILE as \\i, but relative to location of current script\n" msgstr " \\ir ФАЙЛ те саме, що \\i, але відносно розташування поточного сценарію\n" -#: help.c:210 +#: help.c:214 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr " \\o [FILE] надсилати всі результати запитів до файлу або до каналу |\n" -#: help.c:211 +#: help.c:215 #, c-format msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" msgstr " \\qecho [-n] [STRING] записати рядок до вихідного потоку \\o (-n для пропуску нового рядка)\n" -#: help.c:212 +#: help.c:216 #, c-format msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" msgstr " \\warn [-n] [STRING] записати рядок до стандартної помилки (-n для пропуску нового рядка)\n" -#: help.c:215 +#: help.c:219 #, c-format msgid "Conditional\n" msgstr "Умовний\n" -#: help.c:216 +#: help.c:220 #, c-format msgid " \\if EXPR begin conditional block\n" msgstr " \\if EXPR початок умовного блоку\n" -#: help.c:217 +#: help.c:221 #, c-format msgid " \\elif EXPR alternative within current conditional block\n" msgstr " \\elif EXPR альтернатива в рамках поточного блоку\n" -#: help.c:218 +#: help.c:222 #, c-format msgid " \\else final alternative within current conditional block\n" msgstr " \\else остаточна альтернатива в рамках поточного умовного блоку\n" -#: help.c:219 +#: help.c:223 #, c-format msgid " \\endif end conditional block\n" msgstr " \\endif кінець умовного блоку\n" -#: help.c:222 +#: help.c:226 #, c-format msgid "Informational\n" msgstr "Інформаційний\n" -#: help.c:223 +#: help.c:227 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (параметри: S = показати системні об'єкти, + = додаткові деталі)\n" -#: help.c:224 +#: help.c:228 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] вивести таблиці, подання і послідовності\n" -#: help.c:225 +#: help.c:229 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr " \\d[S+] NAME описати таблицю, подання, послідовність або індекс\n" -#: help.c:226 +#: help.c:230 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [PATTERN] вивести агрегати\n" -#: help.c:227 +#: help.c:231 #, c-format msgid " \\dA[+] [PATTERN] list access methods\n" msgstr " \\dA[+] [PATTERN] вивести методи доступу\n" -#: help.c:228 +#: help.c:232 #, c-format msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] список класів операторів\n" -#: help.c:229 +#: help.c:233 #, c-format msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] список сімейств операторів\n" -#: help.c:230 +#: help.c:234 #, c-format msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] список операторів сімейств операторів\n" -#: help.c:231 +#: help.c:235 #, c-format msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] список функцій підтримки сімейств операторів\n" -#: help.c:232 +#: help.c:236 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [PATTERN] вивести табличні простори\n" -#: help.c:233 +#: help.c:237 #, c-format msgid " \\dc[S+] [PATTERN] list conversions\n" msgstr " \\dc[S+] [PATTERN] вивести перетворення\n" -#: help.c:234 +#: help.c:238 #, c-format msgid " \\dC[+] [PATTERN] list casts\n" msgstr " \\dC[+] [PATTERN] вивести приведення типів\n" -#: help.c:235 +#: help.c:239 #, c-format msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" msgstr " \\dd[S] [PATTERN] показати опис об'єкта, що не відображається в іншому місці\n" -#: help.c:236 +#: help.c:240 #, c-format msgid " \\dD[S+] [PATTERN] list domains\n" msgstr " \\dD[S+] [PATTERN] вивести домени\n" -#: help.c:237 +#: help.c:241 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [PATTERN] вивести привілеї за замовчуванням\n" -#: help.c:238 +#: help.c:242 #, c-format msgid " \\dE[S+] [PATTERN] list foreign tables\n" msgstr " \\dE[S+] [PATTERN] вивести зовнішні таблиці\n" -#: help.c:239 +#: help.c:243 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [PATTERN] вивести зовнішні сервери\n" -#: help.c:240 +#: help.c:244 #, c-format msgid " \\det[+] [PATTERN] list foreign tables\n" msgstr " \\dE[S+] [PATTERN] вивести зовнішні таблиці\n" -#: help.c:241 +#: help.c:245 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [PATTERN] вивести користувацькі зіставлення\n" -#: help.c:242 +#: help.c:246 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [PATTERN] список джерел сторонніх даних\n" -#: help.c:243 +#: help.c:247 #, c-format msgid " \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" " list [only agg/normal/procedure/trigger/window] functions\n" msgstr " \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" " список [лише агрегатних/нормальних/процедурних/тригерних/віконних] функцій\n" -#: help.c:245 +#: help.c:249 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [PATTERN] вивести конфігурації текстового пошуку\n" -#: help.c:246 +#: help.c:250 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [PATTERN] вивести словники текстового пошуку\n" -#: help.c:247 +#: help.c:251 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [PATTERN] вивести парсери текстового пошуку\n" -#: help.c:248 +#: help.c:252 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [PATTERN] вивести шаблони текстового пошуку\n" -#: help.c:249 +#: help.c:253 #, c-format msgid " \\dg[S+] [PATTERN] list roles\n" msgstr " \\dg[S+] [PATTERN] вивести ролі\n" -#: help.c:250 +#: help.c:254 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [PATTERN] вивести індекси\n" -#: help.c:251 +#: help.c:255 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl вивести великі об'єкти, те саме, що \\lo_list\n" -#: help.c:252 +#: help.c:256 #, c-format msgid " \\dL[S+] [PATTERN] list procedural languages\n" msgstr " \\dL[S+] [PATTERN] вивести процедурні мови\n" -#: help.c:253 +#: help.c:257 #, c-format msgid " \\dm[S+] [PATTERN] list materialized views\n" msgstr " \\dm[S+] [PATTERN] вивести матеріалізовані подання\n" -#: help.c:254 +#: help.c:258 #, c-format msgid " \\dn[S+] [PATTERN] list schemas\n" msgstr " \\dn[S+] [PATTERN] вивести схеми\n" -#: help.c:255 +#: help.c:259 #, c-format msgid " \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" " list operators\n" msgstr " \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" " список операторів\n" -#: help.c:257 +#: help.c:261 #, c-format msgid " \\dO[S+] [PATTERN] list collations\n" msgstr " \\dO[S+] [PATTERN] вивести правила сортування\n" -#: help.c:258 +#: help.c:262 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr " \\dp [PATTERN] вивести привілеї доступу до таблиць, подань або послідновностей \n" -#: help.c:259 +#: help.c:263 #, c-format msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" msgstr " \\dP[itn+] [PATTERN] вивести [тільки індекс/таблицю] секційні відношення [n=вкладені]\n" -#: help.c:260 +#: help.c:264 #, c-format msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" msgstr " \\drds [ROLEPTRN [DBPTRN]] вивести налаштування ролей побазово\n" -#: help.c:261 +#: help.c:265 #, c-format msgid " \\dRp[+] [PATTERN] list replication publications\n" msgstr " \\dRp[+] [PATTERN] вивести реплікаційні публікації\n" -#: help.c:262 +#: help.c:266 #, c-format msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" msgstr " \\dRs[+] [PATTERN] вивести реплікаційні підписки\n" -#: help.c:263 +#: help.c:267 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [PATTERN] вивести послідовності\n" -#: help.c:264 +#: help.c:268 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [PATTERN] вивести таблиці\n" -#: help.c:265 +#: help.c:269 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [PATTERN] вивести типи даних\n" -#: help.c:266 +#: help.c:270 #, c-format msgid " \\du[S+] [PATTERN] list roles\n" msgstr " \\du[S+] [PATTERN] вивести ролі\n" -#: help.c:267 +#: help.c:271 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [PATTERN] вивести подання\n" -#: help.c:268 +#: help.c:272 #, c-format msgid " \\dx[+] [PATTERN] list extensions\n" msgstr " \\dx[+] [PATTERN] вивести розширення\n" -#: help.c:269 +#: help.c:273 #, c-format msgid " \\dX [PATTERN] list extended statistics\n" msgstr " \\dX [PATTERN] список розширеної статистики\n" -#: help.c:270 +#: help.c:274 #, c-format msgid " \\dy[+] [PATTERN] list event triggers\n" msgstr " \\dy[+] [PATTERN] вивести тригери подій\n" -#: help.c:271 +#: help.c:275 #, c-format msgid " \\l[+] [PATTERN] list databases\n" msgstr " \\l[+] [PATTERN] вивести бази даних\n" -#: help.c:272 +#: help.c:276 #, c-format msgid " \\sf[+] FUNCNAME show a function's definition\n" msgstr " \\sf[+] FUNCNAME відобразити визначення функції\n" -#: help.c:273 +#: help.c:277 #, c-format msgid " \\sv[+] VIEWNAME show a view's definition\n" msgstr " \\sv[+] VIEWNAME відобразити визначення подання\n" -#: help.c:274 +#: help.c:278 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [PATTERN] те саме, що \\dp\n" -#: help.c:277 +#: help.c:281 #, c-format msgid "Formatting\n" msgstr "Форматування\n" -#: help.c:278 +#: help.c:282 #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr " \\a перемикання між режимами виводу: unaligned, aligned\n" -#: help.c:279 +#: help.c:283 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr " \\C [STRING] встановити заголовок таблиці або прибрати, якщо не задано\n" -#: help.c:280 +#: help.c:284 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr " \\f [STRING] показати або встановити розділювач полів для не вирівняного виводу запиту\n" -#: help.c:281 +#: help.c:285 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H переключити режим виводу HTML (поточний: %s)\n" -#: help.c:283 +#: help.c:287 #, c-format msgid " \\pset [NAME [VALUE]] set table output option\n" " (border|columns|csv_fieldsep|expanded|fieldsep|\n" @@ -3155,104 +3184,104 @@ msgstr " \\pset [NAME [VALUE]] встановити параметр виво " unicode_border_linestyle|unicode_column_linestyle|\n" " unicode_header_linestyle)\n" -#: help.c:290 +#: help.c:294 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] показувати лише рядки (поточно %s)\n" -#: help.c:292 +#: help.c:296 #, c-format msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" msgstr " \\T [STRING] встановити атрибути для HTML
або прибрати, якщо не задані\n" -#: help.c:293 +#: help.c:297 #, c-format msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" msgstr " \\x [on|off|auto] переключити розширений вивід (поточний: %s)\n" -#: help.c:297 +#: help.c:301 #, c-format msgid "Connection\n" msgstr "Підключення\n" -#: help.c:299 +#: help.c:303 #, c-format msgid " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" " connect to new database (currently \"%s\")\n" msgstr " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo} під'єднатися до нової бази даних (поточно \"%s\")\n" -#: help.c:303 +#: help.c:307 #, c-format msgid " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" " connect to new database (currently no connection)\n" msgstr " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo} під'єднатися до нової бази даних (зараз з'єднання відсутнє)\n" -#: help.c:305 +#: help.c:309 #, c-format msgid " \\conninfo display information about current connection\n" msgstr " \\conninfo показати інформацію про поточне з'єднання\n" -#: help.c:306 +#: help.c:310 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [ENCODING] показати або встановити кодування клієнта\n" -#: help.c:307 +#: help.c:311 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [USERNAME] безпечно змінити пароль користувача \n" -#: help.c:310 +#: help.c:314 #, c-format msgid "Operating System\n" msgstr "Операційна система\n" -#: help.c:311 +#: help.c:315 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIR] змінити поточний робочий каталог\n" -#: help.c:312 +#: help.c:316 #, c-format msgid " \\setenv NAME [VALUE] set or unset environment variable\n" msgstr " \\setenv NAME [VALUE] встановити або скинути змінну середовища\n" -#: help.c:313 +#: help.c:317 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr " \\timing [on|off] переключити таймер команд (поточний: %s)\n" -#: help.c:315 +#: help.c:319 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" msgstr " \\! [COMMAND] виконати команду в оболонці або запустити інтерактивну оболонку\n" -#: help.c:318 +#: help.c:322 #, c-format msgid "Variables\n" msgstr "Змінні\n" -#: help.c:319 +#: help.c:323 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [TEXT] NAME запитати користувача значення внутрішньої змінної\n" -#: help.c:320 +#: help.c:324 #, c-format msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" msgstr " \\set [NAME [VALUE]] встановити внутрішню змінну або вивести всі, якщо не задані параметри\n" -#: help.c:321 +#: help.c:325 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NAME скинути (видалити) значення внутрішньої змінної\n" -#: help.c:324 +#: help.c:328 #, c-format msgid "Large Objects\n" msgstr "Великі об'єкти\n" -#: help.c:325 +#: help.c:329 #, c-format msgid " \\lo_export LOBOID FILE\n" " \\lo_import FILE [COMMENT]\n" @@ -3263,31 +3292,31 @@ msgstr " \\lo_export LOBOID FILE\n" " \\lo_list\n" " \\lo_unlink LOBOID операції з великими об'єктами\n" -#: help.c:352 +#: help.c:356 #, c-format msgid "List of specially treated variables\n\n" msgstr "Список спеціальних змінних\n\n" -#: help.c:354 +#: help.c:358 #, c-format msgid "psql variables:\n" msgstr "змінні psql:\n" -#: help.c:356 +#: help.c:360 #, c-format msgid " psql --set=NAME=VALUE\n" " or \\set NAME VALUE inside psql\n\n" msgstr " psql --set=ІМ'Я=ЗНАЧЕННЯ\n" " або \\set ІМ'Я ЗНАЧЕННЯ усередині psql\n\n" -#: help.c:358 +#: help.c:362 #, c-format msgid " AUTOCOMMIT\n" " if set, successful SQL commands are automatically committed\n" msgstr " AUTOCOMMIT\n" " якщо встановлений, успішні SQL-команди підтверджуються автоматично\n" -#: help.c:360 +#: help.c:364 #, c-format msgid " COMP_KEYWORD_CASE\n" " determines the case used to complete SQL key words\n" @@ -3296,20 +3325,20 @@ msgstr " COMP_KEYWORD_CASE\n" " визначає регістр для автодоповнення ключових слів SQL\n" " [lower, upper, preserve-lower, preserve-upper]\n" -#: help.c:363 +#: help.c:367 #, c-format msgid " DBNAME\n" " the currently connected database name\n" msgstr " DBNAME назва під'єднаної бази даних\n" -#: help.c:365 +#: help.c:369 #, c-format msgid " ECHO\n" " controls what input is written to standard output\n" " [all, errors, none, queries]\n" msgstr " ECHO контролює ввід, що виводиться на стандартний вивід [all, errors, none, queries]\n" -#: help.c:368 +#: help.c:372 #, c-format msgid " ECHO_HIDDEN\n" " if set, display internal queries executed by backslash commands;\n" @@ -3318,78 +3347,78 @@ msgstr " ECHO_HIDDEN\n" " якщо ввімкнено, виводить внутрішні запити, виконані за допомогою \"\\\";\n" " якщо встановлено значення \"noexec\", тільки виводяться, але не виконуються\n" -#: help.c:371 +#: help.c:375 #, c-format msgid " ENCODING\n" " current client character set encoding\n" msgstr " ENCODING\n" " поточне кодування набору символів клієнта\n" -#: help.c:373 +#: help.c:377 #, c-format msgid " ERROR\n" " true if last query failed, else false\n" msgstr " ERROR\n" " істина, якщо в останньому запиті є помилка, в іншому разі - хибність\n" -#: help.c:375 +#: help.c:379 #, c-format msgid " FETCH_COUNT\n" " the number of result rows to fetch and display at a time (0 = unlimited)\n" msgstr " FETCH_COUNT\n" " число рядків з результатами для передачі та відображення за один раз (0 = необмежено)\n" -#: help.c:377 +#: help.c:381 #, c-format msgid " HIDE_TABLEAM\n" " if set, table access methods are not displayed\n" msgstr " HIDE_TABLEAM\n" " якщо вказано, методи доступу до таблиць не відображаються\n" -#: help.c:379 +#: help.c:383 #, c-format msgid " HIDE_TOAST_COMPRESSION\n" " if set, compression methods are not displayed\n" msgstr " HIDE_TOAST_COMPRESSION\n" " якщо встановлено, методи стискання не відображаються\n" -#: help.c:381 +#: help.c:385 #, c-format msgid " HISTCONTROL\n" " controls command history [ignorespace, ignoredups, ignoreboth]\n" msgstr " HISTCONTROL контролює історію команд [ignorespace, ignoredups, ignoreboth]\n" -#: help.c:383 +#: help.c:387 #, c-format msgid " HISTFILE\n" " file name used to store the command history\n" msgstr " HISTFILE ім'я файлу для зберігання історії команд\n" -#: help.c:385 +#: help.c:389 #, c-format msgid " HISTSIZE\n" " maximum number of commands to store in the command history\n" msgstr " HISTSIZE максимальна кількість команд для зберігання в історії команд\n" -#: help.c:387 +#: help.c:391 #, c-format msgid " HOST\n" " the currently connected database server host\n" msgstr " HOST поточний підключений хост сервера бази даних\n" -#: help.c:389 +#: help.c:393 #, c-format msgid " IGNOREEOF\n" " number of EOFs needed to terminate an interactive session\n" msgstr " IGNOREEOF кількість EOF для завершення інтерактивної сесії\n" -#: help.c:391 +#: help.c:395 #, c-format msgid " LASTOID\n" " value of the last affected OID\n" msgstr " LASTOID значення останнього залученого OID\n" -#: help.c:393 +#: help.c:397 #, c-format msgid " LAST_ERROR_MESSAGE\n" " LAST_ERROR_SQLSTATE\n" @@ -3398,63 +3427,63 @@ msgstr " LAST_ERROR_MESSAGE\n" " LAST_ERROR_SQLSTATE\n" " повідомлення та код SQLSTATE останньої помилки, або пустий рядок та \"00000\", якщо помилки не було\n" -#: help.c:396 +#: help.c:400 #, c-format msgid " ON_ERROR_ROLLBACK\n" " if set, an error doesn't stop a transaction (uses implicit savepoints)\n" msgstr " ON_ERROR_ROLLBACK\n" " якщо встановлено, транзакція не припиняється у разі помилки (використовуються неявні точки збереження)\n" -#: help.c:398 +#: help.c:402 #, c-format msgid " ON_ERROR_STOP\n" " stop batch execution after error\n" msgstr " ON_ERROR_STOP\n" " зупиняти виконання пакету команд після помилки\n" -#: help.c:400 +#: help.c:404 #, c-format msgid " PORT\n" " server port of the current connection\n" msgstr " PORT\n" " порт сервера для поточного з'єднання\n" -#: help.c:402 +#: help.c:406 #, c-format msgid " PROMPT1\n" " specifies the standard psql prompt\n" msgstr " PROMPT1\n" " визначає стандратне запрошення psql \n" -#: help.c:404 +#: help.c:408 #, c-format msgid " PROMPT2\n" " specifies the prompt used when a statement continues from a previous line\n" msgstr " PROMPT2\n" " визначає запрошення, яке використовується при продовженні команди з попереднього рядка\n" -#: help.c:406 +#: help.c:410 #, c-format msgid " PROMPT3\n" " specifies the prompt used during COPY ... FROM STDIN\n" msgstr " PROMPT3\n" " визначає запрошення, яке виконується під час COPY ... FROM STDIN\n" -#: help.c:408 +#: help.c:412 #, c-format msgid " QUIET\n" " run quietly (same as -q option)\n" msgstr " QUIET\n" " тихий запуск ( як із параметром -q)\n" -#: help.c:410 +#: help.c:414 #, c-format msgid " ROW_COUNT\n" " number of rows returned or affected by last query, or 0\n" msgstr " ROW_COUNT\n" " число повернених або оброблених рядків останнім запитом, або 0\n" -#: help.c:412 +#: help.c:416 #, c-format msgid " SERVER_VERSION_NAME\n" " SERVER_VERSION_NUM\n" @@ -3463,49 +3492,49 @@ msgstr " SERVER_VERSION_NAME\n" " SERVER_VERSION_NUM\n" " версія серевера (у короткому текстовому або числовому форматі)\n" -#: help.c:415 +#: help.c:419 #, c-format msgid " SHOW_CONTEXT\n" " controls display of message context fields [never, errors, always]\n" msgstr " SHOW_CONTEXT\n" " керує відображенням полів контексту повідомлень [never, errors, always]\n" -#: help.c:417 +#: help.c:421 #, c-format msgid " SINGLELINE\n" " if set, end of line terminates SQL commands (same as -S option)\n" msgstr " SINGLELINE\n" " якщо встановлено, кінець рядка завершує режим вводу SQL-команди (як з параметром -S)\n" -#: help.c:419 +#: help.c:423 #, c-format msgid " SINGLESTEP\n" " single-step mode (same as -s option)\n" msgstr " SINGLESTEP\n" " покроковий режим (як з параметром -s)\n" -#: help.c:421 +#: help.c:425 #, c-format msgid " SQLSTATE\n" " SQLSTATE of last query, or \"00000\" if no error\n" msgstr " SQLSTATE\n" " SQLSTATE останнього запиту, або \"00000\" якщо немає помилок\n" -#: help.c:423 +#: help.c:427 #, c-format msgid " USER\n" " the currently connected database user\n" msgstr " USER\n" " поточний користувач, підключений до бази даних\n" -#: help.c:425 +#: help.c:429 #, c-format msgid " VERBOSITY\n" " controls verbosity of error reports [default, verbose, terse, sqlstate]\n" msgstr " VERBOSITY\n" " контролює докладність звітів про помилку [default, verbose, terse, sqlstate]\n" -#: help.c:427 +#: help.c:431 #, c-format msgid " VERSION\n" " VERSION_NAME\n" @@ -3516,112 +3545,119 @@ msgstr " VERSION\n" " VERSION_NUM\n" " psql версія (в розгорнутому, в короткому текстовому або числовому форматі)\n" -#: help.c:432 +#: help.c:436 #, c-format msgid "\n" "Display settings:\n" msgstr "\n" "Налаштування відобреження:\n" -#: help.c:434 +#: help.c:438 #, c-format msgid " psql --pset=NAME[=VALUE]\n" " or \\pset NAME [VALUE] inside psql\n\n" msgstr " psql --pset=NAME[=VALUE]\n" " або \\pset ІМ'Я [VALUE] всередині psql\n\n" -#: help.c:436 +#: help.c:440 #, c-format msgid " border\n" " border style (number)\n" msgstr " border\n" " стиль рамки (число)\n" -#: help.c:438 +#: help.c:442 #, c-format msgid " columns\n" " target width for the wrapped format\n" msgstr " columns\n" " цільова ширина для формату з переносом\n" -#: help.c:440 +#: help.c:444 +#, c-format +msgid " csv_fieldsep\n" +" field separator for CSV output format (default \"%c\")\n" +msgstr " csv_fieldsep\n" +" розділювач полів для виводу CSV (за замовчуванням \"%c\")\n" + +#: help.c:447 #, c-format msgid " expanded (or x)\n" " expanded output [on, off, auto]\n" msgstr " expanded (or x)\n" " розширений вивід [on, off, auto]\n" -#: help.c:442 +#: help.c:449 #, c-format msgid " fieldsep\n" " field separator for unaligned output (default \"%s\")\n" msgstr " fieldsep\n" " розділювач полів для не вирівняного виводу (за замовчуванням \"%s\")\n" -#: help.c:445 +#: help.c:452 #, c-format msgid " fieldsep_zero\n" " set field separator for unaligned output to a zero byte\n" msgstr " fieldsep_zero\n" " встановити розділювач полів для невирівняного виводу на нульовий байт\n" -#: help.c:447 +#: help.c:454 #, c-format msgid " footer\n" " enable or disable display of the table footer [on, off]\n" msgstr " footer\n" " вмикає або вимикає вивід підписів таблиці [on, off]\n" -#: help.c:449 +#: help.c:456 #, c-format msgid " format\n" " set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" msgstr " format\n" " встановити формат виводу [unaligned, aligned, wrapped, html, asciidoc, ...]\n" -#: help.c:451 +#: help.c:458 #, c-format msgid " linestyle\n" " set the border line drawing style [ascii, old-ascii, unicode]\n" msgstr " linestyle\n" " встановлює стиль малювання ліній рамки [ascii, old-ascii, unicode]\n" -#: help.c:453 +#: help.c:460 #, c-format msgid " null\n" " set the string to be printed in place of a null value\n" msgstr " null\n" " встановлює рядок, який буде виведено замість значення (null)\n" -#: help.c:455 +#: help.c:462 #, c-format msgid " numericlocale\n" " enable display of a locale-specific character to separate groups of digits\n" msgstr " numericlocale\n" " вмикає виведення заданого локалью роздільника групи цифр\n" -#: help.c:457 +#: help.c:464 #, c-format msgid " pager\n" " control when an external pager is used [yes, no, always]\n" msgstr " pager\n" " контролює використання зовнішнього пейджера [yes, no, always]\n" -#: help.c:459 +#: help.c:466 #, c-format msgid " recordsep\n" " record (line) separator for unaligned output\n" msgstr " recordsep\n" " розділювач записів (рядків) для не вирівняного виводу\n" -#: help.c:461 +#: help.c:468 #, c-format msgid " recordsep_zero\n" " set record separator for unaligned output to a zero byte\n" msgstr " recordsep_zero\n" " встановлює розділювач записів для невирівняного виводу на нульовий байт\n" -#: help.c:463 +#: help.c:470 #, c-format msgid " tableattr (or T)\n" " specify attributes for table tag in html format, or proportional\n" @@ -3630,21 +3666,21 @@ msgstr " tableattr (або T)\n" " вказує атрибути для тегу table у html форматі або пропорційні \n" " ширини стовпців для вирівняних вліво даних, у latex-longtable форматі\n" -#: help.c:466 +#: help.c:473 #, c-format msgid " title\n" " set the table title for subsequently printed tables\n" msgstr " title\n" " задає заголовок таблиці для послідовно друкованих таблиць\n" -#: help.c:468 +#: help.c:475 #, c-format msgid " tuples_only\n" " if set, only actual table data is shown\n" msgstr " tuples_only\n" " якщо встановлено, виводяться лише фактичні табличні дані\n" -#: help.c:470 +#: help.c:477 #, c-format msgid " unicode_border_linestyle\n" " unicode_column_linestyle\n" @@ -3655,21 +3691,21 @@ msgstr " unicode_border_linestyle\n" " unicode_header_linestyle\n" " задає стиль мальювання ліній (Unicode) [single, double]\n" -#: help.c:475 +#: help.c:482 #, c-format msgid "\n" "Environment variables:\n" msgstr "\n" "Змінні оточення:\n" -#: help.c:479 +#: help.c:486 #, c-format msgid " NAME=VALUE [NAME=VALUE] psql ...\n" " or \\setenv NAME [VALUE] inside psql\n\n" msgstr " ІМ'Я=ЗНАЧЕННЯ [ІМ'Я=ЗНАЧЕННЯ] psql ...\n" " або \\setenv ІМ'Я [VALUE] всередині psql\n\n" -#: help.c:481 +#: help.c:488 #, c-format msgid " set NAME=VALUE\n" " psql ...\n" @@ -3678,116 +3714,116 @@ msgstr " встановлює ІМ'Я=ЗНАЧЕННЯ\n" " psql ...\n" " або \\setenv ІМ'Я [VALUE] всередині psql\n\n" -#: help.c:484 +#: help.c:491 #, c-format msgid " COLUMNS\n" " number of columns for wrapped format\n" msgstr " COLUMNS\n" " число стовпців для форматування з переносом\n" -#: help.c:486 +#: help.c:493 #, c-format msgid " PGAPPNAME\n" " same as the application_name connection parameter\n" msgstr " PGAPPNAME\n" " те саме, що параметр підключення application_name\n" -#: help.c:488 +#: help.c:495 #, c-format msgid " PGDATABASE\n" " same as the dbname connection parameter\n" msgstr " PGDATABASE\n" " те саме, що параметр підключення dbname\n" -#: help.c:490 +#: help.c:497 #, c-format msgid " PGHOST\n" " same as the host connection parameter\n" msgstr " PGHOST\n" " те саме, що параметр підключення host\n" -#: help.c:492 +#: help.c:499 #, c-format msgid " PGPASSFILE\n" " password file name\n" msgstr " PGPASSFILE\n" " назва файлу з паролем\n" -#: help.c:494 +#: help.c:501 #, c-format msgid " PGPASSWORD\n" " connection password (not recommended)\n" msgstr " PGPASSWORD\n" " пароль для підключення (не рекомендується)\n" -#: help.c:496 +#: help.c:503 #, c-format msgid " PGPORT\n" " same as the port connection parameter\n" msgstr " PGPORT\n" " те саме, що параметр підключення port\n" -#: help.c:498 +#: help.c:505 #, c-format msgid " PGUSER\n" " same as the user connection parameter\n" msgstr " PGUSER\n" " те саме, що параметр підключення user\n" -#: help.c:500 +#: help.c:507 #, c-format msgid " PSQL_EDITOR, EDITOR, VISUAL\n" " editor used by the \\e, \\ef, and \\ev commands\n" msgstr " PSQL_EDITOR, EDITOR, VISUAL\n" " редактор для команд \\e, \\ef і \\ev\n" -#: help.c:502 +#: help.c:509 #, c-format msgid " PSQL_EDITOR_LINENUMBER_ARG\n" " how to specify a line number when invoking the editor\n" msgstr " PSQL_EDITOR_LINENUMBER_ARG\n" " як вказати номер рядка при виклику редактора\n" -#: help.c:504 +#: help.c:511 #, c-format msgid " PSQL_HISTORY\n" " alternative location for the command history file\n" msgstr " PSQL_HISTORY\n" " альтернативне розміщення файлу з історією команд\n" -#: help.c:506 +#: help.c:513 #, c-format msgid " PSQL_PAGER, PAGER\n" " name of external pager program\n" msgstr " PSQL_PAGER, PAGER\n" " ім'я програми зовнішнього пейджеру\n" -#: help.c:508 +#: help.c:515 #, c-format msgid " PSQLRC\n" " alternative location for the user's .psqlrc file\n" msgstr " PSQLRC\n" " альтернативне розміщення користувацького файла .psqlrc\n" -#: help.c:510 +#: help.c:517 #, c-format msgid " SHELL\n" " shell used by the \\! command\n" msgstr " SHELL\n" " оболонка, що використовується командою \\!\n" -#: help.c:512 +#: help.c:519 #, c-format msgid " TMPDIR\n" " directory for temporary files\n" msgstr " TMPDIR\n" " каталог для тимчасових файлів\n" -#: help.c:557 +#: help.c:564 msgid "Available help:\n" msgstr "Доступна довідка:\n" -#: help.c:652 +#: help.c:659 #, c-format msgid "Command: %s\n" "Description: %s\n" @@ -3800,7 +3836,7 @@ msgstr "Команда: %s\n" "%s\n\n" "URL: %s\n\n" -#: help.c:675 +#: help.c:682 #, c-format msgid "No help available for \"%s\".\n" "Try \\h with no arguments to see available help.\n" @@ -6258,7 +6294,7 @@ msgstr "зайвий аргумент \"%s\" проігнорований" msgid "could not find own program executable" msgstr "не вдалося знайти ехе файл власної програми" -#: tab-complete.c:4940 +#: tab-complete.c:4954 #, c-format msgid "tab completion query failed: %s\n" "Query was:\n" diff --git a/src/bin/scripts/po/es.po b/src/bin/scripts/po/es.po index ac2c7f379d7..7c2193aa4ba 100644 --- a/src/bin/scripts/po/es.po +++ b/src/bin/scripts/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: pgscripts (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:22+0000\n" +"POT-Creation-Date: 2026-02-06 21:33+0000\n" "PO-Revision-Date: 2022-01-12 17:38-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/common/saslprep.c b/src/common/saslprep.c index 0f224508d3f..7558b888edb 100644 --- a/src/common/saslprep.c +++ b/src/common/saslprep.c @@ -1009,15 +1009,17 @@ pg_utf8_string_len(const char *source) const unsigned char *p = (const unsigned char *) source; int l; int num_chars = 0; + size_t len = strlen(source); - while (*p) + while (len) { l = pg_utf_mblen(p); - if (!pg_utf8_islegal(p, l)) + if (len < l || !pg_utf8_islegal(p, l)) return -1; p += l; + len -= l; num_chars++; } diff --git a/src/common/wchar.c b/src/common/wchar.c index 71f564abfad..a19570fd9ec 100644 --- a/src/common/wchar.c +++ b/src/common/wchar.c @@ -62,6 +62,9 @@ * subset to the ASCII routines to ensure consistency. */ +/* No error-reporting facility. Ignore incomplete trailing byte sequence. */ +#define MB2CHAR_NEED_AT_LEAST(len, need) if ((len) < (need)) break + /* * SQL/ASCII */ @@ -107,22 +110,24 @@ pg_euc2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) while (len > 0 && *from) { - if (*from == SS2 && len >= 2) /* JIS X 0201 (so called "1 byte - * KANA") */ + if (*from == SS2) /* JIS X 0201 (so called "1 byte KANA") */ { + MB2CHAR_NEED_AT_LEAST(len, 2); from++; *to = (SS2 << 8) | *from++; len -= 2; } - else if (*from == SS3 && len >= 3) /* JIS X 0212 KANJI */ + else if (*from == SS3) /* JIS X 0212 KANJI */ { + MB2CHAR_NEED_AT_LEAST(len, 3); from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (IS_HIGHBIT_SET(*from) && len >= 2) /* JIS X 0208 KANJI */ + else if (IS_HIGHBIT_SET(*from)) /* JIS X 0208 KANJI */ { + MB2CHAR_NEED_AT_LEAST(len, 2); *to = *from++ << 8; *to |= *from++; len -= 2; @@ -234,22 +239,25 @@ pg_euccn2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) while (len > 0 && *from) { - if (*from == SS2 && len >= 3) /* code set 2 (unused?) */ + if (*from == SS2) /* code set 2 (unused?) */ { + MB2CHAR_NEED_AT_LEAST(len, 3); from++; *to = (SS2 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (*from == SS3 && len >= 3) /* code set 3 (unused ?) */ + else if (*from == SS3) /* code set 3 (unused ?) */ { + MB2CHAR_NEED_AT_LEAST(len, 3); from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 1 */ + else if (IS_HIGHBIT_SET(*from)) /* code set 1 */ { + MB2CHAR_NEED_AT_LEAST(len, 2); *to = *from++ << 8; *to |= *from++; len -= 2; @@ -266,12 +274,22 @@ pg_euccn2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) return cnt; } +/* + * mbverifychar does not accept SS2 or SS3 (CS2 and CS3 are not defined for + * EUC_CN), but mb2wchar_with_len does. Tell a coherent story for code that + * relies on agreement between mb2wchar_with_len and mblen. Invalid text + * datums (e.g. from shared catalogs) reach this. + */ static int pg_euccn_mblen(const unsigned char *s) { int len; - if (IS_HIGHBIT_SET(*s)) + if (*s == SS2) + len = 3; + else if (*s == SS3) + len = 3; + else if (IS_HIGHBIT_SET(*s)) len = 2; else len = 1; @@ -301,23 +319,26 @@ pg_euctw2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) while (len > 0 && *from) { - if (*from == SS2 && len >= 4) /* code set 2 */ + if (*from == SS2) /* code set 2 */ { + MB2CHAR_NEED_AT_LEAST(len, 4); from++; *to = (((uint32) SS2) << 24) | (*from++ << 16); *to |= *from++ << 8; *to |= *from++; len -= 4; } - else if (*from == SS3 && len >= 3) /* code set 3 (unused?) */ + else if (*from == SS3) /* code set 3 (unused?) */ { + MB2CHAR_NEED_AT_LEAST(len, 3); from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } - else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 2 */ + else if (IS_HIGHBIT_SET(*from)) /* code set 2 */ { + MB2CHAR_NEED_AT_LEAST(len, 2); *to = *from++ << 8; *to |= *from++; len -= 2; @@ -454,8 +475,7 @@ pg_utf2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) } else if ((*from & 0xe0) == 0xc0) { - if (len < 2) - break; /* drop trailing incomplete char */ + MB2CHAR_NEED_AT_LEAST(len, 2); c1 = *from++ & 0x1f; c2 = *from++ & 0x3f; *to = (c1 << 6) | c2; @@ -463,8 +483,7 @@ pg_utf2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) } else if ((*from & 0xf0) == 0xe0) { - if (len < 3) - break; /* drop trailing incomplete char */ + MB2CHAR_NEED_AT_LEAST(len, 3); c1 = *from++ & 0x0f; c2 = *from++ & 0x3f; c3 = *from++ & 0x3f; @@ -473,8 +492,7 @@ pg_utf2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) } else if ((*from & 0xf8) == 0xf0) { - if (len < 4) - break; /* drop trailing incomplete char */ + MB2CHAR_NEED_AT_LEAST(len, 4); c1 = *from++ & 0x07; c2 = *from++ & 0x3f; c3 = *from++ & 0x3f; @@ -744,28 +762,32 @@ pg_mule2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) while (len > 0 && *from) { - if (IS_LC1(*from) && len >= 2) + if (IS_LC1(*from)) { + MB2CHAR_NEED_AT_LEAST(len, 2); *to = *from++ << 16; *to |= *from++; len -= 2; } - else if (IS_LCPRV1(*from) && len >= 3) + else if (IS_LCPRV1(*from)) { + MB2CHAR_NEED_AT_LEAST(len, 3); from++; *to = *from++ << 16; *to |= *from++; len -= 3; } - else if (IS_LC2(*from) && len >= 3) + else if (IS_LC2(*from)) { + MB2CHAR_NEED_AT_LEAST(len, 3); *to = *from++ << 16; *to |= *from++ << 8; *to |= *from++; len -= 3; } - else if (IS_LCPRV2(*from) && len >= 4) + else if (IS_LCPRV2(*from)) { + MB2CHAR_NEED_AT_LEAST(len, 4); from++; *to = *from++ << 16; *to |= *from++ << 8; @@ -1916,7 +1938,7 @@ pg_encoding_set_invalid(int encoding, char *dst) const pg_wchar_tbl pg_wchar_table[] = { {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifychar, pg_ascii_verifystr, 1}, /* PG_SQL_ASCII */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3}, /* PG_EUC_JP */ - {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifychar, pg_euccn_verifystr, 2}, /* PG_EUC_CN */ + {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifychar, pg_euccn_verifystr, 3}, /* PG_EUC_CN */ {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifychar, pg_euckr_verifystr, 3}, /* PG_EUC_KR */ {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifychar, pg_euctw_verifystr, 4}, /* PG_EUC_TW */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3}, /* PG_EUC_JIS_2004 */ diff --git a/src/include/catalog/dependency.h b/src/include/catalog/dependency.h index 242026bda76..1a9252cb13a 100644 --- a/src/include/catalog/dependency.h +++ b/src/include/catalog/dependency.h @@ -226,6 +226,8 @@ extern long changeDependenciesOn(Oid refClassId, Oid oldRefObjectId, extern Oid getExtensionOfObject(Oid classId, Oid objectId); extern List *getAutoExtensionsOfObject(Oid classId, Oid objectId); +extern Oid getExtensionType(Oid extensionOid, const char *typname); + extern bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId); extern List *getOwnedSequences(Oid relid); extern Oid getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok); diff --git a/src/include/commands/async.h b/src/include/commands/async.h index 85bfb247682..e80fe3bad19 100644 --- a/src/include/commands/async.h +++ b/src/include/commands/async.h @@ -51,4 +51,7 @@ extern void HandleNotifyInterrupt(void); /* process interrupts */ extern void ProcessNotifyInterrupt(bool flush); +/* freeze old transaction IDs in notify queue (called by VACUUM) */ +extern void AsyncNotifyFreezeXids(TransactionId newFrozenXid); + #endif /* ASYNC_H */ diff --git a/src/include/commands/extension.h b/src/include/commands/extension.h index 24dbf86e970..aa8386b1f6f 100644 --- a/src/include/commands/extension.h +++ b/src/include/commands/extension.h @@ -49,6 +49,8 @@ extern Oid get_extension_oid(const char *extname, bool missing_ok); extern char *get_extension_name(Oid ext_oid); extern bool extension_file_exists(const char *extensionName); +extern Oid get_function_sibling_type(Oid funcoid, const char *typname); + extern ObjectAddress AlterExtensionNamespace(const char *extensionName, const char *newschema, Oid *oldschema); diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h index a44ea1acbc0..ff832f6d50b 100644 --- a/src/include/mb/pg_wchar.h +++ b/src/include/mb/pg_wchar.h @@ -608,7 +608,14 @@ extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2); extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n); extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n); extern size_t pg_wchar_strlen(const pg_wchar *wstr); +extern int pg_mblen_cstr(const char *mbstr); +extern int pg_mblen_range(const char *mbstr, const char *end); +extern int pg_mblen_with_len(const char *mbstr, int limit); +extern int pg_mblen_unbounded(const char *mbstr); + +/* deprecated */ extern int pg_mblen(const char *mbstr); + extern int pg_dsplen(const char *mbstr); extern int pg_mbstrlen(const char *mbstr); extern int pg_mbstrlen_with_len(const char *mbstr, int len); diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h index 3c034fa3c5e..2a8977c9722 100644 --- a/src/include/nodes/pathnodes.h +++ b/src/include/nodes/pathnodes.h @@ -796,9 +796,10 @@ typedef struct RelOptInfo * IndexOptInfo * Per-index information for planning/optimization * - * indexkeys[], indexcollations[] each have ncolumns entries. - * opfamily[], and opcintype[] each have nkeycolumns entries. They do - * not contain any information about included attributes. + * indexkeys[] and canreturn[] each have ncolumns entries. + * + * indexcollations[], opfamily[], and opcintype[] each have nkeycolumns + * entries. These don't contain any information about INCLUDE columns. * * sortopfamily[], reverse_sort[], and nulls_first[] have * nkeycolumns entries, if the index is ordered; but if it is unordered, diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h index 7f796bfed00..8f432dcd47f 100644 --- a/src/include/storage/bufmgr.h +++ b/src/include/storage/bufmgr.h @@ -198,6 +198,9 @@ extern void InitBufferPool(void); extern void InitBufferPoolAccess(void); extern void InitBufferPoolBackend(void); extern void AtEOXact_Buffers(bool isCommit); +#ifdef USE_ASSERT_CHECKING +extern void AssertBufferLocksPermitCatalogRead(void); +#endif extern void PrintBufferLeakWarning(Buffer buffer); extern void CheckPointBuffers(int flags); extern BlockNumber BufferGetBlockNumber(Buffer buffer); diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h index b2c9a9dbbcc..6ef1bee18a2 100644 --- a/src/include/storage/lwlock.h +++ b/src/include/storage/lwlock.h @@ -127,6 +127,8 @@ extern bool LWLockAcquireOrWait(LWLock *lock, LWLockMode mode); extern void LWLockRelease(LWLock *lock); extern void LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val); extern void LWLockReleaseAll(void); +extern void ForEachLWLockHeldByMe(void (*callback) (LWLock *, LWLockMode, void *), + void *context); extern bool LWLockHeldByMe(LWLock *lock); extern bool LWLockAnyHeldByMe(LWLock *lock, int nlocks, size_t stride); extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode); diff --git a/src/include/tsearch/ts_locale.h b/src/include/tsearch/ts_locale.h index cfd34b32443..5d5c240b492 100644 --- a/src/include/tsearch/ts_locale.h +++ b/src/include/tsearch/ts_locale.h @@ -45,12 +45,36 @@ typedef struct /* The second argument of t_iseq() must be a plain ASCII character */ #define t_iseq(x,c) (TOUCHAR(x) == (unsigned char) (c)) -#define COPYCHAR(d,s) memcpy(d, s, pg_mblen(s)) +/* Copy multibyte character of known byte length, return byte length. */ +static inline int +ts_copychar_with_len(void *dest, const void *src, int length) +{ + memcpy(dest, src, length); + return length; +} + +/* Copy multibyte character from null-terminated string, return byte length. */ +static inline int +ts_copychar_cstr(void *dest, const void *src) +{ + return ts_copychar_with_len(dest, src, pg_mblen_cstr((const char *) src)); +} + +/* Historical macro for the above. */ +#define COPYCHAR ts_copychar_cstr + +#define GENERATE_T_ISCLASS_DECL(character_class) \ +extern int t_is##character_class##_with_len(const char *ptr, int len); \ +extern int t_is##character_class##_cstr(const char *ptr); \ +extern int t_is##character_class##_unbounded(const char *ptr); \ +\ +/* deprecated */ \ +extern int t_is##character_class(const char *ptr); -extern int t_isdigit(const char *ptr); -extern int t_isspace(const char *ptr); -extern int t_isalpha(const char *ptr); -extern int t_isprint(const char *ptr); +GENERATE_T_ISCLASS_DECL(alpha); +GENERATE_T_ISCLASS_DECL(digit); +GENERATE_T_ISCLASS_DECL(print); +GENERATE_T_ISCLASS_DECL(space); extern char *lowerstr(const char *str); extern char *lowerstr_with_len(const char *str, int len); diff --git a/src/include/tsearch/ts_utils.h b/src/include/tsearch/ts_utils.h index 4266560151f..ef3d67aeb1a 100644 --- a/src/include/tsearch/ts_utils.h +++ b/src/include/tsearch/ts_utils.h @@ -38,14 +38,12 @@ extern bool gettoken_tsvector(TSVectorParseState state, extern void close_tsvector_parser(TSVectorParseState state); /* phrase operator begins with '<' */ -#define ISOPERATOR(x) \ - ( pg_mblen(x) == 1 && ( *(x) == '!' || \ - *(x) == '&' || \ - *(x) == '|' || \ - *(x) == '(' || \ - *(x) == ')' || \ - *(x) == '<' \ - ) ) +#define ISOPERATOR(x) (*(x) == '!' || \ + *(x) == '&' || \ + *(x) == '|' || \ + *(x) == '(' || \ + *(x) == ')' || \ + *(x) == '<') /* parse_tsquery */ diff --git a/src/include/utils/array.h b/src/include/utils/array.h index 0d6db51b5e9..6d5e2fd2937 100644 --- a/src/include/utils/array.h +++ b/src/include/utils/array.h @@ -394,6 +394,7 @@ extern void array_bitmap_copy(bits8 *destbitmap, int destoffset, extern ArrayType *construct_array(Datum *elems, int nelems, Oid elmtype, int elmlen, bool elmbyval, char elmalign); +extern ArrayType *construct_array_builtin(Datum *elems, int nelems, Oid elmtype); extern ArrayType *construct_md_array(Datum *elems, bool *nulls, int ndims, @@ -408,6 +409,9 @@ extern void deconstruct_array(ArrayType *array, Oid elmtype, int elmlen, bool elmbyval, char elmalign, Datum **elemsp, bool **nullsp, int *nelemsp); +extern void deconstruct_array_builtin(ArrayType *array, + Oid elmtype, + Datum **elemsp, bool **nullsp, int *nelemsp); extern bool array_contains_nulls(ArrayType *array); extern ArrayBuildState *initArrayResult(Oid element_type, diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index 4329925f1e3..43446293726 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -57,6 +57,7 @@ extern uint64 pg_strtouint64(const char *str, char **endptr, int base); /* oid.c */ extern oidvector *buildoidvector(const Oid *oids, int n); +extern void check_valid_oidvector(const oidvector *oidArray); extern Oid oidparse(Node *node); extern int oid_cmp(const void *p1, const void *p2); diff --git a/src/include/utils/catcache.h b/src/include/utils/catcache.h index a468bdc4496..7c03e8e4c17 100644 --- a/src/include/utils/catcache.h +++ b/src/include/utils/catcache.h @@ -224,7 +224,8 @@ extern void CatCacheInvalidate(CatCache *cache, uint32 hashValue); extern void PrepareToInvalidateCacheTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple, - void (*function) (int, uint32, Oid)); + void (*function) (int, uint32, Oid, void *), + void *context); extern void PrintCatCacheLeakWarning(HeapTuple tuple); extern void PrintCatCacheListLeakWarning(CatCList *list); diff --git a/src/include/utils/inval.h b/src/include/utils/inval.h index 877e66c63c8..8299badefc1 100644 --- a/src/include/utils/inval.h +++ b/src/include/utils/inval.h @@ -28,6 +28,10 @@ extern void AcceptInvalidationMessages(void); extern void AtEOXact_Inval(bool isCommit); +extern void PreInplace_Inval(void); +extern void AtInplace_Inval(void); +extern void ForgetInplace_Inval(void); + extern void AtEOSubXact_Inval(bool isCommit); extern void PostPrepare_Inval(void); @@ -37,6 +41,8 @@ extern void CommandEndInvalidationMessages(void); extern void CacheInvalidateHeapTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple); +extern void CacheInvalidateHeapTupleInplace(Relation relation, + HeapTuple key_equivalent_tuple); extern void CacheInvalidateCatalog(Oid catalogId); diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h index aa060ef115b..08fb6120579 100644 --- a/src/include/utils/relcache.h +++ b/src/include/utils/relcache.h @@ -36,6 +36,14 @@ typedef Relation *RelationPtr; /* * Routines to open (lookup) and close a relcache entry */ +#ifdef USE_ASSERT_CHECKING +extern void AssertCouldGetRelation(void); +#else +static inline void +AssertCouldGetRelation(void) +{ +} +#endif extern Relation RelationIdGetRelation(Oid relationId); extern void RelationClose(Relation relation); diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h index 27c892d24c5..bffa8c45b5e 100644 --- a/src/include/utils/syscache.h +++ b/src/include/utils/syscache.h @@ -109,9 +109,11 @@ enum SysCacheIdentifier TYPENAMENSP, TYPEOID, USERMAPPINGOID, - USERMAPPINGUSERSERVER + USERMAPPINGUSERSERVER, + /* intentionally out of alphabetical order, to avoid an ABI break: */ + EXTENSIONOID -#define SysCacheSize (USERMAPPINGUSERSERVER + 1) +#define SysCacheSize (EXTENSIONOID + 1) }; extern void InitCatalogCache(void); diff --git a/src/interfaces/ecpg/ecpglib/po/es.po b/src/interfaces/ecpg/ecpglib/po/es.po index debfc0996e4..2abe9fde255 100644 --- a/src/interfaces/ecpg/ecpglib/po/es.po +++ b/src/interfaces/ecpg/ecpglib/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ecpglib (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:14+0000\n" +"POT-Creation-Date: 2026-02-06 21:25+0000\n" "PO-Revision-Date: 2019-06-06 17:20-0400\n" "Last-Translator: Emanuel Calvo Franco \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/interfaces/ecpg/preproc/po/es.po b/src/interfaces/ecpg/preproc/po/es.po index 9404c3f6d2d..add33cf387a 100644 --- a/src/interfaces/ecpg/preproc/po/es.po +++ b/src/interfaces/ecpg/preproc/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: ecpg (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:14+0000\n" +"POT-Creation-Date: 2026-02-06 21:25+0000\n" "PO-Revision-Date: 2021-10-13 23:43-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/interfaces/ecpg/preproc/po/pl.po b/src/interfaces/ecpg/preproc/po/pl.po index c3a2fe257ca..e3f9efc3956 100644 --- a/src/interfaces/ecpg/preproc/po/pl.po +++ b/src/interfaces/ecpg/preproc/po/pl.po @@ -1,329 +1,331 @@ -# Polish message translation file for ecpg -# Copyright (C) 2011 PostgreSQL Global Development Group -# This file is distributed under the same license as the PostgreSQL package. -# Begina Felicysym , 2011, 2012. -# grzegorz , 2014, 2017. msgid "" msgstr "" -"Project-Id-Version: ecpg (PostgreSQL 9.1)\n" -"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-03-14 17:38+0000\n" -"PO-Revision-Date: 2017-03-14 19:42+0200\n" -"Last-Translator: grzegorz \n" -"Language-Team: begina.felicysym@wp.eu\n" -"Language: pl\n" +"Project-Id-Version: postgresql\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2025-03-27 18:46+0000\n" +"PO-Revision-Date: 2026-01-03 14:10\n" +"Last-Translator: \n" +"Language-Team: Polish\n" +"Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Virtaal 0.7.1\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Crowdin-Project: postgresql\n" +"X-Crowdin-Project-ID: 324573\n" +"X-Crowdin-Language: pl\n" +"X-Crowdin-File: /REL_14_STABLE/ecpg.pot\n" +"X-Crowdin-File-ID: 782\n" #: descriptor.c:64 #, c-format msgid "variable \"%s\" must have a numeric type" msgstr "zmienna \"%s\" musi mieć typ numeryczny" -#: descriptor.c:124 descriptor.c:146 +#: descriptor.c:125 descriptor.c:156 #, c-format -msgid "descriptor \"%s\" does not exist" -msgstr "deskryptor \"%s\" nie istnieje" +msgid "descriptor %s bound to connection %s does not exist" +msgstr "deskryptor %s związany z połączeniem %s nie istnieje" -#: descriptor.c:161 descriptor.c:213 +#: descriptor.c:127 descriptor.c:158 +#, c-format +msgid "descriptor %s bound to the default connection does not exist" +msgstr "deskryptor %s związany z domyślnym połączeniem nie istnieje" + +#: descriptor.c:173 descriptor.c:225 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "element nagłówka deskryptora \"%d\" nie istnieje" -#: descriptor.c:183 +#: descriptor.c:195 #, c-format msgid "nullable is always 1" msgstr "nullable jest zawsze 1" -#: descriptor.c:186 +#: descriptor.c:198 #, c-format msgid "key_member is always 0" msgstr "key_member jest zawsze 0" -#: descriptor.c:280 +#: descriptor.c:292 #, c-format msgid "descriptor item \"%s\" is not implemented" msgstr "element deskryptora \"%s\" nie jest zaimplementowany" -#: descriptor.c:290 +#: descriptor.c:302 #, c-format msgid "descriptor item \"%s\" cannot be set" msgstr "element deskryptora \"%s\" nie może zostać ustawiony" -#: ecpg.c:35 +#: ecpg.c:36 #, c-format -msgid "" -"%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" -"\n" -msgstr "" -"%s jest osadzonym w PostgreSQL preprocesorem SQL dla programów C.\n" -"\n" +msgid "%s is the PostgreSQL embedded SQL preprocessor for C programs.\n\n" +msgstr "%s jest osadzonym w PostgreSQL preprocesorem SQL dla programów C.\n\n" -#: ecpg.c:37 +#: ecpg.c:38 #, c-format -msgid "" -"Usage:\n" -" %s [OPTION]... FILE...\n" -"\n" -msgstr "" -"Sposób użycia:\n" -" %s [OPCJE]... PLIK...\n" -"\n" +msgid "Usage:\n" +" %s [OPTION]... FILE...\n\n" +msgstr "Sposób użycia:\n" +" %s [OPCJE]... PLIK...\n\n" -#: ecpg.c:40 +#: ecpg.c:41 #, c-format msgid "Options:\n" msgstr "Opcje:\n" -#: ecpg.c:41 +#: ecpg.c:42 #, c-format -msgid "" -" -c automatically generate C code from embedded SQL code;\n" +msgid " -c automatically generate C code from embedded SQL code;\n" " this affects EXEC SQL TYPE\n" -msgstr "" -" -c automatycznie generuje kod w C z osadzonego kodu SQL;\n" +msgstr " -c automatycznie generuje kod w C z osadzonego kodu SQL;\n" " dotyczy to EXEC SQL TYPE\n" -#: ecpg.c:43 +#: ecpg.c:44 #, c-format -msgid "" -" -C MODE set compatibility mode; MODE can be one of\n" -" \"INFORMIX\", \"INFORMIX_SE\"\n" +msgid " -C MODE set compatibility mode; MODE can be one of\n" +" \"INFORMIX\", \"INFORMIX_SE\", \"ORACLE\"\n" msgstr "" -" -C TRYB ustala tryb kompatybilności; TRYB może być jednym z\n" -" \"INFORMIX\", \"INFORMIX_SE\"\n" -#: ecpg.c:46 +#: ecpg.c:47 #, c-format msgid " -d generate parser debug output\n" msgstr " -d generuje wyjście debugowania parsera\n" -#: ecpg.c:48 +#: ecpg.c:49 #, c-format msgid " -D SYMBOL define SYMBOL\n" msgstr " -D SYMBOL definiuje SYMBOL\n" -#: ecpg.c:49 +#: ecpg.c:50 #, c-format msgid " -h parse a header file, this option includes option \"-c\"\n" msgstr " -h parsuje plik nagłówkowy, opcja ta zawiera opcję \"-c\"\n" -#: ecpg.c:50 +#: ecpg.c:51 #, c-format msgid " -i parse system include files as well\n" msgstr " -i parsuje również systemowe pliki nagłówkowe\n" -#: ecpg.c:51 +#: ecpg.c:52 #, c-format msgid " -I DIRECTORY search DIRECTORY for include files\n" msgstr " -I FOLDER przeszukuje FOLDER w poszukiwaniu plików nagłówkowych\n" -#: ecpg.c:52 +#: ecpg.c:53 #, c-format msgid " -o OUTFILE write result to OUTFILE\n" msgstr " -o PLIKOUT zapisuje wynik do PLIKOUT\n" -#: ecpg.c:53 +#: ecpg.c:54 #, c-format -msgid "" -" -r OPTION specify run-time behavior; OPTION can be:\n" +msgid " -r OPTION specify run-time behavior; OPTION can be:\n" " \"no_indicator\", \"prepare\", \"questionmarks\"\n" -msgstr "" -" -r OPCJA określa zachowanie uruchomienia; OPTCJA może być:\n" +msgstr " -r OPCJA określa zachowanie uruchomienia; OPTCJA może być:\n" " \"no_indicator\", \"prepare\", \"questionmarks\"\n" -#: ecpg.c:55 +#: ecpg.c:56 #, c-format msgid " --regression run in regression testing mode\n" msgstr " --regression wykonanie w trybie testów regresyjnych\n" -#: ecpg.c:56 +#: ecpg.c:57 #, c-format msgid " -t turn on autocommit of transactions\n" msgstr " -t włącza automatyczne zatwierdzanie transakcji\n" -#: ecpg.c:57 +#: ecpg.c:58 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version wypisuje informacje o wersji i kończy\n" -#: ecpg.c:58 +#: ecpg.c:59 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help pokazuje ten ekran pomocy i kończy\n" -#: ecpg.c:59 +#: ecpg.c:60 #, c-format -msgid "" -"\n" +msgid "\n" "If no output file is specified, the name is formed by adding .c to the\n" "input file name, after stripping off .pgc if present.\n" -msgstr "" -"\n" +msgstr "\n" "Jeżeli nie wskazano pliku wyjścia, nazwa jest tworzona przez dodanie .c\n" "do nazwy pliku wejścia, po usunięciu .pgc jeśli obecne.\n" -#: ecpg.c:61 +#: ecpg.c:62 #, c-format -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" -"\n" -"Błędy proszę przesyłać na adres .\n" +msgid "\n" +"Report bugs to <%s>.\n" +msgstr "\n" +"Zgłoś błędy do <%s>.\n" -#: ecpg.c:139 +#: ecpg.c:63 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s strona główna: <%s>\n" + +#: ecpg.c:152 #, c-format msgid "%s: could not locate my own executable path\n" msgstr "%s: nie można odnaleźć własnej ścieżki programu wykonywalnego\n" -#: ecpg.c:174 ecpg.c:327 ecpg.c:337 +#: ecpg.c:187 ecpg.c:344 ecpg.c:355 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: nie można otworzyć pliku \"%s\": %s\n" -#: ecpg.c:213 ecpg.c:226 ecpg.c:242 ecpg.c:268 +#: ecpg.c:230 ecpg.c:243 ecpg.c:259 ecpg.c:285 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" +msgstr "Użyj \"%s --help\" aby uzyskać więcej informacji.\n" -#: ecpg.c:237 +#: ecpg.c:254 #, c-format msgid "%s: parser debug support (-d) not available\n" msgstr "%s: wsparcie debugu analizatora (-d) niedostępne\n" -#: ecpg.c:256 +#: ecpg.c:273 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %s\n" msgstr "%s, preprocesor C osadzony w PostgreSQL, wersja %s\n" -#: ecpg.c:258 +#: ecpg.c:275 #, c-format msgid "EXEC SQL INCLUDE ... search starts here:\n" msgstr "EXEC SQL INCLUDE ... wyszukiwanie zaczyna się tutaj:\n" -#: ecpg.c:261 +#: ecpg.c:278 #, c-format msgid "end of search list\n" msgstr "koniec listy wyszukiwania\n" -#: ecpg.c:267 +#: ecpg.c:284 #, c-format msgid "%s: no input files specified\n" msgstr "%s: nie wskazano pliku wejściowego\n" -#: ecpg.c:460 +#: ecpg.c:490 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "kursor \"%s\" został zadeklarowany, ale nie otwarty" -#: ecpg.c:473 preproc.y:127 +#: ecpg.c:503 preproc.y:130 #, c-format msgid "could not remove output file \"%s\"\n" msgstr "nie można usunąć pliku wyjścia \"%s\"\n" -#: pgc.l:431 +#: pgc.l:509 #, c-format msgid "unterminated /* comment" msgstr "nie zakończony komentarz /*" -#: pgc.l:444 -#, c-format -msgid "invalid bit string literal" -msgstr "nieprawidłowa stała łańcucha bitów" - -#: pgc.l:453 +#: pgc.l:526 #, c-format msgid "unterminated bit string literal" msgstr "niezakończona stała łańcucha bitów" -#: pgc.l:469 +#: pgc.l:534 #, c-format msgid "unterminated hexadecimal string literal" msgstr "niezakończona stała łańcucha szesnastkowego" -#: pgc.l:547 +#: pgc.l:609 +#, c-format +msgid "invalid bit string literal" +msgstr "nieprawidłowa stała łańcucha bitów" + +#: pgc.l:614 +#, c-format +msgid "invalid hex string literal" +msgstr "" + +#: pgc.l:632 +#, c-format +msgid "unhandled previous state in xqs\n" +msgstr "" + +#: pgc.l:658 pgc.l:767 #, c-format msgid "unterminated quoted string" msgstr "niezakończona stała łańcuchowa" -#: pgc.l:605 pgc.l:618 +#: pgc.l:709 +#, c-format +msgid "unterminated dollar-quoted string" +msgstr "niezakończona stała łańcuchowa cytowana znakiem dolara" + +#: pgc.l:727 pgc.l:747 #, c-format msgid "zero-length delimited identifier" -msgstr "ograniczony identyfikator o długości zero" +msgstr "identyfikator ogranicznika o długości zero" -#: pgc.l:626 +#: pgc.l:758 #, c-format msgid "unterminated quoted identifier" -msgstr "niezakończony łańcuch identyfikatora" +msgstr "niezakończony identyfikator cytowany" -#: pgc.l:881 +#: pgc.l:1090 #, c-format msgid "nested /* ... */ comments" msgstr "zagnieżdżone komentarze /* ... */" -#: pgc.l:974 +#: pgc.l:1189 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "brakujący identyfikator w poleceniu EXEC SQL UNDEF" -#: pgc.l:1020 pgc.l:1034 +#: pgc.l:1207 pgc.l:1220 pgc.l:1236 pgc.l:1249 +#, c-format +msgid "too many nested EXEC SQL IFDEF conditions" +msgstr "zbyt wiele zagłębień warunków EXEC SQL IFDEF" + +#: pgc.l:1265 pgc.l:1276 pgc.l:1291 pgc.l:1313 #, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "brak pasującego \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" -#: pgc.l:1023 pgc.l:1036 pgc.l:1212 +#: pgc.l:1267 pgc.l:1278 pgc.l:1471 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "brak \"EXEC SQL ENDIF;\"" -#: pgc.l:1052 pgc.l:1071 +#: pgc.l:1293 pgc.l:1315 #, c-format msgid "more than one EXEC SQL ELSE" msgstr "więcej niż jeden EXEC SQL ELSE" -#: pgc.l:1093 pgc.l:1107 +#: pgc.l:1338 pgc.l:1352 #, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "niedopasowany EXEC SQL ENDIF" -#: pgc.l:1127 -#, c-format -msgid "too many nested EXEC SQL IFDEF conditions" -msgstr "zbyt wiele zagłębień warunków EXEC SQL IFDEF" - -#: pgc.l:1160 +#: pgc.l:1413 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "brakujący identyfikator w poleceniu EXEC SQL IFDEF" -#: pgc.l:1169 +#: pgc.l:1422 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "brakujący identyfikator w poleceniu EXEC SQL DEFINE" -#: pgc.l:1202 +#: pgc.l:1460 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "błąd składni w poleceniu EXEC SQL INCLUDE" -#: pgc.l:1251 +#: pgc.l:1515 #, c-format -msgid "internal error: unreachable state; please report this to " +msgid "internal error: unreachable state; please report this to <%s>" msgstr "" -"błąd wewnętrzny: nieosiągalny stan; proszę przesłać go na adres " -#: pgc.l:1375 +#: pgc.l:1667 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "Błąd: załączona ścieżka \"%s/%s\" jest zbyt długa w linii %d, pominięto\n" -#: pgc.l:1398 +#: pgc.l:1690 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "nie można otworzyć załączonego pliku \"%s\" w linii %d" @@ -332,343 +334,349 @@ msgstr "nie można otworzyć załączonego pliku \"%s\" w linii %d" msgid "syntax error" msgstr "błąd składni" -#: preproc.y:81 +#: preproc.y:84 #, c-format msgid "WARNING: " msgstr "OSTRZEŻENIE: " -#: preproc.y:84 +#: preproc.y:87 #, c-format msgid "ERROR: " msgstr "BŁĄD: " -#: preproc.y:508 +#: preproc.y:514 #, c-format msgid "cursor \"%s\" does not exist" msgstr "kursor \"%s\" nie istnieje" -#: preproc.y:537 +#: preproc.y:543 #, c-format msgid "initializer not allowed in type definition" msgstr "inicjator niedozwolony w definicji typu" -#: preproc.y:539 +#: preproc.y:545 #, c-format msgid "type name \"string\" is reserved in Informix mode" msgstr "nazwa typu \"string\" jest zarezerwowana w trybie Informix" -#: preproc.y:546 preproc.y:15234 +#: preproc.y:552 preproc.y:17671 #, c-format msgid "type \"%s\" is already defined" msgstr "typ \"%s\" już istnieje" -#: preproc.y:570 preproc.y:15892 preproc.y:16212 variable.c:620 +#: preproc.y:577 preproc.y:18306 preproc.y:18631 variable.c:619 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "wielowymiarowe tablice dla prostych typów danych nie są wspierane" -#: preproc.y:1675 +#: preproc.y:599 +#, c-format +msgid "connection %s is overwritten with %s by DECLARE statement %s" +msgstr "połączenie %s jest nadpisane przez %s wyrażeniem DECLARE %s" + +#: preproc.y:1753 #, c-format msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "opcja AT niedozwolona w wyrażeniu CLOSE DATABASE" -#: preproc.y:1886 +#: preproc.y:2001 #, c-format msgid "AT option not allowed in CONNECT statement" msgstr "opcja AT niedozwolona w wyrażeniu CONNECT" -#: preproc.y:1920 +#: preproc.y:2041 #, c-format msgid "AT option not allowed in DISCONNECT statement" msgstr "opcja AT niedozwolona w wyrażeniu DISCONNECT" -#: preproc.y:1975 +#: preproc.y:2096 #, c-format msgid "AT option not allowed in SET CONNECTION statement" msgstr "opcja AT niedozwolona w wyrażeniu SET CONNECTION" -#: preproc.y:1997 +#: preproc.y:2118 #, c-format msgid "AT option not allowed in TYPE statement" msgstr "opcja AT niedozwolona w wyrażeniu TYPE" -#: preproc.y:2006 +#: preproc.y:2127 #, c-format msgid "AT option not allowed in VAR statement" msgstr "opcja AT niedozwolona w wyrażeniu VAR" -#: preproc.y:2013 +#: preproc.y:2134 #, c-format msgid "AT option not allowed in WHENEVER statement" msgstr "opcja AT niedozwolona w wyrażeniu WHENEVER" -#: preproc.y:2265 preproc.y:2270 preproc.y:2386 preproc.y:3923 preproc.y:5434 -#: preproc.y:5443 preproc.y:5751 preproc.y:7247 preproc.y:8659 preproc.y:8664 -#: preproc.y:11368 preproc.y:11989 +#: preproc.y:2211 preproc.y:2509 preproc.y:4141 preproc.y:4805 preproc.y:5675 +#: preproc.y:5975 preproc.y:11909 #, c-format msgid "unsupported feature will be passed to server" msgstr "niewspierana cecha zostanie przekazana na serwer" -#: preproc.y:2644 +#: preproc.y:2767 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALL nie jest zaimplementowane" -#: preproc.y:3268 +#: preproc.y:3462 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN nie zostało zaimplementowane" -#: preproc.y:9534 preproc.y:14823 +#: preproc.y:10008 preproc.y:17244 +#, c-format +msgid "\"database\" cannot be used as cursor name in INFORMIX mode" +msgstr "\"database\" nie może być użyte jako nazwa kursora w trybie INFORMIX" + +#: preproc.y:10015 preproc.y:17254 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "użycie zmiennej \"%s\" w innych wyrażeniach deklaracji nie jest wspierane" -#: preproc.y:9536 preproc.y:14825 +#: preproc.y:10017 preproc.y:17256 #, c-format msgid "cursor \"%s\" is already defined" msgstr "kursor \"%s\" już istnieje" -#: preproc.y:9966 +#: preproc.y:10491 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "już nie wspierana składnia LIMIT #,# przesłana na serwer" -#: preproc.y:10282 preproc.y:10289 +#: preproc.y:10824 preproc.y:10831 #, c-format msgid "subquery in FROM must have an alias" msgstr "podzapytanie z FROM musi mieć alias" -#: preproc.y:14553 +#: preproc.y:16936 preproc.y:16943 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS nie może zawierać INTO" -#: preproc.y:14589 +#: preproc.y:16979 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "oczekiwano \"@\", znaleziono \"%s\"" -#: preproc.y:14601 +#: preproc.y:16991 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" -msgstr "" -"tylko protokoły \"tcp\" i \"unix\" oraz typ bazy danych \"postgresql\" są " -"wspierane" +msgstr "tylko protokoły \"tcp\" i \"unix\" oraz typ bazy danych \"postgresql\" są wspierane" -#: preproc.y:14604 +#: preproc.y:16994 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "oczekiwano \"://\", znaleziono \"%s\"" -#: preproc.y:14609 +#: preproc.y:16999 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "Gniazda dziedziny Uniksa działają tylko na \"localhost\" a nie na \"%s\"" -#: preproc.y:14635 +#: preproc.y:17025 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "oczekiwano \"postgresql\", znaleziono \"%s\"" -#: preproc.y:14638 +#: preproc.y:17028 #, c-format msgid "invalid connection type: %s" msgstr "niepoprawny typ połączenia: %s" -#: preproc.y:14647 +#: preproc.y:17037 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "oczekiwano \"@\" lub \"://\", znaleziono \"%s\"" -#: preproc.y:14722 preproc.y:14740 +#: preproc.y:17112 preproc.y:17130 #, c-format msgid "invalid data type" msgstr "niepoprawny typ danych" -#: preproc.y:14751 preproc.y:14768 +#: preproc.y:17141 preproc.y:17158 #, c-format msgid "incomplete statement" msgstr "niepełne wyrażenie" -#: preproc.y:14754 preproc.y:14771 +#: preproc.y:17144 preproc.y:17161 #, c-format msgid "unrecognized token \"%s\"" msgstr "niezrozumiały token \"%s\"" -#: preproc.y:15045 +#: preproc.y:17206 +#, c-format +msgid "name \"%s\" is already declared" +msgstr "nazwa \"%s\" jest już zadeklarowana" + +#: preproc.y:17474 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "tylko typy danych numeric i decimal mają argument precyzji/skali" -#: preproc.y:15057 +#: preproc.y:17486 #, c-format msgid "interval specification not allowed here" msgstr "specyfikacja interwału niedozwolona tutaj" -#: preproc.y:15209 preproc.y:15261 +#: preproc.y:17646 preproc.y:17698 #, c-format msgid "too many levels in nested structure/union definition" msgstr "zbyt wiele poziomów w zagnieżdżonej definicji structure/union" -#: preproc.y:15400 +#: preproc.y:17821 #, c-format msgid "pointers to varchar are not implemented" msgstr "wskazania na varchar nie są zaimplementowane" -#: preproc.y:15587 preproc.y:15612 -#, c-format -msgid "using unsupported DESCRIBE statement" -msgstr "użycie niewspieranego wyrażenia DESCRIBE" - -#: preproc.y:15859 +#: preproc.y:18272 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "inicjator niedopuszczalny w poleceniu EXEC SQL VAR" -#: preproc.y:16170 +#: preproc.y:18589 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "tabele wskazań nie są dozwolone w wejściu" -#: preproc.y:16391 +#: preproc.y:18776 #, c-format msgid "operator not allowed in variable definition" msgstr "operator niedozwolony w definicji zmiennej" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:16429 +#: preproc.y:18817 #, c-format msgid "%s at or near \"%s\"" -msgstr "%s w lub pobliżu \"%s\"" +msgstr "%s w lub blisko \"%s\"" #: type.c:18 type.c:30 #, c-format msgid "out of memory" msgstr "brak pamięci" -#: type.c:212 type.c:664 +#: type.c:214 type.c:685 #, c-format msgid "unrecognized variable type code %d" msgstr "niezrozumiały kod typu zmiennej %d" -#: type.c:261 +#: type.c:263 #, c-format msgid "variable \"%s\" is hidden by a local variable of a different type" msgstr "zmienna \"%s\" została przykryta przez zmienną lokalną innego typu" -#: type.c:263 +#: type.c:265 #, c-format msgid "variable \"%s\" is hidden by a local variable" msgstr "zmienna \"%s\" została przykryta przez zmienną lokalną" -#: type.c:275 +#: type.c:277 #, c-format msgid "indicator variable \"%s\" is hidden by a local variable of a different type" -msgstr "" -"zmienna wskaźnikowa \"%s\" została przykryta przez zmienną lokalną innego typu" +msgstr "zmienna wskaźnikowa \"%s\" została przykryta przez zmienną lokalną innego typu" -#: type.c:277 +#: type.c:279 #, c-format msgid "indicator variable \"%s\" is hidden by a local variable" msgstr "zmienna wskaźnikowa \"%s\" została przykryta przez zmienną lokalną" -#: type.c:285 +#: type.c:287 #, c-format msgid "indicator for array/pointer has to be array/pointer" msgstr "wskaźnik do array/pointer musi być array/pointer" -#: type.c:289 +#: type.c:291 #, c-format msgid "nested arrays are not supported (except strings)" msgstr "tabele zagnieżdżone nie są wspierane (poza ciągami znaków)" -#: type.c:331 +#: type.c:333 #, c-format msgid "indicator for struct has to be a struct" msgstr "wskaźnik do struct musi być struct" -#: type.c:351 type.c:372 type.c:392 +#: type.c:353 type.c:374 type.c:394 #, c-format msgid "indicator for simple data type has to be simple" msgstr "wskaźnik do prostego typu danych musi być prosty" -#: type.c:723 +#: type.c:625 +#, c-format +msgid "indicator struct \"%s\" has too few members" +msgstr "" + +#: type.c:633 +#, c-format +msgid "indicator struct \"%s\" has too many members" +msgstr "" + +#: type.c:744 #, c-format msgid "unrecognized descriptor item code %d" msgstr "niezrozumiały kod deskryptora elementu %d" -#: variable.c:89 variable.c:116 +#: variable.c:89 variable.c:115 #, c-format msgid "incorrectly formed variable \"%s\"" msgstr "niepoprawnie utworzona zmienna \"%s\"" -#: variable.c:139 +#: variable.c:138 #, c-format msgid "variable \"%s\" is not a pointer" msgstr "zmienna \"%s\" nie jest wskaźnikiem" -#: variable.c:142 variable.c:167 +#: variable.c:141 variable.c:166 #, c-format msgid "variable \"%s\" is not a pointer to a structure or a union" msgstr "zmienna \"%s\" nie jest wskazaniem na structure ani union" -#: variable.c:154 +#: variable.c:153 #, c-format msgid "variable \"%s\" is neither a structure nor a union" msgstr "zmienna \"%s\" nie jest ani structure ani union" -#: variable.c:164 +#: variable.c:163 #, c-format msgid "variable \"%s\" is not an array" msgstr "zmienna \"%s\" nie jest tablicą" -#: variable.c:233 variable.c:255 +#: variable.c:232 variable.c:254 #, c-format msgid "variable \"%s\" is not declared" msgstr "zmienna \"%s\" nie została zadeklarowana" -#: variable.c:494 +#: variable.c:492 #, c-format msgid "indicator variable must have an integer type" msgstr "zmienna wskaźnikowa musi mieć typ integer" -#: variable.c:506 +#: variable.c:504 #, c-format msgid "unrecognized data type name \"%s\"" msgstr "niezrozumiała nazwa typu danych \"%s\"" -#: variable.c:517 variable.c:525 variable.c:542 variable.c:545 +#: variable.c:515 variable.c:523 variable.c:540 variable.c:543 #, c-format msgid "multidimensional arrays are not supported" msgstr "wielowymiarowe tablice nie są wspierane" -#: variable.c:534 +#: variable.c:532 #, c-format msgid "multilevel pointers (more than 2 levels) are not supported; found %d level" msgid_plural "multilevel pointers (more than 2 levels) are not supported; found %d levels" -msgstr[0] "" -"wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono " -"%d poziom" -msgstr[1] "" -"wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono " -"%d poziomy" -msgstr[2] "" -"wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono " -"%d poziomów" - -#: variable.c:539 +msgstr[0] "wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono %d poziom" +msgstr[1] "wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono %d poziomy" +msgstr[2] "wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono %d poziomów" +msgstr[3] "" + +#: variable.c:537 #, c-format msgid "pointer to pointer is not supported for this data type" msgstr "wskazanie na wskaźnik nie jest wspierane dla tego typu danych" -#: variable.c:559 +#: variable.c:557 #, c-format msgid "multidimensional arrays for structures are not supported" msgstr "wielowymiarowe tablice dla struktur nie są wspierane" -#~ msgid "COPY FROM STDOUT is not possible" -#~ msgstr "COPY FROM STDOUT nie jest możliwe" - -#~ msgid "COPY TO STDIN is not possible" -#~ msgstr "COPY TO STDIN nie jest możliwe" diff --git a/src/interfaces/ecpg/test/expected/sql-sqlda.c b/src/interfaces/ecpg/test/expected/sql-sqlda.c index d474bd38bf6..ff881e10c1a 100644 --- a/src/interfaces/ecpg/test/expected/sql-sqlda.c +++ b/src/interfaces/ecpg/test/expected/sql-sqlda.c @@ -155,13 +155,8 @@ dump_sqlda(sqlda_t *sqlda) printf("name sqlda descriptor: '%s' value %ld\n", sqlda->sqlvar[i].sqlname.data, *(long int *)sqlda->sqlvar[i].sqldata); break; case ECPGt_long_long: - printf( -#ifdef _WIN32 - "name sqlda descriptor: '%s' value %I64d\n", -#else - "name sqlda descriptor: '%s' value %lld\n", -#endif - sqlda->sqlvar[i].sqlname.data, *(long long int *)sqlda->sqlvar[i].sqldata); + printf("name sqlda descriptor: '%s' value %lld\n", + sqlda->sqlvar[i].sqlname.data, *(long long int *)sqlda->sqlvar[i].sqldata); break; case ECPGt_double: printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata); @@ -188,19 +183,19 @@ main (void) -#line 71 "sqlda.pgc" +#line 66 "sqlda.pgc" char * stmt1 = "SELECT * FROM t1" ; -#line 72 "sqlda.pgc" +#line 67 "sqlda.pgc" char * stmt2 = "SELECT * FROM t1 WHERE id = ?" ; -#line 73 "sqlda.pgc" +#line 68 "sqlda.pgc" int rec ; -#line 74 "sqlda.pgc" +#line 69 "sqlda.pgc" int id ; /* exec sql end declare section */ -#line 75 "sqlda.pgc" +#line 70 "sqlda.pgc" char msg[128]; @@ -209,42 +204,42 @@ main (void) strcpy(msg, "connect"); { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , "regress1", 0); -#line 82 "sqlda.pgc" +#line 77 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 82 "sqlda.pgc" +#line 77 "sqlda.pgc" strcpy(msg, "set"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set datestyle to iso", ECPGt_EOIT, ECPGt_EORT); -#line 85 "sqlda.pgc" +#line 80 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 85 "sqlda.pgc" +#line 80 "sqlda.pgc" strcpy(msg, "create"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table t1 ( id integer , t text , d1 numeric , d2 float8 , c char ( 10 ) , big bigint )", ECPGt_EOIT, ECPGt_EORT); -#line 95 "sqlda.pgc" +#line 90 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 95 "sqlda.pgc" +#line 90 "sqlda.pgc" strcpy(msg, "insert"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into t1 values ( 1 , 'a' , 1.0 , 1 , 'a' , 1111111111111111111 ) , ( 2 , null , null , null , null , null ) , ( 3 , 'c' , 0.0 , 3 , 'c' , 3333333333333333333 ) , ( 4 , 'd' , 'NaN' , 4 , 'd' , 4444444444444444444 ) , ( 5 , 'e' , 0.001234 , 5 , 'e' , 5555555555555555555 )", ECPGt_EOIT, ECPGt_EORT); -#line 103 "sqlda.pgc" +#line 98 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 103 "sqlda.pgc" +#line 98 "sqlda.pgc" strcpy(msg, "commit"); { ECPGtrans(__LINE__, NULL, "commit"); -#line 106 "sqlda.pgc" +#line 101 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 106 "sqlda.pgc" +#line 101 "sqlda.pgc" /* SQLDA test for getting all records from a table */ @@ -253,29 +248,29 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "prepare"); { ECPGprepare(__LINE__, NULL, 0, "st_id1", stmt1); -#line 113 "sqlda.pgc" +#line 108 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 113 "sqlda.pgc" +#line 108 "sqlda.pgc" strcpy(msg, "declare"); /* declare mycur1 cursor for $1 */ -#line 116 "sqlda.pgc" +#line 111 "sqlda.pgc" strcpy(msg, "open"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare mycur1 cursor for $1", ECPGt_char_variable,(ECPGprepared_statement(NULL, "st_id1", __LINE__)),(long)1,(long)1,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); -#line 119 "sqlda.pgc" +#line 114 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 119 "sqlda.pgc" +#line 114 "sqlda.pgc" /* exec sql whenever not found break ; */ -#line 121 "sqlda.pgc" +#line 116 "sqlda.pgc" rec = 0; @@ -285,13 +280,13 @@ if (sqlca.sqlcode < 0) exit (1);} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch 1 from mycur1", ECPGt_EOIT, ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); -#line 127 "sqlda.pgc" +#line 122 "sqlda.pgc" if (sqlca.sqlcode == ECPG_NOT_FOUND) break; -#line 127 "sqlda.pgc" +#line 122 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 127 "sqlda.pgc" +#line 122 "sqlda.pgc" printf("FETCH RECORD %d\n", ++rec); @@ -299,23 +294,23 @@ if (sqlca.sqlcode < 0) exit (1);} } /* exec sql whenever not found continue ; */ -#line 133 "sqlda.pgc" +#line 128 "sqlda.pgc" strcpy(msg, "close"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close mycur1", ECPGt_EOIT, ECPGt_EORT); -#line 136 "sqlda.pgc" +#line 131 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 136 "sqlda.pgc" +#line 131 "sqlda.pgc" strcpy(msg, "deallocate"); { ECPGdeallocate(__LINE__, 0, NULL, "st_id1"); -#line 139 "sqlda.pgc" +#line 134 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 139 "sqlda.pgc" +#line 134 "sqlda.pgc" free(outp_sqlda); @@ -326,35 +321,35 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "prepare"); { ECPGprepare(__LINE__, NULL, 0, "st_id2", stmt1); -#line 148 "sqlda.pgc" +#line 143 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 148 "sqlda.pgc" +#line 143 "sqlda.pgc" strcpy(msg, "declare"); /* declare mycur2 cursor for $1 */ -#line 151 "sqlda.pgc" +#line 146 "sqlda.pgc" strcpy(msg, "open"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare mycur2 cursor for $1", ECPGt_char_variable,(ECPGprepared_statement(NULL, "st_id2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); -#line 154 "sqlda.pgc" +#line 149 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 154 "sqlda.pgc" +#line 149 "sqlda.pgc" strcpy(msg, "fetch"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch all from mycur2", ECPGt_EOIT, ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); -#line 157 "sqlda.pgc" +#line 152 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 157 "sqlda.pgc" +#line 152 "sqlda.pgc" outp_sqlda1 = outp_sqlda; @@ -372,18 +367,18 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "close"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close mycur2", ECPGt_EOIT, ECPGt_EORT); -#line 173 "sqlda.pgc" +#line 168 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 173 "sqlda.pgc" +#line 168 "sqlda.pgc" strcpy(msg, "deallocate"); { ECPGdeallocate(__LINE__, 0, NULL, "st_id2"); -#line 176 "sqlda.pgc" +#line 171 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 176 "sqlda.pgc" +#line 171 "sqlda.pgc" /* SQLDA test for getting one record using an input descriptor */ @@ -407,10 +402,10 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "prepare"); { ECPGprepare(__LINE__, NULL, 0, "st_id3", stmt2); -#line 198 "sqlda.pgc" +#line 193 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 198 "sqlda.pgc" +#line 193 "sqlda.pgc" strcpy(msg, "execute"); @@ -419,20 +414,20 @@ if (sqlca.sqlcode < 0) exit (1);} ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); -#line 201 "sqlda.pgc" +#line 196 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 201 "sqlda.pgc" +#line 196 "sqlda.pgc" dump_sqlda(outp_sqlda); strcpy(msg, "deallocate"); { ECPGdeallocate(__LINE__, 0, NULL, "st_id3"); -#line 206 "sqlda.pgc" +#line 201 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 206 "sqlda.pgc" +#line 201 "sqlda.pgc" free(inp_sqlda); @@ -443,10 +438,10 @@ if (sqlca.sqlcode < 0) exit (1);} */ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , "con2", 0); -#line 215 "sqlda.pgc" +#line 210 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 215 "sqlda.pgc" +#line 210 "sqlda.pgc" /* @@ -468,10 +463,10 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "prepare"); { ECPGprepare(__LINE__, "con2", 0, "st_id4", stmt2); -#line 235 "sqlda.pgc" +#line 230 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 235 "sqlda.pgc" +#line 230 "sqlda.pgc" strcpy(msg, "execute"); @@ -480,28 +475,28 @@ if (sqlca.sqlcode < 0) exit (1);} ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); -#line 238 "sqlda.pgc" +#line 233 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 238 "sqlda.pgc" +#line 233 "sqlda.pgc" dump_sqlda(outp_sqlda); strcpy(msg, "commit"); { ECPGtrans(__LINE__, "con2", "commit"); -#line 243 "sqlda.pgc" +#line 238 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 243 "sqlda.pgc" +#line 238 "sqlda.pgc" strcpy(msg, "deallocate"); { ECPGdeallocate(__LINE__, 0, NULL, "st_id4"); -#line 246 "sqlda.pgc" +#line 241 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 246 "sqlda.pgc" +#line 241 "sqlda.pgc" free(inp_sqlda); @@ -509,36 +504,36 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "disconnect"); { ECPGdisconnect(__LINE__, "con2"); -#line 252 "sqlda.pgc" +#line 247 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 252 "sqlda.pgc" +#line 247 "sqlda.pgc" /* End test */ strcpy(msg, "drop"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table t1", ECPGt_EOIT, ECPGt_EORT); -#line 257 "sqlda.pgc" +#line 252 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 257 "sqlda.pgc" +#line 252 "sqlda.pgc" strcpy(msg, "commit"); { ECPGtrans(__LINE__, NULL, "commit"); -#line 260 "sqlda.pgc" +#line 255 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 260 "sqlda.pgc" +#line 255 "sqlda.pgc" strcpy(msg, "disconnect"); { ECPGdisconnect(__LINE__, "CURRENT"); -#line 263 "sqlda.pgc" +#line 258 "sqlda.pgc" if (sqlca.sqlcode < 0) exit (1);} -#line 263 "sqlda.pgc" +#line 258 "sqlda.pgc" return 0; diff --git a/src/interfaces/ecpg/test/expected/sql-sqlda.stderr b/src/interfaces/ecpg/test/expected/sql-sqlda.stderr index dfe6b13055f..51ef236a50e 100644 --- a/src/interfaces/ecpg/test/expected/sql-sqlda.stderr +++ b/src/interfaces/ecpg/test/expected/sql-sqlda.stderr @@ -2,459 +2,459 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ECPGconnect: opening database ecpg1_regression on port [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 85: query: set datestyle to iso; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 80: query: set datestyle to iso; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 85: using PQexec +[NO_PID]: ecpg_execute on line 80: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 85: OK: SET +[NO_PID]: ecpg_process_output on line 80: OK: SET [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 88: query: create table t1 ( id integer , t text , d1 numeric , d2 float8 , c char ( 10 ) , big bigint ); with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 83: query: create table t1 ( id integer , t text , d1 numeric , d2 float8 , c char ( 10 ) , big bigint ); with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 88: using PQexec +[NO_PID]: ecpg_execute on line 83: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 88: OK: CREATE TABLE +[NO_PID]: ecpg_process_output on line 83: OK: CREATE TABLE [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 98: query: insert into t1 values ( 1 , 'a' , 1.0 , 1 , 'a' , 1111111111111111111 ) , ( 2 , null , null , null , null , null ) , ( 3 , 'c' , 0.0 , 3 , 'c' , 3333333333333333333 ) , ( 4 , 'd' , 'NaN' , 4 , 'd' , 4444444444444444444 ) , ( 5 , 'e' , 0.001234 , 5 , 'e' , 5555555555555555555 ); with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 93: query: insert into t1 values ( 1 , 'a' , 1.0 , 1 , 'a' , 1111111111111111111 ) , ( 2 , null , null , null , null , null ) , ( 3 , 'c' , 0.0 , 3 , 'c' , 3333333333333333333 ) , ( 4 , 'd' , 'NaN' , 4 , 'd' , 4444444444444444444 ) , ( 5 , 'e' , 0.001234 , 5 , 'e' , 5555555555555555555 ); with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 98: using PQexec +[NO_PID]: ecpg_execute on line 93: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 98: OK: INSERT 0 5 +[NO_PID]: ecpg_process_output on line 93: OK: INSERT 0 5 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 106: action "commit"; connection "regress1" +[NO_PID]: ECPGtrans on line 101: action "commit"; connection "regress1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: prepare_common on line 113: name st_id1; query: "SELECT * FROM t1" +[NO_PID]: prepare_common on line 108: name st_id1; query: "SELECT * FROM t1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 119: query: declare mycur1 cursor for SELECT * FROM t1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 114: query: declare mycur1 cursor for SELECT * FROM t1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 119: using PQexec +[NO_PID]: ecpg_execute on line 114: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 119: OK: DECLARE CURSOR +[NO_PID]: ecpg_process_output on line 114: OK: DECLARE CURSOR [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 122: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: using PQexec +[NO_PID]: ecpg_execute on line 122: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 122: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 127 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 122 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: new sqlda was built +[NO_PID]: ecpg_process_output on line 122: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 1 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 1 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: a offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: a offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 1 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 1 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: a offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: a offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 1111111111111111111 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 1111111111111111111 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 122: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 122: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: using PQexec +[NO_PID]: ecpg_execute on line 122: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 122: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 127 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 122 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: new sqlda was built +[NO_PID]: ecpg_process_output on line 122: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 2 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 2 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 1 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 1 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 2 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 2 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 3 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 3 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 4 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 4 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 5 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 5 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 122: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 122: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: using PQexec +[NO_PID]: ecpg_execute on line 122: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 122: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 127 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 122 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: new sqlda was built +[NO_PID]: ecpg_process_output on line 122: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 3 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 3 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: c offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: c offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 3 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 3 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: c offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: c offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 3333333333333333333 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 3333333333333333333 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 122: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 122: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: using PQexec +[NO_PID]: ecpg_execute on line 122: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 122: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 127 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 122 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: new sqlda was built +[NO_PID]: ecpg_process_output on line 122: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 4444444444444444444 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 4444444444444444444 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 122: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 122: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: using PQexec +[NO_PID]: ecpg_execute on line 122: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 122: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 127 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 122 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: new sqlda was built +[NO_PID]: ecpg_process_output on line 122: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 5 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 5 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: e offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: e offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 5 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 5 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: e offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: e offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 127 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 122 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 127: RESULT: 5555555555555555555 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 122: RESULT: 5555555555555555555 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 122: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 122: query: fetch 1 from mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 127: using PQexec +[NO_PID]: ecpg_execute on line 122: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 127: correctly got 0 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 122: correctly got 0 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: raising sqlcode 100 on line 127: no data found on line 127 +[NO_PID]: raising sqlcode 100 on line 122: no data found on line 122 [NO_PID]: sqlca: code: 100, state: 02000 -[NO_PID]: ecpg_execute on line 136: query: close mycur1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 131: query: close mycur1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 136: using PQexec +[NO_PID]: ecpg_execute on line 131: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 136: OK: CLOSE CURSOR +[NO_PID]: ecpg_process_output on line 131: OK: CLOSE CURSOR [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: deallocate_one on line 139: name st_id1 +[NO_PID]: deallocate_one on line 134: name st_id1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: prepare_common on line 148: name st_id2; query: "SELECT * FROM t1" +[NO_PID]: prepare_common on line 143: name st_id2; query: "SELECT * FROM t1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 154: query: declare mycur2 cursor for SELECT * FROM t1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 149: query: declare mycur2 cursor for SELECT * FROM t1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 154: using PQexec +[NO_PID]: ecpg_execute on line 149: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 154: OK: DECLARE CURSOR +[NO_PID]: ecpg_process_output on line 149: OK: DECLARE CURSOR [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 157: query: fetch all from mycur2; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 152: query: fetch all from mycur2; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 157: using PQexec +[NO_PID]: ecpg_execute on line 152: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: correctly got 5 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 152: correctly got 5 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 157 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 152 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: new sqlda was built +[NO_PID]: ecpg_process_output on line 152: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 4 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 4 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 5 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 5 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 4 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 4 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: e offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: e offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 4 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 4 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 4 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 4 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 5 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 5 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 4 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 4 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: e offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: e offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 4 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 4 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 5555555555555555555 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 5555555555555555555 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 152: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 157 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 152 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: new sqlda was built +[NO_PID]: ecpg_process_output on line 152: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 3 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 3 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 3 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 3 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 3 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 3 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 3 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 3 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 3 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 3 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 3 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 3 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 4444444444444444444 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 4444444444444444444 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 152: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 157 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 152 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: new sqlda was built +[NO_PID]: ecpg_process_output on line 152: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 2 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 2 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 3 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 3 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 2 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 2 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: c offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: c offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 2 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 2 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 2 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 2 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 3 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 3 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 2 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 2 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: c offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: c offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 2 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 2 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 3333333333333333333 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 3333333333333333333 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 152: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 157 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 152 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: new sqlda was built +[NO_PID]: ecpg_process_output on line 152: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 1 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 1 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 2 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 2 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 1 col 1 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 1 col 1 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 1 col 2 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 1 col 2 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 1 col 3 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 1 col 3 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 1 col 4 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 1 col 4 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 1 col 5 IS NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 1 col 5 IS NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 152: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 157 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 152 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: new sqlda was built +[NO_PID]: ecpg_process_output on line 152: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 1 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 1 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: a offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: a offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 1 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 1 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: a offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: a offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 157 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 152 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 157: RESULT: 1111111111111111111 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 152: RESULT: 1111111111111111111 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 157: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 152: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 173: query: close mycur2; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 168: query: close mycur2; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 173: using PQexec +[NO_PID]: ecpg_execute on line 168: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 173: OK: CLOSE CURSOR +[NO_PID]: ecpg_process_output on line 168: OK: CLOSE CURSOR [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: deallocate_one on line 176: name st_id2 +[NO_PID]: deallocate_one on line 171: name st_id2 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: prepare_common on line 198: name st_id3; query: "SELECT * FROM t1 WHERE id = $1" +[NO_PID]: prepare_common on line 193: name st_id3; query: "SELECT * FROM t1 WHERE id = $1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 201: query: SELECT * FROM t1 WHERE id = $1; with 1 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 196: query: SELECT * FROM t1 WHERE id = $1; with 1 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 201: using PQexecPrepared for "SELECT * FROM t1 WHERE id = $1" +[NO_PID]: ecpg_execute on line 196: using PQexecPrepared for "SELECT * FROM t1 WHERE id = $1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_free_params on line 201: parameter 1 = 4 +[NO_PID]: ecpg_free_params on line 196: parameter 1 = 4 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 201: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 196: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 201 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 196 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 201: new sqlda was built +[NO_PID]: ecpg_process_output on line 196: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 201 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 196 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 201: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 196: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 201 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 196 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 201: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 196: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 201 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 196 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 201 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 196 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 201: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 196: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 201 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 196 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 201: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 196: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 201 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 196 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 201: RESULT: 4444444444444444444 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 196: RESULT: 4444444444444444444 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 201: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 196: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: deallocate_one on line 206: name st_id3 +[NO_PID]: deallocate_one on line 201: name st_id3 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ECPGconnect: opening database ecpg1_regression on port [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: prepare_common on line 235: name st_id4; query: "SELECT * FROM t1 WHERE id = $1" +[NO_PID]: prepare_common on line 230: name st_id4; query: "SELECT * FROM t1 WHERE id = $1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 238: query: SELECT * FROM t1 WHERE id = $1; with 1 parameter(s) on connection con2 +[NO_PID]: ecpg_execute on line 233: query: SELECT * FROM t1 WHERE id = $1; with 1 parameter(s) on connection con2 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 238: using PQexecPrepared for "SELECT * FROM t1 WHERE id = $1" +[NO_PID]: ecpg_execute on line 233: using PQexecPrepared for "SELECT * FROM t1 WHERE id = $1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_free_params on line 238: parameter 1 = 4 +[NO_PID]: ecpg_free_params on line 233: parameter 1 = 4 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 238: correctly got 1 tuples with 6 fields +[NO_PID]: ecpg_process_output on line 233: correctly got 1 tuples with 6 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_build_native_sqlda on line 238 sqld = 6 +[NO_PID]: ecpg_build_native_sqlda on line 233 sqld = 6 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 238: new sqlda was built +[NO_PID]: ecpg_process_output on line 233: new sqlda was built [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 238 row 0 col 0 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 233 row 0 col 0 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 238: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 233: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 238 row 0 col 1 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 233 row 0 col 1 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 238: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 233: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 238 row 0 col 2 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 233 row 0 col 2 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 238 row 0 col 3 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 233 row 0 col 3 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 238: RESULT: 4 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 233: RESULT: 4 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 238 row 0 col 4 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 233 row 0 col 4 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 238: RESULT: d offset: -1; array: no +[NO_PID]: ecpg_get_data on line 233: RESULT: d offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_set_native_sqlda on line 238 row 0 col 5 IS NOT NULL +[NO_PID]: ecpg_set_native_sqlda on line 233 row 0 col 5 IS NOT NULL [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 238: RESULT: 4444444444444444444 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 233: RESULT: 4444444444444444444 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 238: putting result (1 tuple 6 fields) into sqlda descriptor +[NO_PID]: ecpg_process_output on line 233: putting result (1 tuple 6 fields) into sqlda descriptor [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 243: action "commit"; connection "con2" +[NO_PID]: ECPGtrans on line 238: action "commit"; connection "con2" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: deallocate_one on line 246: name st_id4 +[NO_PID]: deallocate_one on line 241: name st_id4 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection con2 closed [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 257: query: drop table t1; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 252: query: drop table t1; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 257: using PQexec +[NO_PID]: ecpg_execute on line 252: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_process_output on line 257: OK: DROP TABLE +[NO_PID]: ecpg_process_output on line 252: OK: DROP TABLE [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 260: action "commit"; connection "regress1" +[NO_PID]: ECPGtrans on line 255: action "commit"; connection "regress1" [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection regress1 closed [NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/ecpg/test/sql/sqlda.pgc b/src/interfaces/ecpg/test/sql/sqlda.pgc index e551385eaa4..f7aa296ebf9 100644 --- a/src/interfaces/ecpg/test/sql/sqlda.pgc +++ b/src/interfaces/ecpg/test/sql/sqlda.pgc @@ -40,13 +40,8 @@ dump_sqlda(sqlda_t *sqlda) printf("name sqlda descriptor: '%s' value %ld\n", sqlda->sqlvar[i].sqlname.data, *(long int *)sqlda->sqlvar[i].sqldata); break; case ECPGt_long_long: - printf( -#ifdef _WIN32 - "name sqlda descriptor: '%s' value %I64d\n", -#else - "name sqlda descriptor: '%s' value %lld\n", -#endif - sqlda->sqlvar[i].sqlname.data, *(long long int *)sqlda->sqlvar[i].sqldata); + printf("name sqlda descriptor: '%s' value %lld\n", + sqlda->sqlvar[i].sqlname.data, *(long long int *)sqlda->sqlvar[i].sqldata); break; case ECPGt_double: printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata); diff --git a/src/interfaces/libpq/po/de.po b/src/interfaces/libpq/po/de.po index 860087883c0..927ae8249f0 100644 --- a/src/interfaces/libpq/po/de.po +++ b/src/interfaces/libpq/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-05-02 01:15+0000\n" +"POT-Creation-Date: 2026-02-07 09:16+0000\n" "PO-Revision-Date: 2022-04-01 11:08+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" @@ -54,16 +54,16 @@ msgstr "konnte Nonce nicht erzeugen\n" #: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657 #: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362 #: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282 -#: fe-connect.c:913 fe-connect.c:1462 fe-connect.c:1631 fe-connect.c:2982 -#: fe-connect.c:4714 fe-connect.c:4975 fe-connect.c:5094 fe-connect.c:5346 -#: fe-connect.c:5427 fe-connect.c:5526 fe-connect.c:5782 fe-connect.c:5811 -#: fe-connect.c:5883 fe-connect.c:5907 fe-connect.c:5925 fe-connect.c:6026 -#: fe-connect.c:6035 fe-connect.c:6393 fe-connect.c:6543 fe-connect.c:6809 -#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3145 fe-exec.c:3337 -#: fe-exec.c:4172 fe-exec.c:4339 fe-gssapi-common.c:111 fe-lobj.c:881 -#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023 -#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:500 -#: fe-secure-openssl.c:446 fe-secure-openssl.c:1124 +#: fe-connect.c:914 fe-connect.c:1463 fe-connect.c:1632 fe-connect.c:2983 +#: fe-connect.c:4715 fe-connect.c:4990 fe-connect.c:5109 fe-connect.c:5361 +#: fe-connect.c:5442 fe-connect.c:5541 fe-connect.c:5797 fe-connect.c:5826 +#: fe-connect.c:5898 fe-connect.c:5922 fe-connect.c:5940 fe-connect.c:6041 +#: fe-connect.c:6050 fe-connect.c:6408 fe-connect.c:6558 fe-connect.c:6826 +#: fe-exec.c:691 fe-exec.c:881 fe-exec.c:1228 fe-exec.c:3150 fe-exec.c:3342 +#: fe-exec.c:4211 fe-exec.c:4405 fe-gssapi-common.c:111 fe-lobj.c:881 +#: fe-protocol3.c:976 fe-protocol3.c:991 fe-protocol3.c:1024 +#: fe-protocol3.c:1745 fe-secure-common.c:110 fe-secure-gssapi.c:512 +#: fe-secure-gssapi.c:687 fe-secure-openssl.c:446 fe-secure-openssl.c:1124 msgid "out of memory\n" msgstr "Speicher aufgebraucht\n" @@ -217,12 +217,12 @@ msgstr "Authentifizierungsmethode %u nicht unterstützt\n" msgid "user name lookup failure: error code %lu\n" msgstr "Fehler beim Nachschlagen des Benutzernamens: Fehlercode %lu\n" -#: fe-auth.c:1117 fe-connect.c:2857 +#: fe-auth.c:1117 fe-connect.c:2858 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "konnte lokale Benutzer-ID %d nicht nachschlagen: %s\n" -#: fe-auth.c:1122 fe-connect.c:2862 +#: fe-auth.c:1122 fe-connect.c:2863 #, c-format msgid "local user with ID %d does not exist\n" msgstr "lokaler Benutzer mit ID %d existiert nicht\n" @@ -240,536 +240,551 @@ msgstr "Wert von password_encryption ist zu lang\n" msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "unbekannter Passwortverschlüsselungsalgorithmus »%s«\n" -#: fe-connect.c:1096 +#: fe-connect.c:1097 #, c-format msgid "could not match %d host names to %d hostaddr values\n" msgstr "fehlerhafte Angabe: %d Hostnamen und %d hostaddr-Angaben\n" -#: fe-connect.c:1182 +#: fe-connect.c:1183 #, c-format msgid "could not match %d port numbers to %d hosts\n" msgstr "fehlerhafte Angabe: %d Portnummern und %d Hosts\n" -#: fe-connect.c:1275 fe-connect.c:1301 fe-connect.c:1343 fe-connect.c:1352 -#: fe-connect.c:1385 fe-connect.c:1429 +#: fe-connect.c:1276 fe-connect.c:1302 fe-connect.c:1344 fe-connect.c:1353 +#: fe-connect.c:1386 fe-connect.c:1430 #, c-format msgid "invalid %s value: \"%s\"\n" msgstr "ungültiger %s-Wert: »%s«\n" -#: fe-connect.c:1322 +#: fe-connect.c:1323 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "sslmode-Wert »%s« ist ungültig, wenn SSL-Unterstützung nicht einkompiliert worden ist\n" -#: fe-connect.c:1370 +#: fe-connect.c:1371 msgid "invalid SSL protocol version range\n" msgstr "ungültiges SSL-Protokollsintervall\n" -#: fe-connect.c:1395 +#: fe-connect.c:1396 #, c-format msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n" msgstr "gssencmode-Wert »%s« ist ungültig, wenn GSSAPI-Unterstützung nicht einkompiliert worden ist\n" -#: fe-connect.c:1655 +#: fe-connect.c:1656 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "konnte Socket nicht auf TCP »No Delay«-Modus umstellen: %s\n" -#: fe-connect.c:1717 +#: fe-connect.c:1718 #, c-format msgid "connection to server on socket \"%s\" failed: " msgstr "Verbindung zum Server auf Socket »%s« fehlgeschlagen: " -#: fe-connect.c:1744 +#: fe-connect.c:1745 #, c-format msgid "connection to server at \"%s\" (%s), port %s failed: " msgstr "Verbindung zum Server auf »%s« (%s), Port %s fehlgeschlagen: " -#: fe-connect.c:1749 +#: fe-connect.c:1750 #, c-format msgid "connection to server at \"%s\", port %s failed: " msgstr "Verbindung zum Server auf »%s«, Port %s fehlgeschlagen: " -#: fe-connect.c:1774 +#: fe-connect.c:1775 msgid "\tIs the server running locally and accepting connections on that socket?\n" msgstr "\tLäuft der Server lokal und akzeptiert er Verbindungen auf diesem Socket?\n" -#: fe-connect.c:1778 +#: fe-connect.c:1779 msgid "\tIs the server running on that host and accepting TCP/IP connections?\n" msgstr "\tLäuft der Server auf diesem Host und akzeptiert er TCP/IP-Verbindungen?\n" -#: fe-connect.c:1842 +#: fe-connect.c:1843 #, c-format msgid "invalid integer value \"%s\" for connection option \"%s\"\n" msgstr "ungültiger Zahlenwert »%s« für Verbindungsoption »%s«\n" -#: fe-connect.c:1872 fe-connect.c:1907 fe-connect.c:1943 fe-connect.c:2032 -#: fe-connect.c:2645 +#: fe-connect.c:1873 fe-connect.c:1908 fe-connect.c:1944 fe-connect.c:2033 +#: fe-connect.c:2646 #, c-format msgid "%s(%s) failed: %s\n" msgstr "%s(%s) fehlgeschlagen: %s\n" -#: fe-connect.c:1997 +#: fe-connect.c:1998 #, c-format msgid "%s(%s) failed: error code %d\n" msgstr "%s(%s) fehlgeschlagen: Fehlercode %d\n" -#: fe-connect.c:2312 +#: fe-connect.c:2313 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "ungültiger Verbindungszustand, möglicherweise ein Speicherproblem\n" -#: fe-connect.c:2391 +#: fe-connect.c:2392 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "ungültige Portnummer: »%s«\n" -#: fe-connect.c:2407 +#: fe-connect.c:2408 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "konnte Hostnamen »%s« nicht in Adresse übersetzen: %s\n" -#: fe-connect.c:2420 +#: fe-connect.c:2421 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "konnte Netzwerkadresse »%s« nicht interpretieren: %s\n" -#: fe-connect.c:2433 +#: fe-connect.c:2434 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)\n" -#: fe-connect.c:2448 +#: fe-connect.c:2449 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "konnte Unix-Domain-Socket-Pfad »%s« nicht in Adresse übersetzen: %s\n" -#: fe-connect.c:2574 +#: fe-connect.c:2575 #, c-format msgid "could not create socket: %s\n" msgstr "konnte Socket nicht erzeugen: %s\n" -#: fe-connect.c:2605 +#: fe-connect.c:2606 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %s\n" -#: fe-connect.c:2615 +#: fe-connect.c:2616 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "konnte Socket nicht auf »Close on exec«-Modus umstellen: %s\n" -#: fe-connect.c:2773 +#: fe-connect.c:2774 #, c-format msgid "could not get socket error status: %s\n" msgstr "konnte Socket-Fehlerstatus nicht ermitteln: %s\n" -#: fe-connect.c:2801 +#: fe-connect.c:2802 #, c-format msgid "could not get client address from socket: %s\n" msgstr "konnte Client-Adresse vom Socket nicht ermitteln: %s\n" -#: fe-connect.c:2843 +#: fe-connect.c:2844 msgid "requirepeer parameter is not supported on this platform\n" msgstr "Parameter »requirepeer« wird auf dieser Plattform nicht unterstützt\n" -#: fe-connect.c:2846 +#: fe-connect.c:2847 #, c-format msgid "could not get peer credentials: %s\n" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %s\n" -#: fe-connect.c:2870 +#: fe-connect.c:2871 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer gibt »%s« an, aber tatsächlicher Benutzername der Gegenstelle ist »%s«\n" -#: fe-connect.c:2910 +#: fe-connect.c:2911 #, c-format msgid "could not send GSSAPI negotiation packet: %s\n" msgstr "konnte Paket zur GSSAPI-Verhandlung nicht senden: %s\n" -#: fe-connect.c:2922 +#: fe-connect.c:2923 msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)\n" msgstr "GSSAPI-Verschlüsselung war gefordert aber war nicht möglich (möglicherweise kein Credential-Cache, keine Serverunterstützung oder lokales Socket wird verwendet)\n" -#: fe-connect.c:2964 +#: fe-connect.c:2965 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "konnte Paket zur SSL-Verhandlung nicht senden: %s\n" -#: fe-connect.c:2995 +#: fe-connect.c:2996 #, c-format msgid "could not send startup packet: %s\n" msgstr "konnte Startpaket nicht senden: %s\n" -#: fe-connect.c:3071 +#: fe-connect.c:3072 msgid "server does not support SSL, but SSL was required\n" msgstr "Server unterstützt kein SSL, aber SSL wurde verlangt\n" -#: fe-connect.c:3089 +#: fe-connect.c:3090 msgid "server sent an error response during SSL exchange\n" msgstr "Server hat während des SSL-Austauschs eine Fehlermeldung gesendet\n" -#: fe-connect.c:3095 +#: fe-connect.c:3096 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "ungültige Antwort auf SSL-Verhandlungspaket empfangen: %c\n" -#: fe-connect.c:3116 +#: fe-connect.c:3117 msgid "received unencrypted data after SSL response\n" msgstr "unverschlüsselte Daten nach SSL-Antwort empfangen\n" -#: fe-connect.c:3197 +#: fe-connect.c:3198 msgid "server doesn't support GSSAPI encryption, but it was required\n" msgstr "Server unterstützt keine GSSAPI-Verschlüsselung, sie wurde aber verlangt\n" -#: fe-connect.c:3209 +#: fe-connect.c:3210 #, c-format msgid "received invalid response to GSSAPI negotiation: %c\n" msgstr "ungültige Antwort auf GSSAPI-Verhandlungspaket empfangen: %c\n" -#: fe-connect.c:3228 +#: fe-connect.c:3229 msgid "received unencrypted data after GSSAPI encryption response\n" msgstr "unverschlüsselte Daten nach GSSAPI-Verschlüsselungsantwort empfangen\n" -#: fe-connect.c:3293 fe-connect.c:3318 +#: fe-connect.c:3294 fe-connect.c:3319 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "Authentifizierungsanfrage wurde vom Server erwartet, aber %c wurde empfangen\n" -#: fe-connect.c:3525 +#: fe-connect.c:3526 msgid "unexpected message from server during startup\n" msgstr "unerwartete Nachricht vom Server beim Start\n" -#: fe-connect.c:3617 +#: fe-connect.c:3618 msgid "session is read-only\n" msgstr "Sitzung ist read-only\n" -#: fe-connect.c:3620 +#: fe-connect.c:3621 msgid "session is not read-only\n" msgstr "Sitzung ist nicht read-only\n" -#: fe-connect.c:3674 +#: fe-connect.c:3675 msgid "server is in hot standby mode\n" msgstr "Server ist im Hot-Standby-Modus\n" -#: fe-connect.c:3677 +#: fe-connect.c:3678 msgid "server is not in hot standby mode\n" msgstr "Server ist nicht im Hot-Standby-Modus\n" -#: fe-connect.c:3795 fe-connect.c:3847 +#: fe-connect.c:3796 fe-connect.c:3848 #, c-format msgid "\"%s\" failed\n" msgstr "»%s« fehlgeschlagen\n" -#: fe-connect.c:3861 +#: fe-connect.c:3862 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "ungültiger Verbindungszustand %d, möglicherweise ein Speicherproblem\n" -#: fe-connect.c:4307 fe-connect.c:4367 +#: fe-connect.c:4308 fe-connect.c:4368 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc »%s« während PGEVT_CONNRESET-Ereignis fehlgeschlagen\n" -#: fe-connect.c:4727 +#: fe-connect.c:4728 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "ungültige LDAP-URL »%s«: Schema muss ldap:// sein\n" -#: fe-connect.c:4742 +#: fe-connect.c:4743 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "ungültige LDAP-URL »%s«: Distinguished Name fehlt\n" -#: fe-connect.c:4754 fe-connect.c:4812 +#: fe-connect.c:4755 fe-connect.c:4813 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "ungültige LDAP-URL »%s«: muss genau ein Attribut haben\n" -#: fe-connect.c:4766 fe-connect.c:4828 +#: fe-connect.c:4767 fe-connect.c:4829 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "ungültige LDAP-URL »%s«: Suchbereich fehlt (base/one/sub)\n" -#: fe-connect.c:4778 +#: fe-connect.c:4779 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "ungültige LDAP-URL »%s«: kein Filter\n" -#: fe-connect.c:4800 +#: fe-connect.c:4801 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "ungültige LDAP-URL »%s«: ungültige Portnummer\n" -#: fe-connect.c:4838 +#: fe-connect.c:4839 msgid "could not create LDAP structure\n" msgstr "konnte LDAP-Struktur nicht erzeugen\n" -#: fe-connect.c:4914 +#: fe-connect.c:4915 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "Suche auf LDAP-Server fehlgeschlagen: %s\n" -#: fe-connect.c:4925 +#: fe-connect.c:4926 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAP-Suche ergab mehr als einen Eintrag\n" -#: fe-connect.c:4926 fe-connect.c:4938 +#: fe-connect.c:4927 fe-connect.c:4939 msgid "no entry found on LDAP lookup\n" msgstr "kein Eintrag gefunden bei LDAP-Suche\n" -#: fe-connect.c:4949 fe-connect.c:4962 +#: fe-connect.c:4950 fe-connect.c:4963 msgid "attribute has no values on LDAP lookup\n" msgstr "Attribut hat keine Werte bei LDAP-Suche\n" -#: fe-connect.c:5014 fe-connect.c:5033 fe-connect.c:5565 +#: fe-connect.c:4977 +#, c-format +msgid "connection info string size exceeds the maximum allowed (%d)\n" +msgstr "Größe der Verbindungsinfo-Zeichenkette überschreitet erlaubtes Maximum (%d)\n" + +#: fe-connect.c:5029 fe-connect.c:5048 fe-connect.c:5580 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "fehlendes »=« nach »%s« in der Zeichenkette der Verbindungsdaten\n" -#: fe-connect.c:5106 fe-connect.c:5750 fe-connect.c:6526 +#: fe-connect.c:5121 fe-connect.c:5765 fe-connect.c:6541 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "ungültige Verbindungsoption »%s«\n" -#: fe-connect.c:5122 fe-connect.c:5614 +#: fe-connect.c:5137 fe-connect.c:5629 msgid "unterminated quoted string in connection info string\n" msgstr "fehlendes schließendes Anführungszeichen (\") in der Zeichenkette der Verbindungsdaten\n" -#: fe-connect.c:5203 +#: fe-connect.c:5218 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "Definition von Service »%s« nicht gefunden\n" -#: fe-connect.c:5229 +#: fe-connect.c:5244 #, c-format msgid "service file \"%s\" not found\n" msgstr "Servicedatei »%s« nicht gefunden\n" -#: fe-connect.c:5243 +#: fe-connect.c:5258 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "Zeile %d zu lang in Servicedatei »%s«\n" -#: fe-connect.c:5314 fe-connect.c:5358 +#: fe-connect.c:5329 fe-connect.c:5373 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "Syntaxfehler in Servicedatei »%s«, Zeile %d\n" -#: fe-connect.c:5325 +#: fe-connect.c:5340 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "geschachtelte »service«-Definitionen werden nicht unterstützt in Servicedatei »%s«, Zeile %d\n" -#: fe-connect.c:6046 +#: fe-connect.c:6061 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "ungültige URI an interne Parserroutine weitergeleitet: »%s«\n" -#: fe-connect.c:6123 +#: fe-connect.c:6138 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "Ende der Eingabezeichenkette gefunden beim Suchen nach passendem »]« in IPv6-Hostadresse in URI: »%s«\n" -#: fe-connect.c:6130 +#: fe-connect.c:6145 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "IPv6-Hostadresse darf nicht leer sein in URI: »%s«\n" -#: fe-connect.c:6145 +#: fe-connect.c:6160 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "unerwartetes Zeichen »%c« an Position %d in URI (»:« oder »/« erwartet): »%s«\n" -#: fe-connect.c:6275 +#: fe-connect.c:6290 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "zusätzliches Schlüssel/Wert-Trennzeichen »=« in URI-Query-Parameter: »%s«\n" -#: fe-connect.c:6295 +#: fe-connect.c:6310 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "fehlendes Schlüssel/Wert-Trennzeichen »=« in URI-Query-Parameter: »%s«\n" -#: fe-connect.c:6347 +#: fe-connect.c:6362 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "ungültiger URI-Query-Parameter: »%s«\n" -#: fe-connect.c:6421 +#: fe-connect.c:6436 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "ungültiges Prozent-kodiertes Token: »%s«\n" -#: fe-connect.c:6431 +#: fe-connect.c:6446 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "verbotener Wert %%00 in Prozent-kodiertem Wert: »%s«\n" -#: fe-connect.c:6801 +#: fe-connect.c:6818 msgid "connection pointer is NULL\n" msgstr "Verbindung ist ein NULL-Zeiger\n" -#: fe-connect.c:7089 +#: fe-connect.c:7106 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "WARNUNG: Passwortdatei »%s« ist keine normale Datei\n" -#: fe-connect.c:7098 +#: fe-connect.c:7115 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "WARNUNG: Passwortdatei »%s« erlaubt Lesezugriff für Gruppe oder Andere; Rechte sollten u=rw (0600) oder weniger sein\n" -#: fe-connect.c:7206 +#: fe-connect.c:7223 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "Passwort wurde aus Datei »%s« gelesen\n" -#: fe-exec.c:449 fe-exec.c:3411 +#: fe-exec.c:449 fe-exec.c:3416 #, c-format msgid "row number %d is out of range 0..%d" msgstr "Zeilennummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:510 fe-protocol3.c:207 fe-protocol3.c:232 fe-protocol3.c:256 -#: fe-protocol3.c:274 fe-protocol3.c:371 fe-protocol3.c:743 +#: fe-exec.c:510 fe-protocol3.c:208 fe-protocol3.c:233 fe-protocol3.c:257 +#: fe-protocol3.c:275 fe-protocol3.c:372 fe-protocol3.c:744 msgid "out of memory" msgstr "Speicher aufgebraucht" -#: fe-exec.c:511 fe-protocol3.c:1939 +#: fe-exec.c:511 fe-protocol3.c:1953 #, c-format msgid "%s" msgstr "%s" -#: fe-exec.c:792 +#: fe-exec.c:797 msgid "write to server failed\n" msgstr "Schreiben zum Server fehlgeschlagen\n" -#: fe-exec.c:864 +#: fe-exec.c:869 msgid "NOTICE" msgstr "HINWEIS" -#: fe-exec.c:922 +#: fe-exec.c:927 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresult kann nicht mehr als INT_MAX Tupel enthalten" -#: fe-exec.c:934 +#: fe-exec.c:939 msgid "size_t overflow" msgstr "Überlauf von size_t" -#: fe-exec.c:1351 fe-exec.c:1477 fe-exec.c:1526 +#: fe-exec.c:1356 fe-exec.c:1482 fe-exec.c:1531 msgid "command string is a null pointer\n" msgstr "Befehlszeichenkette ist ein NULL-Zeiger\n" -#: fe-exec.c:1483 fe-exec.c:1532 fe-exec.c:1628 +#: fe-exec.c:1488 fe-exec.c:1537 fe-exec.c:1633 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "Anzahl der Parameter muss zwischen 0 und %d sein\n" -#: fe-exec.c:1520 fe-exec.c:1622 +#: fe-exec.c:1525 fe-exec.c:1627 msgid "statement name is a null pointer\n" msgstr "Anweisungsname ist ein NULL-Zeiger\n" -#: fe-exec.c:1664 fe-exec.c:3256 +#: fe-exec.c:1669 fe-exec.c:3261 msgid "no connection to the server\n" msgstr "keine Verbindung mit dem Server\n" -#: fe-exec.c:1673 fe-exec.c:3265 +#: fe-exec.c:1678 fe-exec.c:3270 msgid "another command is already in progress\n" msgstr "ein anderer Befehl ist bereits in Ausführung\n" -#: fe-exec.c:1704 +#: fe-exec.c:1709 msgid "cannot queue commands during COPY\n" msgstr "während COPY können keine Befehle aufgereiht werden\n" -#: fe-exec.c:1822 +#: fe-exec.c:1827 msgid "length must be given for binary parameter\n" msgstr "für binäre Parameter muss eine Länge angegeben werden\n" -#: fe-exec.c:2142 +#: fe-exec.c:2147 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "unerwarteter asyncStatus: %d\n" -#: fe-exec.c:2178 +#: fe-exec.c:2183 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc »%s« während PGEVT_RESULTCREATE-Ereignis fehlgeschlagen\n" -#: fe-exec.c:2326 +#: fe-exec.c:2331 msgid "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "synchrone Befehlsausführungsfunktionen sind im Pipeline-Modus nicht erlaubt\n" -#: fe-exec.c:2348 +#: fe-exec.c:2353 msgid "COPY terminated by new PQexec" msgstr "COPY von neuem PQexec beendet" -#: fe-exec.c:2365 +#: fe-exec.c:2370 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec ist während COPY BOTH nicht erlaubt\n" -#: fe-exec.c:2593 fe-exec.c:2649 fe-exec.c:2718 fe-protocol3.c:1870 +#: fe-exec.c:2598 fe-exec.c:2654 fe-exec.c:2723 fe-protocol3.c:1884 msgid "no COPY in progress\n" msgstr "keine COPY in Ausführung\n" -#: fe-exec.c:2895 +#: fe-exec.c:2900 msgid "PQfn not allowed in pipeline mode\n" msgstr "PQfn im Pipeline-Modus nicht erlaubt\n" -#: fe-exec.c:2903 +#: fe-exec.c:2908 msgid "connection in wrong state\n" msgstr "Verbindung im falschen Zustand\n" -#: fe-exec.c:2947 +#: fe-exec.c:2952 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "kann Pipeline-Modus nicht einschalten, Verbindung ist nicht inaktiv\n" -#: fe-exec.c:2984 fe-exec.c:3008 +#: fe-exec.c:2989 fe-exec.c:3013 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "kann Pipeline-Modus nicht beenden, wegen nicht eingesammelter Ergebnisse\n" -#: fe-exec.c:2989 +#: fe-exec.c:2994 msgid "cannot exit pipeline mode while busy\n" msgstr "kann Pipeline-Modus nicht beenden während die Verbindung beschäftigt ist\n" -#: fe-exec.c:3001 +#: fe-exec.c:3006 msgid "cannot exit pipeline mode while in COPY\n" msgstr "kann Pipeline-Modus nicht beenden während COPY aktiv ist\n" -#: fe-exec.c:3189 +#: fe-exec.c:3194 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "Pipeline kann nicht gesendet werden, wenn der Pipeline-Modus aus ist\n" -#: fe-exec.c:3300 +#: fe-exec.c:3305 msgid "invalid ExecStatusType code" msgstr "ungültiger ExecStatusType-Kode" -#: fe-exec.c:3327 +#: fe-exec.c:3332 msgid "PGresult is not an error result\n" msgstr "PGresult ist kein Fehlerresultat\n" -#: fe-exec.c:3395 fe-exec.c:3418 +#: fe-exec.c:3400 fe-exec.c:3423 #, c-format msgid "column number %d is out of range 0..%d" msgstr "Spaltennummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:3433 +#: fe-exec.c:3438 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "Parameternummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:3743 +#: fe-exec.c:3748 #, c-format msgid "could not interpret result from server: %s" msgstr "konnte Ergebnis vom Server nicht interpretieren: %s" -#: fe-exec.c:4020 fe-exec.c:4132 +#: fe-exec.c:4026 fe-exec.c:4160 msgid "incomplete multibyte character\n" msgstr "unvollständiges Mehrbyte-Zeichen\n" -#: fe-exec.c:4023 fe-exec.c:4152 +#: fe-exec.c:4029 fe-exec.c:4180 msgid "invalid multibyte character\n" msgstr "ungültiges Mehrbytezeichen\n" +#: fe-exec.c:4283 +#, c-format +msgid "escaped string size exceeds the maximum allowed (%zu)\n" +msgstr "Größe der escapten Zeichenkette überschreitet erlaubtes Maximum (%zu)\n" + +#: fe-exec.c:4461 +#, c-format +msgid "escaped bytea size exceeds the maximum allowed (%zu)\n" +msgstr "Größe des escapten bytea-Wertes überschreitet erlaubtes Maximum (%zu)\n" + #: fe-gssapi-common.c:124 msgid "GSSAPI name import error" msgstr "GSSAPI-Namensimportfehler" @@ -822,11 +837,11 @@ msgstr "Integer der Größe %lu wird von pqGetInt nicht unterstützt" msgid "integer of size %lu not supported by pqPutInt" msgstr "Integer der Größe %lu wird von pqPutInt nicht unterstützt" -#: fe-misc.c:576 fe-misc.c:822 +#: fe-misc.c:602 fe-misc.c:848 msgid "connection not open\n" msgstr "Verbindung nicht offen\n" -#: fe-misc.c:755 fe-secure-openssl.c:204 fe-secure-openssl.c:317 +#: fe-misc.c:781 fe-secure-openssl.c:204 fe-secure-openssl.c:317 #: fe-secure.c:262 fe-secure.c:380 msgid "" "server closed the connection unexpectedly\n" @@ -837,142 +852,142 @@ msgstr "" "\tDas heißt wahrscheinlich, dass der Server abnormal beendete\n" "\tbevor oder während die Anweisung bearbeitet wurde.\n" -#: fe-misc.c:1015 +#: fe-misc.c:1041 msgid "timeout expired\n" msgstr "Timeout abgelaufen\n" -#: fe-misc.c:1060 +#: fe-misc.c:1086 msgid "invalid socket\n" msgstr "ungültiges Socket\n" -#: fe-misc.c:1083 +#: fe-misc.c:1109 #, c-format msgid "%s() failed: %s\n" msgstr "%s() fehlgeschlagen: %s\n" -#: fe-protocol3.c:184 +#: fe-protocol3.c:185 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "Nachricht vom Typ 0x%02x kam vom Server im Ruhezustand" -#: fe-protocol3.c:403 +#: fe-protocol3.c:404 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "Server sendete Daten (»D«-Nachricht) ohne vorherige Zeilenbeschreibung (»T«-Nachricht)\n" -#: fe-protocol3.c:446 +#: fe-protocol3.c:447 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "unerwartete Antwort vom Server; erstes empfangenes Zeichen war »%c«\n" -#: fe-protocol3.c:471 +#: fe-protocol3.c:472 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "Nachrichteninhalt stimmt nicht mit Länge in Nachrichtentyp »%c« überein\n" -#: fe-protocol3.c:491 +#: fe-protocol3.c:492 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "Synchronisation mit Server verloren: Nachrichtentyp »%c« empfangen, Länge %d\n" -#: fe-protocol3.c:543 fe-protocol3.c:583 +#: fe-protocol3.c:544 fe-protocol3.c:584 msgid "insufficient data in \"T\" message" msgstr "nicht genug Daten in »T«-Nachricht" -#: fe-protocol3.c:654 fe-protocol3.c:860 +#: fe-protocol3.c:655 fe-protocol3.c:861 msgid "out of memory for query result" msgstr "Speicher für Anfrageergebnis aufgebraucht" -#: fe-protocol3.c:723 +#: fe-protocol3.c:724 msgid "insufficient data in \"t\" message" msgstr "nicht genug Daten in »t«-Nachricht" -#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832 +#: fe-protocol3.c:783 fe-protocol3.c:815 fe-protocol3.c:833 msgid "insufficient data in \"D\" message" msgstr "nicht genug Daten in »D«-Nachricht" -#: fe-protocol3.c:788 +#: fe-protocol3.c:789 msgid "unexpected field count in \"D\" message" msgstr "unerwartete Feldzahl in »D«-Nachricht" -#: fe-protocol3.c:1036 +#: fe-protocol3.c:1037 msgid "no error message available\n" msgstr "keine Fehlermeldung verfügbar\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1084 fe-protocol3.c:1103 +#: fe-protocol3.c:1085 fe-protocol3.c:1104 #, c-format msgid " at character %s" msgstr " bei Zeichen %s" -#: fe-protocol3.c:1116 +#: fe-protocol3.c:1117 #, c-format msgid "DETAIL: %s\n" msgstr "DETAIL: %s\n" -#: fe-protocol3.c:1119 +#: fe-protocol3.c:1120 #, c-format msgid "HINT: %s\n" msgstr "TIP: %s\n" -#: fe-protocol3.c:1122 +#: fe-protocol3.c:1123 #, c-format msgid "QUERY: %s\n" msgstr "ANFRAGE: %s\n" -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1130 #, c-format msgid "CONTEXT: %s\n" msgstr "KONTEXT: %s\n" -#: fe-protocol3.c:1138 +#: fe-protocol3.c:1139 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "SCHEMANAME: %s\n" -#: fe-protocol3.c:1142 +#: fe-protocol3.c:1143 #, c-format msgid "TABLE NAME: %s\n" msgstr "TABELLENNAME: %s\n" -#: fe-protocol3.c:1146 +#: fe-protocol3.c:1147 #, c-format msgid "COLUMN NAME: %s\n" msgstr "SPALTENNAME: %s\n" -#: fe-protocol3.c:1150 +#: fe-protocol3.c:1151 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "DATENTYPNAME: %s\n" -#: fe-protocol3.c:1154 +#: fe-protocol3.c:1155 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "CONSTRAINT-NAME: %s\n" -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1167 msgid "LOCATION: " msgstr "ORT: " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1169 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1170 +#: fe-protocol3.c:1171 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1365 +#: fe-protocol3.c:1379 #, c-format msgid "LINE %d: " msgstr "ZEILE %d: " -#: fe-protocol3.c:1764 +#: fe-protocol3.c:1778 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: Text COPY OUT nicht ausgeführt\n" -#: fe-protocol3.c:2130 +#: fe-protocol3.c:2144 #, c-format msgid "protocol error: id=0x%x\n" msgstr "Protokollfehler: id=0x%x\n" @@ -994,44 +1009,40 @@ msgstr "Server-Zertifikat für »%s« stimmt nicht mit dem Hostnamen »%s« übe msgid "could not get server's host name from server certificate\n" msgstr "konnte Hostnamen des Servers nicht aus dem Serverzertifikat ermitteln\n" -#: fe-secure-gssapi.c:194 +#: fe-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "GSSAPI-Wrap-Fehler" -#: fe-secure-gssapi.c:202 +#: fe-secure-gssapi.c:209 msgid "outgoing GSSAPI message would not use confidentiality\n" msgstr "ausgehende GSSAPI-Nachricht würde keine Vertraulichkeit verwenden\n" -#: fe-secure-gssapi.c:210 +#: fe-secure-gssapi.c:217 fe-secure-gssapi.c:715 #, c-format msgid "client tried to send oversize GSSAPI packet (%zu > %zu)\n" msgstr "Client versuchte übergroßes GSSAPI-Paket zu senden (%zu > %zu)\n" -#: fe-secure-gssapi.c:350 fe-secure-gssapi.c:594 +#: fe-secure-gssapi.c:357 fe-secure-gssapi.c:607 #, c-format msgid "oversize GSSAPI packet sent by the server (%zu > %zu)\n" msgstr "übergroßes GSSAPI-Paket vom Server gesendet (%zu > %zu)\n" -#: fe-secure-gssapi.c:389 +#: fe-secure-gssapi.c:396 msgid "GSSAPI unwrap error" msgstr "GSSAPI-Unwrap-Fehler" -#: fe-secure-gssapi.c:399 +#: fe-secure-gssapi.c:406 msgid "incoming GSSAPI message did not use confidentiality\n" msgstr "eingehende GSSAPI-Nachricht verwendete keine Vertraulichkeit\n" -#: fe-secure-gssapi.c:640 +#: fe-secure-gssapi.c:653 msgid "could not initiate GSSAPI security context" msgstr "konnte GSSAPI-Sicherheitskontext nicht initiieren" -#: fe-secure-gssapi.c:668 +#: fe-secure-gssapi.c:703 msgid "GSSAPI size check error" msgstr "GSSAPI-Fehler bei der Größenprüfung" -#: fe-secure-gssapi.c:679 -msgid "GSSAPI context establishment error" -msgstr "GSSAPI-Fehler beim Einrichten des Kontexts" - #: fe-secure-openssl.c:209 fe-secure-openssl.c:322 fe-secure-openssl.c:1360 #, c-format msgid "SSL SYSCALL error: %s\n" diff --git a/src/interfaces/libpq/po/es.po b/src/interfaces/libpq/po/es.po index ac603091359..b04021da2b2 100644 --- a/src/interfaces/libpq/po/es.po +++ b/src/interfaces/libpq/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:14+0000\n" +"POT-Creation-Date: 2026-02-06 21:25+0000\n" "PO-Revision-Date: 2025-02-15 12:12+0100\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" @@ -60,15 +60,15 @@ msgstr "no se pude generar nonce\n" #: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657 #: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362 #: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282 -#: fe-connect.c:913 fe-connect.c:1462 fe-connect.c:1631 fe-connect.c:2982 -#: fe-connect.c:4714 fe-connect.c:4975 fe-connect.c:5094 fe-connect.c:5346 -#: fe-connect.c:5427 fe-connect.c:5526 fe-connect.c:5782 fe-connect.c:5811 -#: fe-connect.c:5883 fe-connect.c:5907 fe-connect.c:5925 fe-connect.c:6026 -#: fe-connect.c:6035 fe-connect.c:6393 fe-connect.c:6543 fe-connect.c:6811 -#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3145 fe-exec.c:3337 -#: fe-exec.c:4174 fe-exec.c:4341 fe-gssapi-common.c:111 fe-lobj.c:881 -#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023 -#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:512 +#: fe-connect.c:914 fe-connect.c:1463 fe-connect.c:1632 fe-connect.c:2983 +#: fe-connect.c:4715 fe-connect.c:4990 fe-connect.c:5109 fe-connect.c:5361 +#: fe-connect.c:5442 fe-connect.c:5541 fe-connect.c:5797 fe-connect.c:5826 +#: fe-connect.c:5898 fe-connect.c:5922 fe-connect.c:5940 fe-connect.c:6041 +#: fe-connect.c:6050 fe-connect.c:6408 fe-connect.c:6558 fe-connect.c:6826 +#: fe-exec.c:691 fe-exec.c:881 fe-exec.c:1228 fe-exec.c:3150 fe-exec.c:3342 +#: fe-exec.c:4211 fe-exec.c:4405 fe-gssapi-common.c:111 fe-lobj.c:881 +#: fe-protocol3.c:976 fe-protocol3.c:991 fe-protocol3.c:1024 +#: fe-protocol3.c:1745 fe-secure-common.c:110 fe-secure-gssapi.c:512 #: fe-secure-gssapi.c:687 fe-secure-openssl.c:446 fe-secure-openssl.c:1124 msgid "out of memory\n" msgstr "memoria agotada\n" @@ -223,12 +223,12 @@ msgstr "el método de autentificación %u no está soportado\n" msgid "user name lookup failure: error code %lu\n" msgstr "fallo en la búsqueda del nombre de usuario: código de error %lu\n" -#: fe-auth.c:1117 fe-connect.c:2857 +#: fe-auth.c:1117 fe-connect.c:2858 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "no se pudo buscar el usuario local de ID %d: %s\n" -#: fe-auth.c:1122 fe-connect.c:2862 +#: fe-auth.c:1122 fe-connect.c:2863 #, c-format msgid "local user with ID %d does not exist\n" msgstr "no existe un usuario local con ID %d\n" @@ -246,536 +246,551 @@ msgstr "el valor para password_encryption es demasiado largo\n" msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "algoritmo para cifrado de contraseña «%s» desconocido\n" -#: fe-connect.c:1096 +#: fe-connect.c:1097 #, c-format msgid "could not match %d host names to %d hostaddr values\n" msgstr "no se pudo emparejar %d nombres de host a %d direcciones de host\n" -#: fe-connect.c:1182 +#: fe-connect.c:1183 #, c-format msgid "could not match %d port numbers to %d hosts\n" msgstr "no se pudo emparejar %d números de puertos a %d hosts\n" -#: fe-connect.c:1275 fe-connect.c:1301 fe-connect.c:1343 fe-connect.c:1352 -#: fe-connect.c:1385 fe-connect.c:1429 +#: fe-connect.c:1276 fe-connect.c:1302 fe-connect.c:1344 fe-connect.c:1353 +#: fe-connect.c:1386 fe-connect.c:1430 #, c-format msgid "invalid %s value: \"%s\"\n" msgstr "valor %s no válido: «%s»\n" -#: fe-connect.c:1322 +#: fe-connect.c:1323 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "el valor sslmode «%s» no es válido cuando no se ha compilado con soporte SSL\n" -#: fe-connect.c:1370 +#: fe-connect.c:1371 msgid "invalid SSL protocol version range\n" msgstr "rango de protocolo SSL no válido \n" -#: fe-connect.c:1395 +#: fe-connect.c:1396 #, c-format msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n" msgstr "el valor gssencmode «%s» no es válido cuando no se ha compilado con soporte GSSAPI\n" -#: fe-connect.c:1655 +#: fe-connect.c:1656 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "no se pudo establecer el socket en modo TCP sin retardo: %s\n" -#: fe-connect.c:1717 +#: fe-connect.c:1718 #, c-format msgid "connection to server on socket \"%s\" failed: " msgstr "falló la conexión al servidor en el socket «%s»: " -#: fe-connect.c:1744 +#: fe-connect.c:1745 #, c-format msgid "connection to server at \"%s\" (%s), port %s failed: " msgstr "falló la conexión al servidor en «%s» (%s), puerto %s: " -#: fe-connect.c:1749 +#: fe-connect.c:1750 #, c-format msgid "connection to server at \"%s\", port %s failed: " msgstr "falló la conexión al servidor en «%s», puerto %s: " -#: fe-connect.c:1774 +#: fe-connect.c:1775 msgid "\tIs the server running locally and accepting connections on that socket?\n" msgstr "\t¿Está el servidor en ejecución localmente y aceptando conexiones en ese socket?\n" -#: fe-connect.c:1778 +#: fe-connect.c:1779 msgid "\tIs the server running on that host and accepting TCP/IP connections?\n" msgstr "\t¿Está el servidor en ejecución en ese host y aceptando conexiones TCP/IP?\n" -#: fe-connect.c:1842 +#: fe-connect.c:1843 #, c-format msgid "invalid integer value \"%s\" for connection option \"%s\"\n" msgstr "valor entero «%s» no válido para la opción de conexión «%s»\n" -#: fe-connect.c:1872 fe-connect.c:1907 fe-connect.c:1943 fe-connect.c:2032 -#: fe-connect.c:2645 +#: fe-connect.c:1873 fe-connect.c:1908 fe-connect.c:1944 fe-connect.c:2033 +#: fe-connect.c:2646 #, c-format msgid "%s(%s) failed: %s\n" msgstr "%s(%s) falló: %s\n" -#: fe-connect.c:1997 +#: fe-connect.c:1998 #, c-format msgid "%s(%s) failed: error code %d\n" msgstr "%s(%s) falló: código de error %d\n" -#: fe-connect.c:2312 +#: fe-connect.c:2313 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "el estado de conexión no es válido, probablemente por corrupción de memoria\n" -#: fe-connect.c:2391 +#: fe-connect.c:2392 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "número de puerto no válido: «%s»\n" -#: fe-connect.c:2407 +#: fe-connect.c:2408 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "no se pudo traducir el nombre «%s» a una dirección: %s\n" -#: fe-connect.c:2420 +#: fe-connect.c:2421 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "no se pudo interpretar la dirección de red «%s»: %s\n" -#: fe-connect.c:2433 +#: fe-connect.c:2434 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "la ruta del socket de dominio Unix «%s» es demasiado larga (máximo %d bytes)\n" -#: fe-connect.c:2448 +#: fe-connect.c:2449 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "no se pudo traducir la ruta del socket Unix «%s» a una dirección: %s\n" -#: fe-connect.c:2574 +#: fe-connect.c:2575 #, c-format msgid "could not create socket: %s\n" msgstr "no se pudo crear el socket: %s\n" -#: fe-connect.c:2605 +#: fe-connect.c:2606 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "no se pudo establecer el socket en modo no bloqueante: %s\n" -#: fe-connect.c:2615 +#: fe-connect.c:2616 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "no se pudo poner el socket en modo close-on-exec: %s\n" -#: fe-connect.c:2773 +#: fe-connect.c:2774 #, c-format msgid "could not get socket error status: %s\n" msgstr "no se pudo determinar el estado de error del socket: %s\n" -#: fe-connect.c:2801 +#: fe-connect.c:2802 #, c-format msgid "could not get client address from socket: %s\n" msgstr "no se pudo obtener la dirección del cliente desde el socket: %s\n" -#: fe-connect.c:2843 +#: fe-connect.c:2844 msgid "requirepeer parameter is not supported on this platform\n" msgstr "el parámetro requirepeer no está soportado en esta plataforma\n" -#: fe-connect.c:2846 +#: fe-connect.c:2847 #, c-format msgid "could not get peer credentials: %s\n" msgstr "no se pudo obtener credenciales de la contraparte: %s\n" -#: fe-connect.c:2870 +#: fe-connect.c:2871 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer especifica «%s», pero el nombre de usuario de la contraparte es «%s»\n" -#: fe-connect.c:2910 +#: fe-connect.c:2911 #, c-format msgid "could not send GSSAPI negotiation packet: %s\n" msgstr "no se pudo enviar el paquete de negociación GSSAPI: %s\n" -#: fe-connect.c:2922 +#: fe-connect.c:2923 msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)\n" msgstr "cifrado GSSAPI requerido, pero fue imposible (posiblemente no hay cache de credenciales, no hay soporte de servidor, o se está usando un socket local)\n" -#: fe-connect.c:2964 +#: fe-connect.c:2965 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "no se pudo enviar el paquete de negociación SSL: %s\n" -#: fe-connect.c:2995 +#: fe-connect.c:2996 #, c-format msgid "could not send startup packet: %s\n" msgstr "no se pudo enviar el paquete de inicio: %s\n" -#: fe-connect.c:3071 +#: fe-connect.c:3072 msgid "server does not support SSL, but SSL was required\n" msgstr "el servidor no soporta SSL, pero SSL es requerida\n" -#: fe-connect.c:3089 +#: fe-connect.c:3090 msgid "server sent an error response during SSL exchange\n" msgstr "el servidor envió una respuesta de error durante un intercambio SSL\n" -#: fe-connect.c:3095 +#: fe-connect.c:3096 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "se ha recibido una respuesta no válida en la negociación SSL: %c\n" -#: fe-connect.c:3116 +#: fe-connect.c:3117 msgid "received unencrypted data after SSL response\n" msgstr "se recibieron datos no cifrados después de la respuesta SSL\n" -#: fe-connect.c:3197 +#: fe-connect.c:3198 msgid "server doesn't support GSSAPI encryption, but it was required\n" msgstr "el servidor no soporta cifrado GSSAPI, pero es requerida\n" -#: fe-connect.c:3209 +#: fe-connect.c:3210 #, c-format msgid "received invalid response to GSSAPI negotiation: %c\n" msgstr "se ha recibido una respuesta no válida en la negociación GSSAPI: %c\n" -#: fe-connect.c:3228 +#: fe-connect.c:3229 msgid "received unencrypted data after GSSAPI encryption response\n" msgstr "se recibieron datos no cifrados después de la respuesta de cifrado GSSAPI\n" -#: fe-connect.c:3293 fe-connect.c:3318 +#: fe-connect.c:3294 fe-connect.c:3319 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "se esperaba una petición de autentificación desde el servidor, pero se ha recibido %c\n" -#: fe-connect.c:3525 +#: fe-connect.c:3526 msgid "unexpected message from server during startup\n" msgstr "se ha recibido un mensaje inesperado del servidor durante el inicio\n" -#: fe-connect.c:3617 +#: fe-connect.c:3618 msgid "session is read-only\n" msgstr "la sesión es de solo lectura\n" -#: fe-connect.c:3620 +#: fe-connect.c:3621 msgid "session is not read-only\n" msgstr "la sesión no es de solo lectura\n" -#: fe-connect.c:3674 +#: fe-connect.c:3675 msgid "server is in hot standby mode\n" msgstr "el servidor está en modo hot standby\n" -#: fe-connect.c:3677 +#: fe-connect.c:3678 msgid "server is not in hot standby mode\n" msgstr "el servidor no está en modo hot standby\n" -#: fe-connect.c:3795 fe-connect.c:3847 +#: fe-connect.c:3796 fe-connect.c:3848 #, c-format msgid "\"%s\" failed\n" msgstr "«%s» falló\n" -#: fe-connect.c:3861 +#: fe-connect.c:3862 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "estado de conexión no válido %d, probablemente por corrupción de memoria\n" -#: fe-connect.c:4307 fe-connect.c:4367 +#: fe-connect.c:4308 fe-connect.c:4368 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc «%s» falló durante el evento PGEVT_CONNRESET\n" -#: fe-connect.c:4727 +#: fe-connect.c:4728 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP no válida «%s»: el esquema debe ser ldap://\n" -#: fe-connect.c:4742 +#: fe-connect.c:4743 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP no válida «%s»: distinguished name faltante\n" -#: fe-connect.c:4754 fe-connect.c:4812 +#: fe-connect.c:4755 fe-connect.c:4813 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP no válida «%s»: debe tener exactamente un atributo\n" -#: fe-connect.c:4766 fe-connect.c:4828 +#: fe-connect.c:4767 fe-connect.c:4829 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "URL LDAP no válida «%s»: debe tener ámbito de búsqueda (base/one/sub)\n" -#: fe-connect.c:4778 +#: fe-connect.c:4779 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP no válida «%s»: no tiene filtro\n" -#: fe-connect.c:4800 +#: fe-connect.c:4801 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP no válida «%s»: número de puerto no válido\n" -#: fe-connect.c:4838 +#: fe-connect.c:4839 msgid "could not create LDAP structure\n" msgstr "no se pudo crear estructura LDAP\n" -#: fe-connect.c:4914 +#: fe-connect.c:4915 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "búsqueda en servidor LDAP falló: %s\n" -#: fe-connect.c:4925 +#: fe-connect.c:4926 msgid "more than one entry found on LDAP lookup\n" msgstr "se encontro más de una entrada en búsqueda LDAP\n" -#: fe-connect.c:4926 fe-connect.c:4938 +#: fe-connect.c:4927 fe-connect.c:4939 msgid "no entry found on LDAP lookup\n" msgstr "no se encontró ninguna entrada en búsqueda LDAP\n" -#: fe-connect.c:4949 fe-connect.c:4962 +#: fe-connect.c:4950 fe-connect.c:4963 msgid "attribute has no values on LDAP lookup\n" msgstr "la búsqueda LDAP entregó atributo sin valores\n" -#: fe-connect.c:5014 fe-connect.c:5033 fe-connect.c:5565 +#: fe-connect.c:4977 +#, c-format +msgid "connection info string size exceeds the maximum allowed (%d)\n" +msgstr "el tamaño de la cadena de conexión excede el máximo permitido (%d)\n" + +#: fe-connect.c:5029 fe-connect.c:5048 fe-connect.c:5580 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "falta «=» después de «%s» en la cadena de información de la conexión\n" -#: fe-connect.c:5106 fe-connect.c:5750 fe-connect.c:6526 +#: fe-connect.c:5121 fe-connect.c:5765 fe-connect.c:6541 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opción de conexión no válida «%s»\n" -#: fe-connect.c:5122 fe-connect.c:5614 +#: fe-connect.c:5137 fe-connect.c:5629 msgid "unterminated quoted string in connection info string\n" msgstr "cadena de caracteres entre comillas sin terminar en la cadena de información de conexión\n" -#: fe-connect.c:5203 +#: fe-connect.c:5218 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "la definición de servicio «%s» no fue encontrada\n" -#: fe-connect.c:5229 +#: fe-connect.c:5244 #, c-format msgid "service file \"%s\" not found\n" msgstr "el archivo de servicio «%s» no fue encontrado\n" -#: fe-connect.c:5243 +#: fe-connect.c:5258 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "la línea %d es demasiado larga en archivo de servicio «%s»\n" -#: fe-connect.c:5314 fe-connect.c:5358 +#: fe-connect.c:5329 fe-connect.c:5373 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "error de sintaxis en archivo de servicio «%s», línea %d\n" -#: fe-connect.c:5325 +#: fe-connect.c:5340 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "especificaciones de servicio anidadas no soportadas en archivo de servicio «%s», línea %d\n" -#: fe-connect.c:6046 +#: fe-connect.c:6061 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "URI no válida propagada a rutina interna de procesamiento: «%s»\n" -#: fe-connect.c:6123 +#: fe-connect.c:6138 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "se encontró el fin de la cadena mientras se buscaba el «]» correspondiente en dirección IPv6 en URI: «%s»\n" -#: fe-connect.c:6130 +#: fe-connect.c:6145 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "la dirección IPv6 no puede ser vacía en la URI: «%s»\n" -#: fe-connect.c:6145 +#: fe-connect.c:6160 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "carácter «%c» inesperado en la posición %d en URI (se esperaba «:» o «/»): «%s»\n" -#: fe-connect.c:6275 +#: fe-connect.c:6290 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separador llave/valor «=» extra en parámetro de la URI: «%s»\n" -#: fe-connect.c:6295 +#: fe-connect.c:6310 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "separador llave/valor «=» faltante en parámetro de la URI: «%s»\n" -#: fe-connect.c:6347 +#: fe-connect.c:6362 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "parámetro de URI no válido: «%s»\n" -#: fe-connect.c:6421 +#: fe-connect.c:6436 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "elemento escapado con %% no válido: «%s»\n" -#: fe-connect.c:6431 +#: fe-connect.c:6446 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "valor no permitido %%00 en valor escapado con %%: «%s»\n" -#: fe-connect.c:6803 +#: fe-connect.c:6818 msgid "connection pointer is NULL\n" msgstr "el puntero de conexión es NULL\n" -#: fe-connect.c:7091 +#: fe-connect.c:7106 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ADVERTENCIA: El archivo de claves «%s» no es un archivo plano\n" -#: fe-connect.c:7100 +#: fe-connect.c:7115 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "ADVERTENCIA: El archivo de claves «%s» tiene permiso de lectura para el grupo u otros; los permisos deberían ser u=rw (0600) o menos\n" -#: fe-connect.c:7208 +#: fe-connect.c:7223 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "contraseña obtenida desde el archivo «%s»\n" -#: fe-exec.c:449 fe-exec.c:3411 +#: fe-exec.c:449 fe-exec.c:3416 #, c-format msgid "row number %d is out of range 0..%d" msgstr "el número de fila %d está fuera del rango 0..%d" -#: fe-exec.c:510 fe-protocol3.c:207 fe-protocol3.c:232 fe-protocol3.c:256 -#: fe-protocol3.c:274 fe-protocol3.c:371 fe-protocol3.c:743 +#: fe-exec.c:510 fe-protocol3.c:208 fe-protocol3.c:233 fe-protocol3.c:257 +#: fe-protocol3.c:275 fe-protocol3.c:372 fe-protocol3.c:744 msgid "out of memory" msgstr "memoria agotada" -#: fe-exec.c:511 fe-protocol3.c:1939 +#: fe-exec.c:511 fe-protocol3.c:1953 #, c-format msgid "%s" msgstr "%s" -#: fe-exec.c:792 +#: fe-exec.c:797 msgid "write to server failed\n" msgstr "falló escritura al servidor\n" -#: fe-exec.c:864 +#: fe-exec.c:869 msgid "NOTICE" msgstr "AVISO" -#: fe-exec.c:922 +#: fe-exec.c:927 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresult no puede soportar un número de tuplas mayor que INT_MAX" -#: fe-exec.c:934 +#: fe-exec.c:939 msgid "size_t overflow" msgstr "desbordamiento de size_t" -#: fe-exec.c:1351 fe-exec.c:1477 fe-exec.c:1526 +#: fe-exec.c:1356 fe-exec.c:1482 fe-exec.c:1531 msgid "command string is a null pointer\n" msgstr "la cadena de orden es un puntero nulo\n" -#: fe-exec.c:1483 fe-exec.c:1532 fe-exec.c:1628 +#: fe-exec.c:1488 fe-exec.c:1537 fe-exec.c:1633 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "el número de parámetros debe estar entre 0 y %d\n" -#: fe-exec.c:1520 fe-exec.c:1622 +#: fe-exec.c:1525 fe-exec.c:1627 msgid "statement name is a null pointer\n" msgstr "el nombre de sentencia es un puntero nulo\n" -#: fe-exec.c:1664 fe-exec.c:3256 +#: fe-exec.c:1669 fe-exec.c:3261 msgid "no connection to the server\n" msgstr "no hay conexión con el servidor\n" -#: fe-exec.c:1673 fe-exec.c:3265 +#: fe-exec.c:1678 fe-exec.c:3270 msgid "another command is already in progress\n" msgstr "hay otra orden en ejecución\n" -#: fe-exec.c:1704 +#: fe-exec.c:1709 msgid "cannot queue commands during COPY\n" msgstr "no se puede agregar órdenes a la cola mientras se hace COPY\n" -#: fe-exec.c:1822 +#: fe-exec.c:1827 msgid "length must be given for binary parameter\n" msgstr "el largo debe ser especificado para un parámetro binario\n" -#: fe-exec.c:2142 +#: fe-exec.c:2147 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus no esperado: %d\n" -#: fe-exec.c:2178 +#: fe-exec.c:2183 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc «%s» falló durante el evento PGEVT_RESULTCREATE\n" -#: fe-exec.c:2326 +#: fe-exec.c:2331 msgid "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "no se permiten funciones que ejecuten órdenes sincrónicas en modo pipeline\n" -#: fe-exec.c:2348 +#: fe-exec.c:2353 msgid "COPY terminated by new PQexec" msgstr "COPY terminado por un nuevo PQexec" -#: fe-exec.c:2365 +#: fe-exec.c:2370 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec no está permitido durante COPY BOTH\n" -#: fe-exec.c:2593 fe-exec.c:2649 fe-exec.c:2718 fe-protocol3.c:1870 +#: fe-exec.c:2598 fe-exec.c:2654 fe-exec.c:2723 fe-protocol3.c:1884 msgid "no COPY in progress\n" msgstr "no hay COPY alguno en ejecución\n" -#: fe-exec.c:2895 +#: fe-exec.c:2900 msgid "PQfn not allowed in pipeline mode\n" msgstr "no se permite PQfn en modo pipeline\n" -#: fe-exec.c:2903 +#: fe-exec.c:2908 msgid "connection in wrong state\n" msgstr "la conexión está en un estado incorrecto\n" -#: fe-exec.c:2947 +#: fe-exec.c:2952 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "no se puede entrar en modo pipeline, la conexión no está inactiva\n" -#: fe-exec.c:2984 fe-exec.c:3008 +#: fe-exec.c:2989 fe-exec.c:3013 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "no se puede salir de modo pipeline al tener resultados sin recolectar\n" -#: fe-exec.c:2989 +#: fe-exec.c:2994 msgid "cannot exit pipeline mode while busy\n" msgstr "no se puede salir de modo pipeline mientras haya actividad\n" -#: fe-exec.c:3001 +#: fe-exec.c:3006 msgid "cannot exit pipeline mode while in COPY\n" msgstr "no se puede salir de modo pipeline mientras se está en COPY\n" -#: fe-exec.c:3189 +#: fe-exec.c:3194 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "no se puede enviar pipeline cuando no se está en modo pipeline\n" -#: fe-exec.c:3300 +#: fe-exec.c:3305 msgid "invalid ExecStatusType code" msgstr "el código de ExecStatusType no es válido" -#: fe-exec.c:3327 +#: fe-exec.c:3332 msgid "PGresult is not an error result\n" msgstr "PGresult no es un resultado de error\n" -#: fe-exec.c:3395 fe-exec.c:3418 +#: fe-exec.c:3400 fe-exec.c:3423 #, c-format msgid "column number %d is out of range 0..%d" msgstr "el número de columna %d está fuera del rango 0..%d" -#: fe-exec.c:3433 +#: fe-exec.c:3438 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "el número de parámetro %d está fuera del rango 0..%d" -#: fe-exec.c:3743 +#: fe-exec.c:3748 #, c-format msgid "could not interpret result from server: %s" msgstr "no se pudo interpretar el resultado del servidor: %s" -#: fe-exec.c:4021 fe-exec.c:4134 +#: fe-exec.c:4026 fe-exec.c:4160 msgid "incomplete multibyte character\n" msgstr "carácter multibyte incompleto\n" -#: fe-exec.c:4024 fe-exec.c:4154 +#: fe-exec.c:4029 fe-exec.c:4180 msgid "invalid multibyte character\n" msgstr "carácter multibyte no válido\n" +#: fe-exec.c:4283 +#, c-format +msgid "escaped string size exceeds the maximum allowed (%zu)\n" +msgstr "el tamaño de la cadena escapada excede el máximo permitido (%zu)\n" + +#: fe-exec.c:4461 +#, c-format +msgid "escaped bytea size exceeds the maximum allowed (%zu)\n" +msgstr "el tamaño del bytea escapado excede el máximo permitido (%zu)\n" + #: fe-gssapi-common.c:124 msgid "GSSAPI name import error" msgstr "error de importación de nombre de GSSAPI" @@ -856,129 +871,129 @@ msgstr "socket no válido\n" msgid "%s() failed: %s\n" msgstr "%s() falló: %s\n" -#: fe-protocol3.c:184 +#: fe-protocol3.c:185 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "un mensaje de tipo 0x%02x llegó del servidor estando inactivo" -#: fe-protocol3.c:403 +#: fe-protocol3.c:404 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "el servidor envió datos (mensaje «D») sin precederlos con una descripción de fila (mensaje «T»)\n" -#: fe-protocol3.c:446 +#: fe-protocol3.c:447 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "se ha recibido una respuesta inesperada del servidor; el primer carácter recibido fue «%c»\n" -#: fe-protocol3.c:471 +#: fe-protocol3.c:472 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "el contenido del mensaje no concuerda con el largo, en el mensaje tipo «%c»\n" -#: fe-protocol3.c:491 +#: fe-protocol3.c:492 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "se perdió la sincronía con el servidor: se recibió un mensaje de tipo «%c», largo %d\n" -#: fe-protocol3.c:543 fe-protocol3.c:583 +#: fe-protocol3.c:544 fe-protocol3.c:584 msgid "insufficient data in \"T\" message" msgstr "datos insuficientes en el mensaje «T»" -#: fe-protocol3.c:654 fe-protocol3.c:860 +#: fe-protocol3.c:655 fe-protocol3.c:861 msgid "out of memory for query result" msgstr "no hay suficiente memoria para el resultado de la consulta" -#: fe-protocol3.c:723 +#: fe-protocol3.c:724 msgid "insufficient data in \"t\" message" msgstr "datos insuficientes en el mensaje «t»" -#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832 +#: fe-protocol3.c:783 fe-protocol3.c:815 fe-protocol3.c:833 msgid "insufficient data in \"D\" message" msgstr "datos insuficientes en el mensaje «D»" -#: fe-protocol3.c:788 +#: fe-protocol3.c:789 msgid "unexpected field count in \"D\" message" msgstr "cantidad de campos inesperada en mensaje «D»" -#: fe-protocol3.c:1036 +#: fe-protocol3.c:1037 msgid "no error message available\n" msgstr "no hay mensaje de error disponible\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1084 fe-protocol3.c:1103 +#: fe-protocol3.c:1085 fe-protocol3.c:1104 #, c-format msgid " at character %s" msgstr " en el carácter %s" -#: fe-protocol3.c:1116 +#: fe-protocol3.c:1117 #, c-format msgid "DETAIL: %s\n" msgstr "DETALLE: %s\n" -#: fe-protocol3.c:1119 +#: fe-protocol3.c:1120 #, c-format msgid "HINT: %s\n" msgstr "SUGERENCIA: %s\n" -#: fe-protocol3.c:1122 +#: fe-protocol3.c:1123 #, c-format msgid "QUERY: %s\n" msgstr "CONSULTA: %s\n" -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1130 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXTO: %s\n" -#: fe-protocol3.c:1138 +#: fe-protocol3.c:1139 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "NOMBRE DE ESQUEMA: %s\n" -#: fe-protocol3.c:1142 +#: fe-protocol3.c:1143 #, c-format msgid "TABLE NAME: %s\n" msgstr "NOMBRE DE TABLA: %s\n" -#: fe-protocol3.c:1146 +#: fe-protocol3.c:1147 #, c-format msgid "COLUMN NAME: %s\n" msgstr "NOMBRE DE COLUMNA: %s\n" -#: fe-protocol3.c:1150 +#: fe-protocol3.c:1151 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "NOMBRE TIPO DE DATO: %s\n" -#: fe-protocol3.c:1154 +#: fe-protocol3.c:1155 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "NOMBRE DE RESTRICCIÓN: %s\n" -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1167 msgid "LOCATION: " msgstr "UBICACIÓN: " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1169 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1170 +#: fe-protocol3.c:1171 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1365 +#: fe-protocol3.c:1379 #, c-format msgid "LINE %d: " msgstr "LÍNEA %d: " -#: fe-protocol3.c:1764 +#: fe-protocol3.c:1778 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: no se está haciendo COPY OUT de texto\n" -#: fe-protocol3.c:2130 +#: fe-protocol3.c:2144 #, c-format msgid "protocol error: id=0x%x\n" msgstr "error de protocolo: id=0x%x\n" diff --git a/src/interfaces/libpq/po/fr.po b/src/interfaces/libpq/po/fr.po index ab53c766aa4..64332c2c824 100644 --- a/src/interfaces/libpq/po/fr.po +++ b/src/interfaces/libpq/po/fr.po @@ -1083,7 +1083,7 @@ msgstr "erreur SSL : %s\n" #: fe-secure-openssl.c:242 fe-secure-openssl.c:355 msgid "SSL connection has been closed unexpectedly\n" -msgstr "la connexion SSL a été fermée de façon inattendu\n" +msgstr "la connexion SSL a été fermée de façon inattendue\n" #: fe-secure-openssl.c:248 fe-secure-openssl.c:361 fe-secure-openssl.c:1423 #, c-format diff --git a/src/interfaces/libpq/po/ja.po b/src/interfaces/libpq/po/ja.po index 14096feb660..37dfaa668c0 100644 --- a/src/interfaces/libpq/po/ja.po +++ b/src/interfaces/libpq/po/ja.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL 14)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-02-17 11:09+0900\n" -"PO-Revision-Date: 2025-02-17 15:30+0900\n" +"POT-Creation-Date: 2025-11-11 13:53+0900\n" +"PO-Revision-Date: 2025-11-11 15:44+0900\n" "Last-Translator: Kyotaro Horiguchi \n" "Language-Team: Japan PostgreSQL Users Group \n" "Language: ja\n" @@ -58,16 +58,16 @@ msgstr "nonce を生成できませんでした\n" #: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657 #: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362 #: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282 -#: fe-connect.c:913 fe-connect.c:1462 fe-connect.c:1631 fe-connect.c:2982 -#: fe-connect.c:4714 fe-connect.c:4975 fe-connect.c:5094 fe-connect.c:5346 -#: fe-connect.c:5427 fe-connect.c:5526 fe-connect.c:5782 fe-connect.c:5811 -#: fe-connect.c:5883 fe-connect.c:5907 fe-connect.c:5925 fe-connect.c:6026 -#: fe-connect.c:6035 fe-connect.c:6393 fe-connect.c:6543 fe-connect.c:6809 -#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3145 fe-exec.c:3337 -#: fe-exec.c:4172 fe-exec.c:4339 fe-gssapi-common.c:111 fe-lobj.c:881 -#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023 -#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:500 -#: fe-secure-openssl.c:446 fe-secure-openssl.c:1124 +#: fe-connect.c:914 fe-connect.c:1463 fe-connect.c:1632 fe-connect.c:2983 +#: fe-connect.c:4715 fe-connect.c:4990 fe-connect.c:5109 fe-connect.c:5361 +#: fe-connect.c:5442 fe-connect.c:5541 fe-connect.c:5797 fe-connect.c:5826 +#: fe-connect.c:5898 fe-connect.c:5922 fe-connect.c:5940 fe-connect.c:6041 +#: fe-connect.c:6050 fe-connect.c:6408 fe-connect.c:6558 fe-connect.c:6826 +#: fe-exec.c:691 fe-exec.c:881 fe-exec.c:1228 fe-exec.c:3150 fe-exec.c:3342 +#: fe-exec.c:4211 fe-exec.c:4405 fe-gssapi-common.c:111 fe-lobj.c:881 +#: fe-protocol3.c:976 fe-protocol3.c:991 fe-protocol3.c:1024 +#: fe-protocol3.c:1745 fe-secure-common.c:110 fe-secure-gssapi.c:512 +#: fe-secure-gssapi.c:687 fe-secure-openssl.c:446 fe-secure-openssl.c:1124 msgid "out of memory\n" msgstr "メモリ不足\n" @@ -221,12 +221,12 @@ msgstr "認証方式%uはサポートされていません\n" msgid "user name lookup failure: error code %lu\n" msgstr "ユーザー名の参照に失敗: エラーコード %lu\n" -#: fe-auth.c:1117 fe-connect.c:2857 +#: fe-auth.c:1117 fe-connect.c:2858 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "ローカルユーザID%dが見つかりませんでした: %s\n" -#: fe-auth.c:1122 fe-connect.c:2862 +#: fe-auth.c:1122 fe-connect.c:2863 #, c-format msgid "local user with ID %d does not exist\n" msgstr "ID %d を持つローカルユーザは存在しません\n" @@ -244,544 +244,551 @@ msgstr "password_encryptionの値が長すぎます\n" msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "認識できないパスワード暗号化アルゴリズム \"%s\"\n" -#: fe-connect.c:1096 +#: fe-connect.c:1097 #, c-format msgid "could not match %d host names to %d hostaddr values\n" msgstr "%d個のホスト名と%d個のhostaddrの値との突き合せはできません\n" -#: fe-connect.c:1182 +#: fe-connect.c:1183 #, c-format msgid "could not match %d port numbers to %d hosts\n" msgstr "%d個のポート番号と%d個のホストとの突き合せはできません\n" -#: fe-connect.c:1275 fe-connect.c:1301 fe-connect.c:1343 fe-connect.c:1352 -#: fe-connect.c:1385 fe-connect.c:1429 +#: fe-connect.c:1276 fe-connect.c:1302 fe-connect.c:1344 fe-connect.c:1353 +#: fe-connect.c:1386 fe-connect.c:1430 #, c-format msgid "invalid %s value: \"%s\"\n" msgstr "%s の値が不正: \"%s\"\n" -#: fe-connect.c:1322 +#: fe-connect.c:1323 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "SSLサポートが組み込まれていない場合sslmodeの値\"%s\"は不正です\n" -#: fe-connect.c:1370 +#: fe-connect.c:1371 msgid "invalid SSL protocol version range\n" msgstr "不正なSSLプロトコルバージョン範囲\n" -#: fe-connect.c:1395 +#: fe-connect.c:1396 #, c-format msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n" msgstr "gssencmodeの値\"%s\"はGSSAPIサポートがコンパイルされていない場合は不正\n" -#: fe-connect.c:1655 +#: fe-connect.c:1656 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "TCPソケットを非遅延モードに設定できませんでした: %s\n" -#: fe-connect.c:1717 +#: fe-connect.c:1718 #, c-format msgid "connection to server on socket \"%s\" failed: " msgstr "ソケット\"%s\"上でのサーバーへの接続に失敗しました: " -#: fe-connect.c:1744 +#: fe-connect.c:1745 #, c-format msgid "connection to server at \"%s\" (%s), port %s failed: " msgstr "\"%s\" (%s)、ポート %sでのサーバーへの接続に失敗しました: " -#: fe-connect.c:1749 +#: fe-connect.c:1750 #, c-format msgid "connection to server at \"%s\", port %s failed: " msgstr "\"%s\"、ポート%sでのサーバーへの接続に失敗しました: " -#: fe-connect.c:1774 +#: fe-connect.c:1775 msgid "\tIs the server running locally and accepting connections on that socket?\n" msgstr "\tサーバーは同一マシン上で動作していて、そのソケットで接続の待ち受けをしていますか?\n" -#: fe-connect.c:1778 +#: fe-connect.c:1779 msgid "\tIs the server running on that host and accepting TCP/IP connections?\n" msgstr "\tサーバーはそのホストで動作していて、TCP/IP接続を受け付けていますか?\n" -#: fe-connect.c:1842 +#: fe-connect.c:1843 #, c-format msgid "invalid integer value \"%s\" for connection option \"%s\"\n" msgstr "接続オプション\"%2$s\"に対する不正な整数値\"%1$s\"\n" -#: fe-connect.c:1872 fe-connect.c:1907 fe-connect.c:1943 fe-connect.c:2032 -#: fe-connect.c:2645 +#: fe-connect.c:1873 fe-connect.c:1908 fe-connect.c:1944 fe-connect.c:2033 +#: fe-connect.c:2646 #, c-format msgid "%s(%s) failed: %s\n" msgstr "%s(%s)が失敗しました: %s\n" -#: fe-connect.c:1997 +#: fe-connect.c:1998 #, c-format msgid "%s(%s) failed: error code %d\n" msgstr "%s(%s)が失敗しました: エラーコード %d\n" -#: fe-connect.c:2312 +#: fe-connect.c:2313 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "接続状態が不正です。メモリ障害の可能性があります\n" -#: fe-connect.c:2391 +#: fe-connect.c:2392 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "不正なポート番号です: \"%s\"\n" -#: fe-connect.c:2407 +#: fe-connect.c:2408 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "ホスト名\"%s\"をアドレスに変換できませんでした: %s\n" -#: fe-connect.c:2420 +#: fe-connect.c:2421 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "ネットワークアドレス\"%s\"をパースできませんでした: %s\n" -#: fe-connect.c:2433 +#: fe-connect.c:2434 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Unixドメインソケットのパス\"%s\"が長すぎます(最大 %d バイト)\n" -#: fe-connect.c:2448 +#: fe-connect.c:2449 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "Unixドメインソケットのパス\"%s\"をアドレスに変換できませんでした: %s\n" -#: fe-connect.c:2574 +#: fe-connect.c:2575 #, c-format msgid "could not create socket: %s\n" msgstr "ソケットを作成できませんでした: %s\n" -#: fe-connect.c:2605 +#: fe-connect.c:2606 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "ソケットを非ブロッキングモードに設定できませんでした: %s\n" -#: fe-connect.c:2615 +#: fe-connect.c:2616 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "ソケットをclose-on-execモードに設定できませんでした: %s\n" -#: fe-connect.c:2773 +#: fe-connect.c:2774 #, c-format msgid "could not get socket error status: %s\n" msgstr "ソケットのエラー状態を入手できませんでした: %s\n" -#: fe-connect.c:2801 +#: fe-connect.c:2802 #, c-format msgid "could not get client address from socket: %s\n" msgstr "ソケットからクライアントアドレスを入手できませんでした: %s\n" -#: fe-connect.c:2843 +#: fe-connect.c:2844 msgid "requirepeer parameter is not supported on this platform\n" msgstr "このプラットフォームでは requirepeer パラメータはサポートされていません\n" -#: fe-connect.c:2846 +#: fe-connect.c:2847 #, c-format msgid "could not get peer credentials: %s\n" msgstr "ピアの資格証明を入手できませんでした: %s\n" -#: fe-connect.c:2870 +#: fe-connect.c:2871 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeerは\"%s\"を指定していますが、実際のピア名は\"%s\"です\n" -#: fe-connect.c:2910 +#: fe-connect.c:2911 #, c-format msgid "could not send GSSAPI negotiation packet: %s\n" msgstr "GSSAPIネゴシエーションパケットを送信できませんでした: %s\n" -#: fe-connect.c:2922 +#: fe-connect.c:2923 msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)\n" msgstr "GSSAPI暗号化が要求されていますが、実行できませんでした(おそらく資格キャッシュがない、サーバーがサポートしていないあるいはローカルソケットで接続しています)\n" -#: fe-connect.c:2964 +#: fe-connect.c:2965 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "SSLネゴシエーションパケットを送信できませんでした: %s\n" -#: fe-connect.c:2995 +#: fe-connect.c:2996 #, c-format msgid "could not send startup packet: %s\n" msgstr "開始パケットを送信できませんでした: %s\n" -#: fe-connect.c:3071 +#: fe-connect.c:3072 msgid "server does not support SSL, but SSL was required\n" msgstr "サーバーはSSLをサポートしていませんが、SSLが要求されました\n" -#: fe-connect.c:3089 +#: fe-connect.c:3090 msgid "server sent an error response during SSL exchange\n" msgstr "SSLハンドシェイク中にサーバーからエラー応答が返されました\n" -#: fe-connect.c:3095 +#: fe-connect.c:3096 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "SSLネゴシエーションに対して不正な応答を受信しました: %c\n" -#: fe-connect.c:3116 +#: fe-connect.c:3117 msgid "received unencrypted data after SSL response\n" msgstr "SSL応答の後に非暗号化データを受信しました\n" -#: fe-connect.c:3197 +#: fe-connect.c:3198 msgid "server doesn't support GSSAPI encryption, but it was required\n" msgstr "サーバーはGSSAPI暗号化をサポートしていませんが、要求されました\n" -#: fe-connect.c:3209 +#: fe-connect.c:3210 #, c-format msgid "received invalid response to GSSAPI negotiation: %c\n" msgstr "GSSAPIネゴシエーションに対して不正な応答を受信しました: %c\n" -#: fe-connect.c:3228 +#: fe-connect.c:3229 msgid "received unencrypted data after GSSAPI encryption response\n" msgstr "GSSAPI暗号化応答の後に非暗号化データを受信しました\n" -#: fe-connect.c:3293 fe-connect.c:3318 +#: fe-connect.c:3294 fe-connect.c:3319 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "サーバーからの認証要求を想定していましたが、%cを受信しました\n" -#: fe-connect.c:3525 +#: fe-connect.c:3526 msgid "unexpected message from server during startup\n" msgstr "起動時にサーバーから想定外のメッセージがありました\n" -#: fe-connect.c:3617 +#: fe-connect.c:3618 msgid "session is read-only\n" msgstr "セッションは読み取り専用です\n" -#: fe-connect.c:3620 +#: fe-connect.c:3621 msgid "session is not read-only\n" msgstr "セッションは読み取り専用ではありません\n" -#: fe-connect.c:3674 +#: fe-connect.c:3675 msgid "server is in hot standby mode\n" msgstr "サーバーはホットスタンバイモードです\n" -#: fe-connect.c:3677 +#: fe-connect.c:3678 msgid "server is not in hot standby mode\n" msgstr "サーバーはホットスタンバイモードではありません\n" -#: fe-connect.c:3795 fe-connect.c:3847 +#: fe-connect.c:3796 fe-connect.c:3848 #, c-format msgid "\"%s\" failed\n" msgstr "\"%s\"が失敗しました\n" -#: fe-connect.c:3861 +#: fe-connect.c:3862 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "接続状態%dが不正です。メモリ障害の可能性があります\n" -#: fe-connect.c:4307 fe-connect.c:4367 +#: fe-connect.c:4308 fe-connect.c:4368 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEVT_CONNRESETイベント中にPGEventProc \"%s\"に失敗しました\n" -#: fe-connect.c:4727 +#: fe-connect.c:4728 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "不正なLDAP URL\"%s\":スキーマはldap://でなければなりません\n" -#: fe-connect.c:4742 +#: fe-connect.c:4743 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "不正なLDAP URL \"%s\": 区別名がありません\n" -#: fe-connect.c:4754 fe-connect.c:4812 +#: fe-connect.c:4755 fe-connect.c:4813 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "不正なLDAP URL \"%s\": 正確に1つの属性を持たなければなりません\n" -#: fe-connect.c:4766 fe-connect.c:4828 +#: fe-connect.c:4767 fe-connect.c:4829 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "不正なLDAP URL \"%s\": 検索スコープ(base/one/sub)を持たなければなりません\n" -#: fe-connect.c:4778 +#: fe-connect.c:4779 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "不正なLDAP URL \"%s\": フィルタがありません\n" -#: fe-connect.c:4800 +#: fe-connect.c:4801 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "不正なLDAP URL \"%s\": ポート番号が不正です\n" -#: fe-connect.c:4838 +#: fe-connect.c:4839 msgid "could not create LDAP structure\n" msgstr "LDAP構造体を作成できませんでした\n" -#: fe-connect.c:4914 +#: fe-connect.c:4915 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "LDAPサーバーで検索に失敗しました: %s\n" -#: fe-connect.c:4925 +#: fe-connect.c:4926 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAP検索結果が複数ありました\n" -#: fe-connect.c:4926 fe-connect.c:4938 +#: fe-connect.c:4927 fe-connect.c:4939 msgid "no entry found on LDAP lookup\n" msgstr "LDAP検索結果が空でした\n" -#: fe-connect.c:4949 fe-connect.c:4962 +#: fe-connect.c:4950 fe-connect.c:4963 msgid "attribute has no values on LDAP lookup\n" msgstr "LDAP検索で属性に値がありませんでした\n" -#: fe-connect.c:5014 fe-connect.c:5033 fe-connect.c:5565 +#: fe-connect.c:4977 +#, c-format +msgid "connection info string size exceeds the maximum allowed (%d)\n" +msgstr "接続情報文字列の長さが上限値(%d)を超えています\n" + +#: fe-connect.c:5029 fe-connect.c:5048 fe-connect.c:5580 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "接続情報文字列において\"%s\"の後に\"=\"がありませんでした\n" -#: fe-connect.c:5106 fe-connect.c:5750 fe-connect.c:6526 +#: fe-connect.c:5121 fe-connect.c:5765 fe-connect.c:6541 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "接続オプション\"%s\"は不正です\n" -#: fe-connect.c:5122 fe-connect.c:5614 +#: fe-connect.c:5137 fe-connect.c:5629 msgid "unterminated quoted string in connection info string\n" msgstr "接続情報文字列において閉じていない引用符がありました\n" -#: fe-connect.c:5203 +#: fe-connect.c:5218 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "サービス定義\"%s\"がみつかりません\n" -#: fe-connect.c:5229 +#: fe-connect.c:5244 #, c-format msgid "service file \"%s\" not found\n" msgstr "サービスファイル\"%s\"がみつかりません\n" -#: fe-connect.c:5243 +#: fe-connect.c:5258 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "サービスファイル\"%2$s\"の行%1$dが長すぎます\n" -#: fe-connect.c:5314 fe-connect.c:5358 +#: fe-connect.c:5329 fe-connect.c:5373 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "サービスファイル\"%s\"の行%dに構文エラーがあります\n" -#: fe-connect.c:5325 +#: fe-connect.c:5340 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "サービスファイル\"%s\"ではネストしたサービス指定はサポートされていません、行%d\n" -#: fe-connect.c:6046 +#: fe-connect.c:6061 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "内部パーサ処理へ伝わった不正なURI: \"%s\"\n" -#: fe-connect.c:6123 +#: fe-connect.c:6138 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "URI \"%s\"内のIPv6ホストアドレスにおいて対応する\"]\"を探している間に文字列が終わりました\n" -#: fe-connect.c:6130 +#: fe-connect.c:6145 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "URI内ではIPv6ホストアドレスは空であってはなりません: \"%s\"\n" -#: fe-connect.c:6145 +#: fe-connect.c:6160 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "URI内の位置%2$dに想定外の文字\"%1$c\"があります(\":\"または\"/\"を期待していました): \"%3$s\"\n" -#: fe-connect.c:6275 +#: fe-connect.c:6290 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "URI問い合わせパラメータ内に余分なキーと値を分ける\"=\"があります: \"%s\"\n" -#: fe-connect.c:6295 +#: fe-connect.c:6310 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "URI問い合わせパラメータ内にキーと値を分ける\\\"=\\\"がありません: \"%s\"\n" -#: fe-connect.c:6347 +#: fe-connect.c:6362 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "不正なURI問い合わせパラメータ:\"%s\"\n" -#: fe-connect.c:6421 +#: fe-connect.c:6436 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "不正なパーセント符号化トークン: \"%s\"\n" -#: fe-connect.c:6431 +#: fe-connect.c:6446 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "パーセント符号化された値では%%00値は許されません: \"%s\"\n" -#: fe-connect.c:6801 +#: fe-connect.c:6818 msgid "connection pointer is NULL\n" msgstr "接続ポインタはNULLです\n" -#: fe-connect.c:7089 +#: fe-connect.c:7106 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "警告: パスワードファイル\"%s\"がテキストファイルではありません\n" -#: fe-connect.c:7098 +#: fe-connect.c:7115 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "警告: パスワードファイル\"%s\"がグループメンバもしくは他のユーザから読める状態になっています。この権限はu=rw (0600)以下にすべきです\n" -#: fe-connect.c:7206 +#: fe-connect.c:7223 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "ファイル\"%s\"からパスワードを読み込みました\n" -#: fe-exec.c:449 fe-exec.c:3411 +#: fe-exec.c:449 fe-exec.c:3416 #, c-format msgid "row number %d is out of range 0..%d" msgstr "行番号%dは0..%dの範囲を超えています" -#: fe-exec.c:510 fe-protocol3.c:207 fe-protocol3.c:232 fe-protocol3.c:256 -#: fe-protocol3.c:274 fe-protocol3.c:371 fe-protocol3.c:743 +#: fe-exec.c:510 fe-protocol3.c:208 fe-protocol3.c:233 fe-protocol3.c:257 +#: fe-protocol3.c:275 fe-protocol3.c:372 fe-protocol3.c:744 msgid "out of memory" msgstr "メモリ不足" -#: fe-exec.c:511 fe-protocol3.c:1939 +#: fe-exec.c:511 fe-protocol3.c:1953 #, c-format msgid "%s" msgstr "%s" -#: fe-exec.c:792 +#: fe-exec.c:797 msgid "write to server failed\n" msgstr "サーバーへの書き込みに失敗\n" -#: fe-exec.c:864 +#: fe-exec.c:869 msgid "NOTICE" msgstr "NOTICE" -#: fe-exec.c:922 +#: fe-exec.c:927 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresultはINT_MAX個以上のタプルを扱えません" -#: fe-exec.c:934 +#: fe-exec.c:939 msgid "size_t overflow" msgstr "size_t オーバーフロー" -#: fe-exec.c:1351 fe-exec.c:1477 fe-exec.c:1526 +#: fe-exec.c:1356 fe-exec.c:1482 fe-exec.c:1531 msgid "command string is a null pointer\n" msgstr "コマンド文字列がヌルポインタです\n" -#: fe-exec.c:1483 fe-exec.c:1532 fe-exec.c:1628 +#: fe-exec.c:1488 fe-exec.c:1537 fe-exec.c:1633 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "パラメータ数は0から%dまでの間でなければなりません\n" -#: fe-exec.c:1520 fe-exec.c:1622 +#: fe-exec.c:1525 fe-exec.c:1627 msgid "statement name is a null pointer\n" msgstr "文の名前がヌルポインタです\n" -#: fe-exec.c:1664 fe-exec.c:3256 +#: fe-exec.c:1669 fe-exec.c:3261 msgid "no connection to the server\n" msgstr "サーバーへの接続がありません\n" -#: fe-exec.c:1673 fe-exec.c:3265 +#: fe-exec.c:1678 fe-exec.c:3270 msgid "another command is already in progress\n" msgstr "他のコマンドを処理しています\n" -#: fe-exec.c:1704 +#: fe-exec.c:1709 msgid "cannot queue commands during COPY\n" msgstr "COPYの実行中はコマンドの先行積み込みはできません\n" -#: fe-exec.c:1822 +#: fe-exec.c:1827 msgid "length must be given for binary parameter\n" msgstr "バイナリパラメータには長さを指定しなければなりません\n" -#: fe-exec.c:2142 +#: fe-exec.c:2147 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "想定外のasyncStatus: %d\n" -#: fe-exec.c:2178 +#: fe-exec.c:2183 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEVT_RESULTCREATEイベント中にPGEventProc \"%s\"に失敗しました\n" -#: fe-exec.c:2326 +#: fe-exec.c:2331 msgid "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "同期コマンド実行関数はパイプラインモードでは使用できません\n" -#: fe-exec.c:2348 +#: fe-exec.c:2353 msgid "COPY terminated by new PQexec" msgstr "新たなPQexec\"によりCOPYが終了しました" -#: fe-exec.c:2365 +#: fe-exec.c:2370 msgid "PQexec not allowed during COPY BOTH\n" msgstr "COPY BOTH 実行中の PQexec は許可されていません\n" -#: fe-exec.c:2593 fe-exec.c:2649 fe-exec.c:2718 fe-protocol3.c:1870 +#: fe-exec.c:2598 fe-exec.c:2654 fe-exec.c:2723 fe-protocol3.c:1884 msgid "no COPY in progress\n" msgstr "実行中のCOPYはありません\n" -#: fe-exec.c:2895 +#: fe-exec.c:2900 msgid "PQfn not allowed in pipeline mode\n" msgstr "PQfnはパイプラインモードでは実行できません\n" -#: fe-exec.c:2903 +#: fe-exec.c:2908 msgid "connection in wrong state\n" msgstr "接続状態が異常です\n" -#: fe-exec.c:2947 +#: fe-exec.c:2952 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "パイプラインモードに移行できません、接続はアイドル状態です\n" -#: fe-exec.c:2984 fe-exec.c:3008 +#: fe-exec.c:2989 fe-exec.c:3013 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "未受信の結果がある状態でパイプラインモードを終了することはできません\n" -#: fe-exec.c:2989 +#: fe-exec.c:2994 msgid "cannot exit pipeline mode while busy\n" msgstr "ビジー状態でパイプラインモードを終了することはできません\n" -#: fe-exec.c:3001 +#: fe-exec.c:3006 msgid "cannot exit pipeline mode while in COPY\n" msgstr "COPY実行中にパイプラインモードを抜けることはできません\n" -#: fe-exec.c:3189 +#: fe-exec.c:3194 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "パイプラインモード中ではないためパイプラインの送出はできません\n" -#: fe-exec.c:3300 +#: fe-exec.c:3305 msgid "invalid ExecStatusType code" msgstr "ExecStatusTypeコードが不正です" -#: fe-exec.c:3327 +#: fe-exec.c:3332 msgid "PGresult is not an error result\n" msgstr "PGresutがエラー結果ではありません\n" -#: fe-exec.c:3395 fe-exec.c:3418 +#: fe-exec.c:3400 fe-exec.c:3423 #, c-format msgid "column number %d is out of range 0..%d" msgstr "列番号%dは0..%dの範囲を超えています" -#: fe-exec.c:3433 +#: fe-exec.c:3438 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "パラメータ%dは0..%dの範囲を超えています" -#: fe-exec.c:3743 +#: fe-exec.c:3748 #, c-format msgid "could not interpret result from server: %s" msgstr "サーバーからの結果を解釈できませんでした: %s" -#: fe-exec.c:4020 -msgid "incomplete multibyte character" -msgstr "不完全なマルチバイト文字" - -#: fe-exec.c:4023 -msgid "invalid multibyte character" -msgstr "不正なマルチバイト文字" - -#: fe-exec.c:4132 +#: fe-exec.c:4026 fe-exec.c:4160 msgid "incomplete multibyte character\n" msgstr "不完全なマルチバイト文字\n" -#: fe-exec.c:4152 +#: fe-exec.c:4029 fe-exec.c:4180 msgid "invalid multibyte character\n" msgstr "不正なマルチバイト文字\n" +#: fe-exec.c:4283 +#, c-format +msgid "escaped string size exceeds the maximum allowed (%zu)\n" +msgstr "エスケープされた文字列のサイズが上限(%zu)を超えています\n" + +#: fe-exec.c:4461 +#, c-format +msgid "escaped bytea size exceeds the maximum allowed (%zu)\n" +msgstr "エスケープされたbyteaのサイズが上限(%zu)を超えています\n" + #: fe-gssapi-common.c:124 msgid "GSSAPI name import error" msgstr "GSSAPI名のインポートエラー" @@ -834,11 +841,11 @@ msgstr "サイズ%luの整数はpqGetIntでサポートされていません" msgid "integer of size %lu not supported by pqPutInt" msgstr "サイズ%luの整数はpqPutIntでサポートされていません" -#: fe-misc.c:576 fe-misc.c:822 +#: fe-misc.c:602 fe-misc.c:848 msgid "connection not open\n" msgstr "接続はオープンされていません\n" -#: fe-misc.c:755 fe-secure-openssl.c:204 fe-secure-openssl.c:317 +#: fe-misc.c:781 fe-secure-openssl.c:204 fe-secure-openssl.c:317 #: fe-secure.c:262 fe-secure.c:380 msgid "" "server closed the connection unexpectedly\n" @@ -849,142 +856,142 @@ msgstr "" " おそらく要求の処理前または処理中にサーバが異常終了\n" " したことを意味しています。\n" -#: fe-misc.c:1015 +#: fe-misc.c:1041 msgid "timeout expired\n" msgstr "タイムアウト期間が過ぎました\n" -#: fe-misc.c:1060 +#: fe-misc.c:1086 msgid "invalid socket\n" msgstr "不正なソケットです\n" -#: fe-misc.c:1083 +#: fe-misc.c:1109 #, c-format msgid "%s() failed: %s\n" msgstr "%s()が失敗しました: %s\n" -#: fe-protocol3.c:184 +#: fe-protocol3.c:185 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "待機中にサーバーからメッセージ種類0x%02xが届きました" -#: fe-protocol3.c:403 +#: fe-protocol3.c:404 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "サーバーが事前の行記述(\"T\"メッセージ)なしにデータ(\"D\"メッセージ)を送信しました\"\n" -#: fe-protocol3.c:446 +#: fe-protocol3.c:447 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "サーバーから想定外の応答がありました。受け付けた先頭文字は\"%c\"です\n" -#: fe-protocol3.c:471 +#: fe-protocol3.c:472 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "メッセージの内容がメッセージ種類\"%c\"の長さに合いません\n" -#: fe-protocol3.c:491 +#: fe-protocol3.c:492 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "サーバーとの同期が失われました。受信したメッセージ種類は\"%c\"、長さは%d\n" -#: fe-protocol3.c:543 fe-protocol3.c:583 +#: fe-protocol3.c:544 fe-protocol3.c:584 msgid "insufficient data in \"T\" message" msgstr "\"T\"メッセージ内のデータが不十分です" -#: fe-protocol3.c:654 fe-protocol3.c:860 +#: fe-protocol3.c:655 fe-protocol3.c:861 msgid "out of memory for query result" msgstr "問い合わせ結果用のメモリが不足しています" -#: fe-protocol3.c:723 +#: fe-protocol3.c:724 msgid "insufficient data in \"t\" message" msgstr "\"t\"メッセージ内のデータが不十分です" -#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832 +#: fe-protocol3.c:783 fe-protocol3.c:815 fe-protocol3.c:833 msgid "insufficient data in \"D\" message" msgstr "\"D\"\"メッセージ内のデータが不十分です" -#: fe-protocol3.c:788 +#: fe-protocol3.c:789 msgid "unexpected field count in \"D\" message" msgstr "\"D\"メッセージ内のフィールド数が想定外です。" -#: fe-protocol3.c:1036 +#: fe-protocol3.c:1037 msgid "no error message available\n" msgstr "エラーメッセージがありません\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1084 fe-protocol3.c:1103 +#: fe-protocol3.c:1085 fe-protocol3.c:1104 #, c-format msgid " at character %s" msgstr "(文字位置: %s)" -#: fe-protocol3.c:1116 +#: fe-protocol3.c:1117 #, c-format msgid "DETAIL: %s\n" msgstr "DETAIL: %s\n" -#: fe-protocol3.c:1119 +#: fe-protocol3.c:1120 #, c-format msgid "HINT: %s\n" msgstr "HINT: %s\n" -#: fe-protocol3.c:1122 +#: fe-protocol3.c:1123 #, c-format msgid "QUERY: %s\n" msgstr "QUERY: %s\n" -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1130 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXT: %s\n" -#: fe-protocol3.c:1138 +#: fe-protocol3.c:1139 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "SCHEMA NAME: %s\n" -#: fe-protocol3.c:1142 +#: fe-protocol3.c:1143 #, c-format msgid "TABLE NAME: %s\n" msgstr "TABLE NAME: %s\n" -#: fe-protocol3.c:1146 +#: fe-protocol3.c:1147 #, c-format msgid "COLUMN NAME: %s\n" msgstr "COLUMN NAME: %s\n" -#: fe-protocol3.c:1150 +#: fe-protocol3.c:1151 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "DATATYPE NAME: %s\n" -#: fe-protocol3.c:1154 +#: fe-protocol3.c:1155 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "CONSTRAINT NAME: %s\n" -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1167 msgid "LOCATION: " msgstr "LOCATION: " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1169 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1170 +#: fe-protocol3.c:1171 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1365 +#: fe-protocol3.c:1379 #, c-format msgid "LINE %d: " msgstr "行 %d: " -#: fe-protocol3.c:1764 +#: fe-protocol3.c:1778 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: テキストのCOPY OUTを行っていません\n" -#: fe-protocol3.c:2130 +#: fe-protocol3.c:2144 #, c-format msgid "protocol error: id=0x%x\n" msgstr "プロトコルエラー: id=0x%x\n" @@ -1006,44 +1013,40 @@ msgstr "\"%s\"のサーバー証明書がホスト名\"%s\"とマッチしませ msgid "could not get server's host name from server certificate\n" msgstr "サーバー証明書からサーバのホスト名を取り出すことができませんでした。\n" -#: fe-secure-gssapi.c:194 +#: fe-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "GSSAPIラップエラー" -#: fe-secure-gssapi.c:202 +#: fe-secure-gssapi.c:209 msgid "outgoing GSSAPI message would not use confidentiality\n" msgstr "送出されるGSSAPIメッセージは機密性を使用しません\n" -#: fe-secure-gssapi.c:210 +#: fe-secure-gssapi.c:217 fe-secure-gssapi.c:715 #, c-format msgid "client tried to send oversize GSSAPI packet (%zu > %zu)\n" msgstr "クライアントは過大なGSSAPIパケットを送信しようとしました: (%zu > %zu)\n" -#: fe-secure-gssapi.c:350 fe-secure-gssapi.c:594 +#: fe-secure-gssapi.c:357 fe-secure-gssapi.c:607 #, c-format msgid "oversize GSSAPI packet sent by the server (%zu > %zu)\n" msgstr "過大なGSSAPIパケットがサーバーから送出されました: (%zu > %zu)\n" -#: fe-secure-gssapi.c:389 +#: fe-secure-gssapi.c:396 msgid "GSSAPI unwrap error" msgstr "GSSAPIアンラップエラー" -#: fe-secure-gssapi.c:399 +#: fe-secure-gssapi.c:406 msgid "incoming GSSAPI message did not use confidentiality\n" msgstr "受信したGSSAPIメッセージは機密性を使用していませんでした\n" -#: fe-secure-gssapi.c:640 +#: fe-secure-gssapi.c:653 msgid "could not initiate GSSAPI security context" msgstr "GSSAPIセキュリティコンテキストを開始できませんでした" -#: fe-secure-gssapi.c:668 +#: fe-secure-gssapi.c:703 msgid "GSSAPI size check error" msgstr "GSSAPIサイズチェックエラー" -#: fe-secure-gssapi.c:679 -msgid "GSSAPI context establishment error" -msgstr "GSSAPIコンテクスト確立エラー" - #: fe-secure-openssl.c:209 fe-secure-openssl.c:322 fe-secure-openssl.c:1360 #, c-format msgid "SSL SYSCALL error: %s\n" @@ -1236,6 +1239,15 @@ msgstr "サーバーにデータを送信できませんでした: %s\n" msgid "unrecognized socket error: 0x%08X/%d" msgstr "不明なソケットエラー 0x%08X/%d" +#~ msgid "GSSAPI context establishment error" +#~ msgstr "GSSAPIコンテクスト確立エラー" + +#~ msgid "incomplete multibyte character" +#~ msgstr "不完全なマルチバイト文字" + +#~ msgid "invalid multibyte character" +#~ msgstr "不正なマルチバイト文字" + #~ msgid "keepalives parameter must be an integer\n" #~ msgstr "keepaliveのパラメータは整数でなければなりません\n" diff --git a/src/interfaces/libpq/po/ru.po b/src/interfaces/libpq/po/ru.po index 698bce10e19..2bf5157048e 100644 --- a/src/interfaces/libpq/po/ru.po +++ b/src/interfaces/libpq/po/ru.po @@ -4,14 +4,14 @@ # Serguei A. Mokhov , 2001-2004. # Oleg Bartunov , 2005. # Andrey Sudnik , 2010. -# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Alexander Lakhin +# SPDX-FileCopyrightText: 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 Alexander Lakhin # Maxim Yablokov , 2021. msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-09 06:29+0200\n" -"PO-Revision-Date: 2025-05-03 16:34+0300\n" +"POT-Creation-Date: 2026-02-07 08:59+0200\n" +"PO-Revision-Date: 2026-02-07 10:48+0200\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -61,15 +61,15 @@ msgstr "не удалось сгенерировать разовый код\n" #: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657 #: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362 #: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282 -#: fe-connect.c:913 fe-connect.c:1462 fe-connect.c:1631 fe-connect.c:2982 -#: fe-connect.c:4714 fe-connect.c:4975 fe-connect.c:5094 fe-connect.c:5346 -#: fe-connect.c:5427 fe-connect.c:5526 fe-connect.c:5782 fe-connect.c:5811 -#: fe-connect.c:5883 fe-connect.c:5907 fe-connect.c:5925 fe-connect.c:6026 -#: fe-connect.c:6035 fe-connect.c:6393 fe-connect.c:6543 fe-connect.c:6811 -#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3145 fe-exec.c:3337 -#: fe-exec.c:4174 fe-exec.c:4341 fe-gssapi-common.c:111 fe-lobj.c:881 -#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023 -#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:512 +#: fe-connect.c:914 fe-connect.c:1463 fe-connect.c:1632 fe-connect.c:2983 +#: fe-connect.c:4715 fe-connect.c:4990 fe-connect.c:5109 fe-connect.c:5361 +#: fe-connect.c:5442 fe-connect.c:5541 fe-connect.c:5797 fe-connect.c:5826 +#: fe-connect.c:5898 fe-connect.c:5922 fe-connect.c:5940 fe-connect.c:6041 +#: fe-connect.c:6050 fe-connect.c:6408 fe-connect.c:6558 fe-connect.c:6826 +#: fe-exec.c:691 fe-exec.c:881 fe-exec.c:1228 fe-exec.c:3150 fe-exec.c:3342 +#: fe-exec.c:4211 fe-exec.c:4405 fe-gssapi-common.c:111 fe-lobj.c:881 +#: fe-protocol3.c:976 fe-protocol3.c:991 fe-protocol3.c:1024 +#: fe-protocol3.c:1745 fe-secure-common.c:110 fe-secure-gssapi.c:512 #: fe-secure-gssapi.c:687 fe-secure-openssl.c:446 fe-secure-openssl.c:1124 msgid "out of memory\n" msgstr "нехватка памяти\n" @@ -245,12 +245,12 @@ msgstr "метод аутентификации %u не поддерживает msgid "user name lookup failure: error code %lu\n" msgstr "распознать имя пользователя не удалось (код ошибки: %lu)\n" -#: fe-auth.c:1117 fe-connect.c:2857 +#: fe-auth.c:1117 fe-connect.c:2858 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "найти локального пользователя по идентификатору (%d) не удалось: %s\n" -#: fe-auth.c:1122 fe-connect.c:2862 +#: fe-auth.c:1122 fe-connect.c:2863 #, c-format msgid "local user with ID %d does not exist\n" msgstr "локальный пользователь с ID %d не существует\n" @@ -268,167 +268,167 @@ msgstr "слишком длинное значение password_encryption\n" msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "нераспознанный алгоритм шифрования пароля \"%s\"\n" -#: fe-connect.c:1096 +#: fe-connect.c:1097 #, c-format msgid "could not match %d host names to %d hostaddr values\n" msgstr "не удалось сопоставить имена узлов (%d) со значениями hostaddr (%d)\n" -#: fe-connect.c:1182 +#: fe-connect.c:1183 #, c-format msgid "could not match %d port numbers to %d hosts\n" msgstr "не удалось сопоставить номера портов (%d) с узлами (%d)\n" -#: fe-connect.c:1275 fe-connect.c:1301 fe-connect.c:1343 fe-connect.c:1352 -#: fe-connect.c:1385 fe-connect.c:1429 +#: fe-connect.c:1276 fe-connect.c:1302 fe-connect.c:1344 fe-connect.c:1353 +#: fe-connect.c:1386 fe-connect.c:1430 #, c-format msgid "invalid %s value: \"%s\"\n" msgstr "неверное значение %s: \"%s\"\n" -#: fe-connect.c:1322 +#: fe-connect.c:1323 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "значение sslmode \"%s\" недопустимо для сборки без поддержки SSL\n" -#: fe-connect.c:1370 +#: fe-connect.c:1371 msgid "invalid SSL protocol version range\n" msgstr "неверный диапазон версий протокола SSL\n" -#: fe-connect.c:1395 +#: fe-connect.c:1396 #, c-format msgid "" "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n" msgstr "" "значение gssencmode \"%s\" недопустимо для сборки без поддержки GSSAPI\n" -#: fe-connect.c:1655 +#: fe-connect.c:1656 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "не удалось перевести сокет в режим TCP-передачи без задержки: %s\n" -#: fe-connect.c:1717 +#: fe-connect.c:1718 #, c-format msgid "connection to server on socket \"%s\" failed: " msgstr "подключиться к серверу через сокет \"%s\" не удалось: " -#: fe-connect.c:1744 +#: fe-connect.c:1745 #, c-format msgid "connection to server at \"%s\" (%s), port %s failed: " msgstr "подключиться к серверу \"%s\" (%s), порту %s не удалось: " -#: fe-connect.c:1749 +#: fe-connect.c:1750 #, c-format msgid "connection to server at \"%s\", port %s failed: " msgstr "подключиться к серверу \"%s\", порту %s не удалось: " -#: fe-connect.c:1774 +#: fe-connect.c:1775 msgid "" "\tIs the server running locally and accepting connections on that socket?\n" msgstr "" "\tСервер действительно работает локально и принимает подключения через этот " "сокет?\n" -#: fe-connect.c:1778 +#: fe-connect.c:1779 msgid "" "\tIs the server running on that host and accepting TCP/IP connections?\n" msgstr "" "\tСервер действительно работает по данному адресу и принимает TCP-" "соединения?\n" -#: fe-connect.c:1842 +#: fe-connect.c:1843 #, c-format msgid "invalid integer value \"%s\" for connection option \"%s\"\n" msgstr "" "неверное целочисленное значение \"%s\" для параметра соединения \"%s\"\n" -#: fe-connect.c:1872 fe-connect.c:1907 fe-connect.c:1943 fe-connect.c:2032 -#: fe-connect.c:2645 +#: fe-connect.c:1873 fe-connect.c:1908 fe-connect.c:1944 fe-connect.c:2033 +#: fe-connect.c:2646 #, c-format msgid "%s(%s) failed: %s\n" msgstr "ошибка в %s(%s): %s\n" -#: fe-connect.c:1997 +#: fe-connect.c:1998 #, c-format msgid "%s(%s) failed: error code %d\n" msgstr "ошибка в %s(%s): код ошибки %d\n" -#: fe-connect.c:2312 +#: fe-connect.c:2313 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "неверное состояние соединения - возможно разрушение памяти\n" -#: fe-connect.c:2391 +#: fe-connect.c:2392 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "неверный номер порта: \"%s\"\n" -#: fe-connect.c:2407 +#: fe-connect.c:2408 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "преобразовать имя \"%s\" в адрес не удалось: %s\n" -#: fe-connect.c:2420 +#: fe-connect.c:2421 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "не удалось разобрать сетевой адрес \"%s\": %s\n" -#: fe-connect.c:2433 +#: fe-connect.c:2434 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "длина пути Unix-сокета \"%s\" превышает предел (%d байт)\n" -#: fe-connect.c:2448 +#: fe-connect.c:2449 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "преобразовать путь Unix-сокета \"%s\" в адрес не удалось: %s\n" -#: fe-connect.c:2574 +#: fe-connect.c:2575 #, c-format msgid "could not create socket: %s\n" msgstr "не удалось создать сокет: %s\n" -#: fe-connect.c:2605 +#: fe-connect.c:2606 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "не удалось перевести сокет в неблокирующий режим: %s\n" -#: fe-connect.c:2615 +#: fe-connect.c:2616 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "" "не удалось перевести сокет в режим закрытия при выполнении (close-on-exec): " "%s\n" -#: fe-connect.c:2773 +#: fe-connect.c:2774 #, c-format msgid "could not get socket error status: %s\n" msgstr "не удалось получить статус ошибки сокета: %s\n" -#: fe-connect.c:2801 +#: fe-connect.c:2802 #, c-format msgid "could not get client address from socket: %s\n" msgstr "не удалось получить адрес клиента из сокета: %s\n" -#: fe-connect.c:2843 +#: fe-connect.c:2844 msgid "requirepeer parameter is not supported on this platform\n" msgstr "параметр requirepeer не поддерживается в этой ОС\n" -#: fe-connect.c:2846 +#: fe-connect.c:2847 #, c-format msgid "could not get peer credentials: %s\n" msgstr "не удалось получить учётные данные сервера: %s\n" -#: fe-connect.c:2870 +#: fe-connect.c:2871 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "" "requirepeer допускает подключение только к \"%s\", но сервер работает под " "именем \"%s\"\n" -#: fe-connect.c:2910 +#: fe-connect.c:2911 #, c-format msgid "could not send GSSAPI negotiation packet: %s\n" msgstr "не удалось отправить пакет согласования GSSAPI: %s\n" -#: fe-connect.c:2922 +#: fe-connect.c:2923 msgid "" "GSSAPI encryption required but was impossible (possibly no credential cache, " "no server support, or using a local socket)\n" @@ -437,174 +437,181 @@ msgstr "" "отсутствует кеш учётных данных, нет поддержки на сервере или используется " "локальный сокет)\n" -#: fe-connect.c:2964 +#: fe-connect.c:2965 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "не удалось отправить пакет согласования SSL: %s\n" -#: fe-connect.c:2995 +#: fe-connect.c:2996 #, c-format msgid "could not send startup packet: %s\n" msgstr "не удалось отправить стартовый пакет: %s\n" -#: fe-connect.c:3071 +#: fe-connect.c:3072 msgid "server does not support SSL, but SSL was required\n" msgstr "затребовано подключение через SSL, но сервер не поддерживает SSL\n" -#: fe-connect.c:3089 +#: fe-connect.c:3090 msgid "server sent an error response during SSL exchange\n" msgstr "сервер передал ошибочный ответ во время обмена сообщениями SSL\n" -#: fe-connect.c:3095 +#: fe-connect.c:3096 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "получен неверный ответ при согласовании SSL: %c\n" -#: fe-connect.c:3116 +#: fe-connect.c:3117 msgid "received unencrypted data after SSL response\n" msgstr "после ответа SSL получены незашифрованные данные\n" -#: fe-connect.c:3197 +#: fe-connect.c:3198 msgid "server doesn't support GSSAPI encryption, but it was required\n" msgstr "затребовано шифрование GSSAPI, но сервер его не поддерживает\n" -#: fe-connect.c:3209 +#: fe-connect.c:3210 #, c-format msgid "received invalid response to GSSAPI negotiation: %c\n" msgstr "получен неверный ответ при согласовании GSSAPI: %c\n" -#: fe-connect.c:3228 +#: fe-connect.c:3229 msgid "received unencrypted data after GSSAPI encryption response\n" msgstr "" "после ответа на запрос шифрования GSSAPI получены незашифрованные данные\n" -#: fe-connect.c:3293 fe-connect.c:3318 +#: fe-connect.c:3294 fe-connect.c:3319 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "ожидался запрос аутентификации от сервера, но получено: %c\n" -#: fe-connect.c:3525 +#: fe-connect.c:3526 msgid "unexpected message from server during startup\n" msgstr "неожиданное сообщение от сервера в начале работы\n" -#: fe-connect.c:3617 +#: fe-connect.c:3618 msgid "session is read-only\n" msgstr "сеанс не допускает запись\n" -#: fe-connect.c:3620 +#: fe-connect.c:3621 msgid "session is not read-only\n" msgstr "сеанс допускает запись\n" -#: fe-connect.c:3674 +#: fe-connect.c:3675 msgid "server is in hot standby mode\n" msgstr "сервер работает в режиме горячего резерва\n" -#: fe-connect.c:3677 +#: fe-connect.c:3678 msgid "server is not in hot standby mode\n" msgstr "сервер работает не в режиме горячего резерва\n" -#: fe-connect.c:3795 fe-connect.c:3847 +#: fe-connect.c:3796 fe-connect.c:3848 #, c-format msgid "\"%s\" failed\n" msgstr "выполнить \"%s\" не удалось\n" -#: fe-connect.c:3861 +#: fe-connect.c:3862 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "неверное состояние соединения %d - возможно разрушение памяти\n" -#: fe-connect.c:4307 fe-connect.c:4367 +#: fe-connect.c:4308 fe-connect.c:4368 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "ошибка в PGEventProc \"%s\" при обработке события PGEVT_CONNRESET\n" -#: fe-connect.c:4727 +#: fe-connect.c:4728 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "некорректный адрес LDAP \"%s\": схема должна быть ldap://\n" -#: fe-connect.c:4742 +#: fe-connect.c:4743 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "некорректный адрес LDAP \"%s\": отсутствует уникальное имя\n" -#: fe-connect.c:4754 fe-connect.c:4812 +#: fe-connect.c:4755 fe-connect.c:4813 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "некорректный адрес LDAP \"%s\": должен быть только один атрибут\n" -#: fe-connect.c:4766 fe-connect.c:4828 +#: fe-connect.c:4767 fe-connect.c:4829 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "" "некорректный адрес LDAP \"%s\": не указана область поиска (base/one/sub)\n" -#: fe-connect.c:4778 +#: fe-connect.c:4779 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "некорректный адрес LDAP \"%s\": нет фильтра\n" -#: fe-connect.c:4800 +#: fe-connect.c:4801 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "некорректный адрес LDAP \"%s\": неверный номер порта\n" -#: fe-connect.c:4838 +#: fe-connect.c:4839 msgid "could not create LDAP structure\n" msgstr "не удалось создать структуру LDAP\n" -#: fe-connect.c:4914 +#: fe-connect.c:4915 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "ошибка поиска на сервере LDAP: %s\n" -#: fe-connect.c:4925 +#: fe-connect.c:4926 msgid "more than one entry found on LDAP lookup\n" msgstr "при поиске LDAP найдено более одного вхождения\n" -#: fe-connect.c:4926 fe-connect.c:4938 +#: fe-connect.c:4927 fe-connect.c:4939 msgid "no entry found on LDAP lookup\n" msgstr "при поиске LDAP ничего не найдено\n" -#: fe-connect.c:4949 fe-connect.c:4962 +#: fe-connect.c:4950 fe-connect.c:4963 msgid "attribute has no values on LDAP lookup\n" msgstr "атрибут не содержит значений при поиске LDAP\n" -#: fe-connect.c:5014 fe-connect.c:5033 fe-connect.c:5565 +#: fe-connect.c:4977 +#, c-format +msgid "connection info string size exceeds the maximum allowed (%d)\n" +msgstr "" +"размер строки с информацией о подключении превышает максимально допустимый " +"(%d)\n" + +#: fe-connect.c:5029 fe-connect.c:5048 fe-connect.c:5580 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "в строке соединения нет \"=\" после \"%s\"\n" -#: fe-connect.c:5106 fe-connect.c:5750 fe-connect.c:6526 +#: fe-connect.c:5121 fe-connect.c:5765 fe-connect.c:6541 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "неверный параметр соединения \"%s\"\n" -#: fe-connect.c:5122 fe-connect.c:5614 +#: fe-connect.c:5137 fe-connect.c:5629 msgid "unterminated quoted string in connection info string\n" msgstr "в строке соединения не хватает закрывающей кавычки\n" -#: fe-connect.c:5203 +#: fe-connect.c:5218 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "определение службы \"%s\" не найдено\n" -#: fe-connect.c:5229 +#: fe-connect.c:5244 #, c-format msgid "service file \"%s\" not found\n" msgstr "файл определений служб \"%s\" не найден\n" -#: fe-connect.c:5243 +#: fe-connect.c:5258 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "слишком длинная строка (%d) в файле определений служб \"%s\"\n" -#: fe-connect.c:5314 fe-connect.c:5358 +#: fe-connect.c:5329 fe-connect.c:5373 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "синтаксическая ошибка в файле определения служб \"%s\" (строка %d)\n" -#: fe-connect.c:5325 +#: fe-connect.c:5340 #, c-format msgid "" "nested service specifications not supported in service file \"%s\", line %d\n" @@ -612,24 +619,24 @@ msgstr "" "рекурсивные определения служб не поддерживаются (файл определения служб " "\"%s\", строка %d)\n" -#: fe-connect.c:6046 +#: fe-connect.c:6061 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "во внутреннюю процедуру разбора строки передан ошибочный URI: \"%s\"\n" -#: fe-connect.c:6123 +#: fe-connect.c:6138 #, c-format msgid "" "end of string reached when looking for matching \"]\" in IPv6 host address " "in URI: \"%s\"\n" msgstr "URI не содержит символ \"]\" после адреса IPv6: \"%s\"\n" -#: fe-connect.c:6130 +#: fe-connect.c:6145 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "IPv6, содержащийся в URI, не может быть пустым: \"%s\"\n" -#: fe-connect.c:6145 +#: fe-connect.c:6160 #, c-format msgid "" "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): " @@ -638,41 +645,41 @@ msgstr "" "неожиданный символ \"%c\" в позиции %d в URI (ожидалось \":\" или \"/\"): " "\"%s\"\n" -#: fe-connect.c:6275 +#: fe-connect.c:6290 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "лишний разделитель ключа/значения \"=\" в параметрах URI: \"%s\"\n" -#: fe-connect.c:6295 +#: fe-connect.c:6310 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "в параметрах URI не хватает разделителя ключа/значения \"=\": \"%s\"\n" -#: fe-connect.c:6347 +#: fe-connect.c:6362 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "неверный параметр в URI: \"%s\"\n" -#: fe-connect.c:6421 +#: fe-connect.c:6436 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "неверный символ, закодированный с %%: \"%s\"\n" -#: fe-connect.c:6431 +#: fe-connect.c:6446 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "недопустимое значение %%00 для символа, закодированного с %%: \"%s\"\n" -#: fe-connect.c:6803 +#: fe-connect.c:6818 msgid "connection pointer is NULL\n" msgstr "нулевой указатель соединения\n" -#: fe-connect.c:7091 +#: fe-connect.c:7106 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: файл паролей \"%s\" - не обычный файл\n" -#: fe-connect.c:7100 +#: fe-connect.c:7115 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " @@ -681,158 +688,171 @@ msgstr "" "ПРЕДУПРЕЖДЕНИЕ: к файлу паролей \"%s\" имеют доступ все или группа; права " "должны быть u=rw (0600) или более ограниченные\n" -#: fe-connect.c:7208 +#: fe-connect.c:7223 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "пароль получен из файла \"%s\"\n" -#: fe-exec.c:449 fe-exec.c:3411 +#: fe-exec.c:449 fe-exec.c:3416 #, c-format msgid "row number %d is out of range 0..%d" msgstr "номер записи %d вне диапазона 0..%d" -#: fe-exec.c:510 fe-protocol3.c:207 fe-protocol3.c:232 fe-protocol3.c:256 -#: fe-protocol3.c:274 fe-protocol3.c:371 fe-protocol3.c:743 +#: fe-exec.c:510 fe-protocol3.c:208 fe-protocol3.c:233 fe-protocol3.c:257 +#: fe-protocol3.c:275 fe-protocol3.c:372 fe-protocol3.c:744 msgid "out of memory" msgstr "нехватка памяти" -#: fe-exec.c:511 fe-protocol3.c:1939 +#: fe-exec.c:511 fe-protocol3.c:1953 #, c-format msgid "%s" msgstr "%s" -#: fe-exec.c:792 +#: fe-exec.c:797 msgid "write to server failed\n" msgstr "ошибка при передаче данных серверу\n" -#: fe-exec.c:864 +#: fe-exec.c:869 msgid "NOTICE" msgstr "ЗАМЕЧАНИЕ" -#: fe-exec.c:922 +#: fe-exec.c:927 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresult не может вместить больше чем INT_MAX кортежей" -#: fe-exec.c:934 +#: fe-exec.c:939 msgid "size_t overflow" msgstr "переполнение size_t" -#: fe-exec.c:1351 fe-exec.c:1477 fe-exec.c:1526 +#: fe-exec.c:1356 fe-exec.c:1482 fe-exec.c:1531 msgid "command string is a null pointer\n" msgstr "указатель на командную строку нулевой\n" -#: fe-exec.c:1483 fe-exec.c:1532 fe-exec.c:1628 +#: fe-exec.c:1488 fe-exec.c:1537 fe-exec.c:1633 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "число параметров должно быть от 0 до %d\n" -#: fe-exec.c:1520 fe-exec.c:1622 +#: fe-exec.c:1525 fe-exec.c:1627 msgid "statement name is a null pointer\n" msgstr "указатель на имя оператора нулевой\n" -#: fe-exec.c:1664 fe-exec.c:3256 +#: fe-exec.c:1669 fe-exec.c:3261 msgid "no connection to the server\n" msgstr "нет соединения с сервером\n" -#: fe-exec.c:1673 fe-exec.c:3265 +#: fe-exec.c:1678 fe-exec.c:3270 msgid "another command is already in progress\n" msgstr "уже выполняется другая команда\n" -#: fe-exec.c:1704 +#: fe-exec.c:1709 msgid "cannot queue commands during COPY\n" msgstr "во время COPY нельзя добавлять команды в очередь\n" -#: fe-exec.c:1822 +#: fe-exec.c:1827 msgid "length must be given for binary parameter\n" msgstr "для двоичного параметра должна быть указана длина\n" -#: fe-exec.c:2142 +#: fe-exec.c:2147 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "неожиданный asyncStatus: %d\n" -#: fe-exec.c:2178 +#: fe-exec.c:2183 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "ошибка в PGEventProc \"%s\" при обработке события PGEVT_RESULTCREATE\n" -#: fe-exec.c:2326 +#: fe-exec.c:2331 msgid "" "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "" "функции синхронного выполнения команд не допускаются в конвейерном режиме\n" -#: fe-exec.c:2348 +#: fe-exec.c:2353 msgid "COPY terminated by new PQexec" msgstr "операция COPY прервана вызовом PQexec" -#: fe-exec.c:2365 +#: fe-exec.c:2370 msgid "PQexec not allowed during COPY BOTH\n" msgstr "вызов PQexec не допускается в процессе COPY BOTH\n" -#: fe-exec.c:2593 fe-exec.c:2649 fe-exec.c:2718 fe-protocol3.c:1870 +#: fe-exec.c:2598 fe-exec.c:2654 fe-exec.c:2723 fe-protocol3.c:1884 msgid "no COPY in progress\n" msgstr "операция COPY не выполняется\n" -#: fe-exec.c:2895 +#: fe-exec.c:2900 msgid "PQfn not allowed in pipeline mode\n" msgstr "PQfn не допускается в конвейерном режиме\n" -#: fe-exec.c:2903 +#: fe-exec.c:2908 msgid "connection in wrong state\n" msgstr "соединение в неправильном состоянии\n" -#: fe-exec.c:2947 +#: fe-exec.c:2952 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "перейти в конвейерный режиме нельзя, соединение не простаивает\n" -#: fe-exec.c:2984 fe-exec.c:3008 +#: fe-exec.c:2989 fe-exec.c:3013 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "выйти из конвейерного режима нельзя, не собрав все результаты\n" -#: fe-exec.c:2989 +#: fe-exec.c:2994 msgid "cannot exit pipeline mode while busy\n" msgstr "выйти из конвейерного режима в занятом состоянии нельзя\n" -#: fe-exec.c:3001 +#: fe-exec.c:3006 msgid "cannot exit pipeline mode while in COPY\n" msgstr "выйти из конвейерного режима во время COPY нельзя\n" -#: fe-exec.c:3189 +#: fe-exec.c:3194 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "отправить конвейер, не перейдя в конвейерный режим, нельзя\n" -#: fe-exec.c:3300 +#: fe-exec.c:3305 msgid "invalid ExecStatusType code" msgstr "неверный код ExecStatusType" -#: fe-exec.c:3327 +#: fe-exec.c:3332 msgid "PGresult is not an error result\n" msgstr "В PGresult не передан результат ошибки\n" -#: fe-exec.c:3395 fe-exec.c:3418 +#: fe-exec.c:3400 fe-exec.c:3423 #, c-format msgid "column number %d is out of range 0..%d" msgstr "номер столбца %d вне диапазона 0..%d" -#: fe-exec.c:3433 +#: fe-exec.c:3438 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "номер параметра %d вне диапазона 0..%d" -#: fe-exec.c:3743 +#: fe-exec.c:3748 #, c-format msgid "could not interpret result from server: %s" msgstr "не удалось интерпретировать ответ сервера: %s" -#: fe-exec.c:4021 fe-exec.c:4134 +#: fe-exec.c:4026 fe-exec.c:4160 msgid "incomplete multibyte character\n" msgstr "неполный многобайтный символ\n" -#: fe-exec.c:4024 fe-exec.c:4154 +#: fe-exec.c:4029 fe-exec.c:4180 msgid "invalid multibyte character\n" msgstr "неверный многобайтный символ\n" +#: fe-exec.c:4283 +#, c-format +msgid "escaped string size exceeds the maximum allowed (%zu)\n" +msgstr "" +"размер строки с экранированием превышает максимально допустимый (%zu)\n" + +#: fe-exec.c:4461 +#, c-format +msgid "escaped bytea size exceeds the maximum allowed (%zu)\n" +msgstr "" +"размер значения bytea с экранированием превышает максимально допустимый " +"(%zu)\n" + #: fe-gssapi-common.c:124 msgid "GSSAPI name import error" msgstr "ошибка импорта имени в GSSAPI" @@ -913,12 +933,12 @@ msgstr "неверный сокет\n" msgid "%s() failed: %s\n" msgstr "ошибка в %s(): %s\n" -#: fe-protocol3.c:184 +#: fe-protocol3.c:185 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "от сервера во время простоя получено сообщение типа 0x%02x" -#: fe-protocol3.c:403 +#: fe-protocol3.c:404 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)\n" @@ -926,121 +946,121 @@ msgstr "" "сервер отправил данные (сообщение \"D\") без предварительного описания " "строки (сообщение \"T\")\n" -#: fe-protocol3.c:446 +#: fe-protocol3.c:447 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "неожиданный ответ сервера; первый полученный символ: \"%c\"\n" -#: fe-protocol3.c:471 +#: fe-protocol3.c:472 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "содержимое не соответствует длине в сообщении типа \"%c\"\n" -#: fe-protocol3.c:491 +#: fe-protocol3.c:492 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "потеряна синхронизация с сервером: получено сообщение типа \"%c\", длина %d\n" -#: fe-protocol3.c:543 fe-protocol3.c:583 +#: fe-protocol3.c:544 fe-protocol3.c:584 msgid "insufficient data in \"T\" message" msgstr "недостаточно данных в сообщении \"T\"" -#: fe-protocol3.c:654 fe-protocol3.c:860 +#: fe-protocol3.c:655 fe-protocol3.c:861 msgid "out of memory for query result" msgstr "недостаточно памяти для результата запроса" -#: fe-protocol3.c:723 +#: fe-protocol3.c:724 msgid "insufficient data in \"t\" message" msgstr "недостаточно данных в сообщении \"t\"" -#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832 +#: fe-protocol3.c:783 fe-protocol3.c:815 fe-protocol3.c:833 msgid "insufficient data in \"D\" message" msgstr "недостаточно данных в сообщении \"D\"" -#: fe-protocol3.c:788 +#: fe-protocol3.c:789 msgid "unexpected field count in \"D\" message" msgstr "неверное число полей в сообщении \"D\"" -#: fe-protocol3.c:1036 +#: fe-protocol3.c:1037 msgid "no error message available\n" msgstr "нет сообщения об ошибке\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1084 fe-protocol3.c:1103 +#: fe-protocol3.c:1085 fe-protocol3.c:1104 #, c-format msgid " at character %s" msgstr " символ %s" -#: fe-protocol3.c:1116 +#: fe-protocol3.c:1117 #, c-format msgid "DETAIL: %s\n" msgstr "ПОДРОБНОСТИ: %s\n" -#: fe-protocol3.c:1119 +#: fe-protocol3.c:1120 #, c-format msgid "HINT: %s\n" msgstr "ПОДСКАЗКА: %s\n" -#: fe-protocol3.c:1122 +#: fe-protocol3.c:1123 #, c-format msgid "QUERY: %s\n" msgstr "ЗАПРОС: %s\n" -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1130 #, c-format msgid "CONTEXT: %s\n" msgstr "КОНТЕКСТ: %s\n" -#: fe-protocol3.c:1138 +#: fe-protocol3.c:1139 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "СХЕМА: %s\n" -#: fe-protocol3.c:1142 +#: fe-protocol3.c:1143 #, c-format msgid "TABLE NAME: %s\n" msgstr "ТАБЛИЦА: %s\n" -#: fe-protocol3.c:1146 +#: fe-protocol3.c:1147 #, c-format msgid "COLUMN NAME: %s\n" msgstr "СТОЛБЕЦ: %s\n" -#: fe-protocol3.c:1150 +#: fe-protocol3.c:1151 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "ТИП ДАННЫХ: %s\n" -#: fe-protocol3.c:1154 +#: fe-protocol3.c:1155 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "ОГРАНИЧЕНИЕ: %s\n" -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1167 msgid "LOCATION: " msgstr "ПОЛОЖЕНИЕ: " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1169 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1170 +#: fe-protocol3.c:1171 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1365 +#: fe-protocol3.c:1379 #, c-format msgid "LINE %d: " msgstr "СТРОКА %d: " -#: fe-protocol3.c:1764 +#: fe-protocol3.c:1778 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline можно вызывать только во время COPY OUT с текстом\n" -#: fe-protocol3.c:2130 +#: fe-protocol3.c:2144 #, c-format msgid "protocol error: id=0x%x\n" msgstr "ошибка протокола: id=0x%x\n" diff --git a/src/interfaces/libpq/po/sv.po b/src/interfaces/libpq/po/sv.po index c2f25cef84e..59482389eb1 100644 --- a/src/interfaces/libpq/po/sv.po +++ b/src/interfaces/libpq/po/sv.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-02-12 07:59+0000\n" -"PO-Revision-Date: 2025-02-12 21:12+0100\n" +"POT-Creation-Date: 2026-02-03 00:17+0000\n" +"PO-Revision-Date: 2026-02-02 23:34+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -56,16 +56,16 @@ msgstr "kunde inte skapa engångsnummer\n" #: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657 #: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362 #: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282 -#: fe-connect.c:913 fe-connect.c:1462 fe-connect.c:1631 fe-connect.c:2982 -#: fe-connect.c:4714 fe-connect.c:4975 fe-connect.c:5094 fe-connect.c:5346 -#: fe-connect.c:5427 fe-connect.c:5526 fe-connect.c:5782 fe-connect.c:5811 -#: fe-connect.c:5883 fe-connect.c:5907 fe-connect.c:5925 fe-connect.c:6026 -#: fe-connect.c:6035 fe-connect.c:6393 fe-connect.c:6543 fe-connect.c:6809 -#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3145 fe-exec.c:3337 -#: fe-exec.c:4179 fe-exec.c:4346 fe-gssapi-common.c:111 fe-lobj.c:881 -#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023 -#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:500 -#: fe-secure-openssl.c:446 fe-secure-openssl.c:1124 +#: fe-connect.c:914 fe-connect.c:1463 fe-connect.c:1632 fe-connect.c:2983 +#: fe-connect.c:4715 fe-connect.c:4990 fe-connect.c:5109 fe-connect.c:5361 +#: fe-connect.c:5442 fe-connect.c:5541 fe-connect.c:5797 fe-connect.c:5826 +#: fe-connect.c:5898 fe-connect.c:5922 fe-connect.c:5940 fe-connect.c:6041 +#: fe-connect.c:6050 fe-connect.c:6408 fe-connect.c:6558 fe-connect.c:6826 +#: fe-exec.c:691 fe-exec.c:881 fe-exec.c:1228 fe-exec.c:3150 fe-exec.c:3342 +#: fe-exec.c:4211 fe-exec.c:4405 fe-gssapi-common.c:111 fe-lobj.c:881 +#: fe-protocol3.c:976 fe-protocol3.c:991 fe-protocol3.c:1024 +#: fe-protocol3.c:1745 fe-secure-common.c:110 fe-secure-gssapi.c:512 +#: fe-secure-gssapi.c:687 fe-secure-openssl.c:446 fe-secure-openssl.c:1124 msgid "out of memory\n" msgstr "slut på minne\n" @@ -219,12 +219,12 @@ msgstr "autentiseringsmetod %u stöds ej\n" msgid "user name lookup failure: error code %lu\n" msgstr "misslyckad sökning efter användarnamn: felkod %lu\n" -#: fe-auth.c:1117 fe-connect.c:2857 +#: fe-auth.c:1117 fe-connect.c:2858 #, 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:1122 fe-connect.c:2862 +#: fe-auth.c:1122 fe-connect.c:2863 #, c-format msgid "local user with ID %d does not exist\n" msgstr "lokal användare med ID %d existerar inte\n" @@ -242,538 +242,553 @@ msgstr "password_encryption-värdet är för långt\n" msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "okänd lösenordskrypteringsalgoritm \"%s\"\n" -#: fe-connect.c:1096 +#: fe-connect.c:1097 #, 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:1182 +#: fe-connect.c:1183 #, 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:1275 fe-connect.c:1301 fe-connect.c:1343 fe-connect.c:1352 -#: fe-connect.c:1385 fe-connect.c:1429 +#: fe-connect.c:1276 fe-connect.c:1302 fe-connect.c:1344 fe-connect.c:1353 +#: fe-connect.c:1386 fe-connect.c:1430 #, c-format msgid "invalid %s value: \"%s\"\n" msgstr "ogiltigt %s-värde: \"%s\"\n" -#: fe-connect.c:1322 +#: fe-connect.c:1323 #, 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:1370 +#: fe-connect.c:1371 msgid "invalid SSL protocol version range\n" msgstr "ogiltigt intervall för SSL-protokollversion\n" -#: fe-connect.c:1395 +#: fe-connect.c:1396 #, c-format msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n" msgstr "värde för gssenc-läge, \"%s\", är ogiltigt när GSSAPI-stöd inte kompilerats in\n" -#: fe-connect.c:1655 +#: fe-connect.c:1656 #, 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:1717 +#: fe-connect.c:1718 #, c-format msgid "connection to server on socket \"%s\" failed: " msgstr "anslutning till server på socket \"%s\" misslyckades: " -#: fe-connect.c:1744 +#: fe-connect.c:1745 #, c-format msgid "connection to server at \"%s\" (%s), port %s failed: " msgstr "anslutning til server på \"%s\" (%s), port %s misslyckades: " -#: fe-connect.c:1749 +#: fe-connect.c:1750 #, c-format msgid "connection to server at \"%s\", port %s failed: " msgstr "anslutning till server på \"%s\", port %s misslyckades: " -#: fe-connect.c:1774 +#: fe-connect.c:1775 msgid "\tIs the server running locally and accepting connections on that socket?\n" msgstr "" "\tKör servern lokalt och accepterar den\n" "\tanslutningar till detta uttag (socket)?\n" -#: fe-connect.c:1778 +#: fe-connect.c:1779 msgid "\tIs the server running on that host and accepting TCP/IP connections?\n" msgstr "\tKör servern på den värden och accepterar den TCP/IP-anslutningar?\n" -#: fe-connect.c:1842 +#: fe-connect.c:1843 #, c-format msgid "invalid integer value \"%s\" for connection option \"%s\"\n" msgstr "ogiltigt heltalsvärde \"%s\" för anslutningsflagga \"%s\"\n" -#: fe-connect.c:1872 fe-connect.c:1907 fe-connect.c:1943 fe-connect.c:2032 -#: fe-connect.c:2645 +#: fe-connect.c:1873 fe-connect.c:1908 fe-connect.c:1944 fe-connect.c:2033 +#: fe-connect.c:2646 #, c-format msgid "%s(%s) failed: %s\n" msgstr "%s(%s) misslyckades: %s\n" -#: fe-connect.c:1997 +#: fe-connect.c:1998 #, c-format msgid "%s(%s) failed: error code %d\n" msgstr "%s(%s) misslyckades: felkod %d\n" -#: fe-connect.c:2312 +#: fe-connect.c:2313 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "ogiltigt tillstånd i anslutning, antagligen korrupt minne\n" -#: fe-connect.c:2391 +#: fe-connect.c:2392 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "ogiltigt portnummer \"%s\"\n" -#: fe-connect.c:2407 +#: fe-connect.c:2408 #, 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:2420 +#: fe-connect.c:2421 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "kunde inte parsa nätverksadress \"%s\": %s\n" -#: fe-connect.c:2433 +#: fe-connect.c:2434 #, 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:2448 +#: fe-connect.c:2449 #, 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:2574 +#: fe-connect.c:2575 #, c-format msgid "could not create socket: %s\n" msgstr "kan inte skapa uttag: %s\n" -#: fe-connect.c:2605 +#: fe-connect.c:2606 #, 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:2615 +#: fe-connect.c:2616 #, 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:2773 +#: fe-connect.c:2774 #, 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:2801 +#: fe-connect.c:2802 #, 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:2843 +#: fe-connect.c:2844 msgid "requirepeer parameter is not supported on this platform\n" msgstr "requirepeer-parameter stöds inte på denna plattform\n" -#: fe-connect.c:2846 +#: fe-connect.c:2847 #, c-format msgid "could not get peer credentials: %s\n" msgstr "kunde inte hämta andra sidans referenser: %s\n" -#: fe-connect.c:2870 +#: fe-connect.c:2871 #, 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:2910 +#: fe-connect.c:2911 #, c-format msgid "could not send GSSAPI negotiation packet: %s\n" msgstr "kunde inte skicka GSSAPI-paket för uppkopplingsförhandling: %s\n" -#: fe-connect.c:2922 +#: fe-connect.c:2923 msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)\n" msgstr "GSSAPI-kryptering krävdes men var omöjligt (kanske ingen credential-cache, inget serverstöd eller använder ett lokalt uttag)\n" -#: fe-connect.c:2964 +#: fe-connect.c:2965 #, 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:2995 +#: fe-connect.c:2996 #, c-format msgid "could not send startup packet: %s\n" msgstr "kan inte skicka startpaketet: %s\n" -#: fe-connect.c:3071 +#: fe-connect.c:3072 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:3089 +#: fe-connect.c:3090 msgid "server sent an error response during SSL exchange\n" msgstr "servern skickade ett felmeddelande vid SSL-utbyte\n" -#: fe-connect.c:3095 +#: fe-connect.c:3096 #, 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:3116 +#: fe-connect.c:3117 msgid "received unencrypted data after SSL response\n" msgstr "tog emot okrypterad data efter SSL-svar\n" -#: fe-connect.c:3197 +#: fe-connect.c:3198 msgid "server doesn't support GSSAPI encryption, but it was required\n" msgstr "GSSAPI stöds inte av servern, men det krävdes\n" -#: fe-connect.c:3209 +#: fe-connect.c:3210 #, c-format msgid "received invalid response to GSSAPI negotiation: %c\n" msgstr "tog emot ogiltigt svar till GSSAPI-uppkopplingsförhandling: %c\n" -#: fe-connect.c:3228 +#: fe-connect.c:3229 msgid "received unencrypted data after GSSAPI encryption response\n" msgstr "tog emot okrypterad data efter GSSAPI-krypteringssvar\n" -#: fe-connect.c:3293 fe-connect.c:3318 +#: fe-connect.c:3294 fe-connect.c:3319 #, 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:3525 +#: fe-connect.c:3526 msgid "unexpected message from server during startup\n" msgstr "oväntat meddelande från servern under starten\n" -#: fe-connect.c:3617 +#: fe-connect.c:3618 msgid "session is read-only\n" msgstr "sessionen är i readonly-läge\n" -#: fe-connect.c:3620 +#: fe-connect.c:3621 msgid "session is not read-only\n" msgstr "sessionen är inte i readonly-läge\n" -#: fe-connect.c:3674 +#: fe-connect.c:3675 msgid "server is in hot standby mode\n" msgstr "servern är i varmt standby-läge\n" -#: fe-connect.c:3677 +#: fe-connect.c:3678 msgid "server is not in hot standby mode\n" msgstr "servern är inte i varmt standby-läge\n" -#: fe-connect.c:3795 fe-connect.c:3847 +#: fe-connect.c:3796 fe-connect.c:3848 #, c-format msgid "\"%s\" failed\n" msgstr "\"%s\" misslyckades\n" -#: fe-connect.c:3861 +#: fe-connect.c:3862 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "ogiltigt tillstånd %d i anslutning, antagligen korrupt minne\n" -#: fe-connect.c:4307 fe-connect.c:4367 +#: fe-connect.c:4308 fe-connect.c:4368 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc \"%s\" misslyckades under PGEVT_CONNRESET-händelse\n" -#: fe-connect.c:4727 +#: fe-connect.c:4728 #, 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:4742 +#: fe-connect.c:4743 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "ogiltig LDAP URL \"%s\": saknar urskiljbart namn\n" -#: fe-connect.c:4754 fe-connect.c:4812 +#: fe-connect.c:4755 fe-connect.c:4813 #, 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:4766 fe-connect.c:4828 +#: fe-connect.c:4767 fe-connect.c:4829 #, 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:4778 +#: fe-connect.c:4779 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "ogiltigt LDAP URL \"%s\": inget filter\n" -#: fe-connect.c:4800 +#: fe-connect.c:4801 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "ogiltig LDAP URL \"%s\": ogiltigt portnummer\n" -#: fe-connect.c:4838 +#: fe-connect.c:4839 msgid "could not create LDAP structure\n" msgstr "kunde inte skapa LDAP-struktur\n" -#: fe-connect.c:4914 +#: fe-connect.c:4915 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "uppslagning av LDAP-server misslyckades: %s\n" -#: fe-connect.c:4925 +#: fe-connect.c:4926 msgid "more than one entry found on LDAP lookup\n" msgstr "mer än en post hittad i LDAP-uppslagning\n" -#: fe-connect.c:4926 fe-connect.c:4938 +#: fe-connect.c:4927 fe-connect.c:4939 msgid "no entry found on LDAP lookup\n" msgstr "ingen post hittad i LDAP-uppslagning\n" -#: fe-connect.c:4949 fe-connect.c:4962 +#: fe-connect.c:4950 fe-connect.c:4963 msgid "attribute has no values on LDAP lookup\n" msgstr "attributet har inga värden i LDAP-uppslagning\n" -#: fe-connect.c:5014 fe-connect.c:5033 fe-connect.c:5565 +#: fe-connect.c:4977 +#, c-format +msgid "connection info string size exceeds the maximum allowed (%d)\n" +msgstr "anslutningssträng överskrider det maximalt tillåtna (%d)\n" + +#: fe-connect.c:5029 fe-connect.c:5048 fe-connect.c:5580 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "\"=\" efter \"%s\" saknas i anslutningssträng\n" -#: fe-connect.c:5106 fe-connect.c:5750 fe-connect.c:6526 +#: fe-connect.c:5121 fe-connect.c:5765 fe-connect.c:6541 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "ogiltig anslutningsparameter \"%s\"\n" -#: fe-connect.c:5122 fe-connect.c:5614 +#: fe-connect.c:5137 fe-connect.c:5629 msgid "unterminated quoted string in connection info string\n" msgstr "icke terminerad sträng i uppkopplingsinformationen\n" -#: fe-connect.c:5203 +#: fe-connect.c:5218 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "definition av service \"%s\" hittades inte\n" -#: fe-connect.c:5229 +#: fe-connect.c:5244 #, c-format msgid "service file \"%s\" not found\n" msgstr "servicefil \"%s\" hittades inte\n" -#: fe-connect.c:5243 +#: fe-connect.c:5258 #, 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:5314 fe-connect.c:5358 +#: fe-connect.c:5329 fe-connect.c:5373 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "syntaxfel i servicefel \"%s\", rad %d\n" -#: fe-connect.c:5325 +#: fe-connect.c:5340 #, 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:6046 +#: fe-connect.c:6061 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "ogiltig URI propagerad till intern parsningsrutin: \"%s\"\n" -#: fe-connect.c:6123 +#: fe-connect.c:6138 #, 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:6130 +#: fe-connect.c:6145 #, 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:6145 +#: fe-connect.c:6160 #, 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:6275 +#: fe-connect.c:6290 #, 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:6295 +#: fe-connect.c:6310 #, 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:6347 +#: fe-connect.c:6362 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "ogiltig URI-frågeparameter: \"%s\"\n" -#: fe-connect.c:6421 +#: fe-connect.c:6436 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "ogiltigt procent-kodad symbol: \"%s\"\n" -#: fe-connect.c:6431 +#: fe-connect.c:6446 #, 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:6801 +#: fe-connect.c:6818 msgid "connection pointer is NULL\n" msgstr "anslutningspekare är NULL\n" -#: fe-connect.c:7089 +#: fe-connect.c:7106 #, 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:7098 +#: fe-connect.c:7115 #, 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:7206 +#: fe-connect.c:7223 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "lösenord hämtat från fil \"%s\"\n" -#: fe-exec.c:449 fe-exec.c:3411 +#: fe-exec.c:449 fe-exec.c:3416 #, c-format msgid "row number %d is out of range 0..%d" msgstr "radnummer %d är utanför giltigt intervall 0..%d" -#: fe-exec.c:510 fe-protocol3.c:207 fe-protocol3.c:232 fe-protocol3.c:256 -#: fe-protocol3.c:274 fe-protocol3.c:371 fe-protocol3.c:743 +#: fe-exec.c:510 fe-protocol3.c:208 fe-protocol3.c:233 fe-protocol3.c:257 +#: fe-protocol3.c:275 fe-protocol3.c:372 fe-protocol3.c:744 msgid "out of memory" msgstr "slut på minne" -#: fe-exec.c:511 fe-protocol3.c:1939 +#: fe-exec.c:511 fe-protocol3.c:1953 #, c-format msgid "%s" msgstr "%s" -#: fe-exec.c:792 +#: fe-exec.c:797 msgid "write to server failed\n" msgstr "skrivning till servern misslyckades\n" -#: fe-exec.c:864 +#: fe-exec.c:869 msgid "NOTICE" msgstr "NOTIS" -#: fe-exec.c:922 +#: fe-exec.c:927 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresult stöder inte mer än INT_MAX tupler" -#: fe-exec.c:934 +#: fe-exec.c:939 msgid "size_t overflow" msgstr "size_t-överspill" -#: fe-exec.c:1351 fe-exec.c:1477 fe-exec.c:1526 +#: fe-exec.c:1356 fe-exec.c:1482 fe-exec.c:1531 msgid "command string is a null pointer\n" msgstr "kommandosträngen är en null-pekare\n" -#: fe-exec.c:1483 fe-exec.c:1532 fe-exec.c:1628 +#: fe-exec.c:1488 fe-exec.c:1537 fe-exec.c:1633 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "antal parametrar måste vara mellan 0 och %d\n" -#: fe-exec.c:1520 fe-exec.c:1622 +#: fe-exec.c:1525 fe-exec.c:1627 msgid "statement name is a null pointer\n" msgstr "satsens namn är en null-pekare\n" -#: fe-exec.c:1664 fe-exec.c:3256 +#: fe-exec.c:1669 fe-exec.c:3261 msgid "no connection to the server\n" msgstr "inte förbunden till servern\n" -#: fe-exec.c:1673 fe-exec.c:3265 +#: fe-exec.c:1678 fe-exec.c:3270 msgid "another command is already in progress\n" msgstr "ett annat kommando pågår redan\n" -#: fe-exec.c:1704 +#: fe-exec.c:1709 msgid "cannot queue commands during COPY\n" msgstr "kan inte köa kommandon när COPY körs\n" -#: fe-exec.c:1822 +#: fe-exec.c:1827 msgid "length must be given for binary parameter\n" msgstr "längden måste anges för en binär parameter\n" -#: fe-exec.c:2142 +#: fe-exec.c:2147 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "oväntad asyncStatus: %d\n" -#: fe-exec.c:2178 +#: fe-exec.c:2183 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc \"%s\" misslyckades under PGEVT_RESULTCREATE-händelse\n" -#: fe-exec.c:2326 +#: fe-exec.c:2331 msgid "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "synkrona kommandoexekveringsfunktioner tillåts inte i pipeline-läge\n" -#: fe-exec.c:2348 +#: fe-exec.c:2353 msgid "COPY terminated by new PQexec" msgstr "COPY terminerad av ny PQexec" -#: fe-exec.c:2365 +#: fe-exec.c:2370 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec tillåts inte under COPY BOTH\n" -#: fe-exec.c:2593 fe-exec.c:2649 fe-exec.c:2718 fe-protocol3.c:1870 +#: fe-exec.c:2598 fe-exec.c:2654 fe-exec.c:2723 fe-protocol3.c:1884 msgid "no COPY in progress\n" msgstr "ingen COPY pågår\n" -#: fe-exec.c:2895 +#: fe-exec.c:2900 msgid "PQfn not allowed in pipeline mode\n" msgstr "PQfn tillåts inte i pipeline-läge\n" -#: fe-exec.c:2903 +#: fe-exec.c:2908 msgid "connection in wrong state\n" msgstr "anslutning i felaktigt tillstånd\n" -#: fe-exec.c:2947 +#: fe-exec.c:2952 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "kan inte byta till pipeline-läge, anslutningen är inte inaktiv\n" -#: fe-exec.c:2984 fe-exec.c:3008 +#: fe-exec.c:2989 fe-exec.c:3013 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "kan inte anvsluta pipeline-läge när alla svar inte tagits emot\n" -#: fe-exec.c:2989 +#: fe-exec.c:2994 msgid "cannot exit pipeline mode while busy\n" msgstr "är upptagen och kan inte avsluta pipeline-läge\n" -#: fe-exec.c:3001 +#: fe-exec.c:3006 msgid "cannot exit pipeline mode while in COPY\n" msgstr "kan inte avsluta pipeline-läge inne i en COPY\n" -#: fe-exec.c:3189 +#: fe-exec.c:3194 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "kan inte skicka en pipeline när vi inte är i pipeline-läge\n" -#: fe-exec.c:3300 +#: fe-exec.c:3305 msgid "invalid ExecStatusType code" msgstr "ogiltig ExecStatusType-kod" -#: fe-exec.c:3327 +#: fe-exec.c:3332 msgid "PGresult is not an error result\n" msgstr "PGresult är inte ett felresultat\n" -#: fe-exec.c:3395 fe-exec.c:3418 +#: fe-exec.c:3400 fe-exec.c:3423 #, c-format msgid "column number %d is out of range 0..%d" msgstr "kolumnnummer %d är utanför giltigt intervall 0..%d" -#: fe-exec.c:3433 +#: fe-exec.c:3438 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "parameter nummer %d är utanför giltigt intervall 0..%d" -#: fe-exec.c:3743 +#: fe-exec.c:3748 #, c-format msgid "could not interpret result from server: %s" msgstr "kunde inte tolka svaret från servern: %s" -#: fe-exec.c:4006 fe-exec.c:4139 +#: fe-exec.c:4026 fe-exec.c:4160 msgid "incomplete multibyte character\n" msgstr "ofullständigt multibyte-tecken\n" -#: fe-exec.c:4034 fe-exec.c:4159 +#: fe-exec.c:4029 fe-exec.c:4180 msgid "invalid multibyte character\n" msgstr "ogiltigt multibyte-tecken\n" +#: fe-exec.c:4283 +#, c-format +msgid "escaped string size exceeds the maximum allowed (%zu)\n" +msgstr "escape:ad strängstorlek överskrider maximalt tillåtna (%zu)\n" + +#: fe-exec.c:4461 +#, c-format +msgid "escaped bytea size exceeds the maximum allowed (%zu)\n" +msgstr "escaped bytea size exceeds the maximum allowed (%zu)\n" + #: fe-gssapi-common.c:124 msgid "GSSAPI name import error" msgstr "GSSAPI-fel vid import av namn" @@ -826,11 +841,11 @@ msgstr "heltal med storlek %lu stöds inte av pqGetInt" msgid "integer of size %lu not supported by pqPutInt" msgstr "heltal med storlek %lu stöds inte av pqPutInt" -#: fe-misc.c:576 fe-misc.c:822 +#: fe-misc.c:602 fe-misc.c:848 msgid "connection not open\n" msgstr "anslutningen är inte öppen\n" -#: fe-misc.c:755 fe-secure-openssl.c:204 fe-secure-openssl.c:317 +#: fe-misc.c:781 fe-secure-openssl.c:204 fe-secure-openssl.c:317 #: fe-secure.c:262 fe-secure.c:380 msgid "" "server closed the connection unexpectedly\n" @@ -841,142 +856,142 @@ msgstr "" "\tTroligen så terminerade servern pga något fel antingen\n" "\tinnan eller under tiden den bearbetade en förfrågan.\n" -#: fe-misc.c:1015 +#: fe-misc.c:1041 msgid "timeout expired\n" msgstr "timeout utgången\n" -#: fe-misc.c:1060 +#: fe-misc.c:1086 msgid "invalid socket\n" msgstr "ogiltigt uttag\n" -#: fe-misc.c:1083 +#: fe-misc.c:1109 #, c-format msgid "%s() failed: %s\n" msgstr "%s() misslyckades: %s\n" -#: fe-protocol3.c:184 +#: fe-protocol3.c:185 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "meddelandetyp 0x%02x kom från server under viloperiod" -#: fe-protocol3.c:403 +#: fe-protocol3.c:404 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:446 +#: fe-protocol3.c:447 #, 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-protocol3.c:471 +#: fe-protocol3.c:472 #, 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:491 +#: fe-protocol3.c:492 #, 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:543 fe-protocol3.c:583 +#: fe-protocol3.c:544 fe-protocol3.c:584 msgid "insufficient data in \"T\" message" msgstr "otillräckligt med data i \"T\"-meddelande" -#: fe-protocol3.c:654 fe-protocol3.c:860 +#: fe-protocol3.c:655 fe-protocol3.c:861 msgid "out of memory for query result" msgstr "slut på minnet för frågeresultat" -#: fe-protocol3.c:723 +#: fe-protocol3.c:724 msgid "insufficient data in \"t\" message" msgstr "otillräckligt med data i \"t\"-meddelande" -#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832 +#: fe-protocol3.c:783 fe-protocol3.c:815 fe-protocol3.c:833 msgid "insufficient data in \"D\" message" msgstr "otillräckligt med data i \"D\"-meddelande" -#: fe-protocol3.c:788 +#: fe-protocol3.c:789 msgid "unexpected field count in \"D\" message" msgstr "oväntat fältantal i \"D\"-meddelande" -#: fe-protocol3.c:1036 +#: fe-protocol3.c:1037 msgid "no error message available\n" msgstr "inget felmeddelande finns tillgängligt\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1084 fe-protocol3.c:1103 +#: fe-protocol3.c:1085 fe-protocol3.c:1104 #, c-format msgid " at character %s" msgstr " vid tecken %s" -#: fe-protocol3.c:1116 +#: fe-protocol3.c:1117 #, c-format msgid "DETAIL: %s\n" msgstr "DETALJ: %s\n" -#: fe-protocol3.c:1119 +#: fe-protocol3.c:1120 #, c-format msgid "HINT: %s\n" msgstr "TIPS: %s\n" -#: fe-protocol3.c:1122 +#: fe-protocol3.c:1123 #, c-format msgid "QUERY: %s\n" msgstr "FRÅGA: %s\n" -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1130 #, c-format msgid "CONTEXT: %s\n" msgstr "KONTEXT: %s\n" -#: fe-protocol3.c:1138 +#: fe-protocol3.c:1139 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "SCHEMANAMN: %s\n" -#: fe-protocol3.c:1142 +#: fe-protocol3.c:1143 #, c-format msgid "TABLE NAME: %s\n" msgstr "TABELLNAMN: %s\n" -#: fe-protocol3.c:1146 +#: fe-protocol3.c:1147 #, c-format msgid "COLUMN NAME: %s\n" msgstr "KOLUMNNAMN: %s\n" -#: fe-protocol3.c:1150 +#: fe-protocol3.c:1151 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "DATATYPNAMN: %s\n" -#: fe-protocol3.c:1154 +#: fe-protocol3.c:1155 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "VILLKORSNAMN: %s\n" -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1167 msgid "LOCATION: " msgstr "PLATS: " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1169 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1170 +#: fe-protocol3.c:1171 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1365 +#: fe-protocol3.c:1379 #, c-format msgid "LINE %d: " msgstr "RAD %d: " -#: fe-protocol3.c:1764 +#: fe-protocol3.c:1778 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: utför inte text-COPY OUT\n" -#: fe-protocol3.c:2130 +#: fe-protocol3.c:2144 #, c-format msgid "protocol error: id=0x%x\n" msgstr "protokollfel: id=0x%x\n" @@ -998,44 +1013,40 @@ msgstr "servercertifikat för \"%s\" matchar inte värdnamn \"%s\"\n" msgid "could not get server's host name from server certificate\n" msgstr "kan inte hämta ut serverns värdnamn från servercertifikatet\n" -#: fe-secure-gssapi.c:194 +#: fe-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "GSSAPI-fel vid inpackning" -#: fe-secure-gssapi.c:202 +#: fe-secure-gssapi.c:209 msgid "outgoing GSSAPI message would not use confidentiality\n" msgstr "utgående GSSAPI-meddelande skulle inte använda sekretess\n" -#: fe-secure-gssapi.c:210 +#: fe-secure-gssapi.c:217 fe-secure-gssapi.c:715 #, c-format msgid "client tried to send oversize GSSAPI packet (%zu > %zu)\n" msgstr "klienten försöke skicka för stort GSSAPI-paket (%zu > %zu)\n" -#: fe-secure-gssapi.c:350 fe-secure-gssapi.c:594 +#: fe-secure-gssapi.c:357 fe-secure-gssapi.c:607 #, c-format msgid "oversize GSSAPI packet sent by the server (%zu > %zu)\n" msgstr "för stort GSSAPI-paket skickat av servern (%zu > %zu)\n" -#: fe-secure-gssapi.c:389 +#: fe-secure-gssapi.c:396 msgid "GSSAPI unwrap error" msgstr "GSSAPI-fel vid uppackning" -#: fe-secure-gssapi.c:399 +#: fe-secure-gssapi.c:406 msgid "incoming GSSAPI message did not use confidentiality\n" msgstr "inkommande GSSAPI-meddelande använde inte sekretess\n" -#: fe-secure-gssapi.c:640 +#: fe-secure-gssapi.c:653 msgid "could not initiate GSSAPI security context" msgstr "kunde inte initiera GSSAPI-säkerhetskontext" -#: fe-secure-gssapi.c:668 +#: fe-secure-gssapi.c:703 msgid "GSSAPI size check error" msgstr "GSSAPI-fel vid kontroll av storlek" -#: fe-secure-gssapi.c:679 -msgid "GSSAPI context establishment error" -msgstr "GSSAPI-fel vid skapande av kontext" - #: fe-secure-openssl.c:209 fe-secure-openssl.c:322 fe-secure-openssl.c:1360 #, c-format msgid "SSL SYSCALL error: %s\n" diff --git a/src/interfaces/libpq/po/uk.po b/src/interfaces/libpq/po/uk.po index 4abac164469..359300aa34d 100644 --- a/src/interfaces/libpq/po/uk.po +++ b/src/interfaces/libpq/po/uk.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: postgresql\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-03-27 18:47+0000\n" -"PO-Revision-Date: 2025-04-01 15:40\n" +"POT-Creation-Date: 2025-12-31 03:17+0000\n" +"PO-Revision-Date: 2025-12-31 15:41\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -55,16 +55,16 @@ msgstr "не вдалося згенерувати одноразовий іде #: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657 #: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362 #: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282 -#: fe-connect.c:913 fe-connect.c:1462 fe-connect.c:1631 fe-connect.c:2982 -#: fe-connect.c:4714 fe-connect.c:4975 fe-connect.c:5094 fe-connect.c:5346 -#: fe-connect.c:5427 fe-connect.c:5526 fe-connect.c:5782 fe-connect.c:5811 -#: fe-connect.c:5883 fe-connect.c:5907 fe-connect.c:5925 fe-connect.c:6026 -#: fe-connect.c:6035 fe-connect.c:6393 fe-connect.c:6543 fe-connect.c:6809 -#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3145 fe-exec.c:3337 -#: fe-exec.c:4172 fe-exec.c:4339 fe-gssapi-common.c:111 fe-lobj.c:881 -#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023 -#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:500 -#: fe-secure-openssl.c:446 fe-secure-openssl.c:1124 +#: fe-connect.c:914 fe-connect.c:1463 fe-connect.c:1632 fe-connect.c:2983 +#: fe-connect.c:4715 fe-connect.c:4990 fe-connect.c:5109 fe-connect.c:5361 +#: fe-connect.c:5442 fe-connect.c:5541 fe-connect.c:5797 fe-connect.c:5826 +#: fe-connect.c:5898 fe-connect.c:5922 fe-connect.c:5940 fe-connect.c:6041 +#: fe-connect.c:6050 fe-connect.c:6408 fe-connect.c:6558 fe-connect.c:6826 +#: fe-exec.c:691 fe-exec.c:881 fe-exec.c:1228 fe-exec.c:3150 fe-exec.c:3342 +#: fe-exec.c:4211 fe-exec.c:4405 fe-gssapi-common.c:111 fe-lobj.c:881 +#: fe-protocol3.c:976 fe-protocol3.c:991 fe-protocol3.c:1024 +#: fe-protocol3.c:1745 fe-secure-common.c:110 fe-secure-gssapi.c:512 +#: fe-secure-gssapi.c:687 fe-secure-openssl.c:446 fe-secure-openssl.c:1124 msgid "out of memory\n" msgstr "недостатньо пам'яті\n" @@ -218,12 +218,12 @@ msgstr "спосіб автентифікації %u не підтримуєть msgid "user name lookup failure: error code %lu\n" msgstr "невдала підстановка імені користувача: код помилки %lu\n" -#: fe-auth.c:1117 fe-connect.c:2857 +#: fe-auth.c:1117 fe-connect.c:2858 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "не вдалося знайти локального користувача за ідентифікатором: %d: %s\n" -#: fe-auth.c:1122 fe-connect.c:2862 +#: fe-auth.c:1122 fe-connect.c:2863 #, c-format msgid "local user with ID %d does not exist\n" msgstr "локального користувача з ідентифікатором %d не існує\n" @@ -241,544 +241,551 @@ msgstr "занадто довге значення password_encryption \n" msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "нерозпізнаний алгоритм шифрування пароля \"%s\"\n" -#: fe-connect.c:1096 +#: fe-connect.c:1097 #, c-format msgid "could not match %d host names to %d hostaddr values\n" msgstr "не вдалося зіставити %d імен хостів зі %d значеннями hostaddr\n" -#: fe-connect.c:1182 +#: fe-connect.c:1183 #, c-format msgid "could not match %d port numbers to %d hosts\n" msgstr "не вдалося зіставити %d номерів портів з %d хостами\n" -#: fe-connect.c:1275 fe-connect.c:1301 fe-connect.c:1343 fe-connect.c:1352 -#: fe-connect.c:1385 fe-connect.c:1429 +#: fe-connect.c:1276 fe-connect.c:1302 fe-connect.c:1344 fe-connect.c:1353 +#: fe-connect.c:1386 fe-connect.c:1430 #, c-format msgid "invalid %s value: \"%s\"\n" msgstr "неприпустиме значення %s : \"%s\"\n" -#: fe-connect.c:1322 +#: fe-connect.c:1323 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "значення sslmode \"%s\" неприпустиме, якщо підтримку протоколу SSL не скомпільовано\n" -#: fe-connect.c:1370 +#: fe-connect.c:1371 msgid "invalid SSL protocol version range\n" msgstr "неприпустимий діапазон версії протоколу SSL\n" -#: fe-connect.c:1395 +#: fe-connect.c:1396 #, c-format msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n" msgstr "значення gssencmode \"%s\" неприпустиме, якщо підтримку протоколу GSSAPI не скомпільовано\n" -#: fe-connect.c:1655 +#: fe-connect.c:1656 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "не вдалося встановити сокет у TCP-режим без затримки: %s\n" -#: fe-connect.c:1717 +#: fe-connect.c:1718 #, c-format msgid "connection to server on socket \"%s\" failed: " msgstr "помилка при з'єднанні з сервером через сокет \"%s\": " -#: fe-connect.c:1744 +#: fe-connect.c:1745 #, c-format msgid "connection to server at \"%s\" (%s), port %s failed: " msgstr "підключення до серверу \"%s\" (%s), порт %s провалено: " -#: fe-connect.c:1749 +#: fe-connect.c:1750 #, c-format msgid "connection to server at \"%s\", port %s failed: " msgstr "підключення до серверу \"%s\", порт %s провалено: " -#: fe-connect.c:1774 +#: fe-connect.c:1775 msgid "\tIs the server running locally and accepting connections on that socket?\n" msgstr "\tЧи працює сервер локально і приймає підключення до цього сокету?\n" -#: fe-connect.c:1778 +#: fe-connect.c:1779 msgid "\tIs the server running on that host and accepting TCP/IP connections?\n" msgstr "\tЧи працює сервер на цьому хості і приймає TCP/IP підключення?\n" -#: fe-connect.c:1842 +#: fe-connect.c:1843 #, c-format msgid "invalid integer value \"%s\" for connection option \"%s\"\n" msgstr "неприпустиме ціле значення \"%s\" для параметра з'єднання \"%s\"\n" -#: fe-connect.c:1872 fe-connect.c:1907 fe-connect.c:1943 fe-connect.c:2032 -#: fe-connect.c:2645 +#: fe-connect.c:1873 fe-connect.c:1908 fe-connect.c:1944 fe-connect.c:2033 +#: fe-connect.c:2646 #, c-format msgid "%s(%s) failed: %s\n" msgstr "%s(%s) помилка: %s\n" -#: fe-connect.c:1997 +#: fe-connect.c:1998 #, c-format msgid "%s(%s) failed: error code %d\n" msgstr "%s(%s) помилка: код помилки %d\n" -#: fe-connect.c:2312 +#: fe-connect.c:2313 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "неприпустимий стан підключення, можливо, пошкоджена пам'ять\n" -#: fe-connect.c:2391 +#: fe-connect.c:2392 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "неприпустимий номер порту: \"%s\"\n" -#: fe-connect.c:2407 +#: fe-connect.c:2408 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "не вдалося перекласти ім’я хоста \"%s\" в адресу: %s\n" -#: fe-connect.c:2420 +#: fe-connect.c:2421 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "не вдалося проаналізувати адресу мережі \"%s\": %s\n" -#: fe-connect.c:2433 +#: fe-connect.c:2434 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Шлях Unix-сокету \"%s\" занадто довгий (максимум %d байтів)\n" -#: fe-connect.c:2448 +#: fe-connect.c:2449 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "не вдалося перекласти шлях Unix-сокету \"%s\" в адресу: %s\n" -#: fe-connect.c:2574 +#: fe-connect.c:2575 #, c-format msgid "could not create socket: %s\n" msgstr "не вдалося створити сокет: %s\n" -#: fe-connect.c:2605 +#: fe-connect.c:2606 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "не вдалося встановити сокет у режим без блокування: %s\n" -#: fe-connect.c:2615 +#: fe-connect.c:2616 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "не вдалося встановити сокет у режим закриття по виконанню: %s\n" -#: fe-connect.c:2773 +#: fe-connect.c:2774 #, c-format msgid "could not get socket error status: %s\n" msgstr "не вдалося отримати статус помилки сокету: %s\n" -#: fe-connect.c:2801 +#: fe-connect.c:2802 #, c-format msgid "could not get client address from socket: %s\n" msgstr "не вдалося отримати адресу клієнта з сокету: %s\n" -#: fe-connect.c:2843 +#: fe-connect.c:2844 msgid "requirepeer parameter is not supported on this platform\n" msgstr "параметр requirepeer не підтримується на цій платформі\n" -#: fe-connect.c:2846 +#: fe-connect.c:2847 #, c-format msgid "could not get peer credentials: %s\n" msgstr "не вдалося отримати облікові дані сервера: %s\n" -#: fe-connect.c:2870 +#: fe-connect.c:2871 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer вказує на \"%s\", але фактичне ім'я вузла \"%s\"\n" -#: fe-connect.c:2910 +#: fe-connect.c:2911 #, c-format msgid "could not send GSSAPI negotiation packet: %s\n" msgstr "не вдалося передати пакет узгодження протоколу GSSAPI: %s\n" -#: fe-connect.c:2922 +#: fe-connect.c:2923 msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)\n" msgstr "вимагалося шифрування GSSAPI, але не було неможливим (можливо, без кешу облікових даних, підтримки сервера, або використання локального сокета)\n" -#: fe-connect.c:2964 +#: fe-connect.c:2965 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "не вдалося передати пакет узгодження протоколу SSL: %s\n" -#: fe-connect.c:2995 +#: fe-connect.c:2996 #, c-format msgid "could not send startup packet: %s\n" msgstr "не вдалося передати стартовий пакет: %s\n" -#: fe-connect.c:3071 +#: fe-connect.c:3072 msgid "server does not support SSL, but SSL was required\n" msgstr "сервер не підтримує протокол SSL, але протокол SSL вимагається\n" -#: fe-connect.c:3089 +#: fe-connect.c:3090 msgid "server sent an error response during SSL exchange\n" msgstr "сервер відповів помилкою під час обміну SSL\n" -#: fe-connect.c:3095 +#: fe-connect.c:3096 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "отримано неприпустиму відповідь на узгодження SSL: %c\n" -#: fe-connect.c:3116 +#: fe-connect.c:3117 msgid "received unencrypted data after SSL response\n" msgstr "отримані незашифровані дані після відповіді SSL\n" -#: fe-connect.c:3197 +#: fe-connect.c:3198 msgid "server doesn't support GSSAPI encryption, but it was required\n" msgstr "сервер не підтримує шифрування GSSAPI, але це було необхідно\n" -#: fe-connect.c:3209 +#: fe-connect.c:3210 #, c-format msgid "received invalid response to GSSAPI negotiation: %c\n" msgstr "отримано неприпустиму відповідь на узгодження GSSAPI: %c\n" -#: fe-connect.c:3228 +#: fe-connect.c:3229 msgid "received unencrypted data after GSSAPI encryption response\n" msgstr "отримані незашифровані дані після відповіді шифрування GSSAPI\n" -#: fe-connect.c:3293 fe-connect.c:3318 +#: fe-connect.c:3294 fe-connect.c:3319 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "очікувався запит автентифікації від сервера, але отримано %c\n" -#: fe-connect.c:3525 +#: fe-connect.c:3526 msgid "unexpected message from server during startup\n" msgstr "неочікуване повідомлення від сервера під час запуску\n" -#: fe-connect.c:3617 +#: fe-connect.c:3618 msgid "session is read-only\n" msgstr "сесія доступна тільки для читання\n" -#: fe-connect.c:3620 +#: fe-connect.c:3621 msgid "session is not read-only\n" msgstr "сесія доступна не лише для читання\n" -#: fe-connect.c:3674 +#: fe-connect.c:3675 msgid "server is in hot standby mode\n" msgstr "сервер знаходиться у режимі hot standby\n" -#: fe-connect.c:3677 +#: fe-connect.c:3678 msgid "server is not in hot standby mode\n" msgstr "сервер не в режимі hot standby\n" -#: fe-connect.c:3795 fe-connect.c:3847 +#: fe-connect.c:3796 fe-connect.c:3848 #, c-format msgid "\"%s\" failed\n" msgstr "\"%s\" помилка\n" -#: fe-connect.c:3861 +#: fe-connect.c:3862 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "неприпустимий стан підключення %d, можливо, пошкоджена пам'ять\n" -#: fe-connect.c:4307 fe-connect.c:4367 +#: fe-connect.c:4308 fe-connect.c:4368 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "Помилка у PGEventProc \"%s\" під час події PGEVT_CONNRESET\n" -#: fe-connect.c:4727 +#: fe-connect.c:4728 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": схема має бути ldap://\n" -#: fe-connect.c:4742 +#: fe-connect.c:4743 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутнє унікальне ім'я\n" -#: fe-connect.c:4754 fe-connect.c:4812 +#: fe-connect.c:4755 fe-connect.c:4813 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": має бути лише один атрибут\n" -#: fe-connect.c:4766 fe-connect.c:4828 +#: fe-connect.c:4767 fe-connect.c:4829 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутня область пошуку (base/one/sub)\n" -#: fe-connect.c:4778 +#: fe-connect.c:4779 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутній фільтр\n" -#: fe-connect.c:4800 +#: fe-connect.c:4801 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": неприпустимий номер порту\n" -#: fe-connect.c:4838 +#: fe-connect.c:4839 msgid "could not create LDAP structure\n" msgstr "не вдалося створити структуру протоколу LDAP\n" -#: fe-connect.c:4914 +#: fe-connect.c:4915 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "помилка підстановки на сервері протоколу LDAP: %s\n" -#: fe-connect.c:4925 +#: fe-connect.c:4926 msgid "more than one entry found on LDAP lookup\n" msgstr "знайдено більше одного входження при підстановці протоколу LDAP\n" -#: fe-connect.c:4926 fe-connect.c:4938 +#: fe-connect.c:4927 fe-connect.c:4939 msgid "no entry found on LDAP lookup\n" msgstr "не знайдено входження при підстановці протоколу LDAP\n" -#: fe-connect.c:4949 fe-connect.c:4962 +#: fe-connect.c:4950 fe-connect.c:4963 msgid "attribute has no values on LDAP lookup\n" msgstr "атрибут не має значення при підстановці протоколу LDAP\n" -#: fe-connect.c:5014 fe-connect.c:5033 fe-connect.c:5565 +#: fe-connect.c:4977 +#, c-format +msgid "connection info string size exceeds the maximum allowed (%d)\n" +msgstr "розмір рядка з'єднання з інформацією перевищує максимально дозволену (%d)\n" + +#: fe-connect.c:5029 fe-connect.c:5048 fe-connect.c:5580 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "відсутній \"=\" після \"%s\" у рядку інформації про підключення\n" -#: fe-connect.c:5106 fe-connect.c:5750 fe-connect.c:6526 +#: fe-connect.c:5121 fe-connect.c:5765 fe-connect.c:6541 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "неприпустимий параметр підключення \"%s\"\n" -#: fe-connect.c:5122 fe-connect.c:5614 +#: fe-connect.c:5137 fe-connect.c:5629 msgid "unterminated quoted string in connection info string\n" msgstr "відкриті лапки у рядку інформації про підключення\n" -#: fe-connect.c:5203 +#: fe-connect.c:5218 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "не знайдено визначення сервера \"%s\"\n" -#: fe-connect.c:5229 +#: fe-connect.c:5244 #, c-format msgid "service file \"%s\" not found\n" msgstr "не знайдено сервісний файл \"%s\"\n" -#: fe-connect.c:5243 +#: fe-connect.c:5258 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "рядок %d занадто довгий у сервісному файлі \"%s\"\n" -#: fe-connect.c:5314 fe-connect.c:5358 +#: fe-connect.c:5329 fe-connect.c:5373 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "синтаксична помилка у сервісному файлі \"%s\", рядок %d\n" -#: fe-connect.c:5325 +#: fe-connect.c:5340 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "вкладені сервісні специфікації не підтримуються у сервісному файлі \"%s\", рядок %d\n" -#: fe-connect.c:6046 +#: fe-connect.c:6061 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "у внутрішню процедуру аналізу рядка передано помилковий URI: \"%s\"\n" -#: fe-connect.c:6123 +#: fe-connect.c:6138 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "досягнуто кінця рядка під час пошуку відповідного \"]\" в адресі IPv6 URI: \"%s\"\n" -#: fe-connect.c:6130 +#: fe-connect.c:6145 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "IPv6, що знаходиться в URI, не може бути пустим: \"%s\"\n" -#: fe-connect.c:6145 +#: fe-connect.c:6160 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "неочікуваний символ \"%c\" на позиції %d в URI (очікувалося \":\" або \"/\"): \"%s\"\n" -#: fe-connect.c:6275 +#: fe-connect.c:6290 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "зайвий розділювач ключа/значення \"=\" в параметрі запиту URI: \"%s\"\n" -#: fe-connect.c:6295 +#: fe-connect.c:6310 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "відсутній розділювач ключа/значення \"=\" у параметрі запиту URI: \"%s\"\n" -#: fe-connect.c:6347 +#: fe-connect.c:6362 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "неприпустимий параметр запиту URI: \"%s\"\n" -#: fe-connect.c:6421 +#: fe-connect.c:6436 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "неприпустимий токен, закодований відсотками: \"%s\"\n" -#: fe-connect.c:6431 +#: fe-connect.c:6446 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "неприпустиме значення %%00 для значення, закодованого відсотками: \"%s\"\n" -#: fe-connect.c:6801 +#: fe-connect.c:6818 msgid "connection pointer is NULL\n" msgstr "нульове значення вказівника підключення \n" -#: fe-connect.c:7089 +#: fe-connect.c:7106 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ПОПЕРЕДЖЕННЯ: файл паролів \"%s\" не є простим файлом\n" -#: fe-connect.c:7098 +#: fe-connect.c:7115 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "ПОПЕРЕДЖЕННЯ: до файлу паролів \"%s\" мають доступ група або всі; дозволи мають бути u=rw (0600) або менше\n" -#: fe-connect.c:7206 +#: fe-connect.c:7223 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "пароль отримано з файлу \"%s\"\n" -#: fe-exec.c:449 fe-exec.c:3411 +#: fe-exec.c:449 fe-exec.c:3416 #, c-format msgid "row number %d is out of range 0..%d" msgstr "число рядків %d поза діапазоном 0..%d" -#: fe-exec.c:510 fe-protocol3.c:207 fe-protocol3.c:232 fe-protocol3.c:256 -#: fe-protocol3.c:274 fe-protocol3.c:371 fe-protocol3.c:743 +#: fe-exec.c:510 fe-protocol3.c:208 fe-protocol3.c:233 fe-protocol3.c:257 +#: fe-protocol3.c:275 fe-protocol3.c:372 fe-protocol3.c:744 msgid "out of memory" msgstr "недостатньо пам'яті" -#: fe-exec.c:511 fe-protocol3.c:1939 +#: fe-exec.c:511 fe-protocol3.c:1953 #, c-format msgid "%s" msgstr "%s" -#: fe-exec.c:792 +#: fe-exec.c:797 msgid "write to server failed\n" msgstr "записати на сервер не вдалося\n" -#: fe-exec.c:864 +#: fe-exec.c:869 msgid "NOTICE" msgstr "ПОВІДОМЛЕННЯ" -#: fe-exec.c:922 +#: fe-exec.c:927 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresult не може підтримувати більше ніж INT_MAX кортежів" -#: fe-exec.c:934 +#: fe-exec.c:939 msgid "size_t overflow" msgstr "переповнення size_t" -#: fe-exec.c:1351 fe-exec.c:1477 fe-exec.c:1526 +#: fe-exec.c:1356 fe-exec.c:1482 fe-exec.c:1531 msgid "command string is a null pointer\n" msgstr "рядок команди є нульовим вказівником\n" -#: fe-exec.c:1483 fe-exec.c:1532 fe-exec.c:1628 +#: fe-exec.c:1488 fe-exec.c:1537 fe-exec.c:1633 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "кількість параметрів має бути між 0 і %d\n" -#: fe-exec.c:1520 fe-exec.c:1622 +#: fe-exec.c:1525 fe-exec.c:1627 msgid "statement name is a null pointer\n" msgstr "ім’я оператора є пустим вказівником\n" -#: fe-exec.c:1664 fe-exec.c:3256 +#: fe-exec.c:1669 fe-exec.c:3261 msgid "no connection to the server\n" msgstr "немає підключення до сервера\n" -#: fe-exec.c:1673 fe-exec.c:3265 +#: fe-exec.c:1678 fe-exec.c:3270 msgid "another command is already in progress\n" msgstr "інша команда уже в прогресі\n" -#: fe-exec.c:1704 +#: fe-exec.c:1709 msgid "cannot queue commands during COPY\n" msgstr "не можна поставити в чергу команди під час COPY\n" -#: fe-exec.c:1822 +#: fe-exec.c:1827 msgid "length must be given for binary parameter\n" msgstr "для бінарного параметра має бути надана довжина\n" -#: fe-exec.c:2142 +#: fe-exec.c:2147 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "неочікуваний asyncStatus: %d\n" -#: fe-exec.c:2178 +#: fe-exec.c:2183 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "Помилка у PGEventProc \"%s\" під час події PGEVT_RESULTCREAT\n" -#: fe-exec.c:2326 +#: fe-exec.c:2331 msgid "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "функції синхронного виконання команд заборонені в режимі конвеєра\n" -#: fe-exec.c:2348 +#: fe-exec.c:2353 msgid "COPY terminated by new PQexec" msgstr "COPY завершено новим PQexec" -#: fe-exec.c:2365 +#: fe-exec.c:2370 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec не дозволяється під час COPY BOTH\n" -#: fe-exec.c:2593 fe-exec.c:2649 fe-exec.c:2718 fe-protocol3.c:1870 +#: fe-exec.c:2598 fe-exec.c:2654 fe-exec.c:2723 fe-protocol3.c:1884 msgid "no COPY in progress\n" msgstr "Немає COPY у процесі\n" -#: fe-exec.c:2895 +#: fe-exec.c:2900 msgid "PQfn not allowed in pipeline mode\n" msgstr "PQfn заборонено в режимі конвеєра\n" -#: fe-exec.c:2903 +#: fe-exec.c:2908 msgid "connection in wrong state\n" msgstr "підключення у неправильному стані\n" -#: fe-exec.c:2947 +#: fe-exec.c:2952 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "не можна увійти в режим конвеєра, підключення не в очікуванні\n" -#: fe-exec.c:2984 fe-exec.c:3008 +#: fe-exec.c:2989 fe-exec.c:3013 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "не можна вийти з режиму конвеєра з незібраними результатами\n" -#: fe-exec.c:2989 +#: fe-exec.c:2994 msgid "cannot exit pipeline mode while busy\n" msgstr "не можна вийти з режиму конвеєра, коли зайнято\n" -#: fe-exec.c:3001 +#: fe-exec.c:3006 msgid "cannot exit pipeline mode while in COPY\n" msgstr "не можна вийти з режиму конвеєра під час COPY\n" -#: fe-exec.c:3189 +#: fe-exec.c:3194 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "неможливо скористатися конвеєром не у режимі конвеєра\n" -#: fe-exec.c:3300 +#: fe-exec.c:3305 msgid "invalid ExecStatusType code" msgstr "неприпустимий код ExecStatusType" -#: fe-exec.c:3327 +#: fe-exec.c:3332 msgid "PGresult is not an error result\n" msgstr "PGresult не є помилковим результатом\n" -#: fe-exec.c:3395 fe-exec.c:3418 +#: fe-exec.c:3400 fe-exec.c:3423 #, c-format msgid "column number %d is out of range 0..%d" msgstr "число стовпців %d поза діапазоном 0..%d" -#: fe-exec.c:3433 +#: fe-exec.c:3438 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "число параметрів %d поза діапазоном 0..%d" -#: fe-exec.c:3743 +#: fe-exec.c:3748 #, c-format msgid "could not interpret result from server: %s" msgstr "не вдалося інтерпретувати результат від сервера: %s" -#: fe-exec.c:4020 -msgid "incomplete multibyte character" -msgstr "неповний мультибайтний символ" - -#: fe-exec.c:4023 -msgid "invalid multibyte character" -msgstr "неприпустимий мультибайтний символ" - -#: fe-exec.c:4132 +#: fe-exec.c:4026 fe-exec.c:4160 msgid "incomplete multibyte character\n" msgstr "неповний мультибайтний символ\n" -#: fe-exec.c:4152 +#: fe-exec.c:4029 fe-exec.c:4180 msgid "invalid multibyte character\n" msgstr "неприпустимий мультибайтний символ\n" +#: fe-exec.c:4283 +#, c-format +msgid "escaped string size exceeds the maximum allowed (%zu)\n" +msgstr "довжина екранованого рядка перевищує максимально допустиму (%zu)\n" + +#: fe-exec.c:4461 +#, c-format +msgid "escaped bytea size exceeds the maximum allowed (%zu)\n" +msgstr "розмір bytea перевищує максимальний допустимий розмір (%zu)\n" + #: fe-gssapi-common.c:124 msgid "GSSAPI name import error" msgstr "Помилка імпорту імені у GSSAPI" @@ -831,11 +838,11 @@ msgstr "pqGetInt не підтримує ціле число розміром %l msgid "integer of size %lu not supported by pqPutInt" msgstr "pqPutInt не підтримує ціле число розміром %lu" -#: fe-misc.c:576 fe-misc.c:822 +#: fe-misc.c:602 fe-misc.c:848 msgid "connection not open\n" msgstr "підключення не відкрито\n" -#: fe-misc.c:755 fe-secure-openssl.c:204 fe-secure-openssl.c:317 +#: fe-misc.c:781 fe-secure-openssl.c:204 fe-secure-openssl.c:317 #: fe-secure.c:262 fe-secure.c:380 msgid "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -843,142 +850,142 @@ msgid "server closed the connection unexpectedly\n" msgstr "сервер неочікувано закрив підключення\n" " Це може означати, що сервер завершив роботу ненормально до або під час обробки запиту.\n" -#: fe-misc.c:1015 +#: fe-misc.c:1041 msgid "timeout expired\n" msgstr "тайм-аут минув\n" -#: fe-misc.c:1060 +#: fe-misc.c:1086 msgid "invalid socket\n" msgstr "неприпустимий сокет\n" -#: fe-misc.c:1083 +#: fe-misc.c:1109 #, c-format msgid "%s() failed: %s\n" msgstr "%s() помилка: %s\n" -#: fe-protocol3.c:184 +#: fe-protocol3.c:185 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "отримано тип повідомлення 0x%02x від сервера під час бездіяльності" -#: fe-protocol3.c:403 +#: fe-protocol3.c:404 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "сервер передав дані (повідомлення \"D\") без попереднього опису рядка (повідомлення \"T\")\n" -#: fe-protocol3.c:446 +#: fe-protocol3.c:447 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "неочікувана відповідь від сервера; перший отриманий символ був \"%c\"\n" -#: fe-protocol3.c:471 +#: fe-protocol3.c:472 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "вміст повідомлення не відповідає довжині у типі повідомлення \"%c\"\n" -#: fe-protocol3.c:491 +#: fe-protocol3.c:492 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "втрачено синхронізацію з сервером: отримано тип повідомлення \"%c\", довжина %d\n" -#: fe-protocol3.c:543 fe-protocol3.c:583 +#: fe-protocol3.c:544 fe-protocol3.c:584 msgid "insufficient data in \"T\" message" msgstr "недостатньо даних у повідомленні \"T\"" -#: fe-protocol3.c:654 fe-protocol3.c:860 +#: fe-protocol3.c:655 fe-protocol3.c:861 msgid "out of memory for query result" msgstr "недостатньо пам'яті для результату запиту" -#: fe-protocol3.c:723 +#: fe-protocol3.c:724 msgid "insufficient data in \"t\" message" msgstr "недостатньо даних у повідомленні \"t\"" -#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832 +#: fe-protocol3.c:783 fe-protocol3.c:815 fe-protocol3.c:833 msgid "insufficient data in \"D\" message" msgstr "зайві дані у повідомленні \"D\"" -#: fe-protocol3.c:788 +#: fe-protocol3.c:789 msgid "unexpected field count in \"D\" message" msgstr "неочікувана кількість полів у повідомленні \"D\"" -#: fe-protocol3.c:1036 +#: fe-protocol3.c:1037 msgid "no error message available\n" msgstr "немає доступного повідомлення про помилку\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1084 fe-protocol3.c:1103 +#: fe-protocol3.c:1085 fe-protocol3.c:1104 #, c-format msgid " at character %s" msgstr " в символі %s" -#: fe-protocol3.c:1116 +#: fe-protocol3.c:1117 #, c-format msgid "DETAIL: %s\n" msgstr "ДЕТАЛІ: %s\n" -#: fe-protocol3.c:1119 +#: fe-protocol3.c:1120 #, c-format msgid "HINT: %s\n" msgstr "ПІДКАЗКА: %s\n" -#: fe-protocol3.c:1122 +#: fe-protocol3.c:1123 #, c-format msgid "QUERY: %s\n" msgstr "ЗАПИТ: %s\n" -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1130 #, c-format msgid "CONTEXT: %s\n" msgstr "КОНТЕКСТ: %s\n" -#: fe-protocol3.c:1138 +#: fe-protocol3.c:1139 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "ІМ'Я СХЕМИ: %s\n" -#: fe-protocol3.c:1142 +#: fe-protocol3.c:1143 #, c-format msgid "TABLE NAME: %s\n" msgstr "ІМ'Я ТАБЛИЦІ: %s\n" -#: fe-protocol3.c:1146 +#: fe-protocol3.c:1147 #, c-format msgid "COLUMN NAME: %s\n" msgstr "ІМ'Я СТОВПЦЯ: %s\n" -#: fe-protocol3.c:1150 +#: fe-protocol3.c:1151 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "ІМ'Я ТИПУ ДАНИХ: %s\n" -#: fe-protocol3.c:1154 +#: fe-protocol3.c:1155 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "ІМ'Я ОБМЕЖЕННЯ: %s\n" -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1167 msgid "LOCATION: " msgstr "РОЗТАШУВАННЯ: " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1169 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1170 +#: fe-protocol3.c:1171 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1365 +#: fe-protocol3.c:1379 #, c-format msgid "LINE %d: " msgstr "РЯДОК %d: " -#: fe-protocol3.c:1764 +#: fe-protocol3.c:1778 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline можна викликати лише під час COPY OUT\n" -#: fe-protocol3.c:2130 +#: fe-protocol3.c:2144 #, c-format msgid "protocol error: id=0x%x\n" msgstr "помилка протоколу: id=0x%x\n" @@ -1000,44 +1007,40 @@ msgstr "серверний сертифікат \"%s\" не співпадає msgid "could not get server's host name from server certificate\n" msgstr "не вдалося отримати ім'я хосту від серверного сертифікату\n" -#: fe-secure-gssapi.c:194 +#: fe-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "помилка при згортанні GSSAPI" -#: fe-secure-gssapi.c:202 +#: fe-secure-gssapi.c:209 msgid "outgoing GSSAPI message would not use confidentiality\n" msgstr "вихідне повідомлення GSSAPI не буде використовувати конфіденційність\n" -#: fe-secure-gssapi.c:210 +#: fe-secure-gssapi.c:217 fe-secure-gssapi.c:715 #, c-format msgid "client tried to send oversize GSSAPI packet (%zu > %zu)\n" msgstr "клієнт намагався відправити переповнений пакет GSSAPI: (%zu > %zu)\n" -#: fe-secure-gssapi.c:350 fe-secure-gssapi.c:594 +#: fe-secure-gssapi.c:357 fe-secure-gssapi.c:607 #, c-format msgid "oversize GSSAPI packet sent by the server (%zu > %zu)\n" msgstr "переповнений пакет GSSAPI відправлений сервером: (%zu > %zu)\n" -#: fe-secure-gssapi.c:389 +#: fe-secure-gssapi.c:396 msgid "GSSAPI unwrap error" msgstr "помилка при розгортанні GSSAPI" -#: fe-secure-gssapi.c:399 +#: fe-secure-gssapi.c:406 msgid "incoming GSSAPI message did not use confidentiality\n" msgstr "вхідне повідомлення GSSAPI не використовувало конфіденційність\n" -#: fe-secure-gssapi.c:640 +#: fe-secure-gssapi.c:653 msgid "could not initiate GSSAPI security context" msgstr "не вдалося ініціювати контекст безпеки GSSAPI" -#: fe-secure-gssapi.c:668 +#: fe-secure-gssapi.c:703 msgid "GSSAPI size check error" msgstr "помилка перевірки розміру GSSAPI" -#: fe-secure-gssapi.c:679 -msgid "GSSAPI context establishment error" -msgstr "помилка встановлення контексту GSSAPI" - #: fe-secure-openssl.c:209 fe-secure-openssl.c:322 fe-secure-openssl.c:1360 #, c-format msgid "SSL SYSCALL error: %s\n" diff --git a/src/pl/plperl/expected/plperl_setup.out b/src/pl/plperl/expected/plperl_setup.out index a1a24dfb41c..efe5c454c76 100644 --- a/src/pl/plperl/expected/plperl_setup.out +++ b/src/pl/plperl/expected/plperl_setup.out @@ -4,9 +4,9 @@ -- Before going ahead with the to-be-tested installations, verify that -- a non-superuser is allowed to install plperl (but not plperlu) when -- suitable permissions have been granted. -CREATE USER regress_user1; -CREATE USER regress_user2; -SET ROLE regress_user1; +CREATE USER regress_plperl_user1; +CREATE USER regress_plperl_user2; +SET ROLE regress_plperl_user1; CREATE EXTENSION plperl; -- fail ERROR: permission denied to create extension "plperl" HINT: Must have CREATE privilege on current database to create this extension. @@ -16,11 +16,11 @@ HINT: Must be superuser to create this extension. RESET ROLE; DO $$ begin - execute format('grant create on database %I to regress_user1', + execute format('grant create on database %I to regress_plperl_user1', current_database()); end; $$; -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; CREATE EXTENSION plperl; CREATE EXTENSION plperlu; -- fail ERROR: permission denied to create extension "plperlu" @@ -34,15 +34,15 @@ SELECT foo1(); -- Must reconnect to avoid failure with non-MULTIPLICITY Perl interpreters \c - -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; -- Should be able to change privileges on the language revoke all on language plperl from public; -SET ROLE regress_user2; +SET ROLE regress_plperl_user2; CREATE FUNCTION foo2() returns int language plperl as '2;'; -- fail ERROR: permission denied for language plperl -SET ROLE regress_user1; -grant usage on language plperl to regress_user2; -SET ROLE regress_user2; +SET ROLE regress_plperl_user1; +grant usage on language plperl to regress_plperl_user2; +SET ROLE regress_plperl_user2; CREATE FUNCTION foo2() returns int language plperl as '2;'; SELECT foo2(); foo2 @@ -50,7 +50,7 @@ SELECT foo2(); 2 (1 row) -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; -- Should be able to drop the extension, but not the language per se DROP LANGUAGE plperl CASCADE; ERROR: cannot drop language plperl because extension plperl requires it @@ -61,9 +61,9 @@ DETAIL: drop cascades to function foo1() drop cascades to function foo2() -- Clean up RESET ROLE; -DROP OWNED BY regress_user1; -DROP USER regress_user1; -DROP USER regress_user2; +DROP OWNED BY regress_plperl_user1; +DROP USER regress_plperl_user1; +DROP USER regress_plperl_user2; -- Now install the versions that will be used by subsequent test scripts. CREATE EXTENSION plperl; CREATE EXTENSION plperlu; diff --git a/src/pl/plperl/po/es.po b/src/pl/plperl/po/es.po index 865121d3ed3..a9595a5f109 100644 --- a/src/pl/plperl/po/es.po +++ b/src/pl/plperl/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: plperl (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:13+0000\n" +"POT-Creation-Date: 2026-02-06 21:24+0000\n" "PO-Revision-Date: 2019-06-06 17:25-0400\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/pl/plperl/sql/plperl_setup.sql b/src/pl/plperl/sql/plperl_setup.sql index 74844782f87..231c16bbae8 100644 --- a/src/pl/plperl/sql/plperl_setup.sql +++ b/src/pl/plperl/sql/plperl_setup.sql @@ -6,10 +6,10 @@ -- a non-superuser is allowed to install plperl (but not plperlu) when -- suitable permissions have been granted. -CREATE USER regress_user1; -CREATE USER regress_user2; +CREATE USER regress_plperl_user1; +CREATE USER regress_plperl_user2; -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; CREATE EXTENSION plperl; -- fail CREATE EXTENSION plperlu; -- fail @@ -18,12 +18,12 @@ RESET ROLE; DO $$ begin - execute format('grant create on database %I to regress_user1', + execute format('grant create on database %I to regress_plperl_user1', current_database()); end; $$; -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; CREATE EXTENSION plperl; CREATE EXTENSION plperlu; -- fail @@ -34,25 +34,25 @@ SELECT foo1(); -- Must reconnect to avoid failure with non-MULTIPLICITY Perl interpreters \c - -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; -- Should be able to change privileges on the language revoke all on language plperl from public; -SET ROLE regress_user2; +SET ROLE regress_plperl_user2; CREATE FUNCTION foo2() returns int language plperl as '2;'; -- fail -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; -grant usage on language plperl to regress_user2; +grant usage on language plperl to regress_plperl_user2; -SET ROLE regress_user2; +SET ROLE regress_plperl_user2; CREATE FUNCTION foo2() returns int language plperl as '2;'; SELECT foo2(); -SET ROLE regress_user1; +SET ROLE regress_plperl_user1; -- Should be able to drop the extension, but not the language per se DROP LANGUAGE plperl CASCADE; @@ -60,9 +60,9 @@ DROP EXTENSION plperl CASCADE; -- Clean up RESET ROLE; -DROP OWNED BY regress_user1; -DROP USER regress_user1; -DROP USER regress_user2; +DROP OWNED BY regress_plperl_user1; +DROP USER regress_plperl_user1; +DROP USER regress_plperl_user2; -- Now install the versions that will be used by subsequent test scripts. CREATE EXTENSION plperl; diff --git a/src/pl/plpgsql/src/po/es.po b/src/pl/plpgsql/src/po/es.po index 438509d7f5d..e1590635b92 100644 --- a/src/pl/plpgsql/src/po/es.po +++ b/src/pl/plpgsql/src/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: plpgsql (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:14+0000\n" +"POT-Creation-Date: 2026-02-06 21:25+0000\n" "PO-Revision-Date: 2021-10-14 10:18-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/pl/plpython/po/es.po b/src/pl/plpython/po/es.po index 706859f7eff..1d8e8135d9e 100644 --- a/src/pl/plpython/po/es.po +++ b/src/pl/plpython/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: plpython (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:13+0000\n" +"POT-Creation-Date: 2026-02-06 21:24+0000\n" "PO-Revision-Date: 2019-06-06 17:26-0400\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/pl/tcl/po/es.po b/src/pl/tcl/po/es.po index e9e34154c7d..3303ce79593 100644 --- a/src/pl/tcl/po/es.po +++ b/src/pl/tcl/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pltcl (PostgreSQL) 14\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2025-11-08 01:13+0000\n" +"POT-Creation-Date: 2026-02-06 21:24+0000\n" "PO-Revision-Date: 2019-06-06 17:26-0400\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/test/isolation/expected/inplace-inval.out b/src/test/isolation/expected/inplace-inval.out index e68eca5de98..c35895a8aa7 100644 --- a/src/test/isolation/expected/inplace-inval.out +++ b/src/test/isolation/expected/inplace-inval.out @@ -1,6 +1,6 @@ Parsed test spec with 3 sessions -starting permutation: cachefill3 cir1 cic2 ddl3 +starting permutation: cachefill3 cir1 cic2 ddl3 read1 step cachefill3: TABLE newly_indexed; c - @@ -9,6 +9,14 @@ c step cir1: BEGIN; CREATE INDEX i1 ON newly_indexed (c); ROLLBACK; step cic2: CREATE INDEX i2 ON newly_indexed (c); step ddl3: ALTER TABLE newly_indexed ADD extra int; +step read1: + SELECT relhasindex FROM pg_class WHERE oid = 'newly_indexed'::regclass; + +relhasindex +----------- +t +(1 row) + starting permutation: cir1 cic2 ddl3 read1 step cir1: BEGIN; CREATE INDEX i1 ON newly_indexed (c); ROLLBACK; diff --git a/src/test/isolation/expected/insert-conflict-do-update-4.out b/src/test/isolation/expected/insert-conflict-do-update-4.out new file mode 100644 index 00000000000..6e96e0d12da --- /dev/null +++ b/src/test/isolation/expected/insert-conflict-do-update-4.out @@ -0,0 +1,63 @@ +Parsed test spec with 2 sessions + +starting permutation: lock2 insert1 update2a c2 select1 c1 +step lock2: SELECT * FROM upsert WHERE i = 1 FOR UPDATE; +i| j| k +-+--+--- +1|10|100 +(1 row) + +step insert1: INSERT INTO upsert VALUES (1, 11, 111) + ON CONFLICT (i) DO UPDATE SET k = EXCLUDED.k; +step update2a: UPDATE upsert SET i = i + 10 WHERE i = 1; +step c2: COMMIT; +step insert1: <... completed> +step select1: SELECT * FROM upsert; + i| j| k +--+--+--- +11|10|100 + 1|11|111 +(2 rows) + +step c1: COMMIT; + +starting permutation: lock2 insert1 update2b c2 select1 c1 +step lock2: SELECT * FROM upsert WHERE i = 1 FOR UPDATE; +i| j| k +-+--+--- +1|10|100 +(1 row) + +step insert1: INSERT INTO upsert VALUES (1, 11, 111) + ON CONFLICT (i) DO UPDATE SET k = EXCLUDED.k; +step update2b: UPDATE upsert SET i = i + 150 WHERE i = 1; +step c2: COMMIT; +step insert1: <... completed> +step select1: SELECT * FROM upsert; + i| j| k +---+--+--- + 1|11|111 +151|10|100 +(2 rows) + +step c1: COMMIT; + +starting permutation: lock2 insert1 delete2 c2 select1 c1 +step lock2: SELECT * FROM upsert WHERE i = 1 FOR UPDATE; +i| j| k +-+--+--- +1|10|100 +(1 row) + +step insert1: INSERT INTO upsert VALUES (1, 11, 111) + ON CONFLICT (i) DO UPDATE SET k = EXCLUDED.k; +step delete2: DELETE FROM upsert WHERE i = 1; +step c2: COMMIT; +step insert1: <... completed> +step select1: SELECT * FROM upsert; +i| j| k +-+--+--- +1|11|111 +(1 row) + +step c1: COMMIT; diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule index ad182a3b2f0..3abc1fa3d66 100644 --- a/src/test/isolation/isolation_schedule +++ b/src/test/isolation/isolation_schedule @@ -47,6 +47,7 @@ test: insert-conflict-do-nothing-2 test: insert-conflict-do-update test: insert-conflict-do-update-2 test: insert-conflict-do-update-3 +test: insert-conflict-do-update-4 test: insert-conflict-specconflict test: delete-abort-savept test: delete-abort-savept-2 diff --git a/src/test/isolation/specs/inplace-inval.spec b/src/test/isolation/specs/inplace-inval.spec index 96954fd86c4..b99112ddb88 100644 --- a/src/test/isolation/specs/inplace-inval.spec +++ b/src/test/isolation/specs/inplace-inval.spec @@ -1,7 +1,7 @@ -# If a heap_update() caller retrieves its oldtup from a cache, it's possible -# for that cache entry to predate an inplace update, causing loss of that -# inplace update. This arises because the transaction may abort before -# sending the inplace invalidation message to the shared queue. +# An inplace update had been able to abort before sending the inplace +# invalidation message to the shared queue. If a heap_update() caller then +# retrieved its oldtup from a cache, the heap_update() could revert the +# inplace update. setup { @@ -27,14 +27,12 @@ step cachefill3 { TABLE newly_indexed; } step ddl3 { ALTER TABLE newly_indexed ADD extra int; } -# XXX shows an extant bug. Adding step read1 at the end would usually print -# relhasindex=f (not wanted). This does not reach the unwanted behavior under -# -DCATCACHE_FORCE_RELEASE and friends. permutation cachefill3 # populates the pg_class row in the catcache cir1 # sets relhasindex=true; rollback discards cache inval cic2 # sees relhasindex=true, skips changing it (so no inval) ddl3 # cached row as the oldtup of an update, losing relhasindex + read1 # observe damage # without cachefill3, no bug permutation cir1 cic2 ddl3 read1 diff --git a/src/test/isolation/specs/insert-conflict-do-update-4.spec b/src/test/isolation/specs/insert-conflict-do-update-4.spec new file mode 100644 index 00000000000..6297b1d1d6c --- /dev/null +++ b/src/test/isolation/specs/insert-conflict-do-update-4.spec @@ -0,0 +1,42 @@ +# INSERT...ON CONFLICT DO UPDATE test with partitioned table +# +# We use SELECT FOR UPDATE to block the INSERT at the point where +# it has found an existing tuple and is attempting to update it. +# Then we can execute a conflicting update and verify the results. +# Of course, this only works in READ COMMITTED mode, else we'd get an error. + +setup +{ + CREATE TABLE upsert (i int PRIMARY KEY, j int, k int) PARTITION BY RANGE (i); + CREATE TABLE upsert_1 PARTITION OF upsert FOR VALUES FROM (1) TO (100); + CREATE TABLE upsert_2 PARTITION OF upsert FOR VALUES FROM (100) TO (200); + + INSERT INTO upsert VALUES (1, 10, 100); +} + +teardown +{ + DROP TABLE upsert; +} + +session s1 +setup { BEGIN ISOLATION LEVEL READ COMMITTED; } +step insert1 { INSERT INTO upsert VALUES (1, 11, 111) + ON CONFLICT (i) DO UPDATE SET k = EXCLUDED.k; } +step select1 { SELECT * FROM upsert; } +step c1 { COMMIT; } + +session s2 +setup { BEGIN ISOLATION LEVEL READ COMMITTED; } +step lock2 { SELECT * FROM upsert WHERE i = 1 FOR UPDATE; } +step update2a { UPDATE upsert SET i = i + 10 WHERE i = 1; } +step update2b { UPDATE upsert SET i = i + 150 WHERE i = 1; } +step delete2 { DELETE FROM upsert WHERE i = 1; } +step c2 { COMMIT; } + +# Test case where concurrent update moves the target row within the partition +permutation lock2 insert1 update2a c2 select1 c1 +# Test case where concurrent update moves the target row to another partition +permutation lock2 insert1 update2b c2 select1 c1 +# Test case where target row is concurrently deleted +permutation lock2 insert1 delete2 c2 select1 c1 diff --git a/src/test/modules/test_regex/test_regex.c b/src/test/modules/test_regex/test_regex.c index 095751cf04e..b8ff535c8f3 100644 --- a/src/test/modules/test_regex/test_regex.c +++ b/src/test/modules/test_regex/test_regex.c @@ -424,7 +424,8 @@ parse_test_flags(test_re_flags *flags, text *opts) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid regular expression test option: \"%.*s\"", - pg_mblen(opt_p + i), opt_p + i))); + pg_mblen_range(opt_p + i, opt_p + opt_len), + opt_p + i))); break; } } diff --git a/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm b/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm index 4e0b73571dc..e0a67751564 100644 --- a/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm +++ b/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm @@ -152,11 +152,11 @@ sub wait_connect # # See query() for details about why/how the banner is used. my $banner = "background_psql: ready"; - my $banner_match = qr/(^|\n)$banner\r?\n/; - $self->{stdin} .= "\\echo $banner\n\\warn $banner\n"; + my $banner_match = qr/$banner\r?\n/; + $self->{stdin} .= "\\echo '$banner'\n\\warn '$banner'\n"; $self->{run}->pump() until ($self->{stdout} =~ /$banner_match/ - && $self->{stderr} =~ /$banner\r?\n/) + && $self->{stderr} =~ /$banner_match/) || $self->{timeout}->is_expired; note "connect output:\n", @@ -256,22 +256,17 @@ sub query # stderr (or vice versa), even if psql printed them in the opposite # order. We therefore wait on both. # - # We need to match for the newline, because we try to remove it below, and - # it's possible to consume just the input *without* the newline. In - # interactive psql we emit \r\n, so we need to allow for that. Also need - # to be careful that we don't e.g. match the echoed \echo command, rather - # than its output. + # In interactive psql we emit \r\n, so we need to allow for that. + # Also, include quotes around the banner string in the \echo and \warn + # commands, not because the string needs quoting but so that $banner_match + # can't match readline's echoing of these commands. my $banner = "background_psql: QUERY_SEPARATOR $query_cnt:"; - my $banner_match = qr/(^|\n)$banner\r?\n/; - $self->{stdin} .= "$query\n;\n\\echo $banner\n\\warn $banner\n"; - pump_until( - $self->{run}, $self->{timeout}, - \$self->{stdout}, qr/$banner_match/); - pump_until( - $self->{run}, $self->{timeout}, - \$self->{stderr}, qr/$banner_match/); - - die "psql query timed out" if $self->{timeout}->is_expired; + my $banner_match = qr/$banner\r?\n/; + $self->{stdin} .= "$query\n;\n\\echo '$banner'\n\\warn '$banner'\n"; + $self->{run}->pump() + until ($self->{stdout} =~ /$banner_match/ + && $self->{stderr} =~ /$banner_match/) + || $self->{timeout}->is_expired; note "results query $query_cnt:\n", explain { @@ -279,9 +274,12 @@ sub query stderr => $self->{stderr}, }; - # Remove banner from stdout and stderr, our caller doesn't care. The - # first newline is optional, as there would not be one if consuming an - # empty query result. + die "psql query timed out" if $self->{timeout}->is_expired; + + # Remove banner from stdout and stderr, our caller doesn't want it. + # Also remove the query output's trailing newline, if present (there + # would not be one if consuming an empty query result). + $banner_match = qr/\r?\n?$banner\r?\n/; $output = $self->{stdout}; $output =~ s/$banner_match//; $self->{stderr} =~ s/$banner_match//; diff --git a/src/test/regress/expected/.gitignore b/src/test/regress/expected/.gitignore index b99caf5f40b..c1fc8abc772 100644 --- a/src/test/regress/expected/.gitignore +++ b/src/test/regress/expected/.gitignore @@ -3,6 +3,8 @@ /create_function_0.out /create_function_1.out /create_function_2.out +/encoding.out +/encoding_1.out /largeobject.out /largeobject_1.out /misc.out diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out index 2a995043bab..112edcb64f6 100644 --- a/src/test/regress/expected/arrays.out +++ b/src/test/regress/expected/arrays.out @@ -1543,6 +1543,11 @@ select '[0:1]={1.1,2.2}'::float8[]; (1 row) -- all of the above should be accepted +-- some day we might allow these cases, but for now they're errors: +select array[]::oidvector; +ERROR: array is not a valid oidvector +select array[]::int2vector; +ERROR: array is not a valid int2vector -- tests for array aggregates CREATE TEMP TABLE arraggtest ( f1 INT[], f2 TEXT[][], f3 FLOAT[]); INSERT INTO arraggtest (f1, f2, f3) VALUES diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index 74507ebd217..be80774dd4f 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -1271,6 +1271,8 @@ CREATE INDEX hash_i4_index ON hash_i4_heap USING hash (random int4_ops); CREATE INDEX hash_name_index ON hash_name_heap USING hash (random name_ops); CREATE INDEX hash_txt_index ON hash_txt_heap USING hash (random text_ops); CREATE INDEX hash_f8_index ON hash_f8_heap USING hash (random float8_ops) WITH (fillfactor=60); +CREATE INDEX hash_i4_partial_index ON hash_i4_heap USING hash (seqno) + WHERE seqno = 9999; CREATE UNLOGGED TABLE unlogged_hash_table (id int4); CREATE INDEX unlogged_hash_index ON unlogged_hash_table USING hash (id int4_ops); DROP TABLE unlogged_hash_table; diff --git a/src/test/regress/expected/euc_kr.out b/src/test/regress/expected/euc_kr.out new file mode 100644 index 00000000000..7a61c89a43a --- /dev/null +++ b/src/test/regress/expected/euc_kr.out @@ -0,0 +1,16 @@ +-- This test is about EUC_KR encoding, chosen as perhaps the most prevalent +-- non-UTF8, multibyte encoding as of 2026-01. Since UTF8 can represent all +-- of EUC_KR, also run the test in UTF8. +SELECT getdatabaseencoding() NOT IN ('EUC_KR', 'UTF8') AS skip_test \gset +\if :skip_test +\quit +\endif +-- Exercise is_multibyte_char_in_char (non-UTF8) slow path. +SELECT POSITION( + convert_from('\xbcf6c7d0', 'EUC_KR') IN + convert_from('\xb0fac7d02c20bcf6c7d02c20b1e2bcfa2c20bbee', 'EUC_KR')); + position +---------- + 5 +(1 row) + diff --git a/src/test/regress/expected/euc_kr_1.out b/src/test/regress/expected/euc_kr_1.out new file mode 100644 index 00000000000..faaac5d6355 --- /dev/null +++ b/src/test/regress/expected/euc_kr_1.out @@ -0,0 +1,6 @@ +-- This test is about EUC_KR encoding, chosen as perhaps the most prevalent +-- non-UTF8, multibyte encoding as of 2026-01. Since UTF8 can represent all +-- of EUC_KR, also run the test in UTF8. +SELECT getdatabaseencoding() NOT IN ('EUC_KR', 'UTF8') AS skip_test \gset +\if :skip_test +\quit diff --git a/src/test/regress/expected/hash_index.out b/src/test/regress/expected/hash_index.out index e23de21b41c..19bb94921fd 100644 --- a/src/test/regress/expected/hash_index.out +++ b/src/test/regress/expected/hash_index.out @@ -82,6 +82,25 @@ SELECT * FROM hash_f8_heap -------+-------- (0 rows) +-- +-- partial hash index +-- +EXPLAIN (COSTS OFF) +SELECT * FROM hash_i4_heap + WHERE seqno = 9999; + QUERY PLAN +-------------------------------------------------------- + Index Scan using hash_i4_partial_index on hash_i4_heap + Index Cond: (seqno = 9999) +(2 rows) + +SELECT * FROM hash_i4_heap + WHERE seqno = 9999; + seqno | random +-------+------------ + 9999 | 1227676208 +(1 row) + -- -- hash index -- grep '^90[^0-9]' hashovfl.data diff --git a/src/test/regress/expected/with.out b/src/test/regress/expected/with.out index d7b431a9aa2..bc5bb2c3994 100644 --- a/src/test/regress/expected/with.out +++ b/src/test/regress/expected/with.out @@ -2195,36 +2195,44 @@ from int4_tbl; -- -- test for bug #19055: interaction of WITH with aggregates -- --- The reference to cte1 must determine the aggregate's level, --- even though it contains no Vars referencing cte1 -explain (verbose, costs off) +-- For now, we just throw an error if there's a use of a CTE below the +-- semantic level that the SQL standard assigns to the aggregate. +-- It's not entirely clear what we could do instead that doesn't risk +-- breaking more things than it fixes. select f1, (with cte1(x,y) as (select 1,2) select count((select i4.f1 from cte1))) as ss from int4_tbl i4; - QUERY PLAN ------------------------------------ - Seq Scan on public.int4_tbl i4 - Output: i4.f1, (SubPlan 2) - SubPlan 2 +ERROR: outer-level aggregate cannot use a nested CTE +LINE 2: select count((select i4.f1 from cte1))) as ss + ^ +DETAIL: CTE "cte1" is below the aggregate's semantic level. +-- +-- test for bug #19106: interaction of WITH with aggregates +-- +-- the initial fix for #19055 was too aggressive and broke this case +explain (verbose, costs off) +with a as ( select id from (values (1), (2)) as v(id) ), + b as ( select max((select sum(id) from a)) as agg ) +select agg from b; + QUERY PLAN +-------------------------------------------- + Aggregate + Output: max($0) + InitPlan 1 (returns $0) -> Aggregate - Output: count($1) - InitPlan 1 (returns $1) - -> Result - Output: i4.f1 - -> Result -(9 rows) - -select f1, (with cte1(x,y) as (select 1,2) - select count((select i4.f1 from cte1))) as ss -from int4_tbl i4; - f1 | ss --------------+---- - 0 | 1 - 123456 | 1 - -123456 | 1 - 2147483647 | 1 - -2147483647 | 1 -(5 rows) + Output: sum("*VALUES*".column1) + -> Values Scan on "*VALUES*" + Output: "*VALUES*".column1 + -> Result +(8 rows) + +with a as ( select id from (values (1), (2)) as v(id) ), + b as ( select max((select sum(id) from a)) as agg ) +select agg from b; + agg +----- + 3 +(1 row) -- -- test for nested-recursive-WITH bug @@ -2759,6 +2767,47 @@ SELECT * FROM bug6051_3; --- (0 rows) +-- check that recursive CTE processing doesn't rewrite a CTE more than once +-- (must not try to expand GENERATED ALWAYS IDENTITY columns more than once) +CREATE TEMP TABLE id_alw1 (i int GENERATED ALWAYS AS IDENTITY); +CREATE TEMP TABLE id_alw2 (i int GENERATED ALWAYS AS IDENTITY); +CREATE TEMP VIEW id_alw2_view AS SELECT * FROM id_alw2; +CREATE TEMP TABLE id_alw3 (i int GENERATED ALWAYS AS IDENTITY); +CREATE RULE id_alw3_ins AS ON INSERT TO id_alw3 DO INSTEAD + WITH t1 AS (INSERT INTO id_alw1 DEFAULT VALUES RETURNING i) + INSERT INTO id_alw2_view DEFAULT VALUES RETURNING i; +CREATE TEMP VIEW id_alw3_view AS SELECT * FROM id_alw3; +CREATE TEMP TABLE id_alw4 (i int GENERATED ALWAYS AS IDENTITY); +WITH t4 AS (INSERT INTO id_alw4 DEFAULT VALUES RETURNING i) + INSERT INTO id_alw3_view DEFAULT VALUES RETURNING i; + i +--- + 1 +(1 row) + +SELECT * from id_alw1; + i +--- + 1 +(1 row) + +SELECT * from id_alw2; + i +--- + 1 +(1 row) + +SELECT * from id_alw3; + i +--- +(0 rows) + +SELECT * from id_alw4; + i +--- + 1 +(1 row) + -- check case where CTE reference is removed due to optimization EXPLAIN (VERBOSE, COSTS OFF) SELECT q1 FROM diff --git a/src/test/regress/input/encoding.source b/src/test/regress/input/encoding.source new file mode 100644 index 00000000000..9439e0bc43c --- /dev/null +++ b/src/test/regress/input/encoding.source @@ -0,0 +1,223 @@ +/* skip test if not UTF8 server encoding */ +SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset +\if :skip_test +\quit +\endif + +CREATE FUNCTION test_bytea_to_text(bytea) RETURNS text + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_text_to_bytea(text) RETURNS bytea + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_mblen_func(text, text, text, int) RETURNS int + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_text_to_wchars(text, text) RETURNS int[] + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_wchars_to_text(text, int[]) RETURNS text + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_valid_server_encoding(text) RETURNS boolean + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; + + +CREATE TABLE regress_encoding(good text, truncated text, with_nul text, truncated_with_nul text); +INSERT INTO regress_encoding +VALUES ('café', + 'caf' || test_bytea_to_text('\xc3'), + 'café' || test_bytea_to_text('\x00') || 'dcba', + 'caf' || test_bytea_to_text('\xc300') || 'dcba'); + +SELECT good, truncated, with_nul FROM regress_encoding; + +SELECT length(good) FROM regress_encoding; +SELECT substring(good, 3, 1) FROM regress_encoding; +SELECT substring(good, 4, 1) FROM regress_encoding; +SELECT regexp_replace(good, '^caf(.)$', '\1') FROM regress_encoding; +SELECT reverse(good) FROM regress_encoding; + +-- invalid short mb character = error +SELECT length(truncated) FROM regress_encoding; +SELECT substring(truncated, 1, 1) FROM regress_encoding; +SELECT reverse(truncated) FROM regress_encoding; +-- invalid short mb character = silently dropped +SELECT regexp_replace(truncated, '^caf(.)$', '\1') FROM regress_encoding; + +-- PostgreSQL doesn't allow strings to contain NUL. If a corrupted string +-- contains NUL at a character boundary position, some functions treat it as a +-- character while others treat it as a terminator, as implementation details. + +-- NUL = terminator +SELECT length(with_nul) FROM regress_encoding; +SELECT substring(with_nul, 3, 1) FROM regress_encoding; +SELECT substring(with_nul, 4, 1) FROM regress_encoding; +SELECT substring(with_nul, 5, 1) FROM regress_encoding; +SELECT convert_to(substring(with_nul, 5, 1), 'UTF8') FROM regress_encoding; +SELECT regexp_replace(with_nul, '^caf(.)$', '\1') FROM regress_encoding; +-- NUL = character +SELECT with_nul, reverse(with_nul), reverse(reverse(with_nul)) FROM regress_encoding; + +-- If a corrupted string contains NUL in the tail bytes of a multibyte +-- character (invalid in all encodings), it is considered part of the +-- character for length purposes. An error will only be raised in code paths +-- that convert or verify encodings. + +SELECT length(truncated_with_nul) FROM regress_encoding; +SELECT substring(truncated_with_nul, 3, 1) FROM regress_encoding; +SELECT substring(truncated_with_nul, 4, 1) FROM regress_encoding; +SELECT convert_to(substring(truncated_with_nul, 4, 1), 'UTF8') FROM regress_encoding; +SELECT substring(truncated_with_nul, 5, 1) FROM regress_encoding; +SELECT regexp_replace(truncated_with_nul, '^caf(.)dcba$', '\1') = test_bytea_to_text('\xc300') FROM regress_encoding; +SELECT reverse(truncated_with_nul) FROM regress_encoding; + +-- unbounded: sequence would overrun the string! +SELECT test_mblen_func('pg_mblen_unbounded', 'UTF8', truncated, 3) +FROM regress_encoding; + +-- condition detected when using the length/range variants +SELECT test_mblen_func('pg_mblen_with_len', 'UTF8', truncated, 3) +FROM regress_encoding; +SELECT test_mblen_func('pg_mblen_range', 'UTF8', truncated, 3) +FROM regress_encoding; + +-- unbounded: sequence would overrun the string, if the terminator were really +-- the end of it +SELECT test_mblen_func('pg_mblen_unbounded', 'UTF8', truncated_with_nul, 3) +FROM regress_encoding; +SELECT test_mblen_func('pg_encoding_mblen', 'GB18030', truncated_with_nul, 3) +FROM regress_encoding; + +-- condition detected when using the cstr variants +SELECT test_mblen_func('pg_mblen_cstr', 'UTF8', truncated_with_nul, 3) +FROM regress_encoding; + +DROP TABLE regress_encoding; + +-- mb<->wchar conversions +CREATE FUNCTION test_encoding(encoding text, description text, input bytea) +RETURNS VOID LANGUAGE plpgsql AS +$$ +DECLARE + prefix text; + len int; + wchars int[]; + round_trip bytea; + result text; +BEGIN + prefix := rpad(encoding || ' ' || description || ':', 28); + + -- XXX could also test validation, length functions and include client + -- only encodings with these test cases + + IF test_valid_server_encoding(encoding) THEN + wchars := test_text_to_wchars(encoding, test_bytea_to_text(input)); + round_trip = test_text_to_bytea(test_wchars_to_text(encoding, wchars)); + if input = round_trip then + result := 'OK'; + elsif length(input) > length(round_trip) and round_trip = substr(input, 1, length(round_trip)) then + result := 'truncated'; + else + result := 'failed'; + end if; + RAISE NOTICE '% % -> % -> % = %', prefix, input, wchars, round_trip, result; + END IF; +END; +$$; +-- No validation is done on the encoding itself, just the length to avoid +-- overruns, so some of the byte sequences below are bogus. They cover +-- all code branches, server encodings only for now. +CREATE TABLE encoding_tests (encoding text, description text, input bytea); +INSERT INTO encoding_tests VALUES + -- LATIN1, other single-byte encodings + ('LATIN1', 'ASCII', 'a'), + ('LATIN1', 'extended', '\xe9'), + -- EUC_JP, EUC_JIS_2004, EUR_KR (for the purposes of wchar conversion): + -- 2 8e (CS2, not used by EUR_KR but arbitrarily considered to have EUC_JP length) + -- 3 8f (CS3, not used by EUR_KR but arbitrarily considered to have EUC_JP length) + -- 2 80..ff (CS1) + ('EUC_JP', 'ASCII', 'a'), + ('EUC_JP', 'CS1, short', '\x80'), + ('EUC_JP', 'CS1', '\x8002'), + ('EUC_JP', 'CS2, short', '\x8e'), + ('EUC_JP', 'CS2', '\x8e02'), + ('EUC_JP', 'CS3, short', '\x8f'), + ('EUC_JP', 'CS3, short', '\x8f02'), + ('EUC_JP', 'CS3', '\x8f0203'), + -- EUC_CN + -- 3 8e (CS2, not used but arbitrarily considered to have length 3) + -- 3 8f (CS3, not used but arbitrarily considered to have length 3) + -- 2 80..ff (CS1) + ('EUC_CN', 'ASCII', 'a'), + ('EUC_CN', 'CS1, short', '\x80'), + ('EUC_CN', 'CS1', '\x8002'), + ('EUC_CN', 'CS2, short', '\x8e'), + ('EUC_CN', 'CS2, short', '\x8e02'), + ('EUC_CN', 'CS2', '\x8e0203'), + ('EUC_CN', 'CS3, short', '\x8f'), + ('EUC_CN', 'CS3, short', '\x8f02'), + ('EUC_CN', 'CS3', '\x8f0203'), + -- EUC_TW: + -- 4 8e (CS2) + -- 3 8f (CS3, not used but arbitrarily considered to have length 3) + -- 2 80..ff (CS1) + ('EUC_TW', 'ASCII', 'a'), + ('EUC_TW', 'CS1, short', '\x80'), + ('EUC_TW', 'CS1', '\x8002'), + ('EUC_TW', 'CS2, short', '\x8e'), + ('EUC_TW', 'CS2, short', '\x8e02'), + ('EUC_TW', 'CS2, short', '\x8e0203'), + ('EUC_TW', 'CS2', '\x8e020304'), + ('EUC_TW', 'CS3, short', '\x8f'), + ('EUC_TW', 'CS3, short', '\x8f02'), + ('EUC_TW', 'CS3', '\x8f0203'), + -- UTF8 + -- 2 c0..df + -- 3 e0..ef + -- 4 f0..f7 (but maximum real codepoint U+10ffff has f4) + -- 5 f8..fb (not supported) + -- 6 fc..fd (not supported) + ('UTF8', 'ASCII', 'a'), + ('UTF8', '2 byte, short', '\xdf'), + ('UTF8', '2 byte', '\xdf82'), + ('UTF8', '3 byte, short', '\xef'), + ('UTF8', '3 byte, short', '\xef82'), + ('UTF8', '3 byte', '\xef8283'), + ('UTF8', '4 byte, short', '\xf7'), + ('UTF8', '4 byte, short', '\xf782'), + ('UTF8', '4 byte, short', '\xf78283'), + ('UTF8', '4 byte', '\xf7828384'), + ('UTF8', '5 byte, unsupported', '\xfb'), + ('UTF8', '5 byte, unsupported', '\xfb82'), + ('UTF8', '5 byte, unsupported', '\xfb8283'), + ('UTF8', '5 byte, unsupported', '\xfb828384'), + ('UTF8', '5 byte, unsupported', '\xfb82838485'), + ('UTF8', '6 byte, unsupported', '\xfd'), + ('UTF8', '6 byte, unsupported', '\xfd82'), + ('UTF8', '6 byte, unsupported', '\xfd8283'), + ('UTF8', '6 byte, unsupported', '\xfd828384'), + ('UTF8', '6 byte, unsupported', '\xfd82838485'), + ('UTF8', '6 byte, unsupported', '\xfd8283848586'), + -- MULE_INTERNAL + -- 2 81..8d LC1 + -- 3 90..99 LC2 + ('MULE_INTERNAL', 'ASCII', 'a'), + ('MULE_INTERNAL', 'LC1, short', '\x81'), + ('MULE_INTERNAL', 'LC1', '\x8182'), + ('MULE_INTERNAL', 'LC2, short', '\x90'), + ('MULE_INTERNAL', 'LC2, short', '\x9082'), + ('MULE_INTERNAL', 'LC2', '\x908283'); + +SELECT COUNT(test_encoding(encoding, description, input)) > 0 +FROM encoding_tests; + +DROP TABLE encoding_tests; +DROP FUNCTION test_encoding; +DROP FUNCTION test_text_to_wchars; +DROP FUNCTION test_mblen_func; +DROP FUNCTION test_bytea_to_text; +DROP FUNCTION test_text_to_bytea; + + +-- substring slow path: multi-byte escape char vs. multi-byte pattern char. +SELECT SUBSTRING('a' SIMILAR U&'\00AC' ESCAPE U&'\00A7'); +-- Levenshtein distance metric: exercise character length cache. +SELECT U&"real\00A7_name" FROM (select 1) AS x(real_name); +-- JSON errcontext: truncate long data. +SELECT repeat(U&'\00A7', 30)::json; diff --git a/src/test/regress/output/encoding.source b/src/test/regress/output/encoding.source new file mode 100644 index 00000000000..373edd79945 --- /dev/null +++ b/src/test/regress/output/encoding.source @@ -0,0 +1,398 @@ +/* skip test if not UTF8 server encoding */ +SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset +\if :skip_test +\quit +\endif +CREATE FUNCTION test_bytea_to_text(bytea) RETURNS text + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_text_to_bytea(text) RETURNS bytea + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_mblen_func(text, text, text, int) RETURNS int + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_text_to_wchars(text, text) RETURNS int[] + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_wchars_to_text(text, int[]) RETURNS text + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE FUNCTION test_valid_server_encoding(text) RETURNS boolean + AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; +CREATE TABLE regress_encoding(good text, truncated text, with_nul text, truncated_with_nul text); +INSERT INTO regress_encoding +VALUES ('café', + 'caf' || test_bytea_to_text('\xc3'), + 'café' || test_bytea_to_text('\x00') || 'dcba', + 'caf' || test_bytea_to_text('\xc300') || 'dcba'); +SELECT good, truncated, with_nul FROM regress_encoding; + good | truncated | with_nul +------+-----------+---------- + café | caf | café +(1 row) + +SELECT length(good) FROM regress_encoding; + length +-------- + 4 +(1 row) + +SELECT substring(good, 3, 1) FROM regress_encoding; + substring +----------- + f +(1 row) + +SELECT substring(good, 4, 1) FROM regress_encoding; + substring +----------- + é +(1 row) + +SELECT regexp_replace(good, '^caf(.)$', '\1') FROM regress_encoding; + regexp_replace +---------------- + é +(1 row) + +SELECT reverse(good) FROM regress_encoding; + reverse +--------- + éfac +(1 row) + +-- invalid short mb character = error +SELECT length(truncated) FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 +SELECT substring(truncated, 1, 1) FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 +SELECT reverse(truncated) FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 +-- invalid short mb character = silently dropped +SELECT regexp_replace(truncated, '^caf(.)$', '\1') FROM regress_encoding; + regexp_replace +---------------- + caf +(1 row) + +-- PostgreSQL doesn't allow strings to contain NUL. If a corrupted string +-- contains NUL at a character boundary position, some functions treat it as a +-- character while others treat it as a terminator, as implementation details. +-- NUL = terminator +SELECT length(with_nul) FROM regress_encoding; + length +-------- + 4 +(1 row) + +SELECT substring(with_nul, 3, 1) FROM regress_encoding; + substring +----------- + f +(1 row) + +SELECT substring(with_nul, 4, 1) FROM regress_encoding; + substring +----------- + é +(1 row) + +SELECT substring(with_nul, 5, 1) FROM regress_encoding; + substring +----------- + +(1 row) + +SELECT convert_to(substring(with_nul, 5, 1), 'UTF8') FROM regress_encoding; + convert_to +------------ + \x +(1 row) + +SELECT regexp_replace(with_nul, '^caf(.)$', '\1') FROM regress_encoding; + regexp_replace +---------------- + é +(1 row) + +-- NUL = character +SELECT with_nul, reverse(with_nul), reverse(reverse(with_nul)) FROM regress_encoding; + with_nul | reverse | reverse +----------+---------+--------- + café | abcd | café +(1 row) + +-- If a corrupted string contains NUL in the tail bytes of a multibyte +-- character (invalid in all encodings), it is considered part of the +-- character for length purposes. An error will only be raised in code paths +-- that convert or verify encodings. +SELECT length(truncated_with_nul) FROM regress_encoding; + length +-------- + 8 +(1 row) + +SELECT substring(truncated_with_nul, 3, 1) FROM regress_encoding; + substring +----------- + f +(1 row) + +SELECT substring(truncated_with_nul, 4, 1) FROM regress_encoding; + substring +----------- + +(1 row) + +SELECT convert_to(substring(truncated_with_nul, 4, 1), 'UTF8') FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 0x00 +SELECT substring(truncated_with_nul, 5, 1) FROM regress_encoding; + substring +----------- + d +(1 row) + +SELECT regexp_replace(truncated_with_nul, '^caf(.)dcba$', '\1') = test_bytea_to_text('\xc300') FROM regress_encoding; + ?column? +---------- + t +(1 row) + +SELECT reverse(truncated_with_nul) FROM regress_encoding; + reverse +--------- + abcd +(1 row) + +-- unbounded: sequence would overrun the string! +SELECT test_mblen_func('pg_mblen_unbounded', 'UTF8', truncated, 3) +FROM regress_encoding; + test_mblen_func +----------------- + 2 +(1 row) + +-- condition detected when using the length/range variants +SELECT test_mblen_func('pg_mblen_with_len', 'UTF8', truncated, 3) +FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 +SELECT test_mblen_func('pg_mblen_range', 'UTF8', truncated, 3) +FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 +-- unbounded: sequence would overrun the string, if the terminator were really +-- the end of it +SELECT test_mblen_func('pg_mblen_unbounded', 'UTF8', truncated_with_nul, 3) +FROM regress_encoding; + test_mblen_func +----------------- + 2 +(1 row) + +SELECT test_mblen_func('pg_encoding_mblen', 'GB18030', truncated_with_nul, 3) +FROM regress_encoding; + test_mblen_func +----------------- + 2 +(1 row) + +-- condition detected when using the cstr variants +SELECT test_mblen_func('pg_mblen_cstr', 'UTF8', truncated_with_nul, 3) +FROM regress_encoding; +ERROR: invalid byte sequence for encoding "UTF8": 0xc3 +DROP TABLE regress_encoding; +-- mb<->wchar conversions +CREATE FUNCTION test_encoding(encoding text, description text, input bytea) +RETURNS VOID LANGUAGE plpgsql AS +$$ +DECLARE + prefix text; + len int; + wchars int[]; + round_trip bytea; + result text; +BEGIN + prefix := rpad(encoding || ' ' || description || ':', 28); + + -- XXX could also test validation, length functions and include client + -- only encodings with these test cases + + IF test_valid_server_encoding(encoding) THEN + wchars := test_text_to_wchars(encoding, test_bytea_to_text(input)); + round_trip = test_text_to_bytea(test_wchars_to_text(encoding, wchars)); + if input = round_trip then + result := 'OK'; + elsif length(input) > length(round_trip) and round_trip = substr(input, 1, length(round_trip)) then + result := 'truncated'; + else + result := 'failed'; + end if; + RAISE NOTICE '% % -> % -> % = %', prefix, input, wchars, round_trip, result; + END IF; +END; +$$; +-- No validation is done on the encoding itself, just the length to avoid +-- overruns, so some of the byte sequences below are bogus. They cover +-- all code branches, server encodings only for now. +CREATE TABLE encoding_tests (encoding text, description text, input bytea); +INSERT INTO encoding_tests VALUES + -- LATIN1, other single-byte encodings + ('LATIN1', 'ASCII', 'a'), + ('LATIN1', 'extended', '\xe9'), + -- EUC_JP, EUC_JIS_2004, EUR_KR (for the purposes of wchar conversion): + -- 2 8e (CS2, not used by EUR_KR but arbitrarily considered to have EUC_JP length) + -- 3 8f (CS3, not used by EUR_KR but arbitrarily considered to have EUC_JP length) + -- 2 80..ff (CS1) + ('EUC_JP', 'ASCII', 'a'), + ('EUC_JP', 'CS1, short', '\x80'), + ('EUC_JP', 'CS1', '\x8002'), + ('EUC_JP', 'CS2, short', '\x8e'), + ('EUC_JP', 'CS2', '\x8e02'), + ('EUC_JP', 'CS3, short', '\x8f'), + ('EUC_JP', 'CS3, short', '\x8f02'), + ('EUC_JP', 'CS3', '\x8f0203'), + -- EUC_CN + -- 3 8e (CS2, not used but arbitrarily considered to have length 3) + -- 3 8f (CS3, not used but arbitrarily considered to have length 3) + -- 2 80..ff (CS1) + ('EUC_CN', 'ASCII', 'a'), + ('EUC_CN', 'CS1, short', '\x80'), + ('EUC_CN', 'CS1', '\x8002'), + ('EUC_CN', 'CS2, short', '\x8e'), + ('EUC_CN', 'CS2, short', '\x8e02'), + ('EUC_CN', 'CS2', '\x8e0203'), + ('EUC_CN', 'CS3, short', '\x8f'), + ('EUC_CN', 'CS3, short', '\x8f02'), + ('EUC_CN', 'CS3', '\x8f0203'), + -- EUC_TW: + -- 4 8e (CS2) + -- 3 8f (CS3, not used but arbitrarily considered to have length 3) + -- 2 80..ff (CS1) + ('EUC_TW', 'ASCII', 'a'), + ('EUC_TW', 'CS1, short', '\x80'), + ('EUC_TW', 'CS1', '\x8002'), + ('EUC_TW', 'CS2, short', '\x8e'), + ('EUC_TW', 'CS2, short', '\x8e02'), + ('EUC_TW', 'CS2, short', '\x8e0203'), + ('EUC_TW', 'CS2', '\x8e020304'), + ('EUC_TW', 'CS3, short', '\x8f'), + ('EUC_TW', 'CS3, short', '\x8f02'), + ('EUC_TW', 'CS3', '\x8f0203'), + -- UTF8 + -- 2 c0..df + -- 3 e0..ef + -- 4 f0..f7 (but maximum real codepoint U+10ffff has f4) + -- 5 f8..fb (not supported) + -- 6 fc..fd (not supported) + ('UTF8', 'ASCII', 'a'), + ('UTF8', '2 byte, short', '\xdf'), + ('UTF8', '2 byte', '\xdf82'), + ('UTF8', '3 byte, short', '\xef'), + ('UTF8', '3 byte, short', '\xef82'), + ('UTF8', '3 byte', '\xef8283'), + ('UTF8', '4 byte, short', '\xf7'), + ('UTF8', '4 byte, short', '\xf782'), + ('UTF8', '4 byte, short', '\xf78283'), + ('UTF8', '4 byte', '\xf7828384'), + ('UTF8', '5 byte, unsupported', '\xfb'), + ('UTF8', '5 byte, unsupported', '\xfb82'), + ('UTF8', '5 byte, unsupported', '\xfb8283'), + ('UTF8', '5 byte, unsupported', '\xfb828384'), + ('UTF8', '5 byte, unsupported', '\xfb82838485'), + ('UTF8', '6 byte, unsupported', '\xfd'), + ('UTF8', '6 byte, unsupported', '\xfd82'), + ('UTF8', '6 byte, unsupported', '\xfd8283'), + ('UTF8', '6 byte, unsupported', '\xfd828384'), + ('UTF8', '6 byte, unsupported', '\xfd82838485'), + ('UTF8', '6 byte, unsupported', '\xfd8283848586'), + -- MULE_INTERNAL + -- 2 81..8d LC1 + -- 3 90..99 LC2 + ('MULE_INTERNAL', 'ASCII', 'a'), + ('MULE_INTERNAL', 'LC1, short', '\x81'), + ('MULE_INTERNAL', 'LC1', '\x8182'), + ('MULE_INTERNAL', 'LC2, short', '\x90'), + ('MULE_INTERNAL', 'LC2, short', '\x9082'), + ('MULE_INTERNAL', 'LC2', '\x908283'); +SELECT COUNT(test_encoding(encoding, description, input)) > 0 +FROM encoding_tests; +NOTICE: LATIN1 ASCII: \x61 -> {97} -> \x61 = OK +NOTICE: LATIN1 extended: \xe9 -> {233} -> \xe9 = OK +NOTICE: EUC_JP ASCII: \x61 -> {97} -> \x61 = OK +NOTICE: EUC_JP CS1, short: \x80 -> {} -> \x = truncated +NOTICE: EUC_JP CS1: \x8002 -> {32770} -> \x8002 = OK +NOTICE: EUC_JP CS2, short: \x8e -> {} -> \x = truncated +NOTICE: EUC_JP CS2: \x8e02 -> {36354} -> \x8e02 = OK +NOTICE: EUC_JP CS3, short: \x8f -> {} -> \x = truncated +NOTICE: EUC_JP CS3, short: \x8f02 -> {} -> \x = truncated +NOTICE: EUC_JP CS3: \x8f0203 -> {9372163} -> \x8f0203 = OK +NOTICE: EUC_CN ASCII: \x61 -> {97} -> \x61 = OK +NOTICE: EUC_CN CS1, short: \x80 -> {} -> \x = truncated +NOTICE: EUC_CN CS1: \x8002 -> {32770} -> \x8002 = OK +NOTICE: EUC_CN CS2, short: \x8e -> {} -> \x = truncated +NOTICE: EUC_CN CS2, short: \x8e02 -> {} -> \x = truncated +NOTICE: EUC_CN CS2: \x8e0203 -> {9306627} -> \x8e0203 = OK +NOTICE: EUC_CN CS3, short: \x8f -> {} -> \x = truncated +NOTICE: EUC_CN CS3, short: \x8f02 -> {} -> \x = truncated +NOTICE: EUC_CN CS3: \x8f0203 -> {9372163} -> \x8f0203 = OK +NOTICE: EUC_TW ASCII: \x61 -> {97} -> \x61 = OK +NOTICE: EUC_TW CS1, short: \x80 -> {} -> \x = truncated +NOTICE: EUC_TW CS1: \x8002 -> {32770} -> \x8002 = OK +NOTICE: EUC_TW CS2, short: \x8e -> {} -> \x = truncated +NOTICE: EUC_TW CS2, short: \x8e02 -> {} -> \x = truncated +NOTICE: EUC_TW CS2, short: \x8e0203 -> {} -> \x = truncated +NOTICE: EUC_TW CS2: \x8e020304 -> {-1912470780} -> \x8e020304 = OK +NOTICE: EUC_TW CS3, short: \x8f -> {} -> \x = truncated +NOTICE: EUC_TW CS3, short: \x8f02 -> {} -> \x = truncated +NOTICE: EUC_TW CS3: \x8f0203 -> {9372163} -> \x8f0203 = OK +NOTICE: UTF8 ASCII: \x61 -> {97} -> \x61 = OK +NOTICE: UTF8 2 byte, short: \xdf -> {} -> \x = truncated +NOTICE: UTF8 2 byte: \xdf82 -> {1986} -> \xdf82 = OK +NOTICE: UTF8 3 byte, short: \xef -> {} -> \x = truncated +NOTICE: UTF8 3 byte, short: \xef82 -> {} -> \x = truncated +NOTICE: UTF8 3 byte: \xef8283 -> {61571} -> \xef8283 = OK +NOTICE: UTF8 4 byte, short: \xf7 -> {} -> \x = truncated +NOTICE: UTF8 4 byte, short: \xf782 -> {} -> \x = truncated +NOTICE: UTF8 4 byte, short: \xf78283 -> {} -> \x = truncated +NOTICE: UTF8 4 byte: \xf7828384 -> {1843396} -> \xf7828384 = OK +NOTICE: UTF8 5 byte, unsupported: \xfb -> {251} -> \xc3bb = failed +NOTICE: UTF8 5 byte, unsupported: \xfb82 -> {251,130} -> \xc3bbc282 = failed +NOTICE: UTF8 5 byte, unsupported: \xfb8283 -> {251,130,131} -> \xc3bbc282c283 = failed +NOTICE: UTF8 5 byte, unsupported: \xfb828384 -> {251,130,131,132} -> \xc3bbc282c283c284 = failed +NOTICE: UTF8 5 byte, unsupported: \xfb82838485 -> {251,130,131,132,133} -> \xc3bbc282c283c284c285 = failed +NOTICE: UTF8 6 byte, unsupported: \xfd -> {253} -> \xc3bd = failed +NOTICE: UTF8 6 byte, unsupported: \xfd82 -> {253,130} -> \xc3bdc282 = failed +NOTICE: UTF8 6 byte, unsupported: \xfd8283 -> {253,130,131} -> \xc3bdc282c283 = failed +NOTICE: UTF8 6 byte, unsupported: \xfd828384 -> {253,130,131,132} -> \xc3bdc282c283c284 = failed +NOTICE: UTF8 6 byte, unsupported: \xfd82838485 -> {253,130,131,132,133} -> \xc3bdc282c283c284c285 = failed +NOTICE: UTF8 6 byte, unsupported: \xfd8283848586 -> {253,130,131,132,133,134} -> \xc3bdc282c283c284c285c286 = failed +NOTICE: MULE_INTERNAL ASCII: \x61 -> {97} -> \x61 = OK +NOTICE: MULE_INTERNAL LC1, short: \x81 -> {} -> \x = truncated +NOTICE: MULE_INTERNAL LC1: \x8182 -> {8454274} -> \x8182 = OK +NOTICE: MULE_INTERNAL LC2, short: \x90 -> {} -> \x = truncated +NOTICE: MULE_INTERNAL LC2, short: \x9082 -> {} -> \x = truncated +NOTICE: MULE_INTERNAL LC2: \x908283 -> {9470595} -> \x908283 = OK + ?column? +---------- + t +(1 row) + +DROP TABLE encoding_tests; +DROP FUNCTION test_encoding; +DROP FUNCTION test_text_to_wchars; +DROP FUNCTION test_mblen_func; +DROP FUNCTION test_bytea_to_text; +DROP FUNCTION test_text_to_bytea; +-- substring slow path: multi-byte escape char vs. multi-byte pattern char. +SELECT SUBSTRING('a' SIMILAR U&'\00AC' ESCAPE U&'\00A7'); + substring +----------- + +(1 row) + +-- Levenshtein distance metric: exercise character length cache. +SELECT U&"real\00A7_name" FROM (select 1) AS x(real_name); +ERROR: column "real§_name" does not exist +LINE 1: SELECT U&"real\00A7_name" FROM (select 1) AS x(real_name); + ^ +HINT: Perhaps you meant to reference the column "x.real_name". +-- JSON errcontext: truncate long data. +SELECT repeat(U&'\00A7', 30)::json; +ERROR: invalid input syntax for type json +DETAIL: Token "§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§" is invalid. +CONTEXT: JSON data, line 1: ...§§§§§§§§§§§§§§§§§§§§§§§§ diff --git a/src/test/regress/output/encoding_1.source b/src/test/regress/output/encoding_1.source new file mode 100644 index 00000000000..a5b02090901 --- /dev/null +++ b/src/test/regress/output/encoding_1.source @@ -0,0 +1,4 @@ +/* skip test if not UTF8 server encoding */ +SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset +\if :skip_test +\quit diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index 2e3746b610b..ff1d90b6118 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -30,7 +30,7 @@ test: strings numerology point lseg line box path polygon circle date time timet # horology depends on interval, timetz, timestamp, timestamptz # opr_sanity depends on create_function_0 # ---------- -test: geometry horology tstypes regex type_sanity opr_sanity misc_sanity comments expressions unicode xid mvcc database +test: geometry horology tstypes regex type_sanity opr_sanity misc_sanity comments expressions unicode xid mvcc database encoding euc_kr # ---------- # These four each depend on the previous one diff --git a/src/test/regress/regress.c b/src/test/regress/regress.c index 1f1504a8fd1..b527fe144bb 100644 --- a/src/test/regress/regress.c +++ b/src/test/regress/regress.c @@ -1272,6 +1272,145 @@ test_enc_conversion(PG_FUNCTION_ARGS) PG_RETURN_DATUM(HeapTupleGetDatum(tuple)); } +/* Convert bytea to text without validation for corruption tests from SQL. */ +PG_FUNCTION_INFO_V1(test_bytea_to_text); +Datum +test_bytea_to_text(PG_FUNCTION_ARGS) +{ + PG_RETURN_TEXT_P(PG_GETARG_BYTEA_PP(0)); +} + +/* And the reverse. */ +PG_FUNCTION_INFO_V1(test_text_to_bytea); +Datum +test_text_to_bytea(PG_FUNCTION_ARGS) +{ + PG_RETURN_BYTEA_P(PG_GETARG_TEXT_PP(0)); +} + +/* Corruption tests in C. */ +PG_FUNCTION_INFO_V1(test_mblen_func); +Datum +test_mblen_func(PG_FUNCTION_ARGS) +{ + const char *func = text_to_cstring(PG_GETARG_BYTEA_PP(0)); + const char *encoding = text_to_cstring(PG_GETARG_BYTEA_PP(1)); + text *string = PG_GETARG_BYTEA_PP(2); + int offset = PG_GETARG_INT32(3); + const char *data = VARDATA_ANY(string); + size_t size = VARSIZE_ANY_EXHDR(string); + int result = 0; + + if (strcmp(func, "pg_mblen_unbounded") == 0) + result = pg_mblen_unbounded(data + offset); + else if (strcmp(func, "pg_mblen_cstr") == 0) + result = pg_mblen_cstr(data + offset); + else if (strcmp(func, "pg_mblen_with_len") == 0) + result = pg_mblen_with_len(data + offset, size - offset); + else if (strcmp(func, "pg_mblen_range") == 0) + result = pg_mblen_range(data + offset, data + size); + else if (strcmp(func, "pg_encoding_mblen") == 0) + result = pg_encoding_mblen(pg_char_to_encoding(encoding), data + offset); + else + elog(ERROR, "unknown function"); + + PG_RETURN_INT32(result); +} + +PG_FUNCTION_INFO_V1(test_text_to_wchars); +Datum +test_text_to_wchars(PG_FUNCTION_ARGS) +{ + const char *encoding_name = text_to_cstring(PG_GETARG_BYTEA_PP(0)); + text *string = PG_GETARG_TEXT_PP(1); + const char *data = VARDATA_ANY(string); + size_t size = VARSIZE_ANY_EXHDR(string); + pg_wchar *wchars = palloc(sizeof(pg_wchar) * (size + 1)); + Datum *datums; + int wlen; + int encoding; + + encoding = pg_char_to_encoding(encoding_name); + if (encoding < 0) + elog(ERROR, "unknown encoding name: %s", encoding_name); + + if (size > 0) + { + datums = palloc(sizeof(Datum) * size); + wlen = pg_encoding_mb2wchar_with_len(encoding, + data, + wchars, + size); + Assert(wlen >= 0); + Assert(wlen <= size); + Assert(wchars[wlen] == 0); + + for (int i = 0; i < wlen; ++i) + datums[i] = UInt32GetDatum(wchars[i]); + } + else + { + datums = NULL; + wlen = 0; + } + + PG_RETURN_ARRAYTYPE_P(construct_array_builtin(datums, wlen, INT4OID)); +} + +PG_FUNCTION_INFO_V1(test_wchars_to_text); +Datum +test_wchars_to_text(PG_FUNCTION_ARGS) +{ + const char *encoding_name = text_to_cstring(PG_GETARG_BYTEA_PP(0)); + ArrayType *array = PG_GETARG_ARRAYTYPE_P(1); + Datum *datums; + bool *nulls; + char *mb; + text *result; + int wlen; + int bytes; + int encoding; + + encoding = pg_char_to_encoding(encoding_name); + if (encoding < 0) + elog(ERROR, "unknown encoding name: %s", encoding_name); + + deconstruct_array_builtin(array, INT4OID, &datums, &nulls, &wlen); + + if (wlen > 0) + { + pg_wchar *wchars = palloc(sizeof(pg_wchar) * wlen); + + for (int i = 0; i < wlen; ++i) + { + if (nulls[i]) + elog(ERROR, "unexpected NULL in array"); + wchars[i] = DatumGetInt32(datums[i]); + } + + mb = palloc(pg_encoding_max_length(encoding) * wlen + 1); + bytes = pg_encoding_wchar2mb_with_len(encoding, wchars, mb, wlen); + } + else + { + mb = ""; + bytes = 0; + } + + result = palloc(bytes + VARHDRSZ); + SET_VARSIZE(result, bytes + VARHDRSZ); + memcpy(VARDATA(result), mb, bytes); + + PG_RETURN_TEXT_P(result); +} + +PG_FUNCTION_INFO_V1(test_valid_server_encoding); +Datum +test_valid_server_encoding(PG_FUNCTION_ARGS) +{ + return pg_valid_server_encoding(text_to_cstring(PG_GETARG_TEXT_PP(0))); +} + /* Provide SQL access to IsBinaryCoercible() */ PG_FUNCTION_INFO_V1(binary_coercible); Datum diff --git a/src/test/regress/sql/.gitignore b/src/test/regress/sql/.gitignore index fe14af6ae7a..fb014e8c826 100644 --- a/src/test/regress/sql/.gitignore +++ b/src/test/regress/sql/.gitignore @@ -3,6 +3,7 @@ /create_function_0.sql /create_function_1.sql /create_function_2.sql +/encoding.sql /largeobject.sql /misc.sql /security_label.sql diff --git a/src/test/regress/sql/arrays.sql b/src/test/regress/sql/arrays.sql index 0b9bdc7a628..da7afb62b59 100644 --- a/src/test/regress/sql/arrays.sql +++ b/src/test/regress/sql/arrays.sql @@ -474,6 +474,10 @@ select array[]::text[]; select '[0:1]={1.1,2.2}'::float8[]; -- all of the above should be accepted +-- some day we might allow these cases, but for now they're errors: +select array[]::oidvector; +select array[]::int2vector; + -- tests for array aggregates CREATE TEMP TABLE arraggtest ( f1 INT[], f2 TEXT[][], f3 FLOAT[]); diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index fc73301679a..b4c49405ae2 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -374,6 +374,9 @@ CREATE INDEX hash_txt_index ON hash_txt_heap USING hash (random text_ops); CREATE INDEX hash_f8_index ON hash_f8_heap USING hash (random float8_ops) WITH (fillfactor=60); +CREATE INDEX hash_i4_partial_index ON hash_i4_heap USING hash (seqno) + WHERE seqno = 9999; + CREATE UNLOGGED TABLE unlogged_hash_table (id int4); CREATE INDEX unlogged_hash_index ON unlogged_hash_table USING hash (id int4_ops); DROP TABLE unlogged_hash_table; diff --git a/src/test/regress/sql/euc_kr.sql b/src/test/regress/sql/euc_kr.sql new file mode 100644 index 00000000000..1851b2a8c14 --- /dev/null +++ b/src/test/regress/sql/euc_kr.sql @@ -0,0 +1,12 @@ +-- This test is about EUC_KR encoding, chosen as perhaps the most prevalent +-- non-UTF8, multibyte encoding as of 2026-01. Since UTF8 can represent all +-- of EUC_KR, also run the test in UTF8. +SELECT getdatabaseencoding() NOT IN ('EUC_KR', 'UTF8') AS skip_test \gset +\if :skip_test +\quit +\endif + +-- Exercise is_multibyte_char_in_char (non-UTF8) slow path. +SELECT POSITION( + convert_from('\xbcf6c7d0', 'EUC_KR') IN + convert_from('\xb0fac7d02c20bcf6c7d02c20b1e2bcfa2c20bbee', 'EUC_KR')); diff --git a/src/test/regress/sql/hash_index.sql b/src/test/regress/sql/hash_index.sql index 4d1aa020a96..cf05ec02751 100644 --- a/src/test/regress/sql/hash_index.sql +++ b/src/test/regress/sql/hash_index.sql @@ -55,6 +55,16 @@ SELECT * FROM hash_f8_heap SELECT * FROM hash_f8_heap WHERE hash_f8_heap.random = '88888888'::float8; +-- +-- partial hash index +-- +EXPLAIN (COSTS OFF) +SELECT * FROM hash_i4_heap + WHERE seqno = 9999; + +SELECT * FROM hash_i4_heap + WHERE seqno = 9999; + -- -- hash index -- grep '^90[^0-9]' hashovfl.data diff --git a/src/test/regress/sql/with.sql b/src/test/regress/sql/with.sql index cd6ce45a434..cf40468deba 100644 --- a/src/test/regress/sql/with.sql +++ b/src/test/regress/sql/with.sql @@ -1059,16 +1059,26 @@ from int4_tbl; -- -- test for bug #19055: interaction of WITH with aggregates -- --- The reference to cte1 must determine the aggregate's level, --- even though it contains no Vars referencing cte1 -explain (verbose, costs off) +-- For now, we just throw an error if there's a use of a CTE below the +-- semantic level that the SQL standard assigns to the aggregate. +-- It's not entirely clear what we could do instead that doesn't risk +-- breaking more things than it fixes. select f1, (with cte1(x,y) as (select 1,2) select count((select i4.f1 from cte1))) as ss from int4_tbl i4; -select f1, (with cte1(x,y) as (select 1,2) - select count((select i4.f1 from cte1))) as ss -from int4_tbl i4; +-- +-- test for bug #19106: interaction of WITH with aggregates +-- +-- the initial fix for #19055 was too aggressive and broke this case +explain (verbose, costs off) +with a as ( select id from (values (1), (2)) as v(id) ), + b as ( select max((select sum(id) from a)) as agg ) +select agg from b; + +with a as ( select id from (values (1), (2)) as v(id) ), + b as ( select max((select sum(id) from a)) as agg ) +select agg from b; -- -- test for nested-recursive-WITH bug @@ -1309,6 +1319,29 @@ COMMIT; SELECT * FROM bug6051_3; +-- check that recursive CTE processing doesn't rewrite a CTE more than once +-- (must not try to expand GENERATED ALWAYS IDENTITY columns more than once) +CREATE TEMP TABLE id_alw1 (i int GENERATED ALWAYS AS IDENTITY); + +CREATE TEMP TABLE id_alw2 (i int GENERATED ALWAYS AS IDENTITY); +CREATE TEMP VIEW id_alw2_view AS SELECT * FROM id_alw2; + +CREATE TEMP TABLE id_alw3 (i int GENERATED ALWAYS AS IDENTITY); +CREATE RULE id_alw3_ins AS ON INSERT TO id_alw3 DO INSTEAD + WITH t1 AS (INSERT INTO id_alw1 DEFAULT VALUES RETURNING i) + INSERT INTO id_alw2_view DEFAULT VALUES RETURNING i; +CREATE TEMP VIEW id_alw3_view AS SELECT * FROM id_alw3; + +CREATE TEMP TABLE id_alw4 (i int GENERATED ALWAYS AS IDENTITY); + +WITH t4 AS (INSERT INTO id_alw4 DEFAULT VALUES RETURNING i) + INSERT INTO id_alw3_view DEFAULT VALUES RETURNING i; + +SELECT * from id_alw1; +SELECT * from id_alw2; +SELECT * from id_alw3; +SELECT * from id_alw4; + -- check case where CTE reference is removed due to optimization EXPLAIN (VERBOSE, COSTS OFF) SELECT q1 FROM diff --git a/src/test/subscription/t/004_sync.pl b/src/test/subscription/t/004_sync.pl index 545599b8f8d..cd5acf11a0f 100644 --- a/src/test/subscription/t/004_sync.pl +++ b/src/test/subscription/t/004_sync.pl @@ -6,7 +6,7 @@ use warnings; use PostgresNode; use TestLib; -use Test::More tests => 8; +use Test::More tests => 9; # Initialize publisher node my $node_publisher = get_new_node('publisher'); @@ -172,5 +172,11 @@ 'postgres', 'SELECT count(*) = 0 FROM pg_replication_slots'), 'DROP SUBSCRIPTION during error can clean up the slots on the publisher'); +# After dropping the subscription, all replication origins, whether created by +# an apply worker or table sync worker, should have been cleaned up. +$result = $node_subscriber->safe_psql('postgres', + "SELECT count(*) FROM pg_replication_origin_status"); +is($result, qq(0), 'all replication origins have been cleaned up'); + $node_subscriber->stop('fast'); $node_publisher->stop('fast'); diff --git a/src/timezone/data/tzdata.zi b/src/timezone/data/tzdata.zi index a7fb52f1968..c56f67c02f6 100644 --- a/src/timezone/data/tzdata.zi +++ b/src/timezone/data/tzdata.zi @@ -1,4 +1,4 @@ -# version 2025b +# version 2025c # 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 - @@ -2951,9 +2951,7 @@ Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u -8 1 PDT 1951 S 30 2 -8 - PST 1952 Ap 27 2 -8 1 PDT 1952 S 28 2 --8 - PST 1954 --8 CA P%sT 1961 --8 - PST 1976 +-8 CA P%sT 1967 -8 u P%sT 1996 -8 m P%sT 2001 -8 u P%sT 2002 F 20 diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list index 5778ca922aa..cdf98d346d2 100644 --- a/src/tools/pgindent/typedefs.list +++ b/src/tools/pgindent/typedefs.list @@ -686,6 +686,7 @@ ExtensibleNodeMethods ExtensionControlFile ExtensionInfo ExtensionMemberId +ExtensionSiblingCache ExtensionVersionInfo FDWCollateState FD_SET @@ -1156,8 +1157,8 @@ InternalDefaultACL InternalGrant Interval IntoClause -InvalidationChunk -InvalidationListHeader +InvalMessageArray +InvalidationMsgsGroup IpcMemoryId IpcMemoryKey IpcMemoryState