From b4b8efbd3826ac0af2d1c2e7c40fcf80a4bfba45 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:18:03 +0200 Subject: Adding upstream version 15.6. Signed-off-by: Daniel Baumann --- src/backend/access/brin/brin_bloom.c | 3 +- src/backend/access/gin/ginbtree.c | 74 +- src/backend/access/heap/heapam.c | 41 +- src/backend/access/heap/hio.c | 2 +- src/backend/access/index/indexam.c | 49 +- src/backend/access/spgist/spgutils.c | 29 +- src/backend/access/transam/twophase.c | 2 +- src/backend/access/transam/xact.c | 1 + src/backend/access/transam/xlog.c | 6 +- src/backend/access/transam/xlogreader.c | 46 +- src/backend/access/transam/xlogrecovery.c | 34 + src/backend/catalog/aclchk.c | 4 +- src/backend/catalog/heap.c | 7 +- src/backend/catalog/index.c | 19 +- src/backend/commands/alter.c | 17 +- src/backend/commands/copyfrom.c | 6 +- src/backend/commands/dbcommands.c | 52 +- src/backend/commands/explain.c | 2 +- src/backend/commands/indexcmds.c | 36 +- src/backend/commands/matview.c | 40 +- src/backend/commands/statscmds.c | 23 +- src/backend/commands/tablecmds.c | 68 +- src/backend/commands/trigger.c | 28 +- src/backend/commands/tsearchcmds.c | 95 +- src/backend/executor/nodeAppend.c | 66 +- src/backend/executor/nodeHash.c | 13 +- src/backend/executor/nodeModifyTable.c | 32 +- src/backend/jit/llvm/llvmjit.c | 139 +- src/backend/jit/llvm/llvmjit_deform.c | 77 +- src/backend/jit/llvm/llvmjit_expr.c | 60 +- src/backend/jit/llvm/llvmjit_inline.cpp | 38 +- src/backend/libpq/auth.c | 12 +- src/backend/libpq/be-secure-gssapi.c | 60 +- src/backend/libpq/be-secure-openssl.c | 26 +- src/backend/libpq/pqcomm.c | 22 +- src/backend/nodes/nodeFuncs.c | 6 + src/backend/optimizer/prep/prepjointree.c | 9 +- src/backend/optimizer/util/clauses.c | 66 + src/backend/optimizer/util/pathnode.c | 175 + src/backend/po/de.po | 2298 +++++------ src/backend/po/es.po | 2 +- src/backend/po/fr.po | 2 +- src/backend/po/it.po | 2 +- src/backend/po/ja.po | 2008 +++++----- src/backend/po/ko.po | 2 +- src/backend/po/ru.po | 2302 +++++------ src/backend/po/sv.po | 2 +- src/backend/po/uk.po | 1949 +++++----- src/backend/po/zh_CN.po | 2 +- src/backend/port/win32/socket.c | 1 + .../libpqwalreceiver/libpqwalreceiver.c | 6 +- src/backend/replication/logical/snapbuild.c | 10 +- src/backend/replication/logical/tablesync.c | 48 +- src/backend/replication/pgoutput/pgoutput.c | 4 +- src/backend/storage/ipc/procarray.c | 3 +- src/backend/storage/lmgr/lwlock.c | 53 +- src/backend/storage/lmgr/proc.c | 4 +- src/backend/utils/activity/backend_status.c | 6 +- src/backend/utils/activity/pgstat.c | 3 + src/backend/utils/activity/wait_event.c | 3 + src/backend/utils/adt/timestamp.c | 96 +- src/backend/utils/adt/xml.c | 14 +- src/backend/utils/cache/catcache.c | 294 +- src/backend/utils/cache/relmapper.c | 16 +- src/backend/utils/error/elog.c | 4 + src/backend/utils/misc/guc.c | 11 +- src/bin/pg_ctl/pg_ctl.c | 4 +- src/bin/pg_dump/pg_dump.c | 52 +- src/bin/pg_dump/pg_dump.h | 3 +- src/bin/pg_dump/po/ru.po | 162 +- src/bin/pg_dump/t/002_pg_dump.pl | 6 +- src/bin/pg_rewind/po/ru.po | 64 +- src/bin/pg_rewind/t/003_extrafiles.pl | 13 + src/bin/pg_upgrade/po/ru.po | 15 +- src/bin/pg_upgrade/po/uk.po | 258 +- src/bin/pg_upgrade/t/002_pg_upgrade.pl | 14 +- src/bin/pg_waldump/po/de.po | 6 +- src/bin/pg_waldump/po/ru.po | 64 +- src/bin/pgbench/pgbench.c | 15 +- src/bin/pgbench/t/001_pgbench_with_server.pl | 30 +- src/bin/psql/po/ja.po | 4 +- src/bin/psql/po/ru.po | 8 +- src/bin/scripts/po/uk.po | 166 +- src/common/wchar.c | 1 + src/include/access/genam.h | 1 + src/include/access/tableam.h | 4 +- src/include/common/int.h | 6 +- src/include/jit/llvmjit.h | 8 + src/include/jit/llvmjit_emit.h | 30 +- src/include/mb/pg_wchar.h | 53 - src/include/optimizer/optimizer.h | 2 + src/include/pg_config.h.in | 3 - src/include/port/atomics/generic.h | 2 +- src/include/storage/buf_internals.h | 2 +- src/include/storage/lwlock.h | 8 + src/include/storage/proc.h | 2 +- src/include/utils/ascii.h | 52 + src/include/utils/wait_event.h | 3 +- src/interfaces/libpq/fe-exec.c | 73 +- src/interfaces/libpq/fe-protocol3.c | 9 +- src/interfaces/libpq/fe-secure-gssapi.c | 62 +- src/interfaces/libpq/fe-secure-openssl.c | 100 +- src/interfaces/libpq/fe-secure.c | 7 + src/interfaces/libpq/libpq-int.h | 7 +- src/interfaces/libpq/po/ru.po | 230 +- src/pl/plperl/GNUmakefile | 4 +- src/pl/plperl/plperl.h | 195 +- src/pl/plperl/plperl_system.h | 215 ++ src/pl/plpgsql/src/Makefile | 5 +- src/pl/plpgsql/src/expected/plpgsql_misc.out | 31 + src/pl/plpgsql/src/pl_gram.c | 758 ++-- src/pl/plpgsql/src/pl_gram.h | 2 +- src/pl/plpgsql/src/pl_gram.y | 72 +- src/pl/plpgsql/src/po/ru.po | 128 +- src/pl/plpgsql/src/sql/plpgsql_misc.sql | 22 + src/pl/plpython/Makefile | 3 +- src/pl/plpython/plpython.h | 73 +- src/pl/plpython/plpython_system.h | 103 + src/test/isolation/expected/fk-snapshot.out | 22 + src/test/isolation/specs/fk-snapshot.spec | 17 +- src/test/modules/test_pg_dump/t/001_base.pl | 29 +- .../modules/test_pg_dump/test_pg_dump--1.0.sql | 2 + src/test/regress/expected/fast_default.out | 18 + src/test/regress/expected/generated.out | 3 + src/test/regress/expected/horology.out | 4 + src/test/regress/expected/indexing.out | 39 + src/test/regress/expected/inherit.out | 17 + src/test/regress/expected/int8.out | 2 + src/test/regress/expected/interval.out | 13 + src/test/regress/expected/join.out | 26 + src/test/regress/expected/matview.out | 16 + src/test/regress/expected/merge.out | 91 + src/test/regress/expected/opr_sanity.out | 2 +- src/test/regress/expected/partition_join.out | 167 + src/test/regress/expected/triggers.out | 45 + src/test/regress/expected/tsdicts.out | 34 + src/test/regress/pg_regress.c | 2 +- src/test/regress/sql/fast_default.sql | 11 + src/test/regress/sql/generated.sql | 3 + src/test/regress/sql/horology.sql | 2 + src/test/regress/sql/indexing.sql | 20 + src/test/regress/sql/inherit.sql | 9 + src/test/regress/sql/int8.sql | 1 + src/test/regress/sql/interval.sql | 8 + src/test/regress/sql/join.sql | 12 + src/test/regress/sql/matview.sql | 17 + src/test/regress/sql/merge.sql | 64 + src/test/regress/sql/opr_sanity.sql | 2 +- src/test/regress/sql/partition_join.sql | 48 + src/test/regress/sql/triggers.sql | 36 + src/test/regress/sql/tsdicts.sql | 30 + src/test/ssl/t/001_ssltests.pl | 4 +- src/test/subscription/t/001_rep_changes.pl | 17 +- src/test/subscription/t/100_bugs.pl | 53 + src/timezone/data/tzdata.zi | 4007 ++++++++++---------- src/tools/msvc/Solution.pm | 2 - src/tools/pgindent/typedefs.list | 1 + 157 files changed, 10452 insertions(+), 8234 deletions(-) create mode 100644 src/pl/plperl/plperl_system.h create mode 100644 src/pl/plpgsql/src/expected/plpgsql_misc.out create mode 100644 src/pl/plpgsql/src/sql/plpgsql_misc.sql create mode 100644 src/pl/plpython/plpython_system.h (limited to 'src') diff --git a/src/backend/access/brin/brin_bloom.c b/src/backend/access/brin/brin_bloom.c index 6812ca9..23de868 100644 --- a/src/backend/access/brin/brin_bloom.c +++ b/src/backend/access/brin/brin_bloom.c @@ -279,8 +279,7 @@ bloom_init(int ndistinct, double false_positive_rate) double k; /* number of hash functions */ Assert(ndistinct > 0); - Assert((false_positive_rate >= BLOOM_MIN_FALSE_POSITIVE_RATE) && - (false_positive_rate < BLOOM_MAX_FALSE_POSITIVE_RATE)); + Assert(false_positive_rate > 0 && false_positive_rate < 1); /* sizing bloom filter: -(n * ln(p)) / (ln(2))^2 */ nbits = ceil(-(ndistinct * log(false_positive_rate)) / pow(log(2.0), 2)); diff --git a/src/backend/access/gin/ginbtree.c b/src/backend/access/gin/ginbtree.c index cc6d4e6..8520e37 100644 --- a/src/backend/access/gin/ginbtree.c +++ b/src/backend/access/gin/ginbtree.c @@ -28,6 +28,8 @@ static bool ginPlaceToPage(GinBtree btree, GinBtreeStack *stack, Buffer childbuf, GinStatsData *buildStats); static void ginFinishSplit(GinBtree btree, GinBtreeStack *stack, bool freestack, GinStatsData *buildStats); +static void ginFinishOldSplit(GinBtree btree, GinBtreeStack *stack, + GinStatsData *buildStats, int access); /* * Lock buffer by needed method for search. @@ -109,7 +111,7 @@ ginFindLeafPage(GinBtree btree, bool searchMode, * encounter on the way. */ if (!searchMode && GinPageIsIncompleteSplit(page)) - ginFinishSplit(btree, stack, false, NULL); + ginFinishOldSplit(btree, stack, NULL, access); /* * ok, page is correctly locked, we should check to move right .., @@ -130,7 +132,7 @@ ginFindLeafPage(GinBtree btree, bool searchMode, TestForOldSnapshot(snapshot, btree->index, page); if (!searchMode && GinPageIsIncompleteSplit(page)) - ginFinishSplit(btree, stack, false, NULL); + ginFinishOldSplit(btree, stack, NULL, access); } if (GinPageIsLeaf(page)) /* we found, return locked page */ @@ -166,8 +168,11 @@ ginFindLeafPage(GinBtree btree, bool searchMode, * Step right from current page. * * The next page is locked first, before releasing the current page. This is - * crucial to protect from concurrent page deletion (see comment in - * ginDeletePage). + * crucial to prevent concurrent VACUUM from deleting a page that we are about + * to step to. (The lock-coupling isn't strictly necessary when we are + * traversing the tree to find an insert location, because page deletion grabs + * a cleanup lock on the root to prevent any concurrent inserts. See Page + * deletion section in the README. But there's no harm in doing it always.) */ Buffer ginStepRight(Buffer buffer, Relation index, int lockmode) @@ -264,7 +269,7 @@ ginFindParents(GinBtree btree, GinBtreeStack *stack) ptr->parent = root; ptr->off = InvalidOffsetNumber; - ginFinishSplit(btree, ptr, false, NULL); + ginFinishOldSplit(btree, ptr, NULL, GIN_EXCLUSIVE); } leftmostBlkno = btree->getLeftMostChild(btree, page); @@ -274,7 +279,11 @@ ginFindParents(GinBtree btree, GinBtreeStack *stack) blkno = GinPageGetOpaque(page)->rightlink; if (blkno == InvalidBlockNumber) { - UnlockReleaseBuffer(buffer); + /* Link not present in this level */ + LockBuffer(buffer, GIN_UNLOCK); + /* Do not release pin on the root buffer */ + if (buffer != root->buffer) + ReleaseBuffer(buffer); break; } buffer = ginStepRight(buffer, btree->index, GIN_EXCLUSIVE); @@ -289,7 +298,7 @@ ginFindParents(GinBtree btree, GinBtreeStack *stack) ptr->parent = root; ptr->off = InvalidOffsetNumber; - ginFinishSplit(btree, ptr, false, NULL); + ginFinishOldSplit(btree, ptr, NULL, GIN_EXCLUSIVE); } } @@ -670,15 +679,6 @@ ginFinishSplit(GinBtree btree, GinBtreeStack *stack, bool freestack, bool done; bool first = true; - /* - * freestack == false when we encounter an incompletely split page during - * a scan, while freestack == true is used in the normal scenario that a - * split is finished right after the initial insert. - */ - if (!freestack) - elog(DEBUG1, "finishing incomplete split of block %u in gin index \"%s\"", - stack->blkno, RelationGetRelationName(btree->index)); - /* this loop crawls up the stack until the insertion is complete */ do { @@ -699,7 +699,7 @@ ginFinishSplit(GinBtree btree, GinBtreeStack *stack, bool freestack, * would fail. */ if (GinPageIsIncompleteSplit(BufferGetPage(parent->buffer))) - ginFinishSplit(btree, parent, false, buildStats); + ginFinishOldSplit(btree, parent, buildStats, GIN_EXCLUSIVE); /* move right if it's needed */ page = BufferGetPage(parent->buffer); @@ -723,7 +723,7 @@ ginFinishSplit(GinBtree btree, GinBtreeStack *stack, bool freestack, page = BufferGetPage(parent->buffer); if (GinPageIsIncompleteSplit(BufferGetPage(parent->buffer))) - ginFinishSplit(btree, parent, false, buildStats); + ginFinishOldSplit(btree, parent, buildStats, GIN_EXCLUSIVE); } /* insert the downlink */ @@ -759,6 +759,42 @@ ginFinishSplit(GinBtree btree, GinBtreeStack *stack, bool freestack, freeGinBtreeStack(stack); } +/* + * An entry point to ginFinishSplit() that is used when we stumble upon an + * existing incompletely split page in the tree, as opposed to completing a + * split that we just made outselves. The difference is that stack->buffer may + * be merely share-locked on entry, and will be upgraded to exclusive mode. + * + * Note: Upgrading the lock momentarily releases it. Doing that in a scan + * would not be OK, because a concurrent VACUUM might delete the page while + * we're not holding the lock. It's OK in an insert, though, because VACUUM + * has a different mechanism that prevents it from running concurrently with + * inserts. (Namely, it holds a cleanup lock on the root.) + */ +static void +ginFinishOldSplit(GinBtree btree, GinBtreeStack *stack, GinStatsData *buildStats, int access) +{ + elog(DEBUG1, "finishing incomplete split of block %u in gin index \"%s\"", + stack->blkno, RelationGetRelationName(btree->index)); + + if (access == GIN_SHARE) + { + LockBuffer(stack->buffer, GIN_UNLOCK); + LockBuffer(stack->buffer, GIN_EXCLUSIVE); + + if (!GinPageIsIncompleteSplit(BufferGetPage(stack->buffer))) + { + /* + * Someone else already completed the split while we were not + * holding the lock. + */ + return; + } + } + + ginFinishSplit(btree, stack, false, buildStats); +} + /* * Insert a value to tree described by stack. * @@ -779,7 +815,7 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack, void *insertdata, /* If the leaf page was incompletely split, finish the split first */ if (GinPageIsIncompleteSplit(BufferGetPage(stack->buffer))) - ginFinishSplit(btree, stack, false, buildStats); + ginFinishOldSplit(btree, stack, buildStats, GIN_EXCLUSIVE); done = ginPlaceToPage(btree, stack, insertdata, InvalidBlockNumber, diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index c74fbd0..30bc88e 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -2856,13 +2856,7 @@ l1: result = TM_Deleted; } - if (crosscheck != InvalidSnapshot && result == TM_Ok) - { - /* Perform additional check for transaction-snapshot mode RI updates */ - if (!HeapTupleSatisfiesVisibility(&tp, crosscheck, buffer)) - result = TM_Updated; - } - + /* sanity check the result HeapTupleSatisfiesUpdate() and the logic above */ if (result != TM_Ok) { Assert(result == TM_SelfModified || @@ -2872,6 +2866,17 @@ l1: Assert(!(tp.t_data->t_infomask & HEAP_XMAX_INVALID)); Assert(result != TM_Updated || !ItemPointerEquals(&tp.t_self, &tp.t_data->t_ctid)); + } + + if (crosscheck != InvalidSnapshot && result == TM_Ok) + { + /* Perform additional check for transaction-snapshot mode RI updates */ + if (!HeapTupleSatisfiesVisibility(&tp, crosscheck, buffer)) + result = TM_Updated; + } + + if (result != TM_Ok) + { tmfd->ctid = tp.t_data->t_ctid; tmfd->xmax = HeapTupleHeaderGetUpdateXid(tp.t_data); if (result == TM_SelfModified) @@ -3483,16 +3488,7 @@ l2: result = TM_Deleted; } - if (crosscheck != InvalidSnapshot && result == TM_Ok) - { - /* Perform additional check for transaction-snapshot mode RI updates */ - if (!HeapTupleSatisfiesVisibility(&oldtup, crosscheck, buffer)) - { - result = TM_Updated; - Assert(!ItemPointerEquals(&oldtup.t_self, &oldtup.t_data->t_ctid)); - } - } - + /* Sanity check the result HeapTupleSatisfiesUpdate() and the logic above */ if (result != TM_Ok) { Assert(result == TM_SelfModified || @@ -3502,6 +3498,17 @@ l2: Assert(!(oldtup.t_data->t_infomask & HEAP_XMAX_INVALID)); Assert(result != TM_Updated || !ItemPointerEquals(&oldtup.t_self, &oldtup.t_data->t_ctid)); + } + + if (crosscheck != InvalidSnapshot && result == TM_Ok) + { + /* Perform additional check for transaction-snapshot mode RI updates */ + if (!HeapTupleSatisfiesVisibility(&oldtup, crosscheck, buffer)) + result = TM_Updated; + } + + if (result != TM_Ok) + { tmfd->ctid = oldtup.t_data->t_ctid; tmfd->xmax = HeapTupleHeaderGetUpdateXid(oldtup.t_data); if (result == TM_SelfModified) diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c index b0ece66..6e1ff45 100644 --- a/src/backend/access/heap/hio.c +++ b/src/backend/access/heap/hio.c @@ -387,7 +387,7 @@ RelationGetBufferForTuple(Relation relation, Size len, * on, as cached in the BulkInsertState or relcache entry. If that * doesn't work, we ask the Free Space Map to locate a suitable page. * Since the FSM's info might be out of date, we have to be prepared to - * loop around and retry multiple times. (To insure this isn't an infinite + * loop around and retry multiple times. (To ensure this isn't an infinite * loop, we must update the FSM with the correct amount of free space on * each page that proves not to be suitable.) If the FSM has no record of * a page with enough free space, we give up and extend the relation. diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c index fe80b8b..cd5f07f 100644 --- a/src/backend/access/index/indexam.c +++ b/src/backend/access/index/indexam.c @@ -107,6 +107,7 @@ do { \ static IndexScanDesc index_beginscan_internal(Relation indexRelation, int nkeys, int norderbys, Snapshot snapshot, ParallelIndexScanDesc pscan, bool temp_snap); +static inline void validate_relation_kind(Relation r); /* ---------------------------------------------------------------- @@ -135,12 +136,30 @@ index_open(Oid relationId, LOCKMODE lockmode) r = relation_open(relationId, lockmode); - if (r->rd_rel->relkind != RELKIND_INDEX && - r->rd_rel->relkind != RELKIND_PARTITIONED_INDEX) - ereport(ERROR, - (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("\"%s\" is not an index", - RelationGetRelationName(r)))); + validate_relation_kind(r); + + return r; +} + +/* ---------------- + * try_index_open - open a index relation by relation OID + * + * Same as index_open, except return NULL instead of failing + * if the relation does not exist. + * ---------------- + */ +Relation +try_index_open(Oid relationId, LOCKMODE lockmode) +{ + Relation r; + + r = try_relation_open(relationId, lockmode); + + /* leave if index does not exist */ + if (!r) + return NULL; + + validate_relation_kind(r); return r; } @@ -168,6 +187,24 @@ index_close(Relation relation, LOCKMODE lockmode) UnlockRelationId(&relid, lockmode); } +/* ---------------- + * validate_relation_kind - check the relation's kind + * + * Make sure relkind is an index or a partitioned index. + * ---------------- + */ +static inline void +validate_relation_kind(Relation r) +{ + if (r->rd_rel->relkind != RELKIND_INDEX && + r->rd_rel->relkind != RELKIND_PARTITIONED_INDEX) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not an index", + RelationGetRelationName(r)))); +} + + /* ---------------- * index_insert - insert an index tuple into a relation * ---------------- diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c index f2da02e..bff33f3 100644 --- a/src/backend/access/spgist/spgutils.c +++ b/src/backend/access/spgist/spgutils.c @@ -185,8 +185,6 @@ spgGetCache(Relation index) Oid atttype; spgConfigIn in; FmgrInfo *procinfo; - Buffer metabuffer; - SpGistMetaPageData *metadata; cache = MemoryContextAllocZero(index->rd_indexcxt, sizeof(SpGistCache)); @@ -254,19 +252,28 @@ spgGetCache(Relation index) fillTypeDesc(&cache->attPrefixType, cache->config.prefixType); fillTypeDesc(&cache->attLabelType, cache->config.labelType); - /* Last, get the lastUsedPages data from the metapage */ - metabuffer = ReadBuffer(index, SPGIST_METAPAGE_BLKNO); - LockBuffer(metabuffer, BUFFER_LOCK_SHARE); + /* + * Finally, if it's a real index (not a partitioned one), get the + * lastUsedPages data from the metapage + */ + if (index->rd_rel->relkind != RELKIND_PARTITIONED_INDEX) + { + Buffer metabuffer; + SpGistMetaPageData *metadata; + + metabuffer = ReadBuffer(index, SPGIST_METAPAGE_BLKNO); + LockBuffer(metabuffer, BUFFER_LOCK_SHARE); - metadata = SpGistPageGetMeta(BufferGetPage(metabuffer)); + metadata = SpGistPageGetMeta(BufferGetPage(metabuffer)); - if (metadata->magicNumber != SPGIST_MAGIC_NUMBER) - elog(ERROR, "index \"%s\" is not an SP-GiST index", - RelationGetRelationName(index)); + if (metadata->magicNumber != SPGIST_MAGIC_NUMBER) + elog(ERROR, "index \"%s\" is not an SP-GiST index", + RelationGetRelationName(index)); - cache->lastUsedPages = metadata->lastUsedPages; + cache->lastUsedPages = metadata->lastUsedPages; - UnlockReleaseBuffer(metabuffer); + UnlockReleaseBuffer(metabuffer); + } index->rd_amcache = (void *) cache; } diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 5293c69..ca7037e 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -486,7 +486,7 @@ MarkAsPreparingGuts(GlobalTransaction gxact, TransactionId xid, const char *gid, proc->roleId = owner; proc->tempNamespaceId = InvalidOid; proc->isBackgroundWorker = false; - proc->lwWaiting = false; + proc->lwWaiting = LW_WS_NOT_WAITING; proc->lwWaitMode = 0; proc->waitLock = NULL; proc->waitProcLock = NULL; diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index e0c7ad1..7a3d9b4 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -5265,6 +5265,7 @@ PushTransaction(void) s->blockState = TBLOCK_SUBBEGIN; GetUserIdAndSecContext(&s->prevUser, &s->prevSecContext); s->prevXactReadOnly = XactReadOnly; + s->startedInRecovery = p->startedInRecovery; s->parallelModeLevel = 0; s->topXidLogged = false; diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 59f94b0..9795ce7 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -974,8 +974,10 @@ XLogInsertRecord(XLogRecData *rdata, if (!debug_reader) debug_reader = XLogReaderAllocate(wal_segment_size, NULL, - XL_ROUTINE(), NULL); - + XL_ROUTINE(.page_read = NULL, + .segment_open = NULL, + .segment_close = NULL), + NULL); if (!debug_reader) { appendStringInfoString(&buf, "error decoding record: out of memory while allocating a WAL reading processor"); diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c index c15da9d..e7ad331 100644 --- a/src/backend/access/transam/xlogreader.c +++ b/src/backend/access/transam/xlogreader.c @@ -457,18 +457,37 @@ XLogReadRecordAlloc(XLogReaderState *state, size_t xl_tot_len, bool allow_oversi if (state->decode_buffer_tail >= state->decode_buffer_head) { /* Empty, or tail is to the right of head. */ - if (state->decode_buffer_tail + required_space <= - state->decode_buffer + state->decode_buffer_size) + if (required_space <= + state->decode_buffer_size - + (state->decode_buffer_tail - state->decode_buffer)) { - /* There is space between tail and end. */ + /*- + * There is space between tail and end. + * + * +-----+--------------------+-----+ + * | |////////////////////|here!| + * +-----+--------------------+-----+ + * ^ ^ + * | | + * h t + */ decoded = (DecodedXLogRecord *) state->decode_buffer_tail; decoded->oversized = false; return decoded; } - else if (state->decode_buffer + required_space < - state->decode_buffer_head) + else if (required_space < + state->decode_buffer_head - state->decode_buffer) { - /* There is space between start and head. */ + /*- + * There is space between start and head. + * + * +-----+--------------------+-----+ + * |here!|////////////////////| | + * +-----+--------------------+-----+ + * ^ ^ + * | | + * h t + */ decoded = (DecodedXLogRecord *) state->decode_buffer; decoded->oversized = false; return decoded; @@ -477,10 +496,19 @@ XLogReadRecordAlloc(XLogReaderState *state, size_t xl_tot_len, bool allow_oversi else { /* Tail is to the left of head. */ - if (state->decode_buffer_tail + required_space < - state->decode_buffer_head) + if (required_space < + state->decode_buffer_head - state->decode_buffer_tail) { - /* There is space between tail and head. */ + /*- + * There is space between tail and head. + * + * +-----+--------------------+-----+ + * |/////|here! |/////| + * +-----+--------------------+-----+ + * ^ ^ + * | | + * t h + */ decoded = (DecodedXLogRecord *) state->decode_buffer_tail; decoded->oversized = false; return decoded; diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c index 166f7b7..1503b21 100644 --- a/src/backend/access/transam/xlogrecovery.c +++ b/src/backend/access/transam/xlogrecovery.c @@ -621,6 +621,22 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr, if (StandbyModeRequested) EnableStandbyMode(); + /* + * Omitting backup_label when creating a new replica, PITR node etc. + * unfortunately is a common cause of corruption. Logging that + * backup_label was used makes it a bit easier to exclude that as the + * cause of observed corruption. + * + * Do so before we try to read the checkpoint record (which can fail), + * as otherwise it can be hard to understand why a checkpoint other + * than ControlFile->checkPoint is used. + */ + ereport(LOG, + (errmsg("starting backup recovery with redo LSN %X/%X, checkpoint LSN %X/%X, on timeline ID %u", + LSN_FORMAT_ARGS(RedoStartLSN), + LSN_FORMAT_ARGS(CheckPointLoc), + CheckPointTLI))); + /* * When a backup_label file is present, we want to roll forward from * the checkpoint it identifies, rather than using pg_control. @@ -759,6 +775,16 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr, EnableStandbyMode(); } + /* + * For the same reason as when starting up with backup_label present, + * emit a log message when we continue initializing from a base + * backup. + */ + if (!XLogRecPtrIsInvalid(ControlFile->backupStartPoint)) + ereport(LOG, + (errmsg("restarting backup recovery with redo LSN %X/%X", + LSN_FORMAT_ARGS(ControlFile->backupStartPoint)))); + /* Get the last valid checkpoint record. */ CheckPointLoc = ControlFile->checkPoint; CheckPointTLI = ControlFile->checkPointCopy.ThisTimeLineID; @@ -2102,6 +2128,9 @@ CheckRecoveryConsistency(void) if (!XLogRecPtrIsInvalid(backupEndPoint) && backupEndPoint <= lastReplayedEndRecPtr) { + XLogRecPtr saveBackupStartPoint = backupStartPoint; + XLogRecPtr saveBackupEndPoint = backupEndPoint; + elog(DEBUG1, "end of backup reached"); /* @@ -2112,6 +2141,11 @@ CheckRecoveryConsistency(void) backupStartPoint = InvalidXLogRecPtr; backupEndPoint = InvalidXLogRecPtr; backupEndRequired = false; + + ereport(LOG, + (errmsg("completed backup recovery with redo LSN %X/%X and end LSN %X/%X", + LSN_FORMAT_ARGS(saveBackupStartPoint), + LSN_FORMAT_ARGS(saveBackupEndPoint)))); } /* diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index 95d85a7..567807b 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -6135,9 +6135,9 @@ recordExtObjInitPriv(Oid objoid, Oid classoid) ReleaseSysCache(tuple); } - /* pg_largeobject_metadata */ - else if (classoid == LargeObjectMetadataRelationId) + else if (classoid == LargeObjectRelationId) { + /* For large objects, we must consult pg_largeobject_metadata */ Datum aclDatum; bool isNull; HeapTuple tuple; diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index a21de89..bd6b9c4 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -2328,7 +2328,8 @@ AddRelationNewConstraints(Relation rel, continue; /* If the DEFAULT is volatile we cannot use a missing value */ - if (colDef->missingMode && contain_volatile_functions((Node *) expr)) + if (colDef->missingMode && + contain_volatile_functions_after_planning((Expr *) expr)) colDef->missingMode = false; defOid = StoreAttrDefault(rel, colDef->attnum, expr, is_internal, @@ -2763,9 +2764,11 @@ cookDefault(ParseState *pstate, if (attgenerated) { + /* Disallow refs to other generated columns */ check_nested_generated(pstate, expr); - if (contain_mutable_functions(expr)) + /* Disallow mutable functions */ + if (contain_mutable_functions_after_planning((Expr *) expr)) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("generation expression is not immutable"))); diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index db697a9..bab02e1 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -3621,7 +3621,24 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence, * Open the target index relation and get an exclusive lock on it, to * ensure that no one else is touching this particular index. */ - iRel = index_open(indexId, AccessExclusiveLock); + if ((params->options & REINDEXOPT_MISSING_OK) != 0) + iRel = try_index_open(indexId, AccessExclusiveLock); + else + iRel = index_open(indexId, AccessExclusiveLock); + + /* if index relation is gone, leave */ + if (!iRel) + { + /* Roll back any GUC changes */ + AtEOXact_GUC(false, save_nestlevel); + + /* Restore userid and security context */ + SetUserIdAndSecContext(save_userid, save_sec_context); + + /* Close parent heap relation, but keep locks */ + table_close(heapRelation, NoLock); + return; + } if (progress) pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID, diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c index 5456b82..6f27a49 100644 --- a/src/backend/commands/alter.c +++ b/src/backend/commands/alter.c @@ -1046,9 +1046,14 @@ AlterObjectOwner_internal(Relation rel, Oid objectId, Oid new_ownerId) /* Perform actual update */ CatalogTupleUpdate(rel, &newtup->t_self, newtup); - /* Update owner dependency reference */ + /* + * Update owner dependency reference. When working on a large object, + * we have to translate back to the OID conventionally used for LOs' + * classId. + */ if (classId == LargeObjectMetadataRelationId) classId = LargeObjectRelationId; + changeDependencyOnOwner(classId, objectId, new_ownerId); /* Release memory */ @@ -1056,6 +1061,16 @@ AlterObjectOwner_internal(Relation rel, Oid objectId, Oid new_ownerId) pfree(nulls); pfree(replaces); } + else + { + /* + * No need to change anything. But when working on a large object, we + * have to translate back to the OID conventionally used for LOs' + * classId, or the post-alter hook (if any) will get confused. + */ + if (classId == LargeObjectMetadataRelationId) + classId = LargeObjectRelationId; + } InvokeObjectPostAlterHook(classId, objectId, 0); } diff --git a/src/backend/commands/copyfrom.c b/src/backend/commands/copyfrom.c index c6dbd97..182047a 100644 --- a/src/backend/commands/copyfrom.c +++ b/src/backend/commands/copyfrom.c @@ -758,6 +758,9 @@ CopyFrom(CopyFromState cstate) * Can't support multi-inserts if there are any volatile function * expressions in WHERE clause. Similarly to the trigger case above, * such expressions may query the table we're inserting into. + * + * Note: the whereClause was already preprocessed in DoCopy(), so it's + * okay to use contain_volatile_functions() directly. */ insertMethod = CIM_SINGLE; } @@ -1453,7 +1456,8 @@ BeginCopyFrom(ParseState *pstate, * known to be safe for use with the multi-insert * optimization. Hence we use this special case function * checker rather than the standard check for - * contain_volatile_functions(). + * contain_volatile_functions(). Note also that we already + * ran the expression through expression_planner(). */ if (!volatile_defexprs) volatile_defexprs = contain_volatile_functions_not_nextval((Node *) defexpr); diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 93f0c73..5ced6da 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -461,35 +461,12 @@ CreateDirAndVersionFile(char *dbpath, Oid dbid, Oid tsid, bool isRedo) char buf[16]; /* - * Prepare version data before starting a critical section. - * - * Note that we don't have to copy this from the source database; there's - * only one legal value. + * Note that we don't have to copy version data from the source database; + * there's only one legal value. */ sprintf(buf, "%s\n", PG_MAJORVERSION); nbytes = strlen(PG_MAJORVERSION) + 1; - /* If we are not in WAL replay then write the WAL. */ - if (!isRedo) - { - xl_dbase_create_wal_log_rec xlrec; - XLogRecPtr lsn; - - START_CRIT_SECTION(); - - xlrec.db_id = dbid; - xlrec.tablespace_id = tsid; - - XLogBeginInsert(); - XLogRegisterData((char *) (&xlrec), - sizeof(xl_dbase_create_wal_log_rec)); - - lsn = XLogInsert(RM_DBASE_ID, XLOG_DBASE_CREATE_WAL_LOG); - - /* As always, WAL must hit the disk before the data update does. */ - XLogFlush(lsn); - } - /* Create database directory. */ if (MakePGDirectory(dbpath) < 0) { @@ -530,12 +507,35 @@ CreateDirAndVersionFile(char *dbpath, Oid dbid, Oid tsid, bool isRedo) } pgstat_report_wait_end(); + pgstat_report_wait_start(WAIT_EVENT_VERSION_FILE_SYNC); + if (pg_fsync(fd) != 0) + ereport(data_sync_elevel(ERROR), + (errcode_for_file_access(), + errmsg("could not fsync file \"%s\": %m", versionfile))); + fsync_fname(dbpath, true); + pgstat_report_wait_end(); + /* Close the version file. */ CloseTransientFile(fd); - /* Critical section done. */ + /* If we are not in WAL replay then write the WAL. */ if (!isRedo) + { + xl_dbase_create_wal_log_rec xlrec; + + START_CRIT_SECTION(); + + xlrec.db_id = dbid; + xlrec.tablespace_id = tsid; + + XLogBeginInsert(); + XLogRegisterData((char *) (&xlrec), + sizeof(xl_dbase_create_wal_log_rec)); + + (void) XLogInsert(RM_DBASE_ID, XLOG_DBASE_CREATE_WAL_LOG); + END_CRIT_SECTION(); + } } /* diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 060c618..fa0b79d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -3597,7 +3597,7 @@ show_buffer_usage(ExplainState *es, const BufferUsage *usage, bool planning) if (has_timing) { - appendStringInfoString(es->str, " shared/local"); + appendStringInfoString(es->str, " shared"); if (!INSTR_TIME_IS_ZERO(usage->blk_read_time)) appendStringInfo(es->str, " read=%0.3f", INSTR_TIME_GET_MILLISEC(usage->blk_read_time)); diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index d3f7b09..c623432 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -1003,10 +1003,13 @@ DefineIndex(Oid relationId, { if (key->partattrs[i] == indexInfo->ii_IndexAttrNumbers[j]) { - /* Matched the column, now what about the equality op? */ + /* Matched the column, now what about the collation and equality op? */ Oid idx_opfamily; Oid idx_opcintype; + if (key->partcollation[i] != collationObjectId[j]) + continue; + if (get_opclass_opfamily_and_input_type(classObjectId[j], &idx_opfamily, &idx_opcintype)) @@ -1711,33 +1714,6 @@ DefineIndex(Oid relationId, } -/* - * CheckMutability - * Test whether given expression is mutable - */ -static bool -CheckMutability(Expr *expr) -{ - /* - * First run the expression through the planner. This has a couple of - * important consequences. First, function default arguments will get - * inserted, which may affect volatility (consider "default now()"). - * Second, inline-able functions will get inlined, which may allow us to - * conclude that the function is really less volatile than it's marked. As - * an example, polymorphic functions must be marked with the most volatile - * behavior that they have for any input type, but once we inline the - * function we may be able to conclude that it's not so volatile for the - * particular input type we're dealing with. - * - * We assume here that expression_planner() won't scribble on its input. - */ - expr = expression_planner(expr); - - /* Now we can search for non-immutable functions */ - return contain_mutable_functions((Node *) expr); -} - - /* * CheckPredicate * Checks that the given partial-index predicate is valid. @@ -1761,7 +1737,7 @@ CheckPredicate(Expr *predicate) * A predicate using mutable functions is probably wrong, for the same * reasons that we don't allow an index expression to use one. */ - if (CheckMutability(predicate)) + if (contain_mutable_functions_after_planning(predicate)) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("functions in index predicate must be marked IMMUTABLE"))); @@ -1904,7 +1880,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo, * same data every time, it's not clear what the index entries * mean at all. */ - if (CheckMutability((Expr *) expr)) + if (contain_mutable_functions_after_planning((Expr *) expr)) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("functions in index expression must be marked IMMUTABLE"))); diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index d1ee106..a5f8972 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -656,13 +656,35 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid, Oid relowner, SPI_getvalue(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1)))); } + /* + * Create the temporary "diff" table. + * + * Temporarily switch out of the SECURITY_RESTRICTED_OPERATION context, + * because you cannot create temp tables in SRO context. For extra + * paranoia, add the composite type column only after switching back to + * SRO context. + */ SetUserIdAndSecContext(relowner, save_sec_context | SECURITY_LOCAL_USERID_CHANGE); + resetStringInfo(&querybuf); + appendStringInfo(&querybuf, + "CREATE TEMP TABLE %s (tid pg_catalog.tid)", + diffname); + if (SPI_exec(querybuf.data, 0) != SPI_OK_UTILITY) + elog(ERROR, "SPI_exec failed: %s", querybuf.data); + SetUserIdAndSecContext(relowner, + save_sec_context | SECURITY_RESTRICTED_OPERATION); + resetStringInfo(&querybuf); + appendStringInfo(&querybuf, + "ALTER TABLE %s ADD COLUMN newdata %s", + diffname, tempname); + if (SPI_exec(querybuf.data, 0) != SPI_OK_UTILITY) + elog(ERROR, "SPI_exec failed: %s", querybuf.data); - /* Start building the query for creating the diff table. */ + /* Start building the query for populating the diff table. */ resetStringInfo(&querybuf); appendStringInfo(&querybuf, - "CREATE TEMP TABLE %s AS " + "INSERT INTO %s " "SELECT mv.ctid AS tid, newdata.*::%s AS newdata " "FROM %s mv FULL JOIN %s newdata ON (", diffname, tempname, matviewname, tempname); @@ -782,22 +804,22 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid, Oid relowner, * * ExecRefreshMatView() checks that after taking the exclusive lock on the * matview. So at least one unique index is guaranteed to exist here - * because the lock is still being held; so an Assert seems sufficient. + * because the lock is still being held. (One known exception is if a + * function called as part of refreshing the matview drops the index. + * That's a pretty silly thing to do.) */ - Assert(foundUniqueIndex); + if (!foundUniqueIndex) + elog(ERROR, "could not find suitable unique index on materialized view"); appendStringInfoString(&querybuf, " AND newdata.* OPERATOR(pg_catalog.*=) mv.*) " "WHERE newdata.* IS NULL OR mv.* IS NULL " "ORDER BY tid"); - /* Create the temporary "diff" table. */ - if (SPI_exec(querybuf.data, 0) != SPI_OK_UTILITY) + /* Populate the temporary "diff" table. */ + if (SPI_exec(querybuf.data, 0) != SPI_OK_INSERT) elog(ERROR, "SPI_exec failed: %s", querybuf.data); - SetUserIdAndSecContext(relowner, - save_sec_context | SECURITY_RESTRICTED_OPERATION); - /* * We have no further use for data from the "full-data" temp table, but we * must keep it around because its type is referenced from the diff table. diff --git a/src/backend/commands/statscmds.c b/src/backend/commands/statscmds.c index f442d85..fa7a0c0 100644 --- a/src/backend/commands/statscmds.c +++ b/src/backend/commands/statscmds.c @@ -735,18 +735,11 @@ void RemoveStatisticsById(Oid statsOid) { Relation relation; + Relation rel; HeapTuple tup; Form_pg_statistic_ext statext; Oid relid; - /* - * First delete the pg_statistic_ext_data tuples holding the actual - * statistical data. There might be data with/without inheritance, so - * attempt deleting both. - */ - RemoveStatisticsDataById(statsOid, true); - RemoveStatisticsDataById(statsOid, false); - /* * Delete the pg_statistic_ext tuple. Also send out a cache inval on the * associated table, so that dependent plans will be rebuilt. @@ -761,12 +754,26 @@ RemoveStatisticsById(Oid statsOid) statext = (Form_pg_statistic_ext) GETSTRUCT(tup); relid = statext->stxrelid; + /* + * Delete the pg_statistic_ext_data tuples holding the actual statistical + * data. There might be data with/without inheritance, so attempt deleting + * both. We lock the user table first, to prevent other processes (e.g. + * DROP STATISTICS) from removing the row concurrently. + */ + rel = table_open(relid, ShareUpdateExclusiveLock); + + RemoveStatisticsDataById(statsOid, true); + RemoveStatisticsDataById(statsOid, false); + CacheInvalidateRelcacheByRelid(relid); CatalogTupleDelete(relation, &tup->t_self); ReleaseSysCache(tup); + /* Keep lock until the end of the transaction. */ + table_close(rel, NoLock); + table_close(relation, RowExclusiveLock); } diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 97f9a22..5daa560 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -6805,6 +6805,10 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel, colDef->colname, RelationGetRelationName(rel)))); table_close(attrdesc, RowExclusiveLock); + + /* Make the child column change visible */ + CommandCounterIncrement(); + return InvalidObjectAddress; } } @@ -11410,15 +11414,19 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid, /* * transformFkeyCheckAttrs - * - * Make sure that the attributes of a referenced table belong to a unique - * (or primary key) constraint. Return the OID of the index supporting - * the constraint, as well as the opclasses associated with the index - * columns. + * Validate that the 'attnums' columns in the 'pkrel' relation are valid to + * reference as part of a foreign key constraint. + * + * Returns the OID of the unique index supporting the constraint and + * populates the caller-provided 'opclasses' array with the opclasses + * associated with the index columns. + * + * Raises an ERROR on validation failure. */ static Oid transformFkeyCheckAttrs(Relation pkrel, int numattrs, int16 *attnums, - Oid *opclasses) /* output parameter */ + Oid *opclasses) { Oid indexoid = InvalidOid; bool found = false; @@ -17406,30 +17414,6 @@ ComputePartitionAttrs(ParseState *pstate, Relation rel, List *partParams, AttrNu partattrs[attn] = 0; /* marks the column as expression */ *partexprs = lappend(*partexprs, expr); - /* - * Try to simplify the expression before checking for - * mutability. The main practical value of doing it in this - * order is that an inline-able SQL-language function will be - * accepted if its expansion is immutable, whether or not the - * function itself is marked immutable. - * - * Note that expression_planner does not change the passed in - * expression destructively and we have already saved the - * expression to be stored into the catalog above. - */ - expr = (Node *) expression_planner((Expr *) expr); - - /* - * Partition expression cannot contain mutable functions, - * because a given row must always map to the same partition - * as long as there is no change in the partition boundary - * structure. - */ - if (contain_mutable_functions(expr)) - ereport(ERROR, - (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("functions in partition key expression must be marked IMMUTABLE"))); - /* * transformPartitionSpec() should have already rejected * subqueries, aggregates, window functions, and SRFs, based @@ -17471,6 +17455,32 @@ ComputePartitionAttrs(ParseState *pstate, Relation rel, List *partParams, AttrNu parser_errposition(pstate, pelem->location))); } + /* + * Preprocess the expression before checking for mutability. + * This is essential for the reasons described in + * contain_mutable_functions_after_planning. However, we call + * expression_planner for ourselves rather than using that + * function, because if constant-folding reduces the + * expression to a constant, we'd like to know that so we can + * complain below. + * + * Like contain_mutable_functions_after_planning, assume that + * expression_planner won't scribble on its input, so this + * won't affect the partexprs entry we saved above. + */ + expr = (Node *) expression_planner((Expr *) expr); + + /* + * Partition expressions cannot contain mutable functions, + * because a given row must always map to the same partition + * as long as there is no change in the partition boundary + * structure. + */ + if (contain_mutable_functions(expr)) + ereport(ERROR, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("functions in partition key expression must be marked IMMUTABLE"))); + /* * While it is not exactly *wrong* for a partition expression * to be a constant, it seems better to reject such keys. diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 0769ae3..72b1134 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -3056,10 +3056,6 @@ ExecBRUpdateTriggersNew(EState *estate, EPQState *epqstate, * received in newslot. Neither we nor our callers have any further * interest in the passed-in tuple, so it's okay to overwrite newslot * with the newer data. - * - * (Typically, newslot was also generated by ExecGetUpdateNewTuple, so - * that epqslot_clean will be that same slot and the copy step below - * is not needed.) */ if (epqslot_candidate != NULL) { @@ -3068,14 +3064,36 @@ ExecBRUpdateTriggersNew(EState *estate, EPQState *epqstate, epqslot_clean = ExecGetUpdateNewTuple(relinfo, epqslot_candidate, oldslot); - if (newslot != epqslot_clean) + /* + * Typically, the caller's newslot was also generated by + * ExecGetUpdateNewTuple, so that epqslot_clean will be the same + * slot and copying is not needed. But do the right thing if it + * isn't. + */ + if (unlikely(newslot != epqslot_clean)) ExecCopySlot(newslot, epqslot_clean); + + /* + * At this point newslot contains a virtual tuple that may + * reference some fields of oldslot's tuple in some disk buffer. + * If that tuple is in a different page than the original target + * tuple, then our only pin on that buffer is oldslot's, and we're + * about to release it. Hence we'd better materialize newslot to + * ensure it doesn't contain references into an unpinned buffer. + * (We'd materialize it below anyway, but too late for safety.) + */ + ExecMaterializeSlot(newslot); } + /* + * Here we convert oldslot to a materialized slot holding trigtuple. + * Neither slot passed to the triggers will hold any buffer pin. + */ trigtuple = ExecFetchSlotHeapTuple(oldslot, true, &should_free_trig); } else { + /* Put the FDW-supplied tuple into oldslot to unify the cases */ ExecForceStoreHeapTuple(fdw_trigtuple, oldslot, false); trigtuple = fdw_trigtuple; } diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 4cc4e3c..7aa166f 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -48,6 +48,12 @@ #include "utils/rel.h" #include "utils/syscache.h" +/* Single entry of List returned by getTokenTypes() */ +typedef struct +{ + int num; /* token type number */ + char *name; /* token type name */ +} TSTokenTypeItem; static void MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, HeapTuple tup, Relation relMap); @@ -1151,22 +1157,45 @@ AlterTSConfiguration(AlterTSConfigurationStmt *stmt) } /* - * Translate a list of token type names to an array of token type numbers + * Check whether a token type name is a member of a TSTokenTypeItem list. */ -static int * +static bool +tstoken_list_member(char *token_name, List *tokens) +{ + ListCell *c; + bool found = false; + + foreach(c, tokens) + { + TSTokenTypeItem *ts = (TSTokenTypeItem *) lfirst(c); + + if (strcmp(token_name, ts->name) == 0) + { + found = true; + break; + } + } + + return found; +} + +/* + * Translate a list of token type names to a list of unique TSTokenTypeItem. + * + * Duplicated entries list are removed from tokennames. + */ +static List * getTokenTypes(Oid prsId, List *tokennames) { TSParserCacheEntry *prs = lookup_ts_parser_cache(prsId); LexDescr *list; - int *res, - i, - ntoken; + List *result = NIL; + int ntoken; ListCell *tn; ntoken = list_length(tokennames); if (ntoken == 0) - return NULL; - res = (int *) palloc(sizeof(int) * ntoken); + return NIL; if (!OidIsValid(prs->lextypeOid)) elog(ERROR, "method lextype isn't defined for text search parser %u", @@ -1176,19 +1205,26 @@ getTokenTypes(Oid prsId, List *tokennames) list = (LexDescr *) DatumGetPointer(OidFunctionCall1(prs->lextypeOid, (Datum) 0)); - i = 0; foreach(tn, tokennames) { String *val = lfirst_node(String, tn); bool found = false; int j; + /* Skip if this token is already in the result */ + if (tstoken_list_member(strVal(val), result)) + continue; + j = 0; while (list && list[j].lexid) { if (strcmp(strVal(val), list[j].alias) == 0) { - res[i] = list[j].lexid; + TSTokenTypeItem *ts = (TSTokenTypeItem *) palloc0(sizeof(TSTokenTypeItem)); + + ts->num = list[j].lexid; + ts->name = pstrdup(strVal(val)); + result = lappend(result, ts); found = true; break; } @@ -1199,10 +1235,9 @@ getTokenTypes(Oid prsId, List *tokennames) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("token type \"%s\" does not exist", strVal(val)))); - i++; } - return res; + return result; } /* @@ -1220,8 +1255,7 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, int i; int j; Oid prsId; - int *tokens, - ntoken; + List *tokens = NIL; Oid *dictIds; int ndict; ListCell *c; @@ -1231,15 +1265,16 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, prsId = tsform->cfgparser; tokens = getTokenTypes(prsId, stmt->tokentype); - ntoken = list_length(stmt->tokentype); if (stmt->override) { /* * delete maps for tokens if they exist and command was ALTER */ - for (i = 0; i < ntoken; i++) + foreach(c, tokens) { + TSTokenTypeItem *ts = (TSTokenTypeItem *) lfirst(c); + ScanKeyInit(&skey[0], Anum_pg_ts_config_map_mapcfg, BTEqualStrategyNumber, F_OIDEQ, @@ -1247,7 +1282,7 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, ScanKeyInit(&skey[1], Anum_pg_ts_config_map_maptokentype, BTEqualStrategyNumber, F_INT4EQ, - Int32GetDatum(tokens[i])); + Int32GetDatum(ts->num)); scan = systable_beginscan(relMap, TSConfigMapIndexId, true, NULL, 2, skey); @@ -1302,9 +1337,11 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, { bool tokmatch = false; - for (j = 0; j < ntoken; j++) + foreach(c, tokens) { - if (cfgmap->maptokentype == tokens[j]) + TSTokenTypeItem *ts = (TSTokenTypeItem *) lfirst(c); + + if (cfgmap->maptokentype == ts->num) { tokmatch = true; break; @@ -1345,8 +1382,10 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, /* * Insertion of new entries */ - for (i = 0; i < ntoken; i++) + foreach(c, tokens) { + TSTokenTypeItem *ts = (TSTokenTypeItem *) lfirst(c); + for (j = 0; j < ndict; j++) { Datum values[Natts_pg_ts_config_map]; @@ -1354,7 +1393,7 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, memset(nulls, false, sizeof(nulls)); values[Anum_pg_ts_config_map_mapcfg - 1] = ObjectIdGetDatum(cfgId); - values[Anum_pg_ts_config_map_maptokentype - 1] = Int32GetDatum(tokens[i]); + values[Anum_pg_ts_config_map_maptokentype - 1] = Int32GetDatum(ts->num); values[Anum_pg_ts_config_map_mapseqno - 1] = Int32GetDatum(j + 1); values[Anum_pg_ts_config_map_mapdict - 1] = ObjectIdGetDatum(dictIds[j]); @@ -1381,9 +1420,8 @@ DropConfigurationMapping(AlterTSConfigurationStmt *stmt, ScanKeyData skey[2]; SysScanDesc scan; HeapTuple maptup; - int i; Oid prsId; - int *tokens; + List *tokens = NIL; ListCell *c; tsform = (Form_pg_ts_config) GETSTRUCT(tup); @@ -1392,10 +1430,9 @@ DropConfigurationMapping(AlterTSConfigurationStmt *stmt, tokens = getTokenTypes(prsId, stmt->tokentype); - i = 0; - foreach(c, stmt->tokentype) + foreach(c, tokens) { - String *val = lfirst_node(String, c); + TSTokenTypeItem *ts = (TSTokenTypeItem *) lfirst(c); bool found = false; ScanKeyInit(&skey[0], @@ -1405,7 +1442,7 @@ DropConfigurationMapping(AlterTSConfigurationStmt *stmt, ScanKeyInit(&skey[1], Anum_pg_ts_config_map_maptokentype, BTEqualStrategyNumber, F_INT4EQ, - Int32GetDatum(tokens[i])); + Int32GetDatum(ts->num)); scan = systable_beginscan(relMap, TSConfigMapIndexId, true, NULL, 2, skey); @@ -1425,17 +1462,15 @@ DropConfigurationMapping(AlterTSConfigurationStmt *stmt, ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("mapping for token type \"%s\" does not exist", - strVal(val)))); + ts->name))); } else { ereport(NOTICE, (errmsg("mapping for token type \"%s\" does not exist, skipping", - strVal(val)))); + ts->name))); } } - - i++; } EventTriggerCollectAlterTSConfig(stmt, cfgId, NULL, 0); diff --git a/src/backend/executor/nodeAppend.c b/src/backend/executor/nodeAppend.c index 357e10a..68f13f2 100644 --- a/src/backend/executor/nodeAppend.c +++ b/src/backend/executor/nodeAppend.c @@ -1016,43 +1016,51 @@ ExecAppendAsyncEventWait(AppendState *node) /* We should never be called when there are no valid async subplans. */ Assert(node->as_nasyncremain > 0); + Assert(node->as_eventset == NULL); node->as_eventset = CreateWaitEventSet(CurrentMemoryContext, nevents); - AddWaitEventToSet(node->as_eventset, WL_EXIT_ON_PM_DEATH, PGINVALID_SOCKET, - NULL, NULL); - - /* Give each waiting subplan a chance to add an event. */ - i = -1; - while ((i = bms_next_member(node->as_asyncplans, i)) >= 0) + PG_TRY(); { - AsyncRequest *areq = node->as_asyncrequests[i]; + AddWaitEventToSet(node->as_eventset, WL_EXIT_ON_PM_DEATH, PGINVALID_SOCKET, + NULL, NULL); - if (areq->callback_pending) - ExecAsyncConfigureWait(areq); - } + /* Give each waiting subplan a chance to add an event. */ + i = -1; + while ((i = bms_next_member(node->as_asyncplans, i)) >= 0) + { + AsyncRequest *areq = node->as_asyncrequests[i]; - /* - * No need for further processing if there are no configured events other - * than the postmaster death event. - */ - if (GetNumRegisteredWaitEvents(node->as_eventset) == 1) + if (areq->callback_pending) + ExecAsyncConfigureWait(areq); + } + + /* + * No need for further processing if there are no configured events + * other than the postmaster death event. + */ + if (GetNumRegisteredWaitEvents(node->as_eventset) == 1) + { + FreeWaitEventSet(node->as_eventset); + node->as_eventset = NULL; + return; + } + + /* Return at most EVENT_BUFFER_SIZE events in one call. */ + if (nevents > EVENT_BUFFER_SIZE) + nevents = EVENT_BUFFER_SIZE; + + /* + * If the timeout is -1, wait until at least one event occurs. If the + * timeout is 0, poll for events, but do not wait at all. + */ + noccurred = WaitEventSetWait(node->as_eventset, timeout, occurred_event, + nevents, WAIT_EVENT_APPEND_READY); + } + PG_FINALLY(); { FreeWaitEventSet(node->as_eventset); node->as_eventset = NULL; - return; } - - /* We wait on at most EVENT_BUFFER_SIZE events. */ - if (nevents > EVENT_BUFFER_SIZE) - nevents = EVENT_BUFFER_SIZE; - - /* - * If the timeout is -1, wait until at least one event occurs. If the - * timeout is 0, poll for events, but do not wait at all. - */ - noccurred = WaitEventSetWait(node->as_eventset, timeout, occurred_event, - nevents, WAIT_EVENT_APPEND_READY); - FreeWaitEventSet(node->as_eventset); - node->as_eventset = NULL; + PG_END_TRY(); if (noccurred == 0) return; diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 59a720d..34dd9a2 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -1162,6 +1162,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable) double dtuples; double dbuckets; int new_nbuckets; + uint32 max_buckets; /* * We probably also need a smaller bucket array. How many @@ -1174,9 +1175,17 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable) * array. */ dtuples = (old_batch0->ntuples * 2.0) / new_nbatch; + + /* + * We need to calculate the maximum number of buckets to + * stay within the MaxAllocSize boundary. Round the + * maximum number to the previous power of 2 given that + * later we round the number to the next power of 2. + */ + max_buckets = pg_prevpower2_32((uint32) + (MaxAllocSize / sizeof(dsa_pointer_atomic))); dbuckets = ceil(dtuples / NTUP_PER_BUCKET); - dbuckets = Min(dbuckets, - MaxAllocSize / sizeof(dsa_pointer_atomic)); + dbuckets = Min(dbuckets, max_buckets); new_nbuckets = (int) dbuckets; new_nbuckets = Max(new_nbuckets, 1024); new_nbuckets = pg_nextpower2_32(new_nbuckets); diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index 7f822ef..6fea82e 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -1404,6 +1404,7 @@ ExecDelete(ModifyTableContext *context, bool processReturning, bool changingPart, bool canSetTag, + TM_Result *tmresult, bool *tupleDeleted, TupleTableSlot **epqreturnslot) { @@ -1420,7 +1421,7 @@ ExecDelete(ModifyTableContext *context, * done if it says we are. */ if (!ExecDeletePrologue(context, resultRelInfo, tupleid, oldtuple, - epqreturnslot, NULL)) + epqreturnslot, tmresult)) return NULL; /* INSTEAD OF ROW DELETE Triggers */ @@ -1475,6 +1476,9 @@ ExecDelete(ModifyTableContext *context, ldelete:; result = ExecDeleteAct(context, resultRelInfo, tupleid, changingPart); + if (tmresult) + *tmresult = result; + switch (result) { case TM_SelfModified: @@ -1713,6 +1717,7 @@ ExecCrossPartitionUpdate(ModifyTableContext *context, TupleTableSlot *slot, bool canSetTag, UpdateContext *updateCxt, + TM_Result *tmresult, TupleTableSlot **retry_slot, TupleTableSlot **inserted_tuple, ResultRelInfo **insert_destrel) @@ -1776,7 +1781,7 @@ ExecCrossPartitionUpdate(ModifyTableContext *context, false, /* processReturning */ true, /* changingPart */ false, /* canSetTag */ - &tuple_deleted, &epqslot); + tmresult, &tuple_deleted, &epqslot); /* * For some reason if DELETE didn't happen (e.g. trigger prevented it, or @@ -1808,7 +1813,7 @@ ExecCrossPartitionUpdate(ModifyTableContext *context, * action entirely). */ if (context->relaction != NULL) - return false; + return *tmresult == TM_Ok; else if (TupIsNull(epqslot)) return true; else @@ -2013,6 +2018,7 @@ lreplace: if (ExecCrossPartitionUpdate(context, resultRelInfo, tupleid, oldtuple, slot, canSetTag, updateCxt, + &result, &retry_slot, &inserted_tuple, &insert_destrel)) @@ -2052,7 +2058,7 @@ lreplace: * here; instead let it handle that on its own rules. */ if (context->relaction != NULL) - return TM_Updated; + return result; /* * ExecCrossPartitionUpdate installed an updated version of the new @@ -2879,7 +2885,21 @@ lmerge_matched:; break; /* concurrent update/delete */ } result = ExecUpdateAct(context, resultRelInfo, tupleid, NULL, - newslot, false, &updateCxt); + newslot, canSetTag, &updateCxt); + + /* + * As in ExecUpdate(), if ExecUpdateAct() reports that a + * cross-partition update was done, then there's nothing else + * for us to do --- the UPDATE has been turned into a DELETE + * and an INSERT, and we must not perform any of the usual + * post-update tasks. + */ + if (updateCxt.crossPartUpdate) + { + mtstate->mt_merge_updated += 1; + return true; + } + if (result == TM_Ok && updateCxt.updated) { ExecUpdateEpilogue(context, &updateCxt, resultRelInfo, @@ -3808,7 +3828,7 @@ ExecModifyTable(PlanState *pstate) case CMD_DELETE: slot = ExecDelete(&context, resultRelInfo, tupleid, oldtuple, - true, false, node->canSetTag, NULL, NULL); + true, false, node->canSetTag, NULL, NULL, NULL); break; case CMD_MERGE: diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index a9f1ce7..a4b9ede 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -47,6 +47,8 @@ #include "utils/memutils.h" #include "utils/resowner_private.h" +#define LLVMJIT_LLVM_CONTEXT_REUSE_MAX 100 + /* Handle of a module emitted via ORC JIT */ typedef struct LLVMJitHandle { @@ -100,8 +102,15 @@ LLVMModuleRef llvm_types_module = NULL; static bool llvm_session_initialized = false; static size_t llvm_generation = 0; + +/* number of LLVMJitContexts that currently are in use */ +static size_t llvm_jit_context_in_use_count = 0; + +/* how many times has the current LLVMContextRef been used */ +static size_t llvm_llvm_context_reuse_count = 0; static const char *llvm_triple = NULL; static const char *llvm_layout = NULL; +static LLVMContextRef llvm_context; static LLVMTargetRef llvm_targetref; @@ -122,6 +131,8 @@ static void llvm_compile_module(LLVMJitContext *context); static void llvm_optimize_module(LLVMJitContext *context, LLVMModuleRef module); static void llvm_create_types(void); +static void llvm_set_target(void); +static void llvm_recreate_llvm_context(void); static uint64_t llvm_resolve_symbol(const char *name, void *ctx); #if LLVM_VERSION_MAJOR > 11 @@ -143,6 +154,63 @@ _PG_jit_provider_init(JitProviderCallbacks *cb) cb->compile_expr = llvm_compile_expr; } + +/* + * Every now and then create a new LLVMContextRef. Unfortunately, during every + * round of inlining, types may "leak" (they can still be found/used via the + * context, but new types will be created the next time in inlining is + * performed). To prevent that from slowly accumulating problematic amounts of + * memory, recreate the LLVMContextRef we use. We don't want to do so too + * often, as that implies some overhead (particularly re-loading the module + * summaries / modules is fairly expensive). A future TODO would be to make + * this more finegrained and only drop/recreate the LLVMContextRef when we know + * there has been inlining. If we can get the size of the context from LLVM + * then that might be a better way to determine when to drop/recreate rather + * then the usagecount heuristic currently employed. + */ +static void +llvm_recreate_llvm_context(void) +{ + if (!llvm_context) + elog(ERROR, "Trying to recreate a non-existing context"); + + /* + * We can only safely recreate the LLVM context if no other code is being + * JITed, otherwise we'd release the types in use for that. + */ + if (llvm_jit_context_in_use_count > 0) + { + llvm_llvm_context_reuse_count++; + return; + } + + if (llvm_llvm_context_reuse_count <= LLVMJIT_LLVM_CONTEXT_REUSE_MAX) + { + llvm_llvm_context_reuse_count++; + return; + } + + /* + * Need to reset the modules that the inlining code caches before + * disposing of the context. LLVM modules exist within a specific LLVM + * context, therefore disposing of the context before resetting the cache + * would lead to dangling pointers to modules. + */ + llvm_inline_reset_caches(); + + LLVMContextDispose(llvm_context); + llvm_context = LLVMContextCreate(); + llvm_llvm_context_reuse_count = 0; + + /* + * Re-build cached type information, so code generation code can rely on + * that information to be present (also prevents the variables to be + * dangling references). + */ + llvm_create_types(); +} + + /* * Create a context for JITing work. * @@ -159,6 +227,8 @@ llvm_create_context(int jitFlags) llvm_session_initialize(); + llvm_recreate_llvm_context(); + ResourceOwnerEnlargeJIT(CurrentResourceOwner); context = MemoryContextAllocZero(TopMemoryContext, @@ -169,6 +239,8 @@ llvm_create_context(int jitFlags) context->base.resowner = CurrentResourceOwner; ResourceOwnerRememberJIT(CurrentResourceOwner, PointerGetDatum(context)); + llvm_jit_context_in_use_count++; + return context; } @@ -178,9 +250,15 @@ llvm_create_context(int jitFlags) static void llvm_release_context(JitContext *context) { - LLVMJitContext *llvm_context = (LLVMJitContext *) context; + LLVMJitContext *llvm_jit_context = (LLVMJitContext *) context; ListCell *lc; + /* + * Consider as cleaned up even if we skip doing so below, that way we can + * verify the tracking is correct (see llvm_shutdown()). + */ + llvm_jit_context_in_use_count--; + /* * When this backend is exiting, don't clean up LLVM. As an error might * have occurred from within LLVM, we do not want to risk reentering. All @@ -191,13 +269,13 @@ llvm_release_context(JitContext *context) llvm_enter_fatal_on_oom(); - if (llvm_context->module) + if (llvm_jit_context->module) { - LLVMDisposeModule(llvm_context->module); - llvm_context->module = NULL; + LLVMDisposeModule(llvm_jit_context->module); + llvm_jit_context->module = NULL; } - foreach(lc, llvm_context->handles) + foreach(lc, llvm_jit_context->handles) { LLVMJitHandle *jit_handle = (LLVMJitHandle *) lfirst(lc); @@ -227,8 +305,8 @@ llvm_release_context(JitContext *context) pfree(jit_handle); } - list_free(llvm_context->handles); - llvm_context->handles = NIL; + list_free(llvm_jit_context->handles); + llvm_jit_context->handles = NIL; llvm_leave_fatal_on_oom(); } @@ -248,7 +326,7 @@ llvm_mutable_module(LLVMJitContext *context) { context->compiled = false; context->module_generation = llvm_generation++; - context->module = LLVMModuleCreateWithName("pg"); + context->module = LLVMModuleCreateWithNameInContext("pg", llvm_context); LLVMSetTarget(context->module, llvm_triple); LLVMSetDataLayout(context->module, llvm_layout); } @@ -832,6 +910,14 @@ llvm_session_initialize(void) LLVMInitializeNativeAsmPrinter(); LLVMInitializeNativeAsmParser(); + if (llvm_context == NULL) + { + llvm_context = LLVMContextCreate(); + + llvm_jit_context_in_use_count = 0; + llvm_llvm_context_reuse_count = 0; + } + /* * When targeting LLVM 15, turn off opaque pointers for the context we * build our code in. We don't need to do so for other contexts (e.g. @@ -851,6 +937,11 @@ llvm_session_initialize(void) */ llvm_create_types(); + /* + * Extract target information from loaded module. + */ + llvm_set_target(); + if (LLVMGetTargetFromTriple(llvm_triple, &llvm_targetref, &error) != 0) { elog(FATAL, "failed to query triple %s", error); @@ -946,6 +1037,10 @@ llvm_shutdown(int code, Datum arg) return; } + if (llvm_jit_context_in_use_count != 0) + elog(PANIC, "LLVMJitContext in use count not 0 at exit (is %zu)", + llvm_jit_context_in_use_count); + #if LLVM_VERSION_MAJOR > 11 { if (llvm_opt3_orc) @@ -1008,6 +1103,23 @@ load_return_type(LLVMModuleRef mod, const char *name) return typ; } +/* + * Load triple & layout from clang emitted file so we're guaranteed to be + * compatible. + */ +static void +llvm_set_target(void) +{ + if (!llvm_types_module) + elog(ERROR, "failed to extract target information, llvmjit_types.c not loaded"); + + if (llvm_triple == NULL) + llvm_triple = pstrdup(LLVMGetTarget(llvm_types_module)); + + if (llvm_layout == NULL) + llvm_layout = pstrdup(LLVMGetDataLayoutStr(llvm_types_module)); +} + /* * Load required information, types, function signatures from llvmjit_types.c * and make them available in global variables. @@ -1031,19 +1143,12 @@ llvm_create_types(void) } /* eagerly load contents, going to need it all */ - if (LLVMParseBitcode2(buf, &llvm_types_module)) + if (LLVMParseBitcodeInContext2(llvm_context, buf, &llvm_types_module)) { - elog(ERROR, "LLVMParseBitcode2 of %s failed", path); + elog(ERROR, "LLVMParseBitcodeInContext2 of %s failed", path); } LLVMDisposeMemoryBuffer(buf); - /* - * Load triple & layout from clang emitted file so we're guaranteed to be - * compatible. - */ - llvm_triple = pstrdup(LLVMGetTarget(llvm_types_module)); - llvm_layout = pstrdup(LLVMGetDataLayoutStr(llvm_types_module)); - TypeSizeT = llvm_pg_var_type("TypeSizeT"); TypeParamBool = load_return_type(llvm_types_module, "FunctionReturningBool"); TypeStorageBool = llvm_pg_var_type("TypeStorageBool"); diff --git a/src/backend/jit/llvm/llvmjit_deform.c b/src/backend/jit/llvm/llvmjit_deform.c index 88a2eec..489ef34 100644 --- a/src/backend/jit/llvm/llvmjit_deform.c +++ b/src/backend/jit/llvm/llvmjit_deform.c @@ -37,6 +37,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, char *funcname; LLVMModuleRef mod; + LLVMContextRef lc; LLVMBuilderRef b; LLVMTypeRef deform_sig; @@ -99,6 +100,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, return NULL; mod = llvm_mutable_module(context); + lc = LLVMGetModuleContext(mod); funcname = llvm_expand_funcname(context, "deform"); @@ -133,8 +135,8 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, param_types[0] = l_ptr(StructTupleTableSlot); - deform_sig = LLVMFunctionType(LLVMVoidType(), param_types, - lengthof(param_types), 0); + deform_sig = LLVMFunctionType(LLVMVoidTypeInContext(lc), + param_types, lengthof(param_types), 0); } v_deform_fn = LLVMAddFunction(mod, funcname, deform_sig); LLVMSetLinkage(v_deform_fn, LLVMInternalLinkage); @@ -142,17 +144,17 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, llvm_copy_attributes(AttributeTemplate, v_deform_fn); b_entry = - LLVMAppendBasicBlock(v_deform_fn, "entry"); + LLVMAppendBasicBlockInContext(lc, v_deform_fn, "entry"); b_adjust_unavail_cols = - LLVMAppendBasicBlock(v_deform_fn, "adjust_unavail_cols"); + LLVMAppendBasicBlockInContext(lc, v_deform_fn, "adjust_unavail_cols"); b_find_start = - LLVMAppendBasicBlock(v_deform_fn, "find_startblock"); + LLVMAppendBasicBlockInContext(lc, v_deform_fn, "find_startblock"); b_out = - LLVMAppendBasicBlock(v_deform_fn, "outblock"); + LLVMAppendBasicBlockInContext(lc, v_deform_fn, "outblock"); b_dead = - LLVMAppendBasicBlock(v_deform_fn, "deadblock"); + LLVMAppendBasicBlockInContext(lc, v_deform_fn, "deadblock"); - b = LLVMCreateBuilder(); + b = LLVMCreateBuilderInContext(lc); attcheckattnoblocks = palloc(sizeof(LLVMBasicBlockRef) * natts); attstartblocks = palloc(sizeof(LLVMBasicBlockRef) * natts); @@ -232,7 +234,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, v_tuplep, FIELDNO_HEAPTUPLEHEADERDATA_BITS, ""), - l_ptr(LLVMInt8Type()), + l_ptr(LLVMInt8TypeInContext(lc)), "t_bits"); v_infomask1 = l_load_struct_gep(b, @@ -250,14 +252,14 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, v_hasnulls = LLVMBuildICmp(b, LLVMIntNE, LLVMBuildAnd(b, - l_int16_const(HEAP_HASNULL), + l_int16_const(lc, HEAP_HASNULL), v_infomask1, ""), - l_int16_const(0), + l_int16_const(lc, 0), "hasnulls"); /* t_infomask2 & HEAP_NATTS_MASK */ v_maxatt = LLVMBuildAnd(b, - l_int16_const(HEAP_NATTS_MASK), + l_int16_const(lc, HEAP_NATTS_MASK), v_infomask2, "maxatt"); @@ -272,13 +274,13 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, v_tuplep, FIELDNO_HEAPTUPLEHEADERDATA_HOFF, ""), - LLVMInt32Type(), "t_hoff"); + LLVMInt32TypeInContext(lc), "t_hoff"); v_tupdata_base = l_gep(b, - LLVMInt8Type(), + LLVMInt8TypeInContext(lc), LLVMBuildBitCast(b, v_tuplep, - l_ptr(LLVMInt8Type()), + l_ptr(LLVMInt8TypeInContext(lc)), ""), &v_hoff, 1, "v_tupdata_base"); @@ -290,7 +292,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, { LLVMValueRef v_off_start; - v_off_start = l_load(b, LLVMInt32Type(), v_slotoffp, "v_slot_off"); + v_off_start = l_load(b, LLVMInt32TypeInContext(lc), v_slotoffp, "v_slot_off"); v_off_start = LLVMBuildZExt(b, v_off_start, TypeSizeT, ""); LLVMBuildStore(b, v_off_start, v_offp); } @@ -336,7 +338,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, LLVMBuildCondBr(b, LLVMBuildICmp(b, LLVMIntULT, v_maxatt, - l_int16_const(natts), + l_int16_const(lc, natts), ""), b_adjust_unavail_cols, b_find_start); @@ -345,8 +347,8 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, LLVMPositionBuilderAtEnd(b, b_adjust_unavail_cols); v_params[0] = v_slot; - v_params[1] = LLVMBuildZExt(b, v_maxatt, LLVMInt32Type(), ""); - v_params[2] = l_int32_const(natts); + v_params[1] = LLVMBuildZExt(b, v_maxatt, LLVMInt32TypeInContext(lc), ""); + v_params[2] = l_int32_const(lc, natts); f = llvm_pg_func(mod, "slot_getmissingattrs"); l_call(b, LLVMGetFunctionType(f), f, @@ -356,7 +358,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, LLVMPositionBuilderAtEnd(b, b_find_start); - v_nvalid = l_load(b, LLVMInt16Type(), v_nvalidp, ""); + v_nvalid = l_load(b, LLVMInt16TypeInContext(lc), v_nvalidp, ""); /* * Build switch to go from nvalid to the right startblock. Callers @@ -371,7 +373,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, for (attnum = 0; attnum < natts; attnum++) { - LLVMValueRef v_attno = l_int16_const(attnum); + LLVMValueRef v_attno = l_int16_const(lc, attnum); LLVMAddCase(v_switch, v_attno, attcheckattnoblocks[attnum]); } @@ -394,7 +396,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, Form_pg_attribute att = TupleDescAttr(desc, attnum); LLVMValueRef v_incby; int alignto; - LLVMValueRef l_attno = l_int16_const(attnum); + LLVMValueRef l_attno = l_int16_const(lc, attnum); LLVMValueRef v_attdatap; LLVMValueRef v_resultp; @@ -455,14 +457,14 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, else b_next = attcheckattnoblocks[attnum + 1]; - v_nullbyteno = l_int32_const(attnum >> 3); - v_nullbytemask = l_int8_const(1 << ((attnum) & 0x07)); - v_nullbyte = l_load_gep1(b, LLVMInt8Type(), v_bits, v_nullbyteno, "attnullbyte"); + v_nullbyteno = l_int32_const(lc, attnum >> 3); + v_nullbytemask = l_int8_const(lc, 1 << ((attnum) & 0x07)); + v_nullbyte = l_load_gep1(b, LLVMInt8TypeInContext(lc), v_bits, v_nullbyteno, "attnullbyte"); v_nullbit = LLVMBuildICmp(b, LLVMIntEQ, LLVMBuildAnd(b, v_nullbyte, v_nullbytemask, ""), - l_int8_const(0), + l_int8_const(lc, 0), "attisnull"); v_attisnull = LLVMBuildAnd(b, v_hasnulls, v_nullbit, ""); @@ -473,8 +475,8 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, /* store null-byte */ LLVMBuildStore(b, - l_int8_const(1), - l_gep(b, LLVMInt8Type(), v_tts_nulls, &l_attno, 1, "")); + l_int8_const(lc, 1), + l_gep(b, LLVMInt8TypeInContext(lc), v_tts_nulls, &l_attno, 1, "")); /* store zero datum */ LLVMBuildStore(b, l_sizet_const(0), @@ -540,10 +542,11 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, v_off = l_load(b, TypeSizeT, v_offp, ""); v_possible_padbyte = - l_load_gep1(b, LLVMInt8Type(), v_tupdata_base, v_off, "padbyte"); + l_load_gep1(b, LLVMInt8TypeInContext(lc), v_tupdata_base, + v_off, "padbyte"); v_ispad = LLVMBuildICmp(b, LLVMIntEQ, - v_possible_padbyte, l_int8_const(0), + v_possible_padbyte, l_int8_const(lc, 0), "ispadbyte"); LLVMBuildCondBr(b, v_ispad, attalignblocks[attnum], @@ -651,14 +654,14 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, LLVMValueRef v_off = l_load(b, TypeSizeT, v_offp, ""); v_attdatap = - l_gep(b, LLVMInt8Type(), v_tupdata_base, &v_off, 1, ""); + l_gep(b, LLVMInt8TypeInContext(lc), v_tupdata_base, &v_off, 1, ""); } /* compute address to store value at */ v_resultp = l_gep(b, TypeSizeT, v_tts_values, &l_attno, 1, ""); /* store null-byte (false) */ - LLVMBuildStore(b, l_int8_const(0), + LLVMBuildStore(b, l_int8_const(lc, 0), l_gep(b, TypeStorageBool, v_tts_nulls, &l_attno, 1, "")); /* @@ -668,7 +671,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, if (att->attbyval) { LLVMValueRef v_tmp_loaddata; - LLVMTypeRef vartype = LLVMIntType(att->attlen * 8); + LLVMTypeRef vartype = LLVMIntTypeInContext(lc, att->attlen * 8); LLVMTypeRef vartypep = LLVMPointerType(vartype, 0); v_tmp_loaddata = @@ -760,11 +763,11 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, LLVMValueRef v_off = l_load(b, TypeSizeT, v_offp, ""); LLVMValueRef v_flags; - LLVMBuildStore(b, l_int16_const(natts), v_nvalidp); - v_off = LLVMBuildTrunc(b, v_off, LLVMInt32Type(), ""); + LLVMBuildStore(b, l_int16_const(lc, natts), v_nvalidp); + v_off = LLVMBuildTrunc(b, v_off, LLVMInt32TypeInContext(lc), ""); LLVMBuildStore(b, v_off, v_slotoffp); - v_flags = l_load(b, LLVMInt16Type(), v_flagsp, "tts_flags"); - v_flags = LLVMBuildOr(b, v_flags, l_int16_const(TTS_FLAG_SLOW), ""); + v_flags = l_load(b, LLVMInt16TypeInContext(lc), v_flagsp, "tts_flags"); + v_flags = LLVMBuildOr(b, v_flags, l_int16_const(lc, TTS_FLAG_SLOW), ""); LLVMBuildStore(b, v_flags, v_flagsp); LLVMBuildRetVoid(b); } diff --git a/src/backend/jit/llvm/llvmjit_expr.c b/src/backend/jit/llvm/llvmjit_expr.c index 49b19c9..95836af 100644 --- a/src/backend/jit/llvm/llvmjit_expr.c +++ b/src/backend/jit/llvm/llvmjit_expr.c @@ -84,6 +84,7 @@ llvm_compile_expr(ExprState *state) LLVMBuilderRef b; LLVMModuleRef mod; + LLVMContextRef lc; LLVMValueRef eval_fn; LLVMBasicBlockRef entry; LLVMBasicBlockRef *opblocks; @@ -143,8 +144,9 @@ llvm_compile_expr(ExprState *state) INSTR_TIME_SET_CURRENT(starttime); mod = llvm_mutable_module(context); + lc = LLVMGetModuleContext(mod); - b = LLVMCreateBuilder(); + b = LLVMCreateBuilderInContext(lc); funcname = llvm_expand_funcname(context, "evalexpr"); @@ -155,7 +157,7 @@ llvm_compile_expr(ExprState *state) LLVMSetVisibility(eval_fn, LLVMDefaultVisibility); llvm_copy_attributes(AttributeTemplate, eval_fn); - entry = LLVMAppendBasicBlock(eval_fn, "entry"); + entry = LLVMAppendBasicBlockInContext(lc, eval_fn, "entry"); /* build state */ v_state = LLVMGetParam(eval_fn, 0); @@ -337,7 +339,7 @@ llvm_compile_expr(ExprState *state) ""); LLVMBuildCondBr(b, LLVMBuildICmp(b, LLVMIntUGE, v_nvalid, - l_int16_const(op->d.fetch.last_var), + l_int16_const(lc, op->d.fetch.last_var), ""), opblocks[opno + 1], b_fetch); @@ -373,7 +375,7 @@ llvm_compile_expr(ExprState *state) LLVMValueRef params[2]; params[0] = v_slot; - params[1] = l_int32_const(op->d.fetch.last_var); + params[1] = l_int32_const(lc, op->d.fetch.last_var); l_call(b, llvm_pg_var_func_type("slot_getsomeattrs_int"), @@ -411,7 +413,7 @@ llvm_compile_expr(ExprState *state) v_nulls = v_scannulls; } - v_attnum = l_int32_const(op->d.var.attnum); + v_attnum = l_int32_const(lc, op->d.var.attnum); value = l_load_gep1(b, TypeSizeT, v_values, v_attnum, ""); isnull = l_load_gep1(b, TypeStorageBool, v_nulls, v_attnum, ""); LLVMBuildStore(b, value, v_resvaluep); @@ -477,12 +479,12 @@ llvm_compile_expr(ExprState *state) } /* load data */ - v_attnum = l_int32_const(op->d.assign_var.attnum); + v_attnum = l_int32_const(lc, op->d.assign_var.attnum); v_value = l_load_gep1(b, TypeSizeT, v_values, v_attnum, ""); v_isnull = l_load_gep1(b, TypeStorageBool, v_nulls, v_attnum, ""); /* compute addresses of targets */ - v_resultnum = l_int32_const(op->d.assign_var.resultnum); + v_resultnum = l_int32_const(lc, op->d.assign_var.resultnum); v_rvaluep = l_gep(b, TypeSizeT, v_resultvalues, @@ -515,7 +517,7 @@ llvm_compile_expr(ExprState *state) v_isnull = l_load(b, TypeStorageBool, v_tmpisnullp, ""); /* compute addresses of targets */ - v_resultnum = l_int32_const(resultnum); + v_resultnum = l_int32_const(lc, resultnum); v_rvaluep = l_gep(b, TypeSizeT, v_resultvalues, &v_resultnum, 1, ""); v_risnullp = @@ -1749,7 +1751,7 @@ llvm_compile_expr(ExprState *state) v_cmpresult = LLVMBuildTrunc(b, l_load(b, TypeSizeT, v_resvaluep, ""), - LLVMInt32Type(), ""); + LLVMInt32TypeInContext(lc), ""); switch (rctype) { @@ -1775,7 +1777,7 @@ llvm_compile_expr(ExprState *state) v_result = LLVMBuildICmp(b, predicate, v_cmpresult, - l_int32_const(0), + l_int32_const(lc, 0), ""); v_result = LLVMBuildZExt(b, v_result, TypeSizeT, ""); @@ -1910,7 +1912,7 @@ llvm_compile_expr(ExprState *state) LLVMValueRef value, isnull; - v_aggno = l_int32_const(op->d.aggref.aggno); + v_aggno = l_int32_const(lc, op->d.aggref.aggno); /* load agg value / null */ value = l_load_gep1(b, TypeSizeT, v_aggvalues, v_aggno, "aggvalue"); @@ -1944,8 +1946,8 @@ llvm_compile_expr(ExprState *state) * expression). So load it from memory each time round. */ v_wfuncnop = l_ptr_const(&wfunc->wfuncno, - l_ptr(LLVMInt32Type())); - v_wfuncno = l_load(b, LLVMInt32Type(), v_wfuncnop, "v_wfuncno"); + l_ptr(LLVMInt32TypeInContext(lc))); + v_wfuncno = l_load(b, LLVMInt32TypeInContext(lc), v_wfuncnop, "v_wfuncno"); /* load window func value / null */ value = l_load_gep1(b, TypeSizeT, v_aggvalues, v_wfuncno, @@ -2052,7 +2054,7 @@ llvm_compile_expr(ExprState *state) /* strict function, check for NULL args */ for (int argno = 0; argno < nargs; argno++) { - LLVMValueRef v_argno = l_int32_const(argno); + LLVMValueRef v_argno = l_int32_const(lc, argno); LLVMValueRef v_argisnull; LLVMBasicBlockRef b_argnotnull; @@ -2111,7 +2113,7 @@ llvm_compile_expr(ExprState *state) FIELDNO_AGGSTATE_ALL_PERGROUPS, "aggstate.all_pergroups"); - v_setoff = l_int32_const(op->d.agg_plain_pergroup_nullcheck.setoff); + v_setoff = l_int32_const(lc, op->d.agg_plain_pergroup_nullcheck.setoff); v_pergroup_allaggs = l_load_gep1(b, l_ptr(StructAggStatePerGroupData), v_allpergroupsp, v_setoff, ""); @@ -2183,8 +2185,8 @@ llvm_compile_expr(ExprState *state) v_aggstatep, FIELDNO_AGGSTATE_ALL_PERGROUPS, "aggstate.all_pergroups"); - v_setoff = l_int32_const(op->d.agg_trans.setoff); - v_transno = l_int32_const(op->d.agg_trans.transno); + v_setoff = l_int32_const(lc, op->d.agg_trans.setoff); + v_transno = l_int32_const(lc, op->d.agg_trans.transno); v_pergroupp = l_gep(b, StructAggStatePerGroupData, @@ -2297,7 +2299,7 @@ llvm_compile_expr(ExprState *state) /* set aggstate globals */ LLVMBuildStore(b, v_aggcontext, v_curaggcontext); - LLVMBuildStore(b, l_int32_const(op->d.agg_trans.setno), + LLVMBuildStore(b, l_int32_const(lc, op->d.agg_trans.setno), v_current_setp); LLVMBuildStore(b, v_pertransp, v_current_pertransp); @@ -2493,11 +2495,14 @@ BuildV1Call(LLVMJitContext *context, LLVMBuilderRef b, LLVMModuleRef mod, FunctionCallInfo fcinfo, LLVMValueRef *v_fcinfo_isnull) { + LLVMContextRef lc; LLVMValueRef v_fn; LLVMValueRef v_fcinfo_isnullp; LLVMValueRef v_retval; LLVMValueRef v_fcinfo; + lc = LLVMGetModuleContext(mod); + v_fn = llvm_function_reference(context, b, mod, fcinfo); v_fcinfo = l_ptr_const(fcinfo, l_ptr(StructFunctionCallInfoData)); @@ -2521,12 +2526,12 @@ BuildV1Call(LLVMJitContext *context, LLVMBuilderRef b, LLVMValueRef v_lifetime = create_LifetimeEnd(mod); LLVMValueRef params[2]; - params[0] = l_int64_const(sizeof(NullableDatum) * fcinfo->nargs); - params[1] = l_ptr_const(fcinfo->args, l_ptr(LLVMInt8Type())); + params[0] = l_int64_const(lc, sizeof(NullableDatum) * fcinfo->nargs); + params[1] = l_ptr_const(fcinfo->args, l_ptr(LLVMInt8TypeInContext(lc))); l_call(b, LLVMGetFunctionType(v_lifetime), v_lifetime, params, lengthof(params), ""); - params[0] = l_int64_const(sizeof(fcinfo->isnull)); - params[1] = l_ptr_const(&fcinfo->isnull, l_ptr(LLVMInt8Type())); + params[0] = l_int64_const(lc, sizeof(fcinfo->isnull)); + params[1] = l_ptr_const(&fcinfo->isnull, l_ptr(LLVMInt8TypeInContext(lc))); l_call(b, LLVMGetFunctionType(v_lifetime), v_lifetime, params, lengthof(params), ""); } @@ -2572,6 +2577,7 @@ create_LifetimeEnd(LLVMModuleRef mod) LLVMTypeRef sig; LLVMValueRef fn; LLVMTypeRef param_types[2]; + LLVMContextRef lc; /* LLVM 5+ has a variadic pointer argument */ #if LLVM_VERSION_MAJOR < 5 @@ -2584,12 +2590,12 @@ create_LifetimeEnd(LLVMModuleRef mod) if (fn) return fn; - param_types[0] = LLVMInt64Type(); - param_types[1] = l_ptr(LLVMInt8Type()); + lc = LLVMGetModuleContext(mod); + param_types[0] = LLVMInt64TypeInContext(lc); + param_types[1] = l_ptr(LLVMInt8TypeInContext(lc)); - sig = LLVMFunctionType(LLVMVoidType(), - param_types, lengthof(param_types), - false); + sig = LLVMFunctionType(LLVMVoidTypeInContext(lc), param_types, + lengthof(param_types), false); fn = LLVMAddFunction(mod, nm, sig); LLVMSetFunctionCallConv(fn, LLVMCCallConv); diff --git a/src/backend/jit/llvm/llvmjit_inline.cpp b/src/backend/jit/llvm/llvmjit_inline.cpp index 0e4ddc5..b3382a7 100644 --- a/src/backend/jit/llvm/llvmjit_inline.cpp +++ b/src/backend/jit/llvm/llvmjit_inline.cpp @@ -114,12 +114,12 @@ typedef llvm::StringMap > SummaryCache llvm::ManagedStatic summary_cache; -static std::unique_ptr llvm_build_inline_plan(llvm::Module *mod); +static std::unique_ptr llvm_build_inline_plan(LLVMContextRef lc, llvm::Module *mod); static void llvm_execute_inline_plan(llvm::Module *mod, ImportMapTy *globalsToInline); -static llvm::Module* load_module_cached(llvm::StringRef modPath); -static std::unique_ptr load_module(llvm::StringRef Identifier); +static llvm::Module* load_module_cached(LLVMContextRef c, llvm::StringRef modPath); +static std::unique_ptr load_module(LLVMContextRef c, llvm::StringRef Identifier); static std::unique_ptr llvm_load_summary(llvm::StringRef path); @@ -152,6 +152,18 @@ summaries_for_guid(const InlineSearchPath& path, llvm::GlobalValue::GUID guid); #define ilog(...) (void) 0 #endif +/* + * Reset inlining related state. This needs to be called before the currently + * used LLVMContextRef is disposed (and a new one create), otherwise we would + * have dangling references to deleted modules. + */ +void +llvm_inline_reset_caches(void) +{ + module_cache->clear(); + summary_cache->clear(); +} + /* * Perform inlining of external function references in M based on a simple * cost based analysis. @@ -159,9 +171,10 @@ summaries_for_guid(const InlineSearchPath& path, llvm::GlobalValue::GUID guid); void llvm_inline(LLVMModuleRef M) { + LLVMContextRef lc = LLVMGetModuleContext(M); llvm::Module *mod = llvm::unwrap(M); - std::unique_ptr globalsToInline = llvm_build_inline_plan(mod); + std::unique_ptr globalsToInline = llvm_build_inline_plan(lc, mod); if (!globalsToInline) return; llvm_execute_inline_plan(mod, globalsToInline.get()); @@ -172,7 +185,7 @@ llvm_inline(LLVMModuleRef M) * mod. */ static std::unique_ptr -llvm_build_inline_plan(llvm::Module *mod) +llvm_build_inline_plan(LLVMContextRef lc, llvm::Module *mod) { std::unique_ptr globalsToInline(new ImportMapTy()); FunctionInlineStates functionStates; @@ -271,7 +284,7 @@ llvm_build_inline_plan(llvm::Module *mod) continue; } - defMod = load_module_cached(modPath); + defMod = load_module_cached(lc, modPath); if (defMod->materializeMetadata()) elog(FATAL, "failed to materialize metadata"); @@ -466,20 +479,20 @@ llvm_execute_inline_plan(llvm::Module *mod, ImportMapTy *globalsToInline) * the cache state would get corrupted. */ static llvm::Module* -load_module_cached(llvm::StringRef modPath) +load_module_cached(LLVMContextRef lc, llvm::StringRef modPath) { auto it = module_cache->find(modPath); if (it == module_cache->end()) { it = module_cache->insert( - std::make_pair(modPath, load_module(modPath))).first; + std::make_pair(modPath, load_module(lc, modPath))).first; } return it->second.get(); } static std::unique_ptr -load_module(llvm::StringRef Identifier) +load_module(LLVMContextRef lc, llvm::StringRef Identifier) { LLVMMemoryBufferRef buf; LLVMModuleRef mod; @@ -491,7 +504,7 @@ load_module(llvm::StringRef Identifier) if (LLVMCreateMemoryBufferWithContentsOfFile(path, &buf, &msg)) elog(FATAL, "failed to open bitcode file \"%s\": %s", path, msg); - if (LLVMGetBitcodeModuleInContext2(LLVMGetGlobalContext(), buf, &mod)) + if (LLVMGetBitcodeModuleInContext2(lc, buf, &mod)) elog(FATAL, "failed to parse bitcode in file \"%s\"", path); /* @@ -808,7 +821,10 @@ static void add_module_to_inline_search_path(InlineSearchPath& searchpath, llvm::StringRef modpath) { /* only extension in libdir are candidates for inlining for now */ - if (!modpath.startswith("$libdir/")) +#if LLVM_VERSION_MAJOR < 16 +#define starts_with startswith +#endif + if (!modpath.starts_with("$libdir/")) return; /* if there's no match, attempt to load */ diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index efc53f3..235152e 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -850,15 +850,13 @@ CheckPWChallengeAuth(Port *port, const char **logdetail) if (shadow_pass) pfree(shadow_pass); - - /* - * If get_role_password() returned error, return error, even if the - * authentication succeeded. - */ - if (!shadow_pass) + else { + /* + * If get_role_password() returned error, authentication better not + * have succeeded. + */ Assert(auth_result != STATUS_OK); - return STATUS_ERROR; } if (auth_result == STATUS_OK) diff --git a/src/backend/libpq/be-secure-gssapi.c b/src/backend/libpq/be-secure-gssapi.c index 2844c5a..d3337a3 100644 --- a/src/backend/libpq/be-secure-gssapi.c +++ b/src/backend/libpq/be-secure-gssapi.c @@ -60,8 +60,8 @@ static char *PqGSSSendBuffer; /* Encrypted data waiting to be sent */ static int PqGSSSendLength; /* End of data available in PqGSSSendBuffer */ static int PqGSSSendNext; /* Next index to send a byte from * PqGSSSendBuffer */ -static int PqGSSSendConsumed; /* Number of *unencrypted* bytes consumed for - * current contents of PqGSSSendBuffer */ +static int PqGSSSendConsumed; /* Number of source bytes encrypted but not + * yet reported as sent */ static char *PqGSSRecvBuffer; /* Received, encrypted data */ static int PqGSSRecvLength; /* End of data available in PqGSSRecvBuffer */ @@ -83,8 +83,8 @@ static uint32 PqGSSMaxPktSize; /* Maximum size we can encrypt and fit the * * On success, returns the number of data bytes consumed (possibly less than * len). On failure, returns -1 with errno set appropriately. For retryable - * errors, caller should call again (passing the same data) once the socket - * is ready. + * errors, caller should call again (passing the same or more data) once the + * socket is ready. * * Dealing with fatal errors here is a bit tricky: we can't invoke elog(FATAL) * since it would try to write to the client, probably resulting in infinite @@ -98,19 +98,25 @@ be_gssapi_write(Port *port, void *ptr, size_t len) minor; gss_buffer_desc input, output; - size_t bytes_sent = 0; size_t bytes_to_encrypt; size_t bytes_encrypted; gss_ctx_id_t gctx = port->gss->ctx; /* - * When we get a failure, we must not tell the caller we have successfully - * transmitted everything, else it won't retry. Hence a "success" - * (positive) return value must only count source bytes corresponding to - * fully-transmitted encrypted packets. The amount of source data - * corresponding to the current partly-transmitted packet is remembered in + * When we get a retryable failure, we must not tell the caller we have + * successfully transmitted everything, else it won't retry. For + * simplicity, we claim we haven't transmitted anything until we have + * successfully transmitted all "len" bytes. Between calls, the amount of + * the current input data that's already been encrypted and placed into + * PqGSSSendBuffer (and perhaps transmitted) is remembered in * PqGSSSendConsumed. On a retry, the caller *must* be sending that data * again, so if it offers a len less than that, something is wrong. + * + * Note: it may seem attractive to report partial write completion once + * we've successfully sent any encrypted packets. However, that can cause + * problems for callers; notably, pqPutMsgEnd's heuristic to send only + * full 8K blocks interacts badly with such a hack. We won't save much, + * typically, by letting callers discard data early, so don't risk it. */ if (len < PqGSSSendConsumed) { @@ -118,6 +124,7 @@ be_gssapi_write(Port *port, void *ptr, size_t len) errno = ECONNRESET; return -1; } + /* Discount whatever source data we already encrypted. */ bytes_to_encrypt = len - PqGSSSendConsumed; bytes_encrypted = PqGSSSendConsumed; @@ -146,33 +153,20 @@ be_gssapi_write(Port *port, void *ptr, size_t len) ret = secure_raw_write(port, PqGSSSendBuffer + PqGSSSendNext, amount); if (ret <= 0) - { - /* - * Report any previously-sent data; if there was none, reflect - * the secure_raw_write result up to our caller. When there - * was some, we're effectively assuming that any interesting - * failure condition will recur on the next try. - */ - if (bytes_sent) - return bytes_sent; return ret; - } /* * Check if this was a partial write, and if so, move forward that * far in our buffer and try again. */ - if (ret != amount) + if (ret < amount) { PqGSSSendNext += ret; continue; } - /* We've successfully sent whatever data was in that packet. */ - bytes_sent += PqGSSSendConsumed; - - /* All encrypted data was sent, our buffer is empty now. */ - PqGSSSendLength = PqGSSSendNext = PqGSSSendConsumed = 0; + /* We've successfully sent whatever data was in the buffer. */ + PqGSSSendLength = PqGSSSendNext = 0; } /* @@ -196,7 +190,10 @@ be_gssapi_write(Port *port, void *ptr, size_t len) output.value = NULL; output.length = 0; - /* Create the next encrypted packet */ + /* + * Create the next encrypted packet. Any failure here is considered a + * hard failure, so we return -1 even if some data has been sent. + */ major = gss_wrap(&minor, gctx, 1, GSS_C_QOP_DEFAULT, &input, &conf_state, &output); if (major != GSS_S_COMPLETE) @@ -239,10 +236,13 @@ be_gssapi_write(Port *port, void *ptr, size_t len) } /* If we get here, our counters should all match up. */ - Assert(bytes_sent == len); - Assert(bytes_sent == bytes_encrypted); + Assert(len == PqGSSSendConsumed); + Assert(len == bytes_encrypted); + + /* We're reporting all the data as sent, so reset PqGSSSendConsumed. */ + PqGSSSendConsumed = 0; - return bytes_sent; + return bytes_encrypted; } /* diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c index f5c5ed2..ed13e8b 100644 --- a/src/backend/libpq/be-secure-openssl.c +++ b/src/backend/libpq/be-secure-openssl.c @@ -457,6 +457,7 @@ aloop: * per-thread error queue following another call to an OpenSSL I/O * routine. */ + errno = 0; ERR_clear_error(); r = SSL_accept(port->ssl); if (r <= 0) @@ -493,7 +494,7 @@ aloop: WAIT_EVENT_SSL_OPEN_SERVER); goto aloop; case SSL_ERROR_SYSCALL: - if (r < 0) + if (r < 0 && errno != 0) ereport(COMMERROR, (errcode_for_socket_access(), errmsg("could not accept SSL connection: %m"))); @@ -727,7 +728,7 @@ be_tls_read(Port *port, void *ptr, size_t len, int *waitfor) break; case SSL_ERROR_SYSCALL: /* leave it to caller to ereport the value of errno */ - if (n != -1) + if (n != -1 || errno == 0) { errno = ECONNRESET; n = -1; @@ -785,8 +786,14 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor) n = -1; break; case SSL_ERROR_SYSCALL: - /* leave it to caller to ereport the value of errno */ - if (n != -1) + + /* + * Leave it to caller to ereport the value of errno. However, if + * errno is still zero then assume it's a read EOF situation, and + * report ECONNRESET. (This seems possible because SSL_write can + * also do reads.) + */ + if (n != -1 || errno == 0) { errno = ECONNRESET; n = -1; @@ -839,11 +846,6 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor) * to retry; do we need to adopt their logic for that? */ -#ifndef HAVE_BIO_GET_DATA -#define BIO_get_data(bio) (bio->ptr) -#define BIO_set_data(bio, data) (bio->ptr = data) -#endif - static BIO_METHOD *my_bio_methods = NULL; static int @@ -853,7 +855,7 @@ my_sock_read(BIO *h, char *buf, int size) if (buf != NULL) { - res = secure_raw_read(((Port *) BIO_get_data(h)), buf, size); + res = secure_raw_read(((Port *) BIO_get_app_data(h)), buf, size); BIO_clear_retry_flags(h); if (res <= 0) { @@ -873,7 +875,7 @@ my_sock_write(BIO *h, const char *buf, int size) { int res = 0; - res = secure_raw_write(((Port *) BIO_get_data(h)), buf, size); + res = secure_raw_write(((Port *) BIO_get_app_data(h)), buf, size); BIO_clear_retry_flags(h); if (res <= 0) { @@ -949,7 +951,7 @@ my_SSL_set_fd(Port *port, int fd) SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); goto err; } - BIO_set_data(bio, port); + BIO_set_app_data(bio, port); BIO_set_fd(bio, fd, BIO_NOCLOSE); SSL_set_bio(port->ssl, bio, bio); diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 75392a8..bb9fa77 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -954,6 +954,8 @@ pq_recvbuf(void) { int r; + errno = 0; + r = secure_read(MyProcPort, PqRecvBuffer + PqRecvLength, PQ_RECV_BUFFER_SIZE - PqRecvLength); @@ -966,10 +968,13 @@ pq_recvbuf(void) * Careful: an ereport() that tries to write to the client would * cause recursion to here, leading to stack overflow and core * dump! This message must go *only* to the postmaster log. + * + * If errno is zero, assume it's EOF and let the caller complain. */ - ereport(COMMERROR, - (errcode_for_socket_access(), - errmsg("could not receive data from client: %m"))); + if (errno != 0) + ereport(COMMERROR, + (errcode_for_socket_access(), + errmsg("could not receive data from client: %m"))); return EOF; } if (r == 0) @@ -1046,6 +1051,8 @@ pq_getbyte_if_available(unsigned char *c) /* Put the socket into non-blocking mode */ socket_set_nonblocking(true); + errno = 0; + r = secure_read(MyProcPort, c, 1); if (r < 0) { @@ -1062,10 +1069,13 @@ pq_getbyte_if_available(unsigned char *c) * Careful: an ereport() that tries to write to the client would * cause recursion to here, leading to stack overflow and core * dump! This message must go *only* to the postmaster log. + * + * If errno is zero, assume it's EOF and let the caller complain. */ - ereport(COMMERROR, - (errcode_for_socket_access(), - errmsg("could not receive data from client: %m"))); + if (errno != 0) + ereport(COMMERROR, + (errcode_for_socket_access(), + errmsg("could not receive data from client: %m"))); r = EOF; } } diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index a7080f5..675041f 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -2180,6 +2180,8 @@ expression_tree_walker(Node *node, return true; if (walker(wc->endOffset, context)) return true; + if (walker(wc->runCondition, context)) + return true; } break; case T_CTECycleClause: @@ -2457,6 +2459,8 @@ query_tree_walker(Query *query, return true; if (walker(wc->endOffset, context)) return true; + if (walker(wc->runCondition, context)) + return true; } } @@ -3094,6 +3098,7 @@ expression_tree_mutator(Node *node, MUTATE(newnode->orderClause, wc->orderClause, List *); MUTATE(newnode->startOffset, wc->startOffset, Node *); MUTATE(newnode->endOffset, wc->endOffset, Node *); + MUTATE(newnode->runCondition, wc->runCondition, List *); return (Node *) newnode; } break; @@ -3423,6 +3428,7 @@ query_tree_mutator(Query *query, FLATCOPY(newnode, wc, WindowClause); MUTATE(newnode->startOffset, wc->startOffset, Node *); MUTATE(newnode->endOffset, wc->endOffset, Node *); + MUTATE(newnode->runCondition, wc->runCondition, List *); resultlist = lappend(resultlist, (Node *) newnode); } diff --git a/src/backend/optimizer/prep/prepjointree.c b/src/backend/optimizer/prep/prepjointree.c index 7f4bb7b..ea05763 100644 --- a/src/backend/optimizer/prep/prepjointree.c +++ b/src/backend/optimizer/prep/prepjointree.c @@ -2471,8 +2471,13 @@ pullup_replace_vars_callback(Var *var, else if (newnode && IsA(newnode, PlaceHolderVar) && ((PlaceHolderVar *) newnode)->phlevelsup == 0) { - /* No need to wrap a PlaceHolderVar with another one, either */ - wrap = false; + /* The same rules apply for a PlaceHolderVar */ + if (rcon->target_rte->lateral && + !bms_is_subset(((PlaceHolderVar *) newnode)->phrels, + rcon->relids)) + wrap = true; + else + wrap = false; } else if (rcon->wrap_non_vars) { diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index f2216f5..e1cedd9 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -357,6 +357,11 @@ contain_subplans_walker(Node *node, void *context) * mistakenly think that something like "WHERE random() < 0.5" can be treated * as a constant qualification. * + * This will give the right answer only for clauses that have been put + * through expression preprocessing. Callers outside the planner typically + * should use contain_mutable_functions_after_planning() instead, for the + * reasons given there. + * * We will recursively look into Query nodes (i.e., SubLink sub-selects) * but not into SubPlans. See comments for contain_volatile_functions(). */ @@ -416,6 +421,34 @@ contain_mutable_functions_walker(Node *node, void *context) context); } +/* + * contain_mutable_functions_after_planning + * Test whether given expression contains mutable functions. + * + * This is a wrapper for contain_mutable_functions() that is safe to use from + * outside the planner. The difference is that it first runs the expression + * through expression_planner(). There are two key reasons why we need that: + * + * First, function default arguments will get inserted, which may affect + * volatility (consider "default now()"). + * + * Second, inline-able functions will get inlined, which may allow us to + * conclude that the function is really less volatile than it's marked. + * As an example, polymorphic functions must be marked with the most volatile + * behavior that they have for any input type, but once we inline the + * function we may be able to conclude that it's not so volatile for the + * particular input type we're dealing with. + */ +bool +contain_mutable_functions_after_planning(Expr *expr) +{ + /* We assume here that expression_planner() won't scribble on its input */ + expr = expression_planner(expr); + + /* Now we can search for non-immutable functions */ + return contain_mutable_functions((Node *) expr); +} + /***************************************************************************** * Check clauses for volatile functions @@ -429,6 +462,11 @@ contain_mutable_functions_walker(Node *node, void *context) * volatile function) is found. This test prevents, for example, * invalid conversions of volatile expressions into indexscan quals. * + * This will give the right answer only for clauses that have been put + * through expression preprocessing. Callers outside the planner typically + * should use contain_volatile_functions_after_planning() instead, for the + * reasons given there. + * * We will recursively look into Query nodes (i.e., SubLink sub-selects) * but not into SubPlans. This is a bit odd, but intentional. If we are * looking at a SubLink, we are probably deciding whether a query tree @@ -552,6 +590,34 @@ contain_volatile_functions_walker(Node *node, void *context) context); } +/* + * contain_volatile_functions_after_planning + * Test whether given expression contains volatile functions. + * + * This is a wrapper for contain_volatile_functions() that is safe to use from + * outside the planner. The difference is that it first runs the expression + * through expression_planner(). There are two key reasons why we need that: + * + * First, function default arguments will get inserted, which may affect + * volatility (consider "default random()"). + * + * Second, inline-able functions will get inlined, which may allow us to + * conclude that the function is really less volatile than it's marked. + * As an example, polymorphic functions must be marked with the most volatile + * behavior that they have for any input type, but once we inline the + * function we may be able to conclude that it's not so volatile for the + * particular input type we're dealing with. + */ +bool +contain_volatile_functions_after_planning(Expr *expr) +{ + /* We assume here that expression_planner() won't scribble on its input */ + expr = expression_planner(expr); + + /* Now we can search for volatile functions */ + return contain_volatile_functions((Node *) expr); +} + /* * Special purpose version of contain_volatile_functions() for use in COPY: * ignore nextval(), but treat all other functions normally. diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 33affaf..46fd29b 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -26,6 +26,7 @@ #include "optimizer/optimizer.h" #include "optimizer/pathnode.h" #include "optimizer/paths.h" +#include "optimizer/placeholder.h" #include "optimizer/planmain.h" #include "optimizer/prep.h" #include "optimizer/restrictinfo.h" @@ -56,6 +57,10 @@ static int append_startup_cost_compare(const ListCell *a, const ListCell *b); static List *reparameterize_pathlist_by_child(PlannerInfo *root, List *pathlist, RelOptInfo *child_rel); +static bool contain_references_to(PlannerInfo *root, Node *clause, + Relids relids); +static bool ris_contain_references_to(PlannerInfo *root, List *rinfos, + Relids relids); /***************************************************************************** @@ -4052,6 +4057,40 @@ do { \ switch (nodeTag(path)) { case T_Path: + + /* + * If the path's restriction clauses contain lateral references to + * the other relation, we can't reparameterize, because we must + * not change the RelOptInfo's contents here. (Doing so would + * break things if we end up using a non-partitionwise join.) + */ + if (ris_contain_references_to(root, + path->parent->baserestrictinfo, + child_rel->top_parent_relids)) + return NULL; + + /* + * If it's a SampleScan with tablesample parameters referencing + * the other relation, we can't reparameterize, because we must + * not change the RTE's contents here. (Doing so would break + * things if we end up using a non-partitionwise join.) + */ + if (path->pathtype == T_SampleScan) + { + Index scan_relid = path->parent->relid; + RangeTblEntry *rte; + + /* it should be a base rel with a tablesample clause... */ + Assert(scan_relid > 0); + rte = planner_rt_fetch(scan_relid, root); + Assert(rte->rtekind == RTE_RELATION); + Assert(rte->tablesample != NULL); + + if (contain_references_to(root, (Node *) rte->tablesample, + child_rel->top_parent_relids)) + return NULL; + } + FLAT_COPY_PATH(new_path, path, Path); break; @@ -4059,6 +4098,18 @@ do { \ { IndexPath *ipath; + /* + * If the path's restriction clauses contain lateral + * references to the other relation, we can't reparameterize, + * because we must not change the IndexOptInfo's contents + * here. (Doing so would break things if we end up using a + * non-partitionwise join.) + */ + if (ris_contain_references_to(root, + path->parent->baserestrictinfo, + child_rel->top_parent_relids)) + return NULL; + FLAT_COPY_PATH(ipath, path, IndexPath); ADJUST_CHILD_ATTRS(ipath->indexclauses); new_path = (Path *) ipath; @@ -4069,6 +4120,18 @@ do { \ { BitmapHeapPath *bhpath; + /* + * If the path's restriction clauses contain lateral + * references to the other relation, we can't reparameterize, + * because we must not change the RelOptInfo's contents here. + * (Doing so would break things if we end up using a + * non-partitionwise join.) + */ + if (ris_contain_references_to(root, + path->parent->baserestrictinfo, + child_rel->top_parent_relids)) + return NULL; + FLAT_COPY_PATH(bhpath, path, BitmapHeapPath); REPARAMETERIZE_CHILD_PATH(bhpath->bitmapqual); new_path = (Path *) bhpath; @@ -4100,6 +4163,18 @@ do { \ ForeignPath *fpath; ReparameterizeForeignPathByChild_function rfpc_func; + /* + * If the path's restriction clauses contain lateral + * references to the other relation, we can't reparameterize, + * because we must not change the RelOptInfo's contents here. + * (Doing so would break things if we end up using a + * non-partitionwise join.) + */ + if (ris_contain_references_to(root, + path->parent->baserestrictinfo, + child_rel->top_parent_relids)) + return NULL; + FLAT_COPY_PATH(fpath, path, ForeignPath); if (fpath->fdw_outerpath) REPARAMETERIZE_CHILD_PATH(fpath->fdw_outerpath); @@ -4118,6 +4193,18 @@ do { \ { CustomPath *cpath; + /* + * If the path's restriction clauses contain lateral + * references to the other relation, we can't reparameterize, + * because we must not change the RelOptInfo's contents here. + * (Doing so would break things if we end up using a + * non-partitionwise join.) + */ + if (ris_contain_references_to(root, + path->parent->baserestrictinfo, + child_rel->top_parent_relids)) + return NULL; + FLAT_COPY_PATH(cpath, path, CustomPath); REPARAMETERIZE_CHILD_PATH_LIST(cpath->custom_paths); if (cpath->methods && @@ -4296,3 +4383,91 @@ reparameterize_pathlist_by_child(PlannerInfo *root, return result; } + +/* + * contain_references_to + * Detect whether any Vars or PlaceHolderVars in the given clause contain + * lateral references to the given 'relids'. + */ +static bool +contain_references_to(PlannerInfo *root, Node *clause, Relids relids) +{ + bool ret = false; + List *vars; + ListCell *lc; + + /* + * Examine all Vars and PlaceHolderVars used in the clause. + * + * By omitting the relevant flags, this also gives us a cheap sanity check + * that no aggregates or window functions appear in the clause. We don't + * expect any of those in scan-level restrictions or tablesamples. + */ + vars = pull_var_clause(clause, PVC_INCLUDE_PLACEHOLDERS); + foreach(lc, vars) + { + Node *node = (Node *) lfirst(lc); + + if (IsA(node, Var)) + { + Var *var = (Var *) node; + + if (bms_is_member(var->varno, relids)) + { + ret = true; + break; + } + } + else if (IsA(node, PlaceHolderVar)) + { + PlaceHolderVar *phv = (PlaceHolderVar *) node; + PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, false); + + /* + * We should check both ph_eval_at (in case the PHV is to be + * computed at the other relation and then laterally referenced + * here) and ph_lateral (in case the PHV is to be evaluated here + * but contains lateral references to the other relation). The + * former case should not occur in baserestrictinfo clauses, but + * it can occur in tablesample clauses. + */ + if (bms_overlap(phinfo->ph_eval_at, relids) || + bms_overlap(phinfo->ph_lateral, relids)) + { + ret = true; + break; + } + } + else + Assert(false); + } + + list_free(vars); + + return ret; +} + +/* + * ris_contain_references_to + * Apply contain_references_to() to a list of RestrictInfos. + * + * We need extra code for this because pull_var_clause() can't descend + * through RestrictInfos. + */ +static bool +ris_contain_references_to(PlannerInfo *root, List *rinfos, Relids relids) +{ + ListCell *lc; + + foreach(lc, rinfos) + { + RestrictInfo *rinfo = lfirst_node(RestrictInfo, lc); + + /* Pseudoconstant clauses can't contain any Vars or PHVs */ + if (rinfo->pseudoconstant) + continue; + if (contain_references_to(root, (Node *) rinfo->clause, relids)) + return true; + } + return false; +} diff --git a/src/backend/po/de.po b/src/backend/po/de.po index 921303f..ccf1ee9 100644 --- a/src/backend/po/de.po +++ b/src/backend/po/de.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 15\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 14:56+0000\n" -"PO-Revision-Date: 2023-08-01 10:14+0200\n" +"POT-Creation-Date: 2024-02-01 22:27+0000\n" +"PO-Revision-Date: 2023-11-08 21:53+0100\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -65,35 +65,35 @@ msgid "not recorded" msgstr "nicht aufgezeichnet" #: ../common/controldata_utils.c:79 ../common/controldata_utils.c:83 -#: commands/copyfrom.c:1521 commands/extension.c:3401 utils/adt/genfile.c:123 +#: commands/copyfrom.c:1525 commands/extension.c:3401 utils/adt/genfile.c:123 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m" #: ../common/controldata_utils.c:94 ../common/controldata_utils.c:96 #: access/transam/timeline.c:143 access/transam/timeline.c:362 -#: access/transam/twophase.c:1349 access/transam/xlog.c:3207 -#: access/transam/xlog.c:4022 access/transam/xlogrecovery.c:1197 -#: access/transam/xlogrecovery.c:1289 access/transam/xlogrecovery.c:1326 -#: access/transam/xlogrecovery.c:1386 backup/basebackup.c:1844 +#: access/transam/twophase.c:1349 access/transam/xlog.c:3209 +#: access/transam/xlog.c:4024 access/transam/xlogrecovery.c:1223 +#: access/transam/xlogrecovery.c:1315 access/transam/xlogrecovery.c:1352 +#: access/transam/xlogrecovery.c:1412 backup/basebackup.c:1844 #: commands/extension.c:3411 libpq/hba.c:505 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:4958 #: replication/logical/snapbuild.c:1870 replication/logical/snapbuild.c:1912 #: replication/logical/snapbuild.c:1939 replication/slot.c:1807 #: replication/slot.c:1848 replication/walsender.c:658 #: storage/file/buffile.c:463 storage/file/copydir.c:195 -#: utils/adt/genfile.c:197 utils/adt/misc.c:863 utils/cache/relmapper.c:813 +#: utils/adt/genfile.c:197 utils/adt/misc.c:863 utils/cache/relmapper.c:816 #, c-format msgid "could not read file \"%s\": %m" msgstr "konnte Datei »%s« nicht lesen: %m" #: ../common/controldata_utils.c:102 ../common/controldata_utils.c:105 -#: access/transam/xlog.c:3212 access/transam/xlog.c:4027 +#: access/transam/xlog.c:3214 access/transam/xlog.c:4029 #: backup/basebackup.c:1848 replication/logical/origin.c:734 #: replication/logical/origin.c:773 replication/logical/snapbuild.c:1875 #: replication/logical/snapbuild.c:1917 replication/logical/snapbuild.c:1944 #: replication/slot.c:1811 replication/slot.c:1852 replication/walsender.c:663 -#: utils/cache/relmapper.c:817 +#: utils/cache/relmapper.c:820 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "konnte Datei »%s« nicht lesen: %d von %zu gelesen" @@ -103,18 +103,18 @@ msgstr "konnte Datei »%s« nicht lesen: %d von %zu gelesen" #: access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 #: access/transam/timeline.c:392 access/transam/timeline.c:438 #: access/transam/timeline.c:516 access/transam/twophase.c:1361 -#: access/transam/twophase.c:1773 access/transam/xlog.c:3054 -#: access/transam/xlog.c:3247 access/transam/xlog.c:3252 -#: access/transam/xlog.c:3390 access/transam/xlog.c:3992 -#: access/transam/xlog.c:4738 commands/copyfrom.c:1581 commands/copyto.c:327 +#: access/transam/twophase.c:1773 access/transam/xlog.c:3056 +#: access/transam/xlog.c:3249 access/transam/xlog.c:3254 +#: access/transam/xlog.c:3392 access/transam/xlog.c:3994 +#: access/transam/xlog.c:4740 commands/copyfrom.c:1585 commands/copyto.c:327 #: libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 #: replication/logical/origin.c:667 replication/logical/origin.c:806 #: replication/logical/reorderbuffer.c:5016 #: replication/logical/snapbuild.c:1779 replication/logical/snapbuild.c:1952 #: replication/slot.c:1698 replication/slot.c:1859 replication/walsender.c:673 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:745 -#: storage/file/fd.c:3643 storage/file/fd.c:3749 utils/cache/relmapper.c:828 -#: utils/cache/relmapper.c:956 +#: storage/file/fd.c:3643 storage/file/fd.c:3749 utils/cache/relmapper.c:831 +#: utils/cache/relmapper.c:968 #, c-format msgid "could not close file \"%s\": %m" msgstr "konnte Datei »%s« nicht schließen: %m" @@ -142,10 +142,10 @@ msgstr "" #: ../common/file_utils.c:365 access/heap/rewriteheap.c:1264 #: access/transam/timeline.c:111 access/transam/timeline.c:251 #: access/transam/timeline.c:348 access/transam/twophase.c:1305 -#: access/transam/xlog.c:2941 access/transam/xlog.c:3123 -#: access/transam/xlog.c:3162 access/transam/xlog.c:3357 -#: access/transam/xlog.c:4012 access/transam/xlogrecovery.c:4209 -#: access/transam/xlogrecovery.c:4312 access/transam/xlogutils.c:852 +#: access/transam/xlog.c:2943 access/transam/xlog.c:3125 +#: access/transam/xlog.c:3164 access/transam/xlog.c:3359 +#: access/transam/xlog.c:4014 access/transam/xlogrecovery.c:4243 +#: access/transam/xlogrecovery.c:4346 access/transam/xlogutils.c:852 #: backup/basebackup.c:522 backup/basebackup.c:1520 postmaster/syslogger.c:1560 #: replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3611 #: replication/logical/reorderbuffer.c:4162 @@ -154,21 +154,21 @@ msgstr "" #: replication/slot.c:1779 replication/walsender.c:631 #: replication/walsender.c:2722 storage/file/copydir.c:161 #: storage/file/fd.c:720 storage/file/fd.c:3395 storage/file/fd.c:3630 -#: storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:792 -#: utils/cache/relmapper.c:900 utils/error/elog.c:1933 -#: utils/init/miscinit.c:1366 utils/init/miscinit.c:1500 -#: utils/init/miscinit.c:1577 utils/misc/guc.c:8991 utils/misc/guc.c:9040 +#: storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:795 +#: utils/cache/relmapper.c:912 utils/error/elog.c:1933 +#: utils/init/miscinit.c:1374 utils/init/miscinit.c:1508 +#: utils/init/miscinit.c:1585 utils/misc/guc.c:8998 utils/misc/guc.c:9047 #, c-format msgid "could not open file \"%s\": %m" msgstr "konnte Datei »%s« nicht öffnen: %m" #: ../common/controldata_utils.c:240 ../common/controldata_utils.c:243 #: access/transam/twophase.c:1746 access/transam/twophase.c:1755 -#: access/transam/xlog.c:8674 access/transam/xlogfuncs.c:600 +#: access/transam/xlog.c:8676 access/transam/xlogfuncs.c:600 #: backup/basebackup_server.c:173 backup/basebackup_server.c:266 #: postmaster/postmaster.c:5633 postmaster/syslogger.c:1571 #: postmaster/syslogger.c:1584 postmaster/syslogger.c:1597 -#: utils/cache/relmapper.c:934 +#: utils/cache/relmapper.c:946 #, c-format msgid "could not write file \"%s\": %m" msgstr "konnte Datei »%s« nicht schreiben: %m" @@ -178,13 +178,13 @@ msgstr "konnte Datei »%s« nicht schreiben: %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:510 access/transam/twophase.c:1767 -#: access/transam/xlog.c:3047 access/transam/xlog.c:3241 -#: access/transam/xlog.c:3985 access/transam/xlog.c:7977 -#: access/transam/xlog.c:8020 backup/basebackup_server.c:207 -#: replication/logical/snapbuild.c:1772 replication/slot.c:1684 -#: replication/slot.c:1789 storage/file/fd.c:737 storage/file/fd.c:3741 -#: storage/smgr/md.c:992 storage/smgr/md.c:1033 storage/sync/sync.c:453 -#: utils/cache/relmapper.c:949 utils/misc/guc.c:8760 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3243 +#: access/transam/xlog.c:3987 access/transam/xlog.c:7979 +#: access/transam/xlog.c:8022 backup/basebackup_server.c:207 +#: commands/dbcommands.c:514 replication/logical/snapbuild.c:1772 +#: replication/slot.c:1684 replication/slot.c:1789 storage/file/fd.c:737 +#: storage/file/fd.c:3741 storage/smgr/md.c:992 storage/smgr/md.c:1033 +#: storage/sync/sync.c:453 utils/cache/relmapper.c:961 utils/misc/guc.c:8767 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "konnte Datei »%s« nicht fsyncen: %m" @@ -196,8 +196,8 @@ msgstr "konnte Datei »%s« nicht fsyncen: %m" #: ../common/md5_common.c:155 ../common/psprintf.c:143 #: ../common/scram-common.c:247 ../common/stringinfo.c:305 ../port/path.c:751 #: ../port/path.c:789 ../port/path.c:806 access/transam/twophase.c:1414 -#: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1338 -#: libpq/auth.c:1406 libpq/auth.c:1964 libpq/be-secure-gssapi.c:520 +#: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1336 +#: libpq/auth.c:1404 libpq/auth.c:1962 libpq/be-secure-gssapi.c:520 #: postmaster/bgworker.c:349 postmaster/bgworker.c:931 #: postmaster/postmaster.c:2594 postmaster/postmaster.c:4180 #: postmaster/postmaster.c:5558 postmaster/postmaster.c:5929 @@ -205,15 +205,15 @@ msgstr "konnte Datei »%s« nicht fsyncen: %m" #: replication/logical/logical.c:205 replication/walsender.c:701 #: storage/buffer/localbuf.c:442 storage/file/fd.c:892 storage/file/fd.c:1434 #: storage/file/fd.c:1595 storage/file/fd.c:2409 storage/ipc/procarray.c:1451 -#: storage/ipc/procarray.c:2281 storage/ipc/procarray.c:2288 -#: storage/ipc/procarray.c:2793 storage/ipc/procarray.c:3424 +#: storage/ipc/procarray.c:2280 storage/ipc/procarray.c:2287 +#: storage/ipc/procarray.c:2792 storage/ipc/procarray.c:3423 #: utils/adt/formatting.c:1732 utils/adt/formatting.c:1854 #: utils/adt/formatting.c:1977 utils/adt/pg_locale.c:453 #: utils/adt/pg_locale.c:617 utils/adt/regexp.c:224 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:5192 -#: utils/misc/guc.c:5208 utils/misc/guc.c:5221 utils/misc/guc.c:8738 +#: utils/misc/guc.c:5208 utils/misc/guc.c:5221 utils/misc/guc.c:8745 #: 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:266 #: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 @@ -265,7 +265,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:8323 backup/basebackup.c:1340 +#: ../common/exec.c:299 access/transam/xlog.c:8325 backup/basebackup.c:1340 #: utils/adt/misc.c:342 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -296,7 +296,7 @@ msgstr "kann NULL-Zeiger nicht kopieren (interner Fehler)\n" #: ../common/file_utils.c:455 access/transam/twophase.c:1317 #: access/transam/xlogarchive.c:111 access/transam/xlogarchive.c:237 #: backup/basebackup.c:338 backup/basebackup.c:528 backup/basebackup.c:599 -#: commands/copyfrom.c:1531 commands/copyto.c:725 commands/extension.c:3390 +#: commands/copyfrom.c:1535 commands/copyto.c:725 commands/extension.c:3390 #: commands/tablespace.c:826 commands/tablespace.c:917 guc-file.l:1061 #: postmaster/pgarch.c:597 replication/logical/snapbuild.c:1651 #: storage/file/copydir.c:68 storage/file/copydir.c:107 storage/file/fd.c:1951 @@ -450,7 +450,7 @@ msgstr "ungültiger Fork-Name" msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"." msgstr "Gültige Fork-Namen sind »main«, »fsm«, »vm« und »init«." -#: ../common/restricted_token.c:64 libpq/auth.c:1368 libpq/auth.c:2400 +#: ../common/restricted_token.c:64 libpq/auth.c:1366 libpq/auth.c:2398 #, c-format msgid "could not load library \"%s\": error code %lu" msgstr "konnte Bibliothek »%s« nicht laden: Fehlercode %lu" @@ -533,7 +533,7 @@ msgstr "" msgid "could not look up effective user ID %ld: %s" msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s" -#: ../common/username.c:45 libpq/auth.c:1900 +#: ../common/username.c:45 libpq/auth.c:1898 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -700,7 +700,7 @@ msgstr "konnte Basistabelle von Index »%s« nicht öffnen" msgid "index \"%s\" is not valid" msgstr "Index »%s« ist nicht gültig" -#: access/brin/brin_bloom.c:750 access/brin/brin_bloom.c:792 +#: access/brin/brin_bloom.c:749 access/brin/brin_bloom.c:791 #: access/brin/brin_minmax_multi.c:2986 access/brin/brin_minmax_multi.c:3129 #: statistics/dependencies.c:663 statistics/dependencies.c:716 #: statistics/mcv.c:1484 statistics/mcv.c:1515 statistics/mvdistinct.c:344 @@ -821,7 +821,7 @@ msgstr "Anzahl der Spalten (%d) überschreitet Maximum (%d)" msgid "number of index columns (%d) exceeds limit (%d)" msgstr "Anzahl der Indexspalten (%d) überschreitet Maximum (%d)" -#: access/common/indextuple.c:209 access/spgist/spgutils.c:958 +#: access/common/indextuple.c:209 access/spgist/spgutils.c:965 #, c-format msgid "index row requires %zu bytes, maximum size is %zu" msgstr "Indexzeile benötigt %zu Bytes, Maximalgröße ist %zu" @@ -855,7 +855,7 @@ msgstr "RESET darf keinen Parameterwert enthalten" msgid "unrecognized parameter namespace \"%s\"" msgstr "unbekannter Parameter-Namensraum »%s«" -#: access/common/reloptions.c:1303 utils/misc/guc.c:12995 +#: access/common/reloptions.c:1303 utils/misc/guc.c:13002 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "Tabellen mit WITH OIDS werden nicht unterstützt" @@ -962,7 +962,7 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Um das zu reparieren, führen Sie REINDEX INDEX \"%s\" aus." #: access/gin/ginutil.c:145 executor/execExpr.c:2168 -#: utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6486 +#: utils/adt/arrayfuncs.c:3866 utils/adt/arrayfuncs.c:6535 #: utils/adt/rowtypes.c:957 #, c-format msgid "could not identify a comparison function for type %s" @@ -1049,7 +1049,7 @@ msgstr "konnte die für das Zeichenketten-Hashing zu verwendende Sortierfolge ni #: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:668 #: catalog/heap.c:674 commands/createas.c:206 commands/createas.c:515 -#: commands/indexcmds.c:1979 commands/tablecmds.c:17503 commands/view.c:86 +#: commands/indexcmds.c:1955 commands/tablecmds.c:17513 commands/view.c:86 #: regex/regc_pg_locale.c:243 utils/adt/formatting.c:1690 #: utils/adt/formatting.c:1812 utils/adt/formatting.c:1935 utils/adt/like.c:190 #: utils/adt/like_support.c:1025 utils/adt/varchar.c:733 @@ -1064,7 +1064,7 @@ msgid "index row size %zu exceeds hash maximum %zu" msgstr "Größe der Indexzeile %zu überschreitet Maximum für Hash-Index %zu" #: access/hash/hashinsert.c:85 access/spgist/spgdoinsert.c:2005 -#: access/spgist/spgdoinsert.c:2282 access/spgist/spgutils.c:1019 +#: access/spgist/spgdoinsert.c:2282 access/spgist/spgutils.c:1026 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Werte, die größer sind als eine Pufferseite, können nicht indiziert werden." @@ -1119,18 +1119,18 @@ msgstr "während einer parallelen Operation können keine Tupel gelöscht werden msgid "attempted to delete invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu löschen" -#: access/heap/heapam.c:3183 access/heap/heapam.c:6025 +#: access/heap/heapam.c:3188 access/heap/heapam.c:6032 #, 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:3307 +#: access/heap/heapam.c:3312 #, c-format msgid "attempted to update invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu aktualisieren" -#: access/heap/heapam.c:4669 access/heap/heapam.c:4707 -#: access/heap/heapam.c:4972 access/heap/heapam_handler.c:456 +#: access/heap/heapam.c:4676 access/heap/heapam.c:4714 +#: access/heap/heapam.c:4979 access/heap/heapam_handler.c:456 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "konnte Sperre für Zeile in Relation »%s« nicht setzen" @@ -1152,10 +1152,10 @@ 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:485 -#: access/transam/xlog.c:2963 access/transam/xlog.c:3176 -#: access/transam/xlog.c:3964 access/transam/xlog.c:8657 +#: access/transam/xlog.c:2965 access/transam/xlog.c:3178 +#: access/transam/xlog.c:3966 access/transam/xlog.c:8659 #: access/transam/xlogfuncs.c:594 backup/basebackup_server.c:149 -#: backup/basebackup_server.c:242 commands/dbcommands.c:517 +#: backup/basebackup_server.c:242 commands/dbcommands.c:494 #: postmaster/postmaster.c:4607 postmaster/postmaster.c:5620 #: replication/logical/origin.c:587 replication/slot.c:1631 #: storage/file/copydir.c:167 storage/smgr/md.c:222 utils/time/snapmgr.c:1261 @@ -1170,15 +1170,15 @@ msgstr "konnte Datei »%s« nicht auf %u kürzen: %m" #: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 #: access/transam/timeline.c:424 access/transam/timeline.c:502 -#: access/transam/xlog.c:3035 access/transam/xlog.c:3232 -#: access/transam/xlog.c:3976 commands/dbcommands.c:529 +#: access/transam/xlog.c:3037 access/transam/xlog.c:3234 +#: access/transam/xlog.c:3978 commands/dbcommands.c:506 #: postmaster/postmaster.c:4617 postmaster/postmaster.c:4627 #: replication/logical/origin.c:599 replication/logical/origin.c:641 #: replication/logical/origin.c:660 replication/logical/snapbuild.c:1748 #: replication/slot.c:1666 storage/file/buffile.c:537 -#: storage/file/copydir.c:207 utils/init/miscinit.c:1441 -#: utils/init/miscinit.c:1452 utils/init/miscinit.c:1460 utils/misc/guc.c:8721 -#: utils/misc/guc.c:8752 utils/misc/guc.c:10750 utils/misc/guc.c:10764 +#: storage/file/copydir.c:207 utils/init/miscinit.c:1449 +#: utils/init/miscinit.c:1460 utils/init/miscinit.c:1468 utils/misc/guc.c:8728 +#: utils/misc/guc.c:8759 utils/misc/guc.c:10757 utils/misc/guc.c:10771 #: utils/time/snapmgr.c:1266 utils/time/snapmgr.c:1273 #, c-format msgid "could not write to file \"%s\": %m" @@ -1422,14 +1422,14 @@ msgstr "Indexzugriffsmethode »%s« hat keinen Handler" msgid "transaction aborted during system catalog scan" msgstr "Transaktion während eines Systemkatalog-Scans abgebrochen" -#: access/index/indexam.c:142 catalog/objectaddress.c:1376 -#: commands/indexcmds.c:2807 commands/tablecmds.c:271 commands/tablecmds.c:295 -#: commands/tablecmds.c:17191 commands/tablecmds.c:18974 +#: access/index/indexam.c:203 catalog/objectaddress.c:1376 +#: commands/indexcmds.c:2783 commands/tablecmds.c:271 commands/tablecmds.c:295 +#: commands/tablecmds.c:17199 commands/tablecmds.c:18984 #, c-format msgid "\"%s\" is not an index" msgstr "»%s« ist kein Index" -#: access/index/indexam.c:973 +#: access/index/indexam.c:1010 #, c-format msgid "operator class %s has no options" msgstr "Operatorklasse %s hat keine Optionen" @@ -1494,12 +1494,12 @@ msgstr "" msgid "operator family \"%s\" of access method %s is missing support function for types %s and %s" msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlt Support-Funktion für Typen %s und %s" -#: access/spgist/spgutils.c:244 +#: access/spgist/spgutils.c:242 #, c-format msgid "compress method must be defined when leaf type is different from input type" msgstr "Compress-Methode muss definiert sein, wenn der Leaf-Typ verschieden vom Eingabetyp ist" -#: access/spgist/spgutils.c:1016 +#: access/spgist/spgutils.c:1023 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "innere Tupelgröße %zu überschreitet SP-GiST-Maximum %zu" @@ -1521,8 +1521,8 @@ msgid "\"%s\" is an index" msgstr "»%s« ist ein Index" #: access/table/table.c:54 access/table/table.c:88 access/table/table.c:117 -#: access/table/table.c:150 catalog/aclchk.c:1842 commands/tablecmds.c:13880 -#: commands/tablecmds.c:17200 +#: access/table/table.c:150 catalog/aclchk.c:1842 commands/tablecmds.c:13888 +#: commands/tablecmds.c:17208 #, c-format msgid "\"%s\" is a composite type" msgstr "»%s« ist ein zusammengesetzter Typ" @@ -1537,7 +1537,7 @@ msgstr "tid (%u, %u) ist nicht gültig für Relation »%s«" msgid "%s cannot be empty." msgstr "%s kann nicht leer sein." -#: access/table/tableamapi.c:122 utils/misc/guc.c:12919 +#: access/table/tableamapi.c:122 utils/misc/guc.c:12926 #, c-format msgid "%s is too long (maximum %d characters)." msgstr "%s ist zu lang (maximal %d Zeichen)." @@ -1723,7 +1723,7 @@ msgstr "ungültige magische Zahl in dynamischem Shared-Memory-Segment" #: access/transam/rmgr.c:84 #, c-format msgid "resource manager with ID %d not registered" -msgstr "Resouce-Manager mit ID %d nicht registriert" +msgstr "Resource-Manager mit ID %d nicht registriert" #: access/transam/rmgr.c:85 #, c-format @@ -1733,7 +1733,7 @@ msgstr "Fügen Sie das Erweiterungsmodul, das diesen Resource-Manager implementi #: access/transam/rmgr.c:101 #, c-format msgid "custom resource manager name is invalid" -msgstr "Custom-Resouce-Manager-Name ist ungültig" +msgstr "Custom-Resource-Manager-Name ist ungültig" #: access/transam/rmgr.c:102 #, c-format @@ -1743,7 +1743,7 @@ msgstr "Geben Sie einen nicht leeren Namen für den Custom-Resource-Manager an." #: access/transam/rmgr.c:105 #, c-format msgid "custom resource manager ID %d is out of range" -msgstr "Custom-Resouce-Manager-ID %d ist außerhalb des gültigen Bereichs" +msgstr "Custom-Resource-Manager-ID %d ist außerhalb des gültigen Bereichs" #: access/transam/rmgr.c:106 #, c-format @@ -1754,7 +1754,7 @@ msgstr "Geben Sie eine Custom-Resource-Manager-ID zwischen %d und %d an." #: access/transam/rmgr.c:128 #, c-format msgid "failed to register custom resource manager \"%s\" with ID %d" -msgstr "konnte Custom-Resouce-Manager »%s« mit ID %d nicht registrieren" +msgstr "konnte Custom-Resource-Manager »%s« mit ID %d nicht registrieren" #: access/transam/rmgr.c:112 #, c-format @@ -1764,7 +1764,7 @@ msgstr "Custom-Resource-Manager muss beim Initialisieren von Modulen in shared_p #: access/transam/rmgr.c:117 #, c-format msgid "Custom resource manager \"%s\" already registered with the same ID." -msgstr "Custom-Resouce-Manager »%s« ist schon mit der gleichen ID registriert." +msgstr "Custom-Resource-Manager »%s« ist schon mit der gleichen ID registriert." #: access/transam/rmgr.c:129 #, c-format @@ -1774,7 +1774,7 @@ msgstr "Bestehender Resource-Manager mit ID %d hat den gleichen Namen." #: access/transam/rmgr.c:135 #, c-format msgid "registered custom resource manager \"%s\" with ID %d" -msgstr "Custom-Resouce-Manager »%s« mit ID %d wurde registriert" +msgstr "Custom-Resource-Manager »%s« mit ID %d wurde registriert" #: access/transam/slru.c:714 #, c-format @@ -2199,439 +2199,439 @@ msgstr "während einer parallelen Operation können keine Subtransaktionen commi msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "kann nicht mehr als 2^32-1 Subtransaktionen in einer Transaktion haben" -#: access/transam/xlog.c:1463 +#: access/transam/xlog.c:1465 #, c-format msgid "request to flush past end of generated WAL; request %X/%X, current position %X/%X" msgstr "Flush hinter das Ende des erzeugten WAL angefordert; Anforderung %X/%X, aktuelle Position %X/%X" -#: access/transam/xlog.c:2224 +#: access/transam/xlog.c:2226 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "konnte nicht in Logdatei %s bei Position %u, Länge %zu schreiben: %m" -#: access/transam/xlog.c:3471 access/transam/xlogutils.c:847 +#: access/transam/xlog.c:3473 access/transam/xlogutils.c:847 #: replication/walsender.c:2716 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "das angeforderte WAL-Segment %s wurde schon entfernt" -#: access/transam/xlog.c:3756 +#: access/transam/xlog.c:3758 #, c-format msgid "could not rename file \"%s\": %m" msgstr "konnte Datei »%s« nicht umbenennen: %m" -#: access/transam/xlog.c:3798 access/transam/xlog.c:3808 +#: access/transam/xlog.c:3800 access/transam/xlog.c:3810 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "benötigtes WAL-Verzeichnis »%s« existiert nicht" -#: access/transam/xlog.c:3814 +#: access/transam/xlog.c:3816 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "erzeuge fehlendes WAL-Verzeichnis »%s«" -#: access/transam/xlog.c:3817 commands/dbcommands.c:3115 +#: access/transam/xlog.c:3819 commands/dbcommands.c:3115 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "konnte fehlendes Verzeichnis »%s« nicht erzeugen: %m" -#: access/transam/xlog.c:3884 +#: access/transam/xlog.c:3886 #, c-format msgid "could not generate secret authorization token" msgstr "konnte geheimes Autorisierungstoken nicht erzeugen" -#: access/transam/xlog.c:4043 access/transam/xlog.c:4052 -#: access/transam/xlog.c:4076 access/transam/xlog.c:4083 -#: access/transam/xlog.c:4090 access/transam/xlog.c:4095 -#: access/transam/xlog.c:4102 access/transam/xlog.c:4109 -#: access/transam/xlog.c:4116 access/transam/xlog.c:4123 -#: access/transam/xlog.c:4130 access/transam/xlog.c:4137 -#: access/transam/xlog.c:4146 access/transam/xlog.c:4153 -#: utils/init/miscinit.c:1598 +#: access/transam/xlog.c:4045 access/transam/xlog.c:4054 +#: access/transam/xlog.c:4078 access/transam/xlog.c:4085 +#: access/transam/xlog.c:4092 access/transam/xlog.c:4097 +#: access/transam/xlog.c:4104 access/transam/xlog.c:4111 +#: access/transam/xlog.c:4118 access/transam/xlog.c:4125 +#: access/transam/xlog.c:4132 access/transam/xlog.c:4139 +#: access/transam/xlog.c:4148 access/transam/xlog.c:4155 +#: utils/init/miscinit.c:1606 #, c-format msgid "database files are incompatible with server" msgstr "Datenbankdateien sind inkompatibel mit Server" -#: access/transam/xlog.c:4044 +#: access/transam/xlog.c:4046 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION %d (0x%08x) initialisiert, aber der Server wurde mit PG_CONTROL_VERSION %d (0x%08x) kompiliert." -#: access/transam/xlog.c:4048 +#: access/transam/xlog.c:4050 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Das Problem könnte eine falsche Byte-Reihenfolge sein. Es sieht so aus, dass Sie initdb ausführen müssen." -#: access/transam/xlog.c:4053 +#: access/transam/xlog.c:4055 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION %d initialisiert, aber der Server wurde mit PG_CONTROL_VERSION %d kompiliert." -#: access/transam/xlog.c:4056 access/transam/xlog.c:4080 -#: access/transam/xlog.c:4087 access/transam/xlog.c:4092 +#: access/transam/xlog.c:4058 access/transam/xlog.c:4082 +#: access/transam/xlog.c:4089 access/transam/xlog.c:4094 #, c-format msgid "It looks like you need to initdb." msgstr "Es sieht so aus, dass Sie initdb ausführen müssen." -#: access/transam/xlog.c:4067 +#: access/transam/xlog.c:4069 #, c-format msgid "incorrect checksum in control file" msgstr "falsche Prüfsumme in Kontrolldatei" -#: access/transam/xlog.c:4077 +#: access/transam/xlog.c:4079 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "Der Datenbank-Cluster wurde mit CATALOG_VERSION_NO %d initialisiert, aber der Server wurde mit CATALOG_VERSION_NO %d kompiliert." -#: access/transam/xlog.c:4084 +#: access/transam/xlog.c:4086 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "Der Datenbank-Cluster wurde mit MAXALIGN %d initialisiert, aber der Server wurde mit MAXALIGN %d kompiliert." -#: access/transam/xlog.c:4091 +#: access/transam/xlog.c:4093 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Der Datenbank-Cluster verwendet anscheinend ein anderes Fließkommazahlenformat als das Serverprogramm." -#: access/transam/xlog.c:4096 +#: access/transam/xlog.c:4098 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "Der Datenbank-Cluster wurde mit BLCKSZ %d initialisiert, aber der Server wurde mit BLCKSZ %d kompiliert." -#: access/transam/xlog.c:4099 access/transam/xlog.c:4106 -#: access/transam/xlog.c:4113 access/transam/xlog.c:4120 -#: access/transam/xlog.c:4127 access/transam/xlog.c:4134 -#: access/transam/xlog.c:4141 access/transam/xlog.c:4149 -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4101 access/transam/xlog.c:4108 +#: access/transam/xlog.c:4115 access/transam/xlog.c:4122 +#: access/transam/xlog.c:4129 access/transam/xlog.c:4136 +#: access/transam/xlog.c:4143 access/transam/xlog.c:4151 +#: access/transam/xlog.c:4158 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Es sieht so aus, dass Sie neu kompilieren oder initdb ausführen müssen." -#: access/transam/xlog.c:4103 +#: access/transam/xlog.c:4105 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "Der Datenbank-Cluster wurde mit RELSEG_SIZE %d initialisiert, aber der Server wurde mit RELSEGSIZE %d kompiliert." -#: access/transam/xlog.c:4110 +#: access/transam/xlog.c:4112 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "Der Datenbank-Cluster wurde mit XLOG_BLCKSZ %d initialisiert, aber der Server wurde mit XLOG_BLCKSZ %d kompiliert." -#: access/transam/xlog.c:4117 +#: access/transam/xlog.c:4119 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "Der Datenbank-Cluster wurde mit NAMEDATALEN %d initialisiert, aber der Server wurde mit NAMEDATALEN %d kompiliert." -#: access/transam/xlog.c:4124 +#: access/transam/xlog.c:4126 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "Der Datenbank-Cluster wurde mit INDEX_MAX_KEYS %d initialisiert, aber der Server wurde mit INDEX_MAX_KEYS %d kompiliert." -#: access/transam/xlog.c:4131 +#: access/transam/xlog.c:4133 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "Der Datenbank-Cluster wurde mit TOAST_MAX_CHUNK_SIZE %d initialisiert, aber der Server wurde mit TOAST_MAX_CHUNK_SIZE %d kompiliert." -#: access/transam/xlog.c:4138 +#: access/transam/xlog.c:4140 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Der Datenbank-Cluster wurde mit LOBLKSIZE %d initialisiert, aber der Server wurde mit LOBLKSIZE %d kompiliert." -#: access/transam/xlog.c:4147 +#: access/transam/xlog.c:4149 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Der Datenbank-Cluster wurde ohne USE_FLOAT8_BYVAL initialisiert, aber der Server wurde mit USE_FLOAT8_BYVAL kompiliert." -#: access/transam/xlog.c:4154 +#: access/transam/xlog.c:4156 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Der Datenbank-Cluster wurde mit USE_FLOAT8_BYVAL initialisiert, aber der Server wurde ohne USE_FLOAT8_BYVAL kompiliert." -#: access/transam/xlog.c:4163 +#: access/transam/xlog.c:4165 #, 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-Segmentgröße muss eine Zweierpotenz zwischen 1 MB und 1 GB sein, aber die Kontrolldatei gibt %d Byte an" msgstr[1] "WAL-Segmentgröße muss eine Zweierpotenz zwischen 1 MB und 1 GB sein, aber die Kontrolldatei gibt %d Bytes an" -#: access/transam/xlog.c:4175 +#: access/transam/xlog.c:4177 #, c-format msgid "\"min_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "»min_wal_size« muss mindestens zweimal so groß wie »wal_segment_size« sein" -#: access/transam/xlog.c:4179 +#: access/transam/xlog.c:4181 #, c-format msgid "\"max_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "»max_wal_size« muss mindestens zweimal so groß wie »wal_segment_size« sein" -#: access/transam/xlog.c:4620 +#: access/transam/xlog.c:4622 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "konnte Bootstrap-Write-Ahead-Log-Datei nicht schreiben: %m" -#: access/transam/xlog.c:4628 +#: access/transam/xlog.c:4630 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "konnte Bootstrap-Write-Ahead-Log-Datei nicht fsyncen: %m" -#: access/transam/xlog.c:4634 +#: access/transam/xlog.c:4636 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "konnte Bootstrap-Write-Ahead-Log-Datei nicht schließen: %m" -#: access/transam/xlog.c:4852 +#: access/transam/xlog.c:4854 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "WAL wurde mit wal_level=minimal erzeugt, Wiederherstellung kann nicht fortgesetzt werden" -#: access/transam/xlog.c:4853 +#: access/transam/xlog.c:4855 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "Das passiert, wenn auf dem Server vorübergehend wal_level=minimal gesetzt wurde." -#: access/transam/xlog.c:4854 +#: access/transam/xlog.c:4856 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "Verwenden Sie ein Backup, das durchgeführt wurde, nachdem wal_level auf höher als minimal gesetzt wurde." -#: access/transam/xlog.c:4918 +#: access/transam/xlog.c:4920 #, c-format msgid "control file contains invalid checkpoint location" msgstr "Kontrolldatei enthält ungültige Checkpoint-Position" -#: access/transam/xlog.c:4929 +#: access/transam/xlog.c:4931 #, c-format msgid "database system was shut down at %s" msgstr "Datenbanksystem wurde am %s heruntergefahren" -#: access/transam/xlog.c:4935 +#: access/transam/xlog.c:4937 #, c-format msgid "database system was shut down in recovery at %s" msgstr "Datenbanksystem wurde während der Wiederherstellung am %s heruntergefahren" -#: access/transam/xlog.c:4941 +#: access/transam/xlog.c:4943 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "Datenbanksystem wurde beim Herunterfahren unterbrochen; letzte bekannte Aktion am %s" -#: access/transam/xlog.c:4947 +#: access/transam/xlog.c:4949 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "Datenbanksystem wurde während der Wiederherstellung am %s unterbrochen" -#: access/transam/xlog.c:4949 +#: access/transam/xlog.c:4951 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Das bedeutet wahrscheinlich, dass einige Daten verfälscht sind und Sie die letzte Datensicherung zur Wiederherstellung verwenden müssen." -#: access/transam/xlog.c:4955 +#: access/transam/xlog.c:4957 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "Datenbanksystem wurde während der Wiederherstellung bei Logzeit %s unterbrochen" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4959 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "Wenn dies mehr als einmal vorgekommen ist, dann sind einige Daten möglicherweise verfälscht und Sie müssen ein früheres Wiederherstellungsziel wählen." -#: access/transam/xlog.c:4963 +#: access/transam/xlog.c:4965 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "Datenbanksystem wurde unterbrochen; letzte bekannte Aktion am %s" -#: access/transam/xlog.c:4969 +#: access/transam/xlog.c:4971 #, c-format msgid "control file contains invalid database cluster state" msgstr "Kontrolldatei enthält ungültigen Datenbankclusterstatus" -#: access/transam/xlog.c:5353 +#: access/transam/xlog.c:5355 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL endet vor dem Ende der Online-Sicherung" -#: access/transam/xlog.c:5354 +#: access/transam/xlog.c:5356 #, 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:5357 +#: access/transam/xlog.c:5359 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt" -#: access/transam/xlog.c:5405 +#: access/transam/xlog.c:5407 #, c-format msgid "selected new timeline ID: %u" msgstr "gewählte neue Zeitleisten-ID: %u" -#: access/transam/xlog.c:5438 +#: access/transam/xlog.c:5440 #, c-format msgid "archive recovery complete" msgstr "Wiederherstellung aus Archiv abgeschlossen" -#: access/transam/xlog.c:6044 +#: access/transam/xlog.c:6046 #, c-format msgid "shutting down" msgstr "fahre herunter" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:6083 +#: access/transam/xlog.c:6085 #, 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:6095 +#: access/transam/xlog.c:6097 #, 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:6155 +#: access/transam/xlog.c:6157 #, 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:6175 +#: access/transam/xlog.c:6177 #, 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:6610 +#: access/transam/xlog.c:6612 #, 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:7167 +#: access/transam/xlog.c:7169 #, c-format msgid "recovery restart point at %X/%X" msgstr "Recovery-Restart-Punkt bei %X/%X" -#: access/transam/xlog.c:7169 +#: access/transam/xlog.c:7171 #, 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:7416 +#: access/transam/xlog.c:7418 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "Restore-Punkt »%s« erzeugt bei %X/%X" -#: access/transam/xlog.c:7623 +#: access/transam/xlog.c:7625 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt werden" -#: access/transam/xlog.c:7680 +#: access/transam/xlog.c:7682 #, c-format msgid "unexpected timeline ID %u (should be %u) in shutdown checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (sollte %u sein) im Shutdown-Checkpoint-Datensatz" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7740 #, c-format msgid "unexpected timeline ID %u (should be %u) in online checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (sollte %u sein) im Online-Checkpoint-Datensatz" -#: access/transam/xlog.c:7767 +#: access/transam/xlog.c:7769 #, c-format msgid "unexpected timeline ID %u (should be %u) in end-of-recovery record" msgstr "unerwartete Zeitleisten-ID %u (sollte %u sein) im End-of-Recovery-Datensatz" -#: access/transam/xlog.c:8025 +#: access/transam/xlog.c:8027 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "konnte Write-Through-Logdatei »%s« nicht fsyncen: %m" -#: access/transam/xlog.c:8031 +#: access/transam/xlog.c:8033 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "konnte Datei »%s« nicht fdatasyncen: %m" -#: access/transam/xlog.c:8126 access/transam/xlog.c:8493 +#: access/transam/xlog.c:8128 access/transam/xlog.c:8495 #, 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:8127 access/transam/xlog.c:8494 +#: access/transam/xlog.c:8129 access/transam/xlog.c:8496 #: access/transam/xlogfuncs.c:199 #, 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:8132 +#: access/transam/xlog.c:8134 #, c-format msgid "backup label too long (max %d bytes)" msgstr "Backup-Label zu lang (maximal %d Bytes)" -#: access/transam/xlog.c:8248 +#: access/transam/xlog.c:8250 #, 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:8250 access/transam/xlog.c:8606 +#: access/transam/xlog.c:8252 access/transam/xlog.c:8608 #, 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:8330 backup/basebackup.c:1345 utils/adt/misc.c:347 +#: access/transam/xlog.c:8332 backup/basebackup.c:1345 utils/adt/misc.c:347 #, 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:8380 backup/basebackup.c:1360 +#: access/transam/xlog.c:8382 backup/basebackup.c:1360 #: commands/tablespace.c:399 commands/tablespace.c:581 utils/adt/misc.c:355 #, c-format msgid "tablespaces are not supported on this platform" msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" -#: access/transam/xlog.c:8539 access/transam/xlog.c:8552 -#: access/transam/xlogrecovery.c:1211 access/transam/xlogrecovery.c:1218 -#: access/transam/xlogrecovery.c:1277 access/transam/xlogrecovery.c:1357 -#: access/transam/xlogrecovery.c:1381 +#: access/transam/xlog.c:8541 access/transam/xlog.c:8554 +#: access/transam/xlogrecovery.c:1237 access/transam/xlogrecovery.c:1244 +#: access/transam/xlogrecovery.c:1303 access/transam/xlogrecovery.c:1383 +#: access/transam/xlogrecovery.c:1407 #, c-format msgid "invalid data in file \"%s\"" msgstr "ungültige Daten in Datei »%s«" -#: access/transam/xlog.c:8556 backup/basebackup.c:1200 +#: access/transam/xlog.c:8558 backup/basebackup.c:1200 #, 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:8557 backup/basebackup.c:1201 +#: access/transam/xlog.c:8559 backup/basebackup.c:1201 #, 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:8604 +#: access/transam/xlog.c:8606 #, 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:8729 +#: access/transam/xlog.c:8731 #, 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:8743 +#: access/transam/xlog.c:8745 #, 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:8745 +#: access/transam/xlog.c:8747 #, 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:8752 +#: access/transam/xlog.c:8754 #, c-format msgid "all required WAL segments have been archived" msgstr "alle benötigten WAL-Segmente wurden archiviert" -#: access/transam/xlog.c:8756 +#: access/transam/xlog.c:8758 #, 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:8805 +#: access/transam/xlog.c:8807 #, c-format msgid "aborting backup due to backend exiting before pg_backup_stop was called" msgstr "Backup wird abgebrochen, weil Backend-Prozess beendete, bevor pg_backup_stop aufgerufen wurde" @@ -2740,7 +2740,7 @@ msgstr "%s kann nicht ausgeführt werden, nachdem eine Beförderung angestoßen msgid "\"wait_seconds\" must not be negative or zero" msgstr "»wait_seconds« darf nicht negativ oder null sein" -#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:252 +#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:257 #, c-format msgid "failed to send signal to postmaster: %m" msgstr "konnte Signal nicht an Postmaster senden: %m" @@ -2757,157 +2757,157 @@ msgstr[1] "Befördern des Servers wurde nicht innerhalb von %d Sekunden abgeschl msgid "recovery_prefetch is not supported on platforms that lack posix_fadvise()." msgstr "recovery_prefetch wird auf Plattformen ohne posix_fadvise() nicht unterstützt." -#: access/transam/xlogreader.c:592 +#: access/transam/xlogreader.c:620 #, c-format msgid "invalid record offset at %X/%X" msgstr "ungültiger Datensatz-Offset bei %X/%X" -#: access/transam/xlogreader.c:600 +#: access/transam/xlogreader.c:628 #, c-format msgid "contrecord is requested by %X/%X" msgstr "Contrecord angefordert von %X/%X" -#: access/transam/xlogreader.c:641 access/transam/xlogreader.c:1106 +#: access/transam/xlogreader.c:669 access/transam/xlogreader.c:1134 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "ungültige Datensatzlänge bei %X/%X: %u erwartet, %u erhalten" -#: access/transam/xlogreader.c:730 +#: access/transam/xlogreader.c:758 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "keine Contrecord-Flag bei %X/%X" -#: access/transam/xlogreader.c:743 +#: access/transam/xlogreader.c:771 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "ungültige Contrecord-Länge %u (erwartet %lld) bei %X/%X" -#: access/transam/xlogreader.c:1114 +#: access/transam/xlogreader.c:1142 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ungültige Resource-Manager-ID %u bei %X/%X" -#: access/transam/xlogreader.c:1127 access/transam/xlogreader.c:1143 +#: access/transam/xlogreader.c:1155 access/transam/xlogreader.c:1171 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "Datensatz mit falschem Prev-Link %X/%X bei %X/%X" -#: access/transam/xlogreader.c:1181 +#: access/transam/xlogreader.c:1209 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "ungültige Resource-Manager-Datenprüfsumme in Datensatz bei %X/%X" -#: access/transam/xlogreader.c:1218 +#: access/transam/xlogreader.c:1246 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "ungültige magische Zahl %04X in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:1232 access/transam/xlogreader.c:1273 +#: access/transam/xlogreader.c:1260 access/transam/xlogreader.c:1301 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ungültige Info-Bits %04X in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:1247 +#: access/transam/xlogreader.c:1275 #, 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-Datei ist von einem anderen Datenbanksystem: Datenbanksystemidentifikator in WAL-Datei ist %llu, Datenbanksystemidentifikator in pg_control ist %llu" -#: access/transam/xlogreader.c:1255 +#: access/transam/xlogreader.c:1283 #, c-format msgid "WAL file is from different database system: incorrect segment size in page header" msgstr "WAL-Datei ist von einem anderen Datenbanksystem: falsche Segmentgröße im Seitenkopf" -#: access/transam/xlogreader.c:1261 +#: access/transam/xlogreader.c:1289 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "WAL-Datei ist von einem anderen Datenbanksystem: falsche XLOG_BLCKSZ im Seitenkopf" -#: access/transam/xlogreader.c:1292 +#: access/transam/xlogreader.c:1320 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "unerwartete Pageaddr %X/%X in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:1317 +#: access/transam/xlogreader.c:1345 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "Zeitleisten-ID %u außer der Reihe (nach %u) in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:1722 +#: access/transam/xlogreader.c:1750 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %u außer der Reihe bei %X/%X" -#: access/transam/xlogreader.c:1746 +#: access/transam/xlogreader.c:1774 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA gesetzt, aber keine Daten enthalten bei %X/%X" -#: access/transam/xlogreader.c:1753 +#: access/transam/xlogreader.c:1781 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA nicht gesetzt, aber Datenlänge ist %u bei %X/%X" -#: access/transam/xlogreader.c:1789 +#: access/transam/xlogreader.c:1817 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE gesetzt, aber Loch Offset %u Länge %u Block-Abbild-Länge %u bei %X/%X" -#: access/transam/xlogreader.c:1805 +#: access/transam/xlogreader.c:1833 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE nicht gesetzt, aber Loch Offset %u Länge %u bei %X/%X" -#: access/transam/xlogreader.c:1819 +#: access/transam/xlogreader.c:1847 #, c-format msgid "BKPIMAGE_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_COMPRESSED gesetzt, aber Block-Abbild-Länge %u bei %X/%X" -#: access/transam/xlogreader.c:1834 +#: access/transam/xlogreader.c:1862 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_COMPRESSED set, but block image length is %u at %X/%X" msgstr "weder BKPIMAGE_HAS_HOLE noch BKPIMAGE_COMPRESSED gesetzt, aber Block-Abbild-Länge ist %u bei %X/%X" -#: access/transam/xlogreader.c:1850 +#: access/transam/xlogreader.c:1878 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL gesetzt, aber keine vorangehende Relation bei %X/%X" -#: access/transam/xlogreader.c:1862 +#: access/transam/xlogreader.c:1890 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ungültige block_id %u bei %X/%X" -#: access/transam/xlogreader.c:1929 +#: access/transam/xlogreader.c:1957 #, c-format msgid "record with invalid length at %X/%X" msgstr "Datensatz mit ungültiger Länge bei %X/%X" -#: access/transam/xlogreader.c:1954 +#: access/transam/xlogreader.c:1982 #, c-format msgid "could not locate backup block with ID %d in WAL record" msgstr "konnte Backup-Block mit ID %d nicht im WAL-Eintrag finden" -#: access/transam/xlogreader.c:2038 +#: access/transam/xlogreader.c:2066 #, c-format msgid "could not restore image at %X/%X with invalid block %d specified" msgstr "konnte Abbild bei %X/%X mit ungültigem angegebenen Block %d nicht wiederherstellen" -#: access/transam/xlogreader.c:2045 +#: access/transam/xlogreader.c:2073 #, c-format msgid "could not restore image at %X/%X with invalid state, block %d" msgstr "konnte Abbild mit ungültigem Zustand bei %X/%X nicht wiederherstellen, Block %d" -#: access/transam/xlogreader.c:2072 access/transam/xlogreader.c:2089 +#: access/transam/xlogreader.c:2100 access/transam/xlogreader.c:2117 #, c-format msgid "could not restore image at %X/%X compressed with %s not supported by build, block %d" msgstr "konnte Abbild bei %X/%X nicht wiederherstellen, komprimiert mit %s, nicht unterstützt von dieser Installation, Block %d" -#: access/transam/xlogreader.c:2098 +#: access/transam/xlogreader.c:2126 #, c-format msgid "could not restore image at %X/%X compressed with unknown method, block %d" msgstr "konnte Abbild bei %X/%X nicht wiederherstellen, komprimiert mit unbekannter Methode, Block %d" -#: access/transam/xlogreader.c:2106 +#: access/transam/xlogreader.c:2134 #, c-format msgid "could not decompress image at %X/%X, block %d" msgstr "konnte Abbild bei %X/%X nicht dekomprimieren, Block %d" @@ -2947,12 +2947,17 @@ msgstr "starte Point-in-Time-Recovery bis zum frühesten konsistenten Punkt" msgid "starting archive recovery" msgstr "starte Wiederherstellung aus Archiv" -#: access/transam/xlogrecovery.c:651 +#: access/transam/xlogrecovery.c:635 +#, c-format +msgid "starting backup recovery with redo LSN %X/%X, checkpoint LSN %X/%X, on timeline ID %u" +msgstr "starte Wiederherstellung aus Backup mit Redo-LSN %X/%X, Checkpoint-LSN %X/%X, auf Zeitleisten-ID %u" + +#: access/transam/xlogrecovery.c:667 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "konnte die vom Checkpoint-Datensatz referenzierte Redo-Position nicht finden" -#: access/transam/xlogrecovery.c:652 access/transam/xlogrecovery.c:662 +#: access/transam/xlogrecovery.c:668 access/transam/xlogrecovery.c:678 #, c-format msgid "" "If you are restoring from a backup, touch \"%s/recovery.signal\" and add required recovery options.\n" @@ -2963,399 +2968,409 @@ msgstr "" "Wenn Sie gerade kein Backup wiederherstellen, dann versuchen Sie, die Datei »%s/backup_label« zu entfernen.\n" "Vorsicht: Wenn ein Backup wiederhergestellt wird und »%s/backup_label« gelöscht wird, dann wird das den Cluster verfälschen." -#: access/transam/xlogrecovery.c:661 +#: access/transam/xlogrecovery.c:677 #, c-format msgid "could not locate required checkpoint record" msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden" -#: access/transam/xlogrecovery.c:690 commands/tablespace.c:685 +#: access/transam/xlogrecovery.c:706 commands/tablespace.c:685 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" -#: access/transam/xlogrecovery.c:722 access/transam/xlogrecovery.c:728 +#: access/transam/xlogrecovery.c:738 access/transam/xlogrecovery.c:744 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ignoriere Datei »%s«, weil keine Datei »%s« existiert" -#: access/transam/xlogrecovery.c:724 +#: access/transam/xlogrecovery.c:740 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Datei »%s« wurde in »%s« umbenannt." -#: access/transam/xlogrecovery.c:730 +#: access/transam/xlogrecovery.c:746 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Konnte Datei »%s« nicht in »%s« umbenennen: %m." -#: access/transam/xlogrecovery.c:784 +#: access/transam/xlogrecovery.c:785 +#, c-format +msgid "restarting backup recovery with redo LSN %X/%X" +msgstr "starte Wiederherstellung aus Backup neu mit Redo-LSN %X/%X" + +#: access/transam/xlogrecovery.c:810 #, c-format msgid "could not locate a valid checkpoint record" msgstr "konnte keinen gültigen Checkpoint-Datensatz finden" -#: access/transam/xlogrecovery.c:808 +#: access/transam/xlogrecovery.c:834 #, 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/xlogrecovery.c:810 +#: access/transam/xlogrecovery.c:836 #, 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/xlogrecovery.c:824 +#: access/transam/xlogrecovery.c:850 #, 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/xlogrecovery.c:852 +#: access/transam/xlogrecovery.c:878 #, c-format msgid "invalid next transaction ID" msgstr "ungültige nächste Transaktions-ID" -#: access/transam/xlogrecovery.c:857 +#: access/transam/xlogrecovery.c:883 #, c-format msgid "invalid redo in checkpoint record" msgstr "ungültiges Redo im Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:868 +#: access/transam/xlogrecovery.c:894 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint" -#: access/transam/xlogrecovery.c:897 +#: access/transam/xlogrecovery.c:923 #, 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/xlogrecovery.c:901 +#: access/transam/xlogrecovery.c:927 #, 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/xlogrecovery.c:944 +#: access/transam/xlogrecovery.c:970 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "Daten in backup_label stimmen nicht mit Kontrolldatei überein" -#: access/transam/xlogrecovery.c:945 +#: access/transam/xlogrecovery.c:971 #, 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/xlogrecovery.c:999 +#: access/transam/xlogrecovery.c:1025 #, c-format msgid "using recovery command file \"%s\" is not supported" msgstr "Verwendung von Recovery-Befehlsdatei »%s« wird nicht unterstützt" -#: access/transam/xlogrecovery.c:1064 +#: access/transam/xlogrecovery.c:1090 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "Standby-Modus wird von Servern im Einzelbenutzermodus nicht unterstützt" -#: access/transam/xlogrecovery.c:1081 +#: access/transam/xlogrecovery.c:1107 #, c-format msgid "specified neither primary_conninfo nor restore_command" msgstr "weder primary_conninfo noch restore_command angegeben" -#: access/transam/xlogrecovery.c:1082 +#: access/transam/xlogrecovery.c:1108 #, c-format msgid "The database server will regularly poll the pg_wal subdirectory to check for files placed there." msgstr "Der Datenbankserver prüft das Unterverzeichnis pg_wal regelmäßig auf dort abgelegte Dateien." -#: access/transam/xlogrecovery.c:1090 +#: access/transam/xlogrecovery.c:1116 #, c-format msgid "must specify restore_command when standby mode is not enabled" msgstr "restore_command muss angegeben werden, wenn der Standby-Modus nicht eingeschaltet ist" -#: access/transam/xlogrecovery.c:1128 +#: access/transam/xlogrecovery.c:1154 #, c-format msgid "recovery target timeline %u does not exist" msgstr "recovery_target_timeline %u existiert nicht" -#: access/transam/xlogrecovery.c:1278 +#: access/transam/xlogrecovery.c:1304 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "Gelesene Zeitleisten-ID ist %u, aber %u wurde erwartet." -#: access/transam/xlogrecovery.c:1660 +#: access/transam/xlogrecovery.c:1686 #, c-format msgid "redo starts at %X/%X" msgstr "Redo beginnt bei %X/%X" -#: access/transam/xlogrecovery.c:1673 +#: access/transam/xlogrecovery.c:1699 #, c-format msgid "redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%X" msgstr "Redo im Gang, abgelaufene Zeit: %ld.%02d s, aktuelle LSN: %X/%X" -#: access/transam/xlogrecovery.c:1765 +#: access/transam/xlogrecovery.c:1791 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "angeforderter Recovery-Endpunkt ist vor konsistentem Recovery-Punkt" -#: access/transam/xlogrecovery.c:1797 +#: access/transam/xlogrecovery.c:1823 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "Redo fertig bei %X/%X Systembenutzung: %s" -#: access/transam/xlogrecovery.c:1803 +#: access/transam/xlogrecovery.c:1829 #, c-format msgid "last completed transaction was at log time %s" msgstr "letzte vollständige Transaktion war bei Logzeit %s" -#: access/transam/xlogrecovery.c:1812 +#: access/transam/xlogrecovery.c:1838 #, c-format msgid "redo is not required" msgstr "Redo nicht nötig" -#: access/transam/xlogrecovery.c:1823 +#: access/transam/xlogrecovery.c:1849 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "Wiederherstellung endete bevor das konfigurierte Wiederherstellungsziel erreicht wurde" -#: access/transam/xlogrecovery.c:1998 +#: access/transam/xlogrecovery.c:2024 #, 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/xlogrecovery.c:2065 +#: access/transam/xlogrecovery.c:2091 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "unerwarteter Verzeichniseintrag »%s« in %s gefunden" -#: access/transam/xlogrecovery.c:2067 +#: access/transam/xlogrecovery.c:2093 #, 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/xlogrecovery.c:2068 +#: access/transam/xlogrecovery.c:2094 #, 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/xlogrecovery.c:2142 +#: access/transam/xlogrecovery.c:2146 +#, c-format +msgid "completed backup recovery with redo LSN %X/%X and end LSN %X/%X" +msgstr "Wiederherstellung aus Backup abgeschlossen mit Redo-LSN %X/%X und End-LSN %X/%X" + +#: access/transam/xlogrecovery.c:2176 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X" #. translator: %s is a WAL record description -#: access/transam/xlogrecovery.c:2180 +#: access/transam/xlogrecovery.c:2214 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "WAL-Redo bei %X/%X für %s" -#: access/transam/xlogrecovery.c:2276 +#: access/transam/xlogrecovery.c:2310 #, 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/xlogrecovery.c:2285 +#: access/transam/xlogrecovery.c:2319 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (nach %u) im Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:2301 +#: access/transam/xlogrecovery.c:2335 #, 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/xlogrecovery.c:2485 access/transam/xlogrecovery.c:2761 +#: access/transam/xlogrecovery.c:2519 access/transam/xlogrecovery.c:2795 #, c-format msgid "recovery stopping after reaching consistency" msgstr "Wiederherstellung beendet nachdem Konsistenz erreicht wurde" -#: access/transam/xlogrecovery.c:2506 +#: access/transam/xlogrecovery.c:2540 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "Wiederherstellung beendet vor WAL-Position (LSN) »%X/%X«" -#: access/transam/xlogrecovery.c:2596 +#: access/transam/xlogrecovery.c:2630 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "Wiederherstellung beendet vor Commit der Transaktion %u, Zeit %s" -#: access/transam/xlogrecovery.c:2603 +#: access/transam/xlogrecovery.c:2637 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "Wiederherstellung beendet vor Abbruch der Transaktion %u, Zeit %s" -#: access/transam/xlogrecovery.c:2656 +#: access/transam/xlogrecovery.c:2690 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "Wiederherstellung beendet bei Restore-Punkt »%s«, Zeit %s" -#: access/transam/xlogrecovery.c:2674 +#: access/transam/xlogrecovery.c:2708 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "Wiederherstellung beendet nach WAL-Position (LSN) »%X/%X«" -#: access/transam/xlogrecovery.c:2741 +#: access/transam/xlogrecovery.c:2775 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "Wiederherstellung beendet nach Commit der Transaktion %u, Zeit %s" -#: access/transam/xlogrecovery.c:2749 +#: access/transam/xlogrecovery.c:2783 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "Wiederherstellung beendet nach Abbruch der Transaktion %u, Zeit %s" -#: access/transam/xlogrecovery.c:2830 +#: access/transam/xlogrecovery.c:2864 #, c-format msgid "pausing at the end of recovery" msgstr "pausiere am Ende der Wiederherstellung" -#: access/transam/xlogrecovery.c:2831 +#: access/transam/xlogrecovery.c:2865 #, c-format msgid "Execute pg_wal_replay_resume() to promote." msgstr "Führen Sie pg_wal_replay_resume() aus, um den Server zum Primärserver zu befördern." -#: access/transam/xlogrecovery.c:2834 access/transam/xlogrecovery.c:4644 +#: access/transam/xlogrecovery.c:2868 access/transam/xlogrecovery.c:4678 #, c-format msgid "recovery has paused" msgstr "Wiederherstellung wurde pausiert" -#: access/transam/xlogrecovery.c:2835 +#: access/transam/xlogrecovery.c:2869 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Führen Sie pg_wal_replay_resume() aus um fortzusetzen." -#: access/transam/xlogrecovery.c:3101 +#: access/transam/xlogrecovery.c:3135 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "unerwartete Zeitleisten-ID %u in Logsegment %s, Offset %u" -#: access/transam/xlogrecovery.c:3306 +#: access/transam/xlogrecovery.c:3340 #, 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/xlogrecovery.c:3312 +#: access/transam/xlogrecovery.c:3346 #, 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/xlogrecovery.c:3961 +#: access/transam/xlogrecovery.c:3995 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei" -#: access/transam/xlogrecovery.c:3965 +#: access/transam/xlogrecovery.c:3999 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei" -#: access/transam/xlogrecovery.c:3983 +#: access/transam/xlogrecovery.c:4017 #, c-format msgid "invalid primary checkpoint record" msgstr "ungültiger primärer Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:3987 +#: access/transam/xlogrecovery.c:4021 #, c-format msgid "invalid checkpoint record" msgstr "ungültiger Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:3998 +#: access/transam/xlogrecovery.c:4032 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "ungültige Resource-Manager-ID im primären Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:4002 +#: access/transam/xlogrecovery.c:4036 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:4015 +#: access/transam/xlogrecovery.c:4049 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "ungültige xl_info im primären Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:4019 +#: access/transam/xlogrecovery.c:4053 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "ungültige xl_info im Checkpoint-Datensatz" -#: access/transam/xlogrecovery.c:4030 +#: access/transam/xlogrecovery.c:4064 #, c-format msgid "invalid length of primary checkpoint record" msgstr "ungültige Länge des primären Checkpoint-Datensatzes" -#: access/transam/xlogrecovery.c:4034 +#: access/transam/xlogrecovery.c:4068 #, c-format msgid "invalid length of checkpoint record" msgstr "ungültige Länge des Checkpoint-Datensatzes" -#: access/transam/xlogrecovery.c:4090 +#: access/transam/xlogrecovery.c:4124 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "neue Zeitleiste %u ist kein Kind der Datenbanksystemzeitleiste %u" -#: access/transam/xlogrecovery.c:4104 +#: access/transam/xlogrecovery.c:4138 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "neue Zeitleiste %u zweigte von der aktuellen Datenbanksystemzeitleiste %u vor dem aktuellen Wiederherstellungspunkt %X/%X ab" -#: access/transam/xlogrecovery.c:4123 +#: access/transam/xlogrecovery.c:4157 #, c-format msgid "new target timeline is %u" msgstr "neue Zielzeitleiste ist %u" -#: access/transam/xlogrecovery.c:4326 +#: access/transam/xlogrecovery.c:4360 #, c-format msgid "WAL receiver process shutdown requested" msgstr "Herunterfahren des WAL-Receiver-Prozesses verlangt" -#: access/transam/xlogrecovery.c:4389 +#: access/transam/xlogrecovery.c:4423 #, c-format msgid "received promote request" msgstr "Anforderung zum Befördern empfangen" -#: access/transam/xlogrecovery.c:4402 +#: access/transam/xlogrecovery.c:4436 #, c-format msgid "promote trigger file found: %s" msgstr "Promote-Triggerdatei gefunden: %s" -#: access/transam/xlogrecovery.c:4410 +#: access/transam/xlogrecovery.c:4444 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "konnte »stat« für Promote-Triggerdatei »%s« nicht ausführen: %m" -#: access/transam/xlogrecovery.c:4635 +#: access/transam/xlogrecovery.c:4669 #, c-format msgid "hot standby is not possible because of insufficient parameter settings" msgstr "Hot Standby ist nicht möglich wegen unzureichender Parametereinstellungen" -#: access/transam/xlogrecovery.c:4636 access/transam/xlogrecovery.c:4663 -#: access/transam/xlogrecovery.c:4693 +#: access/transam/xlogrecovery.c:4670 access/transam/xlogrecovery.c:4697 +#: access/transam/xlogrecovery.c:4727 #, c-format msgid "%s = %d is a lower setting than on the primary server, where its value was %d." msgstr "%s = %d ist eine niedrigere Einstellung als auf dem Primärserver, wo der Wert %d war." -#: access/transam/xlogrecovery.c:4645 +#: access/transam/xlogrecovery.c:4679 #, c-format msgid "If recovery is unpaused, the server will shut down." msgstr "Wenn die Wiederherstellungspause beendet wird, wird der Server herunterfahren." -#: access/transam/xlogrecovery.c:4646 +#: access/transam/xlogrecovery.c:4680 #, c-format msgid "You can then restart the server after making the necessary configuration changes." msgstr "Sie können den Server dann neu starten, nachdem die nötigen Konfigurationsänderungen getätigt worden sind." -#: access/transam/xlogrecovery.c:4657 +#: access/transam/xlogrecovery.c:4691 #, c-format msgid "promotion is not possible because of insufficient parameter settings" msgstr "Beförderung ist nicht möglich wegen unzureichender Parametereinstellungen" -#: access/transam/xlogrecovery.c:4667 +#: access/transam/xlogrecovery.c:4701 #, c-format msgid "Restart the server after making the necessary configuration changes." msgstr "Starten Sie den Server neu, nachdem die nötigen Konfigurationsänderungen getätigt worden sind." -#: access/transam/xlogrecovery.c:4691 +#: access/transam/xlogrecovery.c:4725 #, c-format msgid "recovery aborted because of insufficient parameter settings" msgstr "Wiederherstellung abgebrochen wegen unzureichender Parametereinstellungen" -#: access/transam/xlogrecovery.c:4697 +#: access/transam/xlogrecovery.c:4731 #, c-format msgid "You can restart the server after making the necessary configuration changes." msgstr "Sie können den Server neu starten, nachdem die nötigen Konfigurationsänderungen getätigt worden sind." @@ -3553,7 +3568,7 @@ msgstr "nur Superuser oder Rollen mit den Privilegien der Rolle pg_write_server_ msgid "relative path not allowed for backup stored on server" msgstr "relativer Pfad nicht erlaubt für auf dem Server abgelegtes Backup" -#: backup/basebackup_server.c:102 commands/dbcommands.c:500 +#: backup/basebackup_server.c:102 commands/dbcommands.c:477 #: commands/tablespace.c:163 commands/tablespace.c:179 #: commands/tablespace.c:614 commands/tablespace.c:659 replication/slot.c:1558 #: storage/file/copydir.c:47 @@ -3778,16 +3793,16 @@ msgstr "Klausel IN SCHEMA kann nicht verwendet werden, wenn GRANT/REVOKE ON SCHE #: catalog/aclchk.c:1587 catalog/catalog.c:627 catalog/objectaddress.c:1543 #: catalog/pg_publication.c:510 commands/analyze.c:391 commands/copy.c:779 -#: commands/sequence.c:1663 commands/tablecmds.c:7271 commands/tablecmds.c:7427 -#: commands/tablecmds.c:7477 commands/tablecmds.c:7551 -#: commands/tablecmds.c:7621 commands/tablecmds.c:7733 -#: commands/tablecmds.c:7827 commands/tablecmds.c:7886 -#: commands/tablecmds.c:7975 commands/tablecmds.c:8005 -#: commands/tablecmds.c:8133 commands/tablecmds.c:8215 -#: commands/tablecmds.c:8371 commands/tablecmds.c:8489 -#: commands/tablecmds.c:12218 commands/tablecmds.c:12399 -#: commands/tablecmds.c:12559 commands/tablecmds.c:13723 -#: commands/tablecmds.c:16292 commands/trigger.c:954 parser/analyze.c:2506 +#: commands/sequence.c:1663 commands/tablecmds.c:7275 commands/tablecmds.c:7431 +#: commands/tablecmds.c:7481 commands/tablecmds.c:7555 +#: commands/tablecmds.c:7625 commands/tablecmds.c:7737 +#: commands/tablecmds.c:7831 commands/tablecmds.c:7890 +#: commands/tablecmds.c:7979 commands/tablecmds.c:8009 +#: commands/tablecmds.c:8137 commands/tablecmds.c:8219 +#: commands/tablecmds.c:8375 commands/tablecmds.c:8493 +#: commands/tablecmds.c:12226 commands/tablecmds.c:12407 +#: commands/tablecmds.c:12567 commands/tablecmds.c:13731 +#: commands/tablecmds.c:16300 commands/trigger.c:954 parser/analyze.c:2506 #: parser/parse_relation.c:725 parser/parse_target.c:1063 #: parser/parse_type.c:144 parser/parse_utilcmd.c:3435 #: parser/parse_utilcmd.c:3471 parser/parse_utilcmd.c:3513 utils/adt/acl.c:2869 @@ -3797,7 +3812,7 @@ msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "Spalte »%s« von Relation »%s« existiert nicht" #: catalog/aclchk.c:1850 catalog/objectaddress.c:1383 commands/sequence.c:1172 -#: commands/tablecmds.c:253 commands/tablecmds.c:17164 utils/adt/acl.c:2077 +#: commands/tablecmds.c:253 commands/tablecmds.c:17172 utils/adt/acl.c:2077 #: utils/adt/acl.c:2107 utils/adt/acl.c:2139 utils/adt/acl.c:2171 #: utils/adt/acl.c:2199 utils/adt/acl.c:2229 #, c-format @@ -4400,12 +4415,12 @@ msgstr "kann %s nicht löschen, weil andere Objekte davon abhängen" #: catalog/dependency.c:1194 catalog/dependency.c:1201 #: catalog/dependency.c:1212 commands/tablecmds.c:1328 -#: commands/tablecmds.c:14365 commands/tablespace.c:476 commands/user.c:1008 +#: commands/tablecmds.c:14373 commands/tablespace.c:476 commands/user.c:1008 #: commands/view.c:522 libpq/auth.c:329 replication/syncrep.c:1043 #: storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1421 utils/misc/guc.c:7402 -#: utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11873 -#: utils/misc/guc.c:11907 utils/misc/guc.c:11941 utils/misc/guc.c:11984 -#: utils/misc/guc.c:12026 +#: utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11880 +#: utils/misc/guc.c:11914 utils/misc/guc.c:11948 utils/misc/guc.c:11991 +#: utils/misc/guc.c:12033 #, c-format msgid "%s" msgstr "%s" @@ -4449,12 +4464,12 @@ msgid "System catalog modifications are currently disallowed." msgstr "Änderungen an Systemkatalogen sind gegenwärtig nicht erlaubt." #: catalog/heap.c:466 commands/tablecmds.c:2348 commands/tablecmds.c:2985 -#: commands/tablecmds.c:6861 +#: commands/tablecmds.c:6865 #, c-format msgid "tables can have at most %d columns" msgstr "Tabellen können höchstens %d Spalten haben" -#: catalog/heap.c:484 commands/tablecmds.c:7161 +#: catalog/heap.c:484 commands/tablecmds.c:7165 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "Spaltenname »%s« steht im Konflikt mit dem Namen einer Systemspalte" @@ -4530,100 +4545,100 @@ msgstr "Relfilenode-Wert ist im Binary-Upgrade-Modus nicht gesetzt" msgid "cannot add NO INHERIT constraint to partitioned table \"%s\"" msgstr "zur partitionierten Tabelle »%s« kann kein NO-INHERIT-Constraint hinzugefügt werden" -#: catalog/heap.c:2401 +#: catalog/heap.c:2402 #, c-format msgid "check constraint \"%s\" already exists" msgstr "Check-Constraint »%s« existiert bereits" -#: catalog/heap.c:2571 catalog/index.c:889 catalog/pg_constraint.c:689 -#: commands/tablecmds.c:8863 +#: catalog/heap.c:2572 catalog/index.c:889 catalog/pg_constraint.c:689 +#: commands/tablecmds.c:8867 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "Constraint »%s« existiert bereits für Relation »%s«" -#: catalog/heap.c:2578 +#: catalog/heap.c:2579 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "Constraint »%s« kollidiert mit nicht vererbtem Constraint für Relation »%s«" -#: catalog/heap.c:2589 +#: catalog/heap.c:2590 #, c-format msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" msgstr "Constraint »%s« kollidiert mit vererbtem Constraint für Relation »%s«" -#: catalog/heap.c:2599 +#: catalog/heap.c:2600 #, c-format msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" msgstr "Constraint »%s« kollidiert mit NOT-VALID-Constraint für Relation »%s«" -#: catalog/heap.c:2604 +#: catalog/heap.c:2605 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "Constraint »%s« wird mit geerbter Definition zusammengeführt" -#: catalog/heap.c:2709 +#: catalog/heap.c:2710 #, c-format msgid "cannot use generated column \"%s\" in column generation expression" msgstr "generierte Spalte »%s« kann nicht im Spaltengenerierungsausdruck verwendet werden" -#: catalog/heap.c:2711 +#: catalog/heap.c:2712 #, c-format msgid "A generated column cannot reference another generated column." msgstr "Eine generierte Spalte kann nicht auf eine andere generierte Spalte verweisen." -#: catalog/heap.c:2717 +#: catalog/heap.c:2718 #, c-format msgid "cannot use whole-row variable in column generation expression" msgstr "Variable mit Verweis auf die ganze Zeile kann nicht im Spaltengenerierungsausdruck verwendet werden" -#: catalog/heap.c:2718 +#: catalog/heap.c:2719 #, c-format msgid "This would cause the generated column to depend on its own value." msgstr "Dadurch würde die generierte Spalte von ihrem eigenen Wert abhängen." -#: catalog/heap.c:2771 +#: catalog/heap.c:2774 #, c-format msgid "generation expression is not immutable" msgstr "Generierungsausdruck ist nicht »immutable«" -#: catalog/heap.c:2799 rewrite/rewriteHandler.c:1290 +#: catalog/heap.c:2802 rewrite/rewriteHandler.c:1290 #, 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:2804 commands/prepare.c:334 parser/analyze.c:2730 +#: catalog/heap.c:2807 commands/prepare.c:334 parser/analyze.c:2730 #: parser/parse_target.c:594 parser/parse_target.c:882 #: parser/parse_target.c:892 rewrite/rewriteHandler.c:1295 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen." -#: catalog/heap.c:2851 +#: catalog/heap.c:2854 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "nur Verweise auf Tabelle »%s« sind im Check-Constraint zugelassen" -#: catalog/heap.c:3149 +#: catalog/heap.c:3152 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "nicht unterstützte Kombination aus ON COMMIT und Fremdschlüssel" -#: catalog/heap.c:3150 +#: catalog/heap.c:3153 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "Tabelle »%s« verweist auf »%s«, aber sie haben nicht die gleiche ON-COMMIT-Einstellung." -#: catalog/heap.c:3155 +#: catalog/heap.c:3158 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "kann eine Tabelle, die in einen Fremdschlüssel-Constraint eingebunden ist, nicht leeren" -#: catalog/heap.c:3156 +#: catalog/heap.c:3159 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "Tabelle »%s« verweist auf »%s«." -#: catalog/heap.c:3158 +#: catalog/heap.c:3161 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "Leeren Sie die Tabelle »%s« gleichzeitig oder verwenden Sie TRUNCATE ... CASCADE." @@ -4689,34 +4704,34 @@ msgstr "Index-Relfilenode-Wert 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:3646 +#: catalog/index.c:3663 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren" -#: catalog/index.c:3657 commands/indexcmds.c:3560 +#: catalog/index.c:3674 commands/indexcmds.c:3536 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "ungültiger Index einer TOAST-Tabelle kann nicht reindiziert werden" -#: catalog/index.c:3673 commands/indexcmds.c:3440 commands/indexcmds.c:3584 +#: catalog/index.c:3690 commands/indexcmds.c:3416 commands/indexcmds.c:3560 #: commands/tablecmds.c:3305 #, c-format msgid "cannot move system relation \"%s\"" msgstr "Systemrelation »%s« kann nicht verschoben werden" -#: catalog/index.c:3817 +#: catalog/index.c:3834 #, c-format msgid "index \"%s\" was reindexed" msgstr "Index »%s« wurde neu indiziert" -#: catalog/index.c:3954 +#: catalog/index.c:3971 #, 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" #: catalog/namespace.c:259 catalog/namespace.c:463 catalog/namespace.c:555 -#: commands/trigger.c:5812 +#: commands/trigger.c:5830 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" msgstr "Verweise auf andere Datenbanken sind nicht implementiert: »%s.%s.%s«" @@ -4788,7 +4803,7 @@ msgstr "Textsuchewörterbuch »%s« existiert nicht" msgid "text search template \"%s\" does not exist" msgstr "Textsuchevorlage »%s« existiert nicht" -#: catalog/namespace.c:2770 commands/tsearchcmds.c:1121 +#: catalog/namespace.c:2770 commands/tsearchcmds.c:1127 #: utils/cache/ts_cache.c:613 #, c-format msgid "text search configuration \"%s\" does not exist" @@ -4852,32 +4867,32 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "während einer parallelen Operation können keine temporären Tabellen erzeugt werden" #: catalog/namespace.c:4338 commands/tablespace.c:1236 commands/variable.c:64 -#: utils/misc/guc.c:12058 utils/misc/guc.c:12160 +#: utils/misc/guc.c:12065 utils/misc/guc.c:12167 #, c-format msgid "List syntax is invalid." msgstr "Die Listensyntax ist ungültig." #: catalog/objectaddress.c:1391 commands/policy.c:96 commands/policy.c:376 #: commands/tablecmds.c:247 commands/tablecmds.c:289 commands/tablecmds.c:2184 -#: commands/tablecmds.c:12335 +#: commands/tablecmds.c:12343 #, c-format msgid "\"%s\" is not a table" msgstr "»%s« ist keine Tabelle" #: catalog/objectaddress.c:1398 commands/tablecmds.c:259 -#: commands/tablecmds.c:17169 commands/view.c:119 +#: commands/tablecmds.c:17177 commands/view.c:119 #, c-format msgid "\"%s\" is not a view" msgstr "»%s« ist keine Sicht" #: catalog/objectaddress.c:1405 commands/matview.c:186 commands/tablecmds.c:265 -#: commands/tablecmds.c:17174 +#: commands/tablecmds.c:17182 #, c-format msgid "\"%s\" is not a materialized view" msgstr "»%s« ist keine materialisierte Sicht" #: catalog/objectaddress.c:1412 commands/tablecmds.c:283 -#: commands/tablecmds.c:17179 +#: commands/tablecmds.c:17187 #, c-format msgid "\"%s\" is not a foreign table" msgstr "»%s« ist keine Fremdtabelle" @@ -5638,7 +5653,7 @@ msgid "The partition is being detached concurrently or has an unfinished detach. msgstr "Die Partition wird nebenläufig abgetrennt oder hat eine unfertige Abtrennoperation." #: catalog/pg_inherits.c:596 commands/tablecmds.c:4488 -#: commands/tablecmds.c:15481 +#: commands/tablecmds.c:15489 #, c-format msgid "Use ALTER TABLE ... DETACH PARTITION ... FINALIZE to complete the pending detach operation." msgstr "Verwendet Sie ALTER TABLE ... DETACH PARTITION ... FINALIZE, um die unerledigte Abtrennoperation abzuschließen." @@ -6323,7 +6338,7 @@ msgstr "kann temporäre Tabellen anderer Sitzungen nicht clustern" msgid "there is no previously clustered index for table \"%s\"" msgstr "es gibt keinen bereits geclusterten Index für Tabelle »%s«" -#: commands/cluster.c:190 commands/tablecmds.c:14179 commands/tablecmds.c:16060 +#: commands/cluster.c:190 commands/tablecmds.c:14187 commands/tablecmds.c:16068 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "Index »%s« für Tabelle »%s« existiert nicht" @@ -6338,7 +6353,7 @@ msgstr "globaler Katalog kann nicht geclustert werden" msgid "cannot vacuum temporary tables of other sessions" msgstr "temporäre Tabellen anderer Sitzungen können nicht gevacuumt werden" -#: commands/cluster.c:511 commands/tablecmds.c:16070 +#: commands/cluster.c:511 commands/tablecmds.c:16078 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "»%s« ist kein Index für Tabelle »%s«" @@ -6398,7 +6413,7 @@ msgid "collation attribute \"%s\" not recognized" msgstr "Attribut »%s« für Sortierfolge unbekannt" #: commands/collationcmds.c:119 commands/collationcmds.c:125 -#: commands/define.c:389 commands/tablecmds.c:7808 +#: commands/define.c:389 commands/tablecmds.c:7812 #: replication/pgoutput/pgoutput.c:311 replication/pgoutput/pgoutput.c:334 #: replication/pgoutput/pgoutput.c:348 replication/pgoutput/pgoutput.c:358 #: replication/pgoutput/pgoutput.c:368 replication/pgoutput/pgoutput.c:378 @@ -6483,7 +6498,7 @@ msgstr "konnte Locale-Namen »%s« nicht in Sprach-Tag umwandeln: %s" msgid "must be superuser to import system collations" msgstr "nur Superuser können Systemsortierfolgen importieren" -#: commands/collationcmds.c:618 commands/copyfrom.c:1505 commands/copyto.c:679 +#: commands/collationcmds.c:618 commands/copyfrom.c:1509 commands/copyto.c:679 #: libpq/be-secure-common.c:81 #, c-format msgid "could not execute command \"%s\": %m" @@ -6725,7 +6740,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:784 commands/indexcmds.c:1850 commands/statscmds.c:243 +#: commands/copy.c:784 commands/indexcmds.c:1826 commands/statscmds.c:243 #: commands/tablecmds.c:2379 commands/tablecmds.c:3035 #: commands/tablecmds.c:3529 parser/parse_relation.c:3660 #: parser/parse_relation.c:3680 utils/adt/tsvector_op.c:2688 @@ -6804,37 +6819,37 @@ msgstr "COPY FREEZE kann nicht durchgeführt werden wegen vorheriger Aktivität msgid "cannot perform COPY FREEZE because the table was not created or truncated in the current subtransaction" msgstr "COPY FREEZE kann nicht durchgeführt werden, weil die Tabelle nicht in der aktuellen Transaktion erzeugt oder geleert wurde" -#: commands/copyfrom.c:1267 commands/copyto.c:611 +#: commands/copyfrom.c:1270 commands/copyto.c:611 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "Spalte »%s« mit FORCE_NOT_NULL wird von COPY nicht verwendet" -#: commands/copyfrom.c:1290 commands/copyto.c:634 +#: commands/copyfrom.c:1293 commands/copyto.c:634 #, c-format 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:1346 utils/mb/mbutils.c:385 #, c-format msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "Standardumwandlung von Kodierung »%s« nach »%s« existiert nicht" -#: commands/copyfrom.c:1524 +#: commands/copyfrom.c:1528 #, c-format msgid "COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \\copy." msgstr "Mit COPY FROM liest der PostgreSQL-Serverprozess eine Datei. Möglicherweise möchten Sie Funktionalität auf Client-Seite verwenden, wie zum Beispiel \\copy in psql." -#: commands/copyfrom.c:1537 commands/copyto.c:731 +#: commands/copyfrom.c:1541 commands/copyto.c:731 #, c-format msgid "\"%s\" is a directory" msgstr "»%s« ist ein Verzeichnis" -#: commands/copyfrom.c:1605 commands/copyto.c:301 libpq/be-secure-common.c:105 +#: commands/copyfrom.c:1609 commands/copyto.c:301 libpq/be-secure-common.c:105 #, c-format msgid "could not close pipe to external command: %m" msgstr "konnte Pipe zu externem Programm nicht schließen: %m" -#: commands/copyfrom.c:1620 commands/copyto.c:306 +#: commands/copyfrom.c:1624 commands/copyto.c:306 #, c-format msgid "program \"%s\" failed" msgstr "Programm »%s« fehlgeschlagen" @@ -7437,7 +7452,7 @@ msgid_plural "There are %d other sessions using the database." msgstr[0] "%d andere Sitzung verwendet die Datenbank." msgstr[1] "%d andere Sitzungen verwenden die Datenbank." -#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3848 +#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3847 #, c-format msgid "There is %d prepared transaction using the database." msgid_plural "There are %d prepared transactions using the database." @@ -7505,7 +7520,7 @@ msgstr "Verwenden Sie DROP AGGREGATE, um Aggregatfunktionen zu löschen." #: commands/dropcmds.c:158 commands/sequence.c:475 commands/tablecmds.c:3613 #: commands/tablecmds.c:3771 commands/tablecmds.c:3823 -#: commands/tablecmds.c:16487 tcop/utility.c:1332 +#: commands/tablecmds.c:16495 tcop/utility.c:1332 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "Relation »%s« existiert nicht, wird übersprungen" @@ -8548,218 +8563,218 @@ msgstr "nicht unterstützter %s-Constraint mit Partitionierungsschlüsseldefinit msgid "%s constraints cannot be used when partition keys include expressions." msgstr "%s-Constraints können nicht verwendet werden, wenn Partitionierungsschlüssel Ausdrücke enthalten." -#: commands/indexcmds.c:1037 +#: commands/indexcmds.c:1040 #, c-format msgid "unique constraint on partitioned table must include all partitioning columns" msgstr "Unique-Constraint für partitionierte Tabelle muss alle Partitionierungsspalten enthalten" -#: commands/indexcmds.c:1038 +#: commands/indexcmds.c:1041 #, c-format msgid "%s constraint on table \"%s\" lacks column \"%s\" which is part of the partition key." msgstr "Im %s-Constraint in Tabelle »%s« fehlt Spalte »%s«, welche Teil des Partitionierungsschlüssels ist." -#: commands/indexcmds.c:1057 commands/indexcmds.c:1076 +#: commands/indexcmds.c:1060 commands/indexcmds.c:1079 #, c-format msgid "index creation on system columns is not supported" msgstr "Indexerzeugung für Systemspalten wird nicht unterstützt" -#: commands/indexcmds.c:1276 tcop/utility.c:1518 +#: commands/indexcmds.c:1279 tcop/utility.c:1518 #, c-format msgid "cannot create unique index on partitioned table \"%s\"" msgstr "kann keinen Unique Index für partitionierte Tabelle »%s« erzeugen" -#: commands/indexcmds.c:1278 tcop/utility.c:1520 +#: commands/indexcmds.c:1281 tcop/utility.c:1520 #, c-format msgid "Table \"%s\" contains partitions that are foreign tables." msgstr "Tabelle »%s« enthält Partitionen, die Fremdtabellen sind." -#: commands/indexcmds.c:1767 +#: commands/indexcmds.c:1743 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "Funktionen im Indexprädikat müssen als IMMUTABLE markiert sein" -#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:2529 +#: commands/indexcmds.c:1821 parser/parse_utilcmd.c:2529 #: parser/parse_utilcmd.c:2664 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "Spalte »%s«, die im Schlüssel verwendet wird, existiert nicht" -#: commands/indexcmds.c:1869 parser/parse_utilcmd.c:1826 +#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:1826 #, c-format msgid "expressions are not supported in included columns" msgstr "in eingeschlossenen Spalten werden keine Ausdrücke unterstützt" -#: commands/indexcmds.c:1910 +#: commands/indexcmds.c:1886 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein" -#: commands/indexcmds.c:1925 +#: commands/indexcmds.c:1901 #, c-format msgid "including column does not support a collation" msgstr "inkludierte Spalte unterstützt keine Sortierfolge" -#: commands/indexcmds.c:1929 +#: commands/indexcmds.c:1905 #, c-format msgid "including column does not support an operator class" msgstr "inkludierte Spalte unterstützt keine Operatorklasse" -#: commands/indexcmds.c:1933 +#: commands/indexcmds.c:1909 #, c-format msgid "including column does not support ASC/DESC options" msgstr "inkludierte Spalte unterstützt die Optionen ASC/DESC nicht" -#: commands/indexcmds.c:1937 +#: commands/indexcmds.c:1913 #, c-format msgid "including column does not support NULLS FIRST/LAST options" msgstr "inkludierte Spalte unterstützt die Optionen NULLS FIRST/LAST nicht" -#: commands/indexcmds.c:1978 +#: commands/indexcmds.c:1954 #, c-format msgid "could not determine which collation to use for index expression" msgstr "konnte die für den Indexausdruck zu verwendende Sortierfolge nicht bestimmen" -#: commands/indexcmds.c:1986 commands/tablecmds.c:17510 commands/typecmds.c:807 +#: commands/indexcmds.c:1962 commands/tablecmds.c:17520 commands/typecmds.c:807 #: parser/parse_expr.c:2690 parser/parse_type.c:570 parser/parse_utilcmd.c:3796 #: utils/adt/misc.c:601 #, c-format msgid "collations are not supported by type %s" msgstr "Sortierfolgen werden von Typ %s nicht unterstützt" -#: commands/indexcmds.c:2051 +#: commands/indexcmds.c:2027 #, c-format msgid "operator %s is not commutative" msgstr "Operator %s ist nicht kommutativ" -#: commands/indexcmds.c:2053 +#: commands/indexcmds.c:2029 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "In Exclusion-Constraints können nur kommutative Operatoren verwendet werden." -#: commands/indexcmds.c:2079 +#: commands/indexcmds.c:2055 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "Operator %s ist kein Mitglied der Operatorfamilie »%s«" -#: commands/indexcmds.c:2082 +#: commands/indexcmds.c:2058 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "Der Exklusionsoperator muss in Beziehung zur Indexoperatorklasse des Constraints stehen." -#: commands/indexcmds.c:2117 +#: commands/indexcmds.c:2093 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "Zugriffsmethode »%s« unterstützt die Optionen ASC/DESC nicht" -#: commands/indexcmds.c:2122 +#: commands/indexcmds.c:2098 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "Zugriffsmethode »%s« unterstützt die Optionen NULLS FIRST/LAST nicht" -#: commands/indexcmds.c:2168 commands/tablecmds.c:17535 -#: commands/tablecmds.c:17541 commands/typecmds.c:2302 +#: commands/indexcmds.c:2144 commands/tablecmds.c:17545 +#: commands/tablecmds.c:17551 commands/typecmds.c:2302 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "Datentyp %s hat keine Standardoperatorklasse für Zugriffsmethode »%s«" -#: commands/indexcmds.c:2170 +#: commands/indexcmds.c:2146 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "Sie müssen für den Index eine Operatorklasse angeben oder eine Standardoperatorklasse für den Datentyp definieren." -#: commands/indexcmds.c:2199 commands/indexcmds.c:2207 +#: commands/indexcmds.c:2175 commands/indexcmds.c:2183 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«" -#: commands/indexcmds.c:2221 commands/typecmds.c:2290 +#: commands/indexcmds.c:2197 commands/typecmds.c:2290 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht" -#: commands/indexcmds.c:2311 +#: commands/indexcmds.c:2287 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "es gibt mehrere Standardoperatorklassen für Datentyp %s" -#: commands/indexcmds.c:2639 +#: commands/indexcmds.c:2615 #, c-format msgid "unrecognized REINDEX option \"%s\"" msgstr "unbekannte REINDEX-Option »%s«" -#: commands/indexcmds.c:2863 +#: commands/indexcmds.c:2839 #, c-format msgid "table \"%s\" has no indexes that can be reindexed concurrently" msgstr "Tabelle »%s« hat keine Indexe, die nebenläufig reindiziert werden können" -#: commands/indexcmds.c:2877 +#: commands/indexcmds.c:2853 #, c-format msgid "table \"%s\" has no indexes to reindex" msgstr "Tabelle »%s« hat keine zu reindizierenden Indexe" -#: commands/indexcmds.c:2917 commands/indexcmds.c:3421 -#: commands/indexcmds.c:3549 +#: commands/indexcmds.c:2893 commands/indexcmds.c:3397 +#: commands/indexcmds.c:3525 #, c-format msgid "cannot reindex system catalogs concurrently" msgstr "Systemkataloge können nicht nebenläufig reindiziert werden" -#: commands/indexcmds.c:2940 +#: commands/indexcmds.c:2916 #, c-format msgid "can only reindex the currently open database" msgstr "nur die aktuell geöffnete Datenbank kann reindiziert werden" -#: commands/indexcmds.c:3028 +#: commands/indexcmds.c:3004 #, c-format msgid "cannot reindex system catalogs concurrently, skipping all" msgstr "Systemkataloge können nicht nebenläufig reindiziert werden, werden alle übersprungen" -#: commands/indexcmds.c:3061 +#: commands/indexcmds.c:3037 #, c-format msgid "cannot move system relations, skipping all" msgstr "Systemrelationen können nicht verschoben werden, werden alle übersprungen" -#: commands/indexcmds.c:3107 +#: commands/indexcmds.c:3083 #, c-format msgid "while reindexing partitioned table \"%s.%s\"" msgstr "beim Reindizieren der partitionierten Tabelle »%s.%s«" -#: commands/indexcmds.c:3110 +#: commands/indexcmds.c:3086 #, c-format msgid "while reindexing partitioned index \"%s.%s\"" msgstr "beim Reindizieren des partitionierten Index »%s.%s«" -#: commands/indexcmds.c:3301 commands/indexcmds.c:4157 +#: commands/indexcmds.c:3277 commands/indexcmds.c:4133 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "Tabelle »%s.%s« wurde neu indiziert" -#: commands/indexcmds.c:3453 commands/indexcmds.c:3505 +#: commands/indexcmds.c:3429 commands/indexcmds.c:3481 #, c-format msgid "cannot reindex invalid index \"%s.%s\" concurrently, skipping" msgstr "ungültiger Index »%s.%s« kann nicht nebenläufig reindizert werden, wird übersprungen" -#: commands/indexcmds.c:3459 +#: commands/indexcmds.c:3435 #, c-format msgid "cannot reindex exclusion constraint index \"%s.%s\" concurrently, skipping" msgstr "Exclusion-Constraint-Index »%s.%s« kann nicht nebenläufig reindizert werden, wird übersprungen" -#: commands/indexcmds.c:3614 +#: commands/indexcmds.c:3590 #, c-format msgid "cannot reindex this type of relation concurrently" msgstr "diese Art Relation kann nicht nebenläufig reindiziert werden" -#: commands/indexcmds.c:3635 +#: commands/indexcmds.c:3611 #, c-format msgid "cannot move non-shared relation to tablespace \"%s\"" msgstr "nicht geteilte Relation kann nicht nach Tablespace »%s« verschoben werden" -#: commands/indexcmds.c:4138 commands/indexcmds.c:4150 +#: commands/indexcmds.c:4114 commands/indexcmds.c:4126 #, c-format msgid "index \"%s.%s\" was reindexed" msgstr "Index »%s.%s« wurde neu indiziert" -#: commands/indexcmds.c:4140 commands/indexcmds.c:4159 +#: commands/indexcmds.c:4116 commands/indexcmds.c:4135 #, c-format msgid "%s." msgstr "%s." @@ -9074,8 +9089,8 @@ msgstr "Operator-Attribut »%s« kann nicht geändert werden" #: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:149 #: commands/tablecmds.c:1609 commands/tablecmds.c:2197 #: commands/tablecmds.c:3423 commands/tablecmds.c:6312 -#: commands/tablecmds.c:9144 commands/tablecmds.c:17090 -#: commands/tablecmds.c:17125 commands/trigger.c:328 commands/trigger.c:1378 +#: commands/tablecmds.c:9148 commands/tablecmds.c:17098 +#: commands/tablecmds.c:17133 commands/trigger.c:328 commands/trigger.c:1378 #: commands/trigger.c:1488 rewrite/rewriteDefine.c:278 #: rewrite/rewriteDefine.c:957 rewrite/rewriteRemove.c:80 #, c-format @@ -9128,7 +9143,7 @@ msgid "cannot create a cursor WITH HOLD within security-restricted operation" msgstr "kann WITH-HOLD-Cursor nicht in einer sicherheitsbeschränkten Operation erzeugen" #: commands/portalcmds.c:189 commands/portalcmds.c:242 -#: executor/execCurrent.c:70 utils/adt/xml.c:2593 utils/adt/xml.c:2763 +#: executor/execCurrent.c:70 utils/adt/xml.c:2603 utils/adt/xml.c:2773 #, c-format msgid "cursor \"%s\" does not exist" msgstr "Cursor »%s« existiert nicht" @@ -9174,7 +9189,7 @@ msgid "must be superuser to create custom procedural language" msgstr "nur Superuser können maßgeschneiderte prozedurale Sprachen erzeugen" #: commands/publicationcmds.c:130 postmaster/postmaster.c:1222 -#: postmaster/postmaster.c:1321 utils/init/miscinit.c:1651 +#: postmaster/postmaster.c:1321 utils/init/miscinit.c:1659 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "ungültige Listensyntax für Parameter »%s«" @@ -9514,8 +9529,8 @@ msgstr "Sequenz muss im selben Schema wie die verknüpfte Tabelle sein" msgid "cannot change ownership of identity sequence" msgstr "kann Eigentümer einer Identitätssequenz nicht ändern" -#: commands/sequence.c:1679 commands/tablecmds.c:13870 -#: commands/tablecmds.c:16507 +#: commands/sequence.c:1679 commands/tablecmds.c:13878 +#: commands/tablecmds.c:16515 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "Sequenz »%s« ist mit Tabelle »%s« verknüpft." @@ -9585,12 +9600,12 @@ msgstr "doppelter Spaltenname in Statistikdefinition" msgid "duplicate expression in statistics definition" msgstr "doppelter Ausdruck in Statistikdefinition" -#: commands/statscmds.c:620 commands/tablecmds.c:8112 +#: commands/statscmds.c:620 commands/tablecmds.c:8116 #, c-format msgid "statistics target %d is too low" msgstr "Statistikziel %d ist zu niedrig" -#: commands/statscmds.c:628 commands/tablecmds.c:8120 +#: commands/statscmds.c:628 commands/tablecmds.c:8124 #, c-format msgid "lowering statistics target to %d" msgstr "setze Statistikziel auf %d herab" @@ -9642,7 +9657,7 @@ msgid "must be superuser to create subscriptions" msgstr "nur Superuser können Subskriptionen erzeugen" #: commands/subscriptioncmds.c:648 commands/subscriptioncmds.c:776 -#: replication/logical/tablesync.c:1229 replication/logical/worker.c:3738 +#: replication/logical/tablesync.c:1247 replication/logical/worker.c:3738 #, c-format msgid "could not connect to the publisher: %s" msgstr "konnte nicht mit dem Publikationsserver verbinden: %s" @@ -9755,7 +9770,7 @@ msgstr "Der Eigentümer einer Subskription muss ein Superuser sein." msgid "could not receive list of replicated tables from the publisher: %s" msgstr "konnte Liste der replizierten Tabellen nicht vom Publikationsserver empfangen: %s" -#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:809 +#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:819 #: replication/pgoutput/pgoutput.c:1072 #, c-format msgid "cannot use different column lists for table \"%s.%s\" in different publications" @@ -9848,7 +9863,7 @@ msgstr "materialisierte Sicht »%s« existiert nicht, wird übersprungen" msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Verwenden Sie DROP MATERIALIZED VIEW, um eine materialisierte Sicht zu löschen." -#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19017 +#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19027 #: parser/parse_utilcmd.c:2261 #, c-format msgid "index \"%s\" does not exist" @@ -9872,8 +9887,8 @@ msgstr "»%s« ist kein Typ" msgid "Use DROP TYPE to remove a type." msgstr "Verwenden Sie DROP TYPE, um einen Typen zu löschen." -#: commands/tablecmds.c:281 commands/tablecmds.c:13709 -#: commands/tablecmds.c:16210 +#: commands/tablecmds.c:281 commands/tablecmds.c:13717 +#: commands/tablecmds.c:16218 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "Fremdtabelle »%s« existiert nicht" @@ -9897,7 +9912,7 @@ msgstr "ON COMMIT kann nur mit temporären Tabellen verwendet werden" msgid "cannot create temporary table within security-restricted operation" msgstr "kann temporäre Tabelle nicht in einer sicherheitsbeschränkten Operation erzeugen" -#: commands/tablecmds.c:764 commands/tablecmds.c:15017 +#: commands/tablecmds.c:764 commands/tablecmds.c:15025 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "von der Relation »%s« würde mehrmals geerbt werden" @@ -9967,7 +9982,7 @@ msgstr "kann Fremdtabelle »%s« nicht leeren" msgid "cannot truncate temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren" -#: commands/tablecmds.c:2462 commands/tablecmds.c:14914 +#: commands/tablecmds.c:2462 commands/tablecmds.c:14922 #, c-format msgid "cannot inherit from partitioned table \"%s\"" msgstr "von partitionierter Tabelle »%s« kann nicht geerbt werden" @@ -9988,12 +10003,12 @@ msgstr "geerbte Relation »%s« ist keine Tabelle oder Fremdtabelle" msgid "cannot create a temporary relation as partition of permanent relation \"%s\"" msgstr "eine temporäre Relation kann nicht als Partition der permanenten Relation »%s« erzeugt werden" -#: commands/tablecmds.c:2496 commands/tablecmds.c:14893 +#: commands/tablecmds.c:2496 commands/tablecmds.c:14901 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "von temporärer Relation »%s« kann nicht geerbt werden" -#: commands/tablecmds.c:2506 commands/tablecmds.c:14901 +#: commands/tablecmds.c:2506 commands/tablecmds.c:14909 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "von temporärer Relation einer anderen Sitzung kann nicht geerbt werden" @@ -10048,7 +10063,7 @@ msgid "inherited column \"%s\" has a generation conflict" msgstr "geerbte Spalte »%s« hat einen Generierungskonflikt" #: commands/tablecmds.c:2717 commands/tablecmds.c:2772 -#: commands/tablecmds.c:12433 parser/parse_utilcmd.c:1302 +#: commands/tablecmds.c:12441 parser/parse_utilcmd.c:1302 #: parser/parse_utilcmd.c:1345 parser/parse_utilcmd.c:1754 #: parser/parse_utilcmd.c:1862 #, c-format @@ -10288,12 +10303,12 @@ msgstr "zu einer getypten Tabelle kann keine Spalte hinzugefügt werden" msgid "cannot add column to a partition" msgstr "zu einer Partition kann keine Spalte hinzugefügt werden" -#: commands/tablecmds.c:6784 commands/tablecmds.c:15144 +#: commands/tablecmds.c:6784 commands/tablecmds.c:15152 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "abgeleitete Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" -#: commands/tablecmds.c:6790 commands/tablecmds.c:15151 +#: commands/tablecmds.c:6790 commands/tablecmds.c:15159 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "abgeleitete Tabelle »%s« hat unterschiedliche Sortierfolge für Spalte »%s«" @@ -10303,937 +10318,937 @@ msgstr "abgeleitete Tabelle »%s« hat unterschiedliche Sortierfolge für Spalte msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "Definition von Spalte »%s« für abgeleitete Tabelle »%s« wird zusammengeführt" -#: commands/tablecmds.c:6847 +#: commands/tablecmds.c:6851 #, c-format msgid "cannot recursively add identity column to table that has child tables" msgstr "eine Identitätsspalte kann nicht rekursiv zu einer Tabelle hinzugefügt werden, die abgeleitete Tabellen hat" -#: commands/tablecmds.c:7091 +#: commands/tablecmds.c:7095 #, c-format msgid "column must be added to child tables too" msgstr "Spalte muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" -#: commands/tablecmds.c:7169 +#: commands/tablecmds.c:7173 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "Spalte »%s« von Relation »%s« existiert bereits, wird übersprungen" -#: commands/tablecmds.c:7176 +#: commands/tablecmds.c:7180 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "Spalte »%s« von Relation »%s« existiert bereits" -#: commands/tablecmds.c:7242 commands/tablecmds.c:12072 +#: commands/tablecmds.c:7246 commands/tablecmds.c:12080 #, c-format msgid "cannot remove constraint from only the partitioned table when partitions exist" msgstr "Constraint kann nicht nur von der partitionierten Tabelle entfernt werden, wenn Partitionen existieren" -#: commands/tablecmds.c:7243 commands/tablecmds.c:7560 -#: commands/tablecmds.c:8557 commands/tablecmds.c:12073 +#: commands/tablecmds.c:7247 commands/tablecmds.c:7564 +#: commands/tablecmds.c:8561 commands/tablecmds.c:12081 #, c-format msgid "Do not specify the ONLY keyword." msgstr "Lassen Sie das Schlüsselwort ONLY weg." -#: commands/tablecmds.c:7280 commands/tablecmds.c:7486 -#: commands/tablecmds.c:7628 commands/tablecmds.c:7742 -#: commands/tablecmds.c:7836 commands/tablecmds.c:7895 -#: commands/tablecmds.c:8014 commands/tablecmds.c:8153 -#: commands/tablecmds.c:8223 commands/tablecmds.c:8379 -#: commands/tablecmds.c:12227 commands/tablecmds.c:13732 -#: commands/tablecmds.c:16301 +#: commands/tablecmds.c:7284 commands/tablecmds.c:7490 +#: commands/tablecmds.c:7632 commands/tablecmds.c:7746 +#: commands/tablecmds.c:7840 commands/tablecmds.c:7899 +#: commands/tablecmds.c:8018 commands/tablecmds.c:8157 +#: commands/tablecmds.c:8227 commands/tablecmds.c:8383 +#: commands/tablecmds.c:12235 commands/tablecmds.c:13740 +#: commands/tablecmds.c:16309 #, c-format msgid "cannot alter system column \"%s\"" msgstr "Systemspalte »%s« kann nicht geändert werden" -#: commands/tablecmds.c:7286 commands/tablecmds.c:7634 +#: commands/tablecmds.c:7290 commands/tablecmds.c:7638 #, c-format msgid "column \"%s\" of relation \"%s\" is an identity column" msgstr "Spalte »%s« von Relation »%s« ist eine Identitätsspalte" -#: commands/tablecmds.c:7329 +#: commands/tablecmds.c:7333 #, c-format msgid "column \"%s\" is in a primary key" msgstr "Spalte »%s« ist in einem Primärschlüssel" -#: commands/tablecmds.c:7334 +#: commands/tablecmds.c:7338 #, c-format msgid "column \"%s\" is in index used as replica identity" msgstr "Spalte »%s« ist in einem Index, der als Replik-Identität verwendet wird" -#: commands/tablecmds.c:7357 +#: commands/tablecmds.c:7361 #, c-format msgid "column \"%s\" is marked NOT NULL in parent table" msgstr "Spalte »%s« ist in Elterntabelle als NOT NULL markiert" -#: commands/tablecmds.c:7557 commands/tablecmds.c:9040 +#: commands/tablecmds.c:7561 commands/tablecmds.c:9044 #, c-format msgid "constraint must be added to child tables too" msgstr "Constraint muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" -#: commands/tablecmds.c:7558 +#: commands/tablecmds.c:7562 #, c-format msgid "Column \"%s\" of relation \"%s\" is not already NOT NULL." msgstr "Spalte »%s« von Relation »%s« ist nicht bereits NOT NULL." -#: commands/tablecmds.c:7636 +#: commands/tablecmds.c:7640 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY instead." msgstr "Verwenden Sie stattdessen ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY." -#: commands/tablecmds.c:7641 +#: commands/tablecmds.c:7645 #, c-format msgid "column \"%s\" of relation \"%s\" is a generated column" msgstr "Spalte »%s« von Relation »%s« ist eine generierte Spalte" -#: commands/tablecmds.c:7644 +#: commands/tablecmds.c:7648 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION instead." msgstr "Verwenden Sie stattdessen ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION." -#: commands/tablecmds.c:7753 +#: commands/tablecmds.c:7757 #, c-format msgid "column \"%s\" of relation \"%s\" must be declared NOT NULL before identity can be added" msgstr "Spalte »%s« von Relation »%s« muss als NOT NULL deklariert werden, bevor Sie Identitätsspalte werden kann" -#: commands/tablecmds.c:7759 +#: commands/tablecmds.c:7763 #, c-format msgid "column \"%s\" of relation \"%s\" is already an identity column" msgstr "Spalte »%s« von Relation »%s« ist bereits eine Identitätsspalte" -#: commands/tablecmds.c:7765 +#: commands/tablecmds.c:7769 #, c-format msgid "column \"%s\" of relation \"%s\" already has a default value" msgstr "Spalte »%s« von Relation »%s« hat bereits einen Vorgabewert" -#: commands/tablecmds.c:7842 commands/tablecmds.c:7903 +#: commands/tablecmds.c:7846 commands/tablecmds.c:7907 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column" msgstr "Spalte »%s« von Relation »%s« ist keine Identitätsspalte" -#: commands/tablecmds.c:7908 +#: commands/tablecmds.c:7912 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column, skipping" msgstr "Spalte »%s« von Relation »%s« ist keine Identitätsspalte, wird übersprungen" -#: commands/tablecmds.c:7961 +#: commands/tablecmds.c:7965 #, c-format msgid "ALTER TABLE / DROP EXPRESSION must be applied to child tables too" msgstr "ALTER TABLE / DROP EXPRESSION muss auch auf abgeleitete Tabellen angewendet werden" -#: commands/tablecmds.c:7983 +#: commands/tablecmds.c:7987 #, c-format msgid "cannot drop generation expression from inherited column" msgstr "Generierungsausdruck von vererbter Spalte kann nicht gelöscht werden" -#: commands/tablecmds.c:8022 +#: commands/tablecmds.c:8026 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column" msgstr "Spalte »%s« von Relation »%s« ist keine gespeicherte generierte Spalte" -#: commands/tablecmds.c:8027 +#: commands/tablecmds.c:8031 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column, skipping" msgstr "Spalte »%s« von Relation »%s« ist keine gespeicherte generierte Spalte, wird übersprungen" -#: commands/tablecmds.c:8100 +#: commands/tablecmds.c:8104 #, c-format msgid "cannot refer to non-index column by number" msgstr "auf eine Nicht-Index-Spalte kann nicht per Nummer verwiesen werden" -#: commands/tablecmds.c:8143 +#: commands/tablecmds.c:8147 #, c-format msgid "column number %d of relation \"%s\" does not exist" msgstr "Spalte Nummer %d von Relation »%s« existiert nicht" -#: commands/tablecmds.c:8162 +#: commands/tablecmds.c:8166 #, c-format msgid "cannot alter statistics on included column \"%s\" of index \"%s\"" msgstr "Statistiken von eingeschlossener Spalte »%s« von Index »%s« können nicht geändert werden" -#: commands/tablecmds.c:8167 +#: commands/tablecmds.c:8171 #, c-format msgid "cannot alter statistics on non-expression column \"%s\" of index \"%s\"" msgstr "kann Statistiken von Spalte »%s« von Index »%s«, welche kein Ausdruck ist, nicht ändern" -#: commands/tablecmds.c:8169 +#: commands/tablecmds.c:8173 #, c-format msgid "Alter statistics on table column instead." msgstr "Ändern Sie stattdessen die Statistiken für die Tabellenspalte." -#: commands/tablecmds.c:8359 +#: commands/tablecmds.c:8363 #, c-format msgid "invalid storage type \"%s\"" msgstr "ungültiger Storage-Typ »%s«" -#: commands/tablecmds.c:8391 +#: commands/tablecmds.c:8395 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN" -#: commands/tablecmds.c:8436 +#: commands/tablecmds.c:8440 #, c-format msgid "cannot drop column from typed table" msgstr "aus einer getypten Tabelle können keine Spalten gelöscht werden" -#: commands/tablecmds.c:8495 +#: commands/tablecmds.c:8499 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "Spalte »%s« von Relation »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:8508 +#: commands/tablecmds.c:8512 #, c-format msgid "cannot drop system column \"%s\"" msgstr "Systemspalte »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:8518 +#: commands/tablecmds.c:8522 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "geerbte Spalte »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:8531 +#: commands/tablecmds.c:8535 #, c-format msgid "cannot drop column \"%s\" because it is part of the partition key of relation \"%s\"" msgstr "Spalte »%s« kann nicht gelöscht werden, weil sie Teil des Partitionierungsschlüssels von Relation »%s« ist" -#: commands/tablecmds.c:8556 +#: commands/tablecmds.c:8560 #, c-format msgid "cannot drop column from only the partitioned table when partitions exist" msgstr "Spalte kann nicht nur aus der partitionierten Tabelle gelöscht werden, wenn Partitionen existieren" -#: commands/tablecmds.c:8760 +#: commands/tablecmds.c:8764 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX is not supported on partitioned tables" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX wird für partitionierte Tabellen nicht unterstützt" -#: commands/tablecmds.c:8785 +#: commands/tablecmds.c:8789 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX benennt Index »%s« um in »%s«" -#: commands/tablecmds.c:9122 +#: commands/tablecmds.c:9126 #, c-format msgid "cannot use ONLY for foreign key on partitioned table \"%s\" referencing relation \"%s\"" msgstr "ONLY nicht möglich für Fremdschlüssel für partitionierte Tabelle »%s« verweisend auf Relation »%s«" -#: commands/tablecmds.c:9128 +#: commands/tablecmds.c:9132 #, c-format msgid "cannot add NOT VALID foreign key on partitioned table \"%s\" referencing relation \"%s\"" msgstr "Hinzufügen von Fremdschlüssel mit NOT VALID nicht möglich für partitionierte Tabelle »%s« verweisend auf Relation »%s«" -#: commands/tablecmds.c:9131 +#: commands/tablecmds.c:9135 #, c-format msgid "This feature is not yet supported on partitioned tables." msgstr "Dieses Feature wird für partitionierte Tabellen noch nicht unterstützt." -#: commands/tablecmds.c:9138 commands/tablecmds.c:9604 +#: commands/tablecmds.c:9142 commands/tablecmds.c:9608 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle" -#: commands/tablecmds.c:9161 +#: commands/tablecmds.c:9165 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "Constraints für permanente Tabellen dürfen nur auf permanente Tabellen verweisen" -#: commands/tablecmds.c:9168 +#: commands/tablecmds.c:9172 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" msgstr "Constraints für ungeloggte Tabellen dürfen nur auf permanente oder ungeloggte Tabellen verweisen" -#: commands/tablecmds.c:9174 +#: commands/tablecmds.c:9178 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "Constraints für temporäre Tabellen dürfen nur auf temporäre Tabellen verweisen" -#: commands/tablecmds.c:9178 +#: commands/tablecmds.c:9182 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "Constraints für temporäre Tabellen müssen temporäre Tabellen dieser Sitzung beinhalten" -#: commands/tablecmds.c:9252 commands/tablecmds.c:9258 +#: commands/tablecmds.c:9256 commands/tablecmds.c:9262 #, c-format msgid "invalid %s action for foreign key constraint containing generated column" msgstr "ungültige %s-Aktion für Fremdschlüssel-Constraint, der eine generierte Spalte enthält" -#: commands/tablecmds.c:9274 +#: commands/tablecmds.c:9278 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "Anzahl der Quell- und Zielspalten im Fremdschlüssel stimmt nicht überein" -#: commands/tablecmds.c:9381 +#: commands/tablecmds.c:9385 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "Fremdschlüssel-Constraint »%s« kann nicht implementiert werden" -#: commands/tablecmds.c:9383 +#: commands/tablecmds.c:9387 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Schlüsselspalten »%s« und »%s« haben inkompatible Typen: %s und %s." -#: commands/tablecmds.c:9540 +#: commands/tablecmds.c:9544 #, c-format msgid "column \"%s\" referenced in ON DELETE SET action must be part of foreign key" msgstr "Spalte »%s«, auf die in der ON-DELETE-SET-Aktion verwiesen wird, muss Teil des Fremdschlüssels sein" -#: commands/tablecmds.c:9813 commands/tablecmds.c:10281 +#: commands/tablecmds.c:9817 commands/tablecmds.c:10285 #: parser/parse_utilcmd.c:796 parser/parse_utilcmd.c:925 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "Fremdschlüssel-Constraints auf Fremdtabellen werden nicht unterstützt" -#: commands/tablecmds.c:10833 commands/tablecmds.c:11111 -#: commands/tablecmds.c:12029 commands/tablecmds.c:12104 +#: commands/tablecmds.c:10837 commands/tablecmds.c:11115 +#: commands/tablecmds.c:12037 commands/tablecmds.c:12112 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "Constraint »%s« von Relation »%s« existiert nicht" -#: commands/tablecmds.c:10840 +#: commands/tablecmds.c:10844 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "Constraint »%s« von Relation »%s« ist kein Fremdschlüssel-Constraint" -#: commands/tablecmds.c:10878 +#: commands/tablecmds.c:10882 #, c-format msgid "cannot alter constraint \"%s\" on relation \"%s\"" msgstr "Constraint »%s« von Relation »%s« kann nicht geändert werden" -#: commands/tablecmds.c:10881 +#: commands/tablecmds.c:10885 #, c-format msgid "Constraint \"%s\" is derived from constraint \"%s\" of relation \"%s\"." msgstr "Constraint »%s« ist von Constraint »%s« von Relation »%s« abgeleitet." -#: commands/tablecmds.c:10883 +#: commands/tablecmds.c:10887 #, c-format msgid "You may alter the constraint it derives from, instead." msgstr "Sie können stattdessen den Constraint, von dem er abgeleitet ist, ändern." -#: commands/tablecmds.c:11119 +#: commands/tablecmds.c:11123 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" msgstr "Constraint »%s« von Relation »%s« ist kein Fremdschlüssel- oder Check-Constraint" -#: commands/tablecmds.c:11197 +#: commands/tablecmds.c:11201 #, c-format msgid "constraint must be validated on child tables too" msgstr "Constraint muss ebenso in den abgeleiteten Tabellen validiert werden" -#: commands/tablecmds.c:11287 +#: commands/tablecmds.c:11291 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "Spalte »%s«, die im Fremdschlüssel verwendet wird, existiert nicht" -#: commands/tablecmds.c:11293 +#: commands/tablecmds.c:11297 #, c-format msgid "system columns cannot be used in foreign keys" msgstr "Systemspalten können nicht in Fremdschlüsseln verwendet werden" -#: commands/tablecmds.c:11297 +#: commands/tablecmds.c:11301 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "Fremdschlüssel kann nicht mehr als %d Schlüssel haben" -#: commands/tablecmds.c:11363 +#: commands/tablecmds.c:11367 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "aufschiebbarer Primärschlüssel kann nicht für Tabelle »%s«, auf die verwiesen wird, verwendet werden" -#: commands/tablecmds.c:11380 +#: commands/tablecmds.c:11384 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Primärschlüssel" -#: commands/tablecmds.c:11445 +#: commands/tablecmds.c:11453 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "die Liste der Spalten, auf die ein Fremdschlüssel verweist, darf keine doppelten Einträge enthalten" -#: commands/tablecmds.c:11539 +#: commands/tablecmds.c:11547 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "aufschiebbarer Unique-Constraint kann nicht für Tabelle »%s«, auf die verwiesen wird, verwendet werden" -#: commands/tablecmds.c:11544 +#: commands/tablecmds.c:11552 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Unique-Constraint, der auf die angegebenen Schlüssel passt" -#: commands/tablecmds.c:11985 +#: commands/tablecmds.c:11993 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "geerbter Constraint »%s« von Relation »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:12035 +#: commands/tablecmds.c:12043 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "Constraint »%s« von Relation »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:12211 +#: commands/tablecmds.c:12219 #, c-format msgid "cannot alter column type of typed table" msgstr "Spaltentyp einer getypten Tabelle kann nicht geändert werden" -#: commands/tablecmds.c:12238 +#: commands/tablecmds.c:12246 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "kann vererbte Spalte »%s« nicht ändern" -#: commands/tablecmds.c:12247 +#: commands/tablecmds.c:12255 #, c-format msgid "cannot alter column \"%s\" because it is part of the partition key of relation \"%s\"" msgstr "Spalte »%s« kann nicht geändert werden, weil sie Teil des Partitionierungsschlüssels von Relation »%s« ist" -#: commands/tablecmds.c:12297 +#: commands/tablecmds.c:12305 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" msgstr "Ergebnis der USING-Klausel für Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" -#: commands/tablecmds.c:12300 +#: commands/tablecmds.c:12308 #, c-format msgid "You might need to add an explicit cast." msgstr "Sie müssen möglicherweise eine ausdrückliche Typumwandlung hinzufügen." -#: commands/tablecmds.c:12304 +#: commands/tablecmds.c:12312 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:12307 +#: commands/tablecmds.c:12315 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Sie müssen möglicherweise »USING %s::%s« angeben." -#: commands/tablecmds.c:12406 +#: commands/tablecmds.c:12414 #, c-format msgid "cannot alter inherited column \"%s\" of relation \"%s\"" msgstr "geerbte Spalte »%s« von Relation »%s« kann nicht geändert werden" -#: commands/tablecmds.c:12434 +#: commands/tablecmds.c:12442 #, c-format msgid "USING expression contains a whole-row table reference." msgstr "USING-Ausdruck enthält einen Verweis auf die ganze Zeile der Tabelle." -#: commands/tablecmds.c:12445 +#: commands/tablecmds.c:12453 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "Typ der vererbten Spalte »%s« muss ebenso in den abgeleiteten Tabellen geändert werden" -#: commands/tablecmds.c:12570 +#: commands/tablecmds.c:12578 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "Typ der Spalte »%s« kann nicht zweimal geändert werden" -#: commands/tablecmds.c:12608 +#: commands/tablecmds.c:12616 #, c-format msgid "generation expression for column \"%s\" cannot be cast automatically to type %s" msgstr "Generierungsausdruck der Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" -#: commands/tablecmds.c:12613 +#: commands/tablecmds.c:12621 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "Vorgabewert der Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" -#: commands/tablecmds.c:12694 +#: commands/tablecmds.c:12702 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "Typ einer Spalte, die von einer Sicht oder Regel verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:12695 commands/tablecmds.c:12714 -#: commands/tablecmds.c:12732 +#: commands/tablecmds.c:12703 commands/tablecmds.c:12722 +#: commands/tablecmds.c:12740 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s hängt von Spalte »%s« ab" -#: commands/tablecmds.c:12713 +#: commands/tablecmds.c:12721 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "Typ einer Spalte, die in einer Trigger-Definition verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:12731 +#: commands/tablecmds.c:12739 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "Typ einer Spalte, die in einer Policy-Definition verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:12762 +#: commands/tablecmds.c:12770 #, c-format msgid "cannot alter type of a column used by a generated column" msgstr "Typ einer Spalte, die von einer generierten Spalte verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:12763 +#: commands/tablecmds.c:12771 #, c-format msgid "Column \"%s\" is used by generated column \"%s\"." msgstr "Spalte »%s« wird von generierter Spalte »%s« verwendet." -#: commands/tablecmds.c:13840 commands/tablecmds.c:13852 +#: commands/tablecmds.c:13848 commands/tablecmds.c:13860 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "kann Eigentümer des Index »%s« nicht ändern" -#: commands/tablecmds.c:13842 commands/tablecmds.c:13854 +#: commands/tablecmds.c:13850 commands/tablecmds.c:13862 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Ändern Sie stattdessen den Eigentümer der Tabelle des Index." -#: commands/tablecmds.c:13868 +#: commands/tablecmds.c:13876 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "kann Eigentümer der Sequenz »%s« nicht ändern" -#: commands/tablecmds.c:13882 commands/tablecmds.c:17201 -#: commands/tablecmds.c:17220 +#: commands/tablecmds.c:13890 commands/tablecmds.c:17209 +#: commands/tablecmds.c:17228 #, c-format msgid "Use ALTER TYPE instead." msgstr "Verwenden Sie stattdessen ALTER TYPE." -#: commands/tablecmds.c:13891 +#: commands/tablecmds.c:13899 #, c-format msgid "cannot change owner of relation \"%s\"" msgstr "kann Eigentümer der Relation »%s« nicht ändern" -#: commands/tablecmds.c:14253 +#: commands/tablecmds.c:14261 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig" -#: commands/tablecmds.c:14330 +#: commands/tablecmds.c:14338 #, c-format msgid "cannot set options for relation \"%s\"" msgstr "für Relation »%s« können keine Optionen gesetzt werden" -#: commands/tablecmds.c:14364 commands/view.c:521 +#: commands/tablecmds.c:14372 commands/view.c:521 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "WITH CHECK OPTION wird nur für automatisch aktualisierbare Sichten unterstützt" -#: commands/tablecmds.c:14614 +#: commands/tablecmds.c:14622 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "nur Tabellen, Indexe und materialisierte Sichten existieren in Tablespaces" -#: commands/tablecmds.c:14626 +#: commands/tablecmds.c:14634 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "Relationen können nicht in den oder aus dem Tablespace »pg_global« verschoben werden" -#: commands/tablecmds.c:14718 +#: commands/tablecmds.c:14726 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "Abbruch weil Sperre für Relation »%s.%s« nicht verfügbar ist" -#: commands/tablecmds.c:14734 +#: commands/tablecmds.c:14742 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "keine passenden Relationen in Tablespace »%s« gefunden" -#: commands/tablecmds.c:14852 +#: commands/tablecmds.c:14860 #, c-format msgid "cannot change inheritance of typed table" msgstr "Vererbung einer getypten Tabelle kann nicht geändert werden" -#: commands/tablecmds.c:14857 commands/tablecmds.c:15413 +#: commands/tablecmds.c:14865 commands/tablecmds.c:15421 #, c-format msgid "cannot change inheritance of a partition" msgstr "Vererbung einer Partition kann nicht geändert werden" -#: commands/tablecmds.c:14862 +#: commands/tablecmds.c:14870 #, c-format msgid "cannot change inheritance of partitioned table" msgstr "Vererbung einer partitionierten Tabelle kann nicht geändert werden" -#: commands/tablecmds.c:14908 +#: commands/tablecmds.c:14916 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "an temporäre Relation einer anderen Sitzung kann nicht vererbt werden" -#: commands/tablecmds.c:14921 +#: commands/tablecmds.c:14929 #, c-format msgid "cannot inherit from a partition" msgstr "von einer Partition kann nicht geerbt werden" -#: commands/tablecmds.c:14943 commands/tablecmds.c:17854 +#: commands/tablecmds.c:14951 commands/tablecmds.c:17864 #, c-format msgid "circular inheritance not allowed" msgstr "zirkuläre Vererbung ist nicht erlaubt" -#: commands/tablecmds.c:14944 commands/tablecmds.c:17855 +#: commands/tablecmds.c:14952 commands/tablecmds.c:17865 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "»%s« ist schon von »%s« abgeleitet." -#: commands/tablecmds.c:14957 +#: commands/tablecmds.c:14965 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming an inheritance child" msgstr "Trigger »%s« verhindert, dass Tabelle »%s« ein Vererbungskind werden kann" -#: commands/tablecmds.c:14959 +#: commands/tablecmds.c:14967 #, c-format msgid "ROW triggers with transition tables are not supported in inheritance hierarchies." msgstr "ROW-Trigger mit Übergangstabellen werden in Vererbungshierarchien nicht unterstützt." -#: commands/tablecmds.c:15162 +#: commands/tablecmds.c:15170 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "Spalte »%s« in abgeleiteter Tabelle muss als NOT NULL markiert sein" -#: commands/tablecmds.c:15171 +#: commands/tablecmds.c:15179 #, c-format msgid "column \"%s\" in child table must be a generated column" msgstr "Spalte »%s« in abgeleiteter Tabelle muss eine generierte Spalte sein" -#: commands/tablecmds.c:15221 +#: commands/tablecmds.c:15229 #, c-format msgid "column \"%s\" in child table has a conflicting generation expression" msgstr "Spalte »%s« in abgeleiteter Tabelle hat einen widersprüchlichen Generierungsausdruck" -#: commands/tablecmds.c:15249 +#: commands/tablecmds.c:15257 #, c-format msgid "child table is missing column \"%s\"" msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle" -#: commands/tablecmds.c:15337 +#: commands/tablecmds.c:15345 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "abgeleitete Tabelle »%s« hat unterschiedliche Definition für Check-Constraint »%s«" -#: commands/tablecmds.c:15345 +#: commands/tablecmds.c:15353 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" msgstr "Constraint »%s« kollidiert mit nicht vererbtem Constraint für abgeleitete Tabelle »%s«" -#: commands/tablecmds.c:15356 +#: commands/tablecmds.c:15364 #, c-format msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" msgstr "Constraint »%s« kollidiert mit NOT-VALID-Constraint für abgeleitete Tabelle »%s«" -#: commands/tablecmds.c:15391 +#: commands/tablecmds.c:15399 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle" -#: commands/tablecmds.c:15477 +#: commands/tablecmds.c:15485 #, c-format msgid "partition \"%s\" already pending detach in partitioned table \"%s.%s\"" msgstr "Partition »%s« hat schon eine unerledigte Abtrennoperation in der partitionierten Tabelle »%s.%s«" -#: commands/tablecmds.c:15506 commands/tablecmds.c:15554 +#: commands/tablecmds.c:15514 commands/tablecmds.c:15562 #, c-format msgid "relation \"%s\" is not a partition of relation \"%s\"" msgstr "Relation »%s« ist keine Partition von Relation »%s«" -#: commands/tablecmds.c:15560 +#: commands/tablecmds.c:15568 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«" -#: commands/tablecmds.c:15788 +#: commands/tablecmds.c:15796 #, c-format msgid "typed tables cannot inherit" msgstr "getypte Tabellen können nicht erben" -#: commands/tablecmds.c:15818 +#: commands/tablecmds.c:15826 #, c-format msgid "table is missing column \"%s\"" msgstr "Spalte »%s« fehlt in Tabelle" -#: commands/tablecmds.c:15829 +#: commands/tablecmds.c:15837 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "Tabelle hat Spalte »%s«, aber Typ benötigt »%s«" -#: commands/tablecmds.c:15838 +#: commands/tablecmds.c:15846 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" -#: commands/tablecmds.c:15852 +#: commands/tablecmds.c:15860 #, c-format msgid "table has extra column \"%s\"" msgstr "Tabelle hat zusätzliche Spalte »%s«" -#: commands/tablecmds.c:15904 +#: commands/tablecmds.c:15912 #, c-format msgid "\"%s\" is not a typed table" msgstr "»%s« ist keine getypte Tabelle" -#: commands/tablecmds.c:16078 +#: commands/tablecmds.c:16086 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "nicht eindeutiger Index »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:16084 +#: commands/tablecmds.c:16092 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "Index »%s« kann nicht als Replik-Identität verwendet werden, weil er nicht IMMEDIATE ist" -#: commands/tablecmds.c:16090 +#: commands/tablecmds.c:16098 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "Ausdrucksindex »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:16096 +#: commands/tablecmds.c:16104 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "partieller Index »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:16113 +#: commands/tablecmds.c:16121 #, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" msgstr "Index »%s« kann nicht als Replik-Identität verwendet werden, weil Spalte %d eine Systemspalte ist" -#: commands/tablecmds.c:16120 +#: commands/tablecmds.c:16128 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" msgstr "Index »%s« kann nicht als Replik-Identität verwendet werden, weil Spalte »%s« NULL-Werte akzeptiert" -#: commands/tablecmds.c:16367 +#: commands/tablecmds.c:16375 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "kann den geloggten Status der Tabelle »%s« nicht ändern, weil sie temporär ist" -#: commands/tablecmds.c:16391 +#: commands/tablecmds.c:16399 #, c-format msgid "cannot change table \"%s\" to unlogged because it is part of a publication" msgstr "kann Tabelle »%s« nicht in ungeloggt ändern, weil sie Teil einer Publikation ist" -#: commands/tablecmds.c:16393 +#: commands/tablecmds.c:16401 #, c-format msgid "Unlogged relations cannot be replicated." msgstr "Ungeloggte Relationen können nicht repliziert werden." -#: commands/tablecmds.c:16438 +#: commands/tablecmds.c:16446 #, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" msgstr "konnte Tabelle »%s« nicht in geloggt ändern, weil sie auf die ungeloggte Tabelle »%s« verweist" -#: commands/tablecmds.c:16448 +#: commands/tablecmds.c:16456 #, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" msgstr "konnte Tabelle »%s« nicht in ungeloggt ändern, weil sie auf die geloggte Tabelle »%s« verweist" -#: commands/tablecmds.c:16506 +#: commands/tablecmds.c:16514 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "einer Tabelle zugeordnete Sequenz kann nicht in ein anderes Schema verschoben werden" -#: commands/tablecmds.c:16613 +#: commands/tablecmds.c:16621 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "Relation »%s« existiert bereits in Schema »%s«" -#: commands/tablecmds.c:17034 +#: commands/tablecmds.c:17042 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "»%s« ist keine Tabelle oder materialisierte Sicht" -#: commands/tablecmds.c:17184 +#: commands/tablecmds.c:17192 #, c-format msgid "\"%s\" is not a composite type" msgstr "»%s« ist kein zusammengesetzter Typ" -#: commands/tablecmds.c:17212 +#: commands/tablecmds.c:17220 #, c-format msgid "cannot change schema of index \"%s\"" msgstr "kann Schema des Index »%s« nicht ändern" -#: commands/tablecmds.c:17214 commands/tablecmds.c:17226 +#: commands/tablecmds.c:17222 commands/tablecmds.c:17234 #, c-format msgid "Change the schema of the table instead." msgstr "Ändern Sie stattdessen das Schema der Tabelle." -#: commands/tablecmds.c:17218 +#: commands/tablecmds.c:17226 #, c-format msgid "cannot change schema of composite type \"%s\"" msgstr "kann Schema des zusammengesetzten Typs »%s« nicht ändern" -#: commands/tablecmds.c:17224 +#: commands/tablecmds.c:17232 #, c-format msgid "cannot change schema of TOAST table \"%s\"" msgstr "kann Schema der TOAST-Tabelle »%s« nicht ändern" -#: commands/tablecmds.c:17261 +#: commands/tablecmds.c:17269 #, c-format msgid "unrecognized partitioning strategy \"%s\"" msgstr "unbekannte Partitionierungsstrategie »%s«" -#: commands/tablecmds.c:17269 +#: commands/tablecmds.c:17277 #, c-format msgid "cannot use \"list\" partition strategy with more than one column" msgstr "Partitionierungsstrategie »list« kann nicht mit mehr als einer Spalte verwendet werden" -#: commands/tablecmds.c:17335 +#: commands/tablecmds.c:17343 #, c-format msgid "column \"%s\" named in partition key does not exist" msgstr "Spalte »%s«, die im Partitionierungsschlüssel verwendet wird, existiert nicht" -#: commands/tablecmds.c:17343 +#: commands/tablecmds.c:17351 #, c-format msgid "cannot use system column \"%s\" in partition key" msgstr "Systemspalte »%s« kann nicht im Partitionierungsschlüssel verwendet werden" -#: commands/tablecmds.c:17354 commands/tablecmds.c:17468 +#: commands/tablecmds.c:17362 commands/tablecmds.c:17452 #, c-format msgid "cannot use generated column in partition key" msgstr "generierte Spalte kann nicht im Partitionierungsschlüssel verwendet werden" -#: commands/tablecmds.c:17355 commands/tablecmds.c:17469 commands/trigger.c:668 +#: commands/tablecmds.c:17363 commands/tablecmds.c:17453 commands/trigger.c:668 #: rewrite/rewriteHandler.c:929 rewrite/rewriteHandler.c:964 #, c-format msgid "Column \"%s\" is a generated column." msgstr "Spalte »%s« ist eine generierte Spalte." -#: commands/tablecmds.c:17431 -#, c-format -msgid "functions in partition key expression must be marked IMMUTABLE" -msgstr "Funktionen im Partitionierungsschlüsselausdruck müssen als IMMUTABLE markiert sein" - -#: commands/tablecmds.c:17451 +#: commands/tablecmds.c:17435 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "Partitionierungsschlüsselausdruck kann nicht auf Systemspalten verweisen" -#: commands/tablecmds.c:17481 +#: commands/tablecmds.c:17482 +#, c-format +msgid "functions in partition key expression must be marked IMMUTABLE" +msgstr "Funktionen im Partitionierungsschlüsselausdruck müssen als IMMUTABLE markiert sein" + +#: commands/tablecmds.c:17491 #, c-format msgid "cannot use constant expression as partition key" msgstr "Partitionierungsschlüssel kann kein konstanter Ausdruck sein" -#: commands/tablecmds.c:17502 +#: commands/tablecmds.c:17512 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "konnte die für den Partitionierungsausdruck zu verwendende Sortierfolge nicht bestimmen" -#: commands/tablecmds.c:17537 +#: commands/tablecmds.c:17547 #, c-format msgid "You must specify a hash operator class or define a default hash operator class for the data type." msgstr "Sie müssen eine hash-Operatorklasse angeben oder eine hash-Standardoperatorklasse für den Datentyp definieren." -#: commands/tablecmds.c:17543 +#: commands/tablecmds.c:17553 #, c-format msgid "You must specify a btree operator class or define a default btree operator class for the data type." msgstr "Sie müssen eine btree-Operatorklasse angeben oder eine btree-Standardoperatorklasse für den Datentyp definieren." -#: commands/tablecmds.c:17794 +#: commands/tablecmds.c:17804 #, c-format msgid "\"%s\" is already a partition" msgstr "»%s« ist bereits eine Partition" -#: commands/tablecmds.c:17800 +#: commands/tablecmds.c:17810 #, c-format msgid "cannot attach a typed table as partition" msgstr "eine getypte Tabelle kann nicht als Partition angefügt werden" -#: commands/tablecmds.c:17816 +#: commands/tablecmds.c:17826 #, c-format msgid "cannot attach inheritance child as partition" msgstr "ein Vererbungskind kann nicht als Partition angefügt werden" -#: commands/tablecmds.c:17830 +#: commands/tablecmds.c:17840 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "eine Tabelle mit abgeleiteten Tabellen kann nicht als Partition angefügt werden" -#: commands/tablecmds.c:17864 +#: commands/tablecmds.c:17874 #, c-format msgid "cannot attach a temporary relation as partition of permanent relation \"%s\"" msgstr "eine temporäre Relation kann nicht als Partition an permanente Relation »%s« angefügt werden" -#: commands/tablecmds.c:17872 +#: commands/tablecmds.c:17882 #, c-format msgid "cannot attach a permanent relation as partition of temporary relation \"%s\"" msgstr "eine permanente Relation kann nicht als Partition an temporäre Relation »%s« angefügt werden" -#: commands/tablecmds.c:17880 +#: commands/tablecmds.c:17890 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "kann nicht als Partition an temporäre Relation einer anderen Sitzung anfügen" -#: commands/tablecmds.c:17887 +#: commands/tablecmds.c:17897 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "temporäre Relation einer anderen Sitzung kann nicht als Partition angefügt werden" -#: commands/tablecmds.c:17907 +#: commands/tablecmds.c:17917 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "Tabelle »%s« enthält Spalte »%s«, die nicht in der Elterntabelle »%s« gefunden wurde" -#: commands/tablecmds.c:17910 +#: commands/tablecmds.c:17920 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "Die neue Partition darf nur Spalten enthalten, die auch die Elterntabelle hat." -#: commands/tablecmds.c:17922 +#: commands/tablecmds.c:17932 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "Trigger »%s« verhindert, dass Tabelle »%s« eine Partition werden kann" -#: commands/tablecmds.c:17924 +#: commands/tablecmds.c:17934 #, c-format msgid "ROW triggers with transition tables are not supported on partitions." msgstr "ROW-Trigger mit Übergangstabellen werden für Partitionen nicht unterstützt." -#: commands/tablecmds.c:18103 +#: commands/tablecmds.c:18113 #, c-format msgid "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "kann Fremdtabelle »%s« nicht als Partition an partitionierte Tabelle »%s« anfügen" -#: commands/tablecmds.c:18106 +#: commands/tablecmds.c:18116 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "Partitionierte Tabelle »%s« enthält Unique-Indexe." -#: commands/tablecmds.c:18421 +#: commands/tablecmds.c:18431 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "nebenläufiges Abtrennen einer Partition ist nicht möglich, wenn eine Standardpartition existiert" -#: commands/tablecmds.c:18530 +#: commands/tablecmds.c:18540 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "partitionierte Tabelle »%s« wurde nebenläufig entfernt" -#: commands/tablecmds.c:18536 +#: commands/tablecmds.c:18546 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "Partition »%s« wurde nebenläufig entfernt" -#: commands/tablecmds.c:19051 commands/tablecmds.c:19071 -#: commands/tablecmds.c:19091 commands/tablecmds.c:19110 -#: commands/tablecmds.c:19152 +#: commands/tablecmds.c:19061 commands/tablecmds.c:19081 +#: commands/tablecmds.c:19101 commands/tablecmds.c:19120 +#: commands/tablecmds.c:19162 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "kann Index »%s« nicht als Partition an Index »%s« anfügen" -#: commands/tablecmds.c:19054 +#: commands/tablecmds.c:19064 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "Index »%s« ist bereits an einen anderen Index angefügt." -#: commands/tablecmds.c:19074 +#: commands/tablecmds.c:19084 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "Index »%s« ist kein Index irgendeiner Partition von Tabelle »%s«." -#: commands/tablecmds.c:19094 +#: commands/tablecmds.c:19104 #, c-format msgid "The index definitions do not match." msgstr "Die Indexdefinitionen stimmen nicht überein." -#: commands/tablecmds.c:19113 +#: commands/tablecmds.c:19123 #, c-format msgid "The index \"%s\" belongs to a constraint in table \"%s\" but no constraint exists for index \"%s\"." msgstr "Der Index »%s« gehört zu einem Constraint in Tabelle »%s«, aber kein Constraint existiert für Index »%s«." -#: commands/tablecmds.c:19155 +#: commands/tablecmds.c:19165 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "Ein anderer Index ist bereits für Partition »%s« angefügt." -#: commands/tablecmds.c:19392 +#: commands/tablecmds.c:19402 #, c-format msgid "column data type %s does not support compression" msgstr "Spaltendatentyp %s unterstützt keine Komprimierung" -#: commands/tablecmds.c:19399 +#: commands/tablecmds.c:19409 #, c-format msgid "invalid compression method \"%s\"" msgstr "ungültige Komprimierungsmethode »%s«" @@ -11599,7 +11614,7 @@ msgid "trigger function %u returned null value" msgstr "Triggerfunktion %u gab NULL-Wert zurück" #: commands/trigger.c:2509 commands/trigger.c:2727 commands/trigger.c:2995 -#: commands/trigger.c:3346 +#: commands/trigger.c:3364 #, c-format msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "Trigger für BEFORE STATEMENT kann keinen Wert zurückgeben" @@ -11614,140 +11629,140 @@ msgstr "Verschieben einer Zeile in eine andere Partition durch einen BEFORE-FOR- msgid "Before executing trigger \"%s\", the row was to be in partition \"%s.%s\"." msgstr "Vor der Ausführung von Trigger »%s« gehörte die Zeile in Partition »%s.%s«." -#: commands/trigger.c:3423 executor/nodeModifyTable.c:2344 -#: executor/nodeModifyTable.c:2427 +#: commands/trigger.c:3441 executor/nodeModifyTable.c:2350 +#: executor/nodeModifyTable.c:2433 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" msgstr "das zu aktualisierende Tupel wurde schon durch eine vom aktuellen Befehl ausgelöste Operation verändert" -#: commands/trigger.c:3424 executor/nodeModifyTable.c:1510 -#: executor/nodeModifyTable.c:1584 executor/nodeModifyTable.c:2345 -#: executor/nodeModifyTable.c:2428 executor/nodeModifyTable.c:3059 +#: commands/trigger.c:3442 executor/nodeModifyTable.c:1514 +#: executor/nodeModifyTable.c:1588 executor/nodeModifyTable.c:2351 +#: executor/nodeModifyTable.c:2434 executor/nodeModifyTable.c:3079 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Verwenden Sie einen AFTER-Trigger anstelle eines BEFORE-Triggers, um Änderungen an andere Zeilen zu propagieren." -#: commands/trigger.c:3465 executor/nodeLockRows.c:229 +#: commands/trigger.c:3483 executor/nodeLockRows.c:229 #: executor/nodeLockRows.c:238 executor/nodeModifyTable.c:308 -#: executor/nodeModifyTable.c:1526 executor/nodeModifyTable.c:2362 -#: executor/nodeModifyTable.c:2570 +#: executor/nodeModifyTable.c:1530 executor/nodeModifyTable.c:2368 +#: executor/nodeModifyTable.c:2576 #, c-format msgid "could not serialize access due to concurrent update" msgstr "konnte Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung" -#: commands/trigger.c:3473 executor/nodeModifyTable.c:1616 -#: executor/nodeModifyTable.c:2445 executor/nodeModifyTable.c:2594 -#: executor/nodeModifyTable.c:2947 +#: commands/trigger.c:3491 executor/nodeModifyTable.c:1620 +#: executor/nodeModifyTable.c:2451 executor/nodeModifyTable.c:2600 +#: executor/nodeModifyTable.c:2967 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "konnte Zugriff nicht serialisieren wegen gleichzeitigem Löschen" -#: commands/trigger.c:4680 +#: commands/trigger.c:4698 #, c-format msgid "cannot fire deferred trigger within security-restricted operation" msgstr "aufgeschobener Trigger kann nicht in einer sicherheitsbeschränkten Operation ausgelöst werden" -#: commands/trigger.c:5863 +#: commands/trigger.c:5881 #, c-format msgid "constraint \"%s\" is not deferrable" msgstr "Constraint »%s« ist nicht aufschiebbar" -#: commands/trigger.c:5886 +#: commands/trigger.c:5904 #, c-format msgid "constraint \"%s\" does not exist" msgstr "Constraint »%s« existiert nicht" -#: commands/tsearchcmds.c:118 commands/tsearchcmds.c:635 +#: commands/tsearchcmds.c:124 commands/tsearchcmds.c:641 #, c-format msgid "function %s should return type %s" msgstr "Funktion %s sollte Rückgabetyp %s haben" -#: commands/tsearchcmds.c:194 +#: commands/tsearchcmds.c:200 #, c-format msgid "must be superuser to create text search parsers" msgstr "nur Superuser können Textsucheparser anlegen" -#: commands/tsearchcmds.c:247 +#: commands/tsearchcmds.c:253 #, c-format msgid "text search parser parameter \"%s\" not recognized" msgstr "Textsucheparserparameter »%s« nicht erkannt" -#: commands/tsearchcmds.c:257 +#: commands/tsearchcmds.c:263 #, c-format msgid "text search parser start method is required" msgstr "Textsucheparserstartmethode muss angegeben werden" -#: commands/tsearchcmds.c:262 +#: commands/tsearchcmds.c:268 #, c-format msgid "text search parser gettoken method is required" msgstr "Gettoken-Methode für Textsucheparser muss angegeben werden" -#: commands/tsearchcmds.c:267 +#: commands/tsearchcmds.c:273 #, c-format msgid "text search parser end method is required" msgstr "Textsucheparserendemethode muss angegeben werden" -#: commands/tsearchcmds.c:272 +#: commands/tsearchcmds.c:278 #, c-format msgid "text search parser lextypes method is required" msgstr "Lextypes-Methode für Textsucheparser muss angegeben werden" -#: commands/tsearchcmds.c:366 +#: commands/tsearchcmds.c:372 #, c-format msgid "text search template \"%s\" does not accept options" msgstr "Textsuchevorlage »%s« akzeptiert keine Optionen" -#: commands/tsearchcmds.c:440 +#: commands/tsearchcmds.c:446 #, c-format msgid "text search template is required" msgstr "Textsuchevorlage muss angegeben werden" -#: commands/tsearchcmds.c:701 +#: commands/tsearchcmds.c:707 #, c-format msgid "must be superuser to create text search templates" msgstr "nur Superuser können Textsuchevorlagen erzeugen" -#: commands/tsearchcmds.c:743 +#: commands/tsearchcmds.c:749 #, c-format msgid "text search template parameter \"%s\" not recognized" msgstr "Textsuchevorlageparameter »%s« nicht erkannt" -#: commands/tsearchcmds.c:753 +#: commands/tsearchcmds.c:759 #, c-format msgid "text search template lexize method is required" msgstr "Lexize-Methode für Textsuchevorlage muss angegeben werden" -#: commands/tsearchcmds.c:933 +#: commands/tsearchcmds.c:939 #, c-format msgid "text search configuration parameter \"%s\" not recognized" msgstr "Textsuchekonfigurationsparameter »%s« nicht erkannt" -#: commands/tsearchcmds.c:940 +#: commands/tsearchcmds.c:946 #, c-format msgid "cannot specify both PARSER and COPY options" msgstr "Optionen PARSER und COPY können nicht beide angegeben werden" -#: commands/tsearchcmds.c:976 +#: commands/tsearchcmds.c:982 #, c-format msgid "text search parser is required" msgstr "Textsucheparser muss angegeben werden" -#: commands/tsearchcmds.c:1200 +#: commands/tsearchcmds.c:1236 #, c-format msgid "token type \"%s\" does not exist" msgstr "Tokentyp »%s« existiert nicht" -#: commands/tsearchcmds.c:1427 +#: commands/tsearchcmds.c:1464 #, c-format msgid "mapping for token type \"%s\" does not exist" msgstr "Mapping für Tokentyp »%s« existiert nicht" -#: commands/tsearchcmds.c:1433 +#: commands/tsearchcmds.c:1470 #, c-format msgid "mapping for token type \"%s\" does not exist, skipping" msgstr "Mapping für Tokentyp »%s« existiert nicht, wird übersprungen" -#: commands/tsearchcmds.c:1596 commands/tsearchcmds.c:1711 +#: commands/tsearchcmds.c:1631 commands/tsearchcmds.c:1746 #, c-format msgid "invalid parameter list format: \"%s\"" msgstr "ungültiges Parameterlistenformat: »%s«" @@ -12465,7 +12480,7 @@ msgid_plural "launched %d parallel vacuum workers for index cleanup (planned: %d msgstr[0] "%d parallelen Vacuum-Worker für Index-Cleanup gestartet (geplant: %d)" msgstr[1] "%d parallele Vacuum-Worker für Index-Cleanup gestartet (geplant: %d)" -#: commands/variable.c:165 utils/misc/guc.c:12108 utils/misc/guc.c:12186 +#: commands/variable.c:165 utils/misc/guc.c:12115 utils/misc/guc.c:12193 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "Unbekanntes Schlüsselwort: »%s«." @@ -12691,7 +12706,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:826 +#: executor/execExpr.c:1098 parser/parse_agg.c:837 #, c-format msgid "window function calls cannot be nested" msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden" @@ -12769,10 +12784,10 @@ msgstr "kann inkompatible Arrays nicht verschmelzen" msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "Arrayelement mit Typ %s kann nicht in ARRAY-Konstrukt mit Elementtyp %s verwendet werden." -#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:263 -#: utils/adt/arrayfuncs.c:563 utils/adt/arrayfuncs.c:1305 -#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5370 -#: utils/adt/arrayfuncs.c:5887 utils/adt/arraysubs.c:150 +#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:264 +#: utils/adt/arrayfuncs.c:564 utils/adt/arrayfuncs.c:1306 +#: utils/adt/arrayfuncs.c:3422 utils/adt/arrayfuncs.c:5419 +#: utils/adt/arrayfuncs.c:5936 utils/adt/arraysubs.c:150 #: utils/adt/arraysubs.c:488 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" @@ -12784,11 +12799,14 @@ msgid "multidimensional arrays must have array expressions with matching dimensi msgstr "mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben" #: executor/execExprInterp.c:2811 utils/adt/array_expanded.c:274 -#: utils/adt/arrayfuncs.c:936 utils/adt/arrayfuncs.c:1544 -#: utils/adt/arrayfuncs.c:3261 utils/adt/arrayfuncs.c:3403 -#: utils/adt/arrayfuncs.c:5979 utils/adt/arrayfuncs.c:6320 -#: utils/adt/arrayutils.c:94 utils/adt/arrayutils.c:103 -#: utils/adt/arrayutils.c:110 +#: utils/adt/arrayfuncs.c:937 utils/adt/arrayfuncs.c:1545 +#: utils/adt/arrayfuncs.c:2353 utils/adt/arrayfuncs.c:2368 +#: utils/adt/arrayfuncs.c:2630 utils/adt/arrayfuncs.c:2646 +#: utils/adt/arrayfuncs.c:2954 utils/adt/arrayfuncs.c:2969 +#: utils/adt/arrayfuncs.c:3310 utils/adt/arrayfuncs.c:3452 +#: utils/adt/arrayfuncs.c:6028 utils/adt/arrayfuncs.c:6369 +#: utils/adt/arrayutils.c:88 utils/adt/arrayutils.c:97 +#: utils/adt/arrayutils.c:104 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "Arraygröße überschreitet erlaubtes Maximum (%d)" @@ -13055,8 +13073,8 @@ msgstr "gleichzeitiges Löschen, versuche erneut" #: executor/execReplication.c:276 parser/parse_cte.c:308 #: parser/parse_oper.c:233 utils/adt/array_userfuncs.c:724 -#: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3653 -#: utils/adt/arrayfuncs.c:4208 utils/adt/arrayfuncs.c:6200 +#: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3702 +#: utils/adt/arrayfuncs.c:4257 utils/adt/arrayfuncs.c:6249 #: utils/adt/rowtypes.c:1203 #, c-format msgid "could not identify an equality operator for type %s" @@ -13249,7 +13267,7 @@ msgstr "Rückgabetyp %s wird von SQL-Funktionen nicht unterstützt" msgid "aggregate %u needs to have compatible input type and transition type" msgstr "Aggregatfunktion %u muss kompatiblen Eingabe- und Übergangstyp haben" -#: executor/nodeAgg.c:3952 parser/parse_agg.c:668 parser/parse_agg.c:696 +#: executor/nodeAgg.c:3952 parser/parse_agg.c:679 parser/parse_agg.c:707 #, c-format msgid "aggregate function calls cannot be nested" msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden" @@ -13299,58 +13317,58 @@ msgstr "FULL JOIN wird nur für Merge-Verbund-fähige Verbundbedingungen unterst msgid "Query has too few columns." msgstr "Anfrage hat zu wenige Spalten." -#: executor/nodeModifyTable.c:1509 executor/nodeModifyTable.c:1583 +#: executor/nodeModifyTable.c:1513 executor/nodeModifyTable.c:1587 #, c-format msgid "tuple to be deleted was already modified by an operation triggered by the current command" msgstr "das zu löschende Tupel wurde schon durch eine vom aktuellen Befehl ausgelöste Operation verändert" -#: executor/nodeModifyTable.c:1737 +#: executor/nodeModifyTable.c:1742 #, c-format msgid "invalid ON UPDATE specification" msgstr "ungültige ON-UPDATE-Angabe" -#: executor/nodeModifyTable.c:1738 +#: executor/nodeModifyTable.c:1743 #, c-format msgid "The result tuple would appear in a different partition than the original tuple." msgstr "Das Ergebnistupel würde in einer anderen Partition erscheinen als das ursprüngliche Tupel." -#: executor/nodeModifyTable.c:2198 +#: executor/nodeModifyTable.c:2204 #, c-format msgid "cannot move tuple across partitions when a non-root ancestor of the source partition is directly referenced in a foreign key" msgstr "Tupel kann nicht zwischen Partitionen bewegt werden, wenn ein Fremdschlüssel direkt auf einen Vorgänger (außer der Wurzel) der Quellpartition verweist" -#: executor/nodeModifyTable.c:2199 +#: executor/nodeModifyTable.c:2205 #, c-format msgid "A foreign key points to ancestor \"%s\" but not the root ancestor \"%s\"." msgstr "Ein Fremdschlüssel verweist auf den Vorgänger »%s«, aber nicht auf den Wurzelvorgänger »%s«." -#: executor/nodeModifyTable.c:2202 +#: executor/nodeModifyTable.c:2208 #, c-format msgid "Consider defining the foreign key on table \"%s\"." msgstr "Definieren Sie den Fremdschlüssel eventuell für Tabelle »%s«." #. translator: %s is a SQL command name -#: executor/nodeModifyTable.c:2548 executor/nodeModifyTable.c:2936 +#: executor/nodeModifyTable.c:2554 executor/nodeModifyTable.c:2956 #, c-format msgid "%s command cannot affect row a second time" msgstr "Befehl in %s kann eine Zeile nicht ein zweites Mal ändern" -#: executor/nodeModifyTable.c:2550 +#: executor/nodeModifyTable.c:2556 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." msgstr "Stellen Sie sicher, dass keine im selben Befehl fürs Einfügen vorgesehene Zeilen doppelte Werte haben, die einen Constraint verletzen würden." -#: executor/nodeModifyTable.c:2938 +#: executor/nodeModifyTable.c:2958 #, c-format msgid "Ensure that not more than one source row matches any one target row." msgstr "Stellen Sie sicher, dass nicht mehr als eine Quellzeile auf jede Zielzeile passt." -#: executor/nodeModifyTable.c:3019 +#: executor/nodeModifyTable.c:3039 #, c-format msgid "tuple to be deleted was already moved to another partition due to concurrent update" msgstr "das zu löschende Tupel wurde schon durch ein gleichzeitiges Update in eine andere Partition verschoben" -#: executor/nodeModifyTable.c:3058 +#: executor/nodeModifyTable.c:3078 #, c-format msgid "tuple to be updated or deleted was already modified by an operation triggered by the current command" msgstr "das zu aktualisierende oder zu löschende Tupel wurde schon durch eine vom aktuellen Befehl ausgelöste Operation verändert" @@ -13930,9 +13948,9 @@ msgstr "ungültiger Schemaname" msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %d" msgstr "unbekannter Konfigurationsparameter »%s« in Datei »%s« Zeile %d" -#: guc-file.l:353 utils/misc/guc.c:7688 utils/misc/guc.c:7908 -#: utils/misc/guc.c:8006 utils/misc/guc.c:8104 utils/misc/guc.c:8228 -#: utils/misc/guc.c:8331 +#: guc-file.l:353 utils/misc/guc.c:7691 utils/misc/guc.c:7915 +#: utils/misc/guc.c:8013 utils/misc/guc.c:8111 utils/misc/guc.c:8235 +#: utils/misc/guc.c:8338 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "Parameter »%s« kann nicht geändert werden, ohne den Server neu zu starten" @@ -14384,389 +14402,389 @@ msgstr "ungültige Größe des Passwortpakets" msgid "empty password returned by client" msgstr "Client gab leeres Passwort zurück" -#: libpq/auth.c:880 libpq/hba.c:1335 +#: libpq/auth.c:878 libpq/hba.c:1335 #, c-format msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "MD5-Authentifizierung wird nicht unterstützt, wenn »db_user_namespace« angeschaltet ist" -#: libpq/auth.c:886 +#: libpq/auth.c:884 #, c-format msgid "could not generate random MD5 salt" msgstr "konnte zufälliges MD5-Salt nicht erzeugen" -#: libpq/auth.c:935 libpq/be-secure-gssapi.c:535 +#: libpq/auth.c:933 libpq/be-secure-gssapi.c:535 #, c-format msgid "could not set environment: %m" msgstr "konnte Umgebung nicht setzen: %m" -#: libpq/auth.c:971 +#: libpq/auth.c:969 #, c-format msgid "expected GSS response, got message type %d" msgstr "GSS-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:1031 +#: libpq/auth.c:1029 msgid "accepting GSS security context failed" msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen" -#: libpq/auth.c:1072 +#: libpq/auth.c:1070 msgid "retrieving GSS user name failed" msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen" -#: libpq/auth.c:1221 +#: libpq/auth.c:1219 msgid "could not acquire SSPI credentials" msgstr "konnte SSPI-Credentials nicht erhalten" -#: libpq/auth.c:1246 +#: libpq/auth.c:1244 #, c-format msgid "expected SSPI response, got message type %d" msgstr "SSPI-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:1324 +#: libpq/auth.c:1322 msgid "could not accept SSPI security context" msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren" -#: libpq/auth.c:1386 +#: libpq/auth.c:1384 msgid "could not get token from SSPI security context" msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten" -#: libpq/auth.c:1525 libpq/auth.c:1544 +#: libpq/auth.c:1523 libpq/auth.c:1542 #, c-format msgid "could not translate name" msgstr "konnte Namen nicht umwandeln" -#: libpq/auth.c:1557 +#: libpq/auth.c:1555 #, c-format msgid "realm name too long" msgstr "Realm-Name zu lang" -#: libpq/auth.c:1572 +#: libpq/auth.c:1570 #, c-format msgid "translated account name too long" msgstr "umgewandelter Account-Name zu lang" -#: libpq/auth.c:1753 +#: libpq/auth.c:1751 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "konnte Socket für Ident-Verbindung nicht erzeugen: %m" -#: libpq/auth.c:1768 +#: libpq/auth.c:1766 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "konnte nicht mit lokaler Adresse »%s« verbinden: %m" -#: libpq/auth.c:1780 +#: libpq/auth.c:1778 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "konnte nicht mit Ident-Server auf Adresse »%s«, Port %s verbinden: %m" -#: libpq/auth.c:1802 +#: libpq/auth.c:1800 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "konnte Anfrage an Ident-Server auf Adresse »%s«, Port %s nicht senden: %m" -#: libpq/auth.c:1819 +#: libpq/auth.c:1817 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "konnte Antwort von Ident-Server auf Adresse »%s«, Port %s nicht empfangen: %m" -#: libpq/auth.c:1829 +#: libpq/auth.c:1827 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "ungültig formatierte Antwort vom Ident-Server: »%s«" -#: libpq/auth.c:1882 +#: libpq/auth.c:1880 #, c-format msgid "peer authentication is not supported on this platform" msgstr "Peer-Authentifizierung wird auf dieser Plattform nicht unterstützt" -#: libpq/auth.c:1886 +#: libpq/auth.c:1884 #, c-format msgid "could not get peer credentials: %m" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m" -#: libpq/auth.c:1898 +#: libpq/auth.c:1896 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "konnte lokale Benutzer-ID %ld nicht nachschlagen: %s" -#: libpq/auth.c:1999 +#: libpq/auth.c:1997 #, c-format msgid "error from underlying PAM layer: %s" msgstr "Fehler von der unteren PAM-Ebene: %s" -#: libpq/auth.c:2010 +#: libpq/auth.c:2008 #, c-format msgid "unsupported PAM conversation %d/\"%s\"" msgstr "nicht unterstützte PAM-Conversation: %d/»%s«" -#: libpq/auth.c:2070 +#: libpq/auth.c:2068 #, c-format msgid "could not create PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht erzeugen: %s" -#: libpq/auth.c:2081 +#: libpq/auth.c:2079 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "pam_set_item(PAM_USER) fehlgeschlagen: %s" -#: libpq/auth.c:2113 +#: libpq/auth.c:2111 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "pam_set_item(PAM_RHOST) fehlgeschlagen: %s" -#: libpq/auth.c:2125 +#: libpq/auth.c:2123 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "pam_set_item(PAM_CONV) fehlgeschlagen: %s" -#: libpq/auth.c:2138 +#: libpq/auth.c:2136 #, c-format msgid "pam_authenticate failed: %s" msgstr "pam_authenticate fehlgeschlagen: %s" -#: libpq/auth.c:2151 +#: libpq/auth.c:2149 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmt fehlgeschlagen: %s" -#: libpq/auth.c:2162 +#: libpq/auth.c:2160 #, c-format msgid "could not release PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht freigeben: %s" -#: libpq/auth.c:2242 +#: libpq/auth.c:2240 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "konnte LDAP nicht initialisieren: Fehlercode %d" -#: libpq/auth.c:2279 +#: libpq/auth.c:2277 #, c-format msgid "could not extract domain name from ldapbasedn" msgstr "konnte keinen Domain-Namen aus ldapbasedn herauslesen" -#: libpq/auth.c:2287 +#: libpq/auth.c:2285 #, c-format msgid "LDAP authentication could not find DNS SRV records for \"%s\"" msgstr "LDAP-Authentifizierung konnte keine DNS-SRV-Einträge für »%s« finden" -#: libpq/auth.c:2289 +#: libpq/auth.c:2287 #, c-format msgid "Set an LDAP server name explicitly." msgstr "Geben Sie einen LDAP-Servernamen explizit an." -#: libpq/auth.c:2341 +#: libpq/auth.c:2339 #, c-format msgid "could not initialize LDAP: %s" msgstr "konnte LDAP nicht initialisieren: %s" -#: libpq/auth.c:2351 +#: libpq/auth.c:2349 #, c-format msgid "ldaps not supported with this LDAP library" msgstr "ldaps wird mit dieser LDAP-Bibliothek nicht unterstützt" -#: libpq/auth.c:2359 +#: libpq/auth.c:2357 #, c-format msgid "could not initialize LDAP: %m" msgstr "konnte LDAP nicht initialisieren: %m" -#: libpq/auth.c:2369 +#: libpq/auth.c:2367 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "konnte LDAP-Protokollversion nicht setzen: %s" -#: libpq/auth.c:2409 +#: libpq/auth.c:2407 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "konnte Funktion _ldap_start_tls_sA in wldap32.dll nicht laden" -#: libpq/auth.c:2410 +#: libpq/auth.c:2408 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP über SSL wird auf dieser Plattform nicht unterstützt." -#: libpq/auth.c:2426 +#: libpq/auth.c:2424 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "konnte LDAP-TLS-Sitzung nicht starten: %s" -#: libpq/auth.c:2497 +#: libpq/auth.c:2495 #, c-format msgid "LDAP server not specified, and no ldapbasedn" msgstr "LDAP-Server nicht angegeben, und kein ldapbasedn" -#: libpq/auth.c:2504 +#: libpq/auth.c:2502 #, c-format msgid "LDAP server not specified" msgstr "LDAP-Server nicht angegeben" -#: libpq/auth.c:2566 +#: libpq/auth.c:2564 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "ungültiges Zeichen im Benutzernamen für LDAP-Authentifizierung" -#: libpq/auth.c:2583 +#: libpq/auth.c:2581 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "erstes LDAP-Binden für ldapbinddn »%s« auf Server »%s« fehlgeschlagen: %s" -#: libpq/auth.c:2612 +#: libpq/auth.c:2610 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "konnte LDAP nicht mit Filter »%s« auf Server »%s« durchsuchen: %s" -#: libpq/auth.c:2626 +#: libpq/auth.c:2624 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "LDAP-Benutzer »%s« existiert nicht" -#: libpq/auth.c:2627 +#: libpq/auth.c:2625 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-Suche nach Filter »%s« auf Server »%s« gab keine Einträge zurück." -#: libpq/auth.c:2631 +#: libpq/auth.c:2629 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "LDAP-Benutzer »%s« ist nicht eindeutig" -#: libpq/auth.c:2632 +#: libpq/auth.c:2630 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." msgstr[0] "LDAP-Suche nach Filter »%s« auf Server »%s« gab %d Eintrag zurück." msgstr[1] "LDAP-Suche nach Filter »%s« auf Server »%s« gab %d Einträge zurück." -#: libpq/auth.c:2652 +#: libpq/auth.c:2650 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "konnte DN fũr den ersten Treffer für »%s« auf Server »%s« nicht lesen: %s" -#: libpq/auth.c:2673 +#: libpq/auth.c:2671 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\"" msgstr "Losbinden fehlgeschlagen nach Suche nach Benutzer »%s« auf Server »%s«" -#: libpq/auth.c:2704 +#: libpq/auth.c:2702 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "LDAP-Login fehlgeschlagen für Benutzer »%s« auf Server »%s«: %s" -#: libpq/auth.c:2736 +#: libpq/auth.c:2734 #, c-format msgid "LDAP diagnostics: %s" msgstr "LDAP-Diagnostik: %s" -#: libpq/auth.c:2774 +#: libpq/auth.c:2772 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen: Client-Zertifikat enthält keinen Benutzernamen" -#: libpq/auth.c:2795 +#: libpq/auth.c:2793 #, c-format msgid "certificate authentication failed for user \"%s\": unable to retrieve subject DN" msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen: konnte Subject-DN nicht abfragen" -#: libpq/auth.c:2818 +#: libpq/auth.c:2816 #, c-format msgid "certificate validation (clientcert=verify-full) failed for user \"%s\": DN mismatch" msgstr "Zertifikatüberprüfung (clientcert=verify=full) für Benutzer »%s« fehlgeschlagen: DN stimmt nicht überein" -#: libpq/auth.c:2823 +#: libpq/auth.c:2821 #, c-format msgid "certificate validation (clientcert=verify-full) failed for user \"%s\": CN mismatch" msgstr "Zertifikatüberprüfung (clientcert=verify=full) für Benutzer »%s« fehlgeschlagen: CN stimmt nicht überein" -#: libpq/auth.c:2925 +#: libpq/auth.c:2923 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-Server nicht angegeben" -#: libpq/auth.c:2932 +#: libpq/auth.c:2930 #, c-format msgid "RADIUS secret not specified" msgstr "RADIUS-Geheimnis nicht angegeben" -#: libpq/auth.c:2946 +#: libpq/auth.c:2944 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "RADIUS-Authentifizierung unterstützt keine Passwörter länger als %d Zeichen" -#: libpq/auth.c:3053 libpq/hba.c:1976 +#: libpq/auth.c:3051 libpq/hba.c:1976 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "konnte RADIUS-Servername »%s« nicht in Adresse übersetzen: %s" -#: libpq/auth.c:3067 +#: libpq/auth.c:3065 #, c-format msgid "could not generate random encryption vector" msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen" -#: libpq/auth.c:3104 +#: libpq/auth.c:3102 #, c-format msgid "could not perform MD5 encryption of password: %s" msgstr "konnte MD5-Verschlüsselung des Passworts nicht durchführen: %s" -#: libpq/auth.c:3131 +#: libpq/auth.c:3129 #, c-format msgid "could not create RADIUS socket: %m" msgstr "konnte RADIUS-Socket nicht erstellen: %m" -#: libpq/auth.c:3153 +#: libpq/auth.c:3151 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "konnte lokales RADIUS-Socket nicht binden: %m" -#: libpq/auth.c:3163 +#: libpq/auth.c:3161 #, c-format msgid "could not send RADIUS packet: %m" msgstr "konnte RADIUS-Paket nicht senden: %m" -#: libpq/auth.c:3197 libpq/auth.c:3223 +#: libpq/auth.c:3195 libpq/auth.c:3221 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "Zeitüberschreitung beim Warten auf RADIUS-Antwort von %s" -#: libpq/auth.c:3216 +#: libpq/auth.c:3214 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "konnte Status des RADIUS-Sockets nicht prüfen: %m" -#: libpq/auth.c:3246 +#: libpq/auth.c:3244 #, c-format msgid "could not read RADIUS response: %m" msgstr "konnte RADIUS-Antwort nicht lesen: %m" -#: libpq/auth.c:3259 libpq/auth.c:3263 +#: libpq/auth.c:3257 libpq/auth.c:3261 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "RADIUS-Antwort von %s wurde von falschem Port gesendet: %d" -#: libpq/auth.c:3272 +#: libpq/auth.c:3270 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "RADIUS-Antwort von %s zu kurz: %d" -#: libpq/auth.c:3279 +#: libpq/auth.c:3277 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "RADIUS-Antwort von %s hat verfälschte Länge: %d (tatsächliche Länge %d)" -#: libpq/auth.c:3287 +#: libpq/auth.c:3285 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "RADIUS-Antwort von %s unterscheidet sich von Anfrage: %d (sollte %d sein)" -#: libpq/auth.c:3312 +#: libpq/auth.c:3310 #, c-format msgid "could not perform MD5 encryption of received packet: %s" msgstr "konnte MD5-Verschlüsselung des empfangenen Pakets nicht durchführen: %s" -#: libpq/auth.c:3322 +#: libpq/auth.c:3320 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "RADIUS-Antwort von %s hat falsche MD5-Signatur" -#: libpq/auth.c:3340 +#: libpq/auth.c:3338 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "RADIUS-Antwort von %s hat ungültigen Code (%d) für Benutzer »%s«" @@ -14871,16 +14889,16 @@ msgstr "private Schlüsseldatei »%s« erlaubt Zugriff von Gruppe oder Welt" 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 "Dateirechte müssen u=rw (0600) oder weniger sein, wenn der Eigentümer der Datenbankbenutzer ist, oder u=rw,g=r (0640) oder weniger, wenn der Eigentümer »root« ist." -#: libpq/be-secure-gssapi.c:204 +#: libpq/be-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "GSSAPI-Wrap-Fehler" -#: libpq/be-secure-gssapi.c:211 +#: libpq/be-secure-gssapi.c:208 #, c-format msgid "outgoing GSSAPI message would not use confidentiality" msgstr "ausgehende GSSAPI-Nachricht würde keine Vertraulichkeit verwenden" -#: libpq/be-secure-gssapi.c:218 libpq/be-secure-gssapi.c:622 +#: libpq/be-secure-gssapi.c:215 libpq/be-secure-gssapi.c:622 #, c-format msgid "server tried to send oversize GSSAPI packet (%zu > %zu)" msgstr "Server versuchte übergroßes GSSAPI-Paket zu senden (%zu > %zu)" @@ -15003,112 +15021,112 @@ msgstr "konnte SSL-Verbindung nicht initialisieren: %s" msgid "could not set SSL socket: %s" msgstr "konnte SSL-Socket nicht setzen: %s" -#: libpq/be-secure-openssl.c:499 +#: libpq/be-secure-openssl.c:500 #, c-format msgid "could not accept SSL connection: %m" msgstr "konnte SSL-Verbindung nicht annehmen: %m" -#: libpq/be-secure-openssl.c:503 libpq/be-secure-openssl.c:556 +#: libpq/be-secure-openssl.c:504 libpq/be-secure-openssl.c:557 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "konnte SSL-Verbindung nicht annehmen: EOF entdeckt" -#: libpq/be-secure-openssl.c:542 +#: libpq/be-secure-openssl.c:543 #, c-format msgid "could not accept SSL connection: %s" msgstr "konnte SSL-Verbindung nicht annehmen: %s" -#: libpq/be-secure-openssl.c:545 +#: libpq/be-secure-openssl.c:546 #, c-format msgid "This may indicate that the client does not support any SSL protocol version between %s and %s." msgstr "Das zeigt möglicherweise an, dass der Client keine SSL-Protokollversion zwischen %s und %s unterstützt." -#: libpq/be-secure-openssl.c:561 libpq/be-secure-openssl.c:750 -#: libpq/be-secure-openssl.c:814 +#: libpq/be-secure-openssl.c:562 libpq/be-secure-openssl.c:751 +#: libpq/be-secure-openssl.c:821 #, c-format msgid "unrecognized SSL error code: %d" msgstr "unbekannter SSL-Fehlercode: %d" -#: libpq/be-secure-openssl.c:607 +#: libpq/be-secure-openssl.c:608 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte" -#: libpq/be-secure-openssl.c:653 +#: libpq/be-secure-openssl.c:654 #, c-format msgid "SSL certificate's distinguished name contains embedded null" msgstr "Distinguished Name im SSL-Zertifikat enthält Null-Byte" -#: libpq/be-secure-openssl.c:739 libpq/be-secure-openssl.c:798 +#: libpq/be-secure-openssl.c:740 libpq/be-secure-openssl.c:805 #, c-format msgid "SSL error: %s" msgstr "SSL-Fehler: %s" -#: libpq/be-secure-openssl.c:980 +#: libpq/be-secure-openssl.c:982 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "konnte DH-Parameterdatei »%s« nicht öffnen: %m" -#: libpq/be-secure-openssl.c:992 +#: libpq/be-secure-openssl.c:994 #, c-format msgid "could not load DH parameters file: %s" msgstr "konnte DH-Parameterdatei nicht laden: %s" -#: libpq/be-secure-openssl.c:1002 +#: libpq/be-secure-openssl.c:1004 #, c-format msgid "invalid DH parameters: %s" msgstr "ungültige DH-Parameter: %s" -#: libpq/be-secure-openssl.c:1011 +#: libpq/be-secure-openssl.c:1013 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "ungültige DH-Parameter: p ist keine Primzahl" -#: libpq/be-secure-openssl.c:1020 +#: libpq/be-secure-openssl.c:1022 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "ungültige DH-Parameter: weder geeigneter Generator noch sichere Primzahl" -#: libpq/be-secure-openssl.c:1181 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "DH: could not load DH parameters" msgstr "DH: konnte DH-Parameter nicht laden" -#: libpq/be-secure-openssl.c:1189 +#: libpq/be-secure-openssl.c:1191 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH: konnte DH-Parameter nicht setzen: %s" -#: libpq/be-secure-openssl.c:1216 +#: libpq/be-secure-openssl.c:1218 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: unbekannter Kurvenname: %s" -#: libpq/be-secure-openssl.c:1225 +#: libpq/be-secure-openssl.c:1227 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: konnte Schlüssel nicht erzeugen" -#: libpq/be-secure-openssl.c:1253 +#: libpq/be-secure-openssl.c:1255 msgid "no SSL error reported" msgstr "kein SSL-Fehler berichtet" -#: libpq/be-secure-openssl.c:1257 +#: libpq/be-secure-openssl.c:1259 #, c-format msgid "SSL error code %lu" msgstr "SSL-Fehlercode %lu" -#: libpq/be-secure-openssl.c:1416 +#: libpq/be-secure-openssl.c:1418 #, c-format msgid "could not create BIO" msgstr "konnte BIO nicht erzeugen" -#: libpq/be-secure-openssl.c:1426 +#: libpq/be-secure-openssl.c:1428 #, c-format msgid "could not get NID for ASN1_OBJECT object" msgstr "konnte NID für ASN1_OBJECT-Objekt nicht ermitteln" -#: libpq/be-secure-openssl.c:1434 +#: libpq/be-secure-openssl.c:1436 #, c-format msgid "could not convert NID %d to an ASN1_OBJECT structure" msgstr "konnte NID %d nicht in eine ASN1_OBJECT-Struktur umwandeln" @@ -15626,9 +15644,9 @@ msgid "could not accept new connection: %m" msgstr "konnte neue Verbindung nicht akzeptieren: %m" #: libpq/pqcomm.c:766 libpq/pqcomm.c:775 libpq/pqcomm.c:807 libpq/pqcomm.c:817 -#: libpq/pqcomm.c:1642 libpq/pqcomm.c:1687 libpq/pqcomm.c:1727 -#: libpq/pqcomm.c:1771 libpq/pqcomm.c:1810 libpq/pqcomm.c:1849 -#: libpq/pqcomm.c:1885 libpq/pqcomm.c:1924 +#: libpq/pqcomm.c:1652 libpq/pqcomm.c:1697 libpq/pqcomm.c:1737 +#: libpq/pqcomm.c:1781 libpq/pqcomm.c:1820 libpq/pqcomm.c:1859 +#: libpq/pqcomm.c:1895 libpq/pqcomm.c:1934 #, c-format msgid "%s(%s) failed: %m" msgstr "%s(%s) fehlgeschlagen: %m" @@ -15638,47 +15656,47 @@ msgstr "%s(%s) fehlgeschlagen: %m" msgid "there is no client connection" msgstr "es besteht keine Client-Verbindung" -#: libpq/pqcomm.c:972 libpq/pqcomm.c:1068 +#: libpq/pqcomm.c:977 libpq/pqcomm.c:1078 #, c-format msgid "could not receive data from client: %m" msgstr "konnte Daten vom Client nicht empfangen: %m" -#: libpq/pqcomm.c:1173 tcop/postgres.c:4373 +#: libpq/pqcomm.c:1183 tcop/postgres.c:4373 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "Verbindung wird abgebrochen, weil Protokollsynchronisierung verloren wurde" -#: libpq/pqcomm.c:1239 +#: libpq/pqcomm.c:1249 #, c-format msgid "unexpected EOF within message length word" msgstr "unerwartetes EOF im Message-Längenwort" -#: libpq/pqcomm.c:1249 +#: libpq/pqcomm.c:1259 #, c-format msgid "invalid message length" msgstr "ungültige Message-Länge" -#: libpq/pqcomm.c:1271 libpq/pqcomm.c:1284 +#: libpq/pqcomm.c:1281 libpq/pqcomm.c:1294 #, c-format msgid "incomplete message from client" msgstr "unvollständige Message vom Client" -#: libpq/pqcomm.c:1395 +#: libpq/pqcomm.c:1405 #, c-format msgid "could not send data to client: %m" msgstr "konnte Daten nicht an den Client senden: %m" -#: libpq/pqcomm.c:1610 +#: libpq/pqcomm.c:1620 #, c-format msgid "%s(%s) failed: error code %d" msgstr "%s(%s) fehlgeschlagen: Fehlercode %d" -#: libpq/pqcomm.c:1699 +#: libpq/pqcomm.c:1709 #, c-format msgid "setting the keepalive idle time is not supported" msgstr "Setzen der Keepalive-Idle-Zeit wird nicht unterstützt" -#: libpq/pqcomm.c:1783 libpq/pqcomm.c:1858 libpq/pqcomm.c:1933 +#: libpq/pqcomm.c:1793 libpq/pqcomm.c:1868 libpq/pqcomm.c:1943 #, c-format msgid "%s(%s) not supported" msgstr "%s(%s) nicht unterstützt" @@ -15689,7 +15707,7 @@ msgid "no data left in message" msgstr "keine Daten in Message übrig" #: libpq/pqformat.c:517 libpq/pqformat.c:535 libpq/pqformat.c:556 -#: utils/adt/arrayfuncs.c:1482 utils/adt/rowtypes.c:588 +#: utils/adt/arrayfuncs.c:1483 utils/adt/rowtypes.c:588 #, c-format msgid "insufficient data left in message" msgstr "nicht genug Daten in Message übrig" @@ -16103,7 +16121,7 @@ msgstr "Alle Spaltendatentypen müssen hashbar sein." msgid "could not implement %s" msgstr "konnte %s nicht implementieren" -#: optimizer/util/clauses.c:4777 +#: optimizer/util/clauses.c:4843 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "SQL-Funktion »%s« beim Inlining" @@ -16353,331 +16371,331 @@ 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:220 parser/parse_oper.c:227 +#: parser/parse_agg.c:208 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "konnte keine Sortieroperator für Typ %s ermitteln" -#: parser/parse_agg.c:222 +#: parser/parse_agg.c:210 #, 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:257 +#: parser/parse_agg.c:268 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING muss weniger als 32 Argumente haben" -#: parser/parse_agg.c:360 +#: parser/parse_agg.c:371 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "Aggregatfunktionen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:362 +#: parser/parse_agg.c:373 msgid "grouping operations are not allowed in JOIN conditions" msgstr "Gruppieroperationen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:374 +#: parser/parse_agg.c:385 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:376 +#: parser/parse_agg.c:387 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:381 +#: parser/parse_agg.c:392 msgid "aggregate functions are not allowed in functions in FROM" msgstr "Aggregatfunktionen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:394 msgid "grouping operations are not allowed in functions in FROM" msgstr "Gruppieroperationen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:391 +#: parser/parse_agg.c:402 msgid "aggregate functions are not allowed in policy expressions" msgstr "Aggregatfunktionen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:393 +#: parser/parse_agg.c:404 msgid "grouping operations are not allowed in policy expressions" msgstr "Gruppieroperationen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:410 +#: parser/parse_agg.c:421 msgid "aggregate functions are not allowed in window RANGE" msgstr "Aggregatfunktionen sind in der Fenster-RANGE-Klausel nicht erlaubt" -#: parser/parse_agg.c:412 +#: parser/parse_agg.c:423 msgid "grouping operations are not allowed in window RANGE" msgstr "Gruppieroperationen sind in der Fenster-RANGE-Klausel nicht erlaubt" -#: parser/parse_agg.c:417 +#: parser/parse_agg.c:428 msgid "aggregate functions are not allowed in window ROWS" msgstr "Aggregatfunktionen sind in der Fenster-ROWS-Klausel nicht erlaubt" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:430 msgid "grouping operations are not allowed in window ROWS" msgstr "Gruppieroperationen sind in der Fenster-ROWS-Klausel nicht erlaubt" -#: parser/parse_agg.c:424 +#: parser/parse_agg.c:435 msgid "aggregate functions are not allowed in window GROUPS" msgstr "Aggregatfunktionen sind in der Fenster-GROUPS-Klausel nicht erlaubt" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:437 msgid "grouping operations are not allowed in window GROUPS" msgstr "Gruppieroperationen sind in der Fenster-GROUPS-Klausel nicht erlaubt" -#: parser/parse_agg.c:439 +#: parser/parse_agg.c:450 msgid "aggregate functions are not allowed in MERGE WHEN conditions" msgstr "Aggregatfunktionen sind in MERGE-WHEN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:441 +#: parser/parse_agg.c:452 msgid "grouping operations are not allowed in MERGE WHEN conditions" msgstr "Gruppieroperationen sind in MERGE-WHEN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:467 +#: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in check constraints" msgstr "Aggregatfunktionen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:480 msgid "grouping operations are not allowed in check constraints" msgstr "Gruppieroperationen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:476 +#: parser/parse_agg.c:487 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "Aggregatfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:489 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "Gruppieroperationen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:483 +#: parser/parse_agg.c:494 msgid "aggregate functions are not allowed in index expressions" msgstr "Aggregatfunktionen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:496 msgid "grouping operations are not allowed in index expressions" msgstr "Gruppieroperationen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:490 +#: parser/parse_agg.c:501 msgid "aggregate functions are not allowed in index predicates" msgstr "Aggregatfunktionen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:503 msgid "grouping operations are not allowed in index predicates" msgstr "Gruppieroperationen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:497 +#: parser/parse_agg.c:508 msgid "aggregate functions are not allowed in statistics expressions" msgstr "Aggregatfunktionen sind in Statistikausdrücken nicht erlaubt" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:510 msgid "grouping operations are not allowed in statistics expressions" msgstr "Gruppieroperationen sind in Statistikausdrücken nicht erlaubt" -#: parser/parse_agg.c:504 +#: parser/parse_agg.c:515 msgid "aggregate functions are not allowed in transform expressions" msgstr "Aggregatfunktionen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:517 msgid "grouping operations are not allowed in transform expressions" msgstr "Gruppieroperationen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:511 +#: parser/parse_agg.c:522 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "Aggregatfunktionen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:524 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "Gruppieroperationen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:518 +#: parser/parse_agg.c:529 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:520 +#: parser/parse_agg.c:531 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:525 +#: parser/parse_agg.c:536 msgid "aggregate functions are not allowed in partition bound" msgstr "Aggregatfunktionen sind in Partitionsbegrenzungen nicht erlaubt" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:538 msgid "grouping operations are not allowed in partition bound" msgstr "Gruppieroperationen sind in Partitionsbegrenzungen nicht erlaubt" -#: parser/parse_agg.c:532 +#: parser/parse_agg.c:543 msgid "aggregate functions are not allowed in partition key expressions" msgstr "Aggregatfunktionen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:545 msgid "grouping operations are not allowed in partition key expressions" msgstr "Gruppieroperationen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" -#: parser/parse_agg.c:540 +#: parser/parse_agg.c:551 msgid "aggregate functions are not allowed in column generation expressions" msgstr "Aggregatfunktionen sind in Spaltengenerierungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:553 msgid "grouping operations are not allowed in column generation expressions" msgstr "Gruppieroperationen sind in Spaltengenerierungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:548 +#: parser/parse_agg.c:559 msgid "aggregate functions are not allowed in CALL arguments" msgstr "Aggregatfunktionen sind in CALL-Argumenten nicht erlaubt" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:561 msgid "grouping operations are not allowed in CALL arguments" msgstr "Gruppieroperationen sind in CALL-Argumenten nicht erlaubt" -#: parser/parse_agg.c:556 +#: parser/parse_agg.c:567 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:558 +#: parser/parse_agg.c:569 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:585 parser/parse_clause.c:1836 +#: parser/parse_agg.c:596 parser/parse_clause.c:1836 #, 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:588 +#: parser/parse_agg.c:599 #, c-format msgid "grouping operations are not allowed in %s" msgstr "Gruppieroperationen sind in %s nicht erlaubt" -#: parser/parse_agg.c:689 +#: parser/parse_agg.c:700 #, 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:767 +#: parser/parse_agg.c:778 #, 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:768 parser/parse_expr.c:1674 parser/parse_expr.c:2156 +#: parser/parse_agg.c:779 parser/parse_expr.c:1674 parser/parse_expr.c:2156 #: 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:773 +#: parser/parse_agg.c:784 #, 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:852 +#: parser/parse_agg.c:863 msgid "window functions are not allowed in JOIN conditions" msgstr "Fensterfunktionen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:859 +#: parser/parse_agg.c:870 msgid "window functions are not allowed in functions in FROM" msgstr "Fensterfunktionen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:865 +#: parser/parse_agg.c:876 msgid "window functions are not allowed in policy expressions" msgstr "Fensterfunktionen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:889 msgid "window functions are not allowed in window definitions" msgstr "Fensterfunktionen sind in Fensterdefinitionen nicht erlaubt" -#: parser/parse_agg.c:889 +#: parser/parse_agg.c:900 msgid "window functions are not allowed in MERGE WHEN conditions" msgstr "Fensterfunktionen sind in MERGE-WHEN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:913 +#: parser/parse_agg.c:924 msgid "window functions are not allowed in check constraints" msgstr "Fensterfunktionen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:917 +#: parser/parse_agg.c:928 msgid "window functions are not allowed in DEFAULT expressions" msgstr "Fensterfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:920 +#: parser/parse_agg.c:931 msgid "window functions are not allowed in index expressions" msgstr "Fensterfunktionen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:923 +#: parser/parse_agg.c:934 msgid "window functions are not allowed in statistics expressions" msgstr "Fensterfunktionen sind in Statistikausdrücken nicht erlaubt" -#: parser/parse_agg.c:926 +#: parser/parse_agg.c:937 msgid "window functions are not allowed in index predicates" msgstr "Fensterfunktionen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:929 +#: parser/parse_agg.c:940 msgid "window functions are not allowed in transform expressions" msgstr "Fensterfunktionen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:932 +#: parser/parse_agg.c:943 msgid "window functions are not allowed in EXECUTE parameters" msgstr "Fensterfunktionen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:935 +#: parser/parse_agg.c:946 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:938 +#: parser/parse_agg.c:949 msgid "window functions are not allowed in partition bound" msgstr "Fensterfunktionen sind in Partitionsbegrenzungen nicht erlaubt" -#: parser/parse_agg.c:941 +#: parser/parse_agg.c:952 msgid "window functions are not allowed in partition key expressions" msgstr "Fensterfunktionen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" -#: parser/parse_agg.c:944 +#: parser/parse_agg.c:955 msgid "window functions are not allowed in CALL arguments" msgstr "Fensterfunktionen sind in CALL-Argumenten nicht erlaubt" -#: parser/parse_agg.c:947 +#: parser/parse_agg.c:958 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:950 +#: parser/parse_agg.c:961 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:973 parser/parse_clause.c:1845 +#: parser/parse_agg.c:984 parser/parse_clause.c:1845 #, c-format msgid "window functions are not allowed in %s" msgstr "Fensterfunktionen sind in %s nicht erlaubt" -#: parser/parse_agg.c:1007 parser/parse_clause.c:2678 +#: parser/parse_agg.c:1018 parser/parse_clause.c:2678 #, c-format msgid "window \"%s\" does not exist" msgstr "Fenster »%s« existiert nicht" -#: parser/parse_agg.c:1091 +#: parser/parse_agg.c:1102 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "zu viele Grouping-Sets vorhanden (maximal 4096)" -#: parser/parse_agg.c:1231 +#: parser/parse_agg.c:1242 #, 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:1424 +#: parser/parse_agg.c:1435 #, 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:1427 +#: parser/parse_agg.c:1438 #, 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:1432 +#: parser/parse_agg.c:1443 #, 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:1596 +#: parser/parse_agg.c:1607 #, 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" @@ -18685,12 +18703,12 @@ msgstr "Huge Pages werden auf dieser Plattform nicht unterstützt" msgid "huge pages not supported with the current shared_memory_type setting" msgstr "Huge Pages werden mit der aktuellen shared_memory_type-Einstellung nicht unterstützt" -#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1187 +#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1195 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "bereits bestehender Shared-Memory-Block (Schlüssel %lu, ID %lu) wird noch benutzt" -#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1189 +#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1197 #, c-format msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "Beenden Sie alle alten Serverprozesse, die zum Datenverzeichnis »%s« gehören." @@ -19190,8 +19208,8 @@ msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "nicht unterstütztes Frontend-Protokoll %u.%u: Server unterstützt %u.0 bis %u.%u" #: postmaster/postmaster.c:2264 utils/misc/guc.c:7400 utils/misc/guc.c:7436 -#: utils/misc/guc.c:7506 utils/misc/guc.c:8937 utils/misc/guc.c:11979 -#: utils/misc/guc.c:12020 +#: utils/misc/guc.c:7506 utils/misc/guc.c:8944 utils/misc/guc.c:11986 +#: utils/misc/guc.c:12027 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "ungültiger Wert für Parameter »%s«: »%s«" @@ -19728,97 +19746,97 @@ msgstr "konnte Verbindungsparameter nicht interpretieren: %s" msgid "could not receive database system identifier and timeline ID from the primary server: %s" msgstr "konnte Datenbanksystemidentifikator und Zeitleisten-ID nicht vom Primärserver empfangen: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:384 -#: replication/libpqwalreceiver/libpqwalreceiver.c:622 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:626 #, c-format msgid "invalid response from primary server" msgstr "ungültige Antwort vom Primärserver" -#: replication/libpqwalreceiver/libpqwalreceiver.c:385 +#: replication/libpqwalreceiver/libpqwalreceiver.c:389 #, c-format msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields." msgstr "Konnte System nicht identifizieren: %d Zeilen und %d Felder erhalten, %d Zeilen und %d oder mehr Felder erwartet." -#: replication/libpqwalreceiver/libpqwalreceiver.c:465 -#: replication/libpqwalreceiver/libpqwalreceiver.c:472 -#: replication/libpqwalreceiver/libpqwalreceiver.c:502 +#: replication/libpqwalreceiver/libpqwalreceiver.c:469 +#: replication/libpqwalreceiver/libpqwalreceiver.c:476 +#: replication/libpqwalreceiver/libpqwalreceiver.c:506 #, c-format msgid "could not start WAL streaming: %s" msgstr "konnte WAL-Streaming nicht starten: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:526 +#: replication/libpqwalreceiver/libpqwalreceiver.c:530 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "konnte End-of-Streaming-Nachricht nicht an Primärserver senden: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:553 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "unerwartete Ergebnismenge nach End-of-Streaming" -#: replication/libpqwalreceiver/libpqwalreceiver.c:564 +#: replication/libpqwalreceiver/libpqwalreceiver.c:568 #, c-format msgid "error while shutting down streaming COPY: %s" msgstr "Fehler beim Beenden des COPY-Datenstroms: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:574 +#: replication/libpqwalreceiver/libpqwalreceiver.c:578 #, c-format msgid "error reading result of streaming command: %s" msgstr "Fehler beim Lesen des Ergebnisses von Streaming-Befehl: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:583 -#: replication/libpqwalreceiver/libpqwalreceiver.c:821 +#: replication/libpqwalreceiver/libpqwalreceiver.c:587 +#: replication/libpqwalreceiver/libpqwalreceiver.c:825 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "unerwartetes Ergebnis nach CommandComplete: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:610 +#: replication/libpqwalreceiver/libpqwalreceiver.c:614 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "konnte Zeitleisten-History-Datei nicht vom Primärserver empfangen: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:623 +#: replication/libpqwalreceiver/libpqwalreceiver.c:627 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "1 Tupel mit 2 Feldern erwartet, %d Tupel mit %d Feldern erhalten." -#: replication/libpqwalreceiver/libpqwalreceiver.c:784 -#: replication/libpqwalreceiver/libpqwalreceiver.c:837 -#: replication/libpqwalreceiver/libpqwalreceiver.c:844 +#: replication/libpqwalreceiver/libpqwalreceiver.c:788 +#: replication/libpqwalreceiver/libpqwalreceiver.c:841 +#: replication/libpqwalreceiver/libpqwalreceiver.c:848 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "konnte keine Daten vom WAL-Stream empfangen: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:864 +#: replication/libpqwalreceiver/libpqwalreceiver.c:868 #, c-format msgid "could not send data to WAL stream: %s" msgstr "konnte keine Daten an den WAL-Stream senden: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:956 +#: replication/libpqwalreceiver/libpqwalreceiver.c:960 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "konnte Replikations-Slot »%s« nicht erzeugen: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1002 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1006 #, c-format msgid "invalid query response" msgstr "ungültige Antwort auf Anfrage" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1003 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1007 #, c-format msgid "Expected %d fields, got %d fields." msgstr "%d Felder erwartet, %d Feldern erhalten." -#: replication/libpqwalreceiver/libpqwalreceiver.c:1073 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1077 #, c-format msgid "the query interface requires a database connection" msgstr "Ausführen von Anfragen benötigt eine Datenbankverbindung" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1104 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1108 msgid "empty query" msgstr "leere Anfrage" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1110 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1114 msgid "unexpected pipeline mode" msgstr "unerwarteter Pipeline-Modus" @@ -20185,47 +20203,47 @@ msgstr "Arbeitsprozess für logische Replikation für Tabellensynchronisation f msgid "logical replication apply worker for subscription \"%s\" will restart so that two_phase can be enabled" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird neu starten, damit two_phase eingeschaltet werden kann" -#: replication/logical/tablesync.c:731 replication/logical/tablesync.c:872 +#: replication/logical/tablesync.c:741 replication/logical/tablesync.c:882 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "konnte Tabelleninformationen für Tabelle »%s.%s« nicht vom Publikationsserver holen: %s" -#: replication/logical/tablesync.c:738 +#: replication/logical/tablesync.c:748 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "Tabelle »%s.%s« nicht auf dem Publikationsserver gefunden" -#: replication/logical/tablesync.c:795 +#: replication/logical/tablesync.c:805 #, c-format msgid "could not fetch column list info for table \"%s.%s\" from publisher: %s" msgstr "konnte Spaltenlisteninformationen für Tabelle »%s.%s« nicht vom Publikationsserver holen: %s" -#: replication/logical/tablesync.c:974 +#: replication/logical/tablesync.c:984 #, c-format msgid "could not fetch table WHERE clause info for table \"%s.%s\" from publisher: %s" msgstr "konnte WHERE-Klausel-Informationen für Tabelle »%s.%s« nicht vom Publikationsserver holen: %s" -#: replication/logical/tablesync.c:1111 +#: replication/logical/tablesync.c:1129 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "konnte Kopieren des Anfangsinhalts für Tabelle »%s.%s« nicht starten: %s" -#: replication/logical/tablesync.c:1323 replication/logical/worker.c:1635 +#: replication/logical/tablesync.c:1341 replication/logical/worker.c:1635 #, c-format msgid "user \"%s\" cannot replicate into relation with row-level security enabled: \"%s\"" msgstr "Benutzer »%s« kann nicht in eine Relation mit Sicherheit auf Zeilenebene replizieren: »%s«" -#: replication/logical/tablesync.c:1338 +#: replication/logical/tablesync.c:1356 #, 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:1380 +#: replication/logical/tablesync.c:1398 #, c-format msgid "replication origin \"%s\" already exists" msgstr "Replication-Origin »%s« existiert bereits" -#: replication/logical/tablesync.c:1393 +#: replication/logical/tablesync.c:1411 #, 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" @@ -21679,17 +21697,17 @@ msgstr "konnte Shared-Memory-Segment »%s« nicht schließen: %m" msgid "could not duplicate handle for \"%s\": %m" msgstr "konnte Handle für »%s« nicht duplizieren: %m" -#: storage/ipc/procarray.c:3846 +#: storage/ipc/procarray.c:3845 #, c-format msgid "database \"%s\" is being used by prepared transactions" msgstr "Datenbank »%s« wird von vorbereiteten Transaktionen verwendet" -#: storage/ipc/procarray.c:3878 storage/ipc/signalfuncs.c:226 +#: storage/ipc/procarray.c:3877 storage/ipc/signalfuncs.c:231 #, c-format msgid "must be a superuser to terminate superuser process" msgstr "nur Superuser können Prozesse eines Superusers beenden" -#: storage/ipc/procarray.c:3885 storage/ipc/signalfuncs.c:231 +#: storage/ipc/procarray.c:3884 storage/ipc/signalfuncs.c:236 #, c-format msgid "must be a member of the role whose process is being terminated or member of pg_signal_backend" msgstr "muss Mitglied der Rolle sein, deren Prozess beendet wird, oder Mitglied von pg_signal_backend" @@ -21749,51 +21767,51 @@ msgstr "angeforderte Shared-Memory-Größe übersteigt Kapazität von size_t" msgid "PID %d is not a PostgreSQL backend process" msgstr "PID %d ist kein PostgreSQL-Backend-Prozess" -#: storage/ipc/signalfuncs.c:104 storage/lmgr/proc.c:1442 +#: storage/ipc/signalfuncs.c:109 storage/lmgr/proc.c:1442 #: utils/adt/mcxtfuncs.c:190 #, c-format msgid "could not send signal to process %d: %m" msgstr "konnte Signal nicht an Prozess %d senden: %m" -#: storage/ipc/signalfuncs.c:124 +#: storage/ipc/signalfuncs.c:129 #, c-format msgid "must be a superuser to cancel superuser query" msgstr "nur Superuser können Anfragen eines Superusers stornieren" -#: storage/ipc/signalfuncs.c:129 +#: storage/ipc/signalfuncs.c:134 #, c-format msgid "must be a member of the role whose query is being canceled or member of pg_signal_backend" msgstr "muss Mitglied der Rolle sein, deren Anfrage storniert wird, oder Mitglied von pg_signal_backend" -#: storage/ipc/signalfuncs.c:170 +#: storage/ipc/signalfuncs.c:175 #, c-format msgid "could not check the existence of the backend with PID %d: %m" msgstr "konnte die Existenz des Backend mit PID %d nicht prüfen: %m" -#: storage/ipc/signalfuncs.c:188 +#: storage/ipc/signalfuncs.c:193 #, c-format msgid "backend with PID %d did not terminate within %lld millisecond" msgid_plural "backend with PID %d did not terminate within %lld milliseconds" msgstr[0] "Backend mit PID %d wurde nicht innerhalb von %lld Millisekunde beendet" msgstr[1] "Backend mit PID %d wurde nicht innerhalb von %lld Millisekunden beendet" -#: storage/ipc/signalfuncs.c:219 +#: storage/ipc/signalfuncs.c:224 #, c-format msgid "\"timeout\" must not be negative" msgstr "»timeout« darf nicht negativ sein" -#: storage/ipc/signalfuncs.c:271 +#: storage/ipc/signalfuncs.c:276 #, c-format msgid "must be superuser to rotate log files with adminpack 1.0" msgstr "nur Superuser können mit adminpack 1.0 Logdateien rotieren" #. translator: %s is a SQL function name -#: storage/ipc/signalfuncs.c:273 utils/adt/genfile.c:250 +#: storage/ipc/signalfuncs.c:278 utils/adt/genfile.c:250 #, c-format msgid "Consider using %s, which is part of core, instead." msgstr "Verwenden Sie stattdessen %s, was im Kernsystem enthalten ist." -#: storage/ipc/signalfuncs.c:279 storage/ipc/signalfuncs.c:299 +#: storage/ipc/signalfuncs.c:284 storage/ipc/signalfuncs.c:304 #, c-format msgid "rotation not possible because log collection not active" msgstr "Rotierung nicht möglich, weil Logsammlung nicht aktiv ist" @@ -22823,37 +22841,37 @@ msgstr "»MaxFragments« sollte >= 0 sein" msgid "could not unlink permanent statistics file \"%s\": %m" msgstr "konnte permanente Statistikdatei »%s« nicht löschen: %m" -#: utils/activity/pgstat.c:1226 +#: utils/activity/pgstat.c:1229 #, c-format msgid "invalid statistics kind: \"%s\"" msgstr "ungültige Statistikart: »%s«" -#: utils/activity/pgstat.c:1306 +#: utils/activity/pgstat.c:1309 #, c-format msgid "could not open temporary statistics file \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht öffnen: %m" -#: utils/activity/pgstat.c:1412 +#: utils/activity/pgstat.c:1415 #, c-format msgid "could not write temporary statistics file \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht schreiben: %m" -#: utils/activity/pgstat.c:1421 +#: utils/activity/pgstat.c:1424 #, c-format msgid "could not close temporary statistics file \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht schließen: %m" -#: utils/activity/pgstat.c:1429 +#: utils/activity/pgstat.c:1432 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht in »%s« umbenennen: %m" -#: utils/activity/pgstat.c:1478 +#: utils/activity/pgstat.c:1481 #, c-format msgid "could not open statistics file \"%s\": %m" msgstr "konnte Statistikdatei »%s« nicht öffnen: %m" -#: utils/activity/pgstat.c:1634 +#: utils/activity/pgstat.c:1637 #, c-format msgid "corrupted statistics file \"%s\"" msgstr "verfälschte Statistikdatei »%s«" @@ -23048,59 +23066,59 @@ msgstr "Suche nach Elementen in mehrdimensionalen Arrays wird nicht unterstützt msgid "initial position must not be null" msgstr "Startposition darf nicht NULL sein" -#: utils/adt/arrayfuncs.c:271 utils/adt/arrayfuncs.c:285 -#: utils/adt/arrayfuncs.c:296 utils/adt/arrayfuncs.c:318 -#: utils/adt/arrayfuncs.c:333 utils/adt/arrayfuncs.c:347 -#: utils/adt/arrayfuncs.c:353 utils/adt/arrayfuncs.c:360 -#: utils/adt/arrayfuncs.c:493 utils/adt/arrayfuncs.c:509 -#: utils/adt/arrayfuncs.c:520 utils/adt/arrayfuncs.c:535 -#: utils/adt/arrayfuncs.c:556 utils/adt/arrayfuncs.c:586 -#: utils/adt/arrayfuncs.c:593 utils/adt/arrayfuncs.c:601 -#: utils/adt/arrayfuncs.c:635 utils/adt/arrayfuncs.c:658 -#: utils/adt/arrayfuncs.c:678 utils/adt/arrayfuncs.c:790 -#: utils/adt/arrayfuncs.c:799 utils/adt/arrayfuncs.c:829 -#: utils/adt/arrayfuncs.c:844 utils/adt/arrayfuncs.c:897 +#: utils/adt/arrayfuncs.c:272 utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:334 utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:510 +#: utils/adt/arrayfuncs.c:521 utils/adt/arrayfuncs.c:536 +#: utils/adt/arrayfuncs.c:557 utils/adt/arrayfuncs.c:587 +#: utils/adt/arrayfuncs.c:594 utils/adt/arrayfuncs.c:602 +#: utils/adt/arrayfuncs.c:636 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:679 utils/adt/arrayfuncs.c:791 +#: utils/adt/arrayfuncs.c:800 utils/adt/arrayfuncs.c:830 +#: utils/adt/arrayfuncs.c:845 utils/adt/arrayfuncs.c:898 #, c-format msgid "malformed array literal: \"%s\"" msgstr "fehlerhafte Arraykonstante: »%s«" -#: utils/adt/arrayfuncs.c:272 +#: utils/adt/arrayfuncs.c:273 #, c-format msgid "\"[\" must introduce explicitly-specified array dimensions." msgstr "Auf »[« müssen explizit angegebene Array-Dimensionen folgen." -#: utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:287 #, c-format msgid "Missing array dimension value." msgstr "Dimensionswert fehlt." -#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:334 +#: utils/adt/arrayfuncs.c:298 utils/adt/arrayfuncs.c:335 #, c-format msgid "Missing \"%s\" after array dimensions." msgstr "»%s« fehlt nach Arraydimensionen." -#: utils/adt/arrayfuncs.c:306 utils/adt/arrayfuncs.c:2909 -#: utils/adt/arrayfuncs.c:2941 utils/adt/arrayfuncs.c:2956 +#: utils/adt/arrayfuncs.c:307 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2990 utils/adt/arrayfuncs.c:3005 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "Obergrenze kann nicht kleiner als Untergrenze sein" -#: utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:320 #, c-format msgid "Array value must start with \"{\" or dimension information." msgstr "Arraywert muss mit »{« oder Dimensionsinformationen anfangen." -#: utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:349 #, c-format msgid "Array contents must start with \"{\"." msgstr "Array-Inhalt muss mit {« anfangen." -#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:355 utils/adt/arrayfuncs.c:362 #, c-format msgid "Specified array dimensions do not match array contents." msgstr "Angegebene Array-Dimensionen stimmen nicht mit dem Array-Inhalt überein." -#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:521 +#: utils/adt/arrayfuncs.c:495 utils/adt/arrayfuncs.c:522 #: utils/adt/multirangetypes.c:164 utils/adt/rangetypes.c:2310 #: utils/adt/rangetypes.c:2318 utils/adt/rowtypes.c:211 #: utils/adt/rowtypes.c:219 @@ -23108,74 +23126,74 @@ msgstr "Angegebene Array-Dimensionen stimmen nicht mit dem Array-Inhalt überein msgid "Unexpected end of input." msgstr "Unerwartetes Ende der Eingabe." -#: utils/adt/arrayfuncs.c:510 utils/adt/arrayfuncs.c:557 -#: utils/adt/arrayfuncs.c:587 utils/adt/arrayfuncs.c:636 +#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:558 +#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:637 #, c-format msgid "Unexpected \"%c\" character." msgstr "Unerwartetes Zeichen »%c«." -#: utils/adt/arrayfuncs.c:536 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:537 utils/adt/arrayfuncs.c:660 #, c-format msgid "Unexpected array element." msgstr "Unerwartetes Arrayelement." -#: utils/adt/arrayfuncs.c:594 +#: utils/adt/arrayfuncs.c:595 #, c-format msgid "Unmatched \"%c\" character." msgstr "Zeichen »%c« ohne Gegenstück." -#: utils/adt/arrayfuncs.c:602 utils/adt/jsonfuncs.c:2490 +#: utils/adt/arrayfuncs.c:603 utils/adt/jsonfuncs.c:2490 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "Mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben." -#: utils/adt/arrayfuncs.c:679 utils/adt/multirangetypes.c:287 +#: utils/adt/arrayfuncs.c:680 utils/adt/multirangetypes.c:287 #, c-format msgid "Junk after closing right brace." msgstr "Müll nach schließender rechter geschweifter Klammer." -#: utils/adt/arrayfuncs.c:1301 utils/adt/arrayfuncs.c:3369 -#: utils/adt/arrayfuncs.c:5883 +#: utils/adt/arrayfuncs.c:1302 utils/adt/arrayfuncs.c:3418 +#: utils/adt/arrayfuncs.c:5932 #, c-format msgid "invalid number of dimensions: %d" msgstr "ungültige Anzahl Dimensionen: %d" -#: utils/adt/arrayfuncs.c:1312 +#: utils/adt/arrayfuncs.c:1313 #, c-format msgid "invalid array flags" msgstr "ungültige Array-Flags" -#: utils/adt/arrayfuncs.c:1334 +#: utils/adt/arrayfuncs.c:1335 #, c-format msgid "binary data has array element type %u (%s) instead of expected %u (%s)" msgstr "binäre Daten haben Array-Elementtyp %u (%s) statt erwartet %u (%s)" -#: utils/adt/arrayfuncs.c:1378 utils/adt/multirangetypes.c:445 +#: utils/adt/arrayfuncs.c:1379 utils/adt/multirangetypes.c:445 #: utils/adt/rangetypes.c:333 utils/cache/lsyscache.c:2915 #, c-format msgid "no binary input function available for type %s" msgstr "keine binäre Eingabefunktion verfügbar für Typ %s" -#: utils/adt/arrayfuncs.c:1518 +#: utils/adt/arrayfuncs.c:1519 #, c-format msgid "improper binary format in array element %d" msgstr "falsches Binärformat in Arrayelement %d" -#: utils/adt/arrayfuncs.c:1599 utils/adt/multirangetypes.c:450 +#: utils/adt/arrayfuncs.c:1600 utils/adt/multirangetypes.c:450 #: utils/adt/rangetypes.c:338 utils/cache/lsyscache.c:2948 #, c-format msgid "no binary output function available for type %s" msgstr "keine binäre Ausgabefunktion verfügbar für Typ %s" -#: utils/adt/arrayfuncs.c:2078 +#: utils/adt/arrayfuncs.c:2079 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "Auswählen von Stücken aus Arrays mit fester Länge ist nicht implementiert" -#: utils/adt/arrayfuncs.c:2256 utils/adt/arrayfuncs.c:2278 -#: utils/adt/arrayfuncs.c:2327 utils/adt/arrayfuncs.c:2565 -#: utils/adt/arrayfuncs.c:2887 utils/adt/arrayfuncs.c:5869 -#: utils/adt/arrayfuncs.c:5895 utils/adt/arrayfuncs.c:5906 +#: utils/adt/arrayfuncs.c:2257 utils/adt/arrayfuncs.c:2279 +#: utils/adt/arrayfuncs.c:2328 utils/adt/arrayfuncs.c:2582 +#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:5918 +#: utils/adt/arrayfuncs.c:5944 utils/adt/arrayfuncs.c:5955 #: utils/adt/json.c:1141 utils/adt/json.c:1215 utils/adt/jsonb.c:1315 #: utils/adt/jsonb.c:1401 utils/adt/jsonfuncs.c:4326 utils/adt/jsonfuncs.c:4480 #: utils/adt/jsonfuncs.c:4592 utils/adt/jsonfuncs.c:4641 @@ -23183,116 +23201,116 @@ msgstr "Auswählen von Stücken aus Arrays mit fester Länge ist nicht implement msgid "wrong number of array subscripts" msgstr "falsche Anzahl Arrayindizes" -#: utils/adt/arrayfuncs.c:2261 utils/adt/arrayfuncs.c:2369 -#: utils/adt/arrayfuncs.c:2632 utils/adt/arrayfuncs.c:2946 +#: utils/adt/arrayfuncs.c:2262 utils/adt/arrayfuncs.c:2386 +#: utils/adt/arrayfuncs.c:2665 utils/adt/arrayfuncs.c:2995 #, c-format msgid "array subscript out of range" msgstr "Arrayindex außerhalb des gültigen Bereichs" -#: utils/adt/arrayfuncs.c:2266 +#: utils/adt/arrayfuncs.c:2267 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "Array mit fester Länge kann keinen NULL-Wert enthalten" -#: utils/adt/arrayfuncs.c:2834 +#: utils/adt/arrayfuncs.c:2867 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "Aktualisieren von Stücken aus Arrays mit fester Länge ist nicht implementiert" -#: utils/adt/arrayfuncs.c:2865 +#: utils/adt/arrayfuncs.c:2898 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "Array-Slice-Index muss beide Begrenzungen angeben" -#: utils/adt/arrayfuncs.c:2866 +#: utils/adt/arrayfuncs.c:2899 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." msgstr "Wenn ein Slice eines leeren Array-Wertes zugewiesen wird, dann müssen die Slice-Begrenzungen vollständig angegeben werden." -#: utils/adt/arrayfuncs.c:2877 utils/adt/arrayfuncs.c:2973 +#: utils/adt/arrayfuncs.c:2910 utils/adt/arrayfuncs.c:3022 #, c-format msgid "source array too small" msgstr "Quellarray ist zu klein" -#: utils/adt/arrayfuncs.c:3527 +#: utils/adt/arrayfuncs.c:3576 #, c-format msgid "null array element not allowed in this context" msgstr "NULL-Werte im Array sind in diesem Zusammenhang nicht erlaubt" -#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 -#: utils/adt/arrayfuncs.c:4191 +#: utils/adt/arrayfuncs.c:3678 utils/adt/arrayfuncs.c:3849 +#: utils/adt/arrayfuncs.c:4240 #, c-format msgid "cannot compare arrays of different element types" msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen" -#: utils/adt/arrayfuncs.c:3978 utils/adt/multirangetypes.c:2799 +#: utils/adt/arrayfuncs.c:4027 utils/adt/multirangetypes.c:2799 #: utils/adt/multirangetypes.c:2871 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" msgstr "konnte keine Hash-Funktion für Typ %s ermitteln" -#: utils/adt/arrayfuncs.c:4106 utils/adt/rowtypes.c:1979 +#: utils/adt/arrayfuncs.c:4155 utils/adt/rowtypes.c:1979 #, c-format msgid "could not identify an extended hash function for type %s" msgstr "konnte keine erweiterte Hash-Funktion für Typ %s ermitteln" -#: utils/adt/arrayfuncs.c:5283 +#: utils/adt/arrayfuncs.c:5332 #, c-format msgid "data type %s is not an array type" msgstr "Datentyp %s ist kein Array-Typ" -#: utils/adt/arrayfuncs.c:5338 +#: utils/adt/arrayfuncs.c:5387 #, c-format msgid "cannot accumulate null arrays" msgstr "Arrays, die NULL sind, können nicht akkumuliert werden" -#: utils/adt/arrayfuncs.c:5366 +#: utils/adt/arrayfuncs.c:5415 #, c-format msgid "cannot accumulate empty arrays" msgstr "leere Arrays können nicht akkumuliert werden" -#: utils/adt/arrayfuncs.c:5393 utils/adt/arrayfuncs.c:5399 +#: utils/adt/arrayfuncs.c:5442 utils/adt/arrayfuncs.c:5448 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "Arrays unterschiedlicher Dimensionalität können nicht akkumuliert werden" -#: utils/adt/arrayfuncs.c:5767 utils/adt/arrayfuncs.c:5807 +#: utils/adt/arrayfuncs.c:5816 utils/adt/arrayfuncs.c:5856 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "Dimensions-Array oder Untergrenzen-Array darf nicht NULL sein" -#: utils/adt/arrayfuncs.c:5870 utils/adt/arrayfuncs.c:5896 +#: utils/adt/arrayfuncs.c:5919 utils/adt/arrayfuncs.c:5945 #, c-format msgid "Dimension array must be one dimensional." msgstr "Dimensions-Array muss eindimensional sein." -#: utils/adt/arrayfuncs.c:5875 utils/adt/arrayfuncs.c:5901 +#: utils/adt/arrayfuncs.c:5924 utils/adt/arrayfuncs.c:5950 #, c-format msgid "dimension values cannot be null" msgstr "Dimensionswerte dürfen nicht NULL sein" -#: utils/adt/arrayfuncs.c:5907 +#: utils/adt/arrayfuncs.c:5956 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Untergrenzen-Array hat andere Größe als Dimensions-Array." -#: utils/adt/arrayfuncs.c:6185 +#: utils/adt/arrayfuncs.c:6234 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "Entfernen von Elementen aus mehrdimensionalen Arrays wird nicht unterstützt" -#: utils/adt/arrayfuncs.c:6462 +#: utils/adt/arrayfuncs.c:6511 #, c-format msgid "thresholds must be one-dimensional array" msgstr "Parameter »thresholds« muss ein eindimensionales Array sein" -#: utils/adt/arrayfuncs.c:6467 +#: utils/adt/arrayfuncs.c:6516 #, c-format msgid "thresholds array must not contain NULLs" msgstr "»thresholds«-Array darf keine NULL-Werte enthalten" -#: utils/adt/arrayfuncs.c:6700 +#: utils/adt/arrayfuncs.c:6749 #, c-format msgid "number of elements to trim must be between 0 and %d" msgstr "Anzahl der zu entfernenden Elemente muss zwischen 0 und %d sein" @@ -23307,22 +23325,22 @@ msgstr "Arrayindex muss Typ integer haben" msgid "array subscript in assignment must not be null" msgstr "Arrayindex in Zuweisung darf nicht NULL sein" -#: utils/adt/arrayutils.c:140 +#: utils/adt/arrayutils.c:134 #, c-format msgid "array lower bound is too large: %d" msgstr "Array-Untergrenze ist zu groß: %d" -#: utils/adt/arrayutils.c:240 +#: utils/adt/arrayutils.c:234 #, c-format msgid "typmod array must be type cstring[]" msgstr "Typmod-Array muss Typ cstring[] haben" -#: utils/adt/arrayutils.c:245 +#: utils/adt/arrayutils.c:239 #, c-format msgid "typmod array must be one-dimensional" msgstr "Typmod-Arrays müssen eindimensional sein" -#: utils/adt/arrayutils.c:250 +#: utils/adt/arrayutils.c:244 #, c-format msgid "typmod array must not contain nulls" msgstr "Typmod-Array darf keine NULL-Werte enthalten" @@ -23372,7 +23390,7 @@ msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ %s" #: utils/adt/int8.c:1165 utils/adt/numeric.c:3093 utils/adt/numeric.c:3116 #: utils/adt/numeric.c:3201 utils/adt/numeric.c:3219 utils/adt/numeric.c:3315 #: utils/adt/numeric.c:8481 utils/adt/numeric.c:8771 utils/adt/numeric.c:9096 -#: utils/adt/numeric.c:10553 utils/adt/timestamp.c:3337 +#: utils/adt/numeric.c:10553 utils/adt/timestamp.c:3361 #, c-format msgid "division by zero" msgstr "Division durch Null" @@ -23411,7 +23429,7 @@ msgid "date out of range: \"%s\"" msgstr "date ist außerhalb des gültigen Bereichs: »%s«" #: utils/adt/date.c:215 utils/adt/date.c:513 utils/adt/date.c:537 -#: utils/adt/xml.c:2209 +#: utils/adt/xml.c:2219 #, c-format msgid "date out of range" msgstr "date ist außerhalb des gültigen Bereichs" @@ -23438,20 +23456,20 @@ msgid "date out of range for timestamp" msgstr "Datum ist außerhalb des gültigen Bereichs für Typ »timestamp«" #: utils/adt/date.c:1115 utils/adt/date.c:1198 utils/adt/date.c:1214 -#: utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4032 -#: utils/adt/timestamp.c:4225 utils/adt/timestamp.c:4397 -#: utils/adt/timestamp.c:4650 utils/adt/timestamp.c:4851 -#: utils/adt/timestamp.c:4898 utils/adt/timestamp.c:5122 -#: utils/adt/timestamp.c:5169 utils/adt/timestamp.c:5299 +#: utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4078 +#: utils/adt/timestamp.c:4271 utils/adt/timestamp.c:4443 +#: utils/adt/timestamp.c:4696 utils/adt/timestamp.c:4897 +#: utils/adt/timestamp.c:4944 utils/adt/timestamp.c:5168 +#: utils/adt/timestamp.c:5215 utils/adt/timestamp.c:5345 #, c-format msgid "unit \"%s\" not supported for type %s" msgstr "Einheit »%s« nicht unterstützt für Typ %s" #: utils/adt/date.c:1223 utils/adt/date.c:2211 utils/adt/date.c:2993 -#: utils/adt/timestamp.c:4046 utils/adt/timestamp.c:4242 -#: utils/adt/timestamp.c:4411 utils/adt/timestamp.c:4610 -#: utils/adt/timestamp.c:4907 utils/adt/timestamp.c:5178 -#: utils/adt/timestamp.c:5360 +#: utils/adt/timestamp.c:4092 utils/adt/timestamp.c:4288 +#: utils/adt/timestamp.c:4457 utils/adt/timestamp.c:4656 +#: utils/adt/timestamp.c:4953 utils/adt/timestamp.c:5224 +#: utils/adt/timestamp.c:5406 #, c-format msgid "unit \"%s\" not recognized for type %s" msgstr "Einheit »%s« nicht erkannt für Typ %s" @@ -23465,21 +23483,22 @@ msgstr "Einheit »%s« nicht erkannt für Typ %s" #: utils/adt/timestamp.c:699 utils/adt/timestamp.c:708 #: utils/adt/timestamp.c:786 utils/adt/timestamp.c:819 #: utils/adt/timestamp.c:2916 utils/adt/timestamp.c:2937 -#: utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2959 -#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:3022 -#: utils/adt/timestamp.c:3045 utils/adt/timestamp.c:3058 -#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3077 -#: utils/adt/timestamp.c:3736 utils/adt/timestamp.c:3860 -#: utils/adt/timestamp.c:3950 utils/adt/timestamp.c:4040 -#: utils/adt/timestamp.c:4133 utils/adt/timestamp.c:4236 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4989 -#: utils/adt/timestamp.c:5439 utils/adt/timestamp.c:5453 -#: utils/adt/timestamp.c:5458 utils/adt/timestamp.c:5472 -#: utils/adt/timestamp.c:5505 utils/adt/timestamp.c:5592 -#: utils/adt/timestamp.c:5633 utils/adt/timestamp.c:5637 -#: utils/adt/timestamp.c:5706 utils/adt/timestamp.c:5710 -#: utils/adt/timestamp.c:5724 utils/adt/timestamp.c:5758 utils/adt/xml.c:2231 -#: utils/adt/xml.c:2238 utils/adt/xml.c:2258 utils/adt/xml.c:2265 +#: utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2961 +#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2975 +#: utils/adt/timestamp.c:3030 utils/adt/timestamp.c:3053 +#: utils/adt/timestamp.c:3066 utils/adt/timestamp.c:3080 +#: utils/adt/timestamp.c:3088 utils/adt/timestamp.c:3096 +#: utils/adt/timestamp.c:3782 utils/adt/timestamp.c:3906 +#: utils/adt/timestamp.c:3996 utils/adt/timestamp.c:4086 +#: utils/adt/timestamp.c:4179 utils/adt/timestamp.c:4282 +#: utils/adt/timestamp.c:4761 utils/adt/timestamp.c:5035 +#: utils/adt/timestamp.c:5485 utils/adt/timestamp.c:5499 +#: utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5518 +#: utils/adt/timestamp.c:5551 utils/adt/timestamp.c:5638 +#: utils/adt/timestamp.c:5679 utils/adt/timestamp.c:5683 +#: utils/adt/timestamp.c:5752 utils/adt/timestamp.c:5756 +#: utils/adt/timestamp.c:5770 utils/adt/timestamp.c:5804 utils/adt/xml.c:2241 +#: utils/adt/xml.c:2248 utils/adt/xml.c:2268 utils/adt/xml.c:2275 #, c-format msgid "timestamp out of range" msgstr "timestamp ist außerhalb des gültigen Bereichs" @@ -23497,8 +23516,8 @@ msgstr "Zeit-Feldwert ist außerhalb des gültigen Bereichs: %d:%02d:%02g" #: utils/adt/date.c:2096 utils/adt/date.c:2630 utils/adt/float.c:1048 #: utils/adt/float.c:1124 utils/adt/int.c:634 utils/adt/int.c:681 #: utils/adt/int.c:716 utils/adt/int8.c:414 utils/adt/numeric.c:2497 -#: utils/adt/timestamp.c:3386 utils/adt/timestamp.c:3417 -#: utils/adt/timestamp.c:3448 +#: utils/adt/timestamp.c:3432 utils/adt/timestamp.c:3463 +#: utils/adt/timestamp.c:3494 #, c-format msgid "invalid preceding or following size in window function" msgstr "ungültige vorhergehende oder folgende Größe in Fensterfunktion" @@ -23510,13 +23529,13 @@ msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs" #: utils/adt/date.c:3084 utils/adt/datetime.c:1121 utils/adt/datetime.c:2027 #: utils/adt/datetime.c:4898 utils/adt/timestamp.c:516 -#: utils/adt/timestamp.c:543 utils/adt/timestamp.c:4319 -#: utils/adt/timestamp.c:5464 utils/adt/timestamp.c:5716 +#: utils/adt/timestamp.c:543 utils/adt/timestamp.c:4365 +#: utils/adt/timestamp.c:5510 utils/adt/timestamp.c:5762 #, c-format msgid "time zone \"%s\" not recognized" msgstr "Zeitzone »%s« nicht erkannt" -#: utils/adt/date.c:3117 utils/adt/timestamp.c:5494 utils/adt/timestamp.c:5747 +#: utils/adt/date.c:3117 utils/adt/timestamp.c:5540 utils/adt/timestamp.c:5793 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "Intervall-Zeitzone »%s« darf keine Monate oder Tage enthalten" @@ -24083,7 +24102,7 @@ msgid "invalid int2vector data" msgstr "ungültige int2vector-Daten" #: utils/adt/int.c:1528 utils/adt/int8.c:1404 utils/adt/numeric.c:1678 -#: utils/adt/timestamp.c:5809 utils/adt/timestamp.c:5889 +#: utils/adt/timestamp.c:5855 utils/adt/timestamp.c:5935 #, c-format msgid "step size cannot equal zero" msgstr "Schrittgröße kann nicht gleich null sein" @@ -25220,7 +25239,7 @@ msgstr "Wenn Sie regexp_replace() mit einem Startparameter verwenden wollten, wa #: utils/adt/regexp.c:702 utils/adt/regexp.c:711 utils/adt/regexp.c:1068 #: utils/adt/regexp.c:1132 utils/adt/regexp.c:1141 utils/adt/regexp.c:1150 #: utils/adt/regexp.c:1159 utils/adt/regexp.c:1839 utils/adt/regexp.c:1848 -#: utils/adt/regexp.c:1857 utils/misc/guc.c:11868 utils/misc/guc.c:11902 +#: utils/adt/regexp.c:1857 utils/misc/guc.c:11875 utils/misc/guc.c:11909 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "ungültiger Wert für Parameter »%s«: %d" @@ -25460,7 +25479,7 @@ msgstr "Präzision von TIMESTAMP(%d)%s darf nicht negativ sein" msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "Präzision von TIMESTAMP(%d)%s auf erlaubten Höchstwert %d reduziert" -#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12892 +#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12899 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestamp ist außerhalb des gültigen Bereichs: »%s«" @@ -25499,14 +25518,13 @@ msgstr "timestamp ist außerhalb des gültigen Bereichs: »%g«" #: utils/adt/timestamp.c:938 utils/adt/timestamp.c:1509 #: utils/adt/timestamp.c:2761 utils/adt/timestamp.c:2778 #: utils/adt/timestamp.c:2831 utils/adt/timestamp.c:2870 -#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3120 -#: utils/adt/timestamp.c:3125 utils/adt/timestamp.c:3175 -#: utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3189 -#: utils/adt/timestamp.c:3209 utils/adt/timestamp.c:3216 -#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3253 -#: utils/adt/timestamp.c:3261 utils/adt/timestamp.c:3305 -#: utils/adt/timestamp.c:3731 utils/adt/timestamp.c:3855 -#: utils/adt/timestamp.c:4405 +#: utils/adt/timestamp.c:3134 utils/adt/timestamp.c:3139 +#: utils/adt/timestamp.c:3144 utils/adt/timestamp.c:3194 +#: utils/adt/timestamp.c:3201 utils/adt/timestamp.c:3208 +#: utils/adt/timestamp.c:3228 utils/adt/timestamp.c:3235 +#: utils/adt/timestamp.c:3242 utils/adt/timestamp.c:3329 +#: utils/adt/timestamp.c:3404 utils/adt/timestamp.c:3777 +#: utils/adt/timestamp.c:3901 utils/adt/timestamp.c:4451 #, c-format msgid "interval out of range" msgstr "interval-Wert ist außerhalb des gültigen Bereichs" @@ -25536,22 +25554,22 @@ msgstr "Präzision von interval(%d) muss zwischen %d und %d sein" msgid "cannot subtract infinite timestamps" msgstr "kann unendliche timestamp-Werte nicht subtrahieren" -#: utils/adt/timestamp.c:3891 utils/adt/timestamp.c:4074 +#: utils/adt/timestamp.c:3937 utils/adt/timestamp.c:4120 #, c-format msgid "origin out of range" msgstr "Anfangspunkt ist außerhalb des gültigen Bereichs" -#: utils/adt/timestamp.c:3896 utils/adt/timestamp.c:4079 +#: utils/adt/timestamp.c:3942 utils/adt/timestamp.c:4125 #, c-format msgid "timestamps cannot be binned into intervals containing months or years" msgstr "timestamp-Werte können nicht in Intervalle, die Monate oder Jahre enthalten, einsortiert werden" -#: utils/adt/timestamp.c:3903 utils/adt/timestamp.c:4086 +#: utils/adt/timestamp.c:3949 utils/adt/timestamp.c:4132 #, c-format msgid "stride must be greater than zero" msgstr "Schrittgröße muss größer als null sein" -#: utils/adt/timestamp.c:4399 +#: utils/adt/timestamp.c:4445 #, c-format msgid "Months usually have fractional weeks." msgstr "Monate haben gewöhnlich partielle Wochen." @@ -25949,161 +25967,161 @@ msgstr "Transaktions-ID %llu ist in der Zukunft" msgid "invalid external pg_snapshot data" msgstr "ungültige externe pg_snapshot-Daten" -#: utils/adt/xml.c:222 +#: utils/adt/xml.c:232 #, c-format msgid "unsupported XML feature" msgstr "nicht unterstützte XML-Funktionalität" -#: utils/adt/xml.c:223 +#: utils/adt/xml.c:233 #, c-format msgid "This functionality requires the server to be built with libxml support." msgstr "Diese Funktionalität verlangt, dass der Server mit Libxml-Unterstützung gebaut wird." -#: utils/adt/xml.c:242 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:252 utils/mb/mbutils.c:627 #, c-format msgid "invalid encoding name \"%s\"" msgstr "ungültiger Kodierungsname »%s«" -#: utils/adt/xml.c:485 utils/adt/xml.c:490 +#: utils/adt/xml.c:495 utils/adt/xml.c:500 #, c-format msgid "invalid XML comment" msgstr "ungültiger XML-Kommentar" -#: utils/adt/xml.c:619 +#: utils/adt/xml.c:629 #, c-format msgid "not an XML document" msgstr "kein XML-Dokument" -#: utils/adt/xml.c:778 utils/adt/xml.c:801 +#: utils/adt/xml.c:788 utils/adt/xml.c:811 #, c-format msgid "invalid XML processing instruction" msgstr "ungültige XML-Verarbeitungsanweisung" -#: utils/adt/xml.c:779 +#: utils/adt/xml.c:789 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." msgstr "Die Zielangabe der XML-Verarbeitungsanweisung darf nicht »%s« sein." -#: utils/adt/xml.c:802 +#: utils/adt/xml.c:812 #, c-format msgid "XML processing instruction cannot contain \"?>\"." msgstr "XML-Verarbeitungsanweisung darf nicht »?>« enthalten." -#: utils/adt/xml.c:881 +#: utils/adt/xml.c:891 #, c-format msgid "xmlvalidate is not implemented" msgstr "xmlvalidate ist nicht implementiert" -#: utils/adt/xml.c:960 +#: utils/adt/xml.c:970 #, c-format msgid "could not initialize XML library" msgstr "konnte XML-Bibliothek nicht initialisieren" -#: utils/adt/xml.c:961 +#: utils/adt/xml.c:971 #, c-format msgid "libxml2 has incompatible char type: sizeof(char)=%zu, sizeof(xmlChar)=%zu." msgstr "libxml2 hat inkompatiblen char-Typ: sizeof(char)=%zu, sizeof(xmlChar)=%zu." -#: utils/adt/xml.c:1047 +#: utils/adt/xml.c:1057 #, c-format msgid "could not set up XML error handler" msgstr "konnte XML-Fehlerbehandlung nicht einrichten" -#: utils/adt/xml.c:1048 +#: utils/adt/xml.c:1058 #, c-format msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with." msgstr "Das deutet wahrscheinlich darauf hin, dass die verwendete Version von libxml2 nicht mit den Header-Dateien der Version, mit der PostgreSQL gebaut wurde, kompatibel ist." -#: utils/adt/xml.c:1935 +#: utils/adt/xml.c:1945 msgid "Invalid character value." msgstr "Ungültiger Zeichenwert." -#: utils/adt/xml.c:1938 +#: utils/adt/xml.c:1948 msgid "Space required." msgstr "Leerzeichen benötigt." -#: utils/adt/xml.c:1941 +#: utils/adt/xml.c:1951 msgid "standalone accepts only 'yes' or 'no'." msgstr "standalone akzeptiert nur »yes« oder »no«." -#: utils/adt/xml.c:1944 +#: utils/adt/xml.c:1954 msgid "Malformed declaration: missing version." msgstr "Fehlerhafte Deklaration: Version fehlt." -#: utils/adt/xml.c:1947 +#: utils/adt/xml.c:1957 msgid "Missing encoding in text declaration." msgstr "Fehlende Kodierung in Textdeklaration." -#: utils/adt/xml.c:1950 +#: utils/adt/xml.c:1960 msgid "Parsing XML declaration: '?>' expected." msgstr "Beim Parsen der XML-Deklaration: »?>« erwartet." -#: utils/adt/xml.c:1953 +#: utils/adt/xml.c:1963 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "Unbekannter Libxml-Fehlercode: %d." -#: utils/adt/xml.c:2210 +#: utils/adt/xml.c:2220 #, c-format msgid "XML does not support infinite date values." msgstr "XML unterstützt keine unendlichen Datumswerte." -#: utils/adt/xml.c:2232 utils/adt/xml.c:2259 +#: utils/adt/xml.c:2242 utils/adt/xml.c:2269 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML unterstützt keine unendlichen timestamp-Werte." -#: utils/adt/xml.c:2675 +#: utils/adt/xml.c:2685 #, c-format msgid "invalid query" msgstr "ungültige Anfrage" -#: utils/adt/xml.c:2767 +#: utils/adt/xml.c:2777 #, c-format msgid "portal \"%s\" does not return tuples" msgstr "Portal »%s« gibt keine Tupel zurück" -#: utils/adt/xml.c:4019 +#: utils/adt/xml.c:4029 #, c-format msgid "invalid array for XML namespace mapping" msgstr "ungültiges Array for XML-Namensraumabbildung" -#: utils/adt/xml.c:4020 +#: utils/adt/xml.c:4030 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "Das Array muss zweidimensional sein und die Länge der zweiten Achse muss gleich 2 sein." -#: utils/adt/xml.c:4044 +#: utils/adt/xml.c:4054 #, c-format msgid "empty XPath expression" msgstr "leerer XPath-Ausdruck" -#: utils/adt/xml.c:4096 +#: utils/adt/xml.c:4106 #, c-format msgid "neither namespace name nor URI may be null" msgstr "weder Namensraumname noch URI dürfen NULL sein" -#: utils/adt/xml.c:4103 +#: utils/adt/xml.c:4113 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "konnte XML-Namensraum mit Namen »%s« und URI »%s« nicht registrieren" -#: utils/adt/xml.c:4454 +#: utils/adt/xml.c:4464 #, c-format msgid "DEFAULT namespace is not supported" msgstr "DEFAULT-Namensraum wird nicht unterstützt" -#: utils/adt/xml.c:4483 +#: utils/adt/xml.c:4493 #, c-format msgid "row path filter must not be empty string" msgstr "Zeilenpfadfilter darf nicht leer sein" -#: utils/adt/xml.c:4514 +#: utils/adt/xml.c:4524 #, c-format msgid "column path filter must not be empty string" msgstr "Spaltenpfadfilter darf nicht leer sein" -#: utils/adt/xml.c:4658 +#: utils/adt/xml.c:4668 #, c-format msgid "more than one value returned by column XPath expression" msgstr "XPath-Ausdruck für Spalte gab mehr als einen Wert zurück" @@ -26164,17 +26182,17 @@ msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht." msgid "could not remove cache file \"%s\": %m" msgstr "konnte Cache-Datei »%s« nicht löschen: %m" -#: utils/cache/relmapper.c:590 +#: utils/cache/relmapper.c:591 #, c-format msgid "cannot PREPARE a transaction that modified relation mapping" msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die das Relation-Mapping geändert hat" -#: utils/cache/relmapper.c:836 +#: utils/cache/relmapper.c:839 #, c-format msgid "relation mapping file \"%s\" contains invalid data" msgstr "Relation-Mapping-Datei »%s« enthält ungültige Daten" -#: utils/cache/relmapper.c:846 +#: utils/cache/relmapper.c:849 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "Relation-Mapping-Datei »%s« enthält falsche Prüfsumme" @@ -26472,7 +26490,7 @@ msgstr "Datenverzeichnis »%s« hat ungültige Zugriffsrechte" msgid "Permissions should be u=rwx (0700) or u=rwx,g=rx (0750)." msgstr "Rechte sollten u=rwx (0700) oder u=rwx,g=rx (0750) sein." -#: utils/init/miscinit.c:665 utils/misc/guc.c:7830 +#: utils/init/miscinit.c:665 utils/misc/guc.c:7837 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "kann Parameter »%s« nicht in einer sicherheitsbeschränkten Operation setzen" @@ -26492,123 +26510,123 @@ msgstr "Rolle »%s« hat keine Berechtigung zum Einloggen" msgid "too many connections for role \"%s\"" msgstr "zu viele Verbindungen von Rolle »%s«" -#: utils/init/miscinit.c:841 +#: utils/init/miscinit.c:849 #, c-format msgid "permission denied to set session authorization" msgstr "keine Berechtigung, um Sitzungsautorisierung zu setzen" -#: utils/init/miscinit.c:924 +#: utils/init/miscinit.c:932 #, c-format msgid "invalid role OID: %u" msgstr "ungültige Rollen-OID: %u" -#: utils/init/miscinit.c:978 +#: utils/init/miscinit.c:986 #, c-format msgid "database system is shut down" msgstr "Datenbanksystem ist heruntergefahren" -#: utils/init/miscinit.c:1065 +#: utils/init/miscinit.c:1073 #, c-format msgid "could not create lock file \"%s\": %m" msgstr "konnte Sperrdatei »%s« nicht erstellen: %m" -#: utils/init/miscinit.c:1079 +#: utils/init/miscinit.c:1087 #, c-format msgid "could not open lock file \"%s\": %m" msgstr "konnte Sperrdatei »%s« nicht öffnen: %m" -#: utils/init/miscinit.c:1086 +#: utils/init/miscinit.c:1094 #, c-format msgid "could not read lock file \"%s\": %m" msgstr "konnte Sperrdatei »%s« nicht lesen: %m" -#: utils/init/miscinit.c:1095 +#: utils/init/miscinit.c:1103 #, c-format msgid "lock file \"%s\" is empty" msgstr "Sperrdatei »%s« ist leer" -#: utils/init/miscinit.c:1096 +#: utils/init/miscinit.c:1104 #, c-format msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash." msgstr "Entweder startet gerade ein anderer Server oder die Sperrdatei ist von einen Absturz übrig geblieben." -#: utils/init/miscinit.c:1140 +#: utils/init/miscinit.c:1148 #, c-format msgid "lock file \"%s\" already exists" msgstr "Sperrdatei »%s« existiert bereits" -#: utils/init/miscinit.c:1144 +#: utils/init/miscinit.c:1152 #, c-format msgid "Is another postgres (PID %d) running in data directory \"%s\"?" msgstr "Läuft bereits ein anderer postgres-Prozess (PID %d) im Datenverzeichnis »%s«?" -#: utils/init/miscinit.c:1146 +#: utils/init/miscinit.c:1154 #, c-format msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" msgstr "Läuft bereits ein anderer postmaster-Prozess (PID %d) im Datenverzeichnis »%s«?" -#: utils/init/miscinit.c:1149 +#: utils/init/miscinit.c:1157 #, c-format msgid "Is another postgres (PID %d) using socket file \"%s\"?" msgstr "Verwendet bereits ein anderer postgres-Prozess (PID %d) die Socketdatei »%s«?" -#: utils/init/miscinit.c:1151 +#: utils/init/miscinit.c:1159 #, c-format msgid "Is another postmaster (PID %d) using socket file \"%s\"?" msgstr "Verwendet bereits ein anderer postmaster-Prozess (PID %d) die Socketdatei »%s«?" -#: utils/init/miscinit.c:1202 +#: utils/init/miscinit.c:1210 #, c-format msgid "could not remove old lock file \"%s\": %m" msgstr "konnte alte Sperrdatei »%s« nicht löschen: %m" -#: utils/init/miscinit.c:1204 +#: utils/init/miscinit.c:1212 #, c-format msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again." msgstr "Die Datei ist anscheinend aus Versehen übrig geblieben, konnte aber nicht gelöscht werden. Bitte entfernen Sie die Datei von Hand und versuchen Sie es erneut." -#: utils/init/miscinit.c:1241 utils/init/miscinit.c:1255 -#: utils/init/miscinit.c:1266 +#: utils/init/miscinit.c:1249 utils/init/miscinit.c:1263 +#: utils/init/miscinit.c:1274 #, c-format msgid "could not write lock file \"%s\": %m" msgstr "konnte Sperrdatei »%s« nicht schreiben: %m" -#: utils/init/miscinit.c:1377 utils/init/miscinit.c:1519 utils/misc/guc.c:10836 +#: utils/init/miscinit.c:1385 utils/init/miscinit.c:1527 utils/misc/guc.c:10843 #, c-format msgid "could not read from file \"%s\": %m" msgstr "konnte nicht aus Datei »%s« lesen: %m" -#: utils/init/miscinit.c:1507 +#: utils/init/miscinit.c:1515 #, c-format msgid "could not open file \"%s\": %m; continuing anyway" msgstr "konnte Datei »%s« nicht öffnen: %m; setze trotzdem fort" -#: utils/init/miscinit.c:1532 +#: utils/init/miscinit.c:1540 #, c-format msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" msgstr "Sperrdatei »%s« enthält falsche PID: %ld statt %ld" -#: utils/init/miscinit.c:1571 utils/init/miscinit.c:1587 +#: utils/init/miscinit.c:1579 utils/init/miscinit.c:1595 #, c-format msgid "\"%s\" is not a valid data directory" msgstr "»%s« ist kein gültiges Datenverzeichnis" -#: utils/init/miscinit.c:1573 +#: utils/init/miscinit.c:1581 #, c-format msgid "File \"%s\" is missing." msgstr "Die Datei »%s« fehlt." -#: utils/init/miscinit.c:1589 +#: utils/init/miscinit.c:1597 #, c-format msgid "File \"%s\" does not contain valid data." msgstr "Die Datei »%s« enthält keine gültigen Daten." -#: utils/init/miscinit.c:1591 +#: utils/init/miscinit.c:1599 #, c-format msgid "You might need to initdb." msgstr "Sie müssen möglicherweise initdb ausführen." -#: utils/init/miscinit.c:1599 +#: utils/init/miscinit.c:1607 #, c-format msgid "The data directory was initialized by PostgreSQL version %s, which is not compatible with this version %s." msgstr "Das Datenverzeichnis wurde von PostgreSQL Version %s initialisiert, welche nicht mit dieser Version %s kompatibel ist." @@ -27132,7 +27150,7 @@ msgid "Forces synchronization of updates to disk." msgstr "Erzwingt die Synchronisierung von Aktualisierungen auf Festplatte." #: utils/misc/guc.c:1287 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "Der Server verwendet den Systemaufruf fsync() an mehreren Stellen, um sicherzustellen, dass Datenänderungen physikalisch auf die Festplatte geschrieben werden. Das stellt sicher, dass der Datenbankcluster nach einem Betriebssystemabsturz oder Hardwarefehler in einem korrekten Zustand wiederhergestellt werden kann." #: utils/misc/guc.c:1298 @@ -28850,173 +28868,173 @@ msgstr "%d%s%s ist außerhalb des gültigen Bereichs für Parameter »%s« (%d . msgid "%g%s%s is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g%s%s ist außerhalb des gültigen Bereichs für Parameter »%s« (%g ... %g)" -#: utils/misc/guc.c:7648 utils/misc/guc.c:9096 +#: utils/misc/guc.c:7649 utils/misc/guc.c:9103 #, c-format msgid "cannot set parameters during a parallel operation" msgstr "während einer parallelen Operation können keine Parameter gesetzt werden" -#: utils/misc/guc.c:7665 utils/misc/guc.c:8920 +#: utils/misc/guc.c:7668 utils/misc/guc.c:8927 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "Parameter »%s« kann nicht geändert werden" -#: utils/misc/guc.c:7698 +#: utils/misc/guc.c:7701 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "Parameter »%s« kann jetzt nicht geändert werden" -#: utils/misc/guc.c:7725 utils/misc/guc.c:7783 utils/misc/guc.c:8896 -#: utils/misc/guc.c:11804 +#: utils/misc/guc.c:7728 utils/misc/guc.c:7790 utils/misc/guc.c:8903 +#: utils/misc/guc.c:11811 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "keine Berechtigung, um Parameter »%s« zu setzen" -#: utils/misc/guc.c:7763 +#: utils/misc/guc.c:7770 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "Parameter »%s« kann nach Start der Verbindung nicht geändert werden" -#: utils/misc/guc.c:7822 +#: utils/misc/guc.c:7829 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "Parameter »%s« kann nicht in einer Security-Definer-Funktion gesetzt werden" -#: utils/misc/guc.c:8475 utils/misc/guc.c:8522 utils/misc/guc.c:10009 +#: utils/misc/guc.c:8482 utils/misc/guc.c:8529 utils/misc/guc.c:10016 #, c-format msgid "must be superuser or have privileges of pg_read_all_settings to examine \"%s\"" msgstr "nur Superuser oder Rollen mit den Privilegien von pg_read_all_settings können »%s« ansehen" -#: utils/misc/guc.c:8606 +#: utils/misc/guc.c:8613 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s darf nur ein Argument haben" -#: utils/misc/guc.c:8886 +#: utils/misc/guc.c:8893 #, c-format msgid "permission denied to perform ALTER SYSTEM RESET ALL" msgstr "keine Berechtigung um ALTER SYSTEM RESET ALL auszuführen" -#: utils/misc/guc.c:8953 +#: utils/misc/guc.c:8960 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" msgstr "Parameterwert für ALTER SYSTEM darf keine Newline enthalten" -#: utils/misc/guc.c:8998 +#: utils/misc/guc.c:9005 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "konnte Inhalt der Datei »%s« nicht parsen" -#: utils/misc/guc.c:9172 +#: utils/misc/guc.c:9179 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOT ist nicht implementiert" -#: utils/misc/guc.c:9259 +#: utils/misc/guc.c:9266 #, c-format msgid "SET requires parameter name" msgstr "SET benötigt Parameternamen" -#: utils/misc/guc.c:9392 +#: utils/misc/guc.c:9399 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "Versuch, den Parameter »%s« zu redefinieren" -#: utils/misc/guc.c:9719 +#: utils/misc/guc.c:9726 #, c-format msgid "invalid configuration parameter name \"%s\", removing it" msgstr "ungültiger Konfigurationsparametername »%s«, wird entfernt" -#: utils/misc/guc.c:9721 +#: utils/misc/guc.c:9728 #, c-format msgid "\"%s\" is now a reserved prefix." msgstr "»%s« ist jetzt ein reservierter Präfix." -#: utils/misc/guc.c:11244 +#: utils/misc/guc.c:11251 #, c-format msgid "while setting parameter \"%s\" to \"%s\"" msgstr "beim Setzen von Parameter »%s« auf »%s«" -#: utils/misc/guc.c:11413 +#: utils/misc/guc.c:11420 #, c-format msgid "parameter \"%s\" could not be set" msgstr "Parameter »%s« kann nicht gesetzt werden" -#: utils/misc/guc.c:11505 +#: utils/misc/guc.c:11512 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "konnte Wert von Parameter »%s« nicht lesen" -#: utils/misc/guc.c:11936 +#: utils/misc/guc.c:11943 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "ungültiger Wert für Parameter »%s«: %g" -#: utils/misc/guc.c:12249 +#: utils/misc/guc.c:12256 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "»temp_buffers« kann nicht geändert werden, nachdem in der Sitzung auf temporäre Tabellen zugriffen wurde." -#: utils/misc/guc.c:12261 +#: utils/misc/guc.c:12268 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour wird von dieser Installation nicht unterstützt" -#: utils/misc/guc.c:12274 +#: utils/misc/guc.c:12281 #, c-format msgid "SSL is not supported by this build" msgstr "SSL wird von dieser Installation nicht unterstützt" -#: utils/misc/guc.c:12286 +#: utils/misc/guc.c:12293 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "Kann Parameter nicht einschalten, wenn »log_statement_stats« an ist." -#: utils/misc/guc.c:12298 +#: utils/misc/guc.c:12305 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "Kann »log_statement_stats« nicht einschalten, wenn »log_parser_stats«, »log_planner_stats« oder »log_executor_stats« an ist." -#: utils/misc/guc.c:12528 +#: utils/misc/guc.c:12535 #, c-format msgid "effective_io_concurrency must be set to 0 on platforms that lack posix_fadvise()." msgstr "effective_io_concurrency muss auf Plattformen ohne posix_fadvise() auf 0 gesetzt sein." -#: utils/misc/guc.c:12541 +#: utils/misc/guc.c:12548 #, c-format msgid "maintenance_io_concurrency must be set to 0 on platforms that lack posix_fadvise()." msgstr "maintenance_io_concurrency muss auf Plattformen ohne posix_fadvise() auf 0 gesetzt sein." -#: utils/misc/guc.c:12555 +#: utils/misc/guc.c:12562 #, c-format msgid "huge_page_size must be 0 on this platform." msgstr "huge_page_size muss auf dieser Plattform 0 sein." -#: utils/misc/guc.c:12567 +#: utils/misc/guc.c:12574 #, c-format msgid "client_connection_check_interval must be set to 0 on this platform." msgstr "client_connection_check_interval muss auf dieser Plattform auf 0 gesetzt sein." -#: utils/misc/guc.c:12679 +#: utils/misc/guc.c:12686 #, c-format msgid "invalid character" msgstr "ungültiges Zeichen" -#: utils/misc/guc.c:12739 +#: utils/misc/guc.c:12746 #, c-format msgid "recovery_target_timeline is not a valid number." msgstr "recovery_target_timeline ist keine gültige Zahl." -#: utils/misc/guc.c:12779 +#: utils/misc/guc.c:12786 #, c-format msgid "multiple recovery targets specified" msgstr "mehrere Wiederherstellungsziele angegeben" -#: utils/misc/guc.c:12780 +#: utils/misc/guc.c:12787 #, c-format msgid "At most one of recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid may be set." msgstr "Höchstens eins aus recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid darf gesetzt sein." -#: utils/misc/guc.c:12788 +#: utils/misc/guc.c:12795 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Der einzige erlaubte Wert ist »immediate«." diff --git a/src/backend/po/es.po b/src/backend/po/es.po index 97c9a4b..7c7ae44 100644 --- a/src/backend/po/es.po +++ b/src/backend/po/es.po @@ -26754,7 +26754,7 @@ msgid "Forces synchronization of updates to disk." msgstr "Forzar la sincronización de escrituras a disco." #: utils/misc/guc.c:1287 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "El servidor usará la llamada a sistema fsync() en varios lugares para asegurarse que las actualizaciones son escritas físicamente a disco. Esto asegura que las bases de datos se recuperarán a un estado consistente después de una caída de hardware o sistema operativo." #: utils/misc/guc.c:1298 diff --git a/src/backend/po/fr.po b/src/backend/po/fr.po index fac1333..9e606a3 100644 --- a/src/backend/po/fr.po +++ b/src/backend/po/fr.po @@ -27996,7 +27996,7 @@ msgid "Forces synchronization of updates to disk." msgstr "Force la synchronisation des mises à jour sur le disque." #: utils/misc/guc.c:1287 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "" "Le serveur utilisera l'appel système fsync() à différents endroits pour\n" "s'assurer que les mises à jour sont écrites physiquement sur le disque. Ceci\n" diff --git a/src/backend/po/it.po b/src/backend/po/it.po index 673e2aa..51b6943 100644 --- a/src/backend/po/it.po +++ b/src/backend/po/it.po @@ -26344,7 +26344,7 @@ msgid "Forces synchronization of updates to disk." msgstr "Forza la sincronizzazione degli aggiornamenti sul disco." #: utils/misc/guc.c:1297 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "Il server userà in diversi punti la chiamata di sistema fsync() per assicurarsi che gli aggiornamenti vengano scritti fisicamente sul disco. Questo assicura che un cluster di database possa essere recuperato in uno stato consistente dopo un crash di sistema o dell'hardware." #: utils/misc/guc.c:1308 diff --git a/src/backend/po/ja.po b/src/backend/po/ja.po index 086d7a4..e1a6f93 100644 --- a/src/backend/po/ja.po +++ b/src/backend/po/ja.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL 15)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-09-20 09:19+0900\n" -"PO-Revision-Date: 2023-09-20 09:32+0900\n" +"POT-Creation-Date: 2024-01-29 12:58+0900\n" +"PO-Revision-Date: 2024-01-29 13:06+0900\n" "Last-Translator: Kyotaro Horiguchi \n" "Language-Team: jpug-doc \n" "Language: ja\n" @@ -67,34 +67,34 @@ msgstr "圧縮アルゴリズム\"%s\"はワーカー数を受け付けません msgid "not recorded" msgstr "記録されていません" -#: ../common/controldata_utils.c:69 ../common/controldata_utils.c:73 commands/copyfrom.c:1515 commands/extension.c:3401 utils/adt/genfile.c:123 +#: ../common/controldata_utils.c:79 ../common/controldata_utils.c:83 commands/copyfrom.c:1525 commands/extension.c:3401 utils/adt/genfile.c:123 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m" -#: ../common/controldata_utils.c:84 ../common/controldata_utils.c:86 access/transam/timeline.c:143 access/transam/timeline.c:362 access/transam/twophase.c:1349 access/transam/xlog.c:3207 access/transam/xlog.c:4022 access/transam/xlogrecovery.c:1197 access/transam/xlogrecovery.c:1289 access/transam/xlogrecovery.c:1326 access/transam/xlogrecovery.c:1386 backup/basebackup.c:1844 commands/extension.c:3411 libpq/hba.c:505 replication/logical/origin.c:729 +#: ../common/controldata_utils.c:94 ../common/controldata_utils.c:96 access/transam/timeline.c:143 access/transam/timeline.c:362 access/transam/twophase.c:1349 access/transam/xlog.c:3209 access/transam/xlog.c:4024 access/transam/xlogrecovery.c:1223 access/transam/xlogrecovery.c:1315 access/transam/xlogrecovery.c:1352 access/transam/xlogrecovery.c:1412 backup/basebackup.c:1844 commands/extension.c:3411 libpq/hba.c:505 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:4958 replication/logical/snapbuild.c:1870 replication/logical/snapbuild.c:1912 replication/logical/snapbuild.c:1939 replication/slot.c:1807 replication/slot.c:1848 replication/walsender.c:658 storage/file/buffile.c:463 storage/file/copydir.c:195 utils/adt/genfile.c:197 utils/adt/misc.c:863 utils/cache/relmapper.c:813 #, c-format msgid "could not read file \"%s\": %m" msgstr "ファイル\"%s\"の読み取りに失敗しました: %m" -#: ../common/controldata_utils.c:92 ../common/controldata_utils.c:95 access/transam/xlog.c:3212 access/transam/xlog.c:4027 backup/basebackup.c:1848 replication/logical/origin.c:734 replication/logical/origin.c:773 replication/logical/snapbuild.c:1875 replication/logical/snapbuild.c:1917 replication/logical/snapbuild.c:1944 replication/slot.c:1811 replication/slot.c:1852 replication/walsender.c:663 utils/cache/relmapper.c:817 +#: ../common/controldata_utils.c:102 ../common/controldata_utils.c:105 access/transam/xlog.c:3214 access/transam/xlog.c:4029 backup/basebackup.c:1848 replication/logical/origin.c:734 replication/logical/origin.c:773 replication/logical/snapbuild.c:1875 replication/logical/snapbuild.c:1917 replication/logical/snapbuild.c:1944 replication/slot.c:1811 replication/slot.c:1852 replication/walsender.c:663 utils/cache/relmapper.c:817 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "ファイル\"%1$s\"を読み込めませんでした: %3$zuバイトのうち%2$dバイトを読み込みました" -#: ../common/controldata_utils.c:104 ../common/controldata_utils.c:108 ../common/controldata_utils.c:241 ../common/controldata_utils.c:244 access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 access/transam/timeline.c:392 access/transam/timeline.c:438 access/transam/timeline.c:516 access/transam/twophase.c:1361 access/transam/twophase.c:1773 access/transam/xlog.c:3054 access/transam/xlog.c:3247 access/transam/xlog.c:3252 access/transam/xlog.c:3390 -#: access/transam/xlog.c:3992 access/transam/xlog.c:4738 commands/copyfrom.c:1575 commands/copyto.c:327 libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 replication/logical/origin.c:667 replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5016 replication/logical/snapbuild.c:1779 replication/logical/snapbuild.c:1952 replication/slot.c:1698 replication/slot.c:1859 replication/walsender.c:673 storage/file/copydir.c:218 storage/file/copydir.c:223 +#: ../common/controldata_utils.c:114 ../common/controldata_utils.c:118 ../common/controldata_utils.c:271 ../common/controldata_utils.c:274 access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 access/transam/timeline.c:392 access/transam/timeline.c:438 access/transam/timeline.c:516 access/transam/twophase.c:1361 access/transam/twophase.c:1773 access/transam/xlog.c:3056 access/transam/xlog.c:3249 access/transam/xlog.c:3254 access/transam/xlog.c:3392 +#: access/transam/xlog.c:3994 access/transam/xlog.c:4740 commands/copyfrom.c:1585 commands/copyto.c:327 libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 replication/logical/origin.c:667 replication/logical/origin.c:806 replication/logical/reorderbuffer.c:5016 replication/logical/snapbuild.c:1779 replication/logical/snapbuild.c:1952 replication/slot.c:1698 replication/slot.c:1859 replication/walsender.c:673 storage/file/copydir.c:218 storage/file/copydir.c:223 #: storage/file/fd.c:745 storage/file/fd.c:3643 storage/file/fd.c:3749 utils/cache/relmapper.c:828 utils/cache/relmapper.c:956 #, c-format msgid "could not close file \"%s\": %m" msgstr "ファイル\"%s\"をクローズできませんでした: %m" -#: ../common/controldata_utils.c:124 +#: ../common/controldata_utils.c:154 msgid "byte ordering mismatch" msgstr "バイトオーダが合っていません" -#: ../common/controldata_utils.c:126 +#: ../common/controldata_utils.c:156 #, c-format msgid "" "possible byte ordering mismatch\n" @@ -107,28 +107,28 @@ msgstr "" "されるものと一致しないようです。この場合以下の結果は不正確になります。また、\n" "PostgreSQLインストレーションはこのデータディレクトリと互換性がなくなります。" -#: ../common/controldata_utils.c:189 ../common/controldata_utils.c:194 ../common/file_utils.c:232 ../common/file_utils.c:291 ../common/file_utils.c:365 access/heap/rewriteheap.c:1264 access/transam/timeline.c:111 access/transam/timeline.c:251 access/transam/timeline.c:348 access/transam/twophase.c:1305 access/transam/xlog.c:2941 access/transam/xlog.c:3123 access/transam/xlog.c:3162 access/transam/xlog.c:3357 access/transam/xlog.c:4012 -#: access/transam/xlogrecovery.c:4209 access/transam/xlogrecovery.c:4312 access/transam/xlogutils.c:852 backup/basebackup.c:522 backup/basebackup.c:1520 postmaster/syslogger.c:1560 replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3611 replication/logical/reorderbuffer.c:4162 replication/logical/reorderbuffer.c:4938 replication/logical/snapbuild.c:1734 replication/logical/snapbuild.c:1841 replication/slot.c:1779 replication/walsender.c:631 -#: replication/walsender.c:2722 storage/file/copydir.c:161 storage/file/fd.c:720 storage/file/fd.c:3395 storage/file/fd.c:3630 storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:792 utils/cache/relmapper.c:900 utils/error/elog.c:1933 utils/init/miscinit.c:1366 utils/init/miscinit.c:1500 utils/init/miscinit.c:1577 utils/misc/guc.c:8991 utils/misc/guc.c:9040 +#: ../common/controldata_utils.c:219 ../common/controldata_utils.c:224 ../common/file_utils.c:232 ../common/file_utils.c:291 ../common/file_utils.c:365 access/heap/rewriteheap.c:1264 access/transam/timeline.c:111 access/transam/timeline.c:251 access/transam/timeline.c:348 access/transam/twophase.c:1305 access/transam/xlog.c:2943 access/transam/xlog.c:3125 access/transam/xlog.c:3164 access/transam/xlog.c:3359 access/transam/xlog.c:4014 +#: access/transam/xlogrecovery.c:4243 access/transam/xlogrecovery.c:4346 access/transam/xlogutils.c:852 backup/basebackup.c:522 backup/basebackup.c:1520 postmaster/syslogger.c:1560 replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3611 replication/logical/reorderbuffer.c:4162 replication/logical/reorderbuffer.c:4938 replication/logical/snapbuild.c:1734 replication/logical/snapbuild.c:1841 replication/slot.c:1779 replication/walsender.c:631 +#: replication/walsender.c:2722 storage/file/copydir.c:161 storage/file/fd.c:720 storage/file/fd.c:3395 storage/file/fd.c:3630 storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:792 utils/cache/relmapper.c:900 utils/error/elog.c:1933 utils/init/miscinit.c:1374 utils/init/miscinit.c:1508 utils/init/miscinit.c:1585 utils/misc/guc.c:8998 utils/misc/guc.c:9047 #, c-format msgid "could not open file \"%s\": %m" msgstr "ファイル\"%s\"をオープンできませんでした: %m" -#: ../common/controldata_utils.c:210 ../common/controldata_utils.c:213 access/transam/twophase.c:1746 access/transam/twophase.c:1755 access/transam/xlog.c:8674 access/transam/xlogfuncs.c:600 backup/basebackup_server.c:173 backup/basebackup_server.c:266 postmaster/postmaster.c:5633 postmaster/syslogger.c:1571 postmaster/syslogger.c:1584 postmaster/syslogger.c:1597 utils/cache/relmapper.c:934 +#: ../common/controldata_utils.c:240 ../common/controldata_utils.c:243 access/transam/twophase.c:1746 access/transam/twophase.c:1755 access/transam/xlog.c:8676 access/transam/xlogfuncs.c:600 backup/basebackup_server.c:173 backup/basebackup_server.c:266 postmaster/postmaster.c:5633 postmaster/syslogger.c:1571 postmaster/syslogger.c:1584 postmaster/syslogger.c:1597 utils/cache/relmapper.c:934 #, c-format msgid "could not write file \"%s\": %m" msgstr "ファイル\"%s\"を書き出せませんでした: %m" -#: ../common/controldata_utils.c:227 ../common/controldata_utils.c:232 ../common/file_utils.c:303 ../common/file_utils.c:373 access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 access/transam/timeline.c:510 access/transam/twophase.c:1767 access/transam/xlog.c:3047 access/transam/xlog.c:3241 access/transam/xlog.c:3985 access/transam/xlog.c:7977 access/transam/xlog.c:8020 -#: backup/basebackup_server.c:207 replication/logical/snapbuild.c:1772 replication/slot.c:1684 replication/slot.c:1789 storage/file/fd.c:737 storage/file/fd.c:3741 storage/smgr/md.c:992 storage/smgr/md.c:1033 storage/sync/sync.c:453 utils/cache/relmapper.c:949 utils/misc/guc.c:8760 +#: ../common/controldata_utils.c:257 ../common/controldata_utils.c:262 ../common/file_utils.c:303 ../common/file_utils.c:373 access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 access/transam/timeline.c:510 access/transam/twophase.c:1767 access/transam/xlog.c:3049 access/transam/xlog.c:3243 access/transam/xlog.c:3987 access/transam/xlog.c:7979 access/transam/xlog.c:8022 +#: backup/basebackup_server.c:207 replication/logical/snapbuild.c:1772 replication/slot.c:1684 replication/slot.c:1789 storage/file/fd.c:737 storage/file/fd.c:3741 storage/smgr/md.c:992 storage/smgr/md.c:1033 storage/sync/sync.c:453 utils/cache/relmapper.c:949 utils/misc/guc.c:8767 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "ファイル\"%s\"をfsyncできませんでした: %m" #: ../common/cryptohash.c:266 ../common/cryptohash_openssl.c:133 ../common/cryptohash_openssl.c:332 ../common/exec.c:560 ../common/exec.c:605 ../common/exec.c:697 ../common/hmac.c:309 ../common/hmac.c:325 ../common/hmac_openssl.c:132 ../common/hmac_openssl.c:327 ../common/md5_common.c:155 ../common/psprintf.c:143 ../common/scram-common.c:247 ../common/stringinfo.c:305 ../port/path.c:751 ../port/path.c:789 ../port/path.c:806 access/transam/twophase.c:1414 -#: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1338 libpq/auth.c:1406 libpq/auth.c:1964 libpq/be-secure-gssapi.c:520 postmaster/bgworker.c:349 postmaster/bgworker.c:931 postmaster/postmaster.c:2594 postmaster/postmaster.c:4180 postmaster/postmaster.c:5558 postmaster/postmaster.c:5929 replication/libpqwalreceiver/libpqwalreceiver.c:300 replication/logical/logical.c:205 replication/walsender.c:701 storage/buffer/localbuf.c:442 -#: storage/file/fd.c:892 storage/file/fd.c:1434 storage/file/fd.c:1595 storage/file/fd.c:2409 storage/ipc/procarray.c:1451 storage/ipc/procarray.c:2281 storage/ipc/procarray.c:2288 storage/ipc/procarray.c:2793 storage/ipc/procarray.c:3424 utils/adt/formatting.c:1732 utils/adt/formatting.c:1854 utils/adt/formatting.c:1977 utils/adt/pg_locale.c:453 utils/adt/pg_locale.c:617 utils/adt/regexp.c:224 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:5192 utils/misc/guc.c:5208 utils/misc/guc.c:5221 utils/misc/guc.c:8738 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:266 utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 utils/mmgr/mcxt.c:1000 +#: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1336 libpq/auth.c:1404 libpq/auth.c:1962 libpq/be-secure-gssapi.c:520 postmaster/bgworker.c:349 postmaster/bgworker.c:931 postmaster/postmaster.c:2594 postmaster/postmaster.c:4180 postmaster/postmaster.c:5558 postmaster/postmaster.c:5929 replication/libpqwalreceiver/libpqwalreceiver.c:300 replication/logical/logical.c:205 replication/walsender.c:701 storage/buffer/localbuf.c:442 +#: storage/file/fd.c:892 storage/file/fd.c:1434 storage/file/fd.c:1595 storage/file/fd.c:2409 storage/ipc/procarray.c:1451 storage/ipc/procarray.c:2280 storage/ipc/procarray.c:2287 storage/ipc/procarray.c:2792 storage/ipc/procarray.c:3423 utils/adt/formatting.c:1732 utils/adt/formatting.c:1854 utils/adt/formatting.c:1977 utils/adt/pg_locale.c:453 utils/adt/pg_locale.c:617 utils/adt/regexp.c:224 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:5192 utils/misc/guc.c:5208 utils/misc/guc.c:5221 utils/misc/guc.c:8745 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:266 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 #, c-format msgid "out of memory" @@ -171,7 +171,7 @@ msgstr "実行すべき\"%s\"がありませんでした" msgid "could not change directory to \"%s\": %m" msgstr "ディレクトリ\"%s\"に移動できませんでした: %m" -#: ../common/exec.c:299 access/transam/xlog.c:8323 backup/basebackup.c:1340 utils/adt/misc.c:342 +#: ../common/exec.c:299 access/transam/xlog.c:8325 backup/basebackup.c:1340 utils/adt/misc.c:342 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "シンボリックリンク\"%s\"を読めませんでした: %m" @@ -191,7 +191,7 @@ msgstr "メモリ不足です\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "nullポインタは複製できません(内部エラー)\n" -#: ../common/file_utils.c:87 ../common/file_utils.c:451 ../common/file_utils.c:455 access/transam/twophase.c:1317 access/transam/xlogarchive.c:111 access/transam/xlogarchive.c:230 backup/basebackup.c:338 backup/basebackup.c:528 backup/basebackup.c:599 commands/copyfrom.c:1525 commands/copyto.c:725 commands/extension.c:3390 commands/tablespace.c:826 commands/tablespace.c:917 guc-file.l:1066 postmaster/pgarch.c:597 replication/logical/snapbuild.c:1651 +#: ../common/file_utils.c:87 ../common/file_utils.c:451 ../common/file_utils.c:455 access/transam/twophase.c:1317 access/transam/xlogarchive.c:111 access/transam/xlogarchive.c:237 backup/basebackup.c:338 backup/basebackup.c:528 backup/basebackup.c:599 commands/copyfrom.c:1535 commands/copyto.c:725 commands/extension.c:3390 commands/tablespace.c:826 commands/tablespace.c:917 guc-file.l:1066 postmaster/pgarch.c:597 replication/logical/snapbuild.c:1651 #: storage/file/copydir.c:68 storage/file/copydir.c:107 storage/file/fd.c:1951 storage/file/fd.c:2037 storage/file/fd.c:3243 storage/file/fd.c:3450 utils/adt/dbsize.c:92 utils/adt/dbsize.c:244 utils/adt/dbsize.c:324 utils/adt/genfile.c:413 utils/adt/genfile.c:588 utils/adt/misc.c:327 #, c-format msgid "could not stat file \"%s\": %m" @@ -207,7 +207,7 @@ msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m" msgid "could not read directory \"%s\": %m" msgstr "ディレクトリ\"%s\"を読み取れませんでした: %m" -#: ../common/file_utils.c:383 access/transam/xlogarchive.c:419 postmaster/syslogger.c:1608 replication/logical/snapbuild.c:1791 replication/slot.c:721 replication/slot.c:1570 replication/slot.c:1712 storage/file/fd.c:755 storage/file/fd.c:853 utils/time/snapmgr.c:1282 +#: ../common/file_utils.c:383 access/transam/xlogarchive.c:426 postmaster/syslogger.c:1608 replication/logical/snapbuild.c:1791 replication/slot.c:721 replication/slot.c:1570 replication/slot.c:1712 storage/file/fd.c:755 storage/file/fd.c:853 utils/time/snapmgr.c:1282 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m" @@ -333,7 +333,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:1368 libpq/auth.c:2400 +#: ../common/restricted_token.c:64 libpq/auth.c:1366 libpq/auth.c:2398 #, c-format msgid "could not load library \"%s\": error code %lu" msgstr "ライブラリ\"%s\"をロードできませんでした: エラーコード %lu" @@ -416,7 +416,7 @@ msgstr "" msgid "could not look up effective user ID %ld: %s" msgstr "実効ユーザーID %ld が見つかりませんでした: %s" -#: ../common/username.c:45 libpq/auth.c:1900 +#: ../common/username.c:45 libpq/auth.c:1898 msgid "user does not exist" msgstr "ユーザーが存在しません" @@ -548,43 +548,42 @@ 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:1137 access/gin/ginfast.c:1043 access/transam/xlogfuncs.c:165 access/transam/xlogfuncs.c:192 access/transam/xlogfuncs.c:231 access/transam/xlogfuncs.c:252 access/transam/xlogfuncs.c:273 access/transam/xlogfuncs.c:343 access/transam/xlogfuncs.c:401 +#: access/brin/brin.c:1036 access/brin/brin.c:1143 access/gin/ginfast.c:1042 access/transam/xlogfuncs.c:165 access/transam/xlogfuncs.c:192 access/transam/xlogfuncs.c:231 access/transam/xlogfuncs.c:252 access/transam/xlogfuncs.c:273 access/transam/xlogfuncs.c:343 access/transam/xlogfuncs.c:401 #, c-format msgid "recovery is in progress" msgstr "リカバリは現在進行中です" -#: access/brin/brin.c:1037 access/brin/brin.c:1138 +#: access/brin/brin.c:1037 access/brin/brin.c:1144 #, c-format msgid "BRIN control functions cannot be executed during recovery." msgstr "BRIN制御関数はリカバリ中は実行できません。" -#: access/brin/brin.c:1042 access/brin/brin.c:1143 +#: access/brin/brin.c:1042 access/brin/brin.c:1149 #, c-format msgid "block number out of range: %lld" msgstr "ブロック番号が範囲外です: %lld" -#: access/brin/brin.c:1086 access/brin/brin.c:1169 +#: access/brin/brin.c:1086 access/brin/brin.c:1175 #, c-format msgid "\"%s\" is not a BRIN index" msgstr "\"%s\"はBRINインデックスではありません" -#: access/brin/brin.c:1102 access/brin/brin.c:1185 +#: access/brin/brin.c:1102 access/brin/brin.c:1191 #, c-format msgid "could not open parent table of index \"%s\"" msgstr "インデックス\"%s\"の親テーブルをオープンできませんでした" -#: access/brin/brin_bloom.c:750 access/brin/brin_bloom.c:792 access/brin/brin_minmax_multi.c:3012 access/brin/brin_minmax_multi.c:3155 statistics/dependencies.c:663 statistics/dependencies.c:716 statistics/mcv.c:1484 statistics/mcv.c:1515 statistics/mvdistinct.c:344 statistics/mvdistinct.c:397 utils/adt/pseudotypes.c:43 utils/adt/pseudotypes.c:77 utils/adt/pseudotypes.c:252 +#: access/brin/brin.c:1111 access/brin/brin.c:1207 access/gin/ginfast.c:1087 parser/parse_utilcmd.c:2287 #, c-format -msgid "cannot accept a value of type %s" -msgstr "%s型の値は受け付けられません" +msgid "index \"%s\" is not valid" +msgstr "インデックス\"%s\"は有効ではありません" -#: access/brin/brin_minmax_multi.c:2171 access/brin/brin_minmax_multi.c:2178 access/brin/brin_minmax_multi.c:2185 utils/adt/timestamp.c:938 utils/adt/timestamp.c:1509 utils/adt/timestamp.c:2761 utils/adt/timestamp.c:2778 utils/adt/timestamp.c:2831 utils/adt/timestamp.c:2870 utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3120 utils/adt/timestamp.c:3125 utils/adt/timestamp.c:3175 utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3189 utils/adt/timestamp.c:3209 -#: utils/adt/timestamp.c:3216 utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3253 utils/adt/timestamp.c:3261 utils/adt/timestamp.c:3305 utils/adt/timestamp.c:3731 utils/adt/timestamp.c:3855 utils/adt/timestamp.c:4405 +#: access/brin/brin_bloom.c:749 access/brin/brin_bloom.c:791 access/brin/brin_minmax_multi.c:2986 access/brin/brin_minmax_multi.c:3129 statistics/dependencies.c:663 statistics/dependencies.c:716 statistics/mcv.c:1484 statistics/mcv.c:1515 statistics/mvdistinct.c:344 statistics/mvdistinct.c:397 utils/adt/pseudotypes.c:43 utils/adt/pseudotypes.c:77 utils/adt/pseudotypes.c:252 #, c-format -msgid "interval out of range" -msgstr "intervalが範囲外です" +msgid "cannot accept a value of type %s" +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:1442 access/spgist/spgdoinsert.c:2001 access/spgist/spgdoinsert.c:2278 +#: 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:1462 access/spgist/spgdoinsert.c:2001 access/spgist/spgdoinsert.c:2278 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "インデックス行サイズ%1$zuはインデックス\"%3$s\"での最大値%2$zuを超えています" @@ -669,7 +668,7 @@ msgstr "%2$s型の属性\"%1$s\"が%3$s型の対応する属性と合致しま msgid "Attribute \"%s\" of type %s does not exist in type %s." msgstr "%2$s型の属性\"%1$s\"が%3$s型の中に存在しません。" -#: access/common/heaptuple.c:1124 access/common/heaptuple.c:1459 +#: access/common/heaptuple.c:1133 access/common/heaptuple.c:1468 #, c-format msgid "number of columns (%d) exceeds limit (%d)" msgstr "列数(%d)が上限(%d)を超えています" @@ -679,7 +678,7 @@ msgstr "列数(%d)が上限(%d)を超えています" msgid "number of index columns (%d) exceeds limit (%d)" msgstr "インデックス列数(%d)が上限(%d)を超えています" -#: access/common/indextuple.c:209 access/spgist/spgutils.c:958 +#: access/common/indextuple.c:209 access/spgist/spgutils.c:965 #, c-format msgid "index row requires %zu bytes, maximum size is %zu" msgstr "インデックス行が%zuバイトを必要としますが最大値は%zuです" @@ -712,7 +711,7 @@ msgstr "RESETにはパラメータの値を含めてはいけません" msgid "unrecognized parameter namespace \"%s\"" msgstr "認識できないパラメータ namaspace \"%s\"" -#: access/common/reloptions.c:1303 utils/misc/guc.c:12987 +#: access/common/reloptions.c:1303 utils/misc/guc.c:13002 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "WITH OIDSと定義されたテーブルはサポートされません" @@ -787,17 +786,17 @@ msgstr "記録リストが長すぎます" msgid "Reduce maintenance_work_mem." msgstr "maintenance_work_mem を小さくしてください。" -#: access/gin/ginfast.c:1044 +#: access/gin/ginfast.c:1043 #, c-format msgid "GIN pending list cannot be cleaned up during recovery." msgstr "GIN保留リストはリカバリ中には処理できません。" -#: access/gin/ginfast.c:1051 +#: access/gin/ginfast.c:1050 #, c-format msgid "\"%s\" is not a GIN index" msgstr "\"%s\"はGINインデックスではありません" -#: access/gin/ginfast.c:1062 +#: access/gin/ginfast.c:1061 #, c-format msgid "cannot access temporary indexes of other sessions" msgstr "他のセッションの一時インデックスにはアクセスできません" @@ -817,7 +816,7 @@ msgstr "古いGINインデックスはインデックス全体のスキャンや msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "これを修復するには REINDEX INDEX \"%s\" をおこなってください。" -#: access/gin/ginutil.c:145 executor/execExpr.c:2168 utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6486 utils/adt/rowtypes.c:957 +#: access/gin/ginutil.c:145 executor/execExpr.c:2168 utils/adt/arrayfuncs.c:3866 utils/adt/arrayfuncs.c:6535 utils/adt/rowtypes.c:957 #, c-format msgid "could not identify a comparison function for type %s" msgstr "%s型の比較関数が見つかりません" @@ -852,7 +851,7 @@ msgstr "これは、PostgreSQL 9.1へアップグレードする前のクラッ msgid "Please REINDEX it." msgstr "REINDEXを行ってください。" -#: access/gist/gist.c:1176 +#: access/gist/gist.c:1195 #, c-format msgid "fixing incomplete split in index \"%s\", block %u" msgstr "インデックス\"%s\"内の不完全な分割を修正します、ブロック%u" @@ -892,7 +891,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:668 catalog/heap.c:674 commands/createas.c:206 commands/createas.c:515 commands/indexcmds.c:1979 commands/tablecmds.c:17495 commands/view.c:86 regex/regc_pg_locale.c:243 utils/adt/formatting.c:1690 utils/adt/formatting.c:1812 utils/adt/formatting.c:1935 utils/adt/like.c:190 utils/adt/like_support.c:1025 utils/adt/varchar.c:733 utils/adt/varchar.c:1004 utils/adt/varchar.c:1065 +#: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:668 catalog/heap.c:674 commands/createas.c:206 commands/createas.c:515 commands/indexcmds.c:1955 commands/tablecmds.c:17509 commands/view.c:86 regex/regc_pg_locale.c:243 utils/adt/formatting.c:1690 utils/adt/formatting.c:1812 utils/adt/formatting.c:1935 utils/adt/like.c:190 utils/adt/like_support.c:1025 utils/adt/varchar.c:733 utils/adt/varchar.c:1004 utils/adt/varchar.c:1065 #: utils/adt/varlena.c:1499 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." @@ -903,7 +902,7 @@ msgstr "照合順序を明示するには COLLATE 句を使います。" msgid "index row size %zu exceeds hash maximum %zu" msgstr "インデックス行のサイズ%zuがハッシュでの最大値%zuを超えています" -#: access/hash/hashinsert.c:85 access/spgist/spgdoinsert.c:2005 access/spgist/spgdoinsert.c:2282 access/spgist/spgutils.c:1019 +#: access/hash/hashinsert.c:85 access/spgist/spgdoinsert.c:2005 access/spgist/spgdoinsert.c:2282 access/spgist/spgutils.c:1026 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "バッファページよりも大きな値をインデックスすることはできません。" @@ -958,17 +957,17 @@ msgstr "並列処理中はタプルの削除はできません" msgid "attempted to delete invisible tuple" msgstr "不可視のタプルを削除しようとしました" -#: access/heap/heapam.c:3183 access/heap/heapam.c:6025 +#: access/heap/heapam.c:3188 access/heap/heapam.c:6032 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "並列処理中はタプルの更新はできません" -#: access/heap/heapam.c:3307 +#: access/heap/heapam.c:3312 #, c-format msgid "attempted to update invisible tuple" msgstr "不可視のタプルを更新しようとしました" -#: access/heap/heapam.c:4669 access/heap/heapam.c:4707 access/heap/heapam.c:4972 access/heap/heapam_handler.c:456 +#: access/heap/heapam.c:4676 access/heap/heapam.c:4714 access/heap/heapam.c:4979 access/heap/heapam_handler.c:456 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "リレーション\"%s\"の行ロックを取得できませんでした" @@ -988,7 +987,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:485 access/transam/xlog.c:2963 access/transam/xlog.c:3176 access/transam/xlog.c:3964 access/transam/xlog.c:8657 access/transam/xlogfuncs.c:594 backup/basebackup_server.c:149 backup/basebackup_server.c:242 commands/dbcommands.c:517 postmaster/postmaster.c:4607 postmaster/postmaster.c:5620 replication/logical/origin.c:587 replication/slot.c:1631 +#: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 access/transam/timeline.c:329 access/transam/timeline.c:485 access/transam/xlog.c:2965 access/transam/xlog.c:3178 access/transam/xlog.c:3966 access/transam/xlog.c:8659 access/transam/xlogfuncs.c:594 backup/basebackup_server.c:149 backup/basebackup_server.c:242 commands/dbcommands.c:517 postmaster/postmaster.c:4607 postmaster/postmaster.c:5620 replication/logical/origin.c:587 replication/slot.c:1631 #: storage/file/copydir.c:167 storage/smgr/md.c:222 utils/time/snapmgr.c:1261 #, c-format msgid "could not create file \"%s\": %m" @@ -999,13 +998,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:502 access/transam/xlog.c:3035 access/transam/xlog.c:3232 access/transam/xlog.c:3976 commands/dbcommands.c:529 postmaster/postmaster.c:4617 postmaster/postmaster.c:4627 replication/logical/origin.c:599 replication/logical/origin.c:641 replication/logical/origin.c:660 replication/logical/snapbuild.c:1748 replication/slot.c:1666 -#: storage/file/buffile.c:537 storage/file/copydir.c:207 utils/init/miscinit.c:1441 utils/init/miscinit.c:1452 utils/init/miscinit.c:1460 utils/misc/guc.c:8721 utils/misc/guc.c:8752 utils/misc/guc.c:10742 utils/misc/guc.c:10756 utils/time/snapmgr.c:1266 utils/time/snapmgr.c:1273 +#: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 access/transam/timeline.c:424 access/transam/timeline.c:502 access/transam/xlog.c:3037 access/transam/xlog.c:3234 access/transam/xlog.c:3978 commands/dbcommands.c:529 postmaster/postmaster.c:4617 postmaster/postmaster.c:4627 replication/logical/origin.c:599 replication/logical/origin.c:641 replication/logical/origin.c:660 replication/logical/snapbuild.c:1748 replication/slot.c:1666 +#: storage/file/buffile.c:537 storage/file/copydir.c:207 utils/init/miscinit.c:1449 utils/init/miscinit.c:1460 utils/init/miscinit.c:1468 utils/misc/guc.c:8728 utils/misc/guc.c:8759 utils/misc/guc.c:10757 utils/misc/guc.c:10771 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:1706 access/transam/xlogarchive.c:119 access/transam/xlogarchive.c:429 postmaster/postmaster.c:1157 postmaster/syslogger.c:1537 replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4431 replication/logical/snapbuild.c:1693 replication/logical/snapbuild.c:2109 replication/slot.c:1763 storage/file/fd.c:795 storage/file/fd.c:3263 storage/file/fd.c:3325 storage/file/reinit.c:262 +#: access/heap/rewriteheap.c:1249 access/transam/twophase.c:1706 access/transam/xlogarchive.c:119 access/transam/xlogarchive.c:436 postmaster/postmaster.c:1157 postmaster/syslogger.c:1537 replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4431 replication/logical/snapbuild.c:1693 replication/logical/snapbuild.c:2109 replication/slot.c:1763 storage/file/fd.c:795 storage/file/fd.c:3263 storage/file/fd.c:3325 storage/file/reinit.c:262 #: storage/ipc/dsm.c:317 storage/smgr/md.c:373 storage/smgr/md.c:432 storage/sync/sync.c:250 utils/time/snapmgr.c:1606 #, c-format msgid "could not remove file \"%s\": %m" @@ -1238,12 +1237,12 @@ msgstr "インデックスアクセスメソッド\"%s\"はハンドラを持っ msgid "transaction aborted during system catalog scan" msgstr "システムカタログのスキャン中にトランザクションがアボートしました" -#: access/index/indexam.c:142 catalog/objectaddress.c:1376 commands/indexcmds.c:2807 commands/tablecmds.c:271 commands/tablecmds.c:295 commands/tablecmds.c:17183 commands/tablecmds.c:18966 +#: access/index/indexam.c:203 catalog/objectaddress.c:1376 commands/indexcmds.c:2783 commands/tablecmds.c:271 commands/tablecmds.c:295 commands/tablecmds.c:17195 commands/tablecmds.c:18980 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\"はインデックスではありません" -#: access/index/indexam.c:973 +#: access/index/indexam.c:1010 #, c-format msgid "operator class %s has no options" msgstr "演算子クラス%sにはオプションはありません" @@ -1283,17 +1282,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:2669 +#: access/nbtree/nbtutils.c:2684 #, 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:2675 +#: access/nbtree/nbtutils.c:2690 #, c-format msgid "Index row references tuple (%u,%u) in relation \"%s\"." msgstr "インデックス行はリレーション\"%3$s\"のタプル(%1$u,%2$u)を参照しています。" -#: access/nbtree/nbtutils.c:2679 +#: access/nbtree/nbtutils.c:2694 #, c-format msgid "" "Values larger than 1/3 of a buffer page cannot be indexed.\n" @@ -1307,12 +1306,12 @@ msgstr "" msgid "operator family \"%s\" of access method %s is missing support function for types %s and %s" msgstr "アクセスメソッド\"%2$s\"の演算子族\"%1$s\"は型%3$sと%4$sに対応するサポート関数を含んでいません" -#: access/spgist/spgutils.c:244 +#: access/spgist/spgutils.c:242 #, c-format msgid "compress method must be defined when leaf type is different from input type" msgstr "リーフ型が入力型と異なる場合は圧縮メソッドの定義が必要です" -#: access/spgist/spgutils.c:1016 +#: access/spgist/spgutils.c:1023 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "SP-GiST内部タプルのサイズ%zuが最大値%zuを超えています" @@ -1332,7 +1331,7 @@ msgstr "アクセスメソッド\"%2$s\"の演算子族\"%1$s\"は%4$s型に対 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:1842 commands/tablecmds.c:13880 commands/tablecmds.c:17192 +#: access/table/table.c:54 access/table/table.c:88 access/table/table.c:117 access/table/table.c:150 catalog/aclchk.c:1842 commands/tablecmds.c:13884 commands/tablecmds.c:17204 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\"は複合型です" @@ -1347,7 +1346,7 @@ msgstr "tid (%u, %u) はリレーション\"%s\"に対して妥当ではあり msgid "%s cannot be empty." msgstr "%sは空にはできません。" -#: access/table/tableamapi.c:122 utils/misc/guc.c:12911 +#: access/table/tableamapi.c:122 utils/misc/guc.c:12926 #, c-format msgid "%s is too long (maximum %d characters)." msgstr "%s が長過ぎます(最大%d文字)。" @@ -1900,529 +1899,529 @@ msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "エクスポートされたスナップショットを持つトランザクションをPREPAREすることはできません" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3478 +#: access/transam/xact.c:3479 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%sはトランザクションブロックの内側では実行できません" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3488 +#: access/transam/xact.c:3489 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%sはサブトランザクションブロックの内側では実行できません" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3498 +#: access/transam/xact.c:3499 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s はパイプライン内での実行はできません" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3508 +#: access/transam/xact.c:3509 #, c-format msgid "%s cannot be executed from a function" msgstr "%s は関数内での実行はできません" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3579 access/transam/xact.c:3894 access/transam/xact.c:3973 access/transam/xact.c:4096 access/transam/xact.c:4247 access/transam/xact.c:4316 access/transam/xact.c:4427 +#: access/transam/xact.c:3580 access/transam/xact.c:3895 access/transam/xact.c:3974 access/transam/xact.c:4097 access/transam/xact.c:4248 access/transam/xact.c:4317 access/transam/xact.c:4428 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%sはトランザクションブロック内でのみ使用できます" -#: access/transam/xact.c:3780 +#: access/transam/xact.c:3781 #, c-format msgid "there is already a transaction in progress" msgstr "すでにトランザクションが実行中です" -#: access/transam/xact.c:3899 access/transam/xact.c:3978 access/transam/xact.c:4101 +#: access/transam/xact.c:3900 access/transam/xact.c:3979 access/transam/xact.c:4102 #, c-format msgid "there is no transaction in progress" msgstr "実行中のトランザクションがありません" -#: access/transam/xact.c:3989 +#: access/transam/xact.c:3990 #, c-format msgid "cannot commit during a parallel operation" msgstr "並列処理中にはコミットはできません" -#: access/transam/xact.c:4112 +#: access/transam/xact.c:4113 #, c-format msgid "cannot abort during a parallel operation" msgstr "パラレル処理中にロールバックはできません" -#: access/transam/xact.c:4211 +#: access/transam/xact.c:4212 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "パラレル処理中にセーブポイントは定義できません" -#: access/transam/xact.c:4298 +#: access/transam/xact.c:4299 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "並列処理中はセーブポイントの解放はできません" -#: access/transam/xact.c:4308 access/transam/xact.c:4359 access/transam/xact.c:4419 access/transam/xact.c:4468 +#: access/transam/xact.c:4309 access/transam/xact.c:4360 access/transam/xact.c:4420 access/transam/xact.c:4469 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "セーブポイント\"%s\"は存在しません" -#: access/transam/xact.c:4365 access/transam/xact.c:4474 +#: access/transam/xact.c:4366 access/transam/xact.c:4475 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "セーブポイント\"%s\"は現在のセーブポイントレベルには存在しません" -#: access/transam/xact.c:4407 +#: access/transam/xact.c:4408 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "パラレル処理中にセーブポイントのロールバックはできません" -#: access/transam/xact.c:4535 +#: access/transam/xact.c:4536 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "並列処理中はサブトランザクションを開始できません" -#: access/transam/xact.c:4603 +#: access/transam/xact.c:4604 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "並列処理中はサブトランザクションをコミットできません" -#: access/transam/xact.c:5250 +#: access/transam/xact.c:5251 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "1トランザクション内には 2^32-1 個より多くのサブトランザクションを作成できません" -#: access/transam/xlog.c:1463 +#: access/transam/xlog.c:1465 #, 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:2224 +#: access/transam/xlog.c:2226 #, 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:3471 access/transam/xlogutils.c:847 replication/walsender.c:2716 +#: access/transam/xlog.c:3473 access/transam/xlogutils.c:847 replication/walsender.c:2716 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "要求された WAL セグメント %s はすでに削除されています" -#: access/transam/xlog.c:3756 +#: access/transam/xlog.c:3758 #, c-format msgid "could not rename file \"%s\": %m" msgstr "ファイル\"%s\"の名前を変更できませんでした: %m" -#: access/transam/xlog.c:3798 access/transam/xlog.c:3808 +#: access/transam/xlog.c:3800 access/transam/xlog.c:3810 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "WALディレクトリ\"%s\"は存在しません" -#: access/transam/xlog.c:3814 +#: access/transam/xlog.c:3816 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "なかったWALディレクトリ\"%s\"を作成しています" -#: access/transam/xlog.c:3817 commands/dbcommands.c:3115 +#: access/transam/xlog.c:3819 commands/dbcommands.c:3115 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "なかったディレクトリ\"%s\"の作成に失敗しました: %m" -#: access/transam/xlog.c:3884 +#: access/transam/xlog.c:3886 #, c-format msgid "could not generate secret authorization token" msgstr "秘密の認証トークンを生成できませんでした" -#: access/transam/xlog.c:4043 access/transam/xlog.c:4052 access/transam/xlog.c:4076 access/transam/xlog.c:4083 access/transam/xlog.c:4090 access/transam/xlog.c:4095 access/transam/xlog.c:4102 access/transam/xlog.c:4109 access/transam/xlog.c:4116 access/transam/xlog.c:4123 access/transam/xlog.c:4130 access/transam/xlog.c:4137 access/transam/xlog.c:4146 access/transam/xlog.c:4153 utils/init/miscinit.c:1598 +#: access/transam/xlog.c:4045 access/transam/xlog.c:4054 access/transam/xlog.c:4078 access/transam/xlog.c:4085 access/transam/xlog.c:4092 access/transam/xlog.c:4097 access/transam/xlog.c:4104 access/transam/xlog.c:4111 access/transam/xlog.c:4118 access/transam/xlog.c:4125 access/transam/xlog.c:4132 access/transam/xlog.c:4139 access/transam/xlog.c:4148 access/transam/xlog.c:4155 utils/init/miscinit.c:1606 #, c-format msgid "database files are incompatible with server" msgstr "データベースファイルがサーバーと互換性がありません" -#: access/transam/xlog.c:4044 +#: access/transam/xlog.c:4046 #, 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:4048 +#: access/transam/xlog.c:4050 #, 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:4053 +#: access/transam/xlog.c:4055 #, 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:4056 access/transam/xlog.c:4080 access/transam/xlog.c:4087 access/transam/xlog.c:4092 +#: access/transam/xlog.c:4058 access/transam/xlog.c:4082 access/transam/xlog.c:4089 access/transam/xlog.c:4094 #, c-format msgid "It looks like you need to initdb." msgstr "initdbが必要のようです。" -#: access/transam/xlog.c:4067 +#: access/transam/xlog.c:4069 #, c-format msgid "incorrect checksum in control file" msgstr "制御ファイル内のチェックサムが不正です" -#: access/transam/xlog.c:4077 +#: access/transam/xlog.c:4079 #, 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:4084 +#: access/transam/xlog.c:4086 #, 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:4091 +#: access/transam/xlog.c:4093 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "データベースクラスタはサーバー実行ファイルと異なる浮動小数点書式を使用しているようです。" -#: access/transam/xlog.c:4096 +#: access/transam/xlog.c:4098 #, 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:4099 access/transam/xlog.c:4106 access/transam/xlog.c:4113 access/transam/xlog.c:4120 access/transam/xlog.c:4127 access/transam/xlog.c:4134 access/transam/xlog.c:4141 access/transam/xlog.c:4149 access/transam/xlog.c:4156 +#: access/transam/xlog.c:4101 access/transam/xlog.c:4108 access/transam/xlog.c:4115 access/transam/xlog.c:4122 access/transam/xlog.c:4129 access/transam/xlog.c:4136 access/transam/xlog.c:4143 access/transam/xlog.c:4151 access/transam/xlog.c:4158 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "再コンパイルもしくは initdb が必要そうです。" -#: access/transam/xlog.c:4103 +#: access/transam/xlog.c:4105 #, 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:4110 +#: access/transam/xlog.c:4112 #, 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:4117 +#: access/transam/xlog.c:4119 #, 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:4124 +#: access/transam/xlog.c:4126 #, 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:4131 +#: access/transam/xlog.c:4133 #, 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:4138 +#: access/transam/xlog.c:4140 #, 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:4147 +#: access/transam/xlog.c:4149 #, 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:4154 +#: access/transam/xlog.c:4156 #, 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:4163 +#: access/transam/xlog.c:4165 #, 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バイトとなっています" -#: access/transam/xlog.c:4175 +#: access/transam/xlog.c:4177 #, 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:4179 +#: access/transam/xlog.c:4181 #, 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:4620 +#: access/transam/xlog.c:4622 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "ブートストラップの先行書き込みログファイルに書き込めませんでした: %m" -#: access/transam/xlog.c:4628 +#: access/transam/xlog.c:4630 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "ブートストラップの先行書き込みログファイルをfsyncできませんでした: %m" -#: access/transam/xlog.c:4634 +#: access/transam/xlog.c:4636 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "ブートストラップの先行書き込みログファイルをクローズできませんでした: %m" -#: access/transam/xlog.c:4852 +#: access/transam/xlog.c:4854 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "wal_level=minimal でWALが生成されました、リカバリは続行不可です" -#: access/transam/xlog.c:4853 +#: access/transam/xlog.c:4855 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "これはこのサーバーで一時的にwal_level=minimalにした場合に起こります。" -#: access/transam/xlog.c:4854 +#: access/transam/xlog.c:4856 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "wal_levelをminimalより上位に設定したあとに取得したバックアップを使用してください。" -#: access/transam/xlog.c:4918 +#: access/transam/xlog.c:4920 #, c-format msgid "control file contains invalid checkpoint location" msgstr "制御ファイル内のチェックポイント位置が不正です" -#: access/transam/xlog.c:4929 +#: access/transam/xlog.c:4931 #, c-format msgid "database system was shut down at %s" msgstr "データベースシステムは %s にシャットダウンしました" -#: access/transam/xlog.c:4935 +#: access/transam/xlog.c:4937 #, c-format msgid "database system was shut down in recovery at %s" msgstr "データベースシステムはリカバリ中 %s にシャットダウンしました" -#: access/transam/xlog.c:4941 +#: access/transam/xlog.c:4943 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "データベースシステムはシャットダウン中に中断されました; %s まで動作していたことは確認できます" -#: access/transam/xlog.c:4947 +#: access/transam/xlog.c:4949 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "データベースシステムはリカバリ中 %s に中断されました" -#: access/transam/xlog.c:4949 +#: access/transam/xlog.c:4951 #, 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:4955 +#: access/transam/xlog.c:4957 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "データベースシステムはリカバリ中ログ時刻 %s に中断されました" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4959 #, 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:4963 +#: access/transam/xlog.c:4965 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "データベースシステムは中断されました: %s まで動作していたことは確認できます" -#: access/transam/xlog.c:4969 +#: access/transam/xlog.c:4971 #, c-format msgid "control file contains invalid database cluster state" msgstr "制御ファイル内のデータベース・クラスタ状態が不正です" -#: access/transam/xlog.c:5353 +#: access/transam/xlog.c:5355 #, c-format msgid "WAL ends before end of online backup" msgstr "オンラインバックアップの終了より前にWALが終了しました" -#: access/transam/xlog.c:5354 +#: access/transam/xlog.c:5356 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "オンラインバックアップ中に生成されたすべてのWALがリカバリで利用可能である必要があります。" -#: access/transam/xlog.c:5357 +#: access/transam/xlog.c:5359 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WALが一貫性があるリカバリポイントより前で終了しました" -#: access/transam/xlog.c:5405 +#: access/transam/xlog.c:5407 #, c-format msgid "selected new timeline ID: %u" msgstr "新しいタイムラインIDを選択: %u" -#: access/transam/xlog.c:5438 +#: access/transam/xlog.c:5440 #, c-format msgid "archive recovery complete" msgstr "アーカイブリカバリが完了しました" -#: access/transam/xlog.c:6044 +#: access/transam/xlog.c:6046 #, c-format msgid "shutting down" msgstr "シャットダウンしています" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:6083 +#: access/transam/xlog.c:6085 #, 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:6095 +#: access/transam/xlog.c:6097 #, 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:6155 +#: access/transam/xlog.c:6157 #, 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:6175 +#: access/transam/xlog.c:6177 #, 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:6610 +#: access/transam/xlog.c:6612 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "データベースのシャットダウンに並行して、先行書き込みログが発生しました" -#: access/transam/xlog.c:7167 +#: access/transam/xlog.c:7169 #, c-format msgid "recovery restart point at %X/%X" msgstr "リカバリ再開ポイントは%X/%Xです" -#: access/transam/xlog.c:7169 +#: access/transam/xlog.c:7171 #, c-format msgid "Last completed transaction was at log time %s." msgstr "最後に完了したトランザクションはログ時刻 %s のものです" -#: access/transam/xlog.c:7416 +#: access/transam/xlog.c:7418 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "復帰ポイント\"%s\"が%X/%Xに作成されました" -#: access/transam/xlog.c:7623 +#: access/transam/xlog.c:7625 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "オンラインバックアップはキャンセルされ、リカバリを継続できません" -#: access/transam/xlog.c:7680 +#: access/transam/xlog.c:7682 #, c-format msgid "unexpected timeline ID %u (should be %u) in shutdown checkpoint record" msgstr "シャットダウンチェックポイントレコードにおいて想定外のタイムラインID %u(%uのはず)がありました" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7740 #, c-format msgid "unexpected timeline ID %u (should be %u) in online checkpoint record" msgstr "オンラインチェックポイントレコードにおいて想定外のタイムラインID %u(%uのはず)がありました" -#: access/transam/xlog.c:7767 +#: access/transam/xlog.c:7769 #, c-format msgid "unexpected timeline ID %u (should be %u) in end-of-recovery record" msgstr "リカバリ終了チェックポイントレコードにおいて想定外のタイムラインID %u(%uのはず)がありました" -#: access/transam/xlog.c:8025 +#: access/transam/xlog.c:8027 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "ライトスルーファイル\"%s\"をfsyncできませんでした: %m" -#: access/transam/xlog.c:8031 +#: access/transam/xlog.c:8033 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "ファイル\"%s\"をfdatasyncできませんでした: %m" -#: access/transam/xlog.c:8126 access/transam/xlog.c:8493 +#: access/transam/xlog.c:8128 access/transam/xlog.c:8495 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "オンラインバックアップを行うにはWALレベルが不十分です" -#: access/transam/xlog.c:8127 access/transam/xlog.c:8494 access/transam/xlogfuncs.c:199 +#: access/transam/xlog.c:8129 access/transam/xlog.c:8496 access/transam/xlogfuncs.c:199 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "サーバーの開始時にwal_levelを\"replica\"または \"logical\"にセットする必要があります。" -#: access/transam/xlog.c:8132 +#: access/transam/xlog.c:8134 #, c-format msgid "backup label too long (max %d bytes)" msgstr "バックアップラベルが長すぎます (最大%dバイト)" -#: access/transam/xlog.c:8248 +#: access/transam/xlog.c:8250 #, 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:8250 access/transam/xlog.c:8606 +#: access/transam/xlog.c:8252 access/transam/xlog.c:8608 #, 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:8330 backup/basebackup.c:1345 utils/adt/misc.c:347 +#: access/transam/xlog.c:8332 backup/basebackup.c:1345 utils/adt/misc.c:347 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "シンボリックリンク\"%s\"の参照先が長すぎます" -#: access/transam/xlog.c:8380 backup/basebackup.c:1360 commands/tablespace.c:399 commands/tablespace.c:581 utils/adt/misc.c:355 +#: access/transam/xlog.c:8382 backup/basebackup.c:1360 commands/tablespace.c:399 commands/tablespace.c:581 utils/adt/misc.c:355 #, c-format msgid "tablespaces are not supported on this platform" msgstr "このプラットフォームではテーブル空間はサポートしていません" -#: access/transam/xlog.c:8539 access/transam/xlog.c:8552 access/transam/xlogrecovery.c:1211 access/transam/xlogrecovery.c:1218 access/transam/xlogrecovery.c:1277 access/transam/xlogrecovery.c:1357 access/transam/xlogrecovery.c:1381 +#: access/transam/xlog.c:8541 access/transam/xlog.c:8554 access/transam/xlogrecovery.c:1237 access/transam/xlogrecovery.c:1244 access/transam/xlogrecovery.c:1303 access/transam/xlogrecovery.c:1383 access/transam/xlogrecovery.c:1407 #, c-format msgid "invalid data in file \"%s\"" msgstr "ファイル\"%s\"内の不正なデータ" -#: access/transam/xlog.c:8556 backup/basebackup.c:1200 +#: access/transam/xlog.c:8558 backup/basebackup.c:1200 #, c-format msgid "the standby was promoted during online backup" msgstr "オンラインバックアップ中にスタンバイが昇格しました" -#: access/transam/xlog.c:8557 backup/basebackup.c:1201 +#: access/transam/xlog.c:8559 backup/basebackup.c:1201 #, 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:8604 +#: access/transam/xlog.c:8606 #, 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:8729 +#: access/transam/xlog.c:8731 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "ベースバックアップ完了、必要な WAL セグメントがアーカイブされるのを待っています" -#: access/transam/xlog.c:8743 +#: access/transam/xlog.c:8745 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "まだ必要なすべての WAL セグメントがアーカイブされるのを待っています(%d 秒経過)" -#: access/transam/xlog.c:8745 +#: access/transam/xlog.c:8747 #, 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:8752 +#: access/transam/xlog.c:8754 #, c-format msgid "all required WAL segments have been archived" msgstr "必要なすべての WAL セグメントがアーカイブされました" -#: access/transam/xlog.c:8756 +#: access/transam/xlog.c:8758 #, 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:8805 +#: access/transam/xlog.c:8807 #, c-format msgid "aborting backup due to backend exiting before pg_backup_stop was called" msgstr "バックエンドがpg_backup_stopの呼び出し前に終了したため、バックアップは異常終了しました" -#: access/transam/xlogarchive.c:208 +#: access/transam/xlogarchive.c:215 #, c-format msgid "archive file \"%s\" has wrong size: %lld instead of %lld" msgstr "アーカイブファイル\"%s\"のサイズが不正です: %lld、正しくは%lld" -#: access/transam/xlogarchive.c:217 +#: access/transam/xlogarchive.c:224 #, c-format msgid "restored log file \"%s\" from archive" msgstr "ログファイル\"%s\"をアーカイブからリストアしました" -#: access/transam/xlogarchive.c:231 +#: access/transam/xlogarchive.c:238 #, c-format msgid "restore_command returned a zero exit status, but stat() failed." msgstr "restore_commandが終了ステータス0を返却しましたが、stat()が失敗しました。" -#: access/transam/xlogarchive.c:263 +#: access/transam/xlogarchive.c:270 #, c-format msgid "could not restore file \"%s\" from archive: %s" msgstr "ファイル\"%s\"をアーカイブからリストアできませんでした: %s" @@ -2430,17 +2429,17 @@ msgstr "ファイル\"%s\"をアーカイブからリストアできませんで #. translator: First %s represents a postgresql.conf parameter name like #. "recovery_end_command", the 2nd is the value of that parameter, the #. third an already translated error message. -#: access/transam/xlogarchive.c:376 +#: access/transam/xlogarchive.c:383 #, c-format msgid "%s \"%s\": %s" msgstr "%s \"%s\": %s" -#: access/transam/xlogarchive.c:486 access/transam/xlogarchive.c:566 +#: access/transam/xlogarchive.c:493 access/transam/xlogarchive.c:573 #, c-format msgid "could not create archive status file \"%s\": %m" msgstr "アーカイブステータスファイル\"%s\"を作成できませんでした: %m" -#: access/transam/xlogarchive.c:494 access/transam/xlogarchive.c:574 +#: access/transam/xlogarchive.c:501 access/transam/xlogarchive.c:581 #, c-format msgid "could not write archive status file \"%s\": %m" msgstr "アーカイブステータスファイル\"%s\"に書き込めませんでした: %m" @@ -2505,7 +2504,7 @@ msgstr "%sは昇格を開始した後には実行できません。" msgid "\"wait_seconds\" must not be negative or zero" msgstr "\"wait_seconds\"は負の値もしくはゼロにはできません" -#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:252 +#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:257 #, c-format msgid "failed to send signal to postmaster: %m" msgstr "postmasterにシグナルを送信できませんでした: %m" @@ -2521,167 +2520,157 @@ msgstr[0] "サーバーは%d秒以内に昇格しませんでした" msgid "recovery_prefetch is not supported on platforms that lack posix_fadvise()." msgstr "recovery_prefetchはposix_fadvise()を持たないプラットフォームではサポートされません。" -#: access/transam/xlogreader.c:625 +#: access/transam/xlogreader.c:620 #, c-format msgid "invalid record offset at %X/%X" msgstr "%X/%Xのレコードオフセットが不正です" -#: access/transam/xlogreader.c:633 +#: access/transam/xlogreader.c:628 #, c-format msgid "contrecord is requested by %X/%X" msgstr "%X/%Xでは継続レコードが必要です" -#: access/transam/xlogreader.c:674 access/transam/xlogreader.c:1117 +#: access/transam/xlogreader.c:669 access/transam/xlogreader.c:1134 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "%X/%Xのレコード長が不正です:長さは%uである必要がありますが、実際は%uでした" -#: access/transam/xlogreader.c:703 -#, c-format -msgid "out of memory while trying to decode a record of length %u" -msgstr "長さ%uのレコードのデコード中のメモリ不足" - -#: access/transam/xlogreader.c:725 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "%2$X/%3$Xのレコード長%1$uが大きすぎます" - -#: access/transam/xlogreader.c:774 +#: access/transam/xlogreader.c:758 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "%X/%Xでcontrecordフラグがありません" -#: access/transam/xlogreader.c:787 +#: access/transam/xlogreader.c:771 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "%3$X/%4$Xの継続レコードの長さ%1$u(正しくは%2$lld)は不正です" -#: access/transam/xlogreader.c:1125 +#: access/transam/xlogreader.c:1142 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "%2$X/%3$XのリソースマネージャID %1$uは不正です" -#: access/transam/xlogreader.c:1138 access/transam/xlogreader.c:1154 +#: access/transam/xlogreader.c:1155 access/transam/xlogreader.c:1171 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "%3$X/%4$Xのレコードの後方リンク%1$X/%2$Xが不正です" -#: access/transam/xlogreader.c:1190 +#: access/transam/xlogreader.c:1209 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "%X/%Xのレコード内のリソースマネージャデータのチェックサムが不正です" -#: access/transam/xlogreader.c:1227 +#: access/transam/xlogreader.c:1246 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "ログセグメント%2$s、オフセット%3$uのマジックナンバー%1$04Xは不正です" -#: access/transam/xlogreader.c:1241 access/transam/xlogreader.c:1282 +#: access/transam/xlogreader.c:1260 access/transam/xlogreader.c:1301 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ログセグメント %2$s、オフセット%3$uの情報ビット%1$04Xは不正です" -#: access/transam/xlogreader.c:1256 +#: access/transam/xlogreader.c:1275 #, 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:1264 +#: access/transam/xlogreader.c:1283 #, c-format msgid "WAL file is from different database system: incorrect segment size in page header" msgstr "WAL ファイルは異なるデータベースシステム由来のものです: ページヘッダーのセグメントサイズが正しくありません" -#: access/transam/xlogreader.c:1270 +#: access/transam/xlogreader.c:1289 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "WAL ファイルは異なるデータベースシステム由来のものです: ページヘッダーのXLOG_BLCKSZが正しくありません" -#: access/transam/xlogreader.c:1301 +#: access/transam/xlogreader.c:1320 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "ログセグメント%3$s、オフセット%4$uに想定外のページアドレス%1$X/%2$X" -#: access/transam/xlogreader.c:1326 +#: access/transam/xlogreader.c:1345 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "ログセグメント%3$s、オフセット%4$uのタイムラインID %1$u(%2$uの後)が順序通りではありません" -#: access/transam/xlogreader.c:1731 +#: access/transam/xlogreader.c:1750 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %uが%X/%Xで不正です" -#: access/transam/xlogreader.c:1755 +#: access/transam/xlogreader.c:1774 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATAが設定されていますが、%X/%Xにデータがありません" -#: access/transam/xlogreader.c:1762 +#: access/transam/xlogreader.c:1781 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATAが設定されていませんが、%2$X/%3$Xのデータ長は%1$uです" -#: access/transam/xlogreader.c:1798 +#: access/transam/xlogreader.c:1817 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLEが設定されていますが、%4$X/%5$Xでホールオフセット%1$u、長さ%2$u、ブロックイメージ長%3$uです" -#: access/transam/xlogreader.c:1814 +#: access/transam/xlogreader.c:1833 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLEが設定されていませんが、%3$X/%4$Xにおけるホールオフセット%1$uの長さが%2$uです" -#: access/transam/xlogreader.c:1828 +#: access/transam/xlogreader.c:1847 #, c-format msgid "BKPIMAGE_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_COMPRESSEDが設定されていますが、%2$X/%3$Xにおいてブロックイメージ長が%1$uです" -#: access/transam/xlogreader.c:1843 +#: access/transam/xlogreader.c:1862 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_COMPRESSED set, but block image length is %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLEもBKPIMAGE_COMPRESSEDも設定されていませんが、%2$X/%3$Xにおいてブロックイメージ長が%1$uです" -#: access/transam/xlogreader.c:1859 +#: access/transam/xlogreader.c:1878 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_RELが設定されていますが、%X/%Xにおいて以前のリレーションがありません" -#: access/transam/xlogreader.c:1871 +#: access/transam/xlogreader.c:1890 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "%2$X/%3$Xにおけるblock_id %1$uが不正です" -#: access/transam/xlogreader.c:1938 +#: access/transam/xlogreader.c:1957 #, c-format msgid "record with invalid length at %X/%X" msgstr "%X/%Xのレコードのサイズが不正です" -#: access/transam/xlogreader.c:1963 +#: access/transam/xlogreader.c:1982 #, c-format msgid "could not locate backup block with ID %d in WAL record" msgstr "WALレコード中ID %dのバックアップブロックを特定できませんでした" -#: access/transam/xlogreader.c:2047 +#: access/transam/xlogreader.c:2066 #, c-format msgid "could not restore image at %X/%X with invalid block %d specified" msgstr "%X/%Xで不正なブロック%dが指定されているためイメージが復元できませんでした" -#: access/transam/xlogreader.c:2054 +#: access/transam/xlogreader.c:2073 #, c-format msgid "could not restore image at %X/%X with invalid state, block %d" msgstr "%X/%Xでブロック%dのイメージが不正な状態であるため復元できませんでした" -#: access/transam/xlogreader.c:2081 access/transam/xlogreader.c:2098 +#: access/transam/xlogreader.c:2100 access/transam/xlogreader.c:2117 #, c-format msgid "could not restore image at %X/%X compressed with %s not supported by build, block %d" msgstr "%1$X/%2$Xで、ブロック%4$dがこのビルドでサポートされない圧縮方式%3$sで圧縮されているため復元できませんでした" -#: access/transam/xlogreader.c:2107 +#: access/transam/xlogreader.c:2126 #, c-format msgid "could not restore image at %X/%X compressed with unknown method, block %d" msgstr "%X/%Xでブロック%dのイメージが不明な方式で圧縮されているため復元できませんでした" -#: access/transam/xlogreader.c:2115 +#: access/transam/xlogreader.c:2134 #, c-format msgid "could not decompress image at %X/%X, block %d" msgstr "%X/%Xのブロック%dが伸張できませんでした" @@ -2721,12 +2710,17 @@ msgstr "最も古い一貫性確保点までのポイントインタイムリカ msgid "starting archive recovery" msgstr "アーカイブリカバリを開始しています" -#: access/transam/xlogrecovery.c:651 +#: access/transam/xlogrecovery.c:635 +#, c-format +msgid "starting backup recovery with redo LSN %X/%X, checkpoint LSN %X/%X, on timeline ID %u" +msgstr "タイムラインID %5$u上でREDO LSN %1$X/%2$X、チェックポイントLSN %3$X/%4$Xからのバックアップ・リカバリを開始しました" + +#: access/transam/xlogrecovery.c:667 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "チェックポイントレコードが参照している redo 位置を見つけられませんでした" -#: access/transam/xlogrecovery.c:652 access/transam/xlogrecovery.c:662 +#: access/transam/xlogrecovery.c:668 access/transam/xlogrecovery.c:678 #, c-format msgid "" "If you are restoring from a backup, touch \"%s/recovery.signal\" and add required recovery options.\n" @@ -2737,398 +2731,408 @@ msgstr "" "バックアップからの復旧でなければ、\"%s/backup_label\"の削除を試みてください。.\n" "バックアップから復旧で\"%s/backup_label\"を削除すると、クラスタは壊れた状態で復旧されることに注意してください。" -#: access/transam/xlogrecovery.c:661 +#: access/transam/xlogrecovery.c:677 #, c-format msgid "could not locate required checkpoint record" msgstr "必要なチェックポイントが見つかりませんでした" -#: access/transam/xlogrecovery.c:690 commands/tablespace.c:685 +#: access/transam/xlogrecovery.c:706 commands/tablespace.c:685 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "シンボリックリンク\"%s\"を作成できませんでした: %m" -#: access/transam/xlogrecovery.c:722 access/transam/xlogrecovery.c:728 +#: access/transam/xlogrecovery.c:738 access/transam/xlogrecovery.c:744 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ファイル\"%2$s\"が存在しないためファイル\"%1$s\"を無視します" -#: access/transam/xlogrecovery.c:724 +#: access/transam/xlogrecovery.c:740 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "ファイル\"%s\"は\"%s\"にリネームされました。" -#: access/transam/xlogrecovery.c:730 +#: access/transam/xlogrecovery.c:746 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m。" -#: access/transam/xlogrecovery.c:784 +#: access/transam/xlogrecovery.c:785 +#, c-format +msgid "restarting backup recovery with redo LSN %X/%X" +msgstr "REDO LSN %X/%Xのバックアプリカバリを再開しました" + +#: access/transam/xlogrecovery.c:810 #, c-format msgid "could not locate a valid checkpoint record" msgstr "有効なチェックポイントが見つかりませんでした" -#: access/transam/xlogrecovery.c:808 +#: access/transam/xlogrecovery.c:834 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "要求されたタイムライン%uはこのサーバーの履歴からの子孫ではありません" -#: access/transam/xlogrecovery.c:810 +#: access/transam/xlogrecovery.c:836 #, 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/xlogrecovery.c:824 +#: access/transam/xlogrecovery.c:850 #, 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/xlogrecovery.c:852 +#: access/transam/xlogrecovery.c:878 #, c-format msgid "invalid next transaction ID" msgstr "次のトランザクションIDが不正です" -#: access/transam/xlogrecovery.c:857 +#: access/transam/xlogrecovery.c:883 #, c-format msgid "invalid redo in checkpoint record" msgstr "チェックポイントレコード内の不正なREDO" -#: access/transam/xlogrecovery.c:868 +#: access/transam/xlogrecovery.c:894 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "シャットダウン・チェックポイントにおける不正なREDOレコード" -#: access/transam/xlogrecovery.c:897 +#: access/transam/xlogrecovery.c:923 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "データベースシステムは正しくシャットダウンされていません; 自動リカバリを実行中" -#: access/transam/xlogrecovery.c:901 +#: access/transam/xlogrecovery.c:927 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "タイムライン%uから、タイムライン%uを目標としてクラッシュリカバリを開始します" -#: access/transam/xlogrecovery.c:944 +#: access/transam/xlogrecovery.c:970 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_labelに制御ファイルと整合しないデータが含まれます" -#: access/transam/xlogrecovery.c:945 +#: access/transam/xlogrecovery.c:971 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "これはバックアップが破損しており、リカバリには他のバックアップを使用しなければならないことを意味します。" -#: access/transam/xlogrecovery.c:999 +#: access/transam/xlogrecovery.c:1025 #, c-format msgid "using recovery command file \"%s\" is not supported" msgstr "リカバリコマンドファイル \"%s\"の使用はサポートされません" -#: access/transam/xlogrecovery.c:1064 +#: access/transam/xlogrecovery.c:1090 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "スタンバイモードはシングルユーザーサーバーではサポートされません" -#: access/transam/xlogrecovery.c:1081 +#: access/transam/xlogrecovery.c:1107 #, c-format msgid "specified neither primary_conninfo nor restore_command" msgstr "primary_conninfo と restore_command のどちらも指定されていません" -#: access/transam/xlogrecovery.c:1082 +#: access/transam/xlogrecovery.c:1108 #, c-format msgid "The database server will regularly poll the pg_wal subdirectory to check for files placed there." msgstr "データベースサーバーはpg_walサブディレクトリに置かれたファイルを定期的に確認します。" -#: access/transam/xlogrecovery.c:1090 +#: access/transam/xlogrecovery.c:1116 #, c-format msgid "must specify restore_command when standby mode is not enabled" msgstr "スタンバイモードを有効にしない場合は、restore_command の指定が必要です" -#: access/transam/xlogrecovery.c:1128 +#: access/transam/xlogrecovery.c:1154 #, c-format msgid "recovery target timeline %u does not exist" msgstr "リカバリ目標タイムライン%uが存在しません" -#: access/transam/xlogrecovery.c:1278 +#: access/transam/xlogrecovery.c:1304 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "読み取られたタイムラインIDは%uでしたが、%uであるはずです。" -#: access/transam/xlogrecovery.c:1660 +#: access/transam/xlogrecovery.c:1686 #, c-format msgid "redo starts at %X/%X" msgstr "REDOを%X/%Xから開始します" -#: access/transam/xlogrecovery.c:1673 +#: access/transam/xlogrecovery.c:1699 #, c-format msgid "redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%X" msgstr "REDO進行中、経過時間 %ld.%02d秒, 現在のLSN: %X/%X" -#: access/transam/xlogrecovery.c:1765 +#: access/transam/xlogrecovery.c:1791 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "要求されたリカバリ停止ポイントは、一貫性があるリカバリポイントより前にあります" -#: access/transam/xlogrecovery.c:1797 +#: access/transam/xlogrecovery.c:1823 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "REDOが%X/%Xで終了しました、システム使用状況: %s" -#: access/transam/xlogrecovery.c:1803 +#: access/transam/xlogrecovery.c:1829 #, c-format msgid "last completed transaction was at log time %s" msgstr "最後に完了したトランザクションのログ時刻は%sでした" -#: access/transam/xlogrecovery.c:1812 +#: access/transam/xlogrecovery.c:1838 #, c-format msgid "redo is not required" msgstr "REDOは必要ありません" -#: access/transam/xlogrecovery.c:1823 +#: access/transam/xlogrecovery.c:1849 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "指定したリカバリターゲットに到達する前にリカバリが終了しました" -#: access/transam/xlogrecovery.c:1998 +#: access/transam/xlogrecovery.c:2024 #, c-format msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" msgstr "%X/%Xで%sに上書きされて失われた継続行を正常にスキップしました" -#: access/transam/xlogrecovery.c:2065 +#: access/transam/xlogrecovery.c:2091 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "%2$s で想定外のディレクトリエントリ\"%1$s\"が見つかりました" -#: access/transam/xlogrecovery.c:2067 +#: access/transam/xlogrecovery.c:2093 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "Pg_tblspc/ のすべてのディレクトリエントリは、シンボリックリンクである必要があります。" -#: access/transam/xlogrecovery.c:2068 +#: access/transam/xlogrecovery.c:2094 #, 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/xlogrecovery.c:2142 +#: access/transam/xlogrecovery.c:2146 +#, c-format +msgid "completed backup recovery with redo LSN %X/%X and end LSN %X/%X" +msgstr "REDO LSN%X/%X、終了LSN %X/%Xのバックアップ・リカバリが完了しました" + +#: access/transam/xlogrecovery.c:2176 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "%X/%X でリカバリの一貫性が確保されました" #. translator: %s is a WAL record description -#: access/transam/xlogrecovery.c:2180 +#: access/transam/xlogrecovery.c:2214 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "%X/%Xにある%sのWAL再生" -#: access/transam/xlogrecovery.c:2276 +#: access/transam/xlogrecovery.c:2310 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "チェックポイントレコードにおいて想定外の前回のタイムラインID %u(現在のタイムラインIDは%u)がありました" -#: access/transam/xlogrecovery.c:2285 +#: access/transam/xlogrecovery.c:2319 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "チェックポイントレコードにおいて想定外のタイムラインID %u (%uの後)がありました" -#: access/transam/xlogrecovery.c:2301 +#: access/transam/xlogrecovery.c:2335 #, 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/xlogrecovery.c:2485 access/transam/xlogrecovery.c:2761 +#: access/transam/xlogrecovery.c:2519 access/transam/xlogrecovery.c:2795 #, c-format msgid "recovery stopping after reaching consistency" msgstr "リカバリ処理は一貫性確保後に停止します" -#: access/transam/xlogrecovery.c:2506 +#: access/transam/xlogrecovery.c:2540 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "リカバリ処理はWAL位置(LSN)\"%X/%X\"の前で停止します" -#: access/transam/xlogrecovery.c:2596 +#: access/transam/xlogrecovery.c:2630 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのコミット、時刻%sの前に停止します" -#: access/transam/xlogrecovery.c:2603 +#: access/transam/xlogrecovery.c:2637 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのアボート、時刻%sの前に停止します" -#: access/transam/xlogrecovery.c:2656 +#: access/transam/xlogrecovery.c:2690 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "リカバリ処理は復元ポイント\"%s\"、時刻%s に停止します" -#: access/transam/xlogrecovery.c:2674 +#: access/transam/xlogrecovery.c:2708 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "リカバリ処理はWAL位置(LSN)\"%X/%X\"の後で停止します" -#: access/transam/xlogrecovery.c:2741 +#: access/transam/xlogrecovery.c:2775 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのコミット、時刻%sの後に停止します" -#: access/transam/xlogrecovery.c:2749 +#: access/transam/xlogrecovery.c:2783 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "リカバリ処理はトランザクション%uのアボート、時刻%sの後に停止します" -#: access/transam/xlogrecovery.c:2830 +#: access/transam/xlogrecovery.c:2864 #, c-format msgid "pausing at the end of recovery" msgstr "リカバリ完了位置で一時停止しています" -#: access/transam/xlogrecovery.c:2831 +#: access/transam/xlogrecovery.c:2865 #, c-format msgid "Execute pg_wal_replay_resume() to promote." msgstr "再開するには pg_wal_replay_resume() を実行してください" -#: access/transam/xlogrecovery.c:2834 access/transam/xlogrecovery.c:4644 +#: access/transam/xlogrecovery.c:2868 access/transam/xlogrecovery.c:4678 #, c-format msgid "recovery has paused" msgstr "リカバリは一時停止中です" -#: access/transam/xlogrecovery.c:2835 +#: access/transam/xlogrecovery.c:2869 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "再開するには pg_xlog_replay_resume() を実行してください" -#: access/transam/xlogrecovery.c:3101 +#: access/transam/xlogrecovery.c:3135 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "ログファイル%2$s、オフセット%3$uのタイムラインID%1$uは想定外です" -#: access/transam/xlogrecovery.c:3306 +#: access/transam/xlogrecovery.c:3340 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "ログセグメント%s、オフセット%uを読み取れませんでした: %m" -#: access/transam/xlogrecovery.c:3312 +#: access/transam/xlogrecovery.c:3346 #, 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/xlogrecovery.c:3961 +#: access/transam/xlogrecovery.c:3995 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "制御ファイル内の最初のチェックポイントへのリンクが不正です" -#: access/transam/xlogrecovery.c:3965 +#: access/transam/xlogrecovery.c:3999 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "backup_labelファイル内のチェックポイントへのリンクが不正です" -#: access/transam/xlogrecovery.c:3983 +#: access/transam/xlogrecovery.c:4017 #, c-format msgid "invalid primary checkpoint record" msgstr "最初のチェックポイントレコードが不正です" -#: access/transam/xlogrecovery.c:3987 +#: access/transam/xlogrecovery.c:4021 #, c-format msgid "invalid checkpoint record" msgstr "チェックポイントレコードが不正です" -#: access/transam/xlogrecovery.c:3998 +#: access/transam/xlogrecovery.c:4032 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "プライマリチェックポイントレコード内のリソースマネージャIDが不正です" -#: access/transam/xlogrecovery.c:4002 +#: access/transam/xlogrecovery.c:4036 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "チェックポイントレコード内のリソースマネージャIDがで不正です" -#: access/transam/xlogrecovery.c:4015 +#: access/transam/xlogrecovery.c:4049 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "最初のチェックポイントレコード内のxl_infoが不正です" -#: access/transam/xlogrecovery.c:4019 +#: access/transam/xlogrecovery.c:4053 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "チェックポイントレコード内のxl_infoが不正です" -#: access/transam/xlogrecovery.c:4030 +#: access/transam/xlogrecovery.c:4064 #, c-format msgid "invalid length of primary checkpoint record" msgstr "最初のチェックポイントレコード長が不正です" -#: access/transam/xlogrecovery.c:4034 +#: access/transam/xlogrecovery.c:4068 #, c-format msgid "invalid length of checkpoint record" msgstr "チェックポイントレコード長が不正です" -#: access/transam/xlogrecovery.c:4090 +#: access/transam/xlogrecovery.c:4124 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "新しいタイムライン%uはデータベースシステムのタイムライン%uの子ではありません" -#: access/transam/xlogrecovery.c:4104 +#: access/transam/xlogrecovery.c:4138 #, 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/xlogrecovery.c:4123 +#: access/transam/xlogrecovery.c:4157 #, c-format msgid "new target timeline is %u" msgstr "新しい目標タイムラインは%uです" -#: access/transam/xlogrecovery.c:4326 +#: access/transam/xlogrecovery.c:4360 #, c-format msgid "WAL receiver process shutdown requested" msgstr "wal receiverプロセスのシャットダウンが要求されました" -#: access/transam/xlogrecovery.c:4389 +#: access/transam/xlogrecovery.c:4423 #, c-format msgid "received promote request" msgstr "昇格要求を受信しました" -#: access/transam/xlogrecovery.c:4402 +#: access/transam/xlogrecovery.c:4436 #, c-format msgid "promote trigger file found: %s" msgstr "昇格トリガファイルがあります: %s" -#: access/transam/xlogrecovery.c:4410 +#: access/transam/xlogrecovery.c:4444 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "昇格トリガファイル\"%s\"のstatに失敗しました: %m" -#: access/transam/xlogrecovery.c:4635 +#: access/transam/xlogrecovery.c:4669 #, c-format msgid "hot standby is not possible because of insufficient parameter settings" msgstr "不十分なパラメータ設定のため、ホットスタンバイを使用できません" -#: access/transam/xlogrecovery.c:4636 access/transam/xlogrecovery.c:4663 access/transam/xlogrecovery.c:4693 +#: access/transam/xlogrecovery.c:4670 access/transam/xlogrecovery.c:4697 access/transam/xlogrecovery.c:4727 #, 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/xlogrecovery.c:4645 +#: access/transam/xlogrecovery.c:4679 #, c-format msgid "If recovery is unpaused, the server will shut down." msgstr "リカバリの一時停止を解除すると、サーバーはシャットダウンします。" -#: access/transam/xlogrecovery.c:4646 +#: access/transam/xlogrecovery.c:4680 #, c-format msgid "You can then restart the server after making the necessary configuration changes." msgstr "その後、必要な設定変更を行った後にサーバーを再起動できます。" -#: access/transam/xlogrecovery.c:4657 +#: access/transam/xlogrecovery.c:4691 #, c-format msgid "promotion is not possible because of insufficient parameter settings" msgstr "不十分なパラメータ設定のため、昇格できません" -#: access/transam/xlogrecovery.c:4667 +#: access/transam/xlogrecovery.c:4701 #, c-format msgid "Restart the server after making the necessary configuration changes." msgstr "必要な設定変更を行ったのち、サーバーを再起動してください。" -#: access/transam/xlogrecovery.c:4691 +#: access/transam/xlogrecovery.c:4725 #, c-format msgid "recovery aborted because of insufficient parameter settings" msgstr "不十分なパラメータ設定値のためリカバリが停止しました" -#: access/transam/xlogrecovery.c:4697 +#: access/transam/xlogrecovery.c:4731 #, c-format msgid "You can restart the server after making the necessary configuration changes." msgstr "必要な設定変更を行うことでサーバーを再起動できます。" @@ -3535,14 +3539,14 @@ msgstr "デフォルト権限は列には設定できません" msgid "cannot use IN SCHEMA clause when using GRANT/REVOKE ON SCHEMAS" msgstr "GRANT/REVOKE ON SCHEMAS を使っている時には IN SCHEMA 句は指定できません" -#: catalog/aclchk.c:1587 catalog/catalog.c:627 catalog/objectaddress.c:1543 catalog/pg_publication.c:510 commands/analyze.c:391 commands/copy.c:779 commands/sequence.c:1663 commands/tablecmds.c:7271 commands/tablecmds.c:7427 commands/tablecmds.c:7477 commands/tablecmds.c:7551 commands/tablecmds.c:7621 commands/tablecmds.c:7733 commands/tablecmds.c:7827 commands/tablecmds.c:7886 commands/tablecmds.c:7975 commands/tablecmds.c:8005 commands/tablecmds.c:8133 -#: commands/tablecmds.c:8215 commands/tablecmds.c:8371 commands/tablecmds.c:8489 commands/tablecmds.c:12218 commands/tablecmds.c:12399 commands/tablecmds.c:12559 commands/tablecmds.c:13723 commands/tablecmds.c:16292 commands/trigger.c:954 parser/analyze.c:2506 parser/parse_relation.c:725 parser/parse_target.c:1063 parser/parse_type.c:144 parser/parse_utilcmd.c:3435 parser/parse_utilcmd.c:3471 parser/parse_utilcmd.c:3513 utils/adt/acl.c:2869 +#: catalog/aclchk.c:1587 catalog/catalog.c:627 catalog/objectaddress.c:1543 catalog/pg_publication.c:510 commands/analyze.c:391 commands/copy.c:779 commands/sequence.c:1663 commands/tablecmds.c:7275 commands/tablecmds.c:7431 commands/tablecmds.c:7481 commands/tablecmds.c:7555 commands/tablecmds.c:7625 commands/tablecmds.c:7737 commands/tablecmds.c:7831 commands/tablecmds.c:7890 commands/tablecmds.c:7979 commands/tablecmds.c:8009 commands/tablecmds.c:8137 +#: commands/tablecmds.c:8219 commands/tablecmds.c:8375 commands/tablecmds.c:8493 commands/tablecmds.c:12222 commands/tablecmds.c:12403 commands/tablecmds.c:12563 commands/tablecmds.c:13727 commands/tablecmds.c:16296 commands/trigger.c:954 parser/analyze.c:2506 parser/parse_relation.c:725 parser/parse_target.c:1063 parser/parse_type.c:144 parser/parse_utilcmd.c:3435 parser/parse_utilcmd.c:3471 parser/parse_utilcmd.c:3513 utils/adt/acl.c:2869 #: utils/adt/ruleutils.c:2830 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "リレーション\"%2$s\"の列\"%1$s\"は存在しません" -#: catalog/aclchk.c:1850 catalog/objectaddress.c:1383 commands/sequence.c:1172 commands/tablecmds.c:253 commands/tablecmds.c:17156 utils/adt/acl.c:2077 utils/adt/acl.c:2107 utils/adt/acl.c:2139 utils/adt/acl.c:2171 utils/adt/acl.c:2199 utils/adt/acl.c:2229 +#: catalog/aclchk.c:1850 catalog/objectaddress.c:1383 commands/sequence.c:1172 commands/tablecmds.c:253 commands/tablecmds.c:17168 utils/adt/acl.c:2077 utils/adt/acl.c:2107 utils/adt/acl.c:2139 utils/adt/acl.c:2171 utils/adt/acl.c:2199 utils/adt/acl.c:2229 #, c-format msgid "\"%s\" is not a sequence" msgstr "\"%s\"はシーケンスではありません" @@ -4131,8 +4135,8 @@ msgstr[0] "" msgid "cannot drop %s because other objects depend on it" msgstr "他のオブジェクトが依存しているため%sを削除できません" -#: catalog/dependency.c:1194 catalog/dependency.c:1201 catalog/dependency.c:1212 commands/tablecmds.c:1328 commands/tablecmds.c:14365 commands/tablespace.c:476 commands/user.c:1008 commands/view.c:522 libpq/auth.c:329 replication/syncrep.c:1043 storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1413 utils/misc/guc.c:7402 utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11865 utils/misc/guc.c:11899 utils/misc/guc.c:11933 utils/misc/guc.c:11976 -#: utils/misc/guc.c:12018 +#: catalog/dependency.c:1194 catalog/dependency.c:1201 catalog/dependency.c:1212 commands/tablecmds.c:1328 commands/tablecmds.c:14369 commands/tablespace.c:476 commands/user.c:1008 commands/view.c:522 libpq/auth.c:329 replication/syncrep.c:1043 storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1421 utils/misc/guc.c:7402 utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11880 utils/misc/guc.c:11914 utils/misc/guc.c:11948 utils/misc/guc.c:11991 +#: utils/misc/guc.c:12033 #, c-format msgid "%s" msgstr "%s" @@ -4173,12 +4177,12 @@ msgstr "\"%s.%s\"を作成する権限がありません" msgid "System catalog modifications are currently disallowed." msgstr "システムカタログの更新は現在禁止されています" -#: catalog/heap.c:466 commands/tablecmds.c:2348 commands/tablecmds.c:2985 commands/tablecmds.c:6861 +#: catalog/heap.c:466 commands/tablecmds.c:2348 commands/tablecmds.c:2985 commands/tablecmds.c:6865 #, c-format msgid "tables can have at most %d columns" msgstr "テーブルは最大で%d列までしか持てません" -#: catalog/heap.c:484 commands/tablecmds.c:7161 +#: catalog/heap.c:484 commands/tablecmds.c:7165 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "列名\"%s\"はシステム用の列名に使われています" @@ -4250,97 +4254,97 @@ msgstr "バイナリアップグレードモード中にrelfilenodeの値が設 msgid "cannot add NO INHERIT constraint to partitioned table \"%s\"" msgstr "パーティション親テーブル\"%s\"に NO INHERIT 制約は追加できません" -#: catalog/heap.c:2401 +#: catalog/heap.c:2402 #, c-format msgid "check constraint \"%s\" already exists" msgstr "検査制約\"%s\"はすでに存在します" -#: catalog/heap.c:2571 catalog/index.c:889 catalog/pg_constraint.c:689 commands/tablecmds.c:8863 +#: catalog/heap.c:2572 catalog/index.c:889 catalog/pg_constraint.c:689 commands/tablecmds.c:8867 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "すでに制約\"%s\"はリレーション\"%s\"に存在します" -#: catalog/heap.c:2578 +#: catalog/heap.c:2579 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "制約\"%s\"は、リレーション\"%s\"上の継承されていない制約と競合します" -#: catalog/heap.c:2589 +#: catalog/heap.c:2590 #, c-format msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" msgstr "制約\"%s\"は、リレーション\"%s\"上の継承された制約と競合します" -#: catalog/heap.c:2599 +#: catalog/heap.c:2600 #, c-format msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" msgstr "制約\"%s\"は、リレーション\"%s\"上の NOT VALID 制約と競合します" -#: catalog/heap.c:2604 +#: catalog/heap.c:2605 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "継承された定義により制約\"%s\"をマージしています" -#: catalog/heap.c:2709 +#: catalog/heap.c:2710 #, c-format msgid "cannot use generated column \"%s\" in column generation expression" msgstr "生成カラム\"%s\"はカラム生成式中では使用できません" -#: catalog/heap.c:2711 +#: catalog/heap.c:2712 #, c-format msgid "A generated column cannot reference another generated column." msgstr "生成カラムは他の生成カラムを参照できません。" -#: catalog/heap.c:2717 +#: catalog/heap.c:2718 #, c-format msgid "cannot use whole-row variable in column generation expression" msgstr "列生成式内では行全体参照は使用できません" -#: catalog/heap.c:2718 +#: catalog/heap.c:2719 #, c-format msgid "This would cause the generated column to depend on its own value." msgstr "これは生成列を自身の値に依存させることにつながります。" -#: catalog/heap.c:2771 +#: catalog/heap.c:2774 #, c-format msgid "generation expression is not immutable" msgstr "生成式は不変ではありません" -#: catalog/heap.c:2799 rewrite/rewriteHandler.c:1290 +#: catalog/heap.c:2802 rewrite/rewriteHandler.c:1290 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "列\"%s\"の型は%sですが、デフォルト式の型は%sです" -#: catalog/heap.c:2804 commands/prepare.c:334 parser/analyze.c:2730 parser/parse_target.c:594 parser/parse_target.c:882 parser/parse_target.c:892 rewrite/rewriteHandler.c:1295 +#: catalog/heap.c:2807 commands/prepare.c:334 parser/analyze.c:2730 parser/parse_target.c:594 parser/parse_target.c:882 parser/parse_target.c:892 rewrite/rewriteHandler.c:1295 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "式を書き換えるかキャストする必要があります。" -#: catalog/heap.c:2851 +#: catalog/heap.c:2854 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "検査制約ではテーブル\"%s\"のみを参照することができます" -#: catalog/heap.c:3149 +#: catalog/heap.c:3152 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "ON COMMITと外部キーの組み合わせはサポートされていません" -#: catalog/heap.c:3150 +#: catalog/heap.c:3153 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "テーブル\"%s\"は\"%s\"を参照します。しかし、これらのON COMMIT設定は同一ではありません。" -#: catalog/heap.c:3155 +#: catalog/heap.c:3158 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "外部キー制約で参照されているテーブルを削除できません" -#: catalog/heap.c:3156 +#: catalog/heap.c:3159 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "テーブル\"%s\"は\"%s\"を参照します。" -#: catalog/heap.c:3158 +#: catalog/heap.c:3161 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "同時にテーブル\"%s\"がtruncateされました。TRUNCATE ... CASCADEを使用してください。" @@ -4405,32 +4409,32 @@ msgstr "バイナリアップグレードモード中にインデックスのrel msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLYはトランザクション内で最初の操作でなければなりません" -#: catalog/index.c:3637 +#: catalog/index.c:3663 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "他のセッションの一時テーブルはインデクス再構築できません" -#: catalog/index.c:3648 commands/indexcmds.c:3560 +#: catalog/index.c:3674 commands/indexcmds.c:3536 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "TOASTテーブルの無効なインデックスの再作成はできません" -#: catalog/index.c:3664 commands/indexcmds.c:3440 commands/indexcmds.c:3584 commands/tablecmds.c:3305 +#: catalog/index.c:3690 commands/indexcmds.c:3416 commands/indexcmds.c:3560 commands/tablecmds.c:3305 #, c-format msgid "cannot move system relation \"%s\"" msgstr "システムリレーション\"%s\"を移動できません" -#: catalog/index.c:3808 +#: catalog/index.c:3834 #, c-format msgid "index \"%s\" was reindexed" msgstr "インデックス\"%s\"のインデックス再構築が完了しました" -#: catalog/index.c:3945 +#: catalog/index.c:3971 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "TOASTテーブルの無効なインデックス \"%s.%s\"の再作成はできません、スキップします " -#: catalog/namespace.c:259 catalog/namespace.c:463 catalog/namespace.c:555 commands/trigger.c:5812 +#: catalog/namespace.c:259 catalog/namespace.c:463 catalog/namespace.c:555 commands/trigger.c:5830 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" msgstr "データベース間の参照は実装されていません: \"%s.%s.%s\"" @@ -4560,27 +4564,27 @@ msgstr "リカバリ中は一時テーブルを作成できません" msgid "cannot create temporary tables during a parallel operation" msgstr "並行処理中は一時テーブルを作成できません" -#: catalog/namespace.c:4338 commands/tablespace.c:1236 commands/variable.c:64 utils/misc/guc.c:12050 utils/misc/guc.c:12152 +#: catalog/namespace.c:4338 commands/tablespace.c:1236 commands/variable.c:64 utils/misc/guc.c:12065 utils/misc/guc.c:12167 #, c-format msgid "List syntax is invalid." msgstr "リスト文法が無効です" -#: catalog/objectaddress.c:1391 commands/policy.c:96 commands/policy.c:376 commands/tablecmds.c:247 commands/tablecmds.c:289 commands/tablecmds.c:2184 commands/tablecmds.c:12335 +#: catalog/objectaddress.c:1391 commands/policy.c:96 commands/policy.c:376 commands/tablecmds.c:247 commands/tablecmds.c:289 commands/tablecmds.c:2184 commands/tablecmds.c:12339 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\"はテーブルではありません" -#: catalog/objectaddress.c:1398 commands/tablecmds.c:259 commands/tablecmds.c:17161 commands/view.c:119 +#: catalog/objectaddress.c:1398 commands/tablecmds.c:259 commands/tablecmds.c:17173 commands/view.c:119 #, c-format msgid "\"%s\" is not a view" msgstr "\"%s\"はビューではありません" -#: catalog/objectaddress.c:1405 commands/matview.c:186 commands/tablecmds.c:265 commands/tablecmds.c:17166 +#: catalog/objectaddress.c:1405 commands/matview.c:186 commands/tablecmds.c:265 commands/tablecmds.c:17178 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\"は実体化ビューではありません" -#: catalog/objectaddress.c:1412 commands/tablecmds.c:283 commands/tablecmds.c:17171 +#: catalog/objectaddress.c:1412 commands/tablecmds.c:283 commands/tablecmds.c:17183 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\"は外部テーブルではありません" @@ -5327,7 +5331,7 @@ msgstr "パーティション\"%s\"を取り外せません" msgid "The partition is being detached concurrently or has an unfinished detach." msgstr "このパーティションは今現在取り外し中であるか取り外し処理が未完了の状態です。" -#: catalog/pg_inherits.c:596 commands/tablecmds.c:4488 commands/tablecmds.c:15481 +#: catalog/pg_inherits.c:596 commands/tablecmds.c:4488 commands/tablecmds.c:15485 #, c-format msgid "Use ALTER TABLE ... DETACH PARTITION ... FINALIZE to complete the pending detach operation." msgstr "ALTER TABLE ... DETACH PARTITION ... FINALIZE を実行して保留中の取り外し処理を完了させてください。" @@ -5999,7 +6003,7 @@ msgstr "他のセッションの一時テーブルをクラスタ化できませ msgid "there is no previously clustered index for table \"%s\"" msgstr "テーブル\"%s\"には事前にクラスタ化されたインデックスはありません" -#: commands/cluster.c:190 commands/tablecmds.c:14179 commands/tablecmds.c:16060 +#: commands/cluster.c:190 commands/tablecmds.c:14183 commands/tablecmds.c:16064 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "テーブル\"%2$s\"にはインデックス\"%1$s\"は存在しません" @@ -6014,7 +6018,7 @@ msgstr "共有カタログをクラスタ化できません" msgid "cannot vacuum temporary tables of other sessions" msgstr "他のセッションの一時テーブルに対してはVACUUMを実行できません" -#: commands/cluster.c:511 commands/tablecmds.c:16070 +#: commands/cluster.c:511 commands/tablecmds.c:16074 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\"はテーブル\"%s\"のインデックスではありません" @@ -6073,7 +6077,7 @@ msgstr "" msgid "collation attribute \"%s\" not recognized" msgstr "照合順序の属性\"%s\"が認識できません" -#: commands/collationcmds.c:119 commands/collationcmds.c:125 commands/define.c:389 commands/tablecmds.c:7808 replication/pgoutput/pgoutput.c:311 replication/pgoutput/pgoutput.c:334 replication/pgoutput/pgoutput.c:348 replication/pgoutput/pgoutput.c:358 replication/pgoutput/pgoutput.c:368 replication/pgoutput/pgoutput.c:378 replication/walsender.c:1001 replication/walsender.c:1023 replication/walsender.c:1033 +#: commands/collationcmds.c:119 commands/collationcmds.c:125 commands/define.c:389 commands/tablecmds.c:7812 replication/pgoutput/pgoutput.c:311 replication/pgoutput/pgoutput.c:334 replication/pgoutput/pgoutput.c:348 replication/pgoutput/pgoutput.c:358 replication/pgoutput/pgoutput.c:368 replication/pgoutput/pgoutput.c:378 replication/walsender.c:1001 replication/walsender.c:1023 replication/walsender.c:1033 #, c-format msgid "conflicting or redundant options" msgstr "競合するオプション、あるいは余計なオプションがあります" @@ -6155,7 +6159,7 @@ msgstr "ロケール名\"%s\"を、言語タグに変換できませんでした msgid "must be superuser to import system collations" msgstr "システム照合順序をインポートするにはスーパーユーザーである必要があります" -#: commands/collationcmds.c:618 commands/copyfrom.c:1499 commands/copyto.c:679 libpq/be-secure-common.c:81 +#: commands/collationcmds.c:618 commands/copyfrom.c:1509 commands/copyto.c:679 libpq/be-secure-common.c:81 #, c-format msgid "could not execute command \"%s\": %m" msgstr "コマンド\"%s\"を実行できませんでした: %m" @@ -6390,7 +6394,7 @@ msgstr "列\"%s\"は生成カラムです" msgid "Generated columns cannot be used in COPY." msgstr "生成カラムはCOPYでは使えません。" -#: commands/copy.c:784 commands/indexcmds.c:1850 commands/statscmds.c:243 commands/tablecmds.c:2379 commands/tablecmds.c:3035 commands/tablecmds.c:3529 parser/parse_relation.c:3660 parser/parse_relation.c:3680 utils/adt/tsvector_op.c:2688 +#: commands/copy.c:784 commands/indexcmds.c:1826 commands/statscmds.c:243 commands/tablecmds.c:2379 commands/tablecmds.c:3035 commands/tablecmds.c:3529 parser/parse_relation.c:3660 parser/parse_relation.c:3680 utils/adt/tsvector_op.c:2688 #, c-format msgid "column \"%s\" does not exist" msgstr "列\"%s\"は存在しません" @@ -6465,32 +6469,37 @@ msgstr "先行するトランザクション処理のためCOPY FREEZEを実行 msgid "cannot perform COPY FREEZE because the table was not created or truncated in the current subtransaction" msgstr "このテーブルは現在のサブトランザクションにおいて作成または切り詰めされていないため、COPY FREEZEを実行することができません" -#: commands/copyfrom.c:1267 commands/copyto.c:611 +#: commands/copyfrom.c:1270 commands/copyto.c:611 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "FORCE_NOT_NULL指定された列\"%s\"はCOPYで参照されません" -#: commands/copyfrom.c:1290 commands/copyto.c:634 +#: commands/copyfrom.c:1293 commands/copyto.c:634 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "FORCE_NULL指定された列\"%s\"はCOPYで参照されません" -#: commands/copyfrom.c:1518 +#: commands/copyfrom.c:1346 utils/mb/mbutils.c:385 +#, c-format +msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" +msgstr "符号化方式\"%s\"から\"%s\"用のデフォルト変換関数は存在しません" + +#: commands/copyfrom.c:1528 #, c-format msgid "COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \\copy." msgstr "COPY FROMによってPostgreSQLサーバープロセスはファイルを読み込みます。psqlの \\copy のようなクライアント側の仕組みが必要かもしれません" -#: commands/copyfrom.c:1531 commands/copyto.c:731 +#: commands/copyfrom.c:1541 commands/copyto.c:731 #, c-format msgid "\"%s\" is a directory" msgstr "\"%s\"はディレクトリです" -#: commands/copyfrom.c:1599 commands/copyto.c:301 libpq/be-secure-common.c:105 +#: commands/copyfrom.c:1609 commands/copyto.c:301 libpq/be-secure-common.c:105 #, c-format msgid "could not close pipe to external command: %m" msgstr "外部コマンドに対するパイプをクローズできませんでした: %m" -#: commands/copyfrom.c:1614 commands/copyto.c:306 +#: commands/copyfrom.c:1624 commands/copyto.c:306 #, c-format msgid "program \"%s\" failed" msgstr "プログラム\"%s\"の実行に失敗しました" @@ -7083,7 +7092,7 @@ msgid "There is %d other session using the database." msgid_plural "There are %d other sessions using the database." msgstr[0] "他にこのデータベースを使っている %d 個のセッションがあります。" -#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3848 +#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3847 #, c-format msgid "There is %d prepared transaction using the database." msgid_plural "There are %d prepared transactions using the database." @@ -7144,7 +7153,7 @@ msgstr "\"%s\"は集約関数です" msgid "Use DROP AGGREGATE to drop aggregate functions." msgstr "集約関数を削除するにはDROP AGGREGATEを使用してください" -#: commands/dropcmds.c:158 commands/sequence.c:475 commands/tablecmds.c:3613 commands/tablecmds.c:3771 commands/tablecmds.c:3823 commands/tablecmds.c:16487 tcop/utility.c:1332 +#: commands/dropcmds.c:158 commands/sequence.c:475 commands/tablecmds.c:3613 commands/tablecmds.c:3771 commands/tablecmds.c:3823 commands/tablecmds.c:16491 tcop/utility.c:1332 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "リレーション\"%s\"は存在しません、スキップします" @@ -8181,212 +8190,212 @@ msgstr "パーティションキー定義では %s 制約はサポートして msgid "%s constraints cannot be used when partition keys include expressions." msgstr "%s 制約はパーティションキーが式を含む場合は使用できません" -#: commands/indexcmds.c:1037 +#: commands/indexcmds.c:1040 #, c-format msgid "unique constraint on partitioned table must include all partitioning columns" msgstr "パーティション親テーブル上のユニーク制約はすべてのパーティショニング列を含まなければなりません" -#: commands/indexcmds.c:1038 +#: commands/indexcmds.c:1041 #, c-format msgid "%s constraint on table \"%s\" lacks column \"%s\" which is part of the partition key." msgstr "テーブル\"%2$s\"上の%1$s制約にパーティションキーの一部である列\"%3$s\"が含まれていません。" -#: commands/indexcmds.c:1057 commands/indexcmds.c:1076 +#: commands/indexcmds.c:1060 commands/indexcmds.c:1079 #, c-format msgid "index creation on system columns is not supported" msgstr "システム列へのインデックス作成はサポートされていません" -#: commands/indexcmds.c:1276 tcop/utility.c:1518 +#: commands/indexcmds.c:1279 tcop/utility.c:1518 #, c-format msgid "cannot create unique index on partitioned table \"%s\"" msgstr "パーティション親テーブル\"%s\"にはユニークインデックスを構築できません" -#: commands/indexcmds.c:1278 tcop/utility.c:1520 +#: commands/indexcmds.c:1281 tcop/utility.c:1520 #, c-format msgid "Table \"%s\" contains partitions that are foreign tables." msgstr "テーブル\"%s\"は外部テーブルを子テーブルとして含んでいます" -#: commands/indexcmds.c:1767 +#: commands/indexcmds.c:1743 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "インデックスの述部の関数はIMMUTABLEマークが必要です" -#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:2529 parser/parse_utilcmd.c:2664 +#: commands/indexcmds.c:1821 parser/parse_utilcmd.c:2529 parser/parse_utilcmd.c:2664 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "キーとして指名された列\"%s\"は存在しません" -#: commands/indexcmds.c:1869 parser/parse_utilcmd.c:1826 +#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:1826 #, c-format msgid "expressions are not supported in included columns" msgstr "包含列では式はサポートされません" -#: commands/indexcmds.c:1910 +#: commands/indexcmds.c:1886 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "式インデックスの関数はIMMUTABLEマークが必要です" -#: commands/indexcmds.c:1925 +#: commands/indexcmds.c:1901 #, c-format msgid "including column does not support a collation" msgstr "包含列は照合順序をサポートしません" -#: commands/indexcmds.c:1929 +#: commands/indexcmds.c:1905 #, c-format msgid "including column does not support an operator class" msgstr "包含列は演算子クラスをサポートしません" -#: commands/indexcmds.c:1933 +#: commands/indexcmds.c:1909 #, c-format msgid "including column does not support ASC/DESC options" msgstr "包含列は ASC/DESC オプションをサポートしません" -#: commands/indexcmds.c:1937 +#: commands/indexcmds.c:1913 #, c-format msgid "including column does not support NULLS FIRST/LAST options" msgstr "包含列は NULLS FIRST/LAST オプションをサポートしません" -#: commands/indexcmds.c:1978 +#: commands/indexcmds.c:1954 #, c-format msgid "could not determine which collation to use for index expression" msgstr "インデックス式で使用する照合順序を特定できませんでした" -#: commands/indexcmds.c:1986 commands/tablecmds.c:17502 commands/typecmds.c:807 parser/parse_expr.c:2690 parser/parse_type.c:570 parser/parse_utilcmd.c:3796 utils/adt/misc.c:601 +#: commands/indexcmds.c:1962 commands/tablecmds.c:17516 commands/typecmds.c:807 parser/parse_expr.c:2690 parser/parse_type.c:570 parser/parse_utilcmd.c:3796 utils/adt/misc.c:601 #, c-format msgid "collations are not supported by type %s" msgstr "%s 型では照合順序はサポートされません" -#: commands/indexcmds.c:2051 +#: commands/indexcmds.c:2027 #, c-format msgid "operator %s is not commutative" msgstr "演算子 %s は可換ではありません" -#: commands/indexcmds.c:2053 +#: commands/indexcmds.c:2029 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "排除制約で使えるのは可換演算子だけです" -#: commands/indexcmds.c:2079 +#: commands/indexcmds.c:2055 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "演算子%sは演算子族\"%s\"のメンバーではありません" -#: commands/indexcmds.c:2082 +#: commands/indexcmds.c:2058 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "この排除に使用する演算子はこの制約に使用するインデックス演算子に関連付けられている必要があります。" -#: commands/indexcmds.c:2117 +#: commands/indexcmds.c:2093 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "アクセスメソッド\"%s\"はASC/DESCオプションをサポートしません" -#: commands/indexcmds.c:2122 +#: commands/indexcmds.c:2098 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "アクセスメソッド\"%s\"はNULLS FIRST/LASTオプションをサポートしません" -#: commands/indexcmds.c:2168 commands/tablecmds.c:17527 commands/tablecmds.c:17533 commands/typecmds.c:2302 +#: commands/indexcmds.c:2144 commands/tablecmds.c:17541 commands/tablecmds.c:17547 commands/typecmds.c:2302 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "アクセスメソッド\"%2$s\"にはデータ型%1$s用のデフォルトの演算子クラスがありません" -#: commands/indexcmds.c:2170 +#: commands/indexcmds.c:2146 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "このインデックスの演算子クラスを指定するか、あるいはこのデータ型のデフォルト演算子クラスを定義しなければなりません。" -#: commands/indexcmds.c:2199 commands/indexcmds.c:2207 commands/opclasscmds.c:205 +#: commands/indexcmds.c:2175 commands/indexcmds.c:2183 commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "アクセスメソッド\"%2$s\"用の演算子クラス\"%1$s\"は存在しません" -#: commands/indexcmds.c:2221 commands/typecmds.c:2290 +#: commands/indexcmds.c:2197 commands/typecmds.c:2290 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "演算子クラス\"%s\"はデータ型%sを受け付けません" -#: commands/indexcmds.c:2311 +#: commands/indexcmds.c:2287 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "データ型%sには複数のデフォルトの演算子クラスがあります" -#: commands/indexcmds.c:2639 +#: commands/indexcmds.c:2615 #, c-format msgid "unrecognized REINDEX option \"%s\"" msgstr "認識できないREINDEXのオプション \"%s\"" -#: commands/indexcmds.c:2863 +#: commands/indexcmds.c:2839 #, c-format msgid "table \"%s\" has no indexes that can be reindexed concurrently" msgstr "テーブル\"%s\"には並行インデックス再作成が可能なインデックスがありません" -#: commands/indexcmds.c:2877 +#: commands/indexcmds.c:2853 #, c-format msgid "table \"%s\" has no indexes to reindex" msgstr "テーブル\"%s\"には再構築すべきインデックスはありません" -#: commands/indexcmds.c:2917 commands/indexcmds.c:3421 commands/indexcmds.c:3549 +#: commands/indexcmds.c:2893 commands/indexcmds.c:3397 commands/indexcmds.c:3525 #, c-format msgid "cannot reindex system catalogs concurrently" msgstr "システムカタログではインデックスの並行再構築はできません" -#: commands/indexcmds.c:2940 +#: commands/indexcmds.c:2916 #, c-format msgid "can only reindex the currently open database" msgstr "現在オープンしているデータベースのみをインデックス再構築することができます" -#: commands/indexcmds.c:3028 +#: commands/indexcmds.c:3004 #, c-format msgid "cannot reindex system catalogs concurrently, skipping all" msgstr "システムカタログではインデックスの並行再構築はできません、全てスキップします" -#: commands/indexcmds.c:3061 +#: commands/indexcmds.c:3037 #, c-format msgid "cannot move system relations, skipping all" msgstr "システムリレーションは移動できません、すべてスキップします" -#: commands/indexcmds.c:3107 +#: commands/indexcmds.c:3083 #, c-format msgid "while reindexing partitioned table \"%s.%s\"" msgstr "パーティションテーブル\"%s.%s\"のインデックス再構築中" -#: commands/indexcmds.c:3110 +#: commands/indexcmds.c:3086 #, c-format msgid "while reindexing partitioned index \"%s.%s\"" msgstr "パーティションインデックス\"%s.%s\"のインデックス再構築中" -#: commands/indexcmds.c:3301 commands/indexcmds.c:4157 +#: commands/indexcmds.c:3277 commands/indexcmds.c:4133 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "テーブル\"%s.%s\"のインデックス再構築が完了しました" -#: commands/indexcmds.c:3453 commands/indexcmds.c:3505 +#: commands/indexcmds.c:3429 commands/indexcmds.c:3481 #, c-format msgid "cannot reindex invalid index \"%s.%s\" concurrently, skipping" msgstr "無効なインデックス \"%s.%s\"の並行再構築はできません、スキップします " -#: commands/indexcmds.c:3459 +#: commands/indexcmds.c:3435 #, c-format msgid "cannot reindex exclusion constraint index \"%s.%s\" concurrently, skipping" msgstr "排他制約インデックス\"%s.%s\"を並行再構築することはできません、スキップします " -#: commands/indexcmds.c:3614 +#: commands/indexcmds.c:3590 #, c-format msgid "cannot reindex this type of relation concurrently" msgstr "このタイプのリレーションでインデックス並列再構築はできません" -#: commands/indexcmds.c:3635 +#: commands/indexcmds.c:3611 #, c-format msgid "cannot move non-shared relation to tablespace \"%s\"" msgstr "テーブルスペース\"%s\"への非共有リレーションの移動はできません" -#: commands/indexcmds.c:4138 commands/indexcmds.c:4150 +#: commands/indexcmds.c:4114 commands/indexcmds.c:4126 #, c-format msgid "index \"%s.%s\" was reindexed" msgstr " インデックス\"%s.%s\"の再構築が完了しました " -#: commands/indexcmds.c:4140 commands/indexcmds.c:4159 +#: commands/indexcmds.c:4116 commands/indexcmds.c:4135 #, c-format msgid "%s." msgstr "%s。" @@ -8696,7 +8705,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:149 commands/tablecmds.c:1609 commands/tablecmds.c:2197 commands/tablecmds.c:3423 commands/tablecmds.c:6312 commands/tablecmds.c:9144 commands/tablecmds.c:17082 commands/tablecmds.c:17117 commands/trigger.c:328 commands/trigger.c:1378 commands/trigger.c:1488 rewrite/rewriteDefine.c:278 rewrite/rewriteDefine.c:957 rewrite/rewriteRemove.c:80 +#: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:149 commands/tablecmds.c:1609 commands/tablecmds.c:2197 commands/tablecmds.c:3423 commands/tablecmds.c:6312 commands/tablecmds.c:9148 commands/tablecmds.c:17094 commands/tablecmds.c:17129 commands/trigger.c:328 commands/trigger.c:1378 commands/trigger.c:1488 rewrite/rewriteDefine.c:278 rewrite/rewriteDefine.c:957 rewrite/rewriteRemove.c:80 #, c-format msgid "permission denied: \"%s\" is a system catalog" msgstr "権限がありません: \"%s\"はシステムカタログです" @@ -8791,7 +8800,7 @@ msgstr "準備された文\"%s\"は存在しません" msgid "must be superuser to create custom procedural language" msgstr "手続き言語を生成するためにはスーパーユーザーである必要があります" -#: commands/publicationcmds.c:130 postmaster/postmaster.c:1222 postmaster/postmaster.c:1321 utils/init/miscinit.c:1651 +#: commands/publicationcmds.c:130 postmaster/postmaster.c:1222 postmaster/postmaster.c:1321 utils/init/miscinit.c:1659 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "パラメータ\"%s\"のリスト構文が不正です" @@ -9131,7 +9140,7 @@ msgstr "シーケンスは関連するテーブルと同じスキーマでなけ msgid "cannot change ownership of identity sequence" msgstr "識別シーケンスの所有者は変更できません" -#: commands/sequence.c:1679 commands/tablecmds.c:13870 commands/tablecmds.c:16507 +#: commands/sequence.c:1679 commands/tablecmds.c:13874 commands/tablecmds.c:16511 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "シーケンス\"%s\"はテーブル\"%s\"にリンクされています" @@ -9201,12 +9210,12 @@ msgstr "定形情報定義中の列名が重複しています" msgid "duplicate expression in statistics definition" msgstr "統計情報定義内に重複した式" -#: commands/statscmds.c:620 commands/tablecmds.c:8112 +#: commands/statscmds.c:620 commands/tablecmds.c:8116 #, c-format msgid "statistics target %d is too low" msgstr "統計情報目標%dは小さすぎます" -#: commands/statscmds.c:628 commands/tablecmds.c:8120 +#: commands/statscmds.c:628 commands/tablecmds.c:8124 #, c-format msgid "lowering statistics target to %d" msgstr "統計情報目標を%dに減らします" @@ -9254,7 +9263,7 @@ msgstr[0] "パブリケーション%sは発行サーバーには存在しませ msgid "must be superuser to create subscriptions" msgstr "サブスクリプションを生成するにはスーパーユーザーである必要があります" -#: commands/subscriptioncmds.c:648 commands/subscriptioncmds.c:776 replication/logical/tablesync.c:1229 replication/logical/worker.c:3738 +#: commands/subscriptioncmds.c:648 commands/subscriptioncmds.c:776 replication/logical/tablesync.c:1247 replication/logical/worker.c:3738 #, c-format msgid "could not connect to the publisher: %s" msgstr "発行サーバーへの接続ができませんでした: %s" @@ -9367,7 +9376,7 @@ msgstr "サブスクリプションの所有者はスーパーユーザーでな msgid "could not receive list of replicated tables from the publisher: %s" msgstr "発行テーブルの一覧を発行サーバーから受け取れませんでした: %s" -#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:809 replication/pgoutput/pgoutput.c:1072 +#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:819 replication/pgoutput/pgoutput.c:1072 #, c-format msgid "cannot use different column lists for table \"%s.%s\" in different publications" msgstr "テーブル\"%s.%s\"に対して、異なるパブリケーションで異なる列リストを使用することはできません" @@ -9459,7 +9468,7 @@ msgstr "実体化ビュー\"%s\"は存在しません、スキップします" msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "実体化ビューを削除するにはDROP MATERIALIZED VIEWを使用してください。" -#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19009 parser/parse_utilcmd.c:2261 +#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19023 parser/parse_utilcmd.c:2261 #, c-format msgid "index \"%s\" does not exist" msgstr "インデックス\"%s\"は存在しません" @@ -9482,7 +9491,7 @@ msgstr "\"%s\"は型ではありません" msgid "Use DROP TYPE to remove a type." msgstr "型を削除するにはDROP TYPEを使用してください" -#: commands/tablecmds.c:281 commands/tablecmds.c:13709 commands/tablecmds.c:16210 +#: commands/tablecmds.c:281 commands/tablecmds.c:13713 commands/tablecmds.c:16214 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "外部テーブル\"%s\"は存在しません" @@ -9506,7 +9515,7 @@ msgstr "ON COMMITは一時テーブルでのみ使用できます" msgid "cannot create temporary table within security-restricted operation" msgstr "セキュリティー制限操作中は、一時テーブルを作成できません" -#: commands/tablecmds.c:764 commands/tablecmds.c:15017 +#: commands/tablecmds.c:764 commands/tablecmds.c:15021 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "リレーション\"%s\"が複数回継承されました" @@ -9576,7 +9585,7 @@ msgstr "外部テーブル\"%s\"の切り詰めはできません" msgid "cannot truncate temporary tables of other sessions" msgstr "他のセッションの一時テーブルを削除できません" -#: commands/tablecmds.c:2462 commands/tablecmds.c:14914 +#: commands/tablecmds.c:2462 commands/tablecmds.c:14918 #, c-format msgid "cannot inherit from partitioned table \"%s\"" msgstr "パーティション親テーブル\"%s\"からの継承はできません" @@ -9596,12 +9605,12 @@ msgstr "継承しようとしたリレーション\"%s\"はテーブルまたは msgid "cannot create a temporary relation as partition of permanent relation \"%s\"" msgstr "一時リレーションを永続リレーション\"%s\"のパーティション子テーブルとして作ることはできません" -#: commands/tablecmds.c:2496 commands/tablecmds.c:14893 +#: commands/tablecmds.c:2496 commands/tablecmds.c:14897 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "一時リレーション\"%s\"から継承することはできません" -#: commands/tablecmds.c:2506 commands/tablecmds.c:14901 +#: commands/tablecmds.c:2506 commands/tablecmds.c:14905 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "他のセッションの一時リレーションから継承することはできません" @@ -9646,7 +9655,7 @@ msgstr "列\"%s\"の圧縮方式が競合しています" msgid "inherited column \"%s\" has a generation conflict" msgstr "継承された列 \"%s\"の生成が競合しています" -#: commands/tablecmds.c:2717 commands/tablecmds.c:2772 commands/tablecmds.c:12433 parser/parse_utilcmd.c:1302 parser/parse_utilcmd.c:1345 parser/parse_utilcmd.c:1754 parser/parse_utilcmd.c:1862 +#: commands/tablecmds.c:2717 commands/tablecmds.c:2772 commands/tablecmds.c:12437 parser/parse_utilcmd.c:1302 parser/parse_utilcmd.c:1345 parser/parse_utilcmd.c:1754 parser/parse_utilcmd.c:1862 #, c-format msgid "cannot convert whole-row table reference" msgstr "行全体テーブル参照を変換できません" @@ -9884,12 +9893,12 @@ msgstr "型付けされたテーブルに列を追加できません" msgid "cannot add column to a partition" msgstr "パーティションに列は追加できません" -#: commands/tablecmds.c:6784 commands/tablecmds.c:15144 +#: commands/tablecmds.c:6784 commands/tablecmds.c:15148 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "子テーブル\"%s\"に異なる型の列\"%s\"があります" -#: commands/tablecmds.c:6790 commands/tablecmds.c:15151 +#: commands/tablecmds.c:6790 commands/tablecmds.c:15155 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "子テーブル\"%s\"に異なる照合順序の列\"%s\"があります" @@ -9899,923 +9908,923 @@ msgstr "子テーブル\"%s\"に異なる照合順序の列\"%s\"があります msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "子\"%2$s\"の列\"%1$s\"の定義をマージしています" -#: commands/tablecmds.c:6847 +#: commands/tablecmds.c:6851 #, c-format msgid "cannot recursively add identity column to table that has child tables" msgstr "子テーブルを持つテーブルに識別列を再帰的に追加することはできません" -#: commands/tablecmds.c:7091 +#: commands/tablecmds.c:7095 #, c-format msgid "column must be added to child tables too" msgstr "列は子テーブルでも追加する必要があります" -#: commands/tablecmds.c:7169 +#: commands/tablecmds.c:7173 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでに存在します、スキップします" -#: commands/tablecmds.c:7176 +#: commands/tablecmds.c:7180 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでに存在します" -#: commands/tablecmds.c:7242 commands/tablecmds.c:12072 +#: commands/tablecmds.c:7246 commands/tablecmds.c:12076 #, c-format msgid "cannot remove constraint from only the partitioned table when partitions exist" msgstr "パーティションが存在する場合にはパーティション親テーブルのみから制約を削除することはできません" -#: commands/tablecmds.c:7243 commands/tablecmds.c:7560 commands/tablecmds.c:8557 commands/tablecmds.c:12073 +#: commands/tablecmds.c:7247 commands/tablecmds.c:7564 commands/tablecmds.c:8561 commands/tablecmds.c:12077 #, c-format msgid "Do not specify the ONLY keyword." msgstr "ONLYキーワードを指定しないでください。" -#: commands/tablecmds.c:7280 commands/tablecmds.c:7486 commands/tablecmds.c:7628 commands/tablecmds.c:7742 commands/tablecmds.c:7836 commands/tablecmds.c:7895 commands/tablecmds.c:8014 commands/tablecmds.c:8153 commands/tablecmds.c:8223 commands/tablecmds.c:8379 commands/tablecmds.c:12227 commands/tablecmds.c:13732 commands/tablecmds.c:16301 +#: commands/tablecmds.c:7284 commands/tablecmds.c:7490 commands/tablecmds.c:7632 commands/tablecmds.c:7746 commands/tablecmds.c:7840 commands/tablecmds.c:7899 commands/tablecmds.c:8018 commands/tablecmds.c:8157 commands/tablecmds.c:8227 commands/tablecmds.c:8383 commands/tablecmds.c:12231 commands/tablecmds.c:13736 commands/tablecmds.c:16305 #, c-format msgid "cannot alter system column \"%s\"" msgstr "システム列\"%s\"を変更できません" -#: commands/tablecmds.c:7286 commands/tablecmds.c:7634 +#: commands/tablecmds.c:7290 commands/tablecmds.c:7638 #, c-format msgid "column \"%s\" of relation \"%s\" is an identity column" msgstr "リレーション\"%2$s\"の列\"%1$s\"は識別列です" -#: commands/tablecmds.c:7329 +#: commands/tablecmds.c:7333 #, c-format msgid "column \"%s\" is in a primary key" msgstr "列\"%s\"はプライマリキーで使用しています" -#: commands/tablecmds.c:7334 +#: commands/tablecmds.c:7338 #, c-format msgid "column \"%s\" is in index used as replica identity" msgstr "列\"%s\"は複製識別として使用中のインデックスに含まれています" -#: commands/tablecmds.c:7357 +#: commands/tablecmds.c:7361 #, c-format msgid "column \"%s\" is marked NOT NULL in parent table" msgstr "列\"%s\"は親テーブルでNOT NULL指定されています" -#: commands/tablecmds.c:7557 commands/tablecmds.c:9040 +#: commands/tablecmds.c:7561 commands/tablecmds.c:9044 #, c-format msgid "constraint must be added to child tables too" msgstr "制約は子テーブルにも追加する必要があります" -#: commands/tablecmds.c:7558 +#: commands/tablecmds.c:7562 #, c-format msgid "Column \"%s\" of relation \"%s\" is not already NOT NULL." msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでにNOT NULLLではありません。" -#: commands/tablecmds.c:7636 +#: commands/tablecmds.c:7640 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY instead." msgstr "代わりに ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY を使ってください。" -#: commands/tablecmds.c:7641 +#: commands/tablecmds.c:7645 #, c-format msgid "column \"%s\" of relation \"%s\" is a generated column" msgstr "リレーション\"%2$s\"の列\"%1$s\"は生成カラムです" -#: commands/tablecmds.c:7644 +#: commands/tablecmds.c:7648 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION instead." msgstr "代わりに ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION を使ってください。" -#: commands/tablecmds.c:7753 +#: commands/tablecmds.c:7757 #, 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:7759 +#: commands/tablecmds.c:7763 #, c-format msgid "column \"%s\" of relation \"%s\" is already an identity column" msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでに識別列です" -#: commands/tablecmds.c:7765 +#: commands/tablecmds.c:7769 #, c-format msgid "column \"%s\" of relation \"%s\" already has a default value" msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでにデフォルト値が指定されています" -#: commands/tablecmds.c:7842 commands/tablecmds.c:7903 +#: commands/tablecmds.c:7846 commands/tablecmds.c:7907 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column" msgstr "リレーション\"%2$s\"の列\"%1$s\"は識別列ではありません" -#: commands/tablecmds.c:7908 +#: commands/tablecmds.c:7912 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column, skipping" msgstr "リレーション\"%2$s\"の列\"%1$s\"は識別列ではありません、スキップします" -#: commands/tablecmds.c:7961 +#: commands/tablecmds.c:7965 #, c-format msgid "ALTER TABLE / DROP EXPRESSION must be applied to child tables too" msgstr "ALTER TABLE / DROP EXPRESSIONは子テーブルに対しても適用されなくてはなりません" -#: commands/tablecmds.c:7983 +#: commands/tablecmds.c:7987 #, c-format msgid "cannot drop generation expression from inherited column" msgstr "継承列から生成式を削除することはできません" -#: commands/tablecmds.c:8022 +#: commands/tablecmds.c:8026 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column" msgstr "リレーション\"%2$s\"の列\"%1$s\"は格納生成列ではありません" -#: commands/tablecmds.c:8027 +#: commands/tablecmds.c:8031 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column, skipping" msgstr "リレーション\"%2$s\"の列\"%1$s\"は格納生成列ではありません、スキップします" -#: commands/tablecmds.c:8100 +#: commands/tablecmds.c:8104 #, c-format msgid "cannot refer to non-index column by number" msgstr "非インデックス列を番号で参照することはできません" -#: commands/tablecmds.c:8143 +#: commands/tablecmds.c:8147 #, c-format msgid "column number %d of relation \"%s\" does not exist" msgstr "リレーション \"%2$s\"の列 %1$d は存在しません" -#: commands/tablecmds.c:8162 +#: commands/tablecmds.c:8166 #, c-format msgid "cannot alter statistics on included column \"%s\" of index \"%s\"" msgstr "インデックス\"%2$s\"の包含列\"%1$s\"への統計情報の変更はできません" -#: commands/tablecmds.c:8167 +#: commands/tablecmds.c:8171 #, c-format msgid "cannot alter statistics on non-expression column \"%s\" of index \"%s\"" msgstr "インデックス \"%2$s\"の非式列\"%1$s\"の統計情報の変更はできません" -#: commands/tablecmds.c:8169 +#: commands/tablecmds.c:8173 #, c-format msgid "Alter statistics on table column instead." msgstr "代わりにテーブルカラムの統計情報を変更してください。" -#: commands/tablecmds.c:8359 +#: commands/tablecmds.c:8363 #, c-format msgid "invalid storage type \"%s\"" msgstr "不正な格納タイプ\"%s\"" -#: commands/tablecmds.c:8391 +#: commands/tablecmds.c:8395 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "列のデータ型%sは格納タイプPLAINしか取ることができません" -#: commands/tablecmds.c:8436 +#: commands/tablecmds.c:8440 #, c-format msgid "cannot drop column from typed table" msgstr "型付けされたテーブルから列を削除できません" -#: commands/tablecmds.c:8495 +#: commands/tablecmds.c:8499 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "リレーション\"%2$s\"の列\"%1$s\"は存在しません、スキップします" -#: commands/tablecmds.c:8508 +#: commands/tablecmds.c:8512 #, c-format msgid "cannot drop system column \"%s\"" msgstr "システム列\"%s\"を削除できません" -#: commands/tablecmds.c:8518 +#: commands/tablecmds.c:8522 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "継承される列\"%s\"を削除できません" -#: commands/tablecmds.c:8531 +#: commands/tablecmds.c:8535 #, c-format msgid "cannot drop column \"%s\" because it is part of the partition key of relation \"%s\"" msgstr "列\"%s\"はリレーション\"%s\"のパーティションキーの一部であるため、削除できません" -#: commands/tablecmds.c:8556 +#: commands/tablecmds.c:8560 #, c-format msgid "cannot drop column from only the partitioned table when partitions exist" msgstr "子テーブルが存在する場合にはパーティション親テーブルのみから列を削除することはできません" -#: commands/tablecmds.c:8760 +#: commands/tablecmds.c:8764 #, 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:8785 +#: commands/tablecmds.c:8789 #, 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:9122 +#: commands/tablecmds.c:9126 #, c-format msgid "cannot use ONLY for foreign key on partitioned table \"%s\" referencing relation \"%s\"" msgstr "パーティションテーブル\"%s\"上のリレーション\"%s\"を参照する外部キー定義ではONLY指定はできません " -#: commands/tablecmds.c:9128 +#: commands/tablecmds.c:9132 #, c-format msgid "cannot add NOT VALID foreign key on partitioned table \"%s\" referencing relation \"%s\"" msgstr "パーティションテーブル\"%1$s\"にリレーション\"%2$s\"を参照する NOT VALID 指定の外部キーは追加できません " -#: commands/tablecmds.c:9131 +#: commands/tablecmds.c:9135 #, c-format msgid "This feature is not yet supported on partitioned tables." msgstr "この機能はパーティションテーブルに対してはサポートされていません。" -#: commands/tablecmds.c:9138 commands/tablecmds.c:9604 +#: commands/tablecmds.c:9142 commands/tablecmds.c:9608 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "参照先のリレーション\"%s\"はテーブルではありません" -#: commands/tablecmds.c:9161 +#: commands/tablecmds.c:9165 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "永続テーブルの制約は永続テーブルだけを参照できます" -#: commands/tablecmds.c:9168 +#: commands/tablecmds.c:9172 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" msgstr "UNLOGGEDテーブルに対する制約は、永続テーブルまたはUNLOGGEDテーブルだけを参照する場合があります" -#: commands/tablecmds.c:9174 +#: commands/tablecmds.c:9178 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "一時テーブルに対する制約は一時テーブルだけを参照する場合があります" -#: commands/tablecmds.c:9178 +#: commands/tablecmds.c:9182 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "一時テーブルに対する制約にはこのセッションの一時テーブルを加える必要があります" -#: commands/tablecmds.c:9252 commands/tablecmds.c:9258 +#: commands/tablecmds.c:9256 commands/tablecmds.c:9262 #, c-format msgid "invalid %s action for foreign key constraint containing generated column" msgstr "生成カラムを含む外部キー制約に対する不正な %s 処理" -#: commands/tablecmds.c:9274 +#: commands/tablecmds.c:9278 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "外部キーの参照列数と被参照列数が合いません" -#: commands/tablecmds.c:9381 +#: commands/tablecmds.c:9385 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "外部キー制約\"%sは実装されていません" -#: commands/tablecmds.c:9383 +#: commands/tablecmds.c:9387 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "キーとなる列\"%s\"と\"%s\"との間で型に互換性がありません:%sと%s" -#: commands/tablecmds.c:9540 +#: commands/tablecmds.c:9544 #, c-format msgid "column \"%s\" referenced in ON DELETE SET action must be part of foreign key" msgstr "ON DELETE SETアクションで参照されている列\"%s\"は外部キーの一部である必要があります" -#: commands/tablecmds.c:9813 commands/tablecmds.c:10281 parser/parse_utilcmd.c:796 parser/parse_utilcmd.c:925 +#: commands/tablecmds.c:9817 commands/tablecmds.c:10285 parser/parse_utilcmd.c:796 parser/parse_utilcmd.c:925 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "外部テーブルでは外部キー制約はサポートされていません" -#: commands/tablecmds.c:10833 commands/tablecmds.c:11111 commands/tablecmds.c:12029 commands/tablecmds.c:12104 +#: commands/tablecmds.c:10837 commands/tablecmds.c:11115 commands/tablecmds.c:12033 commands/tablecmds.c:12108 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "リレーション\"%2$s\"の制約\"%1$s\"は存在しません" -#: commands/tablecmds.c:10840 +#: commands/tablecmds.c:10844 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "リレーション\"%2$s\"の制約\"%1$s\"は外部キー制約ではありません" -#: commands/tablecmds.c:10878 +#: commands/tablecmds.c:10882 #, c-format msgid "cannot alter constraint \"%s\" on relation \"%s\"" msgstr "リレーション\"%2$s\"の制約\"%1$s\"を変更できません" -#: commands/tablecmds.c:10881 +#: commands/tablecmds.c:10885 #, c-format msgid "Constraint \"%s\" is derived from constraint \"%s\" of relation \"%s\"." msgstr "制約\"%1$s\"は、リレーション\"%3$s\"上の制約\"%2$s\"から派生しています。" -#: commands/tablecmds.c:10883 +#: commands/tablecmds.c:10887 #, c-format msgid "You may alter the constraint it derives from, instead." msgstr "この制約の代わりに派生元の制約を変更することは可能です。" -#: commands/tablecmds.c:11119 +#: commands/tablecmds.c:11123 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" msgstr "リレーション\"%2$s\"の制約\"%1$s\"は外部キー制約でも検査制約でもありません" -#: commands/tablecmds.c:11197 +#: commands/tablecmds.c:11201 #, c-format msgid "constraint must be validated on child tables too" msgstr "制約は子テーブルでも検証される必要があります" -#: commands/tablecmds.c:11287 +#: commands/tablecmds.c:11291 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "外部キー制約で参照される列\"%s\"が存在しません" -#: commands/tablecmds.c:11293 +#: commands/tablecmds.c:11297 #, c-format msgid "system columns cannot be used in foreign keys" msgstr "システム列は外部キーに使用できません" -#: commands/tablecmds.c:11297 +#: commands/tablecmds.c:11301 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "外部キーでは%dを超えるキーを持つことができません" -#: commands/tablecmds.c:11363 +#: commands/tablecmds.c:11367 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "被参照テーブル\"%s\"には遅延可能プライマリキーは使用できません" -#: commands/tablecmds.c:11380 +#: commands/tablecmds.c:11384 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "被参照テーブル\"%s\"にはプライマリキーがありません" -#: commands/tablecmds.c:11445 +#: commands/tablecmds.c:11449 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "外部キーの被参照列リストには重複があってはなりません" -#: commands/tablecmds.c:11539 +#: commands/tablecmds.c:11543 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "被参照テーブル\"%s\"に対しては、遅延可能な一意性制約は使用できません" -#: commands/tablecmds.c:11544 +#: commands/tablecmds.c:11548 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "被参照テーブル\"%s\"に、指定したキーに一致する一意性制約がありません" -#: commands/tablecmds.c:11985 +#: commands/tablecmds.c:11989 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "リレーション\"%2$s\"の継承された制約\"%1$s\"を削除できません" -#: commands/tablecmds.c:12035 +#: commands/tablecmds.c:12039 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "リレーション\"%2$s\"の制約\"%1$s\"は存在しません、スキップします" -#: commands/tablecmds.c:12211 +#: commands/tablecmds.c:12215 #, c-format msgid "cannot alter column type of typed table" msgstr "型付けされたテーブルの列の型を変更できません" -#: commands/tablecmds.c:12238 +#: commands/tablecmds.c:12242 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "継承される列\"%s\"を変更できません" -#: commands/tablecmds.c:12247 +#: commands/tablecmds.c:12251 #, c-format msgid "cannot alter column \"%s\" because it is part of the partition key of relation \"%s\"" msgstr "列\"%s\"はリレーション\"%s\"のパーティションキーの一部であるため、変更できません" -#: commands/tablecmds.c:12297 +#: commands/tablecmds.c:12301 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" msgstr "列\"%s\"に対するUSING句の結果は自動的に%s型に型変換できません" -#: commands/tablecmds.c:12300 +#: commands/tablecmds.c:12304 #, c-format msgid "You might need to add an explicit cast." msgstr "必要に応じて明示的な型変換を追加してください。" -#: commands/tablecmds.c:12304 +#: commands/tablecmds.c:12308 #, 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:12307 +#: commands/tablecmds.c:12311 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "必要に応じて\"USING %s::%s\"を追加してください。" -#: commands/tablecmds.c:12406 +#: commands/tablecmds.c:12410 #, c-format msgid "cannot alter inherited column \"%s\" of relation \"%s\"" msgstr "リレーション\"%2$s\"の継承列\"%1$s\"は変更できません" -#: commands/tablecmds.c:12434 +#: commands/tablecmds.c:12438 #, c-format msgid "USING expression contains a whole-row table reference." msgstr "USING式が行全体テーブル参照を含んでいます。" -#: commands/tablecmds.c:12445 +#: commands/tablecmds.c:12449 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "継承される列\"%s\"の型を子テーブルで変更しなければなりません" -#: commands/tablecmds.c:12570 +#: commands/tablecmds.c:12574 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "列\"%s\"の型を2回変更することはできません" -#: commands/tablecmds.c:12608 +#: commands/tablecmds.c:12612 #, c-format msgid "generation expression for column \"%s\" cannot be cast automatically to type %s" msgstr "カラム\"%s\"に対する生成式は自動的に%s型にキャストできません" -#: commands/tablecmds.c:12613 +#: commands/tablecmds.c:12617 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "列\"%s\"のデフォルト値を自動的に%s型にキャストできません" -#: commands/tablecmds.c:12694 +#: commands/tablecmds.c:12698 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "ビューまたはルールで使用される列の型は変更できません" -#: commands/tablecmds.c:12695 commands/tablecmds.c:12714 commands/tablecmds.c:12732 +#: commands/tablecmds.c:12699 commands/tablecmds.c:12718 commands/tablecmds.c:12736 #, c-format msgid "%s depends on column \"%s\"" msgstr "%sは列\"%s\"に依存しています" -#: commands/tablecmds.c:12713 +#: commands/tablecmds.c:12717 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "トリガー定義で使用される列の型は変更できません" -#: commands/tablecmds.c:12731 +#: commands/tablecmds.c:12735 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "ポリシ定義で使用されている列の型は変更できません" -#: commands/tablecmds.c:12762 +#: commands/tablecmds.c:12766 #, c-format msgid "cannot alter type of a column used by a generated column" msgstr "生成カラムで使用される列の型は変更できません" -#: commands/tablecmds.c:12763 +#: commands/tablecmds.c:12767 #, c-format msgid "Column \"%s\" is used by generated column \"%s\"." msgstr "カラム\"%s\"は生成カラム\"%s\"で使われています。" -#: commands/tablecmds.c:13840 commands/tablecmds.c:13852 +#: commands/tablecmds.c:13844 commands/tablecmds.c:13856 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "インデックス\"%s\"の所有者を変更できません" -#: commands/tablecmds.c:13842 commands/tablecmds.c:13854 +#: commands/tablecmds.c:13846 commands/tablecmds.c:13858 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "代わりにインデックスのテーブルの所有者を変更してください" -#: commands/tablecmds.c:13868 +#: commands/tablecmds.c:13872 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "シーケンス\"%s\"の所有者を変更できません" -#: commands/tablecmds.c:13882 commands/tablecmds.c:17193 commands/tablecmds.c:17212 +#: commands/tablecmds.c:13886 commands/tablecmds.c:17205 commands/tablecmds.c:17224 #, c-format msgid "Use ALTER TYPE instead." msgstr "代わりにALTER TYPEを使用してください。" -#: commands/tablecmds.c:13891 +#: commands/tablecmds.c:13895 #, c-format msgid "cannot change owner of relation \"%s\"" msgstr "リレーション\"%s\"の所有者を変更できません" -#: commands/tablecmds.c:14253 +#: commands/tablecmds.c:14257 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "SET TABLESPACEサブコマンドを複数指定できません" -#: commands/tablecmds.c:14330 +#: commands/tablecmds.c:14334 #, c-format msgid "cannot set options for relation \"%s\"" msgstr "リレーション\"%s\"のオプションは設定できません" -#: commands/tablecmds.c:14364 commands/view.c:521 +#: commands/tablecmds.c:14368 commands/view.c:521 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "WITH CHECK OPTIONは自動更新可能ビューでのみサポートされます" -#: commands/tablecmds.c:14614 +#: commands/tablecmds.c:14618 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "テーブルスペースにはテーブル、インデックスおよび実体化ビューしかありません" -#: commands/tablecmds.c:14626 +#: commands/tablecmds.c:14630 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "pg_globalテーブルスペースとの間のリレーションの移動はできません" -#: commands/tablecmds.c:14718 +#: commands/tablecmds.c:14722 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "リレーション\"%s.%s\"のロックが獲得できなかったため中断します" -#: commands/tablecmds.c:14734 +#: commands/tablecmds.c:14738 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "テーブルスペース\"%s\"には合致するリレーションはありませんでした" -#: commands/tablecmds.c:14852 +#: commands/tablecmds.c:14856 #, c-format msgid "cannot change inheritance of typed table" msgstr "型付けされたテーブルの継承を変更できません" -#: commands/tablecmds.c:14857 commands/tablecmds.c:15413 +#: commands/tablecmds.c:14861 commands/tablecmds.c:15417 #, c-format msgid "cannot change inheritance of a partition" msgstr "パーティションの継承は変更できません" -#: commands/tablecmds.c:14862 +#: commands/tablecmds.c:14866 #, c-format msgid "cannot change inheritance of partitioned table" msgstr "パーティションテーブルの継承は変更できません" -#: commands/tablecmds.c:14908 +#: commands/tablecmds.c:14912 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "他のセッションの一時テーブルを継承できません" -#: commands/tablecmds.c:14921 +#: commands/tablecmds.c:14925 #, c-format msgid "cannot inherit from a partition" msgstr "パーティションからの継承はできません" -#: commands/tablecmds.c:14943 commands/tablecmds.c:17846 +#: commands/tablecmds.c:14947 commands/tablecmds.c:17860 #, c-format msgid "circular inheritance not allowed" msgstr "循環継承を行うことはできません" -#: commands/tablecmds.c:14944 commands/tablecmds.c:17847 +#: commands/tablecmds.c:14948 commands/tablecmds.c:17861 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\"はすでに\"%s\"の子です" -#: commands/tablecmds.c:14957 +#: commands/tablecmds.c:14961 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming an inheritance child" msgstr "トリガ\"%s\"によってテーブル\"%s\"が継承子テーブルになることができません" -#: commands/tablecmds.c:14959 +#: commands/tablecmds.c:14963 #, c-format msgid "ROW triggers with transition tables are not supported in inheritance hierarchies." msgstr "遷移テーブルを使用したROWトリガは継承関係ではサポートされていません。" -#: commands/tablecmds.c:15162 +#: commands/tablecmds.c:15166 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "子テーブルの列\"%s\"はNOT NULLである必要があります" -#: commands/tablecmds.c:15171 +#: commands/tablecmds.c:15175 #, c-format msgid "column \"%s\" in child table must be a generated column" msgstr "子テーブルの列\"%s\"は生成列である必要があります" -#: commands/tablecmds.c:15221 +#: commands/tablecmds.c:15225 #, c-format msgid "column \"%s\" in child table has a conflicting generation expression" msgstr "子テーブルの列\"%s\"には競合する生成式があります" -#: commands/tablecmds.c:15249 +#: commands/tablecmds.c:15253 #, c-format msgid "child table is missing column \"%s\"" msgstr "子テーブルには列\"%s\"がありません" -#: commands/tablecmds.c:15337 +#: commands/tablecmds.c:15341 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "子テーブル\"%s\"では検査制約\"%s\"に異なった定義がされています" -#: commands/tablecmds.c:15345 +#: commands/tablecmds.c:15349 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" msgstr "制約\"%s\"は子テーブル\"%s\"上の継承されない制約と競合します" -#: commands/tablecmds.c:15356 +#: commands/tablecmds.c:15360 #, c-format msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" msgstr "制約\"%s\"は子テーブル\"%s\"のNOT VALID制約と衝突しています" -#: commands/tablecmds.c:15391 +#: commands/tablecmds.c:15395 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "子テーブルには制約\"%s\"がありません" -#: commands/tablecmds.c:15477 +#: commands/tablecmds.c:15481 #, c-format msgid "partition \"%s\" already pending detach in partitioned table \"%s.%s\"" msgstr "パーティション\"%s\"はすでにパーティションテーブル\"%s.%s\"からの取り外し保留中です" -#: commands/tablecmds.c:15506 commands/tablecmds.c:15554 +#: commands/tablecmds.c:15510 commands/tablecmds.c:15558 #, c-format msgid "relation \"%s\" is not a partition of relation \"%s\"" msgstr "リレーション\"%s\"はリレーション\"%s\"のパーティション子テーブルではありません" -#: commands/tablecmds.c:15560 +#: commands/tablecmds.c:15564 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "リレーション\"%s\"はリレーション\"%s\"の親ではありません" -#: commands/tablecmds.c:15788 +#: commands/tablecmds.c:15792 #, c-format msgid "typed tables cannot inherit" msgstr "型付けされたテーブルは継承できません" -#: commands/tablecmds.c:15818 +#: commands/tablecmds.c:15822 #, c-format msgid "table is missing column \"%s\"" msgstr "テーブルには列\"%s\"がありません" -#: commands/tablecmds.c:15829 +#: commands/tablecmds.c:15833 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "テーブルには列\"%s\"がありますが型は\"%s\"を必要としています" -#: commands/tablecmds.c:15838 +#: commands/tablecmds.c:15842 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "テーブル\"%s\"では列\"%s\"の型が異なっています" -#: commands/tablecmds.c:15852 +#: commands/tablecmds.c:15856 #, c-format msgid "table has extra column \"%s\"" msgstr "テーブルに余分な列\"%s\"があります" -#: commands/tablecmds.c:15904 +#: commands/tablecmds.c:15908 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\"は型付けされたテーブルではありません" -#: commands/tablecmds.c:16078 +#: commands/tablecmds.c:16082 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "非ユニークインデックス\"%s\"は複製識別としては使用できません" -#: commands/tablecmds.c:16084 +#: commands/tablecmds.c:16088 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "一意性を即時検査しないインデックス\"%s\"は複製識別には使用できません" -#: commands/tablecmds.c:16090 +#: commands/tablecmds.c:16094 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "式インデックス\"%s\"は複製識別としては使用できません" -#: commands/tablecmds.c:16096 +#: commands/tablecmds.c:16100 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "部分インデックス\"%s\"を複製識別としては使用できません" -#: commands/tablecmds.c:16113 +#: commands/tablecmds.c:16117 #, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" msgstr "列%2$dはシステム列であるためインデックス\"%1$s\"は複製識別には使えません" -#: commands/tablecmds.c:16120 +#: commands/tablecmds.c:16124 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" msgstr "列\"%2$s\"はnull可であるためインデックス\"%1$s\"は複製識別には使えません" -#: commands/tablecmds.c:16367 +#: commands/tablecmds.c:16371 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "テーブル\"%s\"は一時テーブルであるため、ログ出力設定を変更できません" -#: commands/tablecmds.c:16391 +#: commands/tablecmds.c:16395 #, c-format msgid "cannot change table \"%s\" to unlogged because it is part of a publication" msgstr "テーブル\"%s\"はパブリケーションの一部であるため、UNLOGGEDに変更できません" -#: commands/tablecmds.c:16393 +#: commands/tablecmds.c:16397 #, c-format msgid "Unlogged relations cannot be replicated." msgstr "UNLOGGEDリレーションはレプリケーションできません。" -#: commands/tablecmds.c:16438 +#: commands/tablecmds.c:16442 #, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" msgstr "テーブル\"%s\"はUNLOGGEDテーブル\"%s\"を参照しているためLOGGEDには設定できません" -#: commands/tablecmds.c:16448 +#: commands/tablecmds.c:16452 #, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" msgstr "テーブル\"%s\"はLOGGEDテーブル\"%s\"を参照しているためUNLOGGEDには設定できません" -#: commands/tablecmds.c:16506 +#: commands/tablecmds.c:16510 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "所有するシーケンスを他のスキーマに移動することができません" -#: commands/tablecmds.c:16613 +#: commands/tablecmds.c:16617 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "リレーション\"%s\"はスキーマ\"%s\"内にすでに存在します" -#: commands/tablecmds.c:17026 +#: commands/tablecmds.c:17038 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\"はテーブルや実体化ビューではありません" -#: commands/tablecmds.c:17176 +#: commands/tablecmds.c:17188 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\"は複合型ではありません" -#: commands/tablecmds.c:17204 +#: commands/tablecmds.c:17216 #, c-format msgid "cannot change schema of index \"%s\"" msgstr "インデックス\"%s\"のスキーマを変更できません" -#: commands/tablecmds.c:17206 commands/tablecmds.c:17218 +#: commands/tablecmds.c:17218 commands/tablecmds.c:17230 #, c-format msgid "Change the schema of the table instead." msgstr "代わりにこのテーブルのスキーマを変更してください。" -#: commands/tablecmds.c:17210 +#: commands/tablecmds.c:17222 #, c-format msgid "cannot change schema of composite type \"%s\"" msgstr "複合型%sのスキーマは変更できません" -#: commands/tablecmds.c:17216 +#: commands/tablecmds.c:17228 #, c-format msgid "cannot change schema of TOAST table \"%s\"" msgstr "TOASTテーブル\"%s\"のスキーマは変更できません" -#: commands/tablecmds.c:17253 +#: commands/tablecmds.c:17265 #, c-format msgid "unrecognized partitioning strategy \"%s\"" msgstr "識別できないパーティションストラテジ \"%s\"" -#: commands/tablecmds.c:17261 +#: commands/tablecmds.c:17273 #, c-format msgid "cannot use \"list\" partition strategy with more than one column" msgstr "\"list\"パーティションストラテジは2つ以上の列に対しては使えません" -#: commands/tablecmds.c:17327 +#: commands/tablecmds.c:17339 #, c-format msgid "column \"%s\" named in partition key does not exist" msgstr "パーティションキーに指定されている列\"%s\"は存在しません" -#: commands/tablecmds.c:17335 +#: commands/tablecmds.c:17347 #, c-format msgid "cannot use system column \"%s\" in partition key" msgstr "パーティションキーでシステム列\"%s\"は使用できません" -#: commands/tablecmds.c:17346 commands/tablecmds.c:17460 +#: commands/tablecmds.c:17358 commands/tablecmds.c:17448 #, c-format msgid "cannot use generated column in partition key" msgstr "パーティションキーで生成カラムは使用できません" -#: commands/tablecmds.c:17347 commands/tablecmds.c:17461 commands/trigger.c:668 rewrite/rewriteHandler.c:929 rewrite/rewriteHandler.c:964 +#: commands/tablecmds.c:17359 commands/tablecmds.c:17449 commands/trigger.c:668 rewrite/rewriteHandler.c:929 rewrite/rewriteHandler.c:964 #, c-format msgid "Column \"%s\" is a generated column." msgstr "列\"%s\"は生成カラムです。" -#: commands/tablecmds.c:17423 -#, c-format -msgid "functions in partition key expression must be marked IMMUTABLE" -msgstr "パーティションキー式で使われる関数はIMMUTABLE指定されている必要があります" - -#: commands/tablecmds.c:17443 +#: commands/tablecmds.c:17431 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "パーティションキー式はシステム列への参照を含むことができません" -#: commands/tablecmds.c:17473 +#: commands/tablecmds.c:17478 +#, c-format +msgid "functions in partition key expression must be marked IMMUTABLE" +msgstr "パーティションキー式で使われる関数はIMMUTABLE指定されている必要があります" + +#: commands/tablecmds.c:17487 #, c-format msgid "cannot use constant expression as partition key" msgstr "定数式をパーティションキーとして使うことはできません" -#: commands/tablecmds.c:17494 +#: commands/tablecmds.c:17508 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "パーティション式で使用する照合順序を特定できませんでした" -#: commands/tablecmds.c:17529 +#: commands/tablecmds.c:17543 #, 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:17535 +#: commands/tablecmds.c:17549 #, 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:17786 +#: commands/tablecmds.c:17800 #, c-format msgid "\"%s\" is already a partition" msgstr "\"%s\"はすでパーティションです" -#: commands/tablecmds.c:17792 +#: commands/tablecmds.c:17806 #, c-format msgid "cannot attach a typed table as partition" msgstr "型付けされたテーブルをパーティションにアタッチすることはできません" -#: commands/tablecmds.c:17808 +#: commands/tablecmds.c:17822 #, c-format msgid "cannot attach inheritance child as partition" msgstr "継承子テーブルをパーティションにアタッチすることはできません" -#: commands/tablecmds.c:17822 +#: commands/tablecmds.c:17836 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "継承親テーブルをパーティションにアタッチすることはできません" -#: commands/tablecmds.c:17856 +#: commands/tablecmds.c:17870 #, c-format msgid "cannot attach a temporary relation as partition of permanent relation \"%s\"" msgstr "一時リレーションを永続リレーション \"%s\" のパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17864 +#: commands/tablecmds.c:17878 #, c-format msgid "cannot attach a permanent relation as partition of temporary relation \"%s\"" msgstr "永続リレーションを一時リレーション\"%s\"のパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17872 +#: commands/tablecmds.c:17886 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "他セッションの一時リレーションのパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17879 +#: commands/tablecmds.c:17893 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "他セッションの一時リレーションにパーティション子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:17899 +#: commands/tablecmds.c:17913 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "テーブル\"%1$s\"は親テーブル\"%3$s\"にない列\"%2$s\"を含んでいます" -#: commands/tablecmds.c:17902 +#: commands/tablecmds.c:17916 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "新しいパーティションは親に存在する列のみを含むことができます。" -#: commands/tablecmds.c:17914 +#: commands/tablecmds.c:17928 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "トリガ\"%s\"のため、テーブル\"%s\"はパーティション子テーブルにはなれません" -#: commands/tablecmds.c:17916 +#: commands/tablecmds.c:17930 #, c-format msgid "ROW triggers with transition tables are not supported on partitions." msgstr "遷移テーブルを使用するROWトリガはパーティションではサポートされません。" -#: commands/tablecmds.c:18095 +#: commands/tablecmds.c:18109 #, c-format msgid "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "外部テーブル\"%s\"はパーティションテーブル\"%s\"の子テーブルとしてアタッチすることはできません" -#: commands/tablecmds.c:18098 +#: commands/tablecmds.c:18112 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "パーティション親テーブル\"%s\"はユニークインデックスを持っています。" -#: commands/tablecmds.c:18413 +#: commands/tablecmds.c:18427 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "デフォルトパーティションを持つパーティションは並列的に取り外しはできません" -#: commands/tablecmds.c:18522 +#: commands/tablecmds.c:18536 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "パーティション親テーブル\"%s\"には CREATE INDEX CONCURRENTLY は実行できません" -#: commands/tablecmds.c:18528 +#: commands/tablecmds.c:18542 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "パーティション子テーブル\\\"%s\\\"は同時に削除されました" -#: commands/tablecmds.c:19043 commands/tablecmds.c:19063 commands/tablecmds.c:19083 commands/tablecmds.c:19102 commands/tablecmds.c:19144 +#: commands/tablecmds.c:19057 commands/tablecmds.c:19077 commands/tablecmds.c:19097 commands/tablecmds.c:19116 commands/tablecmds.c:19158 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "インデックス\"%s\"をインデックス\"%s\"の子インデックスとしてアタッチすることはできません" -#: commands/tablecmds.c:19046 +#: commands/tablecmds.c:19060 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "インデックス\"%s\"はすでに別のインデックスにアタッチされています。" -#: commands/tablecmds.c:19066 +#: commands/tablecmds.c:19080 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "インデックス\"%s\"はテーブル\"%s\"のどの子テーブルのインデックスでもありません。" -#: commands/tablecmds.c:19086 +#: commands/tablecmds.c:19100 #, c-format msgid "The index definitions do not match." msgstr "インデックス定義が合致しません。" -#: commands/tablecmds.c:19105 +#: commands/tablecmds.c:19119 #, 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:19147 +#: commands/tablecmds.c:19161 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "子テーブル\"%s\"にはすでに他のインデックスがアタッチされています。" -#: commands/tablecmds.c:19384 +#: commands/tablecmds.c:19398 #, c-format msgid "column data type %s does not support compression" msgstr "列データ型%sは圧縮をサポートしていません" -#: commands/tablecmds.c:19391 +#: commands/tablecmds.c:19405 #, c-format msgid "invalid compression method \"%s\"" msgstr "無効な圧縮方式\"%s\"" @@ -11175,7 +11184,7 @@ msgstr "権限がありません: \"%s\"はシステムトリガです" msgid "trigger function %u returned null value" msgstr "トリガ関数%uはNULL値を返しました" -#: commands/trigger.c:2509 commands/trigger.c:2727 commands/trigger.c:2995 commands/trigger.c:3346 +#: commands/trigger.c:2509 commands/trigger.c:2727 commands/trigger.c:2995 commands/trigger.c:3364 #, c-format msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "BEFORE STATEMENTトリガは値を返すことができません" @@ -11190,37 +11199,37 @@ msgstr "BEFORE FOR EACH ROWトリガの実行では、他のパーティショ msgid "Before executing trigger \"%s\", the row was to be in partition \"%s.%s\"." msgstr "トリガ\"%s\"の実行前には、この行はパーティション\"%s.%s\"に置かれるはずでした。" -#: commands/trigger.c:3423 executor/nodeModifyTable.c:2344 executor/nodeModifyTable.c:2427 +#: commands/trigger.c:3441 executor/nodeModifyTable.c:2350 executor/nodeModifyTable.c:2433 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" msgstr "更新対象のタプルはすでに現在のコマンドによって発行された操作によって変更されています" -#: commands/trigger.c:3424 executor/nodeModifyTable.c:1510 executor/nodeModifyTable.c:1584 executor/nodeModifyTable.c:2345 executor/nodeModifyTable.c:2428 executor/nodeModifyTable.c:3059 +#: commands/trigger.c:3442 executor/nodeModifyTable.c:1514 executor/nodeModifyTable.c:1588 executor/nodeModifyTable.c:2351 executor/nodeModifyTable.c:2434 executor/nodeModifyTable.c:3079 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "他の行への変更を伝搬させるためにBEFOREトリガではなくAFTERトリガの使用を検討してください" -#: commands/trigger.c:3465 executor/nodeLockRows.c:229 executor/nodeLockRows.c:238 executor/nodeModifyTable.c:308 executor/nodeModifyTable.c:1526 executor/nodeModifyTable.c:2362 executor/nodeModifyTable.c:2570 +#: commands/trigger.c:3483 executor/nodeLockRows.c:229 executor/nodeLockRows.c:238 executor/nodeModifyTable.c:308 executor/nodeModifyTable.c:1530 executor/nodeModifyTable.c:2368 executor/nodeModifyTable.c:2576 #, c-format msgid "could not serialize access due to concurrent update" msgstr "更新が同時に行われたためアクセスの直列化ができませんでした" -#: commands/trigger.c:3473 executor/nodeModifyTable.c:1616 executor/nodeModifyTable.c:2445 executor/nodeModifyTable.c:2594 executor/nodeModifyTable.c:2947 +#: commands/trigger.c:3491 executor/nodeModifyTable.c:1620 executor/nodeModifyTable.c:2451 executor/nodeModifyTable.c:2600 executor/nodeModifyTable.c:2967 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "削除が同時に行われたためアクセスの直列化ができませんでした" -#: commands/trigger.c:4680 +#: commands/trigger.c:4698 #, c-format msgid "cannot fire deferred trigger within security-restricted operation" msgstr "セキュリティー制限操作中は、遅延トリガーは発火させられません" -#: commands/trigger.c:5863 +#: commands/trigger.c:5881 #, c-format msgid "constraint \"%s\" is not deferrable" msgstr "制約\"%s\"は遅延可能ではありません" -#: commands/trigger.c:5886 +#: commands/trigger.c:5904 #, c-format msgid "constraint \"%s\" does not exist" msgstr "制約\"%s\"は存在しません" @@ -12026,7 +12035,7 @@ msgid "launched %d parallel vacuum worker for index cleanup (planned: %d)" msgid_plural "launched %d parallel vacuum workers for index cleanup (planned: %d)" msgstr[0] "インデックスのクリーンアップのために%d個の並列VACUUMワーカーを起動しました (計画値: %d)" -#: commands/variable.c:165 utils/misc/guc.c:12100 utils/misc/guc.c:12178 +#: commands/variable.c:165 utils/misc/guc.c:12115 utils/misc/guc.c:12193 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "不明なキーワードです: \"%s\"" @@ -12246,7 +12255,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:826 +#: executor/execExpr.c:1098 parser/parse_agg.c:837 #, c-format msgid "window function calls cannot be nested" msgstr "ウィンドウ関数の呼び出しを入れ子にすることはできません" @@ -12317,7 +12326,7 @@ msgstr "互換性がない配列をマージできません" msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "要素型%sの配列を要素型%sのARRAY式に含められません" -#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:263 utils/adt/arrayfuncs.c:563 utils/adt/arrayfuncs.c:1305 utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5370 utils/adt/arrayfuncs.c:5887 utils/adt/arraysubs.c:150 utils/adt/arraysubs.c:488 +#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:264 utils/adt/arrayfuncs.c:564 utils/adt/arrayfuncs.c:1306 utils/adt/arrayfuncs.c:3422 utils/adt/arrayfuncs.c:5419 utils/adt/arrayfuncs.c:5936 utils/adt/arraysubs.c:150 utils/adt/arraysubs.c:488 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "配列の次数(%d)が上限(%d)を超えています" @@ -12327,7 +12336,8 @@ msgstr "配列の次数(%d)が上限(%d)を超えています" msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "多次元配列の配列式の次数があっていなければなりません" -#: executor/execExprInterp.c:2811 utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:936 utils/adt/arrayfuncs.c:1544 utils/adt/arrayfuncs.c:3261 utils/adt/arrayfuncs.c:3403 utils/adt/arrayfuncs.c:5979 utils/adt/arrayfuncs.c:6320 utils/adt/arrayutils.c:94 utils/adt/arrayutils.c:103 utils/adt/arrayutils.c:110 +#: executor/execExprInterp.c:2811 utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:937 utils/adt/arrayfuncs.c:1545 utils/adt/arrayfuncs.c:2353 utils/adt/arrayfuncs.c:2368 utils/adt/arrayfuncs.c:2630 utils/adt/arrayfuncs.c:2646 utils/adt/arrayfuncs.c:2954 utils/adt/arrayfuncs.c:2969 utils/adt/arrayfuncs.c:3310 utils/adt/arrayfuncs.c:3452 utils/adt/arrayfuncs.c:6028 utils/adt/arrayfuncs.c:6369 utils/adt/arrayutils.c:88 utils/adt/arrayutils.c:97 +#: utils/adt/arrayutils.c:104 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "配列の次数が上限(%d)を超えています" @@ -12583,7 +12593,7 @@ msgstr "同時更新がありました、リトライします" msgid "concurrent delete, retrying" msgstr "並行する削除がありました、リトライします" -#: executor/execReplication.c:276 parser/parse_cte.c:308 parser/parse_oper.c:233 utils/adt/array_userfuncs.c:724 utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3653 utils/adt/arrayfuncs.c:4208 utils/adt/arrayfuncs.c:6200 utils/adt/rowtypes.c:1203 +#: executor/execReplication.c:276 parser/parse_cte.c:308 parser/parse_oper.c:233 utils/adt/array_userfuncs.c:724 utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3702 utils/adt/arrayfuncs.c:4257 utils/adt/arrayfuncs.c:6249 utils/adt/rowtypes.c:1203 #, c-format msgid "could not identify an equality operator for type %s" msgstr "型%sの等価演算子を識別できませんでした" @@ -12771,7 +12781,7 @@ msgstr "戻り値型%sはSQL関数でサポートされていません" msgid "aggregate %u needs to have compatible input type and transition type" msgstr "集約%uは入力データ型と遷移用の型間で互換性が必要です" -#: executor/nodeAgg.c:3952 parser/parse_agg.c:668 parser/parse_agg.c:696 +#: executor/nodeAgg.c:3952 parser/parse_agg.c:679 parser/parse_agg.c:707 #, c-format msgid "aggregate function calls cannot be nested" msgstr "集約関数の呼び出しを入れ子にすることはできません" @@ -12821,58 +12831,58 @@ msgstr "FULL JOINはマージ結合可能な結合条件でのみサポートさ msgid "Query has too few columns." msgstr "問い合わせの列が少なすぎます。" -#: executor/nodeModifyTable.c:1509 executor/nodeModifyTable.c:1583 +#: executor/nodeModifyTable.c:1513 executor/nodeModifyTable.c:1587 #, c-format msgid "tuple to be deleted was already modified by an operation triggered by the current command" msgstr "削除対象のタプルはすでに現在のコマンドによって引き起こされた操作によって変更されています" -#: executor/nodeModifyTable.c:1737 +#: executor/nodeModifyTable.c:1742 #, c-format msgid "invalid ON UPDATE specification" msgstr "不正な ON UPDATE 指定です" -#: executor/nodeModifyTable.c:1738 +#: executor/nodeModifyTable.c:1743 #, c-format msgid "The result tuple would appear in a different partition than the original tuple." msgstr "結果タプルをもとのパーティションではなく異なるパーティションに追加しようとしました。" -#: executor/nodeModifyTable.c:2198 +#: executor/nodeModifyTable.c:2204 #, c-format msgid "cannot move tuple across partitions when a non-root ancestor of the source partition is directly referenced in a foreign key" msgstr "ソースパーティションのルート以外の上位パーティションが外部キーで直接参照されている場合はパーティション間でタプルを移動させることができません" -#: executor/nodeModifyTable.c:2199 +#: executor/nodeModifyTable.c:2205 #, c-format msgid "A foreign key points to ancestor \"%s\" but not the root ancestor \"%s\"." msgstr "外部キーがパーティションルートテーブル\"%2$s\"ではなくパーティション親テーブル\"%1$s\"を指しています。" -#: executor/nodeModifyTable.c:2202 +#: executor/nodeModifyTable.c:2208 #, c-format msgid "Consider defining the foreign key on table \"%s\"." msgstr "テーブル\"%s\"上に外部キー制約を定義することを検討してください。" #. translator: %s is a SQL command name -#: executor/nodeModifyTable.c:2548 executor/nodeModifyTable.c:2936 +#: executor/nodeModifyTable.c:2554 executor/nodeModifyTable.c:2956 #, c-format msgid "%s command cannot affect row a second time" msgstr "%sコマンドは単一の行に2度は適用できません" -#: executor/nodeModifyTable.c:2550 +#: executor/nodeModifyTable.c:2556 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." msgstr "同じコマンドでの挿入候補の行が同じ制約値を持つことがないようにしてください" -#: executor/nodeModifyTable.c:2938 +#: executor/nodeModifyTable.c:2958 #, c-format msgid "Ensure that not more than one source row matches any one target row." msgstr "ソース行が2行以上ターゲット行に合致しないようにしてください。" -#: executor/nodeModifyTable.c:3019 +#: executor/nodeModifyTable.c:3039 #, c-format msgid "tuple to be deleted was already moved to another partition due to concurrent update" msgstr "削除対象のタプルは同時に行われた更新によってすでに他の子テーブルに移動されています" -#: executor/nodeModifyTable.c:3058 +#: executor/nodeModifyTable.c:3078 #, c-format msgid "tuple to be updated or deleted was already modified by an operation triggered by the current command" msgstr "更新または削除対象のタプルは、現在のコマンドによって発火した操作トリガーによってすでに更新されています" @@ -13450,7 +13460,7 @@ msgstr "不正なスキーマ名" msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %d" msgstr "ファイル\"%2$s\"行%3$dで認識できない設定パラメータ\"%1$s\"" -#: guc-file.l:354 utils/misc/guc.c:7688 utils/misc/guc.c:7908 utils/misc/guc.c:8006 utils/misc/guc.c:8104 utils/misc/guc.c:8228 utils/misc/guc.c:8331 +#: guc-file.l:354 utils/misc/guc.c:7691 utils/misc/guc.c:7915 utils/misc/guc.c:8013 utils/misc/guc.c:8111 utils/misc/guc.c:8235 utils/misc/guc.c:8338 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "パラメータ\"%s\"を変更するにはサーバーの再起動が必要です" @@ -13893,388 +13903,388 @@ msgstr "パスワードパケットのサイズが不正です" msgid "empty password returned by client" msgstr "クライアントから空のパスワードが返されました" -#: libpq/auth.c:880 libpq/hba.c:1335 +#: libpq/auth.c:878 libpq/hba.c:1335 #, c-format msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "\"db_user_namespace\"が有効の場合、MD5 認証はサポートされません" -#: libpq/auth.c:886 +#: libpq/auth.c:884 #, c-format msgid "could not generate random MD5 salt" msgstr "ランダムなMD5ソルトの生成に失敗しました" -#: libpq/auth.c:935 libpq/be-secure-gssapi.c:535 +#: libpq/auth.c:933 libpq/be-secure-gssapi.c:535 #, c-format msgid "could not set environment: %m" msgstr "環境を設定できません: %m" -#: libpq/auth.c:971 +#: libpq/auth.c:969 #, c-format msgid "expected GSS response, got message type %d" msgstr "GSS応答を想定しましたが、メッセージタイプ %d を受け取りました" -#: libpq/auth.c:1031 +#: libpq/auth.c:1029 msgid "accepting GSS security context failed" msgstr "GSSセキュリティコンテキストの受け付けに失敗しました" -#: libpq/auth.c:1072 +#: libpq/auth.c:1070 msgid "retrieving GSS user name failed" msgstr "GSSユーザー名の受信に失敗しました" -#: libpq/auth.c:1221 +#: libpq/auth.c:1219 msgid "could not acquire SSPI credentials" msgstr "SSPIの資格ハンドルを入手できませんでした" -#: libpq/auth.c:1246 +#: libpq/auth.c:1244 #, c-format msgid "expected SSPI response, got message type %d" msgstr "SSPI応答を想定しましたが、メッセージタイプ%dを受け取りました" -#: libpq/auth.c:1324 +#: libpq/auth.c:1322 msgid "could not accept SSPI security context" msgstr "SSPIセキュリティコンテキストを受け付けられませんでした" -#: libpq/auth.c:1386 +#: libpq/auth.c:1384 msgid "could not get token from SSPI security context" msgstr "SSPIセキュリティコンテキストからトークンを入手できませんでした" -#: libpq/auth.c:1525 libpq/auth.c:1544 +#: libpq/auth.c:1523 libpq/auth.c:1542 #, c-format msgid "could not translate name" msgstr "名前の変換ができませんでした" -#: libpq/auth.c:1557 +#: libpq/auth.c:1555 #, c-format msgid "realm name too long" msgstr "realm名が長すぎます" -#: libpq/auth.c:1572 +#: libpq/auth.c:1570 #, c-format msgid "translated account name too long" msgstr "変換後のアカウント名が長すぎます" -#: libpq/auth.c:1753 +#: libpq/auth.c:1751 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "Ident接続用のソケットを作成できませんでした: %m" -#: libpq/auth.c:1768 +#: libpq/auth.c:1766 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "ローカルアドレス\"%s\"にバインドできませんでした: %m" -#: libpq/auth.c:1780 +#: libpq/auth.c:1778 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "アドレス\"%s\"、ポート%sのIdentサーバーに接続できませんでした: %m" -#: libpq/auth.c:1802 +#: libpq/auth.c:1800 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "アドレス\"%s\"、ポート%sのIdentサーバーに問い合わせを送信できませんでした: %m" -#: libpq/auth.c:1819 +#: libpq/auth.c:1817 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "アドレス\"%s\"、ポート%sのIdentサーバーからの応答を受信できませんでした: %m" -#: libpq/auth.c:1829 +#: libpq/auth.c:1827 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "Identサーバーからの応答の書式が不正です: \"%s\"" -#: libpq/auth.c:1882 +#: libpq/auth.c:1880 #, c-format msgid "peer authentication is not supported on this platform" msgstr "このプラットフォームでは対向(peer)認証はサポートされていません" -#: libpq/auth.c:1886 +#: libpq/auth.c:1884 #, c-format msgid "could not get peer credentials: %m" msgstr "ピアの資格証明を入手できませんでした: %m" -#: libpq/auth.c:1898 +#: libpq/auth.c:1896 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "ローカルユーザーID %ldの参照に失敗しました: %s" -#: libpq/auth.c:1999 +#: libpq/auth.c:1997 #, c-format msgid "error from underlying PAM layer: %s" msgstr "背後のPAM層でエラーがありました: %s" -#: libpq/auth.c:2010 +#: libpq/auth.c:2008 #, c-format msgid "unsupported PAM conversation %d/\"%s\"" msgstr "非サポートのPAM変換%d/\"%s\"" -#: libpq/auth.c:2070 +#: libpq/auth.c:2068 #, c-format msgid "could not create PAM authenticator: %s" msgstr "PAM authenticatorを作成できませんでした: %s" -#: libpq/auth.c:2081 +#: libpq/auth.c:2079 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "pam_set_item(PAM_USER)が失敗しました: %s" -#: libpq/auth.c:2113 +#: libpq/auth.c:2111 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "pam_set_item(PAM_RHOST)が失敗しました: %s" -#: libpq/auth.c:2125 +#: libpq/auth.c:2123 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "\"pam_set_item(PAM_CONV)が失敗しました: %s" -#: libpq/auth.c:2138 +#: libpq/auth.c:2136 #, c-format msgid "pam_authenticate failed: %s" msgstr "\"pam_authenticateが失敗しました: %s" -#: libpq/auth.c:2151 +#: libpq/auth.c:2149 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmtが失敗しました: %s" -#: libpq/auth.c:2162 +#: libpq/auth.c:2160 #, c-format msgid "could not release PAM authenticator: %s" msgstr "PAM authenticatorを解放できませんでした: %s" -#: libpq/auth.c:2242 +#: libpq/auth.c:2240 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "LDAPを初期化できませんでした: %d" -#: libpq/auth.c:2279 +#: libpq/auth.c:2277 #, c-format msgid "could not extract domain name from ldapbasedn" msgstr "ldapbasedn からドメイン名を抽出できませんでした" -#: libpq/auth.c:2287 +#: libpq/auth.c:2285 #, c-format msgid "LDAP authentication could not find DNS SRV records for \"%s\"" msgstr "LDAP認証で\"%s\"に対する DNS SRV レコードが見つかりませんでした" -#: libpq/auth.c:2289 +#: libpq/auth.c:2287 #, c-format msgid "Set an LDAP server name explicitly." msgstr "LDAPサーバー名を明示的に指定してください。" -#: libpq/auth.c:2341 +#: libpq/auth.c:2339 #, c-format msgid "could not initialize LDAP: %s" msgstr "LDAPを初期化できませんでした: %s" -#: libpq/auth.c:2351 +#: libpq/auth.c:2349 #, c-format msgid "ldaps not supported with this LDAP library" msgstr "この LDAP ライブラリでは ldaps はサポートされていません" -#: libpq/auth.c:2359 +#: libpq/auth.c:2357 #, c-format msgid "could not initialize LDAP: %m" msgstr "LDAPを初期化できませんでした: %m" -#: libpq/auth.c:2369 +#: libpq/auth.c:2367 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "LDAPプロトコルバージョンを設定できませんでした: %s" -#: libpq/auth.c:2409 +#: libpq/auth.c:2407 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "wldap32.dllの_ldap_start_tls_sA関数を読み込みできませんでした" -#: libpq/auth.c:2410 +#: libpq/auth.c:2408 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "このプラットフォームではLDAP over SSLをサポートしていません。" -#: libpq/auth.c:2426 +#: libpq/auth.c:2424 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "LDAP TLSセッションを開始できませんでした: %s" -#: libpq/auth.c:2497 +#: libpq/auth.c:2495 #, c-format msgid "LDAP server not specified, and no ldapbasedn" msgstr "LDAP サーバーも ldapbasedn も指定されていません" -#: libpq/auth.c:2504 +#: libpq/auth.c:2502 #, c-format msgid "LDAP server not specified" msgstr "LDAP サーバーの指定がありません" -#: libpq/auth.c:2566 +#: libpq/auth.c:2564 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "LDAP 認証でユーザー名の中に不正な文字があります" -#: libpq/auth.c:2583 +#: libpq/auth.c:2581 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "サーバー\"%2$s\"で、ldapbinddn \"%1$s\"によるLDAPバインドを実行できませんでした: %3$s" -#: libpq/auth.c:2612 +#: libpq/auth.c:2610 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "サーバー\"%2$s\"で、フィルタ\"%1$s\"によるLDAP検索ができませんでした: %3$s" -#: libpq/auth.c:2626 +#: libpq/auth.c:2624 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "LDAPサーバー\"%s\"は存在しません" -#: libpq/auth.c:2627 +#: libpq/auth.c:2625 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "サーバー\"%2$s\"で、フィルタ\"%1$s\"によるLDAP検索が何も返しませんでした。" -#: libpq/auth.c:2631 +#: libpq/auth.c:2629 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "LDAPユーザー\"%s\"は一意ではありません" -#: libpq/auth.c:2632 +#: libpq/auth.c:2630 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." msgstr[0] "サーバー\"%2$s\"で、フィルタ\"%1$s\"によるLDAP検索が%3$d項目返しました。" -#: libpq/auth.c:2652 +#: libpq/auth.c:2650 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "サーバー\"%2$s\"で\"%1$s\"にマッチする最初のエントリの dn を取得できません: %3$s" -#: libpq/auth.c:2673 +#: libpq/auth.c:2671 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\"" msgstr "サーバー\"%2$s\"でユーザー\"%1$s\"の検索後、unbindできませんでした" -#: libpq/auth.c:2704 +#: libpq/auth.c:2702 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "サーバー\"%2$s\"でユーザー\"%1$s\"のLDAPログインが失敗しました: %3$s" -#: libpq/auth.c:2736 +#: libpq/auth.c:2734 #, c-format msgid "LDAP diagnostics: %s" msgstr "LDAP診断: %s" -#: libpq/auth.c:2774 +#: libpq/auth.c:2772 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "ユーザー \"%s\" の証明書認証に失敗しました: クライアント証明書にユーザー名が含まれていません" -#: libpq/auth.c:2795 +#: libpq/auth.c:2793 #, c-format msgid "certificate authentication failed for user \"%s\": unable to retrieve subject DN" msgstr "ユーザー\"%s\"の証明書認証に失敗しました: サブジェクト識別名(DN)が取得できません" -#: libpq/auth.c:2818 +#: libpq/auth.c:2816 #, c-format msgid "certificate validation (clientcert=verify-full) failed for user \"%s\": DN mismatch" msgstr "ユーザー\"%s\"に対する証明書の検証(clientcert=verify-full) に失敗しました: DN 不一致" -#: libpq/auth.c:2823 +#: libpq/auth.c:2821 #, c-format msgid "certificate validation (clientcert=verify-full) failed for user \"%s\": CN mismatch" msgstr "ユーザー\"%s\"に対する証明書の検証(clientcert=verify-full) に失敗しました: CN 不一致" -#: libpq/auth.c:2925 +#: libpq/auth.c:2923 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS サーバーが指定されていません" -#: libpq/auth.c:2932 +#: libpq/auth.c:2930 #, c-format msgid "RADIUS secret not specified" msgstr "RADIUS secret が指定されていません" -#: libpq/auth.c:2946 +#: libpq/auth.c:2944 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "RADIUS認証では%d文字より長いパスワードはサポートしていません" -#: libpq/auth.c:3053 libpq/hba.c:1976 +#: libpq/auth.c:3051 libpq/hba.c:1976 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "RADIUS サーバー名\"%s\"をアドレスに変換できませんでした: %s" -#: libpq/auth.c:3067 +#: libpq/auth.c:3065 #, c-format msgid "could not generate random encryption vector" msgstr "ランダムな暗号化ベクトルを生成できませんでした" -#: libpq/auth.c:3104 +#: libpq/auth.c:3102 #, c-format msgid "could not perform MD5 encryption of password: %s" msgstr "パスワードのMD5暗号化に失敗しました: %s" -#: libpq/auth.c:3131 +#: libpq/auth.c:3129 #, c-format msgid "could not create RADIUS socket: %m" msgstr "RADIUSのソケットを作成できませんでした: %m" -#: libpq/auth.c:3153 +#: libpq/auth.c:3151 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "ローカルの RADIUS ソケットをバインドできませんでした: %m" -#: libpq/auth.c:3163 +#: libpq/auth.c:3161 #, c-format msgid "could not send RADIUS packet: %m" msgstr "RADIUS パケットを送信できませんでした: %m" -#: libpq/auth.c:3197 libpq/auth.c:3223 +#: libpq/auth.c:3195 libpq/auth.c:3221 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "%sからのRADIUSの応答待ちがタイムアウトしました" -#: libpq/auth.c:3216 +#: libpq/auth.c:3214 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "RADIUSソケットの状態をチェックできませんでした: %m" -#: libpq/auth.c:3246 +#: libpq/auth.c:3244 #, c-format msgid "could not read RADIUS response: %m" msgstr "RADIUS応答を読めませんでした: %m" -#: libpq/auth.c:3259 libpq/auth.c:3263 +#: libpq/auth.c:3257 libpq/auth.c:3261 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "%sからのRADIUS応答が誤ったポートから送られてきました: %d" -#: libpq/auth.c:3272 +#: libpq/auth.c:3270 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "%sからのRADIUS応答が短すぎます: %d" -#: libpq/auth.c:3279 +#: libpq/auth.c:3277 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "%sからのRADIUS応答が間違った長さを保持しています: %d(実際の長さは%d)" -#: libpq/auth.c:3287 +#: libpq/auth.c:3285 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "%sからのRADIUS応答は異なるリクエストに対するものです: %d (%d であるはず)" -#: libpq/auth.c:3312 +#: libpq/auth.c:3310 #, c-format msgid "could not perform MD5 encryption of received packet: %s" msgstr "受信パケットのMD5暗号化に失敗しました: %s" -#: libpq/auth.c:3322 +#: libpq/auth.c:3320 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "%sからのRADIUS応答が間違ったMD5シグネチャを保持しています" -#: libpq/auth.c:3340 +#: libpq/auth.c:3338 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "%1$sからのRADIUS応答がユーザー\"%3$s\"にとって不正なコード(%2$d)を保持しています" @@ -14374,16 +14384,16 @@ 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) かそれよりも低いパーミッション、root所有の場合は u=rw,g=r (0640) かそれよりも低いパーミッションである必要があります" -#: libpq/be-secure-gssapi.c:204 +#: libpq/be-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "GSSAPI名ラップエラー" -#: libpq/be-secure-gssapi.c:211 +#: libpq/be-secure-gssapi.c:208 #, c-format msgid "outgoing GSSAPI message would not use confidentiality" msgstr "送出されるGSSAPIメッセージに機密性が適用されません" -#: libpq/be-secure-gssapi.c:218 libpq/be-secure-gssapi.c:622 +#: libpq/be-secure-gssapi.c:215 libpq/be-secure-gssapi.c:622 #, c-format msgid "server tried to send oversize GSSAPI packet (%zu > %zu)" msgstr "サーバーは過大なサイズのGSSAPIパケットを送信しようとしました: (%zu > %zu)" @@ -14506,111 +14516,111 @@ msgstr "SSL接続を初期化できませんでした: %s" msgid "could not set SSL socket: %s" msgstr "SSLソケットを設定できませんでした: %s" -#: libpq/be-secure-openssl.c:499 +#: libpq/be-secure-openssl.c:500 #, c-format msgid "could not accept SSL connection: %m" msgstr "SSL接続を受け付けられませんでした: %m" -#: libpq/be-secure-openssl.c:503 libpq/be-secure-openssl.c:556 +#: libpq/be-secure-openssl.c:504 libpq/be-secure-openssl.c:557 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "SSL接続を受け付けられませんでした: EOFを検出しました" -#: libpq/be-secure-openssl.c:542 +#: libpq/be-secure-openssl.c:543 #, c-format msgid "could not accept SSL connection: %s" msgstr "SSL接続を受け付けられませんでした: %s" -#: libpq/be-secure-openssl.c:545 +#: libpq/be-secure-openssl.c:546 #, c-format msgid "This may indicate that the client does not support any SSL protocol version between %s and %s." msgstr "このことは、クライアントがSSLプロトコルのバージョン%sから%sのいずれもサポートしていないことを示唆しているかもしれません。" -#: libpq/be-secure-openssl.c:561 libpq/be-secure-openssl.c:741 libpq/be-secure-openssl.c:805 +#: libpq/be-secure-openssl.c:562 libpq/be-secure-openssl.c:751 libpq/be-secure-openssl.c:821 #, c-format msgid "unrecognized SSL error code: %d" msgstr "認識できないSSLエラーコード: %d" -#: libpq/be-secure-openssl.c:607 +#: libpq/be-secure-openssl.c:608 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "SSL 証明書のコモンネームに null が含まれています" -#: libpq/be-secure-openssl.c:647 +#: libpq/be-secure-openssl.c:654 #, c-format msgid "SSL certificate's distinguished name contains embedded null" msgstr "SSL証明書の識別名の途中にnullが含まれています" -#: libpq/be-secure-openssl.c:730 libpq/be-secure-openssl.c:789 +#: libpq/be-secure-openssl.c:740 libpq/be-secure-openssl.c:805 #, c-format msgid "SSL error: %s" msgstr "SSLエラー: %s" -#: libpq/be-secure-openssl.c:971 +#: libpq/be-secure-openssl.c:982 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "DHパラメータファイル\"%s\"をオープンできませんでした: %m" -#: libpq/be-secure-openssl.c:983 +#: libpq/be-secure-openssl.c:994 #, c-format msgid "could not load DH parameters file: %s" msgstr "DHパラメータをロードできませんでした: %s" -#: libpq/be-secure-openssl.c:993 +#: libpq/be-secure-openssl.c:1004 #, c-format msgid "invalid DH parameters: %s" msgstr "不正なDHパラメータです: %s" -#: libpq/be-secure-openssl.c:1002 +#: libpq/be-secure-openssl.c:1013 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "不正なDHパラメータ: pは素数ではありません" -#: libpq/be-secure-openssl.c:1011 +#: libpq/be-secure-openssl.c:1022 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "不正なDHパラメータ: 適切な生成器も安全な素数もありません" -#: libpq/be-secure-openssl.c:1172 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "DH: could not load DH parameters" msgstr "DH: DHパラメータをロードできませんでした" -#: libpq/be-secure-openssl.c:1180 +#: libpq/be-secure-openssl.c:1191 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH: DHパラメータを設定できませんでした: %s" -#: libpq/be-secure-openssl.c:1207 +#: libpq/be-secure-openssl.c:1218 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: 認識できない曲線名: %s" -#: libpq/be-secure-openssl.c:1216 +#: libpq/be-secure-openssl.c:1227 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: キーを生成できませんでした" -#: libpq/be-secure-openssl.c:1244 +#: libpq/be-secure-openssl.c:1255 msgid "no SSL error reported" msgstr "SSLエラーはありませんでした" -#: libpq/be-secure-openssl.c:1248 +#: libpq/be-secure-openssl.c:1259 #, c-format msgid "SSL error code %lu" msgstr "SSLエラーコード: %lu" -#: libpq/be-secure-openssl.c:1407 +#: libpq/be-secure-openssl.c:1418 #, c-format msgid "could not create BIO" msgstr "BIOを作成できませんでした" -#: libpq/be-secure-openssl.c:1417 +#: libpq/be-secure-openssl.c:1428 #, c-format msgid "could not get NID for ASN1_OBJECT object" msgstr "ASN1_OBJECTオブジェクトのNIDを取得できませんでした" -#: libpq/be-secure-openssl.c:1425 +#: libpq/be-secure-openssl.c:1436 #, c-format msgid "could not convert NID %d to an ASN1_OBJECT structure" msgstr "NID %dをASN1_OBJECT構造体へ変換できませんでした" @@ -15118,7 +15128,7 @@ msgstr "ファイル\"%s\"の権限を設定できませんでした: %m" msgid "could not accept new connection: %m" msgstr "新しい接続を受け付けることができませんでした: %m" -#: libpq/pqcomm.c:766 libpq/pqcomm.c:775 libpq/pqcomm.c:807 libpq/pqcomm.c:817 libpq/pqcomm.c:1642 libpq/pqcomm.c:1687 libpq/pqcomm.c:1727 libpq/pqcomm.c:1771 libpq/pqcomm.c:1810 libpq/pqcomm.c:1849 libpq/pqcomm.c:1885 libpq/pqcomm.c:1924 +#: libpq/pqcomm.c:766 libpq/pqcomm.c:775 libpq/pqcomm.c:807 libpq/pqcomm.c:817 libpq/pqcomm.c:1652 libpq/pqcomm.c:1697 libpq/pqcomm.c:1737 libpq/pqcomm.c:1781 libpq/pqcomm.c:1820 libpq/pqcomm.c:1859 libpq/pqcomm.c:1895 libpq/pqcomm.c:1934 #, c-format msgid "%s(%s) failed: %m" msgstr "%s(%s)が失敗しました: %m" @@ -15128,47 +15138,47 @@ msgstr "%s(%s)が失敗しました: %m" msgid "there is no client connection" msgstr "クライアント接続がありません" -#: libpq/pqcomm.c:972 libpq/pqcomm.c:1068 +#: libpq/pqcomm.c:977 libpq/pqcomm.c:1078 #, c-format msgid "could not receive data from client: %m" msgstr "クライアントからデータを受信できませんでした: %m" -#: libpq/pqcomm.c:1173 tcop/postgres.c:4373 +#: libpq/pqcomm.c:1183 tcop/postgres.c:4373 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "プロトコルの同期が失われたためコネクションを終了します" -#: libpq/pqcomm.c:1239 +#: libpq/pqcomm.c:1249 #, c-format msgid "unexpected EOF within message length word" msgstr "メッセージ長ワード内のEOFは想定外です" -#: libpq/pqcomm.c:1249 +#: libpq/pqcomm.c:1259 #, c-format msgid "invalid message length" msgstr "メッセージ長が不正です" -#: libpq/pqcomm.c:1271 libpq/pqcomm.c:1284 +#: libpq/pqcomm.c:1281 libpq/pqcomm.c:1294 #, c-format msgid "incomplete message from client" msgstr "クライアントからのメッセージが不完全です" -#: libpq/pqcomm.c:1395 +#: libpq/pqcomm.c:1405 #, c-format msgid "could not send data to client: %m" msgstr "クライアントにデータを送信できませんでした: %m" -#: libpq/pqcomm.c:1610 +#: libpq/pqcomm.c:1620 #, c-format msgid "%s(%s) failed: error code %d" msgstr "%s(%s)が失敗しました: エラーコード %d" -#: libpq/pqcomm.c:1699 +#: libpq/pqcomm.c:1709 #, c-format msgid "setting the keepalive idle time is not supported" msgstr "キープアライブのアイドル時間の設定はサポートされていません" -#: libpq/pqcomm.c:1783 libpq/pqcomm.c:1858 libpq/pqcomm.c:1933 +#: libpq/pqcomm.c:1793 libpq/pqcomm.c:1868 libpq/pqcomm.c:1943 #, c-format msgid "%s(%s) not supported" msgstr "%s(%s)はサポートされていません" @@ -15178,7 +15188,7 @@ msgstr "%s(%s)はサポートされていません" msgid "no data left in message" msgstr "メッセージ内にデータが残っていません" -#: libpq/pqformat.c:517 libpq/pqformat.c:535 libpq/pqformat.c:556 utils/adt/arrayfuncs.c:1482 utils/adt/rowtypes.c:588 +#: libpq/pqformat.c:517 libpq/pqformat.c:535 libpq/pqformat.c:556 utils/adt/arrayfuncs.c:1483 utils/adt/rowtypes.c:588 #, c-format msgid "insufficient data left in message" msgstr "メッセージ内に残るデータが不十分です" @@ -15534,37 +15544,37 @@ msgstr "外部結合のNULL可な側では%sを適用できません" msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "UNION/INTERSECT/EXCEPTでは%sを使用できません" -#: optimizer/plan/planner.c:2051 optimizer/plan/planner.c:3707 +#: optimizer/plan/planner.c:2045 optimizer/plan/planner.c:3702 #, c-format msgid "could not implement GROUP BY" msgstr "GROUP BY を実行できませんでした" -#: optimizer/plan/planner.c:2052 optimizer/plan/planner.c:3708 optimizer/plan/planner.c:4351 optimizer/prep/prepunion.c:1046 +#: optimizer/plan/planner.c:2046 optimizer/plan/planner.c:3703 optimizer/plan/planner.c:4346 optimizer/prep/prepunion.c:1046 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "一部のデータ型がハッシュのみをサポートする一方で、別の型はソートのみをサポートしています。" -#: optimizer/plan/planner.c:4350 +#: optimizer/plan/planner.c:4345 #, c-format msgid "could not implement DISTINCT" msgstr "DISTINCTを実行できませんでした" -#: optimizer/plan/planner.c:5471 +#: optimizer/plan/planner.c:5466 #, c-format msgid "could not implement window PARTITION BY" msgstr "ウィンドウの PARTITION BY を実行できませんでした" -#: optimizer/plan/planner.c:5472 +#: optimizer/plan/planner.c:5467 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "ウィンドウ分割に使用する列は、ソート可能なデータ型でなければなりません。" -#: optimizer/plan/planner.c:5476 +#: optimizer/plan/planner.c:5471 #, c-format msgid "could not implement window ORDER BY" msgstr "ウィンドウの ORDER BY を実行できませんでした" -#: optimizer/plan/planner.c:5477 +#: optimizer/plan/planner.c:5472 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "ウィンドウの順序付けをする列は、ソート可能なデータ型でなければなりません。" @@ -15585,7 +15595,7 @@ msgstr "すべての列のデータ型はハッシュ可能でなければなり msgid "could not implement %s" msgstr "%sを実行できませんでした" -#: optimizer/util/clauses.c:4777 +#: optimizer/util/clauses.c:4843 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "SQL関数\"%s\"のインライン化処理中" @@ -15834,330 +15844,330 @@ msgstr "%sは名前付きタプルストアには適用できません" msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "%2$s句のリレーション\"%1$s\"はFROM句にありません" -#: parser/parse_agg.c:220 parser/parse_oper.c:227 +#: parser/parse_agg.c:208 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "型%sの順序演算子を識別できませんでした" -#: parser/parse_agg.c:222 +#: parser/parse_agg.c:210 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "DISTINCT 付きの集約関数は、入力がソート可能である必要があります。" -#: parser/parse_agg.c:257 +#: parser/parse_agg.c:268 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPINGの引数は32より少くなければなりません" -#: parser/parse_agg.c:360 +#: parser/parse_agg.c:371 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "JOIN条件で集約関数を使用できません" -#: parser/parse_agg.c:362 +#: parser/parse_agg.c:373 msgid "grouping operations are not allowed in JOIN conditions" msgstr "グルーピング演算はJOIN条件の中では使用できません" -#: parser/parse_agg.c:374 +#: parser/parse_agg.c:385 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "集約関数は自身の問い合わせレベルのFROM句の中では使用できません" -#: parser/parse_agg.c:376 +#: parser/parse_agg.c:387 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "グルーピング演算は自身のクエリレベルのFROM句の中では使用できません" -#: parser/parse_agg.c:381 +#: parser/parse_agg.c:392 msgid "aggregate functions are not allowed in functions in FROM" msgstr "集約関数はFROM句内の関数では使用できません" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:394 msgid "grouping operations are not allowed in functions in FROM" msgstr "グルーピング演算はFROM句内の関数では使用できません" -#: parser/parse_agg.c:391 +#: parser/parse_agg.c:402 msgid "aggregate functions are not allowed in policy expressions" msgstr "集約関数はポリシ式では使用できません" -#: parser/parse_agg.c:393 +#: parser/parse_agg.c:404 msgid "grouping operations are not allowed in policy expressions" msgstr "グルーピング演算はポリシ式では使用できません" -#: parser/parse_agg.c:410 +#: parser/parse_agg.c:421 msgid "aggregate functions are not allowed in window RANGE" msgstr "集約関数はウィンドウRANGEの中では集約関数を使用できません" -#: parser/parse_agg.c:412 +#: parser/parse_agg.c:423 msgid "grouping operations are not allowed in window RANGE" msgstr "ウィンドウ定義のRANGE句の中ではグルーピング演算は使用できません" -#: parser/parse_agg.c:417 +#: parser/parse_agg.c:428 msgid "aggregate functions are not allowed in window ROWS" msgstr "ウィンドウ定義のROWS句では集約関数は使用できません" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:430 msgid "grouping operations are not allowed in window ROWS" msgstr "ウィンドウ定義のROWS句ではグルーピング演算は使用できません" -#: parser/parse_agg.c:424 +#: parser/parse_agg.c:435 msgid "aggregate functions are not allowed in window GROUPS" msgstr "ウィンドウ定義のGROUPS句では集約関数は使用できません" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:437 msgid "grouping operations are not allowed in window GROUPS" msgstr "ウィンドウ定義のGROUPS句ではグルーピング演算は使用できません" -#: parser/parse_agg.c:439 +#: parser/parse_agg.c:450 msgid "aggregate functions are not allowed in MERGE WHEN conditions" msgstr "MERGE WHEN条件では集約関数を使用できません" -#: parser/parse_agg.c:441 +#: parser/parse_agg.c:452 msgid "grouping operations are not allowed in MERGE WHEN conditions" msgstr "MERGE WHEN条件ではグルーピング演算を使用できません" -#: parser/parse_agg.c:467 +#: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in check constraints" msgstr "検査制約では集約関数を使用できません" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:480 msgid "grouping operations are not allowed in check constraints" msgstr "検査制約ではグルーピング演算を使用できません" -#: parser/parse_agg.c:476 +#: parser/parse_agg.c:487 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "DEFAULT式では集約関数を使用できません" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:489 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "DEFAULT式ではグルーピング演算を使用できません" -#: parser/parse_agg.c:483 +#: parser/parse_agg.c:494 msgid "aggregate functions are not allowed in index expressions" msgstr "インデックス式では集約関数を使用できません" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:496 msgid "grouping operations are not allowed in index expressions" msgstr "インデックス式ではグルーピング演算を使用できません" -#: parser/parse_agg.c:490 +#: parser/parse_agg.c:501 msgid "aggregate functions are not allowed in index predicates" msgstr "インデックス述語では集約関数を使用できません" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:503 msgid "grouping operations are not allowed in index predicates" msgstr "インデックス述語ではグルーピング演算を使用できません" -#: parser/parse_agg.c:497 +#: parser/parse_agg.c:508 msgid "aggregate functions are not allowed in statistics expressions" msgstr "統計情報式では集約関数を使用できません" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:510 msgid "grouping operations are not allowed in statistics expressions" msgstr "統計情報式ではグルーピング演算使用できません" -#: parser/parse_agg.c:504 +#: parser/parse_agg.c:515 msgid "aggregate functions are not allowed in transform expressions" msgstr "変換式では集約関数を使用できません" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:517 msgid "grouping operations are not allowed in transform expressions" msgstr "変換式ではグルーピング演算を使用できません" -#: parser/parse_agg.c:511 +#: parser/parse_agg.c:522 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "EXECUTEのパラメータでは集約関数を使用できません" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:524 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "EXECUTEのパラメータではグルーピング演算を使用できません" -#: parser/parse_agg.c:518 +#: parser/parse_agg.c:529 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "トリガのWHEN条件では集約関数を使用できません" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:531 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "トリガのWHEN条件ではグルーピング演算を使用できません" -#: parser/parse_agg.c:525 +#: parser/parse_agg.c:536 msgid "aggregate functions are not allowed in partition bound" msgstr "集約関数はパーティション境界では使用できません" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:538 msgid "grouping operations are not allowed in partition bound" msgstr "グルーピング演算はパーティション境界では使用できません" -#: parser/parse_agg.c:532 +#: parser/parse_agg.c:543 msgid "aggregate functions are not allowed in partition key expressions" msgstr "パーティションキー式では集約関数は使用できません" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:545 msgid "grouping operations are not allowed in partition key expressions" msgstr "パーティションキー式ではグルーピング演算は使用できません" -#: parser/parse_agg.c:540 +#: parser/parse_agg.c:551 msgid "aggregate functions are not allowed in column generation expressions" msgstr "集約関数はカラム生成式では使用できません" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:553 msgid "grouping operations are not allowed in column generation expressions" msgstr "グルーピング演算はカラム生成式では使用できません" -#: parser/parse_agg.c:548 +#: parser/parse_agg.c:559 msgid "aggregate functions are not allowed in CALL arguments" msgstr "CALLの引数では集約関数を使用できません" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:561 msgid "grouping operations are not allowed in CALL arguments" msgstr "CALLの引数ではグルーピング演算を使用できません" -#: parser/parse_agg.c:556 +#: parser/parse_agg.c:567 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "集約関数は COPY FROM の WHERE 条件では使用できません" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:569 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:585 parser/parse_clause.c:1836 +#: parser/parse_agg.c:596 parser/parse_clause.c:1836 #, 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:588 +#: parser/parse_agg.c:599 #, c-format msgid "grouping operations are not allowed in %s" msgstr "%sではグルーピング演算を使用できません" -#: parser/parse_agg.c:689 +#: parser/parse_agg.c:700 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "アウタレベルの集約は直接引数に低位の変数を含むことができません" -#: parser/parse_agg.c:767 +#: parser/parse_agg.c:778 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "集合返却関数の呼び出しに集約関数の呼び出しを含むことはできません" -#: parser/parse_agg.c:768 parser/parse_expr.c:1674 parser/parse_expr.c:2156 parser/parse_func.c:883 +#: parser/parse_agg.c:779 parser/parse_expr.c:1674 parser/parse_expr.c:2156 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:773 +#: parser/parse_agg.c:784 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "集約関数の呼び出しにウィンドウ関数の呼び出しを含むことはできません" -#: parser/parse_agg.c:852 +#: parser/parse_agg.c:863 msgid "window functions are not allowed in JOIN conditions" msgstr "JOIN条件ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:859 +#: parser/parse_agg.c:870 msgid "window functions are not allowed in functions in FROM" msgstr "FROM句内の関数ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:865 +#: parser/parse_agg.c:876 msgid "window functions are not allowed in policy expressions" msgstr "ポリシ式ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:889 msgid "window functions are not allowed in window definitions" msgstr "ウィンドウ定義ではウィンドウ関数は使用できません" -#: parser/parse_agg.c:889 +#: parser/parse_agg.c:900 msgid "window functions are not allowed in MERGE WHEN conditions" msgstr "MERGE WHEN条件ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:913 +#: parser/parse_agg.c:924 msgid "window functions are not allowed in check constraints" msgstr "検査制約の中ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:917 +#: parser/parse_agg.c:928 msgid "window functions are not allowed in DEFAULT expressions" msgstr "DEFAULT式の中ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:920 +#: parser/parse_agg.c:931 msgid "window functions are not allowed in index expressions" msgstr "インデックス式ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:923 +#: parser/parse_agg.c:934 msgid "window functions are not allowed in statistics expressions" msgstr "統計情報式ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:926 +#: parser/parse_agg.c:937 msgid "window functions are not allowed in index predicates" msgstr "インデックス述語ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:929 +#: parser/parse_agg.c:940 msgid "window functions are not allowed in transform expressions" msgstr "変換式ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:932 +#: parser/parse_agg.c:943 msgid "window functions are not allowed in EXECUTE parameters" msgstr "EXECUTEパラメータではウィンドウ関数を使用できません" -#: parser/parse_agg.c:935 +#: parser/parse_agg.c:946 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "トリガのWHEN条件ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:949 msgid "window functions are not allowed in partition bound" msgstr "ウィンドウ関数はパーティション境界では使用できません" -#: parser/parse_agg.c:941 +#: parser/parse_agg.c:952 msgid "window functions are not allowed in partition key expressions" msgstr "パーティションキー式ではウィンドウ関数は使用できません" -#: parser/parse_agg.c:944 +#: parser/parse_agg.c:955 msgid "window functions are not allowed in CALL arguments" msgstr "CALLの引数ではウィンドウ関数は使用できません" -#: parser/parse_agg.c:947 +#: parser/parse_agg.c:958 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "ウィンドウ関数は COPY FROM の WHERE 条件では使用できません" -#: parser/parse_agg.c:950 +#: parser/parse_agg.c:961 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:973 parser/parse_clause.c:1845 +#: parser/parse_agg.c:984 parser/parse_clause.c:1845 #, c-format msgid "window functions are not allowed in %s" msgstr "%sの中ではウィンドウ関数を使用できません" -#: parser/parse_agg.c:1007 parser/parse_clause.c:2678 +#: parser/parse_agg.c:1018 parser/parse_clause.c:2678 #, c-format msgid "window \"%s\" does not exist" msgstr "ウィンドウ\"%s\"は存在しません" -#: parser/parse_agg.c:1091 +#: parser/parse_agg.c:1102 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "グルーピングセットの数が多すぎます (最大4096)" -#: parser/parse_agg.c:1231 +#: parser/parse_agg.c:1242 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "再帰問い合わせの再帰項では集約関数を使用できません" -#: parser/parse_agg.c:1424 +#: parser/parse_agg.c:1435 #, 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:1427 +#: parser/parse_agg.c:1438 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "順序集合集約の直接引数はグルーピングされた列のみを使用しなければなりません。" -#: parser/parse_agg.c:1432 +#: parser/parse_agg.c:1443 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "外部問い合わせから副問い合わせがグループ化されていない列\"%s.%s\"を使用しています" -#: parser/parse_agg.c:1596 +#: parser/parse_agg.c:1607 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "GROUPINGの引数は関連するクエリレベルのグルーピング式でなければなりません" @@ -17760,11 +17770,6 @@ msgstr "CREATE TABLE では既存のインデックスを使えません" msgid "index \"%s\" is already associated with a constraint" msgstr "インデックス\"%s\"はすでに1つの制約に割り当てられています" -#: parser/parse_utilcmd.c:2287 -#, c-format -msgid "index \"%s\" is not valid" -msgstr "インデックス\"%s\"は有効ではありません" - #: parser/parse_utilcmd.c:2293 #, c-format msgid "\"%s\" is not a unique index" @@ -18140,12 +18145,12 @@ msgstr "このプラットフォームではヒュージページをサポート msgid "huge pages not supported with the current shared_memory_type setting" msgstr "ヒュージページは現在のshared_memory_typeの設定ではサポートされません" -#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1187 +#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1195 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "既存の共有メモリブロック(キー%lu、ID %lu)がまだ使用中です" -#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1189 +#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1197 #, c-format msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "データディレクトリ \"%s\". に対応する古いサーバープロセスをすべて終了させてください。" @@ -18641,7 +18646,7 @@ msgstr "GSSAPI暗号化リクエストの後に非暗号化データを受信" msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "フロントエンドプロトコル%u.%uをサポートしていません: サーバーは%u.0から %u.%uまでをサポートします" -#: postmaster/postmaster.c:2264 utils/misc/guc.c:7400 utils/misc/guc.c:7436 utils/misc/guc.c:7506 utils/misc/guc.c:8937 utils/misc/guc.c:11971 utils/misc/guc.c:12012 +#: postmaster/postmaster.c:2264 utils/misc/guc.c:7400 utils/misc/guc.c:7436 utils/misc/guc.c:7506 utils/misc/guc.c:8944 utils/misc/guc.c:11986 utils/misc/guc.c:12027 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "パラメータ\"%s\"の値が不正です: \"%s\"" @@ -19173,91 +19178,91 @@ msgstr "接続文字列をパースできませんでした: %s" msgid "could not receive database system identifier and timeline ID from the primary server: %s" msgstr "プライマリサーバーからデータベースシステムの識別子とタイムライン ID を受信できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:384 replication/libpqwalreceiver/libpqwalreceiver.c:622 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 replication/libpqwalreceiver/libpqwalreceiver.c:626 #, c-format msgid "invalid response from primary server" msgstr "プライマリサーバーからの応答が不正です" -#: replication/libpqwalreceiver/libpqwalreceiver.c:385 +#: replication/libpqwalreceiver/libpqwalreceiver.c:389 #, c-format msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields." msgstr "システムを識別できませんでした: 受信したのは%d行で%d列、期待していたのは%d行で%d以上の列でした。" -#: replication/libpqwalreceiver/libpqwalreceiver.c:465 replication/libpqwalreceiver/libpqwalreceiver.c:472 replication/libpqwalreceiver/libpqwalreceiver.c:502 +#: replication/libpqwalreceiver/libpqwalreceiver.c:469 replication/libpqwalreceiver/libpqwalreceiver.c:476 replication/libpqwalreceiver/libpqwalreceiver.c:506 #, c-format msgid "could not start WAL streaming: %s" msgstr "WAL ストリーミングを開始できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:526 +#: replication/libpqwalreceiver/libpqwalreceiver.c:530 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "プライマリにストリーミングの終了メッセージを送信できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:553 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "ストリーミングの終了後の想定外の結果セット" -#: replication/libpqwalreceiver/libpqwalreceiver.c:564 +#: replication/libpqwalreceiver/libpqwalreceiver.c:568 #, c-format msgid "error while shutting down streaming COPY: %s" msgstr "ストリーミングCOPY終了中のエラー: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:574 +#: replication/libpqwalreceiver/libpqwalreceiver.c:578 #, c-format msgid "error reading result of streaming command: %s" msgstr "ストリーミングコマンドの結果読み取り中のエラー: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:583 replication/libpqwalreceiver/libpqwalreceiver.c:821 +#: replication/libpqwalreceiver/libpqwalreceiver.c:587 replication/libpqwalreceiver/libpqwalreceiver.c:825 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "CommandComplete後の想定外の結果: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:610 +#: replication/libpqwalreceiver/libpqwalreceiver.c:614 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "プライマリサーバーからタイムライン履歴ファイルを受信できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:623 +#: replication/libpqwalreceiver/libpqwalreceiver.c:627 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "2個のフィールドを持つ1個のタプルを期待していましたが、%2$d 個のフィールドを持つ %1$d 個のタプルを受信しました。" -#: replication/libpqwalreceiver/libpqwalreceiver.c:784 replication/libpqwalreceiver/libpqwalreceiver.c:837 replication/libpqwalreceiver/libpqwalreceiver.c:844 +#: replication/libpqwalreceiver/libpqwalreceiver.c:788 replication/libpqwalreceiver/libpqwalreceiver.c:841 replication/libpqwalreceiver/libpqwalreceiver.c:848 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "WAL ストリームからデータを受信できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:864 +#: replication/libpqwalreceiver/libpqwalreceiver.c:868 #, c-format msgid "could not send data to WAL stream: %s" msgstr "WAL ストリームにデータを送信できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:956 +#: replication/libpqwalreceiver/libpqwalreceiver.c:960 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "レプリケーションスロット\"%s\"を作成できませんでした: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1002 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1006 #, c-format msgid "invalid query response" msgstr "不正な問い合わせ応答" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1003 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1007 #, c-format msgid "Expected %d fields, got %d fields." msgstr "%d個の列を期待していましたが、%d列を受信しました。" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1073 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1077 #, c-format msgid "the query interface requires a database connection" msgstr "クエリインタフェースの動作にはデータベースコネクションが必要です" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1104 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1108 msgid "empty query" msgstr "空の問い合わせ" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1110 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1114 msgid "unexpected pipeline mode" msgstr "想定されていないパイプラインモード" @@ -19613,47 +19618,47 @@ msgstr "サブスクリプション\"%s\"、テーブル\"%s\"に対する論理 msgid "logical replication apply worker for subscription \"%s\" will restart so that two_phase can be enabled" msgstr "two_phaseを有効化可能にするため、サブスクリプション\"%s\"に対応する論理レプリケーション適用ワーカーを再起動します" -#: replication/logical/tablesync.c:731 replication/logical/tablesync.c:872 +#: replication/logical/tablesync.c:741 replication/logical/tablesync.c:882 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "テーブル\"%s.%s\"のテーブル情報を発行サーバーから取得できませんでした: %s" -#: replication/logical/tablesync.c:738 +#: replication/logical/tablesync.c:748 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "テーブル\"%s.%s\"が発行サーバー上で見つかりませんでした" -#: replication/logical/tablesync.c:795 +#: replication/logical/tablesync.c:805 #, c-format msgid "could not fetch column list info for table \"%s.%s\" from publisher: %s" msgstr "テーブル\"%s.%s\"の列リスト情報を発行サーバーから取得できませんでした: %s" -#: replication/logical/tablesync.c:974 +#: replication/logical/tablesync.c:984 #, c-format msgid "could not fetch table WHERE clause info for table \"%s.%s\" from publisher: %s" msgstr "テーブル\"%s.%s\"のテーブルのテーブルWHERE句を発行サーバーから取得できませんでした: %s" -#: replication/logical/tablesync.c:1111 +#: replication/logical/tablesync.c:1129 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "テーブル\"%s.%s\"の初期内容のコピーを開始できませんでした: %s" -#: replication/logical/tablesync.c:1323 replication/logical/worker.c:1635 +#: replication/logical/tablesync.c:1341 replication/logical/worker.c:1635 #, c-format msgid "user \"%s\" cannot replicate into relation with row-level security enabled: \"%s\"" msgstr "ユーザー\"%s\"は行レベルセキュリティが有効なリレーションへのレプリケーションはできません: \"%s\"" -#: replication/logical/tablesync.c:1338 +#: replication/logical/tablesync.c:1356 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "テーブルコピー中に発行サーバー上でのトランザクション開始に失敗しました: %s" -#: replication/logical/tablesync.c:1380 +#: replication/logical/tablesync.c:1398 #, c-format msgid "replication origin \"%s\" already exists" msgstr "レプリケーション基点\"%s\"はすでに存在します" -#: replication/logical/tablesync.c:1393 +#: replication/logical/tablesync.c:1411 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "テーブルコピー中に発行サーバー上でのトランザクション終了に失敗しました: %s" @@ -21095,17 +21100,17 @@ msgstr "共有メモリセグメント\"%s\"をクローズできませんでし msgid "could not duplicate handle for \"%s\": %m" msgstr "\"%s\"のハンドルの複製ができませんでした: %m" -#: storage/ipc/procarray.c:3846 +#: storage/ipc/procarray.c:3845 #, c-format msgid "database \"%s\" is being used by prepared transactions" msgstr "データベース\"%s\"は準備済みトランザクションで使用中です" -#: storage/ipc/procarray.c:3878 storage/ipc/signalfuncs.c:226 +#: storage/ipc/procarray.c:3877 storage/ipc/signalfuncs.c:231 #, c-format msgid "must be a superuser to terminate superuser process" msgstr "スーパーユーザーのプロセスを終了させるにはスーパーユーザーである必要があります" -#: storage/ipc/procarray.c:3885 storage/ipc/signalfuncs.c:231 +#: storage/ipc/procarray.c:3884 storage/ipc/signalfuncs.c:236 #, c-format msgid "must be a member of the role whose process is being terminated or member of pg_signal_backend" msgstr "終了しようとしているプロセスのロールまたはpg_signal_backendのメンバである必要があります。" @@ -21160,49 +21165,49 @@ msgstr "要求された共有メモリのサイズはsize_tを超えています msgid "PID %d is not a PostgreSQL backend process" msgstr "PID %dはPostgreSQLバックエンドプロセスではありません" -#: storage/ipc/signalfuncs.c:104 storage/lmgr/proc.c:1434 utils/adt/mcxtfuncs.c:190 +#: storage/ipc/signalfuncs.c:109 storage/lmgr/proc.c:1442 utils/adt/mcxtfuncs.c:190 #, c-format msgid "could not send signal to process %d: %m" msgstr "プロセス%dにシグナルを送信できませんでした: %m" -#: storage/ipc/signalfuncs.c:124 +#: storage/ipc/signalfuncs.c:129 #, c-format msgid "must be a superuser to cancel superuser query" msgstr "スーパーユーザーの問い合わせをキャンセルするにはスーパーユーザーである必要があります" -#: storage/ipc/signalfuncs.c:129 +#: storage/ipc/signalfuncs.c:134 #, c-format msgid "must be a member of the role whose query is being canceled or member of pg_signal_backend" msgstr "キャンセルしようとしている問い合わせのロールまたはpg_signal_backendのメンバである必要があります" -#: storage/ipc/signalfuncs.c:170 +#: storage/ipc/signalfuncs.c:175 #, c-format msgid "could not check the existence of the backend with PID %d: %m" msgstr "PID %dのバックエンドの存在の確認に失敗しました: %m" -#: storage/ipc/signalfuncs.c:188 +#: storage/ipc/signalfuncs.c:193 #, c-format msgid "backend with PID %d did not terminate within %lld millisecond" msgid_plural "backend with PID %d did not terminate within %lld milliseconds" msgstr[0] "PID %dのバックエンドが%lldミリ秒で終了しませんでした" -#: storage/ipc/signalfuncs.c:219 +#: storage/ipc/signalfuncs.c:224 #, c-format msgid "\"timeout\" must not be negative" msgstr "\"timeout\"は負数であってはなりません" -#: storage/ipc/signalfuncs.c:271 +#: storage/ipc/signalfuncs.c:276 #, c-format msgid "must be superuser to rotate log files with adminpack 1.0" msgstr "adminpack 1.0 でログファイルをローテートするにはスーパーユーザーである必要があります" #. translator: %s is a SQL function name -#: storage/ipc/signalfuncs.c:273 utils/adt/genfile.c:250 +#: storage/ipc/signalfuncs.c:278 utils/adt/genfile.c:250 #, c-format msgid "Consider using %s, which is part of core, instead." msgstr "代わりにコアの一部である %s の使用を検討してください。" -#: storage/ipc/signalfuncs.c:279 storage/ipc/signalfuncs.c:299 +#: storage/ipc/signalfuncs.c:284 storage/ipc/signalfuncs.c:304 #, c-format msgid "rotation not possible because log collection not active" msgstr "ログ収集が活動していませんのでローテーションを行うことができません" @@ -21475,27 +21480,27 @@ msgstr "リトライが行われた場合、このトランザクションは成 msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "要求されたスタンバイ接続が max_wal_senders を超えています(現在は %d)" -#: storage/lmgr/proc.c:1531 +#: storage/lmgr/proc.c:1539 #, c-format msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" msgstr "プロセス%1$dは、%4$ld.%5$03d ms後にキューの順番を再調整することで、%3$s上の%2$sに対するデッドロックを防ぎました。" -#: storage/lmgr/proc.c:1546 +#: storage/lmgr/proc.c:1554 #, c-format msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "プロセス%1$dは、%3$s上の%2$sに対し%4$ld.%5$03d ms待機するデッドロックを検知しました" -#: storage/lmgr/proc.c:1555 +#: storage/lmgr/proc.c:1563 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" msgstr "プロセス%dは%sを%sで待機しています。%ld.%03dミリ秒後" -#: storage/lmgr/proc.c:1562 +#: storage/lmgr/proc.c:1570 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" msgstr "プロセス%1$dは%4$ld.%5$03d ms後に%3$s上の%2$sを獲得しました" -#: storage/lmgr/proc.c:1579 +#: storage/lmgr/proc.c:1587 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" msgstr "プロセス%1$dは%4$ld.%5$03d ms後に%3$s上で%2$sを獲得することに失敗しました" @@ -22427,223 +22432,223 @@ msgstr "多次元配列内の要素の検索はサポートされません" msgid "initial position must not be null" msgstr "初期位置nullであってはなりません" -#: utils/adt/arrayfuncs.c:271 utils/adt/arrayfuncs.c:285 utils/adt/arrayfuncs.c:296 utils/adt/arrayfuncs.c:318 utils/adt/arrayfuncs.c:333 utils/adt/arrayfuncs.c:347 utils/adt/arrayfuncs.c:353 utils/adt/arrayfuncs.c:360 utils/adt/arrayfuncs.c:493 utils/adt/arrayfuncs.c:509 utils/adt/arrayfuncs.c:520 utils/adt/arrayfuncs.c:535 utils/adt/arrayfuncs.c:556 utils/adt/arrayfuncs.c:586 utils/adt/arrayfuncs.c:593 utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:635 -#: utils/adt/arrayfuncs.c:658 utils/adt/arrayfuncs.c:678 utils/adt/arrayfuncs.c:790 utils/adt/arrayfuncs.c:799 utils/adt/arrayfuncs.c:829 utils/adt/arrayfuncs.c:844 utils/adt/arrayfuncs.c:897 +#: utils/adt/arrayfuncs.c:272 utils/adt/arrayfuncs.c:286 utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:319 utils/adt/arrayfuncs.c:334 utils/adt/arrayfuncs.c:348 utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:510 utils/adt/arrayfuncs.c:521 utils/adt/arrayfuncs.c:536 utils/adt/arrayfuncs.c:557 utils/adt/arrayfuncs.c:587 utils/adt/arrayfuncs.c:594 utils/adt/arrayfuncs.c:602 utils/adt/arrayfuncs.c:636 +#: utils/adt/arrayfuncs.c:659 utils/adt/arrayfuncs.c:679 utils/adt/arrayfuncs.c:791 utils/adt/arrayfuncs.c:800 utils/adt/arrayfuncs.c:830 utils/adt/arrayfuncs.c:845 utils/adt/arrayfuncs.c:898 #, c-format msgid "malformed array literal: \"%s\"" msgstr "配列リテラルの書式が誤っています: \"%s\"" -#: utils/adt/arrayfuncs.c:272 +#: utils/adt/arrayfuncs.c:273 #, c-format msgid "\"[\" must introduce explicitly-specified array dimensions." msgstr "\"[\"は配列次元の明示的な指定の先頭である必要があります。" -#: utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:287 #, c-format msgid "Missing array dimension value." msgstr "配列の次元数の値がありません。" -#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:334 +#: utils/adt/arrayfuncs.c:298 utils/adt/arrayfuncs.c:335 #, c-format msgid "Missing \"%s\" after array dimensions." msgstr "配列の次元の後に\"%s\"がありません。" -#: utils/adt/arrayfuncs.c:306 utils/adt/arrayfuncs.c:2909 utils/adt/arrayfuncs.c:2941 utils/adt/arrayfuncs.c:2956 +#: utils/adt/arrayfuncs.c:307 utils/adt/arrayfuncs.c:2945 utils/adt/arrayfuncs.c:2990 utils/adt/arrayfuncs.c:3005 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "上限を下限より小さくすることはできません" -#: utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:320 #, c-format msgid "Array value must start with \"{\" or dimension information." msgstr "配列値は\"{\"または次元情報から始まる必要があります。" -#: utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:349 #, c-format msgid "Array contents must start with \"{\"." msgstr "配列の内容は\"{\"で始まる必要があります。" -#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:355 utils/adt/arrayfuncs.c:362 #, c-format msgid "Specified array dimensions do not match array contents." msgstr "指定された配列の次元数が配列の内容と合致していません。" -#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:521 utils/adt/multirangetypes.c:164 utils/adt/rangetypes.c:2310 utils/adt/rangetypes.c:2318 utils/adt/rowtypes.c:211 utils/adt/rowtypes.c:219 +#: utils/adt/arrayfuncs.c:495 utils/adt/arrayfuncs.c:522 utils/adt/multirangetypes.c:164 utils/adt/rangetypes.c:2310 utils/adt/rangetypes.c:2318 utils/adt/rowtypes.c:211 utils/adt/rowtypes.c:219 #, c-format msgid "Unexpected end of input." msgstr "想定外の入力の終端。" -#: utils/adt/arrayfuncs.c:510 utils/adt/arrayfuncs.c:557 utils/adt/arrayfuncs.c:587 utils/adt/arrayfuncs.c:636 +#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:637 #, c-format msgid "Unexpected \"%c\" character." msgstr "想定外の文字\"%c\"。" -#: utils/adt/arrayfuncs.c:536 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:537 utils/adt/arrayfuncs.c:660 #, c-format msgid "Unexpected array element." msgstr "想定外の配列要素。" -#: utils/adt/arrayfuncs.c:594 +#: utils/adt/arrayfuncs.c:595 #, c-format msgid "Unmatched \"%c\" character." msgstr "対応しない\"%c\"文字。" -#: utils/adt/arrayfuncs.c:602 utils/adt/jsonfuncs.c:2490 +#: utils/adt/arrayfuncs.c:603 utils/adt/jsonfuncs.c:2490 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "多次元配列は合致する次元の副配列を持たなければなりません。" -#: utils/adt/arrayfuncs.c:679 utils/adt/multirangetypes.c:287 +#: utils/adt/arrayfuncs.c:680 utils/adt/multirangetypes.c:287 #, c-format msgid "Junk after closing right brace." msgstr "右大括弧の後にごみがあります。" -#: utils/adt/arrayfuncs.c:1301 utils/adt/arrayfuncs.c:3369 utils/adt/arrayfuncs.c:5883 +#: utils/adt/arrayfuncs.c:1302 utils/adt/arrayfuncs.c:3418 utils/adt/arrayfuncs.c:5932 #, c-format msgid "invalid number of dimensions: %d" msgstr "不正な次元数: %d" -#: utils/adt/arrayfuncs.c:1312 +#: utils/adt/arrayfuncs.c:1313 #, c-format msgid "invalid array flags" msgstr "不正な配列フラグ" -#: utils/adt/arrayfuncs.c:1334 +#: utils/adt/arrayfuncs.c:1335 #, c-format msgid "binary data has array element type %u (%s) instead of expected %u (%s)" msgstr "バイナリデータ中に期待される型%3$u(%4$s)の代わりに%1$u(%2$s)がありました" -#: utils/adt/arrayfuncs.c:1378 utils/adt/multirangetypes.c:445 utils/adt/rangetypes.c:333 utils/cache/lsyscache.c:2915 +#: utils/adt/arrayfuncs.c:1379 utils/adt/multirangetypes.c:445 utils/adt/rangetypes.c:333 utils/cache/lsyscache.c:2915 #, c-format msgid "no binary input function available for type %s" msgstr "型%sにはバイナリ入力関数がありません" -#: utils/adt/arrayfuncs.c:1518 +#: utils/adt/arrayfuncs.c:1519 #, c-format msgid "improper binary format in array element %d" msgstr "配列要素%dのバイナリ書式が不適切です" -#: utils/adt/arrayfuncs.c:1599 utils/adt/multirangetypes.c:450 utils/adt/rangetypes.c:338 utils/cache/lsyscache.c:2948 +#: utils/adt/arrayfuncs.c:1600 utils/adt/multirangetypes.c:450 utils/adt/rangetypes.c:338 utils/cache/lsyscache.c:2948 #, c-format msgid "no binary output function available for type %s" msgstr "型%sにはバイナリ出力関数がありません" -#: utils/adt/arrayfuncs.c:2078 +#: utils/adt/arrayfuncs.c:2079 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "固定長配列の部分配列は実装されていません" -#: utils/adt/arrayfuncs.c:2256 utils/adt/arrayfuncs.c:2278 utils/adt/arrayfuncs.c:2327 utils/adt/arrayfuncs.c:2565 utils/adt/arrayfuncs.c:2887 utils/adt/arrayfuncs.c:5869 utils/adt/arrayfuncs.c:5895 utils/adt/arrayfuncs.c:5906 utils/adt/json.c:1141 utils/adt/json.c:1215 utils/adt/jsonb.c:1315 utils/adt/jsonb.c:1401 utils/adt/jsonfuncs.c:4326 utils/adt/jsonfuncs.c:4480 utils/adt/jsonfuncs.c:4592 utils/adt/jsonfuncs.c:4641 +#: utils/adt/arrayfuncs.c:2257 utils/adt/arrayfuncs.c:2279 utils/adt/arrayfuncs.c:2328 utils/adt/arrayfuncs.c:2582 utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:5918 utils/adt/arrayfuncs.c:5944 utils/adt/arrayfuncs.c:5955 utils/adt/json.c:1141 utils/adt/json.c:1215 utils/adt/jsonb.c:1315 utils/adt/jsonb.c:1401 utils/adt/jsonfuncs.c:4326 utils/adt/jsonfuncs.c:4480 utils/adt/jsonfuncs.c:4592 utils/adt/jsonfuncs.c:4641 #, c-format msgid "wrong number of array subscripts" msgstr "配列の添え字が不正な数値です" -#: utils/adt/arrayfuncs.c:2261 utils/adt/arrayfuncs.c:2369 utils/adt/arrayfuncs.c:2632 utils/adt/arrayfuncs.c:2946 +#: utils/adt/arrayfuncs.c:2262 utils/adt/arrayfuncs.c:2386 utils/adt/arrayfuncs.c:2665 utils/adt/arrayfuncs.c:2995 #, c-format msgid "array subscript out of range" msgstr "配列の添え字が範囲外です" -#: utils/adt/arrayfuncs.c:2266 +#: utils/adt/arrayfuncs.c:2267 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "固定長配列の要素にNULL値を代入できません" -#: utils/adt/arrayfuncs.c:2834 +#: utils/adt/arrayfuncs.c:2867 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "固定長配列の部分配列の更新は実装されていません" -#: utils/adt/arrayfuncs.c:2865 +#: utils/adt/arrayfuncs.c:2898 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "配列のスライスの添え字は両方の境界を示す必要があります" -#: utils/adt/arrayfuncs.c:2866 +#: utils/adt/arrayfuncs.c:2899 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." msgstr "空の配列値のスライスに代入するには、スライスの範囲は完全に指定する必要があります。" -#: utils/adt/arrayfuncs.c:2877 utils/adt/arrayfuncs.c:2973 +#: utils/adt/arrayfuncs.c:2910 utils/adt/arrayfuncs.c:3022 #, c-format msgid "source array too small" msgstr "元の配列が小さすぎます" -#: utils/adt/arrayfuncs.c:3527 +#: utils/adt/arrayfuncs.c:3576 #, c-format msgid "null array element not allowed in this context" msgstr "この文脈ではNULLの配列要素は許可されません" -#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 utils/adt/arrayfuncs.c:4191 +#: utils/adt/arrayfuncs.c:3678 utils/adt/arrayfuncs.c:3849 utils/adt/arrayfuncs.c:4240 #, c-format msgid "cannot compare arrays of different element types" msgstr "要素型の異なる配列を比較できません" -#: utils/adt/arrayfuncs.c:3978 utils/adt/multirangetypes.c:2799 utils/adt/multirangetypes.c:2871 utils/adt/rangetypes.c:1343 utils/adt/rangetypes.c:1407 utils/adt/rowtypes.c:1858 +#: utils/adt/arrayfuncs.c:4027 utils/adt/multirangetypes.c:2799 utils/adt/multirangetypes.c:2871 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" msgstr "型 %s のハッシュ関数を識別できません" -#: utils/adt/arrayfuncs.c:4106 utils/adt/rowtypes.c:1979 +#: utils/adt/arrayfuncs.c:4155 utils/adt/rowtypes.c:1979 #, c-format msgid "could not identify an extended hash function for type %s" msgstr "型 %s の拡張ハッシュ関数を特定できませんでした" -#: utils/adt/arrayfuncs.c:5283 +#: utils/adt/arrayfuncs.c:5332 #, c-format msgid "data type %s is not an array type" msgstr "データ型%sは配列型ではありません" -#: utils/adt/arrayfuncs.c:5338 +#: utils/adt/arrayfuncs.c:5387 #, c-format msgid "cannot accumulate null arrays" msgstr "null配列は連結できません" -#: utils/adt/arrayfuncs.c:5366 +#: utils/adt/arrayfuncs.c:5415 #, c-format msgid "cannot accumulate empty arrays" msgstr "空の配列は連結できません" -#: utils/adt/arrayfuncs.c:5393 utils/adt/arrayfuncs.c:5399 +#: utils/adt/arrayfuncs.c:5442 utils/adt/arrayfuncs.c:5448 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "次元の異なる配列は結合できません" -#: utils/adt/arrayfuncs.c:5767 utils/adt/arrayfuncs.c:5807 +#: utils/adt/arrayfuncs.c:5816 utils/adt/arrayfuncs.c:5856 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "次元配列もしくは下限値配列が NULL であってはなりません" -#: utils/adt/arrayfuncs.c:5870 utils/adt/arrayfuncs.c:5896 +#: utils/adt/arrayfuncs.c:5919 utils/adt/arrayfuncs.c:5945 #, c-format msgid "Dimension array must be one dimensional." msgstr "次元配列は1次元でなければなりません" -#: utils/adt/arrayfuncs.c:5875 utils/adt/arrayfuncs.c:5901 +#: utils/adt/arrayfuncs.c:5924 utils/adt/arrayfuncs.c:5950 #, c-format msgid "dimension values cannot be null" msgstr "次元値にnullにはできません" -#: utils/adt/arrayfuncs.c:5907 +#: utils/adt/arrayfuncs.c:5956 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "下限配列が次元配列のサイズと異なっています" -#: utils/adt/arrayfuncs.c:6185 +#: utils/adt/arrayfuncs.c:6234 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "多次元配列からの要素削除はサポートされません" -#: utils/adt/arrayfuncs.c:6462 +#: utils/adt/arrayfuncs.c:6511 #, c-format msgid "thresholds must be one-dimensional array" msgstr "閾値は1次元の配列でなければなりません" -#: utils/adt/arrayfuncs.c:6467 +#: utils/adt/arrayfuncs.c:6516 #, c-format msgid "thresholds array must not contain NULLs" msgstr "閾値配列にはNULL値を含めてはいけません" -#: utils/adt/arrayfuncs.c:6700 +#: utils/adt/arrayfuncs.c:6749 #, c-format msgid "number of elements to trim must be between 0 and %d" msgstr "削除する要素の数は0と%dとの間でなければなりません" @@ -22658,22 +22663,22 @@ msgstr "配列の添え字は整数型でなければなりません" msgid "array subscript in assignment must not be null" msgstr "代入における配列の添え字はnullにはできません" -#: utils/adt/arrayutils.c:140 +#: utils/adt/arrayutils.c:134 #, c-format msgid "array lower bound is too large: %d" msgstr "配列の下界が大きすぎます: %d" -#: utils/adt/arrayutils.c:240 +#: utils/adt/arrayutils.c:234 #, c-format msgid "typmod array must be type cstring[]" msgstr "typmod配列はcstring[]型でなければなりません" -#: utils/adt/arrayutils.c:245 +#: utils/adt/arrayutils.c:239 #, c-format msgid "typmod array must be one-dimensional" msgstr "typmod配列は1次元の配列でなければなりません" -#: utils/adt/arrayutils.c:250 +#: utils/adt/arrayutils.c:244 #, c-format msgid "typmod array must not contain nulls" msgstr "typmod配列にはNULL値を含めてはいけません" @@ -22697,7 +22702,7 @@ msgid "value \"%s\" is out of range for type %s" msgstr "値\"%s\"は型%sの範囲外です" #: utils/adt/cash.c:651 utils/adt/cash.c:701 utils/adt/cash.c:752 utils/adt/cash.c:801 utils/adt/cash.c:853 utils/adt/cash.c:903 utils/adt/float.c:105 utils/adt/int.c:842 utils/adt/int.c:958 utils/adt/int.c:1038 utils/adt/int.c:1100 utils/adt/int.c:1138 utils/adt/int.c:1166 utils/adt/int8.c:515 utils/adt/int8.c:573 utils/adt/int8.c:943 utils/adt/int8.c:1023 utils/adt/int8.c:1085 utils/adt/int8.c:1165 utils/adt/numeric.c:3093 utils/adt/numeric.c:3116 -#: utils/adt/numeric.c:3201 utils/adt/numeric.c:3219 utils/adt/numeric.c:3315 utils/adt/numeric.c:8481 utils/adt/numeric.c:8771 utils/adt/numeric.c:9096 utils/adt/numeric.c:10553 utils/adt/timestamp.c:3337 +#: utils/adt/numeric.c:3201 utils/adt/numeric.c:3219 utils/adt/numeric.c:3315 utils/adt/numeric.c:8481 utils/adt/numeric.c:8771 utils/adt/numeric.c:9096 utils/adt/numeric.c:10553 utils/adt/timestamp.c:3361 #, c-format msgid "division by zero" msgstr "0 による除算が行われました" @@ -22757,20 +22762,20 @@ msgstr "無限大の日付は減算できません" msgid "date out of range for timestamp" msgstr "タイムスタンプで日付が範囲外です" -#: utils/adt/date.c:1115 utils/adt/date.c:1198 utils/adt/date.c:1214 utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4032 utils/adt/timestamp.c:4225 utils/adt/timestamp.c:4397 utils/adt/timestamp.c:4650 utils/adt/timestamp.c:4851 utils/adt/timestamp.c:4898 utils/adt/timestamp.c:5122 utils/adt/timestamp.c:5169 utils/adt/timestamp.c:5299 +#: utils/adt/date.c:1115 utils/adt/date.c:1198 utils/adt/date.c:1214 utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4078 utils/adt/timestamp.c:4271 utils/adt/timestamp.c:4443 utils/adt/timestamp.c:4696 utils/adt/timestamp.c:4897 utils/adt/timestamp.c:4944 utils/adt/timestamp.c:5168 utils/adt/timestamp.c:5215 utils/adt/timestamp.c:5345 #, c-format msgid "unit \"%s\" not supported for type %s" msgstr "単位\"%s\"は型%sに対してはサポートされていません" -#: utils/adt/date.c:1223 utils/adt/date.c:2211 utils/adt/date.c:2993 utils/adt/timestamp.c:4046 utils/adt/timestamp.c:4242 utils/adt/timestamp.c:4411 utils/adt/timestamp.c:4610 utils/adt/timestamp.c:4907 utils/adt/timestamp.c:5178 utils/adt/timestamp.c:5360 +#: utils/adt/date.c:1223 utils/adt/date.c:2211 utils/adt/date.c:2993 utils/adt/timestamp.c:4092 utils/adt/timestamp.c:4288 utils/adt/timestamp.c:4457 utils/adt/timestamp.c:4656 utils/adt/timestamp.c:4953 utils/adt/timestamp.c:5224 utils/adt/timestamp.c:5406 #, c-format msgid "unit \"%s\" not recognized for type %s" msgstr "単位\"%s\"は型%sに対しては認識できません" #: utils/adt/date.c:1307 utils/adt/date.c:1353 utils/adt/date.c:1907 utils/adt/date.c:1938 utils/adt/date.c:1967 utils/adt/date.c:2831 utils/adt/date.c:3078 utils/adt/datetime.c:420 utils/adt/datetime.c:1869 utils/adt/formatting.c:4141 utils/adt/formatting.c:4177 utils/adt/formatting.c:4268 utils/adt/formatting.c:4390 utils/adt/json.c:418 utils/adt/json.c:457 utils/adt/timestamp.c:225 utils/adt/timestamp.c:257 utils/adt/timestamp.c:699 utils/adt/timestamp.c:708 -#: utils/adt/timestamp.c:786 utils/adt/timestamp.c:819 utils/adt/timestamp.c:2916 utils/adt/timestamp.c:2937 utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2959 utils/adt/timestamp.c:2967 utils/adt/timestamp.c:3022 utils/adt/timestamp.c:3045 utils/adt/timestamp.c:3058 utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3077 utils/adt/timestamp.c:3736 utils/adt/timestamp.c:3860 utils/adt/timestamp.c:3950 utils/adt/timestamp.c:4040 utils/adt/timestamp.c:4133 -#: utils/adt/timestamp.c:4236 utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4989 utils/adt/timestamp.c:5439 utils/adt/timestamp.c:5453 utils/adt/timestamp.c:5458 utils/adt/timestamp.c:5472 utils/adt/timestamp.c:5505 utils/adt/timestamp.c:5592 utils/adt/timestamp.c:5633 utils/adt/timestamp.c:5637 utils/adt/timestamp.c:5706 utils/adt/timestamp.c:5710 utils/adt/timestamp.c:5724 utils/adt/timestamp.c:5758 utils/adt/xml.c:2231 utils/adt/xml.c:2238 -#: utils/adt/xml.c:2258 utils/adt/xml.c:2265 +#: utils/adt/timestamp.c:786 utils/adt/timestamp.c:819 utils/adt/timestamp.c:2916 utils/adt/timestamp.c:2937 utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2961 utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2975 utils/adt/timestamp.c:3030 utils/adt/timestamp.c:3053 utils/adt/timestamp.c:3066 utils/adt/timestamp.c:3080 utils/adt/timestamp.c:3088 utils/adt/timestamp.c:3096 utils/adt/timestamp.c:3782 utils/adt/timestamp.c:3906 utils/adt/timestamp.c:3996 +#: utils/adt/timestamp.c:4086 utils/adt/timestamp.c:4179 utils/adt/timestamp.c:4282 utils/adt/timestamp.c:4761 utils/adt/timestamp.c:5035 utils/adt/timestamp.c:5485 utils/adt/timestamp.c:5499 utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5518 utils/adt/timestamp.c:5551 utils/adt/timestamp.c:5638 utils/adt/timestamp.c:5679 utils/adt/timestamp.c:5683 utils/adt/timestamp.c:5752 utils/adt/timestamp.c:5756 utils/adt/timestamp.c:5770 utils/adt/timestamp.c:5804 +#: utils/adt/xml.c:2231 utils/adt/xml.c:2238 utils/adt/xml.c:2258 utils/adt/xml.c:2265 #, c-format msgid "timestamp out of range" msgstr "timestampの範囲外です" @@ -22785,7 +22790,7 @@ msgstr "時刻が範囲外です" msgid "time field value out of range: %d:%02d:%02g" msgstr "時刻フィールドの値が範囲外です: %d:%02d:%02g" -#: utils/adt/date.c:2096 utils/adt/date.c:2630 utils/adt/float.c:1048 utils/adt/float.c:1124 utils/adt/int.c:634 utils/adt/int.c:681 utils/adt/int.c:716 utils/adt/int8.c:414 utils/adt/numeric.c:2497 utils/adt/timestamp.c:3386 utils/adt/timestamp.c:3417 utils/adt/timestamp.c:3448 +#: utils/adt/date.c:2096 utils/adt/date.c:2630 utils/adt/float.c:1048 utils/adt/float.c:1124 utils/adt/int.c:634 utils/adt/int.c:681 utils/adt/int.c:716 utils/adt/int8.c:414 utils/adt/numeric.c:2497 utils/adt/timestamp.c:3432 utils/adt/timestamp.c:3463 utils/adt/timestamp.c:3494 #, c-format msgid "invalid preceding or following size in window function" msgstr "ウィンドウ関数での不正なサイズの PRECEDING または FOLLOWING 指定" @@ -22795,12 +22800,12 @@ msgstr "ウィンドウ関数での不正なサイズの PRECEDING または FOL msgid "time zone displacement out of range" msgstr "タイムゾーンの置換が範囲外です" -#: utils/adt/date.c:3084 utils/adt/datetime.c:1121 utils/adt/datetime.c:2027 utils/adt/datetime.c:4898 utils/adt/timestamp.c:516 utils/adt/timestamp.c:543 utils/adt/timestamp.c:4319 utils/adt/timestamp.c:5464 utils/adt/timestamp.c:5716 +#: utils/adt/date.c:3084 utils/adt/datetime.c:1121 utils/adt/datetime.c:2027 utils/adt/datetime.c:4898 utils/adt/timestamp.c:516 utils/adt/timestamp.c:543 utils/adt/timestamp.c:4365 utils/adt/timestamp.c:5510 utils/adt/timestamp.c:5762 #, c-format msgid "time zone \"%s\" not recognized" msgstr "タイムゾーン\"%s\"は不明です" -#: utils/adt/date.c:3116 utils/adt/timestamp.c:5494 utils/adt/timestamp.c:5747 +#: utils/adt/date.c:3117 utils/adt/timestamp.c:5540 utils/adt/timestamp.c:5793 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "intervalによるタイムゾーン\"%s\"には月または日を含めてはいけません" @@ -22830,7 +22835,7 @@ msgstr "タイムゾーンの置換が範囲外です: \"%s\"" msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"." msgstr "このタイムゾーンはタイムゾーン省略名\"%s\"の構成ファイルにあるようです。" -#: utils/adt/datum.c:90 utils/adt/datum.c:102 +#: utils/adt/datum.c:91 utils/adt/datum.c:103 #, c-format msgid "invalid Datum pointer" msgstr "不正なDatumポインタ" @@ -23345,7 +23350,7 @@ msgstr "少なくとも2ポイントを要求しなければなりません" msgid "invalid int2vector data" msgstr "不正なint2vectorデータ" -#: utils/adt/int.c:1528 utils/adt/int8.c:1404 utils/adt/numeric.c:1678 utils/adt/timestamp.c:5809 utils/adt/timestamp.c:5889 +#: utils/adt/int.c:1528 utils/adt/int8.c:1404 utils/adt/numeric.c:1678 utils/adt/timestamp.c:5855 utils/adt/timestamp.c:5935 #, c-format msgid "step size cannot equal zero" msgstr "ステップ数をゼロにすることはできません" @@ -24446,7 +24451,7 @@ msgstr "不正な正規表現オプション: \"%.*s\"" msgid "If you meant to use regexp_replace() with a start parameter, cast the fourth argument to integer explicitly." msgstr "regexp_replace()でパラメータstartを指定したいのであれば、4番目のパラメータを明示的に整数にキャストしてください。" -#: utils/adt/regexp.c:702 utils/adt/regexp.c:711 utils/adt/regexp.c:1068 utils/adt/regexp.c:1132 utils/adt/regexp.c:1141 utils/adt/regexp.c:1150 utils/adt/regexp.c:1159 utils/adt/regexp.c:1839 utils/adt/regexp.c:1848 utils/adt/regexp.c:1857 utils/misc/guc.c:11860 utils/misc/guc.c:11894 +#: utils/adt/regexp.c:702 utils/adt/regexp.c:711 utils/adt/regexp.c:1068 utils/adt/regexp.c:1132 utils/adt/regexp.c:1141 utils/adt/regexp.c:1150 utils/adt/regexp.c:1159 utils/adt/regexp.c:1839 utils/adt/regexp.c:1848 utils/adt/regexp.c:1857 utils/misc/guc.c:11875 utils/misc/guc.c:11909 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "パラメータ\"%s\"の値が無効です: %d" @@ -24677,7 +24682,7 @@ msgstr "TIMESTAMP(%d)%s の精度は負であってはなりません" msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "TIMESTAMP(%d)%sの位取りを許容最大値%dまで減らしました" -#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12884 +#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12899 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestampが範囲外です: \"%s\"" @@ -24712,6 +24717,12 @@ msgstr "タイムスタンプは NaN にはできません" msgid "timestamp out of range: \"%g\"" msgstr "timestampが範囲外です: \"%g\"" +#: utils/adt/timestamp.c:938 utils/adt/timestamp.c:1509 utils/adt/timestamp.c:2761 utils/adt/timestamp.c:2778 utils/adt/timestamp.c:2831 utils/adt/timestamp.c:2870 utils/adt/timestamp.c:3134 utils/adt/timestamp.c:3139 utils/adt/timestamp.c:3144 utils/adt/timestamp.c:3194 utils/adt/timestamp.c:3201 utils/adt/timestamp.c:3208 utils/adt/timestamp.c:3228 utils/adt/timestamp.c:3235 utils/adt/timestamp.c:3242 utils/adt/timestamp.c:3329 utils/adt/timestamp.c:3404 +#: utils/adt/timestamp.c:3777 utils/adt/timestamp.c:3901 utils/adt/timestamp.c:4451 +#, c-format +msgid "interval out of range" +msgstr "intervalが範囲外です" + #: utils/adt/timestamp.c:1062 utils/adt/timestamp.c:1095 #, c-format msgid "invalid INTERVAL type modifier" @@ -24737,22 +24748,22 @@ msgstr "interval(%d)の精度は%dから%dまででなければなりません" msgid "cannot subtract infinite timestamps" msgstr "無限大のtimestampを減算できません" -#: utils/adt/timestamp.c:3891 utils/adt/timestamp.c:4074 +#: utils/adt/timestamp.c:3937 utils/adt/timestamp.c:4120 #, c-format msgid "origin out of range" msgstr "基点が範囲外です" -#: utils/adt/timestamp.c:3896 utils/adt/timestamp.c:4079 +#: utils/adt/timestamp.c:3942 utils/adt/timestamp.c:4125 #, c-format msgid "timestamps cannot be binned into intervals containing months or years" msgstr "タイムスタンプ型は月や年を含む間隔にビニングすることはできません" -#: utils/adt/timestamp.c:3903 utils/adt/timestamp.c:4086 +#: utils/adt/timestamp.c:3949 utils/adt/timestamp.c:4132 #, c-format msgid "stride must be greater than zero" msgstr "増分は0より大きくなければなりません" -#: utils/adt/timestamp.c:4399 +#: utils/adt/timestamp.c:4445 #, c-format msgid "Months usually have fractional weeks." msgstr "月は通常週の端数を含んでいます。" @@ -25669,7 +25680,7 @@ msgstr "データディレクトリ\"%s\"の権限設定が不正です" msgid "Permissions should be u=rwx (0700) or u=rwx,g=rx (0750)." msgstr "権限は u=rwx(0700) または u=rwx,g=rx (0750) でなければなりません。" -#: utils/init/miscinit.c:665 utils/misc/guc.c:7830 +#: utils/init/miscinit.c:665 utils/misc/guc.c:7837 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "セキュリティー制限操作内でパラメーター\"%s\"を設定できません" @@ -25689,122 +25700,122 @@ msgstr "ロール\"%s\"はログインが許可されません" msgid "too many connections for role \"%s\"" msgstr "ロール\"%s\"からの接続が多すぎます" -#: utils/init/miscinit.c:841 +#: utils/init/miscinit.c:849 #, c-format msgid "permission denied to set session authorization" msgstr "set session authorization用の権限がありません" -#: utils/init/miscinit.c:924 +#: utils/init/miscinit.c:932 #, c-format msgid "invalid role OID: %u" msgstr "不正なロールID: %u" -#: utils/init/miscinit.c:978 +#: utils/init/miscinit.c:986 #, c-format msgid "database system is shut down" msgstr "データベースシステムはシャットダウンしました" -#: utils/init/miscinit.c:1065 +#: utils/init/miscinit.c:1073 #, c-format msgid "could not create lock file \"%s\": %m" msgstr "ロックファイル\"%s\"を作成できませんでした: %m" -#: utils/init/miscinit.c:1079 +#: utils/init/miscinit.c:1087 #, c-format msgid "could not open lock file \"%s\": %m" msgstr "ロックファイル\"%s\"をオープンできませんでした: %m" -#: utils/init/miscinit.c:1086 +#: utils/init/miscinit.c:1094 #, c-format msgid "could not read lock file \"%s\": %m" msgstr "ロックファイル\"%s\"を読み取れませんでした: %m" -#: utils/init/miscinit.c:1095 +#: utils/init/miscinit.c:1103 #, c-format msgid "lock file \"%s\" is empty" msgstr "ロックファイル\"%s\"が空です" -#: utils/init/miscinit.c:1096 +#: utils/init/miscinit.c:1104 #, c-format msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash." msgstr "他のサーバーが稼働しているか、前回のサーバー起動失敗のためロックファイルが残っているかのいずれかです" -#: utils/init/miscinit.c:1140 +#: utils/init/miscinit.c:1148 #, c-format msgid "lock file \"%s\" already exists" msgstr "ロックファイル\"%s\"はすでに存在します" -#: utils/init/miscinit.c:1144 +#: utils/init/miscinit.c:1152 #, c-format msgid "Is another postgres (PID %d) running in data directory \"%s\"?" msgstr "他のpostgres(PID %d)がデータディレクトリ\"%s\"で稼動していませんか?" -#: utils/init/miscinit.c:1146 +#: utils/init/miscinit.c:1154 #, c-format msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" msgstr "他のpostmaster(PID %d)がデータディレクトリ\"%s\"で稼動していませんか?" -#: utils/init/miscinit.c:1149 +#: utils/init/miscinit.c:1157 #, c-format msgid "Is another postgres (PID %d) using socket file \"%s\"?" msgstr "他のpostgres(PID %d)がソケットファイル\"%s\"を使用していませんか?" -#: utils/init/miscinit.c:1151 +#: utils/init/miscinit.c:1159 #, c-format msgid "Is another postmaster (PID %d) using socket file \"%s\"?" msgstr "他のpostmaster(PID %d)がソケットファイル\"%s\"を使用していませんか?" -#: utils/init/miscinit.c:1202 +#: utils/init/miscinit.c:1210 #, c-format msgid "could not remove old lock file \"%s\": %m" msgstr "古いロックファイル\"%s\"を削除できませんでした: %m" -#: utils/init/miscinit.c:1204 +#: utils/init/miscinit.c:1212 #, c-format msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again." msgstr "このファイルは偶然残ってしまったようですが、削除できませんでした。手作業でこれを削除し再実行してください。" -#: utils/init/miscinit.c:1241 utils/init/miscinit.c:1255 utils/init/miscinit.c:1266 +#: utils/init/miscinit.c:1249 utils/init/miscinit.c:1263 utils/init/miscinit.c:1274 #, c-format msgid "could not write lock file \"%s\": %m" msgstr "ロックファイル\"%s\"に書き出せませんでした: %m" -#: utils/init/miscinit.c:1377 utils/init/miscinit.c:1519 utils/misc/guc.c:10828 +#: utils/init/miscinit.c:1385 utils/init/miscinit.c:1527 utils/misc/guc.c:10843 #, c-format msgid "could not read from file \"%s\": %m" msgstr "ファイル\"%s\"から読み取れませんでした: %m" -#: utils/init/miscinit.c:1507 +#: utils/init/miscinit.c:1515 #, c-format msgid "could not open file \"%s\": %m; continuing anyway" msgstr "ファイル\"%s\"をオープンできませんでした: %m; とりあえず続けます" -#: utils/init/miscinit.c:1532 +#: utils/init/miscinit.c:1540 #, c-format msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" msgstr "ロックファイル\"%s\"が誤ったPIDをもっています: %ld、正しくは%ld" -#: utils/init/miscinit.c:1571 utils/init/miscinit.c:1587 +#: utils/init/miscinit.c:1579 utils/init/miscinit.c:1595 #, c-format msgid "\"%s\" is not a valid data directory" msgstr "\"%s\"は有効なデータディレクトリではありません" -#: utils/init/miscinit.c:1573 +#: utils/init/miscinit.c:1581 #, c-format msgid "File \"%s\" is missing." msgstr "ファイル\"%s\"が存在しません" -#: utils/init/miscinit.c:1589 +#: utils/init/miscinit.c:1597 #, c-format msgid "File \"%s\" does not contain valid data." msgstr "ファイル\"%s\"に有効なデータがありません。" -#: utils/init/miscinit.c:1591 +#: utils/init/miscinit.c:1599 #, c-format msgid "You might need to initdb." msgstr "initdbする必要があるかもしれません" -#: utils/init/miscinit.c:1599 +#: utils/init/miscinit.c:1607 #, c-format msgid "The data directory was initialized by PostgreSQL version %s, which is not compatible with this version %s." msgstr "データディレクトリはPostgreSQLバージョン%sで初期化されましたが、これはバージョン%sとは互換性がありません" @@ -25982,11 +25993,6 @@ msgstr "WIN文字セットに対する符号化方式ID %dは想定外です<" msgid "conversion between %s and %s is not supported" msgstr "%sと%s間の変換はサポートされていません" -#: utils/mb/mbutils.c:385 -#, c-format -msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" -msgstr "符号化方式\"%s\"から\"%s\"用のデフォルト変換関数は存在しません" - #: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 utils/mb/mbutils.c:842 #, c-format msgid "String of %d bytes is too long for encoding conversion." @@ -26328,7 +26334,7 @@ msgid "Forces synchronization of updates to disk." msgstr "強制的に更新をディスクに同期します。" #: utils/misc/guc.c:1287 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "サーバーは、確実に更新が物理的にディスクに書き込まれるように複数の場所でfsync()システムコールを使用します。これにより、オペレーティングシステムやハードウェアがクラッシュした後でもデータベースクラスタは一貫した状態に復旧することができます。" #: utils/misc/guc.c:1298 @@ -28049,172 +28055,172 @@ msgstr "%d%s%s はパラメータ\"%s\"の有効範囲 (%d .. %d) を超えて msgid "%g%s%s is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g%s%s はパラメータ\"%s\"の有効範囲 (%g .. %g) を超えています" -#: utils/misc/guc.c:7648 utils/misc/guc.c:9096 +#: utils/misc/guc.c:7649 utils/misc/guc.c:9103 #, c-format msgid "cannot set parameters during a parallel operation" msgstr "並列処理中はパラメータの設定はできません" -#: utils/misc/guc.c:7665 utils/misc/guc.c:8920 +#: utils/misc/guc.c:7668 utils/misc/guc.c:8927 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "パラメータ\"%s\"を変更できません" -#: utils/misc/guc.c:7698 +#: utils/misc/guc.c:7701 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "現在パラメータ\"%s\"を変更できません" -#: utils/misc/guc.c:7725 utils/misc/guc.c:7783 utils/misc/guc.c:8896 utils/misc/guc.c:11796 +#: utils/misc/guc.c:7728 utils/misc/guc.c:7790 utils/misc/guc.c:8903 utils/misc/guc.c:11811 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "パラメータ\"%s\"を設定する権限がありません" -#: utils/misc/guc.c:7763 +#: utils/misc/guc.c:7770 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "接続開始後にパラメータ\"%s\"を変更できません" -#: utils/misc/guc.c:7822 +#: utils/misc/guc.c:7829 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "セキュリティー定義用関数内でパラメーター\"%s\"を設定できません" -#: utils/misc/guc.c:8475 utils/misc/guc.c:8522 utils/misc/guc.c:10002 +#: utils/misc/guc.c:8482 utils/misc/guc.c:8529 utils/misc/guc.c:10016 #, c-format msgid "must be superuser or have privileges of pg_read_all_settings to examine \"%s\"" msgstr "\"%s\"を確認するにはスーパーユーザーであるか、またはpg_read_all_settingsの権限を持つ必要があります" -#: utils/misc/guc.c:8606 +#: utils/misc/guc.c:8613 #, c-format msgid "SET %s takes only one argument" msgstr "SET %sは1つの引数のみを取ります" -#: utils/misc/guc.c:8886 +#: utils/misc/guc.c:8893 #, c-format msgid "permission denied to perform ALTER SYSTEM RESET ALL" msgstr "ALTER SYSTEM RESET ALLを行う権限がありません" -#: utils/misc/guc.c:8953 +#: utils/misc/guc.c:8960 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" msgstr "ALTER SYSTEMでのパラメータ値は改行を含んではいけません" -#: utils/misc/guc.c:8998 +#: utils/misc/guc.c:9005 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "ファイル\"%s\"の内容をパースできませんでした" -#: utils/misc/guc.c:9172 +#: utils/misc/guc.c:9179 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOTはまだ実装されていません" -#: utils/misc/guc.c:9259 +#: utils/misc/guc.c:9266 #, c-format msgid "SET requires parameter name" msgstr "SETにはパラメータ名が必要です" -#: utils/misc/guc.c:9392 +#: utils/misc/guc.c:9399 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "パラメータ\"%s\"を再定義しようとしています" -#: utils/misc/guc.c:9719 +#: utils/misc/guc.c:9726 #, c-format msgid "invalid configuration parameter name \"%s\", removing it" msgstr "設定パラメータ名\"%s\"は不正です、削除します" -#: utils/misc/guc.c:9721 +#: utils/misc/guc.c:9728 #, c-format msgid "\"%s\" is now a reserved prefix." msgstr "\"%s\" は予約された接頭辞になりました。" -#: utils/misc/guc.c:11236 +#: utils/misc/guc.c:11251 #, c-format msgid "while setting parameter \"%s\" to \"%s\"" msgstr "パラメータ\"%s\"の\"%s\"への変更中" -#: utils/misc/guc.c:11405 +#: utils/misc/guc.c:11420 #, c-format msgid "parameter \"%s\" could not be set" msgstr "パラメータ\"%s\"を設定できません" -#: utils/misc/guc.c:11497 +#: utils/misc/guc.c:11512 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "パラメータ\"%s\"の設定をパースできません" -#: utils/misc/guc.c:11928 +#: utils/misc/guc.c:11943 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "パラメータ\"%s\"の値が無効です: %g" -#: utils/misc/guc.c:12241 +#: utils/misc/guc.c:12256 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "当該セッションで何らかの一時テーブルがアクセスされた後は \"temp_buffers\"を変更できません" -#: utils/misc/guc.c:12253 +#: utils/misc/guc.c:12268 #, c-format msgid "Bonjour is not supported by this build" msgstr "このビルドでは bonjour はサポートされていません" -#: utils/misc/guc.c:12266 +#: utils/misc/guc.c:12281 #, c-format msgid "SSL is not supported by this build" msgstr "このインストレーションではSSLはサポートされていません" -#: utils/misc/guc.c:12278 +#: utils/misc/guc.c:12293 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "\"log_statement_stats\"が真の場合、パラメータを有効にできません" -#: utils/misc/guc.c:12290 +#: utils/misc/guc.c:12305 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "\"log_parser_stats\"、\"log_planner_stats\"、\"log_executor_stats\"のいずれかが真の場合は\"log_statement_stats\"を有効にできません" -#: utils/misc/guc.c:12520 +#: utils/misc/guc.c:12535 #, c-format msgid "effective_io_concurrency must be set to 0 on platforms that lack posix_fadvise()." msgstr "posix_fadvise() をもたないプラットフォームではeffective_io_concurrencyは0に設定する必要があります。" -#: utils/misc/guc.c:12533 +#: utils/misc/guc.c:12548 #, c-format msgid "maintenance_io_concurrency must be set to 0 on platforms that lack posix_fadvise()." msgstr "posix_fadvise() をもたないプラットフォームではmaintenance_io_concurrencyは0に設定する必要があります。" -#: utils/misc/guc.c:12547 +#: utils/misc/guc.c:12562 #, c-format msgid "huge_page_size must be 0 on this platform." msgstr "このプラットフォームではhuge_page_sizeを0に設定する必要があります。" -#: utils/misc/guc.c:12559 +#: utils/misc/guc.c:12574 #, c-format msgid "client_connection_check_interval must be set to 0 on this platform." msgstr "このプラットフォームではclient_connection_check_intervalを0に設定する必要があります。" -#: utils/misc/guc.c:12671 +#: utils/misc/guc.c:12686 #, c-format msgid "invalid character" msgstr "不正な文字" -#: utils/misc/guc.c:12731 +#: utils/misc/guc.c:12746 #, c-format msgid "recovery_target_timeline is not a valid number." msgstr "recovery_target_timelineが妥当な数値ではありません。" -#: utils/misc/guc.c:12771 +#: utils/misc/guc.c:12786 #, c-format msgid "multiple recovery targets specified" msgstr "複数のリカバリ目標が指定されています" -#: utils/misc/guc.c:12772 +#: utils/misc/guc.c:12787 #, c-format msgid "At most one of recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid may be set." msgstr " recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid はこの中の1つまで設定可能です。" -#: utils/misc/guc.c:12780 +#: utils/misc/guc.c:12795 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "\"immediate\"のみが指定可能です。" @@ -28224,7 +28230,7 @@ msgstr "\"immediate\"のみが指定可能です。" msgid "internal error: unrecognized run-time parameter type\n" msgstr "内部エラー: 実行時のパラメータ型が認識できません\n" -#: utils/misc/pg_controldata.c:60 utils/misc/pg_controldata.c:138 utils/misc/pg_controldata.c:241 utils/misc/pg_controldata.c:306 +#: utils/misc/pg_controldata.c:63 utils/misc/pg_controldata.c:143 utils/misc/pg_controldata.c:248 utils/misc/pg_controldata.c:315 #, c-format msgid "calculated CRC checksum does not match value stored in file" msgstr "算出されたCRCチェックサムがファイルに格納されている値と一致しません" @@ -28473,3 +28479,9 @@ msgstr "読み取りのみのシリアライザブルトランザクションで #, c-format msgid "cannot import a snapshot from a different database" msgstr "異なるデータベースからのスナップショットを読み込むことはできません" + +#~ msgid "out of memory while trying to decode a record of length %u" +#~ msgstr "長さ%uのレコードのデコード中のメモリ不足" + +#~ msgid "record length %u at %X/%X too long" +#~ msgstr "%2$X/%3$Xのレコード長%1$uが大きすぎます" diff --git a/src/backend/po/ko.po b/src/backend/po/ko.po index c977f4b..b458383 100644 --- a/src/backend/po/ko.po +++ b/src/backend/po/ko.po @@ -28603,7 +28603,7 @@ msgstr "강제로 변경된 버퍼 자료를 디스크와 동기화 시킴." #: utils/misc/guc.c:1287 msgid "" "The server will use the fsync() system call in several places to make sure " -"that updates are physically written to disk. This insures that a database " +"that updates are physically written to disk. This ensures that a database " "cluster will recover to a consistent state after an operating system or " "hardware crash." msgstr "" diff --git a/src/backend/po/ru.po b/src/backend/po/ru.po index 7d7f649..040010f 100644 --- a/src/backend/po/ru.po +++ b/src/backend/po/ru.po @@ -4,14 +4,14 @@ # Serguei A. Mokhov , 2001-2005. # Oleg Bartunov , 2004-2005. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024. # Maxim Yablokov , 2021, 2022. msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 09:09+0300\n" -"PO-Revision-Date: 2023-11-03 10:37+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" +"PO-Revision-Date: 2024-02-02 19:00+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -73,35 +73,35 @@ msgid "not recorded" msgstr "не записано" #: ../common/controldata_utils.c:79 ../common/controldata_utils.c:83 -#: commands/copyfrom.c:1521 commands/extension.c:3401 utils/adt/genfile.c:123 +#: commands/copyfrom.c:1525 commands/extension.c:3401 utils/adt/genfile.c:123 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "не удалось открыть файл \"%s\" для чтения: %m" #: ../common/controldata_utils.c:94 ../common/controldata_utils.c:96 #: access/transam/timeline.c:143 access/transam/timeline.c:362 -#: access/transam/twophase.c:1349 access/transam/xlog.c:3207 -#: access/transam/xlog.c:4022 access/transam/xlogrecovery.c:1197 -#: access/transam/xlogrecovery.c:1289 access/transam/xlogrecovery.c:1326 -#: access/transam/xlogrecovery.c:1386 backup/basebackup.c:1844 +#: access/transam/twophase.c:1349 access/transam/xlog.c:3209 +#: access/transam/xlog.c:4024 access/transam/xlogrecovery.c:1223 +#: access/transam/xlogrecovery.c:1315 access/transam/xlogrecovery.c:1352 +#: access/transam/xlogrecovery.c:1412 backup/basebackup.c:1844 #: commands/extension.c:3411 libpq/hba.c:505 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:4958 #: replication/logical/snapbuild.c:1870 replication/logical/snapbuild.c:1912 #: replication/logical/snapbuild.c:1939 replication/slot.c:1807 #: replication/slot.c:1848 replication/walsender.c:658 #: storage/file/buffile.c:463 storage/file/copydir.c:195 -#: utils/adt/genfile.c:197 utils/adt/misc.c:863 utils/cache/relmapper.c:813 +#: utils/adt/genfile.c:197 utils/adt/misc.c:863 utils/cache/relmapper.c:816 #, c-format msgid "could not read file \"%s\": %m" msgstr "не удалось прочитать файл \"%s\": %m" #: ../common/controldata_utils.c:102 ../common/controldata_utils.c:105 -#: access/transam/xlog.c:3212 access/transam/xlog.c:4027 +#: access/transam/xlog.c:3214 access/transam/xlog.c:4029 #: backup/basebackup.c:1848 replication/logical/origin.c:734 #: replication/logical/origin.c:773 replication/logical/snapbuild.c:1875 #: replication/logical/snapbuild.c:1917 replication/logical/snapbuild.c:1944 #: replication/slot.c:1811 replication/slot.c:1852 replication/walsender.c:663 -#: utils/cache/relmapper.c:817 +#: utils/cache/relmapper.c:820 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "не удалось прочитать файл \"%s\" (прочитано байт: %d из %zu)" @@ -111,18 +111,18 @@ msgstr "не удалось прочитать файл \"%s\" (прочитан #: access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 #: access/transam/timeline.c:392 access/transam/timeline.c:438 #: access/transam/timeline.c:516 access/transam/twophase.c:1361 -#: access/transam/twophase.c:1773 access/transam/xlog.c:3054 -#: access/transam/xlog.c:3247 access/transam/xlog.c:3252 -#: access/transam/xlog.c:3390 access/transam/xlog.c:3992 -#: access/transam/xlog.c:4738 commands/copyfrom.c:1581 commands/copyto.c:327 +#: access/transam/twophase.c:1773 access/transam/xlog.c:3056 +#: access/transam/xlog.c:3249 access/transam/xlog.c:3254 +#: access/transam/xlog.c:3392 access/transam/xlog.c:3994 +#: access/transam/xlog.c:4740 commands/copyfrom.c:1585 commands/copyto.c:327 #: libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 #: replication/logical/origin.c:667 replication/logical/origin.c:806 #: replication/logical/reorderbuffer.c:5016 #: replication/logical/snapbuild.c:1779 replication/logical/snapbuild.c:1952 #: replication/slot.c:1698 replication/slot.c:1859 replication/walsender.c:673 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:745 -#: storage/file/fd.c:3643 storage/file/fd.c:3749 utils/cache/relmapper.c:828 -#: utils/cache/relmapper.c:956 +#: storage/file/fd.c:3643 storage/file/fd.c:3749 utils/cache/relmapper.c:831 +#: utils/cache/relmapper.c:968 #, c-format msgid "could not close file \"%s\": %m" msgstr "не удалось закрыть файл \"%s\": %m" @@ -150,10 +150,10 @@ msgstr "" #: ../common/file_utils.c:365 access/heap/rewriteheap.c:1264 #: access/transam/timeline.c:111 access/transam/timeline.c:251 #: access/transam/timeline.c:348 access/transam/twophase.c:1305 -#: access/transam/xlog.c:2941 access/transam/xlog.c:3123 -#: access/transam/xlog.c:3162 access/transam/xlog.c:3357 -#: access/transam/xlog.c:4012 access/transam/xlogrecovery.c:4209 -#: access/transam/xlogrecovery.c:4312 access/transam/xlogutils.c:852 +#: access/transam/xlog.c:2943 access/transam/xlog.c:3125 +#: access/transam/xlog.c:3164 access/transam/xlog.c:3359 +#: access/transam/xlog.c:4014 access/transam/xlogrecovery.c:4243 +#: access/transam/xlogrecovery.c:4346 access/transam/xlogutils.c:852 #: backup/basebackup.c:522 backup/basebackup.c:1520 postmaster/syslogger.c:1560 #: replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3611 #: replication/logical/reorderbuffer.c:4162 @@ -162,21 +162,21 @@ msgstr "" #: replication/slot.c:1779 replication/walsender.c:631 #: replication/walsender.c:2722 storage/file/copydir.c:161 #: storage/file/fd.c:720 storage/file/fd.c:3395 storage/file/fd.c:3630 -#: storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:792 -#: utils/cache/relmapper.c:900 utils/error/elog.c:1933 -#: utils/init/miscinit.c:1366 utils/init/miscinit.c:1500 -#: utils/init/miscinit.c:1577 utils/misc/guc.c:8991 utils/misc/guc.c:9040 +#: storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:795 +#: utils/cache/relmapper.c:912 utils/error/elog.c:1933 +#: utils/init/miscinit.c:1374 utils/init/miscinit.c:1508 +#: utils/init/miscinit.c:1585 utils/misc/guc.c:8998 utils/misc/guc.c:9047 #, c-format msgid "could not open file \"%s\": %m" msgstr "не удалось открыть файл \"%s\": %m" #: ../common/controldata_utils.c:240 ../common/controldata_utils.c:243 #: access/transam/twophase.c:1746 access/transam/twophase.c:1755 -#: access/transam/xlog.c:8674 access/transam/xlogfuncs.c:600 +#: access/transam/xlog.c:8676 access/transam/xlogfuncs.c:600 #: backup/basebackup_server.c:173 backup/basebackup_server.c:266 #: postmaster/postmaster.c:5633 postmaster/syslogger.c:1571 #: postmaster/syslogger.c:1584 postmaster/syslogger.c:1597 -#: utils/cache/relmapper.c:934 +#: utils/cache/relmapper.c:946 #, c-format msgid "could not write file \"%s\": %m" msgstr "не удалось записать файл \"%s\": %m" @@ -186,13 +186,13 @@ 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:510 access/transam/twophase.c:1767 -#: access/transam/xlog.c:3047 access/transam/xlog.c:3241 -#: access/transam/xlog.c:3985 access/transam/xlog.c:7977 -#: access/transam/xlog.c:8020 backup/basebackup_server.c:207 -#: replication/logical/snapbuild.c:1772 replication/slot.c:1684 -#: replication/slot.c:1789 storage/file/fd.c:737 storage/file/fd.c:3741 -#: storage/smgr/md.c:992 storage/smgr/md.c:1033 storage/sync/sync.c:453 -#: utils/cache/relmapper.c:949 utils/misc/guc.c:8760 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3243 +#: access/transam/xlog.c:3987 access/transam/xlog.c:7979 +#: access/transam/xlog.c:8022 backup/basebackup_server.c:207 +#: commands/dbcommands.c:514 replication/logical/snapbuild.c:1772 +#: replication/slot.c:1684 replication/slot.c:1789 storage/file/fd.c:737 +#: storage/file/fd.c:3741 storage/smgr/md.c:992 storage/smgr/md.c:1033 +#: storage/sync/sync.c:453 utils/cache/relmapper.c:961 utils/misc/guc.c:8767 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "не удалось синхронизировать с ФС файл \"%s\": %m" @@ -204,8 +204,8 @@ msgstr "не удалось синхронизировать с ФС файл \" #: ../common/md5_common.c:155 ../common/psprintf.c:143 #: ../common/scram-common.c:247 ../common/stringinfo.c:305 ../port/path.c:751 #: ../port/path.c:789 ../port/path.c:806 access/transam/twophase.c:1414 -#: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1338 -#: libpq/auth.c:1406 libpq/auth.c:1964 libpq/be-secure-gssapi.c:520 +#: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1336 +#: libpq/auth.c:1404 libpq/auth.c:1962 libpq/be-secure-gssapi.c:520 #: postmaster/bgworker.c:349 postmaster/bgworker.c:931 #: postmaster/postmaster.c:2594 postmaster/postmaster.c:4180 #: postmaster/postmaster.c:5558 postmaster/postmaster.c:5929 @@ -213,15 +213,15 @@ msgstr "не удалось синхронизировать с ФС файл \" #: replication/logical/logical.c:205 replication/walsender.c:701 #: storage/buffer/localbuf.c:442 storage/file/fd.c:892 storage/file/fd.c:1434 #: storage/file/fd.c:1595 storage/file/fd.c:2409 storage/ipc/procarray.c:1451 -#: storage/ipc/procarray.c:2281 storage/ipc/procarray.c:2288 -#: storage/ipc/procarray.c:2793 storage/ipc/procarray.c:3424 +#: storage/ipc/procarray.c:2280 storage/ipc/procarray.c:2287 +#: storage/ipc/procarray.c:2792 storage/ipc/procarray.c:3423 #: utils/adt/formatting.c:1732 utils/adt/formatting.c:1854 #: utils/adt/formatting.c:1977 utils/adt/pg_locale.c:453 #: utils/adt/pg_locale.c:617 utils/adt/regexp.c:224 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:5192 -#: utils/misc/guc.c:5208 utils/misc/guc.c:5221 utils/misc/guc.c:8738 +#: utils/misc/guc.c:5208 utils/misc/guc.c:5221 utils/misc/guc.c:8745 #: 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:266 #: utils/mmgr/mcxt.c:888 utils/mmgr/mcxt.c:924 utils/mmgr/mcxt.c:962 @@ -273,7 +273,7 @@ msgstr "не удалось найти запускаемый файл \"%s\"" msgid "could not change directory to \"%s\": %m" msgstr "не удалось перейти в каталог \"%s\": %m" -#: ../common/exec.c:299 access/transam/xlog.c:8323 backup/basebackup.c:1340 +#: ../common/exec.c:299 access/transam/xlog.c:8325 backup/basebackup.c:1340 #: utils/adt/misc.c:342 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -304,7 +304,7 @@ msgstr "попытка дублирования нулевого указате #: ../common/file_utils.c:455 access/transam/twophase.c:1317 #: access/transam/xlogarchive.c:111 access/transam/xlogarchive.c:237 #: backup/basebackup.c:338 backup/basebackup.c:528 backup/basebackup.c:599 -#: commands/copyfrom.c:1531 commands/copyto.c:725 commands/extension.c:3390 +#: commands/copyfrom.c:1535 commands/copyto.c:725 commands/extension.c:3390 #: commands/tablespace.c:826 commands/tablespace.c:917 postmaster/pgarch.c:597 #: replication/logical/snapbuild.c:1651 storage/file/copydir.c:68 #: storage/file/copydir.c:107 storage/file/fd.c:1951 storage/file/fd.c:2037 @@ -463,7 +463,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:1368 libpq/auth.c:2400 +#: ../common/restricted_token.c:64 libpq/auth.c:1366 libpq/auth.c:2398 #, c-format msgid "could not load library \"%s\": error code %lu" msgstr "не удалось загрузить библиотеку \"%s\" (код ошибки: %lu)" @@ -548,7 +548,7 @@ msgstr "" msgid "could not look up effective user ID %ld: %s" msgstr "выяснить эффективный идентификатор пользователя (%ld) не удалось: %s" -#: ../common/username.c:45 libpq/auth.c:1900 +#: ../common/username.c:45 libpq/auth.c:1898 msgid "user does not exist" msgstr "пользователь не существует" @@ -726,7 +726,7 @@ msgstr "не удалось открыть родительскую таблиц msgid "index \"%s\" is not valid" msgstr "индекс \"%s\" - нерабочий" -#: access/brin/brin_bloom.c:750 access/brin/brin_bloom.c:792 +#: access/brin/brin_bloom.c:749 access/brin/brin_bloom.c:791 #: access/brin/brin_minmax_multi.c:2986 access/brin/brin_minmax_multi.c:3129 #: statistics/dependencies.c:663 statistics/dependencies.c:716 #: statistics/mcv.c:1484 statistics/mcv.c:1515 statistics/mvdistinct.c:344 @@ -882,7 +882,7 @@ msgstr "число столбцов (%d) превышает предел (%d)" msgid "number of index columns (%d) exceeds limit (%d)" msgstr "число столбцов индекса (%d) превышает предел (%d)" -#: access/common/indextuple.c:209 access/spgist/spgutils.c:958 +#: access/common/indextuple.c:209 access/spgist/spgutils.c:965 #, c-format msgid "index row requires %zu bytes, maximum size is %zu" msgstr "строка индекса требует байт: %zu, при максимуме: %zu" @@ -916,7 +916,7 @@ msgstr "В RESET не должно передаваться значение п msgid "unrecognized parameter namespace \"%s\"" msgstr "нераспознанное пространство имён параметров \"%s\"" -#: access/common/reloptions.c:1303 utils/misc/guc.c:12995 +#: access/common/reloptions.c:1303 utils/misc/guc.c:13002 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "таблицы со свойством WITH OIDS не поддерживаются" @@ -1024,7 +1024,7 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Для исправления выполните REINDEX INDEX \"%s\"." #: access/gin/ginutil.c:145 executor/execExpr.c:2168 -#: utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6486 +#: utils/adt/arrayfuncs.c:3866 utils/adt/arrayfuncs.c:6535 #: utils/adt/rowtypes.c:957 #, c-format msgid "could not identify a comparison function for type %s" @@ -1137,7 +1137,7 @@ msgstr "" #: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:668 #: catalog/heap.c:674 commands/createas.c:206 commands/createas.c:515 -#: commands/indexcmds.c:1979 commands/tablecmds.c:17503 commands/view.c:86 +#: commands/indexcmds.c:1955 commands/tablecmds.c:17513 commands/view.c:86 #: regex/regc_pg_locale.c:243 utils/adt/formatting.c:1690 #: utils/adt/formatting.c:1812 utils/adt/formatting.c:1935 utils/adt/like.c:190 #: utils/adt/like_support.c:1025 utils/adt/varchar.c:733 @@ -1152,7 +1152,7 @@ msgid "index row size %zu exceeds hash maximum %zu" msgstr "размер строки индекса (%zu) больше предельного размера хеша (%zu)" #: access/hash/hashinsert.c:85 access/spgist/spgdoinsert.c:2005 -#: access/spgist/spgdoinsert.c:2282 access/spgist/spgutils.c:1019 +#: access/spgist/spgdoinsert.c:2282 access/spgist/spgutils.c:1026 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Значения, не умещающиеся в страницу буфера, нельзя проиндексировать." @@ -1213,18 +1213,18 @@ msgstr "удалять кортежи во время параллельных msgid "attempted to delete invisible tuple" msgstr "попытка удаления невидимого кортежа" -#: access/heap/heapam.c:3183 access/heap/heapam.c:6025 +#: access/heap/heapam.c:3188 access/heap/heapam.c:6032 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "изменять кортежи во время параллельных операций нельзя" -#: access/heap/heapam.c:3307 +#: access/heap/heapam.c:3312 #, c-format msgid "attempted to update invisible tuple" msgstr "попытка изменения невидимого кортежа" -#: access/heap/heapam.c:4669 access/heap/heapam.c:4707 -#: access/heap/heapam.c:4972 access/heap/heapam_handler.c:456 +#: access/heap/heapam.c:4676 access/heap/heapam.c:4714 +#: access/heap/heapam.c:4979 access/heap/heapam_handler.c:456 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "не удалось получить блокировку строки в таблице \"%s\"" @@ -1250,10 +1250,10 @@ msgstr "не удалось записать в файл \"%s\" (записан #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:485 -#: access/transam/xlog.c:2963 access/transam/xlog.c:3176 -#: access/transam/xlog.c:3964 access/transam/xlog.c:8657 +#: access/transam/xlog.c:2965 access/transam/xlog.c:3178 +#: access/transam/xlog.c:3966 access/transam/xlog.c:8659 #: access/transam/xlogfuncs.c:594 backup/basebackup_server.c:149 -#: backup/basebackup_server.c:242 commands/dbcommands.c:517 +#: backup/basebackup_server.c:242 commands/dbcommands.c:494 #: postmaster/postmaster.c:4607 postmaster/postmaster.c:5620 #: replication/logical/origin.c:587 replication/slot.c:1631 #: storage/file/copydir.c:167 storage/smgr/md.c:222 utils/time/snapmgr.c:1261 @@ -1268,15 +1268,15 @@ msgstr "не удалось обрезать файл \"%s\" до нужного #: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 #: access/transam/timeline.c:424 access/transam/timeline.c:502 -#: access/transam/xlog.c:3035 access/transam/xlog.c:3232 -#: access/transam/xlog.c:3976 commands/dbcommands.c:529 +#: access/transam/xlog.c:3037 access/transam/xlog.c:3234 +#: access/transam/xlog.c:3978 commands/dbcommands.c:506 #: postmaster/postmaster.c:4617 postmaster/postmaster.c:4627 #: replication/logical/origin.c:599 replication/logical/origin.c:641 #: replication/logical/origin.c:660 replication/logical/snapbuild.c:1748 #: replication/slot.c:1666 storage/file/buffile.c:537 -#: storage/file/copydir.c:207 utils/init/miscinit.c:1441 -#: utils/init/miscinit.c:1452 utils/init/miscinit.c:1460 utils/misc/guc.c:8721 -#: utils/misc/guc.c:8752 utils/misc/guc.c:10750 utils/misc/guc.c:10764 +#: storage/file/copydir.c:207 utils/init/miscinit.c:1449 +#: utils/init/miscinit.c:1460 utils/init/miscinit.c:1468 utils/misc/guc.c:8728 +#: utils/misc/guc.c:8759 utils/misc/guc.c:10757 utils/misc/guc.c:10771 #: utils/time/snapmgr.c:1266 utils/time/snapmgr.c:1273 #, c-format msgid "could not write to file \"%s\": %m" @@ -1575,14 +1575,14 @@ msgstr "для метода доступа индекса \"%s\" не задан msgid "transaction aborted during system catalog scan" msgstr "транзакция прервана во время сканирования системного каталога" -#: access/index/indexam.c:142 catalog/objectaddress.c:1376 -#: commands/indexcmds.c:2807 commands/tablecmds.c:271 commands/tablecmds.c:295 -#: commands/tablecmds.c:17191 commands/tablecmds.c:18974 +#: access/index/indexam.c:203 catalog/objectaddress.c:1376 +#: commands/indexcmds.c:2783 commands/tablecmds.c:271 commands/tablecmds.c:295 +#: commands/tablecmds.c:17199 commands/tablecmds.c:18984 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" - это не индекс" -#: access/index/indexam.c:973 +#: access/index/indexam.c:1010 #, c-format msgid "operator class %s has no options" msgstr "у класса операторов %s нет параметров" @@ -1665,7 +1665,7 @@ msgstr "" "в семействе операторов \"%s\" метода доступа %s нет опорной функции для " "типов %s и %s" -#: access/spgist/spgutils.c:244 +#: access/spgist/spgutils.c:242 #, c-format msgid "" "compress method must be defined when leaf type is different from input type" @@ -1673,7 +1673,7 @@ msgstr "" "метод сжатия должен быть определён, когда тип листьев отличается от входного " "типа" -#: access/spgist/spgutils.c:1016 +#: access/spgist/spgutils.c:1023 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "внутренний размер кортежа SP-GiST (%zu) превышает максимум (%zu)" @@ -1701,8 +1701,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:1842 commands/tablecmds.c:13880 -#: commands/tablecmds.c:17200 +#: access/table/table.c:150 catalog/aclchk.c:1842 commands/tablecmds.c:13888 +#: commands/tablecmds.c:17208 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\" - это составной тип" @@ -1718,7 +1718,7 @@ msgid "%s cannot be empty." msgstr "Значение %s не может быть пустым." # well-spelled: симв -#: access/table/tableamapi.c:122 utils/misc/guc.c:12919 +#: access/table/tableamapi.c:122 utils/misc/guc.c:12926 #, c-format msgid "%s is too long (maximum %d characters)." msgstr "Длина %s превышает предел (%d симв.)." @@ -2503,7 +2503,7 @@ msgstr "фиксировать подтранзакции во время пар msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "в одной транзакции не может быть больше 2^32-1 подтранзакций" -#: access/transam/xlog.c:1463 +#: access/transam/xlog.c:1465 #, c-format msgid "" "request to flush past end of generated WAL; request %X/%X, current position " @@ -2512,55 +2512,55 @@ msgstr "" "запрос на сброс данных за концом сгенерированного WAL; запрошена позиция %X/" "%X, текущая позиция %X/%X" -#: access/transam/xlog.c:2224 +#: access/transam/xlog.c:2226 #, 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:3471 access/transam/xlogutils.c:847 +#: access/transam/xlog.c:3473 access/transam/xlogutils.c:847 #: replication/walsender.c:2716 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "запрошенный сегмент WAL %s уже удалён" -#: access/transam/xlog.c:3756 +#: access/transam/xlog.c:3758 #, c-format msgid "could not rename file \"%s\": %m" msgstr "не удалось переименовать файл \"%s\": %m" -#: access/transam/xlog.c:3798 access/transam/xlog.c:3808 +#: access/transam/xlog.c:3800 access/transam/xlog.c:3810 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "требуемый каталог WAL \"%s\" не существует" -#: access/transam/xlog.c:3814 +#: access/transam/xlog.c:3816 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "создаётся отсутствующий каталог WAL \"%s\"" -#: access/transam/xlog.c:3817 commands/dbcommands.c:3115 +#: access/transam/xlog.c:3819 commands/dbcommands.c:3115 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "не удалось создать отсутствующий каталог \"%s\": %m" -#: access/transam/xlog.c:3884 +#: access/transam/xlog.c:3886 #, c-format msgid "could not generate secret authorization token" msgstr "не удалось сгенерировать случайное число для аутентификации" -#: access/transam/xlog.c:4043 access/transam/xlog.c:4052 -#: access/transam/xlog.c:4076 access/transam/xlog.c:4083 -#: access/transam/xlog.c:4090 access/transam/xlog.c:4095 -#: access/transam/xlog.c:4102 access/transam/xlog.c:4109 -#: access/transam/xlog.c:4116 access/transam/xlog.c:4123 -#: access/transam/xlog.c:4130 access/transam/xlog.c:4137 -#: access/transam/xlog.c:4146 access/transam/xlog.c:4153 -#: utils/init/miscinit.c:1598 +#: access/transam/xlog.c:4045 access/transam/xlog.c:4054 +#: access/transam/xlog.c:4078 access/transam/xlog.c:4085 +#: access/transam/xlog.c:4092 access/transam/xlog.c:4097 +#: access/transam/xlog.c:4104 access/transam/xlog.c:4111 +#: access/transam/xlog.c:4118 access/transam/xlog.c:4125 +#: access/transam/xlog.c:4132 access/transam/xlog.c:4139 +#: access/transam/xlog.c:4148 access/transam/xlog.c:4155 +#: utils/init/miscinit.c:1606 #, c-format msgid "database files are incompatible with server" msgstr "файлы базы данных несовместимы с сервером" -#: access/transam/xlog.c:4044 +#: access/transam/xlog.c:4046 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), " @@ -2569,7 +2569,7 @@ msgstr "" "Кластер баз данных был инициализирован с PG_CONTROL_VERSION %d (0x%08x), но " "сервер скомпилирован с PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4048 +#: access/transam/xlog.c:4050 #, c-format msgid "" "This could be a problem of mismatched byte ordering. It looks like you need " @@ -2578,7 +2578,7 @@ msgstr "" "Возможно, проблема вызвана разным порядком байт. Кажется, вам надо выполнить " "initdb." -#: access/transam/xlog.c:4053 +#: access/transam/xlog.c:4055 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d, but the " @@ -2587,18 +2587,18 @@ msgstr "" "Кластер баз данных был инициализирован с PG_CONTROL_VERSION %d, но сервер " "скомпилирован с PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4056 access/transam/xlog.c:4080 -#: access/transam/xlog.c:4087 access/transam/xlog.c:4092 +#: access/transam/xlog.c:4058 access/transam/xlog.c:4082 +#: access/transam/xlog.c:4089 access/transam/xlog.c:4094 #, c-format msgid "It looks like you need to initdb." msgstr "Кажется, вам надо выполнить initdb." -#: access/transam/xlog.c:4067 +#: access/transam/xlog.c:4069 #, c-format msgid "incorrect checksum in control file" msgstr "ошибка контрольной суммы в файле pg_control" -#: access/transam/xlog.c:4077 +#: access/transam/xlog.c:4079 #, c-format msgid "" "The database cluster was initialized with CATALOG_VERSION_NO %d, but the " @@ -2607,7 +2607,7 @@ msgstr "" "Кластер баз данных был инициализирован с CATALOG_VERSION_NO %d, но сервер " "скомпилирован с CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4084 +#: access/transam/xlog.c:4086 #, c-format msgid "" "The database cluster was initialized with MAXALIGN %d, but the server was " @@ -2616,7 +2616,7 @@ msgstr "" "Кластер баз данных был инициализирован с MAXALIGN %d, но сервер " "скомпилирован с MAXALIGN %d." -#: access/transam/xlog.c:4091 +#: access/transam/xlog.c:4093 #, c-format msgid "" "The database cluster appears to use a different floating-point number format " @@ -2625,7 +2625,7 @@ msgstr "" "Кажется, в кластере баз данных и в программе сервера используются разные " "форматы чисел с плавающей точкой." -#: access/transam/xlog.c:4096 +#: access/transam/xlog.c:4098 #, c-format msgid "" "The database cluster was initialized with BLCKSZ %d, but the server was " @@ -2634,16 +2634,16 @@ msgstr "" "Кластер баз данных был инициализирован с BLCKSZ %d, но сервер скомпилирован " "с BLCKSZ %d." -#: access/transam/xlog.c:4099 access/transam/xlog.c:4106 -#: access/transam/xlog.c:4113 access/transam/xlog.c:4120 -#: access/transam/xlog.c:4127 access/transam/xlog.c:4134 -#: access/transam/xlog.c:4141 access/transam/xlog.c:4149 -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4101 access/transam/xlog.c:4108 +#: access/transam/xlog.c:4115 access/transam/xlog.c:4122 +#: access/transam/xlog.c:4129 access/transam/xlog.c:4136 +#: access/transam/xlog.c:4143 access/transam/xlog.c:4151 +#: access/transam/xlog.c:4158 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Кажется, вам надо перекомпилировать сервер или выполнить initdb." -#: access/transam/xlog.c:4103 +#: access/transam/xlog.c:4105 #, c-format msgid "" "The database cluster was initialized with RELSEG_SIZE %d, but the server was " @@ -2652,7 +2652,7 @@ msgstr "" "Кластер баз данных был инициализирован с RELSEG_SIZE %d, но сервер " "скомпилирован с RELSEG_SIZE %d." -#: access/transam/xlog.c:4110 +#: access/transam/xlog.c:4112 #, c-format msgid "" "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was " @@ -2661,7 +2661,7 @@ msgstr "" "Кластер баз данных был инициализирован с XLOG_BLCKSZ %d, но сервер " "скомпилирован с XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4117 +#: access/transam/xlog.c:4119 #, c-format msgid "" "The database cluster was initialized with NAMEDATALEN %d, but the server was " @@ -2670,7 +2670,7 @@ msgstr "" "Кластер баз данных был инициализирован с NAMEDATALEN %d, но сервер " "скомпилирован с NAMEDATALEN %d." -#: access/transam/xlog.c:4124 +#: access/transam/xlog.c:4126 #, c-format msgid "" "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server " @@ -2679,7 +2679,7 @@ msgstr "" "Кластер баз данных был инициализирован с INDEX_MAX_KEYS %d, но сервер " "скомпилирован с INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4131 +#: access/transam/xlog.c:4133 #, c-format msgid "" "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " @@ -2688,7 +2688,7 @@ msgstr "" "Кластер баз данных был инициализирован с TOAST_MAX_CHUNK_SIZE %d, но сервер " "скомпилирован с TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4138 +#: access/transam/xlog.c:4140 #, c-format msgid "" "The database cluster was initialized with LOBLKSIZE %d, but the server was " @@ -2697,7 +2697,7 @@ msgstr "" "Кластер баз данных был инициализирован с LOBLKSIZE %d, но сервер " "скомпилирован с LOBLKSIZE %d." -#: access/transam/xlog.c:4147 +#: access/transam/xlog.c:4149 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT8_BYVAL but the server " @@ -2706,7 +2706,7 @@ msgstr "" "Кластер баз данных был инициализирован без USE_FLOAT8_BYVAL, но сервер " "скомпилирован с USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4154 +#: access/transam/xlog.c:4156 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT8_BYVAL but the server " @@ -2715,7 +2715,7 @@ msgstr "" "Кластер баз данных был инициализирован с USE_FLOAT8_BYVAL, но сервер был " "скомпилирован без USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4163 +#: access/transam/xlog.c:4165 #, c-format msgid "" "WAL segment size must be a power of two between 1 MB and 1 GB, but the " @@ -2733,76 +2733,76 @@ msgstr[2] "" "размер сегмента WAL должен задаваться степенью 2 в интервале от 1 МБ до 1 " "ГБ, но в управляющем файле указано значение: %d" -#: access/transam/xlog.c:4175 +#: access/transam/xlog.c:4177 #, c-format msgid "\"min_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"min_wal_size\" должен быть минимум вдвое больше \"wal_segment_size\"" -#: access/transam/xlog.c:4179 +#: access/transam/xlog.c:4181 #, c-format msgid "\"max_wal_size\" must be at least twice \"wal_segment_size\"" msgstr "\"max_wal_size\" должен быть минимум вдвое больше \"wal_segment_size\"" -#: access/transam/xlog.c:4620 +#: access/transam/xlog.c:4622 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "не удалось записать начальный файл журнала предзаписи: %m" -#: access/transam/xlog.c:4628 +#: access/transam/xlog.c:4630 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "не удалось сбросить на диск начальный файл журнала предзаписи: %m" -#: access/transam/xlog.c:4634 +#: access/transam/xlog.c:4636 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "не удалось закрыть начальный файл журнала предзаписи: %m" -#: access/transam/xlog.c:4852 +#: access/transam/xlog.c:4854 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "" "WAL был создан с параметром wal_level=minimal, продолжение восстановления " "невозможно" -#: access/transam/xlog.c:4853 +#: access/transam/xlog.c:4855 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "Это происходит, если вы на время устанавливали wal_level=minimal." -#: access/transam/xlog.c:4854 +#: access/transam/xlog.c:4856 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "" "Используйте резервную копию, сделанную после переключения wal_level на любой " "уровень выше minimal." -#: access/transam/xlog.c:4918 +#: access/transam/xlog.c:4920 #, c-format msgid "control file contains invalid checkpoint location" msgstr "файл pg_control содержит неправильную позицию контрольной точки" -#: access/transam/xlog.c:4929 +#: access/transam/xlog.c:4931 #, c-format msgid "database system was shut down at %s" msgstr "система БД была выключена: %s" -#: access/transam/xlog.c:4935 +#: access/transam/xlog.c:4937 #, c-format msgid "database system was shut down in recovery at %s" msgstr "система БД была выключена в процессе восстановления: %s" -#: access/transam/xlog.c:4941 +#: access/transam/xlog.c:4943 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "выключение системы БД было прервано; последний момент работы: %s" -#: access/transam/xlog.c:4947 +#: access/transam/xlog.c:4949 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "работа системы БД была прервана во время восстановления: %s" -#: access/transam/xlog.c:4949 +#: access/transam/xlog.c:4951 #, c-format msgid "" "This probably means that some data is corrupted and you will have to use the " @@ -2811,14 +2811,14 @@ msgstr "" "Это скорее всего означает, что некоторые данные повреждены и вам придётся " "восстановить БД из последней резервной копии." -#: access/transam/xlog.c:4955 +#: access/transam/xlog.c:4957 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "" "работа системы БД была прервана в процессе восстановления, время в журнале: " "%s" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4959 #, c-format msgid "" "If this has occurred more than once some data might be corrupted and you " @@ -2827,22 +2827,22 @@ msgstr "" "Если это происходит постоянно, возможно, какие-то данные были испорчены и " "для восстановления стоит выбрать более раннюю точку." -#: access/transam/xlog.c:4963 +#: access/transam/xlog.c:4965 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "работа системы БД была прервана; последний момент работы: %s" -#: access/transam/xlog.c:4969 +#: access/transam/xlog.c:4971 #, c-format msgid "control file contains invalid database cluster state" msgstr "файл pg_control содержит неверный код состояния кластера" -#: access/transam/xlog.c:5353 +#: access/transam/xlog.c:5355 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL закончился без признака окончания копирования" -#: access/transam/xlog.c:5354 +#: access/transam/xlog.c:5356 #, c-format msgid "" "All WAL generated while online backup was taken must be available at " @@ -2851,40 +2851,40 @@ msgstr "" "Все журналы WAL, созданные во время резервного копирования \"на ходу\", " "должны быть в наличии для восстановления." -#: access/transam/xlog.c:5357 +#: access/transam/xlog.c:5359 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL закончился до согласованной точки восстановления" -#: access/transam/xlog.c:5405 +#: access/transam/xlog.c:5407 #, c-format msgid "selected new timeline ID: %u" msgstr "выбранный ID новой линии времени: %u" -#: access/transam/xlog.c:5438 +#: access/transam/xlog.c:5440 #, c-format msgid "archive recovery complete" msgstr "восстановление архива завершено" -#: access/transam/xlog.c:6044 +#: access/transam/xlog.c:6046 #, c-format msgid "shutting down" msgstr "выключение" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:6083 +#: access/transam/xlog.c:6085 #, 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:6095 +#: access/transam/xlog.c:6097 #, 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:6155 +#: access/transam/xlog.c:6157 #, c-format msgid "" "restartpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d " @@ -2898,7 +2898,7 @@ msgstr "" "=%ld.%03d сек., средняя=%ld.%03d сек.; расстояние=%d kB, ожидалось=%d kB" # well-spelled: синхр -#: access/transam/xlog.c:6175 +#: access/transam/xlog.c:6177 #, c-format msgid "" "checkpoint complete: wrote %d buffers (%.1f%%); %d WAL file(s) added, %d " @@ -2911,7 +2911,7 @@ msgstr "" "сек., всего=%ld.%03d сек.; синхронизировано_файлов=%d, самая_долгая_синхр." "=%ld.%03d сек., средняя=%ld.%03d сек.; расстояние=%d kB, ожидалось=%d kB" -#: access/transam/xlog.c:6610 +#: access/transam/xlog.c:6612 #, c-format msgid "" "concurrent write-ahead log activity while database system is shutting down" @@ -2919,75 +2919,75 @@ msgstr "" "во время выключения системы баз данных отмечена активность в журнале " "предзаписи" -#: access/transam/xlog.c:7167 +#: access/transam/xlog.c:7169 #, c-format msgid "recovery restart point at %X/%X" msgstr "точка перезапуска восстановления в позиции %X/%X" -#: access/transam/xlog.c:7169 +#: access/transam/xlog.c:7171 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Последняя завершённая транзакция была выполнена в %s." -#: access/transam/xlog.c:7416 +#: access/transam/xlog.c:7418 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка восстановления \"%s\" создана в позиции %X/%X" -#: access/transam/xlog.c:7623 +#: access/transam/xlog.c:7625 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "" "резервное копирование \"на ходу\" было отменено, продолжить восстановление " "нельзя" -#: access/transam/xlog.c:7680 +#: access/transam/xlog.c:7682 #, c-format msgid "unexpected timeline ID %u (should be %u) in shutdown checkpoint record" msgstr "" "неожиданный ID линии времени %u (должен быть %u) в записи точки выключения" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7740 #, c-format msgid "unexpected timeline ID %u (should be %u) in online checkpoint record" msgstr "" "неожиданный ID линии времени %u (должен быть %u) в записи точки активности" -#: access/transam/xlog.c:7767 +#: access/transam/xlog.c:7769 #, c-format msgid "unexpected timeline ID %u (should be %u) in end-of-recovery record" msgstr "" "неожиданный ID линии времени %u (должен быть %u) в записи конец-" "восстановления" -#: access/transam/xlog.c:8025 +#: access/transam/xlog.c:8027 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "не удалось синхронизировать с ФС файл сквозной записи %s: %m" -#: access/transam/xlog.c:8031 +#: access/transam/xlog.c:8033 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "не удалось синхронизировать с ФС данные (fdatasync) файла \"%s\": %m" -#: access/transam/xlog.c:8126 access/transam/xlog.c:8493 +#: access/transam/xlog.c:8128 access/transam/xlog.c:8495 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "" "Выбранный уровень WAL недостаточен для резервного копирования \"на ходу\"" -#: access/transam/xlog.c:8127 access/transam/xlog.c:8494 +#: access/transam/xlog.c:8129 access/transam/xlog.c:8496 #: access/transam/xlogfuncs.c:199 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "Установите wal_level \"replica\" или \"logical\" при запуске сервера." -#: access/transam/xlog.c:8132 +#: access/transam/xlog.c:8134 #, c-format msgid "backup label too long (max %d bytes)" msgstr "длина метки резервной копии превышает предел (%d байт)" -#: access/transam/xlog.c:8248 +#: access/transam/xlog.c:8250 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed since last restartpoint" @@ -2995,7 +2995,7 @@ msgstr "" "После последней точки перезапуска был воспроизведён WAL, созданный в режиме " "full_page_writes=off." -#: access/transam/xlog.c:8250 access/transam/xlog.c:8606 +#: access/transam/xlog.c:8252 access/transam/xlog.c:8608 #, c-format msgid "" "This means that the backup being taken on the standby is corrupt and should " @@ -3007,32 +3007,32 @@ msgstr "" "CHECKPOINT на ведущем сервере, а затем попробуйте резервное копирование \"на " "ходу\" ещё раз." -#: access/transam/xlog.c:8330 backup/basebackup.c:1345 utils/adt/misc.c:347 +#: access/transam/xlog.c:8332 backup/basebackup.c:1345 utils/adt/misc.c:347 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "целевой путь символической ссылки \"%s\" слишком длинный" -#: access/transam/xlog.c:8380 backup/basebackup.c:1360 +#: access/transam/xlog.c:8382 backup/basebackup.c:1360 #: commands/tablespace.c:399 commands/tablespace.c:581 utils/adt/misc.c:355 #, c-format msgid "tablespaces are not supported on this platform" msgstr "табличные пространства не поддерживаются на этой платформе" -#: access/transam/xlog.c:8539 access/transam/xlog.c:8552 -#: access/transam/xlogrecovery.c:1211 access/transam/xlogrecovery.c:1218 -#: access/transam/xlogrecovery.c:1277 access/transam/xlogrecovery.c:1357 -#: access/transam/xlogrecovery.c:1381 +#: access/transam/xlog.c:8541 access/transam/xlog.c:8554 +#: access/transam/xlogrecovery.c:1237 access/transam/xlogrecovery.c:1244 +#: access/transam/xlogrecovery.c:1303 access/transam/xlogrecovery.c:1383 +#: access/transam/xlogrecovery.c:1407 #, c-format msgid "invalid data in file \"%s\"" msgstr "неверные данные в файле \"%s\"" -#: access/transam/xlog.c:8556 backup/basebackup.c:1200 +#: access/transam/xlog.c:8558 backup/basebackup.c:1200 #, c-format msgid "the standby was promoted during online backup" msgstr "" "дежурный сервер был повышен в процессе резервного копирования \"на ходу\"" -#: access/transam/xlog.c:8557 backup/basebackup.c:1201 +#: access/transam/xlog.c:8559 backup/basebackup.c:1201 #, c-format msgid "" "This means that the backup being taken is corrupt and should not be used. " @@ -3041,7 +3041,7 @@ msgstr "" "Это означает, что создаваемая резервная копия испорчена и использовать её не " "следует. Попробуйте резервное копирование \"на ходу\" ещё раз." -#: access/transam/xlog.c:8604 +#: access/transam/xlog.c:8606 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed during online backup" @@ -3049,13 +3049,13 @@ msgstr "" "В процессе резервного копирования \"на ходу\" был воспроизведён WAL, " "созданный в режиме full_page_writes=off" -#: access/transam/xlog.c:8729 +#: access/transam/xlog.c:8731 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "" "базовое копирование выполнено, ожидается архивация нужных сегментов WAL" -#: access/transam/xlog.c:8743 +#: access/transam/xlog.c:8745 #, c-format msgid "" "still waiting for all required WAL segments to be archived (%d seconds " @@ -3063,7 +3063,7 @@ msgid "" msgstr "" "продолжается ожидание архивации всех нужных сегментов WAL (прошло %d сек.)" -#: access/transam/xlog.c:8745 +#: access/transam/xlog.c:8747 #, c-format msgid "" "Check that your archive_command is executing properly. You can safely " @@ -3074,12 +3074,12 @@ msgstr "" "копирования можно отменить безопасно, но резервная копия базы будет " "непригодна без всех сегментов WAL." -#: access/transam/xlog.c:8752 +#: access/transam/xlog.c:8754 #, c-format msgid "all required WAL segments have been archived" msgstr "все нужные сегменты WAL заархивированы" -#: access/transam/xlog.c:8756 +#: access/transam/xlog.c:8758 #, c-format msgid "" "WAL archiving is not enabled; you must ensure that all required WAL segments " @@ -3088,7 +3088,7 @@ msgstr "" "архивация WAL не настроена; вы должны обеспечить копирование всех требуемых " "сегментов WAL другими средствами для получения резервной копии" -#: access/transam/xlog.c:8805 +#: access/transam/xlog.c:8807 #, c-format msgid "aborting backup due to backend exiting before pg_backup_stop was called" msgstr "" @@ -3204,7 +3204,7 @@ msgstr "%s нельзя выполнять, когда производится msgid "\"wait_seconds\" must not be negative or zero" msgstr "значение \"wait_seconds\" не должно быть отрицательным или нулевым" -#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:252 +#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:257 #, c-format msgid "failed to send signal to postmaster: %m" msgstr "отправить сигнал процессу postmaster не удалось: %m" @@ -3225,59 +3225,59 @@ msgstr "" "recovery_prefetch не поддерживается на платформах, где отсутствует " "posix_fadvise()." -#: access/transam/xlogreader.c:592 +#: access/transam/xlogreader.c:620 #, c-format msgid "invalid record offset at %X/%X" msgstr "неверное смещение записи в позиции %X/%X" -#: access/transam/xlogreader.c:600 +#: access/transam/xlogreader.c:628 #, c-format msgid "contrecord is requested by %X/%X" msgstr "в позиции %X/%X запрошено продолжение записи" -#: access/transam/xlogreader.c:641 access/transam/xlogreader.c:1106 +#: access/transam/xlogreader.c:669 access/transam/xlogreader.c:1134 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "неверная длина записи в позиции %X/%X: ожидалось %u, получено %u" -#: access/transam/xlogreader.c:730 +#: access/transam/xlogreader.c:758 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "нет флага contrecord в позиции %X/%X" -#: access/transam/xlogreader.c:743 +#: access/transam/xlogreader.c:771 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "неверная длина contrecord: %u (ожидалась %lld) в позиции %X/%X" -#: access/transam/xlogreader.c:1114 +#: access/transam/xlogreader.c:1142 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "неверный ID менеджера ресурсов %u в позиции %X/%X" -#: access/transam/xlogreader.c:1127 access/transam/xlogreader.c:1143 +#: access/transam/xlogreader.c:1155 access/transam/xlogreader.c:1171 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запись с неверной ссылкой назад %X/%X в позиции %X/%X" -#: access/transam/xlogreader.c:1181 +#: access/transam/xlogreader.c:1209 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" "некорректная контрольная сумма данных менеджера ресурсов в записи в позиции " "%X/%X" -#: access/transam/xlogreader.c:1218 +#: access/transam/xlogreader.c:1246 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "неверное магическое число %04X в сегменте журнала %s, смещение %u" -#: access/transam/xlogreader.c:1232 access/transam/xlogreader.c:1273 +#: access/transam/xlogreader.c:1260 access/transam/xlogreader.c:1301 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "неверные информационные биты %04X в сегменте журнала %s, смещение %u" -#: access/transam/xlogreader.c:1247 +#: access/transam/xlogreader.c:1275 #, c-format msgid "" "WAL file is from different database system: WAL file database system " @@ -3286,7 +3286,7 @@ msgstr "" "файл WAL принадлежит другой СУБД: в нём указан идентификатор системы БД " "%llu, а идентификатор системы pg_control: %llu" -#: access/transam/xlogreader.c:1255 +#: access/transam/xlogreader.c:1283 #, c-format msgid "" "WAL file is from different database system: incorrect segment size in page " @@ -3295,7 +3295,7 @@ msgstr "" "файл WAL принадлежит другой СУБД: некорректный размер сегмента в заголовке " "страницы" -#: access/transam/xlogreader.c:1261 +#: access/transam/xlogreader.c:1289 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_BLCKSZ in page " @@ -3304,35 +3304,35 @@ msgstr "" "файл WAL принадлежит другой СУБД: некорректный XLOG_BLCKSZ в заголовке " "страницы" -#: access/transam/xlogreader.c:1292 +#: access/transam/xlogreader.c:1320 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неожиданный pageaddr %X/%X в сегменте журнала %s, смещение %u" -#: access/transam/xlogreader.c:1317 +#: access/transam/xlogreader.c:1345 #, 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:1722 +#: access/transam/xlogreader.c:1750 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "идентификатор блока %u идёт не по порядку в позиции %X/%X" -#: access/transam/xlogreader.c:1746 +#: access/transam/xlogreader.c:1774 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA установлен, но данных в позиции %X/%X нет" -#: access/transam/xlogreader.c:1753 +#: access/transam/xlogreader.c:1781 #, 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:1789 +#: access/transam/xlogreader.c:1817 #, c-format msgid "" "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " @@ -3341,21 +3341,21 @@ msgstr "" "BKPIMAGE_HAS_HOLE установлен, но для пропуска заданы смещение %u и длина %u " "при длине образа блока %u в позиции %X/%X" -#: access/transam/xlogreader.c:1805 +#: access/transam/xlogreader.c:1833 #, 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:1819 +#: access/transam/xlogreader.c:1847 #, c-format msgid "BKPIMAGE_COMPRESSED set, but block image length %u at %X/%X" msgstr "" "BKPIMAGE_COMPRESSED установлен, но длина образа блока равна %u в позиции %X/" "%X" -#: access/transam/xlogreader.c:1834 +#: access/transam/xlogreader.c:1862 #, c-format msgid "" "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_COMPRESSED set, but block image " @@ -3364,41 +3364,41 @@ msgstr "" "ни BKPIMAGE_HAS_HOLE, ни BKPIMAGE_COMPRESSED не установлены, но длина образа " "блока равна %u в позиции %X/%X" -#: access/transam/xlogreader.c:1850 +#: access/transam/xlogreader.c:1878 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "" "BKPBLOCK_SAME_REL установлен, но предыдущее значение не задано в позиции %X/" "%X" -#: access/transam/xlogreader.c:1862 +#: access/transam/xlogreader.c:1890 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "неверный идентификатор блока %u в позиции %X/%X" -#: access/transam/xlogreader.c:1929 +#: access/transam/xlogreader.c:1957 #, c-format msgid "record with invalid length at %X/%X" msgstr "запись с неверной длиной в позиции %X/%X" -#: access/transam/xlogreader.c:1954 +#: access/transam/xlogreader.c:1982 #, c-format msgid "could not locate backup block with ID %d in WAL record" msgstr "не удалось найти копию блока с ID %d в записи журнала WAL" -#: access/transam/xlogreader.c:2038 +#: access/transam/xlogreader.c:2066 #, c-format msgid "could not restore image at %X/%X with invalid block %d specified" msgstr "" "не удалось восстановить образ в позиции %X/%X с указанным неверным блоком %d" -#: access/transam/xlogreader.c:2045 +#: access/transam/xlogreader.c:2073 #, c-format msgid "could not restore image at %X/%X with invalid state, block %d" msgstr "" "не удалось восстановить образ в позиции %X/%X с неверным состоянием, блок %d" -#: access/transam/xlogreader.c:2072 access/transam/xlogreader.c:2089 +#: access/transam/xlogreader.c:2100 access/transam/xlogreader.c:2117 #, c-format msgid "" "could not restore image at %X/%X compressed with %s not supported by build, " @@ -3407,7 +3407,7 @@ msgstr "" "не удалось восстановить образ в позиции %X/%X, сжатый методом %s, который не " "поддерживается этой сборкой, блок %d" -#: access/transam/xlogreader.c:2098 +#: access/transam/xlogreader.c:2126 #, c-format msgid "" "could not restore image at %X/%X compressed with unknown method, block %d" @@ -3415,7 +3415,7 @@ msgstr "" "не удалось восстановить образ в позиции %X/%X, сжатый неизвестным методом, " "блок %d" -#: access/transam/xlogreader.c:2106 +#: access/transam/xlogreader.c:2134 #, c-format msgid "could not decompress image at %X/%X, block %d" msgstr "не удалось развернуть образ в позиции %X/%X, блок %d" @@ -3457,12 +3457,21 @@ msgstr "" msgid "starting archive recovery" msgstr "начинается восстановление архива" -#: access/transam/xlogrecovery.c:651 +#: access/transam/xlogrecovery.c:635 +#, c-format +msgid "" +"starting backup recovery with redo LSN %X/%X, checkpoint LSN %X/%X, on " +"timeline ID %u" +msgstr "" +"начинается восстановление копии с LSN redo %X/%X, LSN контрольной точки %X/" +"%X, на линии времени %u" + +#: access/transam/xlogrecovery.c:667 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "не удалось найти положение REDO, указанное записью контрольной точки" -#: access/transam/xlogrecovery.c:652 access/transam/xlogrecovery.c:662 +#: access/transam/xlogrecovery.c:668 access/transam/xlogrecovery.c:678 #, c-format msgid "" "If you are restoring from a backup, touch \"%s/recovery.signal\" and add " @@ -3478,42 +3487,47 @@ msgstr "" "Будьте осторожны: при восстановлении резервной копии удаление \"%s/" "backup_label\" приведёт к повреждению кластера." -#: access/transam/xlogrecovery.c:661 +#: access/transam/xlogrecovery.c:677 #, c-format msgid "could not locate required checkpoint record" msgstr "не удалось считать нужную запись контрольной точки" -#: access/transam/xlogrecovery.c:690 commands/tablespace.c:685 +#: access/transam/xlogrecovery.c:706 commands/tablespace.c:685 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "не удалось создать символическую ссылку \"%s\": %m" -#: access/transam/xlogrecovery.c:722 access/transam/xlogrecovery.c:728 +#: access/transam/xlogrecovery.c:738 access/transam/xlogrecovery.c:744 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "файл \"%s\" игнорируется ввиду отсутствия файла \"%s\"" -#: access/transam/xlogrecovery.c:724 +#: access/transam/xlogrecovery.c:740 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Файл \"%s\" был переименован в \"%s\"." -#: access/transam/xlogrecovery.c:730 +#: access/transam/xlogrecovery.c:746 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Не удалось переименовать файл \"%s\" в \"%s\" (%m)." -#: access/transam/xlogrecovery.c:784 +#: access/transam/xlogrecovery.c:785 +#, c-format +msgid "restarting backup recovery with redo LSN %X/%X" +msgstr "перезапуск восстановления копии с LSN redo %X/%X" + +#: access/transam/xlogrecovery.c:810 #, c-format msgid "could not locate a valid checkpoint record" msgstr "не удалось считать правильную запись контрольной точки" -#: access/transam/xlogrecovery.c:808 +#: access/transam/xlogrecovery.c:834 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "в истории сервера нет ответвления запрошенной линии времени %u" -#: access/transam/xlogrecovery.c:810 +#: access/transam/xlogrecovery.c:836 #, c-format msgid "" "Latest checkpoint is at %X/%X on timeline %u, but in the history of the " @@ -3522,7 +3536,7 @@ msgstr "" "Последняя контрольная точка: %X/%X на линии времени %u, но в истории " "запрошенной линии времени сервер ответвился с этой линии в %X/%X." -#: access/transam/xlogrecovery.c:824 +#: access/transam/xlogrecovery.c:850 #, c-format msgid "" "requested timeline %u does not contain minimum recovery point %X/%X on " @@ -3531,22 +3545,22 @@ msgstr "" "запрошенная линия времени %u не содержит минимальную точку восстановления %X/" "%X на линии времени %u" -#: access/transam/xlogrecovery.c:852 +#: access/transam/xlogrecovery.c:878 #, c-format msgid "invalid next transaction ID" msgstr "неверный ID следующей транзакции" -#: access/transam/xlogrecovery.c:857 +#: access/transam/xlogrecovery.c:883 #, c-format msgid "invalid redo in checkpoint record" msgstr "неверная запись REDO в контрольной точке" -#: access/transam/xlogrecovery.c:868 +#: access/transam/xlogrecovery.c:894 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "неверная запись REDO в контрольной точке выключения" -#: access/transam/xlogrecovery.c:897 +#: access/transam/xlogrecovery.c:923 #, c-format msgid "" "database system was not properly shut down; automatic recovery in progress" @@ -3554,19 +3568,19 @@ msgstr "" "система БД была остановлена нештатно; производится автоматическое " "восстановление" -#: access/transam/xlogrecovery.c:901 +#: access/transam/xlogrecovery.c:927 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "" "восстановление после сбоя начинается на линии времени %u, целевая линия " "времени: %u" -#: access/transam/xlogrecovery.c:944 +#: access/transam/xlogrecovery.c:970 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label содержит данные, не согласованные с файлом pg_control" -#: access/transam/xlogrecovery.c:945 +#: access/transam/xlogrecovery.c:971 #, c-format msgid "" "This means that the backup is corrupted and you will have to use another " @@ -3575,24 +3589,24 @@ msgstr "" "Это означает, что резервная копия повреждена и для восстановления БД " "придётся использовать другую копию." -#: access/transam/xlogrecovery.c:999 +#: access/transam/xlogrecovery.c:1025 #, c-format msgid "using recovery command file \"%s\" is not supported" msgstr "" "использование файла с конфигурацией восстановления \"%s\" не поддерживается" -#: access/transam/xlogrecovery.c:1064 +#: access/transam/xlogrecovery.c:1090 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "" "режим резервного сервера не поддерживается однопользовательским сервером" -#: access/transam/xlogrecovery.c:1081 +#: access/transam/xlogrecovery.c:1107 #, c-format msgid "specified neither primary_conninfo nor restore_command" msgstr "не указано ни primary_conninfo, ни restore_command" -#: access/transam/xlogrecovery.c:1082 +#: access/transam/xlogrecovery.c:1108 #, c-format msgid "" "The database server will regularly poll the pg_wal subdirectory to check for " @@ -3601,79 +3615,79 @@ msgstr "" "Сервер БД будет регулярно опрашивать подкаталог pg_wal и проверять " "содержащиеся в нём файлы." -#: access/transam/xlogrecovery.c:1090 +#: access/transam/xlogrecovery.c:1116 #, c-format msgid "must specify restore_command when standby mode is not enabled" msgstr "" "необходимо задать restore_command, если не выбран режим резервного сервера" -#: access/transam/xlogrecovery.c:1128 +#: access/transam/xlogrecovery.c:1154 #, c-format msgid "recovery target timeline %u does not exist" msgstr "целевая линия времени для восстановления %u не существует" -#: access/transam/xlogrecovery.c:1278 +#: access/transam/xlogrecovery.c:1304 #, c-format msgid "Timeline ID parsed is %u, but expected %u." msgstr "Получен идентификатор линии времени %u, но ожидался %u." -#: access/transam/xlogrecovery.c:1660 +#: access/transam/xlogrecovery.c:1686 #, c-format msgid "redo starts at %X/%X" msgstr "запись REDO начинается со смещения %X/%X" -#: access/transam/xlogrecovery.c:1673 +#: access/transam/xlogrecovery.c:1699 #, c-format msgid "redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%X" msgstr "" "выполняется воспроизведение, прошло времени: %ld.%02d с, текущий LSN: %X/%X" -#: access/transam/xlogrecovery.c:1765 +#: access/transam/xlogrecovery.c:1791 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" "запрошенная точка остановки восстановления предшествует согласованной точке " "восстановления" -#: access/transam/xlogrecovery.c:1797 +#: access/transam/xlogrecovery.c:1823 #, c-format msgid "redo done at %X/%X system usage: %s" msgstr "записи REDO обработаны до смещения %X/%X, нагрузка системы: %s" -#: access/transam/xlogrecovery.c:1803 +#: access/transam/xlogrecovery.c:1829 #, c-format msgid "last completed transaction was at log time %s" msgstr "последняя завершённая транзакция была выполнена в %s" -#: access/transam/xlogrecovery.c:1812 +#: access/transam/xlogrecovery.c:1838 #, c-format msgid "redo is not required" msgstr "данные REDO не требуются" -#: access/transam/xlogrecovery.c:1823 +#: access/transam/xlogrecovery.c:1849 #, c-format msgid "recovery ended before configured recovery target was reached" msgstr "восстановление окончилось до достижения заданной цели восстановления" -#: access/transam/xlogrecovery.c:1998 +#: access/transam/xlogrecovery.c:2024 #, c-format msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" msgstr "" "успешно пропущена отсутствующая запись contrecord в %X/%X, перезаписанная в " "%s" -#: access/transam/xlogrecovery.c:2065 +#: access/transam/xlogrecovery.c:2091 #, c-format msgid "unexpected directory entry \"%s\" found in %s" msgstr "в %2$s обнаружен недопустимый элемент-каталог \"%1$s\"" -#: access/transam/xlogrecovery.c:2067 +#: access/transam/xlogrecovery.c:2093 #, c-format msgid "All directory entries in pg_tblspc/ should be symbolic links." msgstr "" "Все элементы-каталоги в pg_tblspc/ должны быть символическими ссылками." -#: access/transam/xlogrecovery.c:2068 +#: access/transam/xlogrecovery.c:2094 #, c-format msgid "" "Remove those directories, or set allow_in_place_tablespaces to ON " @@ -3682,18 +3696,23 @@ msgstr "" "Удалите эти каталоги или на время установите в allow_in_place_tablespaces " "значение ON, чтобы восстановление завершилось." -#: access/transam/xlogrecovery.c:2142 +#: access/transam/xlogrecovery.c:2146 +#, c-format +msgid "completed backup recovery with redo LSN %X/%X and end LSN %X/%X" +msgstr "завершено восстановление копии с LSN redo %X/%X и конечным LSN %X/%X" + +#: access/transam/xlogrecovery.c:2176 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "согласованное состояние восстановления достигнуто в позиции %X/%X" #. translator: %s is a WAL record description -#: access/transam/xlogrecovery.c:2180 +#: access/transam/xlogrecovery.c:2214 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "запись REDO в WAL в позиции %X/%X для %s" -#: access/transam/xlogrecovery.c:2276 +#: access/transam/xlogrecovery.c:2310 #, c-format msgid "" "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint " @@ -3702,13 +3721,13 @@ msgstr "" "неожиданный ID предыдущей линии времени %u (ID текущей линии времени %u) в " "записи контрольной точки" -#: access/transam/xlogrecovery.c:2285 +#: access/transam/xlogrecovery.c:2319 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "неожиданный ID линии времени %u (после %u) в записи контрольной точки" # skip-rule: capital-letter-first -#: access/transam/xlogrecovery.c:2301 +#: access/transam/xlogrecovery.c:2335 #, c-format msgid "" "unexpected timeline ID %u in checkpoint record, before reaching minimum " @@ -3717,145 +3736,145 @@ msgstr "" "неожиданный ID линии времени %u в записи контрольной точки, до достижения " "минимальной к. т. %X/%X на линии времени %u" -#: access/transam/xlogrecovery.c:2485 access/transam/xlogrecovery.c:2761 +#: access/transam/xlogrecovery.c:2519 access/transam/xlogrecovery.c:2795 #, c-format msgid "recovery stopping after reaching consistency" msgstr "" "восстановление останавливается после достижения согласованного состояния" -#: access/transam/xlogrecovery.c:2506 +#: access/transam/xlogrecovery.c:2540 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "восстановление останавливается перед позицией в WAL (LSN) \"%X/%X\"" -#: access/transam/xlogrecovery.c:2596 +#: access/transam/xlogrecovery.c:2630 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "" "восстановление останавливается перед фиксированием транзакции %u, время %s" -#: access/transam/xlogrecovery.c:2603 +#: access/transam/xlogrecovery.c:2637 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "" "восстановление останавливается перед прерыванием транзакции %u, время %s" -#: access/transam/xlogrecovery.c:2656 +#: access/transam/xlogrecovery.c:2690 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "восстановление останавливается в точке восстановления \"%s\", время %s" -#: access/transam/xlogrecovery.c:2674 +#: access/transam/xlogrecovery.c:2708 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "восстановление останавливается после позиции в WAL (LSN) \"%X/%X\"" -#: access/transam/xlogrecovery.c:2741 +#: access/transam/xlogrecovery.c:2775 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "" "восстановление останавливается после фиксирования транзакции %u, время %s" -#: access/transam/xlogrecovery.c:2749 +#: access/transam/xlogrecovery.c:2783 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "" "восстановление останавливается после прерывания транзакции %u, время %s" -#: access/transam/xlogrecovery.c:2830 +#: access/transam/xlogrecovery.c:2864 #, c-format msgid "pausing at the end of recovery" msgstr "остановка в конце восстановления" -#: access/transam/xlogrecovery.c:2831 +#: access/transam/xlogrecovery.c:2865 #, c-format msgid "Execute pg_wal_replay_resume() to promote." msgstr "Выполните pg_wal_replay_resume() для повышения." -#: access/transam/xlogrecovery.c:2834 access/transam/xlogrecovery.c:4644 +#: access/transam/xlogrecovery.c:2868 access/transam/xlogrecovery.c:4678 #, c-format msgid "recovery has paused" msgstr "восстановление приостановлено" -#: access/transam/xlogrecovery.c:2835 +#: access/transam/xlogrecovery.c:2869 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Выполните pg_wal_replay_resume() для продолжения." -#: access/transam/xlogrecovery.c:3101 +#: access/transam/xlogrecovery.c:3135 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "неожиданный ID линии времени %u в сегменте журнала %s, смещение %u" -#: access/transam/xlogrecovery.c:3306 +#: access/transam/xlogrecovery.c:3340 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "не удалось прочитать сегмент журнала %s, смещение %u: %m" -#: access/transam/xlogrecovery.c:3312 +#: access/transam/xlogrecovery.c:3346 #, c-format msgid "could not read from log segment %s, offset %u: read %d of %zu" msgstr "" "не удалось прочитать из сегмента журнала %s по смещению %u (прочитано байт: " "%d из %zu)" -#: access/transam/xlogrecovery.c:3961 +#: access/transam/xlogrecovery.c:3995 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "неверная ссылка на первичную контрольную точку в файле pg_control" -#: access/transam/xlogrecovery.c:3965 +#: access/transam/xlogrecovery.c:3999 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "неверная ссылка на контрольную точку в файле backup_label" -#: access/transam/xlogrecovery.c:3983 +#: access/transam/xlogrecovery.c:4017 #, c-format msgid "invalid primary checkpoint record" msgstr "неверная запись первичной контрольной точки" -#: access/transam/xlogrecovery.c:3987 +#: access/transam/xlogrecovery.c:4021 #, c-format msgid "invalid checkpoint record" msgstr "неверная запись контрольной точки" -#: access/transam/xlogrecovery.c:3998 +#: access/transam/xlogrecovery.c:4032 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "неверный ID менеджера ресурсов в записи первичной контрольной точки" -#: access/transam/xlogrecovery.c:4002 +#: access/transam/xlogrecovery.c:4036 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "неверный ID менеджера ресурсов в записи контрольной точки" -#: access/transam/xlogrecovery.c:4015 +#: access/transam/xlogrecovery.c:4049 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "неверные флаги xl_info в записи первичной контрольной точки" -#: access/transam/xlogrecovery.c:4019 +#: access/transam/xlogrecovery.c:4053 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "неверные флаги xl_info в записи контрольной точки" -#: access/transam/xlogrecovery.c:4030 +#: access/transam/xlogrecovery.c:4064 #, c-format msgid "invalid length of primary checkpoint record" msgstr "неверная длина записи первичной контрольной точки" -#: access/transam/xlogrecovery.c:4034 +#: access/transam/xlogrecovery.c:4068 #, c-format msgid "invalid length of checkpoint record" msgstr "неверная длина записи контрольной точки" -#: access/transam/xlogrecovery.c:4090 +#: access/transam/xlogrecovery.c:4124 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "" "новая линия времени %u не является ответвлением линии времени системы БД %u" -#: access/transam/xlogrecovery.c:4104 +#: access/transam/xlogrecovery.c:4138 #, c-format msgid "" "new timeline %u forked off current database system timeline %u before " @@ -3864,40 +3883,40 @@ msgstr "" "новая линия времени %u ответвилась от текущей линии времени базы данных %u " "до текущей точки восстановления %X/%X" -#: access/transam/xlogrecovery.c:4123 +#: access/transam/xlogrecovery.c:4157 #, c-format msgid "new target timeline is %u" msgstr "новая целевая линия времени %u" -#: access/transam/xlogrecovery.c:4326 +#: access/transam/xlogrecovery.c:4360 #, c-format msgid "WAL receiver process shutdown requested" msgstr "получен запрос на выключение процесса приёмника WAL" -#: access/transam/xlogrecovery.c:4389 +#: access/transam/xlogrecovery.c:4423 #, c-format msgid "received promote request" msgstr "получен запрос повышения статуса" -#: access/transam/xlogrecovery.c:4402 +#: access/transam/xlogrecovery.c:4436 #, c-format msgid "promote trigger file found: %s" msgstr "найден файл триггера повышения: %s" -#: access/transam/xlogrecovery.c:4410 +#: access/transam/xlogrecovery.c:4444 #, c-format msgid "could not stat promote trigger file \"%s\": %m" msgstr "не удалось получить информацию о файле триггера повышения \"%s\": %m" -#: access/transam/xlogrecovery.c:4635 +#: access/transam/xlogrecovery.c:4669 #, c-format msgid "hot standby is not possible because of insufficient parameter settings" msgstr "" "режим горячего резерва невозможен из-за отсутствия достаточных значений " "параметров" -#: access/transam/xlogrecovery.c:4636 access/transam/xlogrecovery.c:4663 -#: access/transam/xlogrecovery.c:4693 +#: access/transam/xlogrecovery.c:4670 access/transam/xlogrecovery.c:4697 +#: access/transam/xlogrecovery.c:4727 #, c-format msgid "" "%s = %d is a lower setting than on the primary server, where its value was " @@ -3905,12 +3924,12 @@ msgid "" msgstr "" "Параметр %s = %d меньше, чем на ведущем сервере, где его значение было %d." -#: access/transam/xlogrecovery.c:4645 +#: access/transam/xlogrecovery.c:4679 #, c-format msgid "If recovery is unpaused, the server will shut down." msgstr "В случае возобновления восстановления сервер отключится." -#: access/transam/xlogrecovery.c:4646 +#: access/transam/xlogrecovery.c:4680 #, c-format msgid "" "You can then restart the server after making the necessary configuration " @@ -3919,24 +3938,24 @@ msgstr "" "Затем вы можете перезапустить сервер после внесения необходимых изменений " "конфигурации." -#: access/transam/xlogrecovery.c:4657 +#: access/transam/xlogrecovery.c:4691 #, c-format msgid "promotion is not possible because of insufficient parameter settings" msgstr "повышение невозможно из-за отсутствия достаточных значений параметров" -#: access/transam/xlogrecovery.c:4667 +#: access/transam/xlogrecovery.c:4701 #, c-format msgid "Restart the server after making the necessary configuration changes." msgstr "" "Перезапустите сервер после внесения необходимых изменений конфигурации." -#: access/transam/xlogrecovery.c:4691 +#: access/transam/xlogrecovery.c:4725 #, c-format msgid "recovery aborted because of insufficient parameter settings" msgstr "" "восстановление прервано из-за отсутствия достаточных значений параметров" -#: access/transam/xlogrecovery.c:4697 +#: access/transam/xlogrecovery.c:4731 #, c-format msgid "" "You can restart the server after making the necessary configuration changes." @@ -4162,7 +4181,7 @@ msgstr "" "для копии, сохраняемой на стороне сервера, нельзя указывать относительный " "путь" -#: backup/basebackup_server.c:102 commands/dbcommands.c:500 +#: backup/basebackup_server.c:102 commands/dbcommands.c:477 #: commands/tablespace.c:163 commands/tablespace.c:179 #: commands/tablespace.c:614 commands/tablespace.c:659 replication/slot.c:1558 #: storage/file/copydir.c:47 @@ -4392,16 +4411,16 @@ msgstr "предложение IN SCHEMA нельзя использовать #: catalog/aclchk.c:1587 catalog/catalog.c:627 catalog/objectaddress.c:1543 #: catalog/pg_publication.c:510 commands/analyze.c:391 commands/copy.c:779 -#: commands/sequence.c:1663 commands/tablecmds.c:7271 commands/tablecmds.c:7427 -#: commands/tablecmds.c:7477 commands/tablecmds.c:7551 -#: commands/tablecmds.c:7621 commands/tablecmds.c:7733 -#: commands/tablecmds.c:7827 commands/tablecmds.c:7886 -#: commands/tablecmds.c:7975 commands/tablecmds.c:8005 -#: commands/tablecmds.c:8133 commands/tablecmds.c:8215 -#: commands/tablecmds.c:8371 commands/tablecmds.c:8489 -#: commands/tablecmds.c:12218 commands/tablecmds.c:12399 -#: commands/tablecmds.c:12559 commands/tablecmds.c:13723 -#: commands/tablecmds.c:16292 commands/trigger.c:954 parser/analyze.c:2506 +#: commands/sequence.c:1663 commands/tablecmds.c:7275 commands/tablecmds.c:7431 +#: commands/tablecmds.c:7481 commands/tablecmds.c:7555 +#: commands/tablecmds.c:7625 commands/tablecmds.c:7737 +#: commands/tablecmds.c:7831 commands/tablecmds.c:7890 +#: commands/tablecmds.c:7979 commands/tablecmds.c:8009 +#: commands/tablecmds.c:8137 commands/tablecmds.c:8219 +#: commands/tablecmds.c:8375 commands/tablecmds.c:8493 +#: commands/tablecmds.c:12226 commands/tablecmds.c:12407 +#: commands/tablecmds.c:12567 commands/tablecmds.c:13731 +#: commands/tablecmds.c:16300 commands/trigger.c:954 parser/analyze.c:2506 #: parser/parse_relation.c:725 parser/parse_target.c:1063 #: parser/parse_type.c:144 parser/parse_utilcmd.c:3435 #: parser/parse_utilcmd.c:3471 parser/parse_utilcmd.c:3513 utils/adt/acl.c:2869 @@ -4411,7 +4430,7 @@ msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "столбец \"%s\" в таблице \"%s\" не существует" #: catalog/aclchk.c:1850 catalog/objectaddress.c:1383 commands/sequence.c:1172 -#: commands/tablecmds.c:253 commands/tablecmds.c:17164 utils/adt/acl.c:2077 +#: commands/tablecmds.c:253 commands/tablecmds.c:17172 utils/adt/acl.c:2077 #: utils/adt/acl.c:2107 utils/adt/acl.c:2139 utils/adt/acl.c:2171 #: utils/adt/acl.c:2199 utils/adt/acl.c:2229 #, c-format @@ -5035,12 +5054,12 @@ msgstr "удалить объект %s нельзя, так как от него #: catalog/dependency.c:1194 catalog/dependency.c:1201 #: catalog/dependency.c:1212 commands/tablecmds.c:1328 -#: commands/tablecmds.c:14365 commands/tablespace.c:476 commands/user.c:1008 +#: commands/tablecmds.c:14373 commands/tablespace.c:476 commands/user.c:1008 #: commands/view.c:522 libpq/auth.c:329 replication/syncrep.c:1043 #: storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1421 utils/misc/guc.c:7402 -#: utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11873 -#: utils/misc/guc.c:11907 utils/misc/guc.c:11941 utils/misc/guc.c:11984 -#: utils/misc/guc.c:12026 +#: utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11880 +#: utils/misc/guc.c:11914 utils/misc/guc.c:11948 utils/misc/guc.c:11991 +#: utils/misc/guc.c:12033 #, c-format msgid "%s" msgstr "%s" @@ -5086,12 +5105,12 @@ msgid "System catalog modifications are currently disallowed." msgstr "Изменение системного каталога в текущем состоянии запрещено." #: catalog/heap.c:466 commands/tablecmds.c:2348 commands/tablecmds.c:2985 -#: commands/tablecmds.c:6861 +#: commands/tablecmds.c:6865 #, c-format msgid "tables can have at most %d columns" msgstr "максимальное число столбцов в таблице: %d" -#: catalog/heap.c:484 commands/tablecmds.c:7161 +#: catalog/heap.c:484 commands/tablecmds.c:7165 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "имя столбца \"%s\" конфликтует с системным столбцом" @@ -5177,32 +5196,32 @@ msgid "cannot add NO INHERIT constraint to partitioned table \"%s\"" msgstr "" "добавить ограничение NO INHERIT к секционированной таблице \"%s\" нельзя" -#: catalog/heap.c:2401 +#: catalog/heap.c:2402 #, c-format msgid "check constraint \"%s\" already exists" msgstr "ограничение-проверка \"%s\" уже существует" -#: catalog/heap.c:2571 catalog/index.c:889 catalog/pg_constraint.c:689 -#: commands/tablecmds.c:8863 +#: catalog/heap.c:2572 catalog/index.c:889 catalog/pg_constraint.c:689 +#: commands/tablecmds.c:8867 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "ограничение \"%s\" для отношения \"%s\" уже существует" -#: catalog/heap.c:2578 +#: catalog/heap.c:2579 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "" "ограничение \"%s\" конфликтует с ненаследуемым ограничением таблицы \"%s\"" -#: catalog/heap.c:2589 +#: catalog/heap.c:2590 #, c-format msgid "" "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" msgstr "" "ограничение \"%s\" конфликтует с наследуемым ограничением таблицы \"%s\"" -#: catalog/heap.c:2599 +#: catalog/heap.c:2600 #, c-format msgid "" "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" @@ -5210,64 +5229,64 @@ msgstr "" "ограничение \"%s\" конфликтует с непроверенным (NOT VALID) ограничением " "таблицы \"%s\"" -#: catalog/heap.c:2604 +#: catalog/heap.c:2605 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "слияние ограничения \"%s\" с унаследованным определением" -#: catalog/heap.c:2709 +#: catalog/heap.c:2710 #, c-format msgid "cannot use generated column \"%s\" in column generation expression" msgstr "" "использовать генерируемый столбец \"%s\" в выражении генерируемого столбца " "нельзя" -#: catalog/heap.c:2711 +#: catalog/heap.c:2712 #, c-format msgid "A generated column cannot reference another generated column." msgstr "" "Генерируемый столбец не может ссылаться на другой генерируемый столбец." -#: catalog/heap.c:2717 +#: catalog/heap.c:2718 #, c-format msgid "cannot use whole-row variable in column generation expression" msgstr "" "в выражении генерируемого столбца нельзя использовать переменные «вся строка»" -#: catalog/heap.c:2718 +#: catalog/heap.c:2719 #, c-format msgid "This would cause the generated column to depend on its own value." msgstr "" "Это сделало бы генерируемый столбец зависимым от собственного значения." -#: catalog/heap.c:2771 +#: catalog/heap.c:2774 #, c-format msgid "generation expression is not immutable" msgstr "генерирующее выражение не является постоянным" -#: catalog/heap.c:2799 rewrite/rewriteHandler.c:1290 +#: catalog/heap.c:2802 rewrite/rewriteHandler.c:1290 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "столбец \"%s\" имеет тип %s, но тип выражения по умолчанию %s" -#: catalog/heap.c:2804 commands/prepare.c:334 parser/analyze.c:2730 +#: catalog/heap.c:2807 commands/prepare.c:334 parser/analyze.c:2730 #: parser/parse_target.c:594 parser/parse_target.c:882 #: parser/parse_target.c:892 rewrite/rewriteHandler.c:1295 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Перепишите выражение или преобразуйте его тип." -#: catalog/heap.c:2851 +#: catalog/heap.c:2854 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "в ограничении-проверке можно ссылаться только на таблицу \"%s\"" -#: catalog/heap.c:3149 +#: catalog/heap.c:3152 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "неподдерживаемое сочетание внешнего ключа с ON COMMIT" -#: catalog/heap.c:3150 +#: catalog/heap.c:3153 #, c-format msgid "" "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " @@ -5275,17 +5294,17 @@ msgid "" msgstr "" "Таблица \"%s\" ссылается на \"%s\", и для них задан разный режим ON COMMIT." -#: catalog/heap.c:3155 +#: catalog/heap.c:3158 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "опустошить таблицу, на которую ссылается внешний ключ, нельзя" -#: catalog/heap.c:3156 +#: catalog/heap.c:3159 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "Таблица \"%s\" ссылается на \"%s\"." -#: catalog/heap.c:3158 +#: catalog/heap.c:3161 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "" @@ -5360,28 +5379,28 @@ msgstr "" msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY должен быть первым действием в транзакции" -#: catalog/index.c:3646 +#: catalog/index.c:3663 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "переиндексировать временные таблицы других сеансов нельзя" -#: catalog/index.c:3657 commands/indexcmds.c:3560 +#: catalog/index.c:3674 commands/indexcmds.c:3536 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "перестроить нерабочий индекс в таблице TOAST нельзя" -#: catalog/index.c:3673 commands/indexcmds.c:3440 commands/indexcmds.c:3584 +#: catalog/index.c:3690 commands/indexcmds.c:3416 commands/indexcmds.c:3560 #: commands/tablecmds.c:3305 #, c-format msgid "cannot move system relation \"%s\"" msgstr "переместить системную таблицу \"%s\" нельзя" -#: catalog/index.c:3817 +#: catalog/index.c:3834 #, c-format msgid "index \"%s\" was reindexed" msgstr "индекс \"%s\" был перестроен" -#: catalog/index.c:3954 +#: catalog/index.c:3971 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "" @@ -5389,7 +5408,7 @@ msgstr "" "пропускается" #: catalog/namespace.c:259 catalog/namespace.c:463 catalog/namespace.c:555 -#: commands/trigger.c:5812 +#: commands/trigger.c:5830 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" msgstr "ссылки между базами не реализованы: \"%s.%s.%s\"" @@ -5461,7 +5480,7 @@ msgstr "словарь текстового поиска \"%s\" не сущес msgid "text search template \"%s\" does not exist" msgstr "шаблон текстового поиска \"%s\" не существует" -#: catalog/namespace.c:2770 commands/tsearchcmds.c:1121 +#: catalog/namespace.c:2770 commands/tsearchcmds.c:1127 #: utils/cache/ts_cache.c:613 #, c-format msgid "text search configuration \"%s\" does not exist" @@ -5525,32 +5544,32 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "создавать временные таблицы во время параллельных операций нельзя" #: catalog/namespace.c:4338 commands/tablespace.c:1236 commands/variable.c:64 -#: utils/misc/guc.c:12058 utils/misc/guc.c:12160 +#: utils/misc/guc.c:12065 utils/misc/guc.c:12167 #, c-format msgid "List syntax is invalid." msgstr "Ошибка синтаксиса в списке." #: catalog/objectaddress.c:1391 commands/policy.c:96 commands/policy.c:376 #: commands/tablecmds.c:247 commands/tablecmds.c:289 commands/tablecmds.c:2184 -#: commands/tablecmds.c:12335 +#: commands/tablecmds.c:12343 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\" - это не таблица" #: catalog/objectaddress.c:1398 commands/tablecmds.c:259 -#: commands/tablecmds.c:17169 commands/view.c:119 +#: commands/tablecmds.c:17177 commands/view.c:119 #, c-format msgid "\"%s\" is not a view" msgstr "\"%s\" - это не представление" #: catalog/objectaddress.c:1405 commands/matview.c:186 commands/tablecmds.c:265 -#: commands/tablecmds.c:17174 +#: commands/tablecmds.c:17182 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\" - это не материализованное представление" #: catalog/objectaddress.c:1412 commands/tablecmds.c:283 -#: commands/tablecmds.c:17179 +#: commands/tablecmds.c:17187 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\" - это не сторонняя таблица" @@ -6357,7 +6376,7 @@ msgstr "" "отсоединения." #: catalog/pg_inherits.c:596 commands/tablecmds.c:4488 -#: commands/tablecmds.c:15481 +#: commands/tablecmds.c:15489 #, c-format msgid "" "Use ALTER TABLE ... DETACH PARTITION ... FINALIZE to complete the pending " @@ -7115,7 +7134,7 @@ msgstr "кластеризовать временные таблицы друг msgid "there is no previously clustered index for table \"%s\"" msgstr "таблица \"%s\" ранее не кластеризовалась по какому-либо индексу" -#: commands/cluster.c:190 commands/tablecmds.c:14179 commands/tablecmds.c:16060 +#: commands/cluster.c:190 commands/tablecmds.c:14187 commands/tablecmds.c:16068 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "индекс \"%s\" для таблицы \"%s\" не существует" @@ -7130,7 +7149,7 @@ msgstr "кластеризовать разделяемый каталог не msgid "cannot vacuum temporary tables of other sessions" msgstr "очищать временные таблицы других сеансов нельзя" -#: commands/cluster.c:511 commands/tablecmds.c:16070 +#: commands/cluster.c:511 commands/tablecmds.c:16078 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\" не является индексом таблицы \"%s\"" @@ -7197,7 +7216,7 @@ msgid "collation attribute \"%s\" not recognized" msgstr "атрибут COLLATION \"%s\" не распознан" #: commands/collationcmds.c:119 commands/collationcmds.c:125 -#: commands/define.c:389 commands/tablecmds.c:7808 +#: commands/define.c:389 commands/tablecmds.c:7812 #: replication/pgoutput/pgoutput.c:311 replication/pgoutput/pgoutput.c:334 #: replication/pgoutput/pgoutput.c:348 replication/pgoutput/pgoutput.c:358 #: replication/pgoutput/pgoutput.c:368 replication/pgoutput/pgoutput.c:378 @@ -7285,7 +7304,7 @@ msgid "must be superuser to import system collations" msgstr "" "импортировать системные правила сортировки может только суперпользователь" -#: commands/collationcmds.c:618 commands/copyfrom.c:1505 commands/copyto.c:679 +#: commands/collationcmds.c:618 commands/copyfrom.c:1509 commands/copyto.c:679 #: libpq/be-secure-common.c:81 #, c-format msgid "could not execute command \"%s\": %m" @@ -7550,7 +7569,7 @@ msgstr "столбец \"%s\" — генерируемый" msgid "Generated columns cannot be used in COPY." msgstr "Генерируемые столбцы нельзя использовать в COPY." -#: commands/copy.c:784 commands/indexcmds.c:1850 commands/statscmds.c:243 +#: commands/copy.c:784 commands/indexcmds.c:1826 commands/statscmds.c:243 #: commands/tablecmds.c:2379 commands/tablecmds.c:3035 #: commands/tablecmds.c:3529 parser/parse_relation.c:3660 #: parser/parse_relation.c:3680 utils/adt/tsvector_op.c:2688 @@ -7635,24 +7654,24 @@ msgstr "" "выполнить COPY FREEZE нельзя, так как таблица не была создана или усечена в " "текущей подтранзакции" -#: commands/copyfrom.c:1267 commands/copyto.c:611 +#: commands/copyfrom.c:1270 commands/copyto.c:611 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "столбец FORCE_NOT_NULL \"%s\" не фигурирует в COPY" -#: commands/copyfrom.c:1290 commands/copyto.c:634 +#: commands/copyfrom.c:1293 commands/copyto.c:634 #, c-format 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:1346 utils/mb/mbutils.c:385 #, c-format msgid "" "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "" "стандартной функции преобразования из кодировки \"%s\" в \"%s\" не существует" -#: commands/copyfrom.c:1524 +#: commands/copyfrom.c:1528 #, c-format msgid "" "COPY FROM instructs the PostgreSQL server process to read a file. You may " @@ -7662,17 +7681,17 @@ msgstr "" "файла. Возможно, на самом деле вам нужно клиентское средство, например, " "\\copy в psql." -#: commands/copyfrom.c:1537 commands/copyto.c:731 +#: commands/copyfrom.c:1541 commands/copyto.c:731 #, c-format msgid "\"%s\" is a directory" msgstr "\"%s\" - это каталог" -#: commands/copyfrom.c:1605 commands/copyto.c:301 libpq/be-secure-common.c:105 +#: commands/copyfrom.c:1609 commands/copyto.c:301 libpq/be-secure-common.c:105 #, c-format msgid "could not close pipe to external command: %m" msgstr "не удалось закрыть канал сообщений с внешней командой: %m" -#: commands/copyfrom.c:1620 commands/copyto.c:306 +#: commands/copyfrom.c:1624 commands/copyto.c:306 #, c-format msgid "program \"%s\" failed" msgstr "сбой программы \"%s\"" @@ -8358,7 +8377,7 @@ msgstr[0] "Эта база данных используется ещё в %d с msgstr[1] "Эта база данных используется ещё в %d сеансах." msgstr[2] "Эта база данных используется ещё в %d сеансах." -#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3848 +#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3847 #, c-format msgid "There is %d prepared transaction using the database." msgid_plural "There are %d prepared transactions using the database." @@ -8427,7 +8446,7 @@ msgstr "Используйте DROP AGGREGATE для удаления агрег #: commands/dropcmds.c:158 commands/sequence.c:475 commands/tablecmds.c:3613 #: commands/tablecmds.c:3771 commands/tablecmds.c:3823 -#: commands/tablecmds.c:16487 tcop/utility.c:1332 +#: commands/tablecmds.c:16495 tcop/utility.c:1332 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "отношение \"%s\" не существует, пропускается" @@ -9553,7 +9572,7 @@ msgstr "" "Ограничения %s не могут использоваться, когда ключи секционирования включают " "выражения." -#: commands/indexcmds.c:1037 +#: commands/indexcmds.c:1040 #, c-format msgid "" "unique constraint on partitioned table must include all partitioning columns" @@ -9561,7 +9580,7 @@ msgstr "" "ограничение уникальности в секционированной таблице должно включать все " "секционирующие столбцы" -#: commands/indexcmds.c:1038 +#: commands/indexcmds.c:1041 #, c-format msgid "" "%s constraint on table \"%s\" lacks column \"%s\" which is part of the " @@ -9570,92 +9589,92 @@ msgstr "" "В ограничении %s таблицы \"%s\" не хватает столбца \"%s\", входящего в ключ " "секционирования." -#: commands/indexcmds.c:1057 commands/indexcmds.c:1076 +#: commands/indexcmds.c:1060 commands/indexcmds.c:1079 #, c-format msgid "index creation on system columns is not supported" msgstr "создание индекса для системных столбцов не поддерживается" -#: commands/indexcmds.c:1276 tcop/utility.c:1518 +#: commands/indexcmds.c:1279 tcop/utility.c:1518 #, c-format msgid "cannot create unique index on partitioned table \"%s\"" msgstr "создать уникальный индекс в секционированной таблице \"%s\" нельзя" -#: commands/indexcmds.c:1278 tcop/utility.c:1520 +#: commands/indexcmds.c:1281 tcop/utility.c:1520 #, c-format msgid "Table \"%s\" contains partitions that are foreign tables." msgstr "Таблица \"%s\" содержит секции, являющиеся сторонними таблицами." -#: commands/indexcmds.c:1767 +#: commands/indexcmds.c:1743 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "функции в предикате индекса должны быть помечены как IMMUTABLE" -#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:2529 +#: commands/indexcmds.c:1821 parser/parse_utilcmd.c:2529 #: parser/parse_utilcmd.c:2664 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "указанный в ключе столбец \"%s\" не существует" -#: commands/indexcmds.c:1869 parser/parse_utilcmd.c:1826 +#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:1826 #, c-format msgid "expressions are not supported in included columns" msgstr "выражения во включаемых столбцах не поддерживаются" -#: commands/indexcmds.c:1910 +#: commands/indexcmds.c:1886 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "функции в индексном выражении должны быть помечены как IMMUTABLE" -#: commands/indexcmds.c:1925 +#: commands/indexcmds.c:1901 #, c-format msgid "including column does not support a collation" msgstr "включаемые столбцы не поддерживают правила сортировки" -#: commands/indexcmds.c:1929 +#: commands/indexcmds.c:1905 #, c-format msgid "including column does not support an operator class" msgstr "включаемые столбцы не поддерживают классы операторов" -#: commands/indexcmds.c:1933 +#: commands/indexcmds.c:1909 #, c-format msgid "including column does not support ASC/DESC options" msgstr "включаемые столбцы не поддерживают сортировку ASC/DESC" -#: commands/indexcmds.c:1937 +#: commands/indexcmds.c:1913 #, c-format msgid "including column does not support NULLS FIRST/LAST options" msgstr "включаемые столбцы не поддерживают указания NULLS FIRST/LAST" -#: commands/indexcmds.c:1978 +#: commands/indexcmds.c:1954 #, c-format msgid "could not determine which collation to use for index expression" msgstr "не удалось определить правило сортировки для индексного выражения" -#: commands/indexcmds.c:1986 commands/tablecmds.c:17510 commands/typecmds.c:807 +#: commands/indexcmds.c:1962 commands/tablecmds.c:17520 commands/typecmds.c:807 #: parser/parse_expr.c:2690 parser/parse_type.c:570 parser/parse_utilcmd.c:3796 #: utils/adt/misc.c:601 #, c-format msgid "collations are not supported by type %s" msgstr "тип %s не поддерживает сортировку (COLLATION)" -#: commands/indexcmds.c:2051 +#: commands/indexcmds.c:2027 #, c-format msgid "operator %s is not commutative" msgstr "оператор %s не коммутативен" -#: commands/indexcmds.c:2053 +#: commands/indexcmds.c:2029 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "" "В ограничениях-исключениях могут использоваться только коммутативные " "операторы." -#: commands/indexcmds.c:2079 +#: commands/indexcmds.c:2055 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "оператор \"%s\" не входит в семейство операторов \"%s\"" -#: commands/indexcmds.c:2082 +#: commands/indexcmds.c:2058 #, c-format msgid "" "The exclusion operator must be related to the index operator class for the " @@ -9664,25 +9683,25 @@ msgstr "" "Оператор исключения для ограничения должен относиться к классу операторов " "индекса." -#: commands/indexcmds.c:2117 +#: commands/indexcmds.c:2093 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "метод доступа \"%s\" не поддерживает сортировку ASC/DESC" -#: commands/indexcmds.c:2122 +#: commands/indexcmds.c:2098 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "метод доступа \"%s\" не поддерживает параметр NULLS FIRST/LAST" -#: commands/indexcmds.c:2168 commands/tablecmds.c:17535 -#: commands/tablecmds.c:17541 commands/typecmds.c:2302 +#: commands/indexcmds.c:2144 commands/tablecmds.c:17545 +#: commands/tablecmds.c:17551 commands/typecmds.c:2302 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "" "для типа данных %s не определён класс операторов по умолчанию для метода " "доступа \"%s\"" -#: commands/indexcmds.c:2170 +#: commands/indexcmds.c:2146 #, c-format msgid "" "You must specify an operator class for the index or define a default " @@ -9691,86 +9710,86 @@ msgstr "" "Вы должны указать класс операторов для индекса или определить класс " "операторов по умолчанию для этого типа данных." -#: commands/indexcmds.c:2199 commands/indexcmds.c:2207 +#: commands/indexcmds.c:2175 commands/indexcmds.c:2183 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "класс операторов \"%s\" для метода доступа \"%s\" не существует" -#: commands/indexcmds.c:2221 commands/typecmds.c:2290 +#: commands/indexcmds.c:2197 commands/typecmds.c:2290 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "класс операторов \"%s\" не принимает тип данных %s" -#: commands/indexcmds.c:2311 +#: commands/indexcmds.c:2287 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "" "для типа данных %s определено несколько классов операторов по умолчанию" -#: commands/indexcmds.c:2639 +#: commands/indexcmds.c:2615 #, c-format msgid "unrecognized REINDEX option \"%s\"" msgstr "нераспознанный параметр REINDEX: \"%s\"" -#: commands/indexcmds.c:2863 +#: commands/indexcmds.c:2839 #, c-format msgid "table \"%s\" has no indexes that can be reindexed concurrently" msgstr "" "в таблице \"%s\" нет индексов, которые можно переиндексировать неблокирующим " "способом" -#: commands/indexcmds.c:2877 +#: commands/indexcmds.c:2853 #, c-format msgid "table \"%s\" has no indexes to reindex" msgstr "в таблице \"%s\" нет индексов для переиндексации" -#: commands/indexcmds.c:2917 commands/indexcmds.c:3421 -#: commands/indexcmds.c:3549 +#: commands/indexcmds.c:2893 commands/indexcmds.c:3397 +#: commands/indexcmds.c:3525 #, c-format msgid "cannot reindex system catalogs concurrently" msgstr "Переиндексировать системные каталоги неблокирующим способом нельзя" -#: commands/indexcmds.c:2940 +#: commands/indexcmds.c:2916 #, c-format msgid "can only reindex the currently open database" msgstr "переиндексировать можно только текущую базу данных" -#: commands/indexcmds.c:3028 +#: commands/indexcmds.c:3004 #, c-format msgid "cannot reindex system catalogs concurrently, skipping all" msgstr "" "все системные каталоги пропускаются, так как их нельзя переиндексировать " "неблокирующим способом" -#: commands/indexcmds.c:3061 +#: commands/indexcmds.c:3037 #, c-format msgid "cannot move system relations, skipping all" msgstr "переместить системные отношения нельзя, все они пропускаются" -#: commands/indexcmds.c:3107 +#: commands/indexcmds.c:3083 #, c-format msgid "while reindexing partitioned table \"%s.%s\"" msgstr "при переиндексировании секционированной таблицы \"%s.%s\"" -#: commands/indexcmds.c:3110 +#: commands/indexcmds.c:3086 #, c-format msgid "while reindexing partitioned index \"%s.%s\"" msgstr "при перестроении секционированного индекса \"%s.%s\"" -#: commands/indexcmds.c:3301 commands/indexcmds.c:4157 +#: commands/indexcmds.c:3277 commands/indexcmds.c:4133 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "таблица \"%s.%s\" переиндексирована" -#: commands/indexcmds.c:3453 commands/indexcmds.c:3505 +#: commands/indexcmds.c:3429 commands/indexcmds.c:3481 #, c-format msgid "cannot reindex invalid index \"%s.%s\" concurrently, skipping" msgstr "" "перестроить нерабочий индекс \"%s.%s\" неблокирующим способом нельзя, он " "пропускается" -#: commands/indexcmds.c:3459 +#: commands/indexcmds.c:3435 #, c-format msgid "" "cannot reindex exclusion constraint index \"%s.%s\" concurrently, skipping" @@ -9778,24 +9797,24 @@ msgstr "" "перестроить индекс ограничения-исключения \"%s.%s\" неблокирующим способом " "нельзя, он пропускается" -#: commands/indexcmds.c:3614 +#: commands/indexcmds.c:3590 #, c-format msgid "cannot reindex this type of relation concurrently" msgstr "переиндексировать отношение такого типа неблокирующим способом нельзя" -#: commands/indexcmds.c:3635 +#: commands/indexcmds.c:3611 #, c-format msgid "cannot move non-shared relation to tablespace \"%s\"" msgstr "" "переместить отношение, не являющееся разделяемым, в табличное пространство " "\"%s\" нельзя" -#: commands/indexcmds.c:4138 commands/indexcmds.c:4150 +#: commands/indexcmds.c:4114 commands/indexcmds.c:4126 #, c-format msgid "index \"%s.%s\" was reindexed" msgstr "индекс \"%s.%s\" был перестроен" -#: commands/indexcmds.c:4140 commands/indexcmds.c:4159 +#: commands/indexcmds.c:4116 commands/indexcmds.c:4135 #, c-format msgid "%s." msgstr "%s." @@ -10141,8 +10160,8 @@ msgstr "атрибут оператора \"%s\" нельзя изменить" #: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:149 #: commands/tablecmds.c:1609 commands/tablecmds.c:2197 #: commands/tablecmds.c:3423 commands/tablecmds.c:6312 -#: commands/tablecmds.c:9144 commands/tablecmds.c:17090 -#: commands/tablecmds.c:17125 commands/trigger.c:328 commands/trigger.c:1378 +#: commands/tablecmds.c:9148 commands/tablecmds.c:17098 +#: commands/tablecmds.c:17133 commands/trigger.c:328 commands/trigger.c:1378 #: commands/trigger.c:1488 rewrite/rewriteDefine.c:278 #: rewrite/rewriteDefine.c:957 rewrite/rewriteRemove.c:80 #, c-format @@ -10197,7 +10216,7 @@ msgstr "" "HOLD" #: commands/portalcmds.c:189 commands/portalcmds.c:242 -#: executor/execCurrent.c:70 utils/adt/xml.c:2593 utils/adt/xml.c:2763 +#: executor/execCurrent.c:70 utils/adt/xml.c:2603 utils/adt/xml.c:2773 #, c-format msgid "cursor \"%s\" does not exist" msgstr "курсор \"%s\" не существует" @@ -10247,7 +10266,7 @@ msgstr "" "для создания дополнительного процедурного языка нужно быть суперпользователем" #: commands/publicationcmds.c:130 postmaster/postmaster.c:1222 -#: postmaster/postmaster.c:1321 utils/init/miscinit.c:1651 +#: postmaster/postmaster.c:1321 utils/init/miscinit.c:1659 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "неверный формат списка в параметре \"%s\"" @@ -10635,8 +10654,8 @@ msgstr "" msgid "cannot change ownership of identity sequence" msgstr "сменить владельца последовательности идентификации нельзя" -#: commands/sequence.c:1679 commands/tablecmds.c:13870 -#: commands/tablecmds.c:16507 +#: commands/sequence.c:1679 commands/tablecmds.c:13878 +#: commands/tablecmds.c:16515 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "Последовательность \"%s\" связана с таблицей \"%s\"." @@ -10718,12 +10737,12 @@ msgstr "повторяющееся имя столбца в определени msgid "duplicate expression in statistics definition" msgstr "повторяющееся выражение в определении статистики" -#: commands/statscmds.c:620 commands/tablecmds.c:8112 +#: commands/statscmds.c:620 commands/tablecmds.c:8116 #, c-format msgid "statistics target %d is too low" msgstr "ориентир статистики слишком мал (%d)" -#: commands/statscmds.c:628 commands/tablecmds.c:8120 +#: commands/statscmds.c:628 commands/tablecmds.c:8124 #, c-format msgid "lowering statistics target to %d" msgstr "ориентир статистики снижается до %d" @@ -10776,7 +10795,7 @@ msgid "must be superuser to create subscriptions" msgstr "для создания подписок нужно быть суперпользователем" #: commands/subscriptioncmds.c:648 commands/subscriptioncmds.c:776 -#: replication/logical/tablesync.c:1229 replication/logical/worker.c:3738 +#: replication/logical/tablesync.c:1247 replication/logical/worker.c:3738 #, c-format msgid "could not connect to the publisher: %s" msgstr "не удалось подключиться к серверу публикации: %s" @@ -10918,7 +10937,7 @@ msgid "could not receive list of replicated tables from the publisher: %s" msgstr "" "не удалось получить список реплицируемых таблиц с сервера репликации: %s" -#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:809 +#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:819 #: replication/pgoutput/pgoutput.c:1072 #, c-format msgid "" @@ -11025,7 +11044,7 @@ msgstr "" "Выполните DROP MATERIALIZED VIEW для удаления материализованного " "представления." -#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19017 +#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19027 #: parser/parse_utilcmd.c:2261 #, c-format msgid "index \"%s\" does not exist" @@ -11049,8 +11068,8 @@ msgstr "\"%s\" - это не тип" msgid "Use DROP TYPE to remove a type." msgstr "Выполните DROP TYPE для удаления типа." -#: commands/tablecmds.c:281 commands/tablecmds.c:13709 -#: commands/tablecmds.c:16210 +#: commands/tablecmds.c:281 commands/tablecmds.c:13717 +#: commands/tablecmds.c:16218 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "сторонняя таблица \"%s\" не существует" @@ -11076,7 +11095,7 @@ msgstr "" "в рамках операции с ограничениями по безопасности нельзя создать временную " "таблицу" -#: commands/tablecmds.c:764 commands/tablecmds.c:15017 +#: commands/tablecmds.c:764 commands/tablecmds.c:15025 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "отношение \"%s\" наследуется неоднократно" @@ -11153,7 +11172,7 @@ msgstr "опустошить стороннюю таблицу \"%s\" нельз msgid "cannot truncate temporary tables of other sessions" msgstr "временные таблицы других сеансов нельзя опустошить" -#: commands/tablecmds.c:2462 commands/tablecmds.c:14914 +#: commands/tablecmds.c:2462 commands/tablecmds.c:14922 #, c-format msgid "cannot inherit from partitioned table \"%s\"" msgstr "наследование от секционированной таблицы \"%s\" не допускается" @@ -11178,12 +11197,12 @@ msgstr "" "создать временное отношение в качестве секции постоянного отношения \"%s\" " "нельзя" -#: commands/tablecmds.c:2496 commands/tablecmds.c:14893 +#: commands/tablecmds.c:2496 commands/tablecmds.c:14901 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "временное отношение \"%s\" не может наследоваться" -#: commands/tablecmds.c:2506 commands/tablecmds.c:14901 +#: commands/tablecmds.c:2506 commands/tablecmds.c:14909 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "наследование от временного отношения другого сеанса невозможно" @@ -11238,7 +11257,7 @@ msgid "inherited column \"%s\" has a generation conflict" msgstr "конфликт свойства генерирования в наследованном столбце \"%s\"" #: commands/tablecmds.c:2717 commands/tablecmds.c:2772 -#: commands/tablecmds.c:12433 parser/parse_utilcmd.c:1302 +#: commands/tablecmds.c:12441 parser/parse_utilcmd.c:1302 #: parser/parse_utilcmd.c:1345 parser/parse_utilcmd.c:1754 #: parser/parse_utilcmd.c:1862 #, c-format @@ -11515,12 +11534,12 @@ msgstr "добавить столбец в типизированную табл msgid "cannot add column to a partition" msgstr "добавить столбец в секцию нельзя" -#: commands/tablecmds.c:6784 commands/tablecmds.c:15144 +#: commands/tablecmds.c:6784 commands/tablecmds.c:15152 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "дочерняя таблица \"%s\" имеет другой тип для столбца \"%s\"" -#: commands/tablecmds.c:6790 commands/tablecmds.c:15151 +#: commands/tablecmds.c:6790 commands/tablecmds.c:15159 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "" @@ -11531,28 +11550,28 @@ msgstr "" msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "объединение определений столбца \"%s\" для потомка \"%s\"" -#: commands/tablecmds.c:6847 +#: commands/tablecmds.c:6851 #, c-format msgid "cannot recursively add identity column to table that has child tables" msgstr "" "добавить столбец идентификации в таблицу, у которой есть дочерние, нельзя" -#: commands/tablecmds.c:7091 +#: commands/tablecmds.c:7095 #, c-format msgid "column must be added to child tables too" msgstr "столбец также должен быть добавлен к дочерним таблицам" -#: commands/tablecmds.c:7169 +#: commands/tablecmds.c:7173 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "столбец \"%s\" отношения \"%s\" уже существует, пропускается" -#: commands/tablecmds.c:7176 +#: commands/tablecmds.c:7180 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "столбец \"%s\" отношения \"%s\" уже существует" -#: commands/tablecmds.c:7242 commands/tablecmds.c:12072 +#: commands/tablecmds.c:7246 commands/tablecmds.c:12080 #, c-format msgid "" "cannot remove constraint from only the partitioned table when partitions " @@ -11561,70 +11580,70 @@ msgstr "" "удалить ограничение только из секционированной таблицы, когда существуют " "секции, нельзя" -#: commands/tablecmds.c:7243 commands/tablecmds.c:7560 -#: commands/tablecmds.c:8557 commands/tablecmds.c:12073 +#: commands/tablecmds.c:7247 commands/tablecmds.c:7564 +#: commands/tablecmds.c:8561 commands/tablecmds.c:12081 #, c-format msgid "Do not specify the ONLY keyword." msgstr "Не указывайте ключевое слово ONLY." -#: commands/tablecmds.c:7280 commands/tablecmds.c:7486 -#: commands/tablecmds.c:7628 commands/tablecmds.c:7742 -#: commands/tablecmds.c:7836 commands/tablecmds.c:7895 -#: commands/tablecmds.c:8014 commands/tablecmds.c:8153 -#: commands/tablecmds.c:8223 commands/tablecmds.c:8379 -#: commands/tablecmds.c:12227 commands/tablecmds.c:13732 -#: commands/tablecmds.c:16301 +#: commands/tablecmds.c:7284 commands/tablecmds.c:7490 +#: commands/tablecmds.c:7632 commands/tablecmds.c:7746 +#: commands/tablecmds.c:7840 commands/tablecmds.c:7899 +#: commands/tablecmds.c:8018 commands/tablecmds.c:8157 +#: commands/tablecmds.c:8227 commands/tablecmds.c:8383 +#: commands/tablecmds.c:12235 commands/tablecmds.c:13740 +#: commands/tablecmds.c:16309 #, c-format msgid "cannot alter system column \"%s\"" msgstr "системный столбец \"%s\" нельзя изменить" -#: commands/tablecmds.c:7286 commands/tablecmds.c:7634 +#: commands/tablecmds.c:7290 commands/tablecmds.c:7638 #, c-format msgid "column \"%s\" of relation \"%s\" is an identity column" msgstr "столбец \"%s\" отношения \"%s\" является столбцом идентификации" -#: commands/tablecmds.c:7329 +#: commands/tablecmds.c:7333 #, c-format msgid "column \"%s\" is in a primary key" msgstr "столбец \"%s\" входит в первичный ключ" -#: commands/tablecmds.c:7334 +#: commands/tablecmds.c:7338 #, c-format msgid "column \"%s\" is in index used as replica identity" msgstr "столбец \"%s\" входит в индекс, используемый для идентификации реплики" -#: commands/tablecmds.c:7357 +#: commands/tablecmds.c:7361 #, c-format msgid "column \"%s\" is marked NOT NULL in parent table" msgstr "столбец \"%s\" в родительской таблице помечен как NOT NULL" -#: commands/tablecmds.c:7557 commands/tablecmds.c:9040 +#: commands/tablecmds.c:7561 commands/tablecmds.c:9044 #, c-format msgid "constraint must be added to child tables too" msgstr "ограничение также должно быть добавлено к дочерним таблицам" -#: commands/tablecmds.c:7558 +#: commands/tablecmds.c:7562 #, c-format msgid "Column \"%s\" of relation \"%s\" is not already NOT NULL." msgstr "Столбец \"%s\" отношения \"%s\" уже имеет свойство NOT NULL." -#: commands/tablecmds.c:7636 +#: commands/tablecmds.c:7640 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY instead." msgstr "Вместо этого выполните ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY." -#: commands/tablecmds.c:7641 +#: commands/tablecmds.c:7645 #, c-format msgid "column \"%s\" of relation \"%s\" is a generated column" msgstr "столбец \"%s\" отношения \"%s\" является генерируемым" -#: commands/tablecmds.c:7644 +#: commands/tablecmds.c:7648 #, c-format msgid "Use ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION instead." msgstr "" "Вместо этого выполните ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION." -#: commands/tablecmds.c:7753 +#: commands/tablecmds.c:7757 #, c-format msgid "" "column \"%s\" of relation \"%s\" must be declared NOT NULL before identity " @@ -11633,46 +11652,46 @@ msgstr "" "столбец \"%s\" отношения \"%s\" должен быть объявлен как NOT NULL, чтобы его " "можно было сделать столбцом идентификации" -#: commands/tablecmds.c:7759 +#: commands/tablecmds.c:7763 #, c-format msgid "column \"%s\" of relation \"%s\" is already an identity column" msgstr "столбец \"%s\" отношения \"%s\" уже является столбцом идентификации" -#: commands/tablecmds.c:7765 +#: commands/tablecmds.c:7769 #, c-format msgid "column \"%s\" of relation \"%s\" already has a default value" msgstr "столбец \"%s\" отношения \"%s\" уже имеет значение по умолчанию" -#: commands/tablecmds.c:7842 commands/tablecmds.c:7903 +#: commands/tablecmds.c:7846 commands/tablecmds.c:7907 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column" msgstr "столбец \"%s\" отношения \"%s\" не является столбцом идентификации" -#: commands/tablecmds.c:7908 +#: commands/tablecmds.c:7912 #, c-format msgid "column \"%s\" of relation \"%s\" is not an identity column, skipping" msgstr "" "столбец \"%s\" отношения \"%s\" не является столбцом идентификации, " "пропускается" -#: commands/tablecmds.c:7961 +#: commands/tablecmds.c:7965 #, c-format msgid "ALTER TABLE / DROP EXPRESSION must be applied to child tables too" msgstr "" "ALTER TABLE / DROP EXPRESSION нужно применять также к дочерним таблицам" -#: commands/tablecmds.c:7983 +#: commands/tablecmds.c:7987 #, c-format msgid "cannot drop generation expression from inherited column" msgstr "нельзя удалить генерирующее выражение из наследуемого столбца" -#: commands/tablecmds.c:8022 +#: commands/tablecmds.c:8026 #, c-format msgid "column \"%s\" of relation \"%s\" is not a stored generated column" msgstr "" "столбец \"%s\" отношения \"%s\" не является сохранённым генерируемым столбцом" -#: commands/tablecmds.c:8027 +#: commands/tablecmds.c:8031 #, c-format msgid "" "column \"%s\" of relation \"%s\" is not a stored generated column, skipping" @@ -11680,63 +11699,63 @@ msgstr "" "столбец \"%s\" отношения \"%s\" пропускается, так как не является " "сохранённым генерируемым столбцом" -#: commands/tablecmds.c:8100 +#: commands/tablecmds.c:8104 #, c-format msgid "cannot refer to non-index column by number" msgstr "по номеру можно ссылаться только на столбец в индексе" -#: commands/tablecmds.c:8143 +#: commands/tablecmds.c:8147 #, c-format msgid "column number %d of relation \"%s\" does not exist" msgstr "столбец с номером %d отношения \"%s\" не существует" -#: commands/tablecmds.c:8162 +#: commands/tablecmds.c:8166 #, c-format msgid "cannot alter statistics on included column \"%s\" of index \"%s\"" msgstr "изменить статистику включённого столбца \"%s\" индекса \"%s\" нельзя" -#: commands/tablecmds.c:8167 +#: commands/tablecmds.c:8171 #, c-format msgid "cannot alter statistics on non-expression column \"%s\" of index \"%s\"" msgstr "" "изменить статистику столбца \"%s\" (не выражения) индекса \"%s\" нельзя" -#: commands/tablecmds.c:8169 +#: commands/tablecmds.c:8173 #, c-format msgid "Alter statistics on table column instead." msgstr "Вместо этого измените статистику для столбца в таблице." -#: commands/tablecmds.c:8359 +#: commands/tablecmds.c:8363 #, c-format msgid "invalid storage type \"%s\"" msgstr "неверный тип хранилища \"%s\"" -#: commands/tablecmds.c:8391 +#: commands/tablecmds.c:8395 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "тип данных столбца %s совместим только с хранилищем PLAIN" -#: commands/tablecmds.c:8436 +#: commands/tablecmds.c:8440 #, c-format msgid "cannot drop column from typed table" msgstr "нельзя удалить столбец в типизированной таблице" -#: commands/tablecmds.c:8495 +#: commands/tablecmds.c:8499 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "столбец \"%s\" в таблице\"%s\" не существует, пропускается" -#: commands/tablecmds.c:8508 +#: commands/tablecmds.c:8512 #, c-format msgid "cannot drop system column \"%s\"" msgstr "нельзя удалить системный столбец \"%s\"" -#: commands/tablecmds.c:8518 +#: commands/tablecmds.c:8522 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "нельзя удалить наследованный столбец \"%s\"" -#: commands/tablecmds.c:8531 +#: commands/tablecmds.c:8535 #, c-format msgid "" "cannot drop column \"%s\" because it is part of the partition key of " @@ -11745,7 +11764,7 @@ msgstr "" "удалить столбец \"%s\" нельзя, так как он входит в ключ разбиения отношения " "\"%s\"" -#: commands/tablecmds.c:8556 +#: commands/tablecmds.c:8560 #, c-format msgid "" "cannot drop column from only the partitioned table when partitions exist" @@ -11753,7 +11772,7 @@ msgstr "" "удалить столбец только из секционированной таблицы, когда существуют секции, " "нельзя" -#: commands/tablecmds.c:8760 +#: commands/tablecmds.c:8764 #, c-format msgid "" "ALTER TABLE / ADD CONSTRAINT USING INDEX is not supported on partitioned " @@ -11762,14 +11781,14 @@ msgstr "" "ALTER TABLE / ADD CONSTRAINT USING INDEX не поддерживается с " "секционированными таблицами" -#: commands/tablecmds.c:8785 +#: commands/tablecmds.c:8789 #, 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:9122 +#: commands/tablecmds.c:9126 #, c-format msgid "" "cannot use ONLY for foreign key on partitioned table \"%s\" referencing " @@ -11778,7 +11797,7 @@ msgstr "" "нельзя использовать ONLY для стороннего ключа в секционированной таблице " "\"%s\", ссылающегося на отношение \"%s\"" -#: commands/tablecmds.c:9128 +#: commands/tablecmds.c:9132 #, c-format msgid "" "cannot add NOT VALID foreign key on partitioned table \"%s\" referencing " @@ -11787,25 +11806,25 @@ msgstr "" "нельзя добавить с характеристикой NOT VALID сторонний ключ в " "секционированной таблице \"%s\", ссылающийся на отношение \"%s\"" -#: commands/tablecmds.c:9131 +#: commands/tablecmds.c:9135 #, c-format msgid "This feature is not yet supported on partitioned tables." msgstr "" "Эта функциональность с секционированными таблицами пока не поддерживается." -#: commands/tablecmds.c:9138 commands/tablecmds.c:9604 +#: commands/tablecmds.c:9142 commands/tablecmds.c:9608 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "указанный объект \"%s\" не является таблицей" -#: commands/tablecmds.c:9161 +#: commands/tablecmds.c:9165 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "" "ограничения в постоянных таблицах могут ссылаться только на постоянные " "таблицы" -#: commands/tablecmds.c:9168 +#: commands/tablecmds.c:9172 #, c-format msgid "" "constraints on unlogged tables may reference only permanent or unlogged " @@ -11814,13 +11833,13 @@ msgstr "" "ограничения в нежурналируемых таблицах могут ссылаться только на постоянные " "или нежурналируемые таблицы" -#: commands/tablecmds.c:9174 +#: commands/tablecmds.c:9178 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "" "ограничения во временных таблицах могут ссылаться только на временные таблицы" -#: commands/tablecmds.c:9178 +#: commands/tablecmds.c:9182 #, c-format msgid "" "constraints on temporary tables must involve temporary tables of this session" @@ -11828,7 +11847,7 @@ msgstr "" "ограничения во временных таблицах должны ссылаться только на временные " "таблицы текущего сеанса" -#: commands/tablecmds.c:9252 commands/tablecmds.c:9258 +#: commands/tablecmds.c:9256 commands/tablecmds.c:9262 #, c-format msgid "" "invalid %s action for foreign key constraint containing generated column" @@ -11836,22 +11855,22 @@ msgstr "" "некорректное действие %s для ограничения внешнего ключа, содержащего " "генерируемый столбец" -#: commands/tablecmds.c:9274 +#: commands/tablecmds.c:9278 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "число столбцов в источнике и назначении внешнего ключа не совпадает" -#: commands/tablecmds.c:9381 +#: commands/tablecmds.c:9385 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "ограничение внешнего ключа \"%s\" нельзя реализовать" -#: commands/tablecmds.c:9383 +#: commands/tablecmds.c:9387 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Столбцы ключа \"%s\" и \"%s\" имеют несовместимые типы: %s и %s." -#: commands/tablecmds.c:9540 +#: commands/tablecmds.c:9544 #, c-format msgid "" "column \"%s\" referenced in ON DELETE SET action must be part of foreign key" @@ -11859,40 +11878,40 @@ msgstr "" "столбец \"%s\", фигурирующий в действии ON DELETE SET, должен входить во " "внешний ключ" -#: commands/tablecmds.c:9813 commands/tablecmds.c:10281 +#: commands/tablecmds.c:9817 commands/tablecmds.c:10285 #: parser/parse_utilcmd.c:796 parser/parse_utilcmd.c:925 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "ограничения внешнего ключа для сторонних таблиц не поддерживаются" -#: commands/tablecmds.c:10833 commands/tablecmds.c:11111 -#: commands/tablecmds.c:12029 commands/tablecmds.c:12104 +#: commands/tablecmds.c:10837 commands/tablecmds.c:11115 +#: commands/tablecmds.c:12037 commands/tablecmds.c:12112 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "ограничение \"%s\" в таблице \"%s\" не существует" -#: commands/tablecmds.c:10840 +#: commands/tablecmds.c:10844 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "ограничение \"%s\" в таблице \"%s\" не является внешним ключом" -#: commands/tablecmds.c:10878 +#: commands/tablecmds.c:10882 #, c-format msgid "cannot alter constraint \"%s\" on relation \"%s\"" msgstr "изменить ограничение \"%s\" таблицы \"%s\" нельзя" -#: commands/tablecmds.c:10881 +#: commands/tablecmds.c:10885 #, c-format msgid "Constraint \"%s\" is derived from constraint \"%s\" of relation \"%s\"." msgstr "" "Ограничение \"%s\" является производным от ограничения \"%s\" таблицы \"%s\"." -#: commands/tablecmds.c:10883 +#: commands/tablecmds.c:10887 #, c-format msgid "You may alter the constraint it derives from, instead." msgstr "Вместо этого вы можете изменить родительское ограничение." -#: commands/tablecmds.c:11119 +#: commands/tablecmds.c:11123 #, c-format msgid "" "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" @@ -11900,51 +11919,51 @@ msgstr "" "ограничение \"%s\" в таблице \"%s\" не является внешним ключом или " "ограничением-проверкой" -#: commands/tablecmds.c:11197 +#: commands/tablecmds.c:11201 #, c-format msgid "constraint must be validated on child tables too" msgstr "ограничение также должно соблюдаться в дочерних таблицах" -#: commands/tablecmds.c:11287 +#: commands/tablecmds.c:11291 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "столбец \"%s\", указанный в ограничении внешнего ключа, не существует" -#: commands/tablecmds.c:11293 +#: commands/tablecmds.c:11297 #, c-format msgid "system columns cannot be used in foreign keys" msgstr "системные столбцы нельзя использовать во внешних ключах" -#: commands/tablecmds.c:11297 +#: commands/tablecmds.c:11301 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "во внешнем ключе не может быть больше %d столбцов" -#: commands/tablecmds.c:11363 +#: commands/tablecmds.c:11367 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "" "использовать откладываемый первичный ключ в целевой внешней таблице \"%s\" " "нельзя" -#: commands/tablecmds.c:11380 +#: commands/tablecmds.c:11384 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "в целевой внешней таблице \"%s\" нет первичного ключа" -#: commands/tablecmds.c:11445 +#: commands/tablecmds.c:11453 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "в списке столбцов внешнего ключа не должно быть повторений" -#: commands/tablecmds.c:11539 +#: commands/tablecmds.c:11547 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "" "использовать откладываемое ограничение уникальности в целевой внешней " "таблице \"%s\" нельзя" -#: commands/tablecmds.c:11544 +#: commands/tablecmds.c:11552 #, c-format msgid "" "there is no unique constraint matching given keys for referenced table \"%s\"" @@ -11952,27 +11971,27 @@ msgstr "" "в целевой внешней таблице \"%s\" нет ограничения уникальности, " "соответствующего данным ключам" -#: commands/tablecmds.c:11985 +#: commands/tablecmds.c:11993 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "удалить наследованное ограничение \"%s\" таблицы \"%s\" нельзя" -#: commands/tablecmds.c:12035 +#: commands/tablecmds.c:12043 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "ограничение \"%s\" в таблице \"%s\" не существует, пропускается" -#: commands/tablecmds.c:12211 +#: commands/tablecmds.c:12219 #, c-format msgid "cannot alter column type of typed table" msgstr "изменить тип столбца в типизированной таблице нельзя" -#: commands/tablecmds.c:12238 +#: commands/tablecmds.c:12246 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "изменить наследованный столбец \"%s\" нельзя" -#: commands/tablecmds.c:12247 +#: commands/tablecmds.c:12255 #, c-format msgid "" "cannot alter column \"%s\" because it is part of the partition key of " @@ -11981,7 +12000,7 @@ msgstr "" "изменить столбец \"%s\" нельзя, так как он входит в ключ разбиения отношения " "\"%s\"" -#: commands/tablecmds.c:12297 +#: commands/tablecmds.c:12305 #, c-format msgid "" "result of USING clause for column \"%s\" cannot be cast automatically to " @@ -11989,45 +12008,45 @@ msgid "" msgstr "" "результат USING для столбца \"%s\" нельзя автоматически привести к типу %s" -#: commands/tablecmds.c:12300 +#: commands/tablecmds.c:12308 #, c-format msgid "You might need to add an explicit cast." msgstr "Возможно, необходимо добавить явное приведение." -#: commands/tablecmds.c:12304 +#: commands/tablecmds.c:12312 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "столбец \"%s\" нельзя автоматически привести к типу %s" # skip-rule: double-colons #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:12307 +#: commands/tablecmds.c:12315 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Возможно, необходимо указать \"USING %s::%s\"." -#: commands/tablecmds.c:12406 +#: commands/tablecmds.c:12414 #, c-format msgid "cannot alter inherited column \"%s\" of relation \"%s\"" msgstr "изменить наследованный столбец \"%s\" отношения \"%s\" нельзя" -#: commands/tablecmds.c:12434 +#: commands/tablecmds.c:12442 #, c-format msgid "USING expression contains a whole-row table reference." msgstr "Выражение USING ссылается на тип всей строки таблицы." -#: commands/tablecmds.c:12445 +#: commands/tablecmds.c:12453 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "" "тип наследованного столбца \"%s\" должен быть изменён и в дочерних таблицах" -#: commands/tablecmds.c:12570 +#: commands/tablecmds.c:12578 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "нельзя изменить тип столбца \"%s\" дважды" -#: commands/tablecmds.c:12608 +#: commands/tablecmds.c:12616 #, c-format msgid "" "generation expression for column \"%s\" cannot be cast automatically to type " @@ -12036,153 +12055,153 @@ msgstr "" "генерирующее выражение для столбца \"%s\" нельзя автоматически привести к " "типу %s" -#: commands/tablecmds.c:12613 +#: commands/tablecmds.c:12621 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "" "значение по умолчанию для столбца \"%s\" нельзя автоматически привести к " "типу %s" -#: commands/tablecmds.c:12694 +#: commands/tablecmds.c:12702 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "" "изменить тип столбца, задействованного в представлении или правиле, нельзя" -#: commands/tablecmds.c:12695 commands/tablecmds.c:12714 -#: commands/tablecmds.c:12732 +#: commands/tablecmds.c:12703 commands/tablecmds.c:12722 +#: commands/tablecmds.c:12740 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s зависит от столбца \"%s\"" -#: commands/tablecmds.c:12713 +#: commands/tablecmds.c:12721 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "изменить тип столбца, задействованного в определении триггера, нельзя" -#: commands/tablecmds.c:12731 +#: commands/tablecmds.c:12739 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "изменить тип столбца, задействованного в определении политики, нельзя" -#: commands/tablecmds.c:12762 +#: commands/tablecmds.c:12770 #, c-format msgid "cannot alter type of a column used by a generated column" msgstr "изменить тип столбца, задействованного в генерируемом столбце, нельзя" -#: commands/tablecmds.c:12763 +#: commands/tablecmds.c:12771 #, c-format msgid "Column \"%s\" is used by generated column \"%s\"." msgstr "Столбец \"%s\" используется генерируемым столбцом \"%s\"." -#: commands/tablecmds.c:13840 commands/tablecmds.c:13852 +#: commands/tablecmds.c:13848 commands/tablecmds.c:13860 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "сменить владельца индекса \"%s\" нельзя" -#: commands/tablecmds.c:13842 commands/tablecmds.c:13854 +#: commands/tablecmds.c:13850 commands/tablecmds.c:13862 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Однако возможно сменить владельца таблицы, содержащей этот индекс." -#: commands/tablecmds.c:13868 +#: commands/tablecmds.c:13876 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "сменить владельца последовательности \"%s\" нельзя" -#: commands/tablecmds.c:13882 commands/tablecmds.c:17201 -#: commands/tablecmds.c:17220 +#: commands/tablecmds.c:13890 commands/tablecmds.c:17209 +#: commands/tablecmds.c:17228 #, c-format msgid "Use ALTER TYPE instead." msgstr "Используйте ALTER TYPE." -#: commands/tablecmds.c:13891 +#: commands/tablecmds.c:13899 #, c-format msgid "cannot change owner of relation \"%s\"" msgstr "сменить владельца отношения \"%s\" нельзя" -#: commands/tablecmds.c:14253 +#: commands/tablecmds.c:14261 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "в одной инструкции не может быть несколько подкоманд SET TABLESPACE" -#: commands/tablecmds.c:14330 +#: commands/tablecmds.c:14338 #, c-format msgid "cannot set options for relation \"%s\"" msgstr "задать параметры отношения \"%s\" нельзя" -#: commands/tablecmds.c:14364 commands/view.c:521 +#: commands/tablecmds.c:14372 commands/view.c:521 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "" "WITH CHECK OPTION поддерживается только с автообновляемыми представлениями" -#: commands/tablecmds.c:14614 +#: commands/tablecmds.c:14622 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "" "в табличных пространствах есть только таблицы, индексы и материализованные " "представления" -#: commands/tablecmds.c:14626 +#: commands/tablecmds.c:14634 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "перемещать объекты в/из табличного пространства pg_global нельзя" -#: commands/tablecmds.c:14718 +#: commands/tablecmds.c:14726 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "" "обработка прерывается из-за невозможности заблокировать отношение \"%s.%s\"" -#: commands/tablecmds.c:14734 +#: commands/tablecmds.c:14742 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "в табличном пространстве \"%s\" не найдены подходящие отношения" -#: commands/tablecmds.c:14852 +#: commands/tablecmds.c:14860 #, c-format msgid "cannot change inheritance of typed table" msgstr "изменить наследование типизированной таблицы нельзя" -#: commands/tablecmds.c:14857 commands/tablecmds.c:15413 +#: commands/tablecmds.c:14865 commands/tablecmds.c:15421 #, c-format msgid "cannot change inheritance of a partition" msgstr "изменить наследование секции нельзя" -#: commands/tablecmds.c:14862 +#: commands/tablecmds.c:14870 #, c-format msgid "cannot change inheritance of partitioned table" msgstr "изменить наследование секционированной таблицы нельзя" -#: commands/tablecmds.c:14908 +#: commands/tablecmds.c:14916 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "наследование для временного отношения другого сеанса невозможно" -#: commands/tablecmds.c:14921 +#: commands/tablecmds.c:14929 #, c-format msgid "cannot inherit from a partition" msgstr "наследование от секции невозможно" -#: commands/tablecmds.c:14943 commands/tablecmds.c:17854 +#: commands/tablecmds.c:14951 commands/tablecmds.c:17864 #, c-format msgid "circular inheritance not allowed" msgstr "циклическое наследование недопустимо" -#: commands/tablecmds.c:14944 commands/tablecmds.c:17855 +#: commands/tablecmds.c:14952 commands/tablecmds.c:17865 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" уже является потомком \"%s\"." -#: commands/tablecmds.c:14957 +#: commands/tablecmds.c:14965 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming an inheritance child" msgstr "" "триггер \"%s\" не позволяет таблице \"%s\" стать потомком в иерархии " "наследования" -#: commands/tablecmds.c:14959 +#: commands/tablecmds.c:14967 #, c-format msgid "" "ROW triggers with transition tables are not supported in inheritance " @@ -12191,36 +12210,36 @@ msgstr "" "Триггеры ROW с переходными таблицами не поддерживаются в иерархиях " "наследования." -#: commands/tablecmds.c:15162 +#: commands/tablecmds.c:15170 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "столбец \"%s\" в дочерней таблице должен быть помечен как NOT NULL" -#: commands/tablecmds.c:15171 +#: commands/tablecmds.c:15179 #, c-format msgid "column \"%s\" in child table must be a generated column" msgstr "столбец \"%s\" в дочерней таблице должен быть генерируемым" -#: commands/tablecmds.c:15221 +#: commands/tablecmds.c:15229 #, c-format msgid "column \"%s\" in child table has a conflicting generation expression" msgstr "" "столбец \"%s\" в дочерней таблице содержит конфликтующее генерирующее " "выражение" -#: commands/tablecmds.c:15249 +#: commands/tablecmds.c:15257 #, c-format msgid "child table is missing column \"%s\"" msgstr "в дочерней таблице не хватает столбца \"%s\"" -#: commands/tablecmds.c:15337 +#: commands/tablecmds.c:15345 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "" "дочерняя таблица \"%s\" содержит другое определение ограничения-проверки " "\"%s\"" -#: commands/tablecmds.c:15345 +#: commands/tablecmds.c:15353 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on child table " @@ -12229,7 +12248,7 @@ msgstr "" "ограничение \"%s\" конфликтует с ненаследуемым ограничением дочерней таблицы " "\"%s\"" -#: commands/tablecmds.c:15356 +#: commands/tablecmds.c:15364 #, c-format msgid "" "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" @@ -12237,82 +12256,82 @@ msgstr "" "ограничение \"%s\" конфликтует с непроверенным (NOT VALID) ограничением " "дочерней таблицы \"%s\"" -#: commands/tablecmds.c:15391 +#: commands/tablecmds.c:15399 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "в дочерней таблице не хватает ограничения \"%s\"" -#: commands/tablecmds.c:15477 +#: commands/tablecmds.c:15485 #, c-format msgid "partition \"%s\" already pending detach in partitioned table \"%s.%s\"" msgstr "" "секция \"%s\" уже ожидает отсоединения от секционированной таблицы \"%s.%s\"" -#: commands/tablecmds.c:15506 commands/tablecmds.c:15554 +#: commands/tablecmds.c:15514 commands/tablecmds.c:15562 #, c-format msgid "relation \"%s\" is not a partition of relation \"%s\"" msgstr "отношение \"%s\" не является секцией отношения \"%s\"" -#: commands/tablecmds.c:15560 +#: commands/tablecmds.c:15568 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "отношение \"%s\" не является предком отношения \"%s\"" -#: commands/tablecmds.c:15788 +#: commands/tablecmds.c:15796 #, c-format msgid "typed tables cannot inherit" msgstr "типизированные таблицы не могут наследоваться" -#: commands/tablecmds.c:15818 +#: commands/tablecmds.c:15826 #, c-format msgid "table is missing column \"%s\"" msgstr "в таблице не хватает столбца \"%s\"" -#: commands/tablecmds.c:15829 +#: commands/tablecmds.c:15837 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "таблица содержит столбец \"%s\", тогда как тип требует \"%s\"" -#: commands/tablecmds.c:15838 +#: commands/tablecmds.c:15846 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "таблица \"%s\" содержит столбец \"%s\" другого типа" -#: commands/tablecmds.c:15852 +#: commands/tablecmds.c:15860 #, c-format msgid "table has extra column \"%s\"" msgstr "таблица содержит лишний столбец \"%s\"" -#: commands/tablecmds.c:15904 +#: commands/tablecmds.c:15912 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\" - это не типизированная таблица" -#: commands/tablecmds.c:16078 +#: commands/tablecmds.c:16086 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "" "для идентификации реплики нельзя использовать неуникальный индекс \"%s\"" -#: commands/tablecmds.c:16084 +#: commands/tablecmds.c:16092 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "" "для идентификации реплики нельзя использовать не непосредственный индекс " "\"%s\"" -#: commands/tablecmds.c:16090 +#: commands/tablecmds.c:16098 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "" "для идентификации реплики нельзя использовать индекс с выражением \"%s\"" -#: commands/tablecmds.c:16096 +#: commands/tablecmds.c:16104 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "для идентификации реплики нельзя использовать частичный индекс \"%s\"" -#: commands/tablecmds.c:16113 +#: commands/tablecmds.c:16121 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column %d is a " @@ -12321,7 +12340,7 @@ msgstr "" "индекс \"%s\" нельзя использовать для идентификации реплики, так как столбец " "%d - системный" -#: commands/tablecmds.c:16120 +#: commands/tablecmds.c:16128 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column \"%s\" is " @@ -12330,13 +12349,13 @@ msgstr "" "индекс \"%s\" нельзя использовать для идентификации реплики, так как столбец " "\"%s\" допускает NULL" -#: commands/tablecmds.c:16367 +#: commands/tablecmds.c:16375 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "" "изменить состояние журналирования таблицы %s нельзя, так как она временная" -#: commands/tablecmds.c:16391 +#: commands/tablecmds.c:16399 #, c-format msgid "" "cannot change table \"%s\" to unlogged because it is part of a publication" @@ -12344,12 +12363,12 @@ msgstr "" "таблицу \"%s\" нельзя сделать нежурналируемой, так как она включена в " "публикацию" -#: commands/tablecmds.c:16393 +#: commands/tablecmds.c:16401 #, c-format msgid "Unlogged relations cannot be replicated." msgstr "Нежурналируемые отношения не поддерживают репликацию." -#: commands/tablecmds.c:16438 +#: commands/tablecmds.c:16446 #, c-format msgid "" "could not change table \"%s\" to logged because it references unlogged table " @@ -12358,7 +12377,7 @@ msgstr "" "не удалось сделать таблицу \"%s\" журналируемой, так как она ссылается на " "нежурналируемую таблицу \"%s\"" -#: commands/tablecmds.c:16448 +#: commands/tablecmds.c:16456 #, c-format msgid "" "could not change table \"%s\" to unlogged because it references logged table " @@ -12367,102 +12386,102 @@ msgstr "" "не удалось сделать таблицу \"%s\" нежурналируемой, так как она ссылается на " "журналируемую таблицу \"%s\"" -#: commands/tablecmds.c:16506 +#: commands/tablecmds.c:16514 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "переместить последовательность с владельцем в другую схему нельзя" -#: commands/tablecmds.c:16613 +#: commands/tablecmds.c:16621 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "отношение \"%s\" уже существует в схеме \"%s\"" -#: commands/tablecmds.c:17034 +#: commands/tablecmds.c:17042 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\" - это не таблица и не материализованное представление" -#: commands/tablecmds.c:17184 +#: commands/tablecmds.c:17192 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" - это не составной тип" -#: commands/tablecmds.c:17212 +#: commands/tablecmds.c:17220 #, c-format msgid "cannot change schema of index \"%s\"" msgstr "сменить схему индекса \"%s\" нельзя" -#: commands/tablecmds.c:17214 commands/tablecmds.c:17226 +#: commands/tablecmds.c:17222 commands/tablecmds.c:17234 #, c-format msgid "Change the schema of the table instead." msgstr "Однако возможно сменить владельца таблицы." -#: commands/tablecmds.c:17218 +#: commands/tablecmds.c:17226 #, c-format msgid "cannot change schema of composite type \"%s\"" msgstr "сменить схему составного типа \"%s\" нельзя" -#: commands/tablecmds.c:17224 +#: commands/tablecmds.c:17232 #, c-format msgid "cannot change schema of TOAST table \"%s\"" msgstr "сменить схему TOAST-таблицы \"%s\" нельзя" -#: commands/tablecmds.c:17261 +#: commands/tablecmds.c:17269 #, c-format msgid "unrecognized partitioning strategy \"%s\"" msgstr "нераспознанная стратегия секционирования \"%s\"" -#: commands/tablecmds.c:17269 +#: commands/tablecmds.c:17277 #, c-format msgid "cannot use \"list\" partition strategy with more than one column" msgstr "стратегия секционирования по списку не поддерживает несколько столбцов" -#: commands/tablecmds.c:17335 +#: commands/tablecmds.c:17343 #, c-format msgid "column \"%s\" named in partition key does not exist" msgstr "столбец \"%s\", упомянутый в ключе секционирования, не существует" -#: commands/tablecmds.c:17343 +#: commands/tablecmds.c:17351 #, c-format msgid "cannot use system column \"%s\" in partition key" msgstr "системный столбец \"%s\" нельзя использовать в ключе секционирования" -#: commands/tablecmds.c:17354 commands/tablecmds.c:17468 +#: commands/tablecmds.c:17362 commands/tablecmds.c:17452 #, c-format msgid "cannot use generated column in partition key" msgstr "генерируемый столбец нельзя использовать в ключе секционирования" -#: commands/tablecmds.c:17355 commands/tablecmds.c:17469 commands/trigger.c:668 +#: commands/tablecmds.c:17363 commands/tablecmds.c:17453 commands/trigger.c:668 #: rewrite/rewriteHandler.c:929 rewrite/rewriteHandler.c:964 #, c-format msgid "Column \"%s\" is a generated column." msgstr "Столбец \"%s\" является генерируемым." -#: commands/tablecmds.c:17431 -#, c-format -msgid "functions in partition key expression must be marked IMMUTABLE" -msgstr "" -"функции в выражении ключа секционирования должны быть помечены как IMMUTABLE" - -#: commands/tablecmds.c:17451 +#: commands/tablecmds.c:17435 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "" "выражения ключей секционирования не могут содержать ссылки на системный " "столбец" -#: commands/tablecmds.c:17481 +#: commands/tablecmds.c:17482 +#, c-format +msgid "functions in partition key expression must be marked IMMUTABLE" +msgstr "" +"функции в выражении ключа секционирования должны быть помечены как IMMUTABLE" + +#: commands/tablecmds.c:17491 #, c-format msgid "cannot use constant expression as partition key" msgstr "" "в качестве ключа секционирования нельзя использовать константное выражение" -#: commands/tablecmds.c:17502 +#: commands/tablecmds.c:17512 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "не удалось определить правило сортировки для выражения секционирования" -#: commands/tablecmds.c:17537 +#: commands/tablecmds.c:17547 #, c-format msgid "" "You must specify a hash operator class or define a default hash operator " @@ -12471,7 +12490,7 @@ msgstr "" "Вы должны указать класс операторов хеширования или определить класс " "операторов хеширования по умолчанию для этого типа данных." -#: commands/tablecmds.c:17543 +#: commands/tablecmds.c:17553 #, c-format msgid "" "You must specify a btree operator class or define a default btree operator " @@ -12480,27 +12499,27 @@ msgstr "" "Вы должны указать класс операторов B-дерева или определить класс операторов " "B-дерева по умолчанию для этого типа данных." -#: commands/tablecmds.c:17794 +#: commands/tablecmds.c:17804 #, c-format msgid "\"%s\" is already a partition" msgstr "\"%s\" уже является секцией" -#: commands/tablecmds.c:17800 +#: commands/tablecmds.c:17810 #, c-format msgid "cannot attach a typed table as partition" msgstr "подключить типизированную таблицу в качестве секции нельзя" -#: commands/tablecmds.c:17816 +#: commands/tablecmds.c:17826 #, c-format msgid "cannot attach inheritance child as partition" msgstr "подключить потомок в иерархии наследования в качестве секции нельзя" -#: commands/tablecmds.c:17830 +#: commands/tablecmds.c:17840 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "подключить родитель в иерархии наследования в качестве секции нельзя" -#: commands/tablecmds.c:17864 +#: commands/tablecmds.c:17874 #, c-format msgid "" "cannot attach a temporary relation as partition of permanent relation \"%s\"" @@ -12508,7 +12527,7 @@ msgstr "" "подключить временное отношение в качестве секции постоянного отношения " "\"%s\" нельзя" -#: commands/tablecmds.c:17872 +#: commands/tablecmds.c:17882 #, c-format msgid "" "cannot attach a permanent relation as partition of temporary relation \"%s\"" @@ -12516,92 +12535,92 @@ msgstr "" "подключить постоянное отношение в качестве секции временного отношения " "\"%s\" нельзя" -#: commands/tablecmds.c:17880 +#: commands/tablecmds.c:17890 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "подключить секцию к временному отношению в другом сеансе нельзя" -#: commands/tablecmds.c:17887 +#: commands/tablecmds.c:17897 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "" "подключить временное отношение из другого сеанса в качестве секции нельзя" -#: commands/tablecmds.c:17907 +#: commands/tablecmds.c:17917 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "" "таблица \"%s\" содержит столбец \"%s\", отсутствующий в родителе \"%s\"" -#: commands/tablecmds.c:17910 +#: commands/tablecmds.c:17920 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "" "Новая секция может содержать только столбцы, имеющиеся в родительской " "таблице." -#: commands/tablecmds.c:17922 +#: commands/tablecmds.c:17932 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "триггер \"%s\" не позволяет сделать таблицу \"%s\" секцией" -#: commands/tablecmds.c:17924 +#: commands/tablecmds.c:17934 #, c-format msgid "ROW triggers with transition tables are not supported on partitions." msgstr "Триггеры ROW с переходными таблицами для секций не поддерживаются." -#: commands/tablecmds.c:18103 +#: commands/tablecmds.c:18113 #, c-format msgid "" "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "" "нельзя присоединить стороннюю таблицу \"%s\" в качестве секции таблицы \"%s\"" -#: commands/tablecmds.c:18106 +#: commands/tablecmds.c:18116 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "Секционированная таблица \"%s\" содержит уникальные индексы." -#: commands/tablecmds.c:18421 +#: commands/tablecmds.c:18431 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "" "секции нельзя отсоединять в режиме CONCURRENTLY, когда существует секция по " "умолчанию" -#: commands/tablecmds.c:18530 +#: commands/tablecmds.c:18540 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "секционированная таблица \"%s\" была параллельно удалена" -#: commands/tablecmds.c:18536 +#: commands/tablecmds.c:18546 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "секция \"%s\" была параллельно удалена" -#: commands/tablecmds.c:19051 commands/tablecmds.c:19071 -#: commands/tablecmds.c:19091 commands/tablecmds.c:19110 -#: commands/tablecmds.c:19152 +#: commands/tablecmds.c:19061 commands/tablecmds.c:19081 +#: commands/tablecmds.c:19101 commands/tablecmds.c:19120 +#: commands/tablecmds.c:19162 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "нельзя присоединить индекс \"%s\" в качестве секции индекса \"%s\"" -#: commands/tablecmds.c:19054 +#: commands/tablecmds.c:19064 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "Индекс \"%s\" уже присоединён к другому индексу." -#: commands/tablecmds.c:19074 +#: commands/tablecmds.c:19084 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "Индекс \"%s\" не является индексом какой-либо секции таблицы \"%s\"." -#: commands/tablecmds.c:19094 +#: commands/tablecmds.c:19104 #, c-format msgid "The index definitions do not match." msgstr "Определения индексов не совпадают." -#: commands/tablecmds.c:19113 +#: commands/tablecmds.c:19123 #, c-format msgid "" "The index \"%s\" belongs to a constraint in table \"%s\" but no constraint " @@ -12610,17 +12629,17 @@ msgstr "" "Индекс \"%s\" принадлежит ограничению в таблице \"%s\", но для индекса " "\"%s\" ограничения нет." -#: commands/tablecmds.c:19155 +#: commands/tablecmds.c:19165 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "К секции \"%s\" уже присоединён другой индекс." -#: commands/tablecmds.c:19392 +#: commands/tablecmds.c:19402 #, c-format msgid "column data type %s does not support compression" msgstr "тим данных столбца %s не поддерживает сжатие" -#: commands/tablecmds.c:19399 +#: commands/tablecmds.c:19409 #, c-format msgid "invalid compression method \"%s\"" msgstr "неверный метод сжатия \"%s\"" @@ -13008,7 +13027,7 @@ msgid "trigger function %u returned null value" msgstr "триггерная функция %u вернула значение NULL" #: commands/trigger.c:2509 commands/trigger.c:2727 commands/trigger.c:2995 -#: commands/trigger.c:3346 +#: commands/trigger.c:3364 #, c-format msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "триггер BEFORE STATEMENT не может возвращать значение" @@ -13029,8 +13048,8 @@ msgstr "" "До выполнения триггера \"%s\" строка должна была находиться в секции \"%s." "%s\"." -#: commands/trigger.c:3423 executor/nodeModifyTable.c:2344 -#: executor/nodeModifyTable.c:2427 +#: commands/trigger.c:3441 executor/nodeModifyTable.c:2350 +#: executor/nodeModifyTable.c:2433 #, c-format msgid "" "tuple to be updated was already modified by an operation triggered by the " @@ -13039,9 +13058,9 @@ msgstr "" "кортеж, который должен быть изменён, уже модифицирован в операции, вызванной " "текущей командой" -#: commands/trigger.c:3424 executor/nodeModifyTable.c:1510 -#: executor/nodeModifyTable.c:1584 executor/nodeModifyTable.c:2345 -#: executor/nodeModifyTable.c:2428 executor/nodeModifyTable.c:3059 +#: commands/trigger.c:3442 executor/nodeModifyTable.c:1514 +#: executor/nodeModifyTable.c:1588 executor/nodeModifyTable.c:2351 +#: executor/nodeModifyTable.c:2434 executor/nodeModifyTable.c:3079 #, c-format msgid "" "Consider using an AFTER trigger instead of a BEFORE trigger to propagate " @@ -13050,130 +13069,130 @@ msgstr "" "Возможно, для распространения изменений в другие строки следует использовать " "триггер AFTER вместо BEFORE." -#: commands/trigger.c:3465 executor/nodeLockRows.c:229 +#: commands/trigger.c:3483 executor/nodeLockRows.c:229 #: executor/nodeLockRows.c:238 executor/nodeModifyTable.c:308 -#: executor/nodeModifyTable.c:1526 executor/nodeModifyTable.c:2362 -#: executor/nodeModifyTable.c:2570 +#: executor/nodeModifyTable.c:1530 executor/nodeModifyTable.c:2368 +#: executor/nodeModifyTable.c:2576 #, c-format msgid "could not serialize access due to concurrent update" msgstr "не удалось сериализовать доступ из-за параллельного изменения" -#: commands/trigger.c:3473 executor/nodeModifyTable.c:1616 -#: executor/nodeModifyTable.c:2445 executor/nodeModifyTable.c:2594 -#: executor/nodeModifyTable.c:2947 +#: commands/trigger.c:3491 executor/nodeModifyTable.c:1620 +#: executor/nodeModifyTable.c:2451 executor/nodeModifyTable.c:2600 +#: executor/nodeModifyTable.c:2967 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "не удалось сериализовать доступ из-за параллельного удаления" -#: commands/trigger.c:4680 +#: commands/trigger.c:4698 #, c-format msgid "cannot fire deferred trigger within security-restricted operation" msgstr "" "в рамках операции с ограничениями по безопасности нельзя вызвать отложенный " "триггер" -#: commands/trigger.c:5863 +#: commands/trigger.c:5881 #, c-format msgid "constraint \"%s\" is not deferrable" msgstr "ограничение \"%s\" не является откладываемым" -#: commands/trigger.c:5886 +#: commands/trigger.c:5904 #, c-format msgid "constraint \"%s\" does not exist" msgstr "ограничение \"%s\" не существует" -#: commands/tsearchcmds.c:118 commands/tsearchcmds.c:635 +#: commands/tsearchcmds.c:124 commands/tsearchcmds.c:641 #, c-format msgid "function %s should return type %s" msgstr "функция %s должна возвращать тип %s" -#: commands/tsearchcmds.c:194 +#: commands/tsearchcmds.c:200 #, c-format msgid "must be superuser to create text search parsers" msgstr "" "для создания анализаторов текстового поиска нужно быть суперпользователем" -#: commands/tsearchcmds.c:247 +#: commands/tsearchcmds.c:253 #, c-format msgid "text search parser parameter \"%s\" not recognized" msgstr "параметр анализатора текстового поиска \"%s\" не распознан" -#: commands/tsearchcmds.c:257 +#: commands/tsearchcmds.c:263 #, c-format msgid "text search parser start method is required" msgstr "для анализатора текстового поиска требуется метод start" -#: commands/tsearchcmds.c:262 +#: commands/tsearchcmds.c:268 #, c-format msgid "text search parser gettoken method is required" msgstr "для анализатора текстового поиска требуется метод gettoken" -#: commands/tsearchcmds.c:267 +#: commands/tsearchcmds.c:273 #, c-format msgid "text search parser end method is required" msgstr "для анализатора текстового поиска требуется метод end" -#: commands/tsearchcmds.c:272 +#: commands/tsearchcmds.c:278 #, c-format msgid "text search parser lextypes method is required" msgstr "для анализатора текстового поиска требуется метод lextypes" -#: commands/tsearchcmds.c:366 +#: commands/tsearchcmds.c:372 #, c-format msgid "text search template \"%s\" does not accept options" msgstr "шаблон текстового поиска \"%s\" не принимает параметры" -#: commands/tsearchcmds.c:440 +#: commands/tsearchcmds.c:446 #, c-format msgid "text search template is required" msgstr "требуется шаблон текстового поиска" -#: commands/tsearchcmds.c:701 +#: commands/tsearchcmds.c:707 #, c-format msgid "must be superuser to create text search templates" msgstr "для создания шаблонов текстового поиска нужно быть суперпользователем" -#: commands/tsearchcmds.c:743 +#: commands/tsearchcmds.c:749 #, c-format msgid "text search template parameter \"%s\" not recognized" msgstr "параметр шаблона текстового поиска \"%s\" не распознан" -#: commands/tsearchcmds.c:753 +#: commands/tsearchcmds.c:759 #, c-format msgid "text search template lexize method is required" msgstr "для шаблона текстового поиска требуется метод lexize" -#: commands/tsearchcmds.c:933 +#: commands/tsearchcmds.c:939 #, c-format msgid "text search configuration parameter \"%s\" not recognized" msgstr "параметр конфигурации текстового поиска \"%s\" не распознан" -#: commands/tsearchcmds.c:940 +#: commands/tsearchcmds.c:946 #, c-format msgid "cannot specify both PARSER and COPY options" msgstr "указать и PARSER, и COPY одновременно нельзя" -#: commands/tsearchcmds.c:976 +#: commands/tsearchcmds.c:982 #, c-format msgid "text search parser is required" msgstr "требуется анализатор текстового поиска" -#: commands/tsearchcmds.c:1200 +#: commands/tsearchcmds.c:1236 #, c-format msgid "token type \"%s\" does not exist" msgstr "тип фрагмента \"%s\" не существует" -#: commands/tsearchcmds.c:1427 +#: commands/tsearchcmds.c:1464 #, c-format msgid "mapping for token type \"%s\" does not exist" msgstr "сопоставление для типа фрагмента \"%s\" не существует" -#: commands/tsearchcmds.c:1433 +#: commands/tsearchcmds.c:1470 #, c-format msgid "mapping for token type \"%s\" does not exist, skipping" msgstr "сопоставление для типа фрагмента \"%s\" не существует, пропускается" -#: commands/tsearchcmds.c:1596 commands/tsearchcmds.c:1711 +#: commands/tsearchcmds.c:1631 commands/tsearchcmds.c:1746 #, c-format msgid "invalid parameter list format: \"%s\"" msgstr "неверный формат списка параметров: \"%s\"" @@ -13979,7 +13998,7 @@ msgstr[2] "" "запущено %d параллельных процессов очистки для уборки индекса " "(планировалось: %d)" -#: commands/variable.c:165 utils/misc/guc.c:12108 utils/misc/guc.c:12186 +#: commands/variable.c:165 utils/misc/guc.c:12115 utils/misc/guc.c:12193 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "нераспознанное ключевое слово: \"%s\"." @@ -14231,7 +14250,7 @@ msgstr "" "В таблице определён тип %s (номер столбца: %d), а в запросе предполагается " "%s." -#: executor/execExpr.c:1098 parser/parse_agg.c:826 +#: executor/execExpr.c:1098 parser/parse_agg.c:837 #, c-format msgid "window function calls cannot be nested" msgstr "вложенные вызовы оконных функций недопустимы" @@ -14317,10 +14336,10 @@ msgstr "" "Массив с типом элементов %s нельзя включить в конструкцию ARRAY с типом " "элементов %s." -#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:263 -#: utils/adt/arrayfuncs.c:563 utils/adt/arrayfuncs.c:1305 -#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5370 -#: utils/adt/arrayfuncs.c:5887 utils/adt/arraysubs.c:150 +#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:264 +#: utils/adt/arrayfuncs.c:564 utils/adt/arrayfuncs.c:1306 +#: utils/adt/arrayfuncs.c:3422 utils/adt/arrayfuncs.c:5419 +#: utils/adt/arrayfuncs.c:5936 utils/adt/arraysubs.c:150 #: utils/adt/arraysubs.c:488 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" @@ -14335,11 +14354,14 @@ msgstr "" "размерностями" #: executor/execExprInterp.c:2811 utils/adt/array_expanded.c:274 -#: utils/adt/arrayfuncs.c:936 utils/adt/arrayfuncs.c:1544 -#: utils/adt/arrayfuncs.c:3261 utils/adt/arrayfuncs.c:3403 -#: utils/adt/arrayfuncs.c:5979 utils/adt/arrayfuncs.c:6320 -#: utils/adt/arrayutils.c:94 utils/adt/arrayutils.c:103 -#: utils/adt/arrayutils.c:110 +#: utils/adt/arrayfuncs.c:937 utils/adt/arrayfuncs.c:1545 +#: utils/adt/arrayfuncs.c:2353 utils/adt/arrayfuncs.c:2368 +#: utils/adt/arrayfuncs.c:2630 utils/adt/arrayfuncs.c:2646 +#: utils/adt/arrayfuncs.c:2954 utils/adt/arrayfuncs.c:2969 +#: utils/adt/arrayfuncs.c:3310 utils/adt/arrayfuncs.c:3452 +#: utils/adt/arrayfuncs.c:6028 utils/adt/arrayfuncs.c:6369 +#: utils/adt/arrayutils.c:88 utils/adt/arrayutils.c:97 +#: utils/adt/arrayutils.c:104 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "размер массива превышает предел (%d)" @@ -14650,8 +14672,8 @@ msgstr "параллельное удаление; следует повторн #: executor/execReplication.c:276 parser/parse_cte.c:308 #: parser/parse_oper.c:233 utils/adt/array_userfuncs.c:724 -#: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3653 -#: utils/adt/arrayfuncs.c:4208 utils/adt/arrayfuncs.c:6200 +#: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3702 +#: utils/adt/arrayfuncs.c:4257 utils/adt/arrayfuncs.c:6249 #: utils/adt/rowtypes.c:1203 #, c-format msgid "could not identify an equality operator for type %s" @@ -14879,7 +14901,7 @@ msgid "aggregate %u needs to have compatible input type and transition type" msgstr "" "агрегатная функция %u должна иметь совместимые входной и переходный типы" -#: executor/nodeAgg.c:3952 parser/parse_agg.c:668 parser/parse_agg.c:696 +#: executor/nodeAgg.c:3952 parser/parse_agg.c:679 parser/parse_agg.c:707 #, c-format msgid "aggregate function calls cannot be nested" msgstr "вложенные вызовы агрегатных функций недопустимы" @@ -14937,7 +14959,7 @@ msgstr "" msgid "Query has too few columns." msgstr "Запрос возвращает меньше столбцов." -#: executor/nodeModifyTable.c:1509 executor/nodeModifyTable.c:1583 +#: executor/nodeModifyTable.c:1513 executor/nodeModifyTable.c:1587 #, c-format msgid "" "tuple to be deleted was already modified by an operation triggered by the " @@ -14946,12 +14968,12 @@ msgstr "" "кортеж, который должен быть удалён, уже модифицирован в операции, вызванной " "текущей командой" -#: executor/nodeModifyTable.c:1737 +#: executor/nodeModifyTable.c:1742 #, c-format msgid "invalid ON UPDATE specification" msgstr "неверное указание ON UPDATE" -#: executor/nodeModifyTable.c:1738 +#: executor/nodeModifyTable.c:1743 #, c-format msgid "" "The result tuple would appear in a different partition than the original " @@ -14960,7 +14982,7 @@ msgstr "" "Результирующий кортеж окажется перемещённым из секции исходного кортежа в " "другую." -#: executor/nodeModifyTable.c:2198 +#: executor/nodeModifyTable.c:2204 #, c-format msgid "" "cannot move tuple across partitions when a non-root ancestor of the source " @@ -14969,25 +14991,25 @@ msgstr "" "нельзя переместить кортеж между секциями, когда внешний ключ непосредственно " "ссылается на предка исходной секции, который не является корнем иерархии" -#: executor/nodeModifyTable.c:2199 +#: executor/nodeModifyTable.c:2205 #, c-format msgid "" "A foreign key points to ancestor \"%s\" but not the root ancestor \"%s\"." msgstr "" "Внешний ключ ссылается на предка \"%s\", а не на корневого предка \"%s\"." -#: executor/nodeModifyTable.c:2202 +#: executor/nodeModifyTable.c:2208 #, c-format msgid "Consider defining the foreign key on table \"%s\"." msgstr "Возможно, имеет смысл перенацелить внешний ключ на таблицу \"%s\"." #. translator: %s is a SQL command name -#: executor/nodeModifyTable.c:2548 executor/nodeModifyTable.c:2936 +#: executor/nodeModifyTable.c:2554 executor/nodeModifyTable.c:2956 #, c-format msgid "%s command cannot affect row a second time" msgstr "команда %s не может подействовать на строку дважды" -#: executor/nodeModifyTable.c:2550 +#: executor/nodeModifyTable.c:2556 #, c-format msgid "" "Ensure that no rows proposed for insertion within the same command have " @@ -14996,14 +15018,14 @@ msgstr "" "Проверьте, не содержат ли строки, которые должна добавить команда, " "дублирующиеся значения, подпадающие под ограничения." -#: executor/nodeModifyTable.c:2938 +#: executor/nodeModifyTable.c:2958 #, c-format msgid "Ensure that not more than one source row matches any one target row." msgstr "" "Проверьте, не может ли какой-либо целевой строке соответствовать более одной " "исходной строки." -#: executor/nodeModifyTable.c:3019 +#: executor/nodeModifyTable.c:3039 #, c-format msgid "" "tuple to be deleted was already moved to another partition due to concurrent " @@ -15012,7 +15034,7 @@ msgstr "" "кортеж, подлежащий удалению, был перемещён в другую секцию в результате " "параллельного изменения" -#: executor/nodeModifyTable.c:3058 +#: executor/nodeModifyTable.c:3078 #, c-format msgid "" "tuple to be updated or deleted was already modified by an operation " @@ -15570,7 +15592,7 @@ msgstr "неверный размер пакета с паролем" msgid "empty password returned by client" msgstr "клиент возвратил пустой пароль" -#: libpq/auth.c:880 libpq/hba.c:1335 +#: libpq/auth.c:878 libpq/hba.c:1335 #, c-format msgid "" "MD5 authentication is not supported when \"db_user_namespace\" is enabled" @@ -15578,225 +15600,225 @@ msgstr "" "проверка подлинности MD5 не поддерживается, когда включён режим " "\"db_user_namespace\"" -#: libpq/auth.c:886 +#: libpq/auth.c:884 #, c-format msgid "could not generate random MD5 salt" msgstr "не удалось сгенерировать случайную соль для MD5" -#: libpq/auth.c:935 libpq/be-secure-gssapi.c:535 +#: libpq/auth.c:933 libpq/be-secure-gssapi.c:535 #, c-format msgid "could not set environment: %m" msgstr "не удалось задать переменную окружения: %m" -#: libpq/auth.c:971 +#: libpq/auth.c:969 #, c-format msgid "expected GSS response, got message type %d" msgstr "ожидался ответ GSS, но получено сообщение %d" -#: libpq/auth.c:1031 +#: libpq/auth.c:1029 msgid "accepting GSS security context failed" msgstr "принять контекст безопасности GSS не удалось" -#: libpq/auth.c:1072 +#: libpq/auth.c:1070 msgid "retrieving GSS user name failed" msgstr "получить имя пользователя GSS не удалось" -#: libpq/auth.c:1221 +#: libpq/auth.c:1219 msgid "could not acquire SSPI credentials" msgstr "не удалось получить удостоверение SSPI" -#: libpq/auth.c:1246 +#: libpq/auth.c:1244 #, c-format msgid "expected SSPI response, got message type %d" msgstr "ожидался ответ SSPI, но получено сообщение %d" -#: libpq/auth.c:1324 +#: libpq/auth.c:1322 msgid "could not accept SSPI security context" msgstr "принять контекст безопасности SSPI не удалось" -#: libpq/auth.c:1386 +#: libpq/auth.c:1384 msgid "could not get token from SSPI security context" msgstr "не удалось получить маркер из контекста безопасности SSPI" -#: libpq/auth.c:1525 libpq/auth.c:1544 +#: libpq/auth.c:1523 libpq/auth.c:1542 #, c-format msgid "could not translate name" msgstr "не удалось преобразовать имя" -#: libpq/auth.c:1557 +#: libpq/auth.c:1555 #, c-format msgid "realm name too long" msgstr "имя области слишком длинное" -#: libpq/auth.c:1572 +#: libpq/auth.c:1570 #, c-format msgid "translated account name too long" msgstr "преобразованное имя учётной записи слишком длинное" -#: libpq/auth.c:1753 +#: libpq/auth.c:1751 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "не удалось создать сокет для подключения к серверу Ident: %m" -#: libpq/auth.c:1768 +#: libpq/auth.c:1766 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "не удалось привязаться к локальному адресу \"%s\": %m" -#: libpq/auth.c:1780 +#: libpq/auth.c:1778 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "не удалось подключиться к серверу Ident по адресу \"%s\", порт %s: %m" -#: libpq/auth.c:1802 +#: libpq/auth.c:1800 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "" "не удалось отправить запрос серверу Ident по адресу \"%s\", порт %s: %m" -#: libpq/auth.c:1819 +#: libpq/auth.c:1817 #, c-format msgid "" "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "" "не удалось получить ответ от сервера Ident по адресу \"%s\", порт %s: %m" -#: libpq/auth.c:1829 +#: libpq/auth.c:1827 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "неверно форматированный ответ от сервера Ident: \"%s\"" -#: libpq/auth.c:1882 +#: libpq/auth.c:1880 #, c-format msgid "peer authentication is not supported on this platform" msgstr "проверка подлинности peer в этой ОС не поддерживается" -#: libpq/auth.c:1886 +#: libpq/auth.c:1884 #, c-format msgid "could not get peer credentials: %m" msgstr "не удалось получить данные пользователя через механизм peer: %m" -#: libpq/auth.c:1898 +#: libpq/auth.c:1896 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "найти локального пользователя по идентификатору (%ld) не удалось: %s" -#: libpq/auth.c:1999 +#: libpq/auth.c:1997 #, c-format msgid "error from underlying PAM layer: %s" msgstr "ошибка в нижележащем слое PAM: %s" -#: libpq/auth.c:2010 +#: libpq/auth.c:2008 #, c-format msgid "unsupported PAM conversation %d/\"%s\"" msgstr "неподдерживаемое сообщение ответа PAM %d/\"%s\"" -#: libpq/auth.c:2070 +#: libpq/auth.c:2068 #, c-format msgid "could not create PAM authenticator: %s" msgstr "не удалось создать аутентификатор PAM: %s" -#: libpq/auth.c:2081 +#: libpq/auth.c:2079 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "ошибка в pam_set_item(PAM_USER): %s" -#: libpq/auth.c:2113 +#: libpq/auth.c:2111 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "ошибка в pam_set_item(PAM_RHOST): %s" -#: libpq/auth.c:2125 +#: libpq/auth.c:2123 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "ошибка в pam_set_item(PAM_CONV): %s" -#: libpq/auth.c:2138 +#: libpq/auth.c:2136 #, c-format msgid "pam_authenticate failed: %s" msgstr "ошибка в pam_authenticate: %s" -#: libpq/auth.c:2151 +#: libpq/auth.c:2149 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "ошибка в pam_acct_mgmt: %s" -#: libpq/auth.c:2162 +#: libpq/auth.c:2160 #, c-format msgid "could not release PAM authenticator: %s" msgstr "не удалось освободить аутентификатор PAM: %s" -#: libpq/auth.c:2242 +#: libpq/auth.c:2240 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "не удалось инициализировать LDAP (код ошибки: %d)" -#: libpq/auth.c:2279 +#: libpq/auth.c:2277 #, c-format msgid "could not extract domain name from ldapbasedn" msgstr "не удалось извлечь имя домена из ldapbasedn" -#: libpq/auth.c:2287 +#: libpq/auth.c:2285 #, c-format msgid "LDAP authentication could not find DNS SRV records for \"%s\"" msgstr "для аутентификации LDAP не удалось найти записи DNS SRV для \"%s\"" -#: libpq/auth.c:2289 +#: libpq/auth.c:2287 #, c-format msgid "Set an LDAP server name explicitly." msgstr "Задайте имя сервера LDAP явным образом." -#: libpq/auth.c:2341 +#: libpq/auth.c:2339 #, c-format msgid "could not initialize LDAP: %s" msgstr "не удалось инициализировать LDAP: %s" -#: libpq/auth.c:2351 +#: libpq/auth.c:2349 #, c-format msgid "ldaps not supported with this LDAP library" msgstr "протокол ldaps с текущей библиотекой LDAP не поддерживается" -#: libpq/auth.c:2359 +#: libpq/auth.c:2357 #, c-format msgid "could not initialize LDAP: %m" msgstr "не удалось инициализировать LDAP: %m" -#: libpq/auth.c:2369 +#: libpq/auth.c:2367 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "не удалось задать версию протокола LDAP: %s" -#: libpq/auth.c:2409 +#: libpq/auth.c:2407 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "не удалось найти функцию _ldap_start_tls_sA в wldap32.dll" -#: libpq/auth.c:2410 +#: libpq/auth.c:2408 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP через SSL не поддерживается в этой ОС." -#: libpq/auth.c:2426 +#: libpq/auth.c:2424 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "не удалось начать сеанс LDAP TLS: %s" -#: libpq/auth.c:2497 +#: libpq/auth.c:2495 #, c-format msgid "LDAP server not specified, and no ldapbasedn" msgstr "LDAP-сервер не задан и значение ldapbasedn не определено" -#: libpq/auth.c:2504 +#: libpq/auth.c:2502 #, c-format msgid "LDAP server not specified" msgstr "LDAP-сервер не определён" -#: libpq/auth.c:2566 +#: libpq/auth.c:2564 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "недопустимый символ в имени пользователя для проверки подлинности LDAP" -#: libpq/auth.c:2583 +#: libpq/auth.c:2581 #, c-format msgid "" "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " @@ -15805,28 +15827,28 @@ msgstr "" "не удалось выполнить начальную привязку LDAP для ldapbinddn \"%s\" на " "сервере \"%s\": %s" -#: libpq/auth.c:2612 +#: libpq/auth.c:2610 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "" "не удалось выполнить LDAP-поиск по фильтру \"%s\" на сервере \"%s\": %s" -#: libpq/auth.c:2626 +#: libpq/auth.c:2624 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "в LDAP нет пользователя \"%s\"" -#: libpq/auth.c:2627 +#: libpq/auth.c:2625 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" не вернул результатов" -#: libpq/auth.c:2631 +#: libpq/auth.c:2629 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "пользователь LDAP \"%s\" не уникален" -#: libpq/auth.c:2632 +#: libpq/auth.c:2630 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "" @@ -15835,7 +15857,7 @@ msgstr[0] "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" msgstr[1] "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" вернул %d записи." msgstr[2] "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" вернул %d записей." -#: libpq/auth.c:2652 +#: libpq/auth.c:2650 #, c-format msgid "" "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" @@ -15843,24 +15865,24 @@ msgstr "" "не удалось получить dn для первого результата, соответствующего \"%s\" на " "сервере \"%s\": %s" -#: libpq/auth.c:2673 +#: libpq/auth.c:2671 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\"" msgstr "" "не удалось отвязаться после поиска пользователя \"%s\" на сервере \"%s\"" -#: libpq/auth.c:2704 +#: libpq/auth.c:2702 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "" "ошибка при регистрации в LDAP пользователя \"%s\" на сервере \"%s\": %s" -#: libpq/auth.c:2736 +#: libpq/auth.c:2734 #, c-format msgid "LDAP diagnostics: %s" msgstr "Диагностика LDAP: %s" -#: libpq/auth.c:2774 +#: libpq/auth.c:2772 #, c-format msgid "" "certificate authentication failed for user \"%s\": client certificate " @@ -15869,7 +15891,7 @@ msgstr "" "ошибка проверки подлинности пользователя \"%s\" по сертификату: сертификат " "клиента не содержит имя пользователя" -#: libpq/auth.c:2795 +#: libpq/auth.c:2793 #, c-format msgid "" "certificate authentication failed for user \"%s\": unable to retrieve " @@ -15878,7 +15900,7 @@ msgstr "" "пользователь \"%s\" не прошёл проверку подлинности по сертификату: не " "удалось получить DN субъекта" -#: libpq/auth.c:2818 +#: libpq/auth.c:2816 #, c-format msgid "" "certificate validation (clientcert=verify-full) failed for user \"%s\": DN " @@ -15887,7 +15909,7 @@ msgstr "" "проверка сертификата (clientcert=verify-full) для пользователя \"%s\" не " "прошла: отличается DN" -#: libpq/auth.c:2823 +#: libpq/auth.c:2821 #, c-format msgid "" "certificate validation (clientcert=verify-full) failed for user \"%s\": CN " @@ -15896,99 +15918,99 @@ msgstr "" "проверка сертификата (clientcert=verify-full) для пользователя \"%s\" не " "прошла: отличается CN" -#: libpq/auth.c:2925 +#: libpq/auth.c:2923 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-сервер не определён" -#: libpq/auth.c:2932 +#: libpq/auth.c:2930 #, c-format msgid "RADIUS secret not specified" msgstr "секрет RADIUS не определён" # well-spelled: симв -#: libpq/auth.c:2946 +#: libpq/auth.c:2944 #, c-format msgid "" "RADIUS authentication does not support passwords longer than %d characters" msgstr "проверка подлинности RADIUS не поддерживает пароли длиннее %d симв." -#: libpq/auth.c:3053 libpq/hba.c:1976 +#: libpq/auth.c:3051 libpq/hba.c:1976 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "не удалось преобразовать имя сервера RADIUS \"%s\" в адрес: %s" -#: libpq/auth.c:3067 +#: libpq/auth.c:3065 #, c-format msgid "could not generate random encryption vector" msgstr "не удалось сгенерировать случайный вектор шифрования" -#: libpq/auth.c:3104 +#: libpq/auth.c:3102 #, c-format msgid "could not perform MD5 encryption of password: %s" msgstr "не удалось вычислить MD5-хеш пароля: %s" -#: libpq/auth.c:3131 +#: libpq/auth.c:3129 #, c-format msgid "could not create RADIUS socket: %m" msgstr "не удалось создать сокет RADIUS: %m" -#: libpq/auth.c:3153 +#: libpq/auth.c:3151 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "не удалось привязаться к локальному сокету RADIUS: %m" -#: libpq/auth.c:3163 +#: libpq/auth.c:3161 #, c-format msgid "could not send RADIUS packet: %m" msgstr "не удалось отправить пакет RADIUS: %m" -#: libpq/auth.c:3197 libpq/auth.c:3223 +#: libpq/auth.c:3195 libpq/auth.c:3221 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "превышено время ожидания ответа RADIUS от %s" -#: libpq/auth.c:3216 +#: libpq/auth.c:3214 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "не удалось проверить состояние сокета RADIUS: %m" -#: libpq/auth.c:3246 +#: libpq/auth.c:3244 #, c-format msgid "could not read RADIUS response: %m" msgstr "не удалось прочитать ответ RADIUS: %m" -#: libpq/auth.c:3259 libpq/auth.c:3263 +#: libpq/auth.c:3257 libpq/auth.c:3261 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "ответ RADIUS от %s был отправлен с неверного порта: %d" -#: libpq/auth.c:3272 +#: libpq/auth.c:3270 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "слишком короткий ответ RADIUS от %s: %d" -#: libpq/auth.c:3279 +#: libpq/auth.c:3277 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "в ответе RADIUS от %s испорчена длина: %d (фактическая длина %d)" -#: libpq/auth.c:3287 +#: libpq/auth.c:3285 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "пришёл ответ RADIUS от %s на другой запрос: %d (ожидался %d)" -#: libpq/auth.c:3312 +#: libpq/auth.c:3310 #, c-format msgid "could not perform MD5 encryption of received packet: %s" msgstr "не удалось вычислить MD5-хеш для принятого пакета: %s" -#: libpq/auth.c:3322 +#: libpq/auth.c:3320 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "ответ RADIUS от %s содержит неверную подпись MD5" -#: libpq/auth.c:3340 +#: libpq/auth.c:3338 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "ответ RADIUS от %s содержит неверный код (%d) для пользователя \"%s\"" @@ -16104,16 +16126,16 @@ msgstr "" "он принадлежит пользователю сервера, либо u=rw,g=r (0640) или более строгие, " "если он принадлежит root." -#: libpq/be-secure-gssapi.c:204 +#: libpq/be-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "ошибка обёртывания сообщения в GSSAPI" -#: libpq/be-secure-gssapi.c:211 +#: libpq/be-secure-gssapi.c:208 #, c-format msgid "outgoing GSSAPI message would not use confidentiality" msgstr "исходящее сообщение GSSAPI не будет защищено" -#: libpq/be-secure-gssapi.c:218 libpq/be-secure-gssapi.c:622 +#: libpq/be-secure-gssapi.c:215 libpq/be-secure-gssapi.c:622 #, c-format msgid "server tried to send oversize GSSAPI packet (%zu > %zu)" msgstr "сервер попытался передать чрезмерно большой пакет GSSAPI (%zu > %zu)" @@ -16245,22 +16267,22 @@ msgstr "инициализировать SSL-подключение не уда msgid "could not set SSL socket: %s" msgstr "не удалось создать SSL-сокет: %s" -#: libpq/be-secure-openssl.c:499 +#: libpq/be-secure-openssl.c:500 #, c-format msgid "could not accept SSL connection: %m" msgstr "не удалось принять SSL-подключение: %m" -#: libpq/be-secure-openssl.c:503 libpq/be-secure-openssl.c:556 +#: libpq/be-secure-openssl.c:504 libpq/be-secure-openssl.c:557 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "не удалось принять SSL-подключение: обрыв данных" -#: libpq/be-secure-openssl.c:542 +#: libpq/be-secure-openssl.c:543 #, c-format msgid "could not accept SSL connection: %s" msgstr "не удалось принять SSL-подключение: %s" -#: libpq/be-secure-openssl.c:545 +#: libpq/be-secure-openssl.c:546 #, c-format msgid "" "This may indicate that the client does not support any SSL protocol version " @@ -16269,94 +16291,94 @@ msgstr "" "Это может указывать на то, что клиент не поддерживает ни одну версию " "протокола SSL между %s и %s." -#: libpq/be-secure-openssl.c:561 libpq/be-secure-openssl.c:750 -#: libpq/be-secure-openssl.c:814 +#: libpq/be-secure-openssl.c:562 libpq/be-secure-openssl.c:751 +#: libpq/be-secure-openssl.c:821 #, c-format msgid "unrecognized SSL error code: %d" msgstr "нераспознанный код ошибки SSL: %d" -#: libpq/be-secure-openssl.c:607 +#: libpq/be-secure-openssl.c:608 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Имя SSL-сертификата включает нулевой байт" -#: libpq/be-secure-openssl.c:653 +#: libpq/be-secure-openssl.c:654 #, c-format msgid "SSL certificate's distinguished name contains embedded null" msgstr "уникальное имя (DN) в SSL-сертификате содержит нулевой байт" -#: libpq/be-secure-openssl.c:739 libpq/be-secure-openssl.c:798 +#: libpq/be-secure-openssl.c:740 libpq/be-secure-openssl.c:805 #, c-format msgid "SSL error: %s" msgstr "ошибка SSL: %s" -#: libpq/be-secure-openssl.c:980 +#: libpq/be-secure-openssl.c:982 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "не удалось открыть файл параметров DH \"%s\": %m" -#: libpq/be-secure-openssl.c:992 +#: libpq/be-secure-openssl.c:994 #, c-format msgid "could not load DH parameters file: %s" msgstr "не удалось загрузить файл параметров DH: %s" -#: libpq/be-secure-openssl.c:1002 +#: libpq/be-secure-openssl.c:1004 #, c-format msgid "invalid DH parameters: %s" msgstr "неверные параметры DH: %s" -#: libpq/be-secure-openssl.c:1011 +#: libpq/be-secure-openssl.c:1013 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "неверные параметры DH: p - не простое число" -#: libpq/be-secure-openssl.c:1020 +#: libpq/be-secure-openssl.c:1022 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "" "неверные параметры DH: нет подходящего генератора или небезопасное простое " "число" -#: libpq/be-secure-openssl.c:1181 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "DH: could not load DH parameters" msgstr "DH: не удалось загрузить параметры DH" -#: libpq/be-secure-openssl.c:1189 +#: libpq/be-secure-openssl.c:1191 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH: не удалось задать параметры DH: %s" -#: libpq/be-secure-openssl.c:1216 +#: libpq/be-secure-openssl.c:1218 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: нераспознанное имя кривой: %s" -#: libpq/be-secure-openssl.c:1225 +#: libpq/be-secure-openssl.c:1227 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: не удалось создать ключ" -#: libpq/be-secure-openssl.c:1253 +#: libpq/be-secure-openssl.c:1255 msgid "no SSL error reported" msgstr "нет сообщения об ошибке SSL" -#: libpq/be-secure-openssl.c:1257 +#: libpq/be-secure-openssl.c:1259 #, c-format msgid "SSL error code %lu" msgstr "код ошибки SSL: %lu" -#: libpq/be-secure-openssl.c:1416 +#: libpq/be-secure-openssl.c:1418 #, c-format msgid "could not create BIO" msgstr "не удалось создать BIO" -#: libpq/be-secure-openssl.c:1426 +#: libpq/be-secure-openssl.c:1428 #, c-format msgid "could not get NID for ASN1_OBJECT object" msgstr "не удалось получить NID для объекта ASN1_OBJECT" -#: libpq/be-secure-openssl.c:1434 +#: libpq/be-secure-openssl.c:1436 #, c-format msgid "could not convert NID %d to an ASN1_OBJECT structure" msgstr "не удалось преобразовать NID %d в структуру ASN1_OBJECT" @@ -16931,9 +16953,9 @@ msgid "could not accept new connection: %m" msgstr "не удалось принять новое подключение: %m" #: libpq/pqcomm.c:766 libpq/pqcomm.c:775 libpq/pqcomm.c:807 libpq/pqcomm.c:817 -#: libpq/pqcomm.c:1642 libpq/pqcomm.c:1687 libpq/pqcomm.c:1727 -#: libpq/pqcomm.c:1771 libpq/pqcomm.c:1810 libpq/pqcomm.c:1849 -#: libpq/pqcomm.c:1885 libpq/pqcomm.c:1924 +#: libpq/pqcomm.c:1652 libpq/pqcomm.c:1697 libpq/pqcomm.c:1737 +#: libpq/pqcomm.c:1781 libpq/pqcomm.c:1820 libpq/pqcomm.c:1859 +#: libpq/pqcomm.c:1895 libpq/pqcomm.c:1934 #, c-format msgid "%s(%s) failed: %m" msgstr "ошибка в %s(%s): %m" @@ -16943,47 +16965,47 @@ msgstr "ошибка в %s(%s): %m" msgid "there is no client connection" msgstr "нет клиентского подключения" -#: libpq/pqcomm.c:972 libpq/pqcomm.c:1068 +#: libpq/pqcomm.c:977 libpq/pqcomm.c:1078 #, c-format msgid "could not receive data from client: %m" msgstr "не удалось получить данные от клиента: %m" -#: libpq/pqcomm.c:1173 tcop/postgres.c:4373 +#: libpq/pqcomm.c:1183 tcop/postgres.c:4373 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "закрытие подключения из-за потери синхронизации протокола" -#: libpq/pqcomm.c:1239 +#: libpq/pqcomm.c:1249 #, c-format msgid "unexpected EOF within message length word" msgstr "неожиданный обрыв данных в слове длины сообщения" -#: libpq/pqcomm.c:1249 +#: libpq/pqcomm.c:1259 #, c-format msgid "invalid message length" msgstr "неверная длина сообщения" -#: libpq/pqcomm.c:1271 libpq/pqcomm.c:1284 +#: libpq/pqcomm.c:1281 libpq/pqcomm.c:1294 #, c-format msgid "incomplete message from client" msgstr "неполное сообщение от клиента" -#: libpq/pqcomm.c:1395 +#: libpq/pqcomm.c:1405 #, c-format msgid "could not send data to client: %m" msgstr "не удалось послать данные клиенту: %m" -#: libpq/pqcomm.c:1610 +#: libpq/pqcomm.c:1620 #, c-format msgid "%s(%s) failed: error code %d" msgstr "ошибка в %s(%s): код ошибки %d" -#: libpq/pqcomm.c:1699 +#: libpq/pqcomm.c:1709 #, c-format msgid "setting the keepalive idle time is not supported" msgstr "изменение значения keepalives_idle не поддерживается" -#: libpq/pqcomm.c:1783 libpq/pqcomm.c:1858 libpq/pqcomm.c:1933 +#: libpq/pqcomm.c:1793 libpq/pqcomm.c:1868 libpq/pqcomm.c:1943 #, c-format msgid "%s(%s) not supported" msgstr "%s(%s) не поддерживается" @@ -16994,7 +17016,7 @@ msgid "no data left in message" msgstr "в сообщении не осталось данных" #: libpq/pqformat.c:517 libpq/pqformat.c:535 libpq/pqformat.c:556 -#: utils/adt/arrayfuncs.c:1482 utils/adt/rowtypes.c:588 +#: utils/adt/arrayfuncs.c:1483 utils/adt/rowtypes.c:588 #, c-format msgid "insufficient data left in message" msgstr "недостаточно данных осталось в сообщении" @@ -17436,7 +17458,7 @@ msgstr "Все столбцы должны иметь хешируемые ти msgid "could not implement %s" msgstr "не удалось реализовать %s" -#: optimizer/util/clauses.c:4777 +#: optimizer/util/clauses.c:4843 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "внедрённая в код SQL-функция \"%s\"" @@ -17714,208 +17736,208 @@ msgstr "%s нельзя применить к именованному хран msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "отношение \"%s\" в определении %s отсутствует в предложении FROM" -#: parser/parse_agg.c:220 parser/parse_oper.c:227 +#: parser/parse_agg.c:208 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "для типа %s не удалось найти оператор сортировки" -#: parser/parse_agg.c:222 +#: parser/parse_agg.c:210 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Агрегатным функциям с DISTINCT необходимо сортировать входные данные." -#: parser/parse_agg.c:257 +#: parser/parse_agg.c:268 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "у GROUPING должно быть меньше 32 аргументов" -#: parser/parse_agg.c:360 +#: parser/parse_agg.c:371 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "агрегатные функции нельзя применять в условиях JOIN" -#: parser/parse_agg.c:362 +#: parser/parse_agg.c:373 msgid "grouping operations are not allowed in JOIN conditions" msgstr "операции группировки нельзя применять в условиях JOIN" -#: parser/parse_agg.c:374 +#: parser/parse_agg.c:385 msgid "" "aggregate functions are not allowed in FROM clause of their own query level" msgstr "" "агрегатные функции нельзя применять в предложении FROM их уровня запроса" -#: parser/parse_agg.c:376 +#: parser/parse_agg.c:387 msgid "" "grouping operations are not allowed in FROM clause of their own query level" msgstr "" "операции группировки нельзя применять в предложении FROM их уровня запроса" -#: parser/parse_agg.c:381 +#: parser/parse_agg.c:392 msgid "aggregate functions are not allowed in functions in FROM" msgstr "агрегатные функции нельзя применять в функциях во FROM" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:394 msgid "grouping operations are not allowed in functions in FROM" msgstr "операции группировки нельзя применять в функциях во FROM" -#: parser/parse_agg.c:391 +#: parser/parse_agg.c:402 msgid "aggregate functions are not allowed in policy expressions" msgstr "агрегатные функции нельзя применять в выражениях политик" -#: parser/parse_agg.c:393 +#: parser/parse_agg.c:404 msgid "grouping operations are not allowed in policy expressions" msgstr "операции группировки нельзя применять в выражениях политик" -#: parser/parse_agg.c:410 +#: parser/parse_agg.c:421 msgid "aggregate functions are not allowed in window RANGE" msgstr "агрегатные функции нельзя применять в указании RANGE для окна" -#: parser/parse_agg.c:412 +#: parser/parse_agg.c:423 msgid "grouping operations are not allowed in window RANGE" msgstr "операции группировки нельзя применять в указании RANGE для окна" -#: parser/parse_agg.c:417 +#: parser/parse_agg.c:428 msgid "aggregate functions are not allowed in window ROWS" msgstr "агрегатные функции нельзя применять в указании ROWS для окна" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:430 msgid "grouping operations are not allowed in window ROWS" msgstr "операции группировки нельзя применять в указании ROWS для окна" -#: parser/parse_agg.c:424 +#: parser/parse_agg.c:435 msgid "aggregate functions are not allowed in window GROUPS" msgstr "агрегатные функции нельзя применять в указании GROUPS для окна" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:437 msgid "grouping operations are not allowed in window GROUPS" msgstr "операции группировки нельзя применять в указании GROUPS для окна" -#: parser/parse_agg.c:439 +#: parser/parse_agg.c:450 msgid "aggregate functions are not allowed in MERGE WHEN conditions" msgstr "агрегатные функции нельзя применять в условиях MERGE WHEN" -#: parser/parse_agg.c:441 +#: parser/parse_agg.c:452 msgid "grouping operations are not allowed in MERGE WHEN conditions" msgstr "операции группировки нельзя применять в условиях MERGE WHEN" -#: parser/parse_agg.c:467 +#: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in check constraints" msgstr "агрегатные функции нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:480 msgid "grouping operations are not allowed in check constraints" msgstr "операции группировки нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:476 +#: parser/parse_agg.c:487 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "агрегатные функции нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:489 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "операции группировки нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:483 +#: parser/parse_agg.c:494 msgid "aggregate functions are not allowed in index expressions" msgstr "агрегатные функции нельзя применять в выражениях индексов" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:496 msgid "grouping operations are not allowed in index expressions" msgstr "операции группировки нельзя применять в выражениях индексов" -#: parser/parse_agg.c:490 +#: parser/parse_agg.c:501 msgid "aggregate functions are not allowed in index predicates" msgstr "агрегатные функции нельзя применять в предикатах индексов" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:503 msgid "grouping operations are not allowed in index predicates" msgstr "операции группировки нельзя применять в предикатах индексов" -#: parser/parse_agg.c:497 +#: parser/parse_agg.c:508 msgid "aggregate functions are not allowed in statistics expressions" msgstr "агрегатные функции нельзя применять в выражениях статистики" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:510 msgid "grouping operations are not allowed in statistics expressions" msgstr "операции группировки нельзя применять в выражениях статистики" -#: parser/parse_agg.c:504 +#: parser/parse_agg.c:515 msgid "aggregate functions are not allowed in transform expressions" msgstr "агрегатные функции нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:517 msgid "grouping operations are not allowed in transform expressions" msgstr "операции группировки нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:511 +#: parser/parse_agg.c:522 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "агрегатные функции нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:524 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "операции группировки нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:518 +#: parser/parse_agg.c:529 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "агрегатные функции нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:531 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "операции группировки нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:525 +#: parser/parse_agg.c:536 msgid "aggregate functions are not allowed in partition bound" msgstr "агрегатные функции нельзя применять в выражении границы секции" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:538 msgid "grouping operations are not allowed in partition bound" msgstr "операции группировки нельзя применять в выражении границы секции" -#: parser/parse_agg.c:532 +#: parser/parse_agg.c:543 msgid "aggregate functions are not allowed in partition key expressions" msgstr "агрегатные функции нельзя применять в выражениях ключа секционирования" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:545 msgid "grouping operations are not allowed in partition key expressions" msgstr "" "операции группировки нельзя применять в выражениях ключа секционирования" -#: parser/parse_agg.c:540 +#: parser/parse_agg.c:551 msgid "aggregate functions are not allowed in column generation expressions" msgstr "агрегатные функции нельзя применять в выражениях генерируемых столбцов" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:553 msgid "grouping operations are not allowed in column generation expressions" msgstr "" "операции группировки нельзя применять в выражениях генерируемых столбцов" -#: parser/parse_agg.c:548 +#: parser/parse_agg.c:559 msgid "aggregate functions are not allowed in CALL arguments" msgstr "агрегатные функции нельзя применять в аргументах CALL" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:561 msgid "grouping operations are not allowed in CALL arguments" msgstr "операции группировки нельзя применять в аргументах CALL" -#: parser/parse_agg.c:556 +#: parser/parse_agg.c:567 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "агрегатные функции нельзя применять в условиях COPY FROM WHERE" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:569 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:585 parser/parse_clause.c:1836 +#: parser/parse_agg.c:596 parser/parse_clause.c:1836 #, 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:588 +#: parser/parse_agg.c:599 #, c-format msgid "grouping operations are not allowed in %s" msgstr "операции группировки нельзя применять в конструкции %s" -#: parser/parse_agg.c:689 +#: parser/parse_agg.c:700 #, c-format msgid "" "outer-level aggregate cannot contain a lower-level variable in its direct " @@ -17924,14 +17946,14 @@ msgstr "" "агрегатная функция внешнего уровня не может содержать в своих аргументах " "переменные нижнего уровня" -#: parser/parse_agg.c:767 +#: parser/parse_agg.c:778 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "" "вызовы агрегатных функций не могут включать вызовы функций, возвращающих " "множества" -#: parser/parse_agg.c:768 parser/parse_expr.c:1674 parser/parse_expr.c:2156 +#: parser/parse_agg.c:779 parser/parse_expr.c:1674 parser/parse_expr.c:2156 #: parser/parse_func.c:883 #, c-format msgid "" @@ -17941,107 +17963,107 @@ msgstr "" "Исправить ситуацию можно, переместив функцию, возвращающую множество, в " "элемент LATERAL FROM." -#: parser/parse_agg.c:773 +#: parser/parse_agg.c:784 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "вызовы агрегатных функций не могут включать вызовы оконных функции" -#: parser/parse_agg.c:852 +#: parser/parse_agg.c:863 msgid "window functions are not allowed in JOIN conditions" msgstr "оконные функции нельзя применять в условиях JOIN" -#: parser/parse_agg.c:859 +#: parser/parse_agg.c:870 msgid "window functions are not allowed in functions in FROM" msgstr "оконные функции нельзя применять в функциях во FROM" -#: parser/parse_agg.c:865 +#: parser/parse_agg.c:876 msgid "window functions are not allowed in policy expressions" msgstr "оконные функции нельзя применять в выражениях политик" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:889 msgid "window functions are not allowed in window definitions" msgstr "оконные функции нельзя применять в определении окна" -#: parser/parse_agg.c:889 +#: parser/parse_agg.c:900 msgid "window functions are not allowed in MERGE WHEN conditions" msgstr "оконные функции нельзя применять в условиях MERGE WHEN" -#: parser/parse_agg.c:913 +#: parser/parse_agg.c:924 msgid "window functions are not allowed in check constraints" msgstr "оконные функции нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:917 +#: parser/parse_agg.c:928 msgid "window functions are not allowed in DEFAULT expressions" msgstr "оконные функции нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:920 +#: parser/parse_agg.c:931 msgid "window functions are not allowed in index expressions" msgstr "оконные функции нельзя применять в выражениях индексов" -#: parser/parse_agg.c:923 +#: parser/parse_agg.c:934 msgid "window functions are not allowed in statistics expressions" msgstr "оконные функции нельзя применять в выражениях статистики" -#: parser/parse_agg.c:926 +#: parser/parse_agg.c:937 msgid "window functions are not allowed in index predicates" msgstr "оконные функции нельзя применять в предикатах индексов" -#: parser/parse_agg.c:929 +#: parser/parse_agg.c:940 msgid "window functions are not allowed in transform expressions" msgstr "оконные функции нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:932 +#: parser/parse_agg.c:943 msgid "window functions are not allowed in EXECUTE parameters" msgstr "оконные функции нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:935 +#: parser/parse_agg.c:946 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "оконные функции нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:949 msgid "window functions are not allowed in partition bound" msgstr "оконные функции нельзя применять в выражении границы секции" -#: parser/parse_agg.c:941 +#: parser/parse_agg.c:952 msgid "window functions are not allowed in partition key expressions" msgstr "оконные функции нельзя применять в выражениях ключа секционирования" -#: parser/parse_agg.c:944 +#: parser/parse_agg.c:955 msgid "window functions are not allowed in CALL arguments" msgstr "оконные функции нельзя применять в аргументах CALL" -#: parser/parse_agg.c:947 +#: parser/parse_agg.c:958 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "оконные функции нельзя применять в условиях COPY FROM WHERE" -#: parser/parse_agg.c:950 +#: parser/parse_agg.c:961 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:973 parser/parse_clause.c:1845 +#: parser/parse_agg.c:984 parser/parse_clause.c:1845 #, c-format msgid "window functions are not allowed in %s" msgstr "оконные функции нельзя применять в конструкции %s" -#: parser/parse_agg.c:1007 parser/parse_clause.c:2678 +#: parser/parse_agg.c:1018 parser/parse_clause.c:2678 #, c-format msgid "window \"%s\" does not exist" msgstr "окно \"%s\" не существует" -#: parser/parse_agg.c:1091 +#: parser/parse_agg.c:1102 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "слишком много наборов группирования (при максимуме 4096)" -#: parser/parse_agg.c:1231 +#: parser/parse_agg.c:1242 #, c-format msgid "" "aggregate functions are not allowed in a recursive query's recursive term" msgstr "" "в рекурсивной части рекурсивного запроса агрегатные функции недопустимы" -#: parser/parse_agg.c:1424 +#: parser/parse_agg.c:1435 #, c-format msgid "" "column \"%s.%s\" must appear in the GROUP BY clause or be used in an " @@ -18050,7 +18072,7 @@ msgstr "" "столбец \"%s.%s\" должен фигурировать в предложении GROUP BY или " "использоваться в агрегатной функции" -#: parser/parse_agg.c:1427 +#: parser/parse_agg.c:1438 #, c-format msgid "" "Direct arguments of an ordered-set aggregate must use only grouped columns." @@ -18058,13 +18080,13 @@ msgstr "" "Прямые аргументы сортирующей агрегатной функции могут включать только " "группируемые столбцы." -#: parser/parse_agg.c:1432 +#: parser/parse_agg.c:1443 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" "подзапрос использует негруппированный столбец \"%s.%s\" из внешнего запроса" -#: parser/parse_agg.c:1596 +#: parser/parse_agg.c:1607 #, c-format msgid "" "arguments to GROUPING must be grouping expressions of the associated query " @@ -20421,14 +20443,14 @@ msgid "huge pages not supported with the current shared_memory_type setting" msgstr "" "огромные страницы не поддерживаются с текущим значением shared_memory_type" -#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1187 +#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1195 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "" "ранее выделенный блок разделяемой памяти (ключ %lu, ID %lu) по-прежнему " "используется" -#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1189 +#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1197 #, c-format msgid "" "Terminate any old server processes associated with data directory \"%s\"." @@ -21019,8 +21041,8 @@ msgstr "" "%u.0 - %u.%u" #: postmaster/postmaster.c:2264 utils/misc/guc.c:7400 utils/misc/guc.c:7436 -#: utils/misc/guc.c:7506 utils/misc/guc.c:8937 utils/misc/guc.c:11979 -#: utils/misc/guc.c:12020 +#: utils/misc/guc.c:7506 utils/misc/guc.c:8944 utils/misc/guc.c:11986 +#: utils/misc/guc.c:12027 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "неверное значение для параметра \"%s\": \"%s\"" @@ -21567,13 +21589,13 @@ msgstr "" "не удалось получить идентификатор СУБД и код линии времени с главного " "сервера: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:384 -#: replication/libpqwalreceiver/libpqwalreceiver.c:622 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:626 #, c-format msgid "invalid response from primary server" msgstr "неверный ответ главного сервера" -#: replication/libpqwalreceiver/libpqwalreceiver.c:385 +#: replication/libpqwalreceiver/libpqwalreceiver.c:389 #, c-format msgid "" "Could not identify system: got %d rows and %d fields, expected %d rows and " @@ -21582,86 +21604,86 @@ msgstr "" "Не удалось идентифицировать систему, получено строк: %d, полей: %d " "(ожидалось: %d и %d (или более))." -#: replication/libpqwalreceiver/libpqwalreceiver.c:465 -#: replication/libpqwalreceiver/libpqwalreceiver.c:472 -#: replication/libpqwalreceiver/libpqwalreceiver.c:502 +#: replication/libpqwalreceiver/libpqwalreceiver.c:469 +#: replication/libpqwalreceiver/libpqwalreceiver.c:476 +#: replication/libpqwalreceiver/libpqwalreceiver.c:506 #, c-format msgid "could not start WAL streaming: %s" msgstr "не удалось начать трансляцию WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:526 +#: replication/libpqwalreceiver/libpqwalreceiver.c:530 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "не удалось отправить главному серверу сообщение о конце передачи: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:553 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "неожиданный набор данных после конца передачи" -#: replication/libpqwalreceiver/libpqwalreceiver.c:564 +#: replication/libpqwalreceiver/libpqwalreceiver.c:568 #, c-format msgid "error while shutting down streaming COPY: %s" msgstr "ошибка при остановке потоковой операции COPY: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:574 +#: replication/libpqwalreceiver/libpqwalreceiver.c:578 #, c-format msgid "error reading result of streaming command: %s" msgstr "ошибка при чтении результата команды передачи: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:583 -#: replication/libpqwalreceiver/libpqwalreceiver.c:821 +#: replication/libpqwalreceiver/libpqwalreceiver.c:587 +#: replication/libpqwalreceiver/libpqwalreceiver.c:825 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "неожиданный результат после CommandComplete: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:610 +#: replication/libpqwalreceiver/libpqwalreceiver.c:614 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "не удалось получить файл истории линии времени с главного сервера: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:623 +#: replication/libpqwalreceiver/libpqwalreceiver.c:627 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Ожидался 1 кортеж с 2 полями, однако получено кортежей: %d, полей: %d." -#: replication/libpqwalreceiver/libpqwalreceiver.c:784 -#: replication/libpqwalreceiver/libpqwalreceiver.c:837 -#: replication/libpqwalreceiver/libpqwalreceiver.c:844 +#: replication/libpqwalreceiver/libpqwalreceiver.c:788 +#: replication/libpqwalreceiver/libpqwalreceiver.c:841 +#: replication/libpqwalreceiver/libpqwalreceiver.c:848 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "не удалось получить данные из потока WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:864 +#: replication/libpqwalreceiver/libpqwalreceiver.c:868 #, c-format msgid "could not send data to WAL stream: %s" msgstr "не удалось отправить данные в поток WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:956 +#: replication/libpqwalreceiver/libpqwalreceiver.c:960 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "не удалось создать слот репликации \"%s\": %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1002 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1006 #, c-format msgid "invalid query response" msgstr "неверный ответ на запрос" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1003 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1007 #, c-format msgid "Expected %d fields, got %d fields." msgstr "Ожидалось полей: %d, получено: %d." -#: replication/libpqwalreceiver/libpqwalreceiver.c:1073 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1077 #, c-format msgid "the query interface requires a database connection" msgstr "для интерфейса запросов требуется подключение к БД" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1104 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1108 msgid "empty query" msgstr "пустой запрос" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1110 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1114 msgid "unexpected pipeline mode" msgstr "неожиданный режим канала" @@ -22100,25 +22122,25 @@ msgstr "" "применяющий процесс логической репликации для подписки \"%s\" будет " "перезапущен, чтобы можно было включить режим two_phase" -#: replication/logical/tablesync.c:731 replication/logical/tablesync.c:872 +#: replication/logical/tablesync.c:741 replication/logical/tablesync.c:882 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "" "не удалось получить информацию о таблице \"%s.%s\" с сервера публикации: %s" -#: replication/logical/tablesync.c:738 +#: replication/logical/tablesync.c:748 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "таблица \"%s.%s\" не найдена на сервере публикации" -#: replication/logical/tablesync.c:795 +#: replication/logical/tablesync.c:805 #, c-format msgid "could not fetch column list info for table \"%s.%s\" from publisher: %s" msgstr "" "не удалось получить информацию о списке столбцов таблицы \"%s.%s\" с сервера " "публикации: %s" -#: replication/logical/tablesync.c:974 +#: replication/logical/tablesync.c:984 #, c-format msgid "" "could not fetch table WHERE clause info for table \"%s.%s\" from publisher: " @@ -22127,13 +22149,13 @@ msgstr "" "не удалось получить информацию о предложении WHERE таблицы \"%s.%s\" с " "сервера публикации: %s" -#: replication/logical/tablesync.c:1111 +#: replication/logical/tablesync.c:1129 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "" "не удалось начать копирование начального содержимого таблицы \"%s.%s\": %s" -#: replication/logical/tablesync.c:1323 replication/logical/worker.c:1635 +#: replication/logical/tablesync.c:1341 replication/logical/worker.c:1635 #, c-format msgid "" "user \"%s\" cannot replicate into relation with row-level security enabled: " @@ -22142,19 +22164,19 @@ msgstr "" "пользователь \"%s\" не может реплицировать данные в отношение с включённой " "защитой на уровне строк: \"%s\"" -#: replication/logical/tablesync.c:1338 +#: replication/logical/tablesync.c:1356 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "" "при копировании таблицы не удалось начать транзакцию на сервере публикации: " "%s" -#: replication/logical/tablesync.c:1380 +#: replication/logical/tablesync.c:1398 #, c-format msgid "replication origin \"%s\" already exists" msgstr "источник репликации \"%s\" уже существует" -#: replication/logical/tablesync.c:1393 +#: replication/logical/tablesync.c:1411 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "" @@ -23779,17 +23801,17 @@ msgstr "не удалось закрыть сегмент разделяемой msgid "could not duplicate handle for \"%s\": %m" msgstr "не удалось продублировать указатель для \"%s\": %m" -#: storage/ipc/procarray.c:3846 +#: storage/ipc/procarray.c:3845 #, c-format msgid "database \"%s\" is being used by prepared transactions" msgstr "база \"%s\" используется подготовленными транзакциями" -#: storage/ipc/procarray.c:3878 storage/ipc/signalfuncs.c:226 +#: storage/ipc/procarray.c:3877 storage/ipc/signalfuncs.c:231 #, c-format msgid "must be a superuser to terminate superuser process" msgstr "прерывать процесс суперпользователя может только суперпользователь" -#: storage/ipc/procarray.c:3885 storage/ipc/signalfuncs.c:231 +#: storage/ipc/procarray.c:3884 storage/ipc/signalfuncs.c:236 #, c-format msgid "" "must be a member of the role whose process is being terminated or member of " @@ -23863,18 +23885,18 @@ msgstr "запрошенный размер разделяемой памяти msgid "PID %d is not a PostgreSQL backend process" msgstr "PID %d не относится к обслуживающему процессу PostgreSQL" -#: storage/ipc/signalfuncs.c:104 storage/lmgr/proc.c:1442 +#: storage/ipc/signalfuncs.c:109 storage/lmgr/proc.c:1442 #: utils/adt/mcxtfuncs.c:190 #, c-format msgid "could not send signal to process %d: %m" msgstr "отправить сигнал процессу %d не удалось: %m" -#: storage/ipc/signalfuncs.c:124 +#: storage/ipc/signalfuncs.c:129 #, c-format msgid "must be a superuser to cancel superuser query" msgstr "для отмены запроса суперпользователя нужно быть суперпользователем" -#: storage/ipc/signalfuncs.c:129 +#: storage/ipc/signalfuncs.c:134 #, c-format msgid "" "must be a member of the role whose query is being canceled or member of " @@ -23883,13 +23905,13 @@ msgstr "" "необходимо быть членом роли, запрос которой отменяется, или роли " "pg_signal_backend" -#: storage/ipc/signalfuncs.c:170 +#: storage/ipc/signalfuncs.c:175 #, c-format msgid "could not check the existence of the backend with PID %d: %m" msgstr "" "не удалось проверить существование обслуживающего процесса с PID %d: %m" -#: storage/ipc/signalfuncs.c:188 +#: storage/ipc/signalfuncs.c:193 #, c-format msgid "backend with PID %d did not terminate within %lld millisecond" msgid_plural "backend with PID %d did not terminate within %lld milliseconds" @@ -23897,12 +23919,12 @@ msgstr[0] "обслуживающий процесс с PID %d не заверш msgstr[1] "обслуживающий процесс с PID %d не завершился за %lld мс" msgstr[2] "обслуживающий процесс с PID %d не завершился за %lld мс" -#: storage/ipc/signalfuncs.c:219 +#: storage/ipc/signalfuncs.c:224 #, c-format msgid "\"timeout\" must not be negative" msgstr "\"timeout\" не может быть отрицательным" -#: storage/ipc/signalfuncs.c:271 +#: storage/ipc/signalfuncs.c:276 #, c-format msgid "must be superuser to rotate log files with adminpack 1.0" msgstr "" @@ -23910,12 +23932,12 @@ msgstr "" "суперпользователь" #. translator: %s is a SQL function name -#: storage/ipc/signalfuncs.c:273 utils/adt/genfile.c:250 +#: storage/ipc/signalfuncs.c:278 utils/adt/genfile.c:250 #, c-format msgid "Consider using %s, which is part of core, instead." msgstr "Рассмотрите возможность использования функции %s, включённой в ядро." -#: storage/ipc/signalfuncs.c:279 storage/ipc/signalfuncs.c:299 +#: storage/ipc/signalfuncs.c:284 storage/ipc/signalfuncs.c:304 #, c-format msgid "rotation not possible because log collection not active" msgstr "прокрутка невозможна, так как протоколирование отключено" @@ -25064,38 +25086,38 @@ msgstr "Значение MaxFragments должно быть >= 0" msgid "could not unlink permanent statistics file \"%s\": %m" msgstr "ошибка удаления постоянного файла статистики \"%s\": %m" -#: utils/activity/pgstat.c:1226 +#: utils/activity/pgstat.c:1229 #, c-format msgid "invalid statistics kind: \"%s\"" msgstr "неверный вид статистики: \"%s\"" -#: utils/activity/pgstat.c:1306 +#: utils/activity/pgstat.c:1309 #, c-format msgid "could not open temporary statistics file \"%s\": %m" msgstr "не удалось открыть временный файл статистики \"%s\": %m" -#: utils/activity/pgstat.c:1412 +#: utils/activity/pgstat.c:1415 #, c-format msgid "could not write temporary statistics file \"%s\": %m" msgstr "не удалось записать во временный файл статистики \"%s\": %m" -#: utils/activity/pgstat.c:1421 +#: utils/activity/pgstat.c:1424 #, c-format msgid "could not close temporary statistics file \"%s\": %m" msgstr "не удалось закрыть временный файл статистики \"%s\": %m" -#: utils/activity/pgstat.c:1429 +#: utils/activity/pgstat.c:1432 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "" "не удалось переименовать временный файл статистики из \"%s\" в \"%s\": %m" -#: utils/activity/pgstat.c:1478 +#: utils/activity/pgstat.c:1481 #, c-format msgid "could not open statistics file \"%s\": %m" msgstr "не удалось открыть файл статистики \"%s\": %m" -#: utils/activity/pgstat.c:1634 +#: utils/activity/pgstat.c:1637 #, c-format msgid "corrupted statistics file \"%s\"" msgstr "файл статистики \"%s\" испорчен" @@ -25293,59 +25315,59 @@ msgstr "поиск элементов в многомерных массивах msgid "initial position must not be null" msgstr "начальная позиция не может быть NULL" -#: utils/adt/arrayfuncs.c:271 utils/adt/arrayfuncs.c:285 -#: utils/adt/arrayfuncs.c:296 utils/adt/arrayfuncs.c:318 -#: utils/adt/arrayfuncs.c:333 utils/adt/arrayfuncs.c:347 -#: utils/adt/arrayfuncs.c:353 utils/adt/arrayfuncs.c:360 -#: utils/adt/arrayfuncs.c:493 utils/adt/arrayfuncs.c:509 -#: utils/adt/arrayfuncs.c:520 utils/adt/arrayfuncs.c:535 -#: utils/adt/arrayfuncs.c:556 utils/adt/arrayfuncs.c:586 -#: utils/adt/arrayfuncs.c:593 utils/adt/arrayfuncs.c:601 -#: utils/adt/arrayfuncs.c:635 utils/adt/arrayfuncs.c:658 -#: utils/adt/arrayfuncs.c:678 utils/adt/arrayfuncs.c:790 -#: utils/adt/arrayfuncs.c:799 utils/adt/arrayfuncs.c:829 -#: utils/adt/arrayfuncs.c:844 utils/adt/arrayfuncs.c:897 +#: utils/adt/arrayfuncs.c:272 utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:334 utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:510 +#: utils/adt/arrayfuncs.c:521 utils/adt/arrayfuncs.c:536 +#: utils/adt/arrayfuncs.c:557 utils/adt/arrayfuncs.c:587 +#: utils/adt/arrayfuncs.c:594 utils/adt/arrayfuncs.c:602 +#: utils/adt/arrayfuncs.c:636 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:679 utils/adt/arrayfuncs.c:791 +#: utils/adt/arrayfuncs.c:800 utils/adt/arrayfuncs.c:830 +#: utils/adt/arrayfuncs.c:845 utils/adt/arrayfuncs.c:898 #, c-format msgid "malformed array literal: \"%s\"" msgstr "ошибочный литерал массива: \"%s\"" -#: utils/adt/arrayfuncs.c:272 +#: utils/adt/arrayfuncs.c:273 #, c-format msgid "\"[\" must introduce explicitly-specified array dimensions." msgstr "За \"[\" должны следовать явно задаваемые размерности массива." -#: utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:287 #, c-format msgid "Missing array dimension value." msgstr "Отсутствует значение размерности массива." -#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:334 +#: utils/adt/arrayfuncs.c:298 utils/adt/arrayfuncs.c:335 #, c-format msgid "Missing \"%s\" after array dimensions." msgstr "После размерностей массива отсутствует \"%s\"." -#: utils/adt/arrayfuncs.c:306 utils/adt/arrayfuncs.c:2909 -#: utils/adt/arrayfuncs.c:2941 utils/adt/arrayfuncs.c:2956 +#: utils/adt/arrayfuncs.c:307 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2990 utils/adt/arrayfuncs.c:3005 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "верхняя граница не может быть меньше нижней" -#: utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:320 #, c-format msgid "Array value must start with \"{\" or dimension information." msgstr "Значение массива должно начинаться с \"{\" или указания размерности." -#: utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:349 #, c-format msgid "Array contents must start with \"{\"." msgstr "Содержимое массива должно начинаться с \"{\"." -#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:355 utils/adt/arrayfuncs.c:362 #, c-format msgid "Specified array dimensions do not match array contents." msgstr "Указанные размерности массива не соответствуют его содержимому." -#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:521 +#: utils/adt/arrayfuncs.c:495 utils/adt/arrayfuncs.c:522 #: utils/adt/multirangetypes.c:164 utils/adt/rangetypes.c:2310 #: utils/adt/rangetypes.c:2318 utils/adt/rowtypes.c:211 #: utils/adt/rowtypes.c:219 @@ -25353,78 +25375,78 @@ msgstr "Указанные размерности массива не соотв msgid "Unexpected end of input." msgstr "Неожиданный конец ввода." -#: utils/adt/arrayfuncs.c:510 utils/adt/arrayfuncs.c:557 -#: utils/adt/arrayfuncs.c:587 utils/adt/arrayfuncs.c:636 +#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:558 +#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:637 #, c-format msgid "Unexpected \"%c\" character." msgstr "Неожиданный знак \"%c\"." -#: utils/adt/arrayfuncs.c:536 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:537 utils/adt/arrayfuncs.c:660 #, c-format msgid "Unexpected array element." msgstr "Неожиданный элемент массива." -#: utils/adt/arrayfuncs.c:594 +#: utils/adt/arrayfuncs.c:595 #, c-format msgid "Unmatched \"%c\" character." msgstr "Непарный знак \"%c\"." -#: utils/adt/arrayfuncs.c:602 utils/adt/jsonfuncs.c:2490 +#: utils/adt/arrayfuncs.c:603 utils/adt/jsonfuncs.c:2490 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "" "Для многомерных массивов должны задаваться вложенные массивы с " "соответствующими размерностями." -#: utils/adt/arrayfuncs.c:679 utils/adt/multirangetypes.c:287 +#: utils/adt/arrayfuncs.c:680 utils/adt/multirangetypes.c:287 #, c-format msgid "Junk after closing right brace." msgstr "Мусор после закрывающей фигурной скобки." -#: utils/adt/arrayfuncs.c:1301 utils/adt/arrayfuncs.c:3369 -#: utils/adt/arrayfuncs.c:5883 +#: utils/adt/arrayfuncs.c:1302 utils/adt/arrayfuncs.c:3418 +#: utils/adt/arrayfuncs.c:5932 #, c-format msgid "invalid number of dimensions: %d" msgstr "неверное число размерностей: %d" -#: utils/adt/arrayfuncs.c:1312 +#: utils/adt/arrayfuncs.c:1313 #, c-format msgid "invalid array flags" msgstr "неверные флаги массива" -#: utils/adt/arrayfuncs.c:1334 +#: utils/adt/arrayfuncs.c:1335 #, c-format msgid "binary data has array element type %u (%s) instead of expected %u (%s)" msgstr "" "с бинарными данными связан тип элемента массива %u (%s) вместо ожидаемого %u " "(%s)" -#: utils/adt/arrayfuncs.c:1378 utils/adt/multirangetypes.c:445 +#: utils/adt/arrayfuncs.c:1379 utils/adt/multirangetypes.c:445 #: utils/adt/rangetypes.c:333 utils/cache/lsyscache.c:2915 #, c-format msgid "no binary input function available for type %s" msgstr "для типа %s нет функции ввода двоичных данных" -#: utils/adt/arrayfuncs.c:1518 +#: utils/adt/arrayfuncs.c:1519 #, c-format msgid "improper binary format in array element %d" msgstr "неподходящий двоичный формат в элементе массива %d" -#: utils/adt/arrayfuncs.c:1599 utils/adt/multirangetypes.c:450 +#: utils/adt/arrayfuncs.c:1600 utils/adt/multirangetypes.c:450 #: utils/adt/rangetypes.c:338 utils/cache/lsyscache.c:2948 #, c-format msgid "no binary output function available for type %s" msgstr "для типа %s нет функции вывода двоичных данных" -#: utils/adt/arrayfuncs.c:2078 +#: utils/adt/arrayfuncs.c:2079 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "разрезание массивов постоянной длины не поддерживается" -#: utils/adt/arrayfuncs.c:2256 utils/adt/arrayfuncs.c:2278 -#: utils/adt/arrayfuncs.c:2327 utils/adt/arrayfuncs.c:2565 -#: utils/adt/arrayfuncs.c:2887 utils/adt/arrayfuncs.c:5869 -#: utils/adt/arrayfuncs.c:5895 utils/adt/arrayfuncs.c:5906 +#: utils/adt/arrayfuncs.c:2257 utils/adt/arrayfuncs.c:2279 +#: utils/adt/arrayfuncs.c:2328 utils/adt/arrayfuncs.c:2582 +#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:5918 +#: utils/adt/arrayfuncs.c:5944 utils/adt/arrayfuncs.c:5955 #: utils/adt/json.c:1141 utils/adt/json.c:1215 utils/adt/jsonb.c:1315 #: utils/adt/jsonb.c:1401 utils/adt/jsonfuncs.c:4326 utils/adt/jsonfuncs.c:4480 #: utils/adt/jsonfuncs.c:4592 utils/adt/jsonfuncs.c:4641 @@ -25432,28 +25454,28 @@ msgstr "разрезание массивов постоянной длины н msgid "wrong number of array subscripts" msgstr "неверное число индексов массива" -#: utils/adt/arrayfuncs.c:2261 utils/adt/arrayfuncs.c:2369 -#: utils/adt/arrayfuncs.c:2632 utils/adt/arrayfuncs.c:2946 +#: utils/adt/arrayfuncs.c:2262 utils/adt/arrayfuncs.c:2386 +#: utils/adt/arrayfuncs.c:2665 utils/adt/arrayfuncs.c:2995 #, c-format msgid "array subscript out of range" msgstr "индекс массива вне диапазона" -#: utils/adt/arrayfuncs.c:2266 +#: utils/adt/arrayfuncs.c:2267 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "нельзя присвоить значение null элементу массива фиксированной длины" -#: utils/adt/arrayfuncs.c:2834 +#: utils/adt/arrayfuncs.c:2867 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "изменения в срезах массивов фиксированной длины не поддерживаются" -#: utils/adt/arrayfuncs.c:2865 +#: utils/adt/arrayfuncs.c:2898 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "в указании среза массива должны быть заданы обе границы" -#: utils/adt/arrayfuncs.c:2866 +#: utils/adt/arrayfuncs.c:2899 #, c-format msgid "" "When assigning to a slice of an empty array value, slice boundaries must be " @@ -25462,90 +25484,90 @@ msgstr "" "При присвоении значений срезу в пустом массиве, должны полностью задаваться " "обе границы." -#: utils/adt/arrayfuncs.c:2877 utils/adt/arrayfuncs.c:2973 +#: utils/adt/arrayfuncs.c:2910 utils/adt/arrayfuncs.c:3022 #, c-format msgid "source array too small" msgstr "исходный массив слишком мал" -#: utils/adt/arrayfuncs.c:3527 +#: utils/adt/arrayfuncs.c:3576 #, c-format msgid "null array element not allowed in this context" msgstr "элемент массива null недопустим в данном контексте" -#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 -#: utils/adt/arrayfuncs.c:4191 +#: utils/adt/arrayfuncs.c:3678 utils/adt/arrayfuncs.c:3849 +#: utils/adt/arrayfuncs.c:4240 #, c-format msgid "cannot compare arrays of different element types" msgstr "нельзя сравнивать массивы с элементами разных типов" -#: utils/adt/arrayfuncs.c:3978 utils/adt/multirangetypes.c:2799 +#: utils/adt/arrayfuncs.c:4027 utils/adt/multirangetypes.c:2799 #: utils/adt/multirangetypes.c:2871 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" msgstr "не удалось найти функцию хеширования для типа %s" -#: utils/adt/arrayfuncs.c:4106 utils/adt/rowtypes.c:1979 +#: utils/adt/arrayfuncs.c:4155 utils/adt/rowtypes.c:1979 #, c-format msgid "could not identify an extended hash function for type %s" msgstr "не удалось найти функцию расширенного хеширования для типа %s" -#: utils/adt/arrayfuncs.c:5283 +#: utils/adt/arrayfuncs.c:5332 #, c-format msgid "data type %s is not an array type" msgstr "тип данных %s не является типом массива" -#: utils/adt/arrayfuncs.c:5338 +#: utils/adt/arrayfuncs.c:5387 #, c-format msgid "cannot accumulate null arrays" msgstr "аккумулировать NULL-массивы нельзя" -#: utils/adt/arrayfuncs.c:5366 +#: utils/adt/arrayfuncs.c:5415 #, c-format msgid "cannot accumulate empty arrays" msgstr "аккумулировать пустые массивы нельзя" -#: utils/adt/arrayfuncs.c:5393 utils/adt/arrayfuncs.c:5399 +#: utils/adt/arrayfuncs.c:5442 utils/adt/arrayfuncs.c:5448 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "аккумулировать массивы различной размерности нельзя" -#: utils/adt/arrayfuncs.c:5767 utils/adt/arrayfuncs.c:5807 +#: utils/adt/arrayfuncs.c:5816 utils/adt/arrayfuncs.c:5856 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "массив размерностей или массив нижних границ не может быть null" -#: utils/adt/arrayfuncs.c:5870 utils/adt/arrayfuncs.c:5896 +#: utils/adt/arrayfuncs.c:5919 utils/adt/arrayfuncs.c:5945 #, c-format msgid "Dimension array must be one dimensional." msgstr "Массив размерностей должен быть одномерным." -#: utils/adt/arrayfuncs.c:5875 utils/adt/arrayfuncs.c:5901 +#: utils/adt/arrayfuncs.c:5924 utils/adt/arrayfuncs.c:5950 #, c-format msgid "dimension values cannot be null" msgstr "значения размерностей не могут быть null" -#: utils/adt/arrayfuncs.c:5907 +#: utils/adt/arrayfuncs.c:5956 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Массив нижних границ и массив размерностей имеют разные размеры." -#: utils/adt/arrayfuncs.c:6185 +#: utils/adt/arrayfuncs.c:6234 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "удаление элементов из многомерных массивов не поддерживается" -#: utils/adt/arrayfuncs.c:6462 +#: utils/adt/arrayfuncs.c:6511 #, c-format msgid "thresholds must be one-dimensional array" msgstr "границы должны задаваться одномерным массивом" -#: utils/adt/arrayfuncs.c:6467 +#: utils/adt/arrayfuncs.c:6516 #, c-format msgid "thresholds array must not contain NULLs" msgstr "массив границ не должен содержать NULL" -#: utils/adt/arrayfuncs.c:6700 +#: utils/adt/arrayfuncs.c:6749 #, c-format msgid "number of elements to trim must be between 0 and %d" msgstr "число удаляемых элементов должно быть от 0 до %d" @@ -25560,22 +25582,22 @@ msgstr "индекс элемента массива должен быть це msgid "array subscript in assignment must not be null" msgstr "индекс элемента массива в присваивании не может быть NULL" -#: utils/adt/arrayutils.c:140 +#: utils/adt/arrayutils.c:134 #, c-format msgid "array lower bound is too large: %d" msgstr "нижняя граница массива слишком велика: %d" -#: utils/adt/arrayutils.c:240 +#: utils/adt/arrayutils.c:234 #, c-format msgid "typmod array must be type cstring[]" msgstr "массив typmod должен иметь тип cstring[]" -#: utils/adt/arrayutils.c:245 +#: utils/adt/arrayutils.c:239 #, c-format msgid "typmod array must be one-dimensional" msgstr "массив typmod должен быть одномерным" -#: utils/adt/arrayutils.c:250 +#: utils/adt/arrayutils.c:244 #, c-format msgid "typmod array must not contain nulls" msgstr "массив typmod не должен содержать элементы null" @@ -25625,7 +25647,7 @@ msgstr "значение \"%s\" вне диапазона для типа %s" #: utils/adt/int8.c:1165 utils/adt/numeric.c:3093 utils/adt/numeric.c:3116 #: utils/adt/numeric.c:3201 utils/adt/numeric.c:3219 utils/adt/numeric.c:3315 #: utils/adt/numeric.c:8481 utils/adt/numeric.c:8771 utils/adt/numeric.c:9096 -#: utils/adt/numeric.c:10553 utils/adt/timestamp.c:3337 +#: utils/adt/numeric.c:10553 utils/adt/timestamp.c:3361 #, c-format msgid "division by zero" msgstr "деление на ноль" @@ -25664,7 +25686,7 @@ msgid "date out of range: \"%s\"" msgstr "дата вне диапазона: \"%s\"" #: utils/adt/date.c:215 utils/adt/date.c:513 utils/adt/date.c:537 -#: utils/adt/xml.c:2209 +#: utils/adt/xml.c:2219 #, c-format msgid "date out of range" msgstr "дата вне диапазона" @@ -25691,20 +25713,20 @@ msgid "date out of range for timestamp" msgstr "дата вне диапазона для типа timestamp" #: utils/adt/date.c:1115 utils/adt/date.c:1198 utils/adt/date.c:1214 -#: utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4032 -#: utils/adt/timestamp.c:4225 utils/adt/timestamp.c:4397 -#: utils/adt/timestamp.c:4650 utils/adt/timestamp.c:4851 -#: utils/adt/timestamp.c:4898 utils/adt/timestamp.c:5122 -#: utils/adt/timestamp.c:5169 utils/adt/timestamp.c:5299 +#: utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4078 +#: utils/adt/timestamp.c:4271 utils/adt/timestamp.c:4443 +#: utils/adt/timestamp.c:4696 utils/adt/timestamp.c:4897 +#: utils/adt/timestamp.c:4944 utils/adt/timestamp.c:5168 +#: utils/adt/timestamp.c:5215 utils/adt/timestamp.c:5345 #, c-format msgid "unit \"%s\" not supported for type %s" msgstr "единица \"%s\" для типа %s не поддерживается" #: utils/adt/date.c:1223 utils/adt/date.c:2211 utils/adt/date.c:2993 -#: utils/adt/timestamp.c:4046 utils/adt/timestamp.c:4242 -#: utils/adt/timestamp.c:4411 utils/adt/timestamp.c:4610 -#: utils/adt/timestamp.c:4907 utils/adt/timestamp.c:5178 -#: utils/adt/timestamp.c:5360 +#: utils/adt/timestamp.c:4092 utils/adt/timestamp.c:4288 +#: utils/adt/timestamp.c:4457 utils/adt/timestamp.c:4656 +#: utils/adt/timestamp.c:4953 utils/adt/timestamp.c:5224 +#: utils/adt/timestamp.c:5406 #, c-format msgid "unit \"%s\" not recognized for type %s" msgstr "единица \"%s\" для типа %s не распознана" @@ -25718,21 +25740,22 @@ msgstr "единица \"%s\" для типа %s не распознана" #: utils/adt/timestamp.c:699 utils/adt/timestamp.c:708 #: utils/adt/timestamp.c:786 utils/adt/timestamp.c:819 #: utils/adt/timestamp.c:2916 utils/adt/timestamp.c:2937 -#: utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2959 -#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:3022 -#: utils/adt/timestamp.c:3045 utils/adt/timestamp.c:3058 -#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3077 -#: utils/adt/timestamp.c:3736 utils/adt/timestamp.c:3860 -#: utils/adt/timestamp.c:3950 utils/adt/timestamp.c:4040 -#: utils/adt/timestamp.c:4133 utils/adt/timestamp.c:4236 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4989 -#: utils/adt/timestamp.c:5439 utils/adt/timestamp.c:5453 -#: utils/adt/timestamp.c:5458 utils/adt/timestamp.c:5472 -#: utils/adt/timestamp.c:5505 utils/adt/timestamp.c:5592 -#: utils/adt/timestamp.c:5633 utils/adt/timestamp.c:5637 -#: utils/adt/timestamp.c:5706 utils/adt/timestamp.c:5710 -#: utils/adt/timestamp.c:5724 utils/adt/timestamp.c:5758 utils/adt/xml.c:2231 -#: utils/adt/xml.c:2238 utils/adt/xml.c:2258 utils/adt/xml.c:2265 +#: utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2961 +#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2975 +#: utils/adt/timestamp.c:3030 utils/adt/timestamp.c:3053 +#: utils/adt/timestamp.c:3066 utils/adt/timestamp.c:3080 +#: utils/adt/timestamp.c:3088 utils/adt/timestamp.c:3096 +#: utils/adt/timestamp.c:3782 utils/adt/timestamp.c:3906 +#: utils/adt/timestamp.c:3996 utils/adt/timestamp.c:4086 +#: utils/adt/timestamp.c:4179 utils/adt/timestamp.c:4282 +#: utils/adt/timestamp.c:4761 utils/adt/timestamp.c:5035 +#: utils/adt/timestamp.c:5485 utils/adt/timestamp.c:5499 +#: utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5518 +#: utils/adt/timestamp.c:5551 utils/adt/timestamp.c:5638 +#: utils/adt/timestamp.c:5679 utils/adt/timestamp.c:5683 +#: utils/adt/timestamp.c:5752 utils/adt/timestamp.c:5756 +#: utils/adt/timestamp.c:5770 utils/adt/timestamp.c:5804 utils/adt/xml.c:2241 +#: utils/adt/xml.c:2248 utils/adt/xml.c:2268 utils/adt/xml.c:2275 #, c-format msgid "timestamp out of range" msgstr "timestamp вне диапазона" @@ -25750,8 +25773,8 @@ msgstr "значение поля типа time вне диапазона: %d:%0 #: utils/adt/date.c:2096 utils/adt/date.c:2630 utils/adt/float.c:1048 #: utils/adt/float.c:1124 utils/adt/int.c:634 utils/adt/int.c:681 #: utils/adt/int.c:716 utils/adt/int8.c:414 utils/adt/numeric.c:2497 -#: utils/adt/timestamp.c:3386 utils/adt/timestamp.c:3417 -#: utils/adt/timestamp.c:3448 +#: utils/adt/timestamp.c:3432 utils/adt/timestamp.c:3463 +#: utils/adt/timestamp.c:3494 #, c-format msgid "invalid preceding or following size in window function" msgstr "неверное смещение PRECEDING или FOLLOWING в оконной функции" @@ -25763,13 +25786,13 @@ msgstr "смещение часового пояса вне диапазона" #: utils/adt/date.c:3084 utils/adt/datetime.c:1121 utils/adt/datetime.c:2027 #: utils/adt/datetime.c:4898 utils/adt/timestamp.c:516 -#: utils/adt/timestamp.c:543 utils/adt/timestamp.c:4319 -#: utils/adt/timestamp.c:5464 utils/adt/timestamp.c:5716 +#: utils/adt/timestamp.c:543 utils/adt/timestamp.c:4365 +#: utils/adt/timestamp.c:5510 utils/adt/timestamp.c:5762 #, c-format msgid "time zone \"%s\" not recognized" msgstr "часовой пояс \"%s\" не распознан" -#: utils/adt/date.c:3117 utils/adt/timestamp.c:5494 utils/adt/timestamp.c:5747 +#: utils/adt/date.c:3117 utils/adt/timestamp.c:5540 utils/adt/timestamp.c:5793 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "" @@ -26366,7 +26389,7 @@ msgid "invalid int2vector data" msgstr "неверные данные int2vector" #: utils/adt/int.c:1528 utils/adt/int8.c:1404 utils/adt/numeric.c:1678 -#: utils/adt/timestamp.c:5809 utils/adt/timestamp.c:5889 +#: utils/adt/timestamp.c:5855 utils/adt/timestamp.c:5935 #, c-format msgid "step size cannot equal zero" msgstr "размер шага не может быть нулевым" @@ -27601,7 +27624,7 @@ msgstr "" #: utils/adt/regexp.c:702 utils/adt/regexp.c:711 utils/adt/regexp.c:1068 #: utils/adt/regexp.c:1132 utils/adt/regexp.c:1141 utils/adt/regexp.c:1150 #: utils/adt/regexp.c:1159 utils/adt/regexp.c:1839 utils/adt/regexp.c:1848 -#: utils/adt/regexp.c:1857 utils/misc/guc.c:11868 utils/misc/guc.c:11902 +#: utils/adt/regexp.c:1857 utils/misc/guc.c:11875 utils/misc/guc.c:11909 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "неверное значение параметра \"%s\": %d" @@ -27878,7 +27901,7 @@ msgstr "TIMESTAMP(%d)%s: точность должна быть неотрица msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "TIMESTAMP(%d)%s: точность уменьшена до дозволенного максимума: %d" -#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12892 +#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12899 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestamp вне диапазона: \"%s\"" @@ -27918,14 +27941,13 @@ msgstr "timestamp вне диапазона: \"%g\"" #: utils/adt/timestamp.c:938 utils/adt/timestamp.c:1509 #: utils/adt/timestamp.c:2761 utils/adt/timestamp.c:2778 #: utils/adt/timestamp.c:2831 utils/adt/timestamp.c:2870 -#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3120 -#: utils/adt/timestamp.c:3125 utils/adt/timestamp.c:3175 -#: utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3189 -#: utils/adt/timestamp.c:3209 utils/adt/timestamp.c:3216 -#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3253 -#: utils/adt/timestamp.c:3261 utils/adt/timestamp.c:3305 -#: utils/adt/timestamp.c:3731 utils/adt/timestamp.c:3855 -#: utils/adt/timestamp.c:4405 +#: utils/adt/timestamp.c:3134 utils/adt/timestamp.c:3139 +#: utils/adt/timestamp.c:3144 utils/adt/timestamp.c:3194 +#: utils/adt/timestamp.c:3201 utils/adt/timestamp.c:3208 +#: utils/adt/timestamp.c:3228 utils/adt/timestamp.c:3235 +#: utils/adt/timestamp.c:3242 utils/adt/timestamp.c:3329 +#: utils/adt/timestamp.c:3404 utils/adt/timestamp.c:3777 +#: utils/adt/timestamp.c:3901 utils/adt/timestamp.c:4451 #, c-format msgid "interval out of range" msgstr "interval вне диапазона" @@ -27955,23 +27977,23 @@ msgstr "точность interval(%d) должна быть между %d и %d" msgid "cannot subtract infinite timestamps" msgstr "вычитать бесконечные значения timestamp нельзя" -#: utils/adt/timestamp.c:3891 utils/adt/timestamp.c:4074 +#: utils/adt/timestamp.c:3937 utils/adt/timestamp.c:4120 #, c-format msgid "origin out of range" msgstr "начало вне диапазона" -#: utils/adt/timestamp.c:3896 utils/adt/timestamp.c:4079 +#: utils/adt/timestamp.c:3942 utils/adt/timestamp.c:4125 #, c-format msgid "timestamps cannot be binned into intervals containing months or years" msgstr "" "значения timestamp нельзя подогнать под интервалы, содержащие месяцы или годы" -#: utils/adt/timestamp.c:3903 utils/adt/timestamp.c:4086 +#: utils/adt/timestamp.c:3949 utils/adt/timestamp.c:4132 #, c-format msgid "stride must be greater than zero" msgstr "шаг должен быть больше нуля" -#: utils/adt/timestamp.c:4399 +#: utils/adt/timestamp.c:4445 #, c-format msgid "Months usually have fractional weeks." msgstr "В месяцах обычно дробное количество недель." @@ -28390,57 +28412,57 @@ msgstr "ID транзакции %llu относится к будущему" msgid "invalid external pg_snapshot data" msgstr "неверное внешнее представление pg_snapshot" -#: utils/adt/xml.c:222 +#: utils/adt/xml.c:232 #, c-format msgid "unsupported XML feature" msgstr "XML-функции не поддерживаются" -#: utils/adt/xml.c:223 +#: utils/adt/xml.c:233 #, c-format msgid "This functionality requires the server to be built with libxml support." msgstr "Для этой функциональности в сервере не хватает поддержки libxml." -#: utils/adt/xml.c:242 utils/mb/mbutils.c:627 +#: utils/adt/xml.c:252 utils/mb/mbutils.c:627 #, c-format msgid "invalid encoding name \"%s\"" msgstr "неверное имя кодировки: \"%s\"" -#: utils/adt/xml.c:485 utils/adt/xml.c:490 +#: utils/adt/xml.c:495 utils/adt/xml.c:500 #, c-format msgid "invalid XML comment" msgstr "ошибка в XML-комментарии" -#: utils/adt/xml.c:619 +#: utils/adt/xml.c:629 #, c-format msgid "not an XML document" msgstr "не XML-документ" -#: utils/adt/xml.c:778 utils/adt/xml.c:801 +#: utils/adt/xml.c:788 utils/adt/xml.c:811 #, c-format msgid "invalid XML processing instruction" msgstr "неправильная XML-инструкция обработки (PI)" -#: utils/adt/xml.c:779 +#: utils/adt/xml.c:789 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." msgstr "назначением XML-инструкции обработки (PI) не может быть \"%s\"." -#: utils/adt/xml.c:802 +#: utils/adt/xml.c:812 #, c-format msgid "XML processing instruction cannot contain \"?>\"." msgstr "XML-инструкция обработки (PI) не может содержать \"?>\"." -#: utils/adt/xml.c:881 +#: utils/adt/xml.c:891 #, c-format msgid "xmlvalidate is not implemented" msgstr "функция xmlvalidate не реализована" -#: utils/adt/xml.c:960 +#: utils/adt/xml.c:970 #, c-format msgid "could not initialize XML library" msgstr "не удалось инициализировать библиотеку XML" -#: utils/adt/xml.c:961 +#: utils/adt/xml.c:971 #, c-format msgid "" "libxml2 has incompatible char type: sizeof(char)=%zu, sizeof(xmlChar)=%zu." @@ -28448,12 +28470,12 @@ msgstr "" "В libxml2 оказался несовместимый тип char: sizeof(char)=%zu, " "sizeof(xmlChar)=%zu." -#: utils/adt/xml.c:1047 +#: utils/adt/xml.c:1057 #, c-format msgid "could not set up XML error handler" msgstr "не удалось установить обработчик XML-ошибок" -#: utils/adt/xml.c:1048 +#: utils/adt/xml.c:1058 #, c-format msgid "" "This probably indicates that the version of libxml2 being used is not " @@ -28462,99 +28484,99 @@ msgstr "" "Возможно, это означает, что используемая версия libxml2 несовместима с " "заголовочными файлами libxml2, с которыми был собран PostgreSQL." -#: utils/adt/xml.c:1935 +#: utils/adt/xml.c:1945 msgid "Invalid character value." msgstr "Неверный символ." -#: utils/adt/xml.c:1938 +#: utils/adt/xml.c:1948 msgid "Space required." msgstr "Требуется пробел." -#: utils/adt/xml.c:1941 +#: utils/adt/xml.c:1951 msgid "standalone accepts only 'yes' or 'no'." msgstr "значениями атрибута standalone могут быть только 'yes' и 'no'." -#: utils/adt/xml.c:1944 +#: utils/adt/xml.c:1954 msgid "Malformed declaration: missing version." msgstr "Ошибочное объявление: не указана версия." -#: utils/adt/xml.c:1947 +#: utils/adt/xml.c:1957 msgid "Missing encoding in text declaration." msgstr "В объявлении не указана кодировка." -#: utils/adt/xml.c:1950 +#: utils/adt/xml.c:1960 msgid "Parsing XML declaration: '?>' expected." msgstr "Ошибка при разборе XML-объявления: ожидается '?>'." -#: utils/adt/xml.c:1953 +#: utils/adt/xml.c:1963 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "Нераспознанный код ошибки libxml: %d." -#: utils/adt/xml.c:2210 +#: utils/adt/xml.c:2220 #, c-format msgid "XML does not support infinite date values." msgstr "XML не поддерживает бесконечность в датах." -#: utils/adt/xml.c:2232 utils/adt/xml.c:2259 +#: utils/adt/xml.c:2242 utils/adt/xml.c:2269 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML не поддерживает бесконечность в timestamp." -#: utils/adt/xml.c:2675 +#: utils/adt/xml.c:2685 #, c-format msgid "invalid query" msgstr "неверный запрос" -#: utils/adt/xml.c:2767 +#: utils/adt/xml.c:2777 #, c-format msgid "portal \"%s\" does not return tuples" msgstr "портал \"%s\" не возвращает кортежи" -#: utils/adt/xml.c:4019 +#: utils/adt/xml.c:4029 #, c-format msgid "invalid array for XML namespace mapping" msgstr "неправильный массив с сопоставлениями пространств имён XML" -#: utils/adt/xml.c:4020 +#: utils/adt/xml.c:4030 #, c-format msgid "" "The array must be two-dimensional with length of the second axis equal to 2." msgstr "Массив должен быть двухмерным и содержать 2 элемента по второй оси." -#: utils/adt/xml.c:4044 +#: utils/adt/xml.c:4054 #, c-format msgid "empty XPath expression" msgstr "пустое выражение XPath" -#: utils/adt/xml.c:4096 +#: utils/adt/xml.c:4106 #, c-format msgid "neither namespace name nor URI may be null" msgstr "ни префикс, ни URI пространства имён не может быть null" -#: utils/adt/xml.c:4103 +#: utils/adt/xml.c:4113 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "" "не удалось зарегистрировать пространство имён XML с префиксом \"%s\" и URI " "\"%s\"" -#: utils/adt/xml.c:4454 +#: utils/adt/xml.c:4464 #, c-format msgid "DEFAULT namespace is not supported" msgstr "пространство имён DEFAULT не поддерживается" -#: utils/adt/xml.c:4483 +#: utils/adt/xml.c:4493 #, c-format msgid "row path filter must not be empty string" msgstr "путь отбираемых строк не должен быть пустым" -#: utils/adt/xml.c:4514 +#: utils/adt/xml.c:4524 #, c-format msgid "column path filter must not be empty string" msgstr "путь отбираемого столбца не должен быть пустым" -#: utils/adt/xml.c:4658 +#: utils/adt/xml.c:4668 #, c-format msgid "more than one value returned by column XPath expression" msgstr "выражение XPath, отбирающее столбец, возвратило более одного значения" @@ -28620,18 +28642,18 @@ msgstr "Продолжаем всё равно, хотя что-то не так msgid "could not remove cache file \"%s\": %m" msgstr "не удалось стереть файл кеша \"%s\": %m" -#: utils/cache/relmapper.c:590 +#: utils/cache/relmapper.c:591 #, c-format msgid "cannot PREPARE a transaction that modified relation mapping" msgstr "" "выполнить PREPARE для транзакции, изменившей сопоставление отношений, нельзя" -#: utils/cache/relmapper.c:836 +#: utils/cache/relmapper.c:839 #, c-format msgid "relation mapping file \"%s\" contains invalid data" msgstr "файл сопоставления отношений \"%s\" содержит неверные данные" -#: utils/cache/relmapper.c:846 +#: utils/cache/relmapper.c:849 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "ошибка контрольной суммы в файле сопоставления отношений \"%s\"" @@ -28943,7 +28965,7 @@ msgstr "для каталога данных \"%s\" установлены не msgid "Permissions should be u=rwx (0700) or u=rwx,g=rx (0750)." msgstr "Маска прав должна быть u=rwx (0700) или u=rwx,g=rx (0750)." -#: utils/init/miscinit.c:665 utils/misc/guc.c:7830 +#: utils/init/miscinit.c:665 utils/misc/guc.c:7837 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "" @@ -28965,42 +28987,42 @@ msgstr "для роли \"%s\" вход запрещён" msgid "too many connections for role \"%s\"" msgstr "слишком много подключений для роли \"%s\"" -#: utils/init/miscinit.c:841 +#: utils/init/miscinit.c:849 #, c-format msgid "permission denied to set session authorization" msgstr "нет прав для смены объекта авторизации в сеансе" -#: utils/init/miscinit.c:924 +#: utils/init/miscinit.c:932 #, c-format msgid "invalid role OID: %u" msgstr "неверный OID роли: %u" -#: utils/init/miscinit.c:978 +#: utils/init/miscinit.c:986 #, c-format msgid "database system is shut down" msgstr "система БД выключена" -#: utils/init/miscinit.c:1065 +#: utils/init/miscinit.c:1073 #, c-format msgid "could not create lock file \"%s\": %m" msgstr "не удалось создать файл блокировки \"%s\": %m" -#: utils/init/miscinit.c:1079 +#: utils/init/miscinit.c:1087 #, c-format msgid "could not open lock file \"%s\": %m" msgstr "не удалось открыть файл блокировки \"%s\": %m" -#: utils/init/miscinit.c:1086 +#: utils/init/miscinit.c:1094 #, c-format msgid "could not read lock file \"%s\": %m" msgstr "не удалось прочитать файл блокировки \"%s\": %m" -#: utils/init/miscinit.c:1095 +#: utils/init/miscinit.c:1103 #, c-format msgid "lock file \"%s\" is empty" msgstr "файл блокировки \"%s\" пуст" -#: utils/init/miscinit.c:1096 +#: utils/init/miscinit.c:1104 #, c-format msgid "" "Either another server is starting, or the lock file is the remnant of a " @@ -29009,38 +29031,38 @@ msgstr "" "Либо сейчас запускается другой сервер, либо этот файл остался в результате " "сбоя при предыдущем запуске." -#: utils/init/miscinit.c:1140 +#: utils/init/miscinit.c:1148 #, c-format msgid "lock file \"%s\" already exists" msgstr "файл блокировки \"%s\" уже существует" -#: utils/init/miscinit.c:1144 +#: utils/init/miscinit.c:1152 #, c-format msgid "Is another postgres (PID %d) running in data directory \"%s\"?" msgstr "Другой экземпляр postgres (PID %d) работает с каталогом данных \"%s\"?" -#: utils/init/miscinit.c:1146 +#: utils/init/miscinit.c:1154 #, c-format msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" msgstr "" "Другой экземпляр postmaster (PID %d) работает с каталогом данных \"%s\"?" -#: utils/init/miscinit.c:1149 +#: utils/init/miscinit.c:1157 #, c-format msgid "Is another postgres (PID %d) using socket file \"%s\"?" msgstr "Другой экземпляр postgres (PID %d) использует файл сокета \"%s\"?" -#: utils/init/miscinit.c:1151 +#: utils/init/miscinit.c:1159 #, c-format msgid "Is another postmaster (PID %d) using socket file \"%s\"?" msgstr "Другой экземпляр postmaster (PID %d) использует файл сокета \"%s\"?" -#: utils/init/miscinit.c:1202 +#: utils/init/miscinit.c:1210 #, c-format msgid "could not remove old lock file \"%s\": %m" msgstr "не удалось стереть старый файл блокировки \"%s\": %m" -#: utils/init/miscinit.c:1204 +#: utils/init/miscinit.c:1212 #, c-format msgid "" "The file seems accidentally left over, but it could not be removed. Please " @@ -29049,48 +29071,48 @@ msgstr "" "Кажется, файл сохранился по ошибке, но удалить его не получилось. " "Пожалуйста, удалите файл вручную и повторите попытку." -#: utils/init/miscinit.c:1241 utils/init/miscinit.c:1255 -#: utils/init/miscinit.c:1266 +#: utils/init/miscinit.c:1249 utils/init/miscinit.c:1263 +#: utils/init/miscinit.c:1274 #, c-format msgid "could not write lock file \"%s\": %m" msgstr "не удалось записать файл блокировки \"%s\": %m" -#: utils/init/miscinit.c:1377 utils/init/miscinit.c:1519 utils/misc/guc.c:10836 +#: utils/init/miscinit.c:1385 utils/init/miscinit.c:1527 utils/misc/guc.c:10843 #, c-format msgid "could not read from file \"%s\": %m" msgstr "не удалось прочитать файл \"%s\": %m" -#: utils/init/miscinit.c:1507 +#: utils/init/miscinit.c:1515 #, c-format msgid "could not open file \"%s\": %m; continuing anyway" msgstr "не удалось открыть файл \"%s\": %m; ошибка игнорируется" -#: utils/init/miscinit.c:1532 +#: utils/init/miscinit.c:1540 #, c-format msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" msgstr "файл блокировки \"%s\" содержит неверный PID: %ld вместо %ld" -#: utils/init/miscinit.c:1571 utils/init/miscinit.c:1587 +#: utils/init/miscinit.c:1579 utils/init/miscinit.c:1595 #, c-format msgid "\"%s\" is not a valid data directory" msgstr "\"%s\" не является каталогом данных" -#: utils/init/miscinit.c:1573 +#: utils/init/miscinit.c:1581 #, c-format msgid "File \"%s\" is missing." msgstr "Файл \"%s\" отсутствует." -#: utils/init/miscinit.c:1589 +#: utils/init/miscinit.c:1597 #, c-format msgid "File \"%s\" does not contain valid data." msgstr "Файл \"%s\" содержит неприемлемые данные." -#: utils/init/miscinit.c:1591 +#: utils/init/miscinit.c:1599 #, c-format msgid "You might need to initdb." msgstr "Возможно, вам нужно выполнить initdb." -#: utils/init/miscinit.c:1599 +#: utils/init/miscinit.c:1607 #, c-format msgid "" "The data directory was initialized by PostgreSQL version %s, which is not " @@ -29677,13 +29699,13 @@ msgstr "Принудительная запись изменений на дис #: utils/misc/guc.c:1287 msgid "" "The server will use the fsync() system call in several places to make sure " -"that updates are physically written to disk. This insures that a database " +"that updates are physically written to disk. This ensures that a database " "cluster will recover to a consistent state after an operating system or " "hardware crash." msgstr "" -"Сервер будет вызывать системную функцию fsync() в разных местах для гарантии " -"физической записи данных на диск. Это позволит привести кластер БД в " -"целостное состояние после отказа ОС или оборудования." +"Сервер будет вызывать в определённые моменты системную функцию fsync(), " +"обеспечивающую физическую запись данных на диск. Тем самым гарантируется, " +"что кластер БД придёт в целостное состояние после отказа ОС или оборудования." #: utils/misc/guc.c:1298 msgid "Continues processing after a checksum failure." @@ -31976,47 +31998,47 @@ msgstr "%d%s%s вне диапазона, допустимого для пара msgid "%g%s%s is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g%s%s вне диапазона, допустимого для параметра \"%s\" (%g .. %g)" -#: utils/misc/guc.c:7648 utils/misc/guc.c:9096 +#: utils/misc/guc.c:7649 utils/misc/guc.c:9103 #, c-format msgid "cannot set parameters during a parallel operation" msgstr "устанавливать параметры во время параллельных операций нельзя" -#: utils/misc/guc.c:7665 utils/misc/guc.c:8920 +#: utils/misc/guc.c:7668 utils/misc/guc.c:8927 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "параметр \"%s\" нельзя изменить" -#: utils/misc/guc.c:7688 utils/misc/guc.c:7908 utils/misc/guc.c:8006 -#: utils/misc/guc.c:8104 utils/misc/guc.c:8228 utils/misc/guc.c:8331 +#: utils/misc/guc.c:7691 utils/misc/guc.c:7915 utils/misc/guc.c:8013 +#: utils/misc/guc.c:8111 utils/misc/guc.c:8235 utils/misc/guc.c:8338 #: guc-file.l:353 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "параметр \"%s\" изменяется только при перезапуске сервера" -#: utils/misc/guc.c:7698 +#: utils/misc/guc.c:7701 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "параметр \"%s\" нельзя изменить сейчас" -#: utils/misc/guc.c:7725 utils/misc/guc.c:7783 utils/misc/guc.c:8896 -#: utils/misc/guc.c:11804 +#: utils/misc/guc.c:7728 utils/misc/guc.c:7790 utils/misc/guc.c:8903 +#: utils/misc/guc.c:11811 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "нет прав для изменения параметра \"%s\"" -#: utils/misc/guc.c:7763 +#: utils/misc/guc.c:7770 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "параметр \"%s\" нельзя задать после установления соединения" -#: utils/misc/guc.c:7822 +#: utils/misc/guc.c:7829 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "" "параметр \"%s\" нельзя задать в функции с контекстом безопасности " "определившего" -#: utils/misc/guc.c:8475 utils/misc/guc.c:8522 utils/misc/guc.c:10009 +#: utils/misc/guc.c:8482 utils/misc/guc.c:8529 utils/misc/guc.c:10016 #, c-format msgid "" "must be superuser or have privileges of pg_read_all_settings to examine " @@ -32025,72 +32047,72 @@ msgstr "" "чтобы прочитать \"%s\", нужно быть суперпользователем или иметь права роли " "pg_read_all_settings" -#: utils/misc/guc.c:8606 +#: utils/misc/guc.c:8613 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s принимает только один аргумент" -#: utils/misc/guc.c:8886 +#: utils/misc/guc.c:8893 #, c-format msgid "permission denied to perform ALTER SYSTEM RESET ALL" msgstr "нет прав для выполнения ALTER SYSTEM RESET ALL" -#: utils/misc/guc.c:8953 +#: utils/misc/guc.c:8960 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" msgstr "значение параметра для ALTER SYSTEM не должно быть многострочным" -#: utils/misc/guc.c:8998 +#: utils/misc/guc.c:9005 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "не удалось разобрать содержимое файла \"%s\"" -#: utils/misc/guc.c:9172 +#: utils/misc/guc.c:9179 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOT не реализовано" -#: utils/misc/guc.c:9259 +#: utils/misc/guc.c:9266 #, c-format msgid "SET requires parameter name" msgstr "SET требует имя параметра" -#: utils/misc/guc.c:9392 +#: utils/misc/guc.c:9399 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "попытка переопределить параметр \"%s\"" -#: utils/misc/guc.c:9719 +#: utils/misc/guc.c:9726 #, c-format msgid "invalid configuration parameter name \"%s\", removing it" msgstr "неверное имя параметра конфигурации: \"%s\", он удаляется" -#: utils/misc/guc.c:9721 +#: utils/misc/guc.c:9728 #, c-format msgid "\"%s\" is now a reserved prefix." msgstr "Теперь \"%s\" — зарезервированный префикс." -#: utils/misc/guc.c:11244 +#: utils/misc/guc.c:11251 #, c-format msgid "while setting parameter \"%s\" to \"%s\"" msgstr "при назначении параметру \"%s\" значения \"%s\"" -#: utils/misc/guc.c:11413 +#: utils/misc/guc.c:11420 #, c-format msgid "parameter \"%s\" could not be set" msgstr "параметр \"%s\" нельзя установить" -#: utils/misc/guc.c:11505 +#: utils/misc/guc.c:11512 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "не удалось разобрать значение параметра \"%s\"" -#: utils/misc/guc.c:11936 +#: utils/misc/guc.c:11943 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "неверное значение параметра \"%s\": %g" -#: utils/misc/guc.c:12249 +#: utils/misc/guc.c:12256 #, c-format msgid "" "\"temp_buffers\" cannot be changed after any temporary tables have been " @@ -32099,23 +32121,23 @@ msgstr "" "параметр \"temp_buffers\" нельзя изменить после обращения к временным " "таблицам в текущем сеансе." -#: utils/misc/guc.c:12261 +#: utils/misc/guc.c:12268 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour не поддерживается в данной сборке" -#: utils/misc/guc.c:12274 +#: utils/misc/guc.c:12281 #, c-format msgid "SSL is not supported by this build" msgstr "SSL не поддерживается в данной сборке" -#: utils/misc/guc.c:12286 +#: utils/misc/guc.c:12293 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "" "Этот параметр нельзя включить, когда \"log_statement_stats\" равен true." -#: utils/misc/guc.c:12298 +#: utils/misc/guc.c:12305 #, c-format msgid "" "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", " @@ -32125,7 +32147,7 @@ msgstr "" "\"log_parser_stats\", \"log_planner_stats\" или \"log_executor_stats\" равны " "true." -#: utils/misc/guc.c:12528 +#: utils/misc/guc.c:12535 #, c-format msgid "" "effective_io_concurrency must be set to 0 on platforms that lack " @@ -32134,7 +32156,7 @@ msgstr "" "Значение effective_io_concurrency должно равняться 0 на платформах, где " "отсутствует lack posix_fadvise()." -#: utils/misc/guc.c:12541 +#: utils/misc/guc.c:12548 #, c-format msgid "" "maintenance_io_concurrency must be set to 0 on platforms that lack " @@ -32143,34 +32165,34 @@ msgstr "" "Значение maintenance_io_concurrency должно равняться 0 на платформах, где " "отсутствует lack posix_fadvise()." -#: utils/misc/guc.c:12555 +#: utils/misc/guc.c:12562 #, c-format msgid "huge_page_size must be 0 on this platform." msgstr "Значение huge_page_size должно равняться 0 на этой платформе." -#: utils/misc/guc.c:12567 +#: utils/misc/guc.c:12574 #, c-format msgid "client_connection_check_interval must be set to 0 on this platform." msgstr "" "Значение client_connection_check_interval должно равняться 0 на этой " "платформе." -#: utils/misc/guc.c:12679 +#: utils/misc/guc.c:12686 #, c-format msgid "invalid character" msgstr "неверный символ" -#: utils/misc/guc.c:12739 +#: utils/misc/guc.c:12746 #, c-format msgid "recovery_target_timeline is not a valid number." msgstr "recovery_target_timeline не является допустимым числом." -#: utils/misc/guc.c:12779 +#: utils/misc/guc.c:12786 #, c-format msgid "multiple recovery targets specified" msgstr "указано несколько целей восстановления" -#: utils/misc/guc.c:12780 +#: utils/misc/guc.c:12787 #, c-format msgid "" "At most one of recovery_target, recovery_target_lsn, recovery_target_name, " @@ -32180,7 +32202,7 @@ msgstr "" "recovery_target_lsn, recovery_target_name, recovery_target_time, " "recovery_target_xid." -#: utils/misc/guc.c:12788 +#: utils/misc/guc.c:12795 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Единственное допустимое значение: \"immediate\"." @@ -33810,10 +33832,6 @@ msgstr "Используйте для записи спецсимволов си #~ "нельзя выполнить PREPARE для транзакции, задействующей процессы " #~ "логической репликации" -#~ msgid "updated min recovery point to %X/%X on timeline %u" -#~ msgstr "" -#~ "минимальная точка восстановления изменена на %X/%X на линии времени %u" - #~ msgid "recycled write-ahead log file \"%s\"" #~ msgstr "файл журнала предзаписи \"%s\" используется повторно" diff --git a/src/backend/po/sv.po b/src/backend/po/sv.po index fa9ca38..920bf18 100644 --- a/src/backend/po/sv.po +++ b/src/backend/po/sv.po @@ -27153,7 +27153,7 @@ msgid "Forces synchronization of updates to disk." msgstr "Tvingar synkronisering av uppdateringar till disk." #: utils/misc/guc.c:1287 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "Servern kommer använda systemanropet fsync() på ett antal platser för att se till att uppdateringar fysiskt skrivs till disk. Detta för att säkerställa att databasklustret kan starta i ett konsistent tillstånd efter en operativsystemkrash eller hårdvarukrash." #: utils/misc/guc.c:1298 diff --git a/src/backend/po/uk.po b/src/backend/po/uk.po index 70281d3..f810e47 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: 2023-08-17 04:27+0000\n" -"PO-Revision-Date: 2023-08-17 15:51\n" +"POT-Creation-Date: 2023-12-17 22:26+0000\n" +"PO-Revision-Date: 2023-12-18 17:41\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -64,22 +64,22 @@ msgstr "алгоритм стиснення \"%s\" не приймає кіль msgid "not recorded" msgstr "не записано" -#: ../common/controldata_utils.c:69 ../common/controldata_utils.c:73 -#: commands/copyfrom.c:1515 commands/extension.c:3401 utils/adt/genfile.c:123 +#: ../common/controldata_utils.c:79 ../common/controldata_utils.c:83 +#: commands/copyfrom.c:1525 commands/extension.c:3401 utils/adt/genfile.c:123 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "не вдалося відкрити файл \"%s\" для читання: %m" -#: ../common/controldata_utils.c:84 ../common/controldata_utils.c:86 +#: ../common/controldata_utils.c:94 ../common/controldata_utils.c:96 #: access/transam/timeline.c:143 access/transam/timeline.c:362 -#: access/transam/twophase.c:1349 access/transam/xlog.c:3207 -#: access/transam/xlog.c:4022 access/transam/xlogrecovery.c:1197 +#: access/transam/twophase.c:1349 access/transam/xlog.c:3209 +#: access/transam/xlog.c:4024 access/transam/xlogrecovery.c:1197 #: access/transam/xlogrecovery.c:1289 access/transam/xlogrecovery.c:1326 #: access/transam/xlogrecovery.c:1386 backup/basebackup.c:1844 #: commands/extension.c:3411 libpq/hba.c:505 replication/logical/origin.c:729 #: replication/logical/origin.c:765 replication/logical/reorderbuffer.c:4958 -#: replication/logical/snapbuild.c:1858 replication/logical/snapbuild.c:1900 -#: replication/logical/snapbuild.c:1927 replication/slot.c:1807 +#: replication/logical/snapbuild.c:1870 replication/logical/snapbuild.c:1912 +#: replication/logical/snapbuild.c:1939 replication/slot.c:1807 #: replication/slot.c:1848 replication/walsender.c:658 #: storage/file/buffile.c:463 storage/file/copydir.c:195 #: utils/adt/genfile.c:197 utils/adt/misc.c:863 utils/cache/relmapper.c:813 @@ -87,30 +87,30 @@ msgstr "не вдалося відкрити файл \"%s\" для читанн msgid "could not read file \"%s\": %m" msgstr "не вдалося прочитати файл \"%s\": %m" -#: ../common/controldata_utils.c:92 ../common/controldata_utils.c:95 -#: access/transam/xlog.c:3212 access/transam/xlog.c:4027 +#: ../common/controldata_utils.c:102 ../common/controldata_utils.c:105 +#: access/transam/xlog.c:3214 access/transam/xlog.c:4029 #: backup/basebackup.c:1848 replication/logical/origin.c:734 -#: replication/logical/origin.c:773 replication/logical/snapbuild.c:1863 -#: replication/logical/snapbuild.c:1905 replication/logical/snapbuild.c:1932 +#: replication/logical/origin.c:773 replication/logical/snapbuild.c:1875 +#: replication/logical/snapbuild.c:1917 replication/logical/snapbuild.c:1944 #: replication/slot.c:1811 replication/slot.c:1852 replication/walsender.c:663 #: utils/cache/relmapper.c:817 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "не вдалося прочитати файл \"%s\": прочитано %d з %zu" -#: ../common/controldata_utils.c:104 ../common/controldata_utils.c:108 -#: ../common/controldata_utils.c:241 ../common/controldata_utils.c:244 +#: ../common/controldata_utils.c:114 ../common/controldata_utils.c:118 +#: ../common/controldata_utils.c:271 ../common/controldata_utils.c:274 #: access/heap/rewriteheap.c:1178 access/heap/rewriteheap.c:1281 #: access/transam/timeline.c:392 access/transam/timeline.c:438 #: access/transam/timeline.c:516 access/transam/twophase.c:1361 -#: access/transam/twophase.c:1773 access/transam/xlog.c:3054 -#: access/transam/xlog.c:3247 access/transam/xlog.c:3252 -#: access/transam/xlog.c:3390 access/transam/xlog.c:3992 -#: access/transam/xlog.c:4738 commands/copyfrom.c:1575 commands/copyto.c:327 +#: access/transam/twophase.c:1773 access/transam/xlog.c:3056 +#: access/transam/xlog.c:3249 access/transam/xlog.c:3254 +#: access/transam/xlog.c:3392 access/transam/xlog.c:3994 +#: access/transam/xlog.c:4740 commands/copyfrom.c:1585 commands/copyto.c:327 #: libpq/be-fsstubs.c:455 libpq/be-fsstubs.c:525 #: replication/logical/origin.c:667 replication/logical/origin.c:806 #: replication/logical/reorderbuffer.c:5016 -#: replication/logical/snapbuild.c:1767 replication/logical/snapbuild.c:1940 +#: replication/logical/snapbuild.c:1779 replication/logical/snapbuild.c:1952 #: replication/slot.c:1698 replication/slot.c:1859 replication/walsender.c:673 #: storage/file/copydir.c:218 storage/file/copydir.c:223 storage/file/fd.c:745 #: storage/file/fd.c:3643 storage/file/fd.c:3749 utils/cache/relmapper.c:828 @@ -119,11 +119,11 @@ msgstr "не вдалося прочитати файл \"%s\": прочитан msgid "could not close file \"%s\": %m" msgstr "неможливо закрити файл \"%s\": %m" -#: ../common/controldata_utils.c:124 +#: ../common/controldata_utils.c:154 msgid "byte ordering mismatch" msgstr "неправильний порядок байтів" -#: ../common/controldata_utils.c:126 +#: ../common/controldata_utils.c:156 #, c-format msgid "possible byte ordering mismatch\n" "The byte ordering used to store the pg_control file might not match the one\n" @@ -132,51 +132,51 @@ msgid "possible byte ordering mismatch\n" msgstr "можлива помилка у послідовності байтів.\n" "Порядок байтів, що використовують для зберігання файлу pg_control, може не відповідати тому, який використовується цією програмою. У такому випадку результати нижче будуть неправильним, і інсталяція PostgreSQL буде несумісною з цим каталогом даних." -#: ../common/controldata_utils.c:189 ../common/controldata_utils.c:194 +#: ../common/controldata_utils.c:219 ../common/controldata_utils.c:224 #: ../common/file_utils.c:232 ../common/file_utils.c:291 #: ../common/file_utils.c:365 access/heap/rewriteheap.c:1264 #: access/transam/timeline.c:111 access/transam/timeline.c:251 #: access/transam/timeline.c:348 access/transam/twophase.c:1305 -#: access/transam/xlog.c:2941 access/transam/xlog.c:3123 -#: access/transam/xlog.c:3162 access/transam/xlog.c:3357 -#: access/transam/xlog.c:4012 access/transam/xlogrecovery.c:4209 +#: access/transam/xlog.c:2943 access/transam/xlog.c:3125 +#: access/transam/xlog.c:3164 access/transam/xlog.c:3359 +#: access/transam/xlog.c:4014 access/transam/xlogrecovery.c:4209 #: access/transam/xlogrecovery.c:4312 access/transam/xlogutils.c:852 #: backup/basebackup.c:522 backup/basebackup.c:1520 postmaster/syslogger.c:1560 #: replication/logical/origin.c:719 replication/logical/reorderbuffer.c:3611 #: replication/logical/reorderbuffer.c:4162 #: replication/logical/reorderbuffer.c:4938 -#: replication/logical/snapbuild.c:1722 replication/logical/snapbuild.c:1829 +#: replication/logical/snapbuild.c:1734 replication/logical/snapbuild.c:1841 #: replication/slot.c:1779 replication/walsender.c:631 #: replication/walsender.c:2722 storage/file/copydir.c:161 #: storage/file/fd.c:720 storage/file/fd.c:3395 storage/file/fd.c:3630 #: storage/file/fd.c:3720 storage/smgr/md.c:541 utils/cache/relmapper.c:792 #: utils/cache/relmapper.c:900 utils/error/elog.c:1933 -#: utils/init/miscinit.c:1366 utils/init/miscinit.c:1500 -#: utils/init/miscinit.c:1577 utils/misc/guc.c:8991 utils/misc/guc.c:9040 +#: utils/init/miscinit.c:1374 utils/init/miscinit.c:1508 +#: utils/init/miscinit.c:1585 utils/misc/guc.c:8991 utils/misc/guc.c:9040 #, c-format msgid "could not open file \"%s\": %m" msgstr "не можливо відкрити файл \"%s\": %m" -#: ../common/controldata_utils.c:210 ../common/controldata_utils.c:213 +#: ../common/controldata_utils.c:240 ../common/controldata_utils.c:243 #: access/transam/twophase.c:1746 access/transam/twophase.c:1755 -#: access/transam/xlog.c:8674 access/transam/xlogfuncs.c:600 +#: access/transam/xlog.c:8676 access/transam/xlogfuncs.c:600 #: backup/basebackup_server.c:173 backup/basebackup_server.c:266 -#: postmaster/postmaster.c:5630 postmaster/syslogger.c:1571 +#: postmaster/postmaster.c:5633 postmaster/syslogger.c:1571 #: postmaster/syslogger.c:1584 postmaster/syslogger.c:1597 #: utils/cache/relmapper.c:934 #, c-format msgid "could not write file \"%s\": %m" msgstr "не вдалося записати файл \"%s\": %m" -#: ../common/controldata_utils.c:227 ../common/controldata_utils.c:232 +#: ../common/controldata_utils.c:257 ../common/controldata_utils.c:262 #: ../common/file_utils.c:303 ../common/file_utils.c:373 #: access/heap/rewriteheap.c:960 access/heap/rewriteheap.c:1172 #: access/heap/rewriteheap.c:1275 access/transam/timeline.c:432 #: access/transam/timeline.c:510 access/transam/twophase.c:1767 -#: access/transam/xlog.c:3047 access/transam/xlog.c:3241 -#: access/transam/xlog.c:3985 access/transam/xlog.c:7977 -#: access/transam/xlog.c:8020 backup/basebackup_server.c:207 -#: replication/logical/snapbuild.c:1760 replication/slot.c:1684 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3243 +#: access/transam/xlog.c:3987 access/transam/xlog.c:7979 +#: access/transam/xlog.c:8022 backup/basebackup_server.c:207 +#: replication/logical/snapbuild.c:1772 replication/slot.c:1684 #: replication/slot.c:1789 storage/file/fd.c:737 storage/file/fd.c:3741 #: storage/smgr/md.c:992 storage/smgr/md.c:1033 storage/sync/sync.c:453 #: utils/cache/relmapper.c:949 utils/misc/guc.c:8760 @@ -194,14 +194,14 @@ msgstr "не вдалося fsync файл \"%s\": %m" #: access/transam/xlogrecovery.c:587 lib/dshash.c:253 libpq/auth.c:1338 #: libpq/auth.c:1406 libpq/auth.c:1964 libpq/be-secure-gssapi.c:520 #: postmaster/bgworker.c:349 postmaster/bgworker.c:931 -#: postmaster/postmaster.c:2591 postmaster/postmaster.c:4177 -#: postmaster/postmaster.c:5555 postmaster/postmaster.c:5926 +#: postmaster/postmaster.c:2594 postmaster/postmaster.c:4180 +#: postmaster/postmaster.c:5558 postmaster/postmaster.c:5929 #: replication/libpqwalreceiver/libpqwalreceiver.c:300 #: replication/logical/logical.c:205 replication/walsender.c:701 #: storage/buffer/localbuf.c:442 storage/file/fd.c:892 storage/file/fd.c:1434 #: storage/file/fd.c:1595 storage/file/fd.c:2409 storage/ipc/procarray.c:1451 -#: storage/ipc/procarray.c:2281 storage/ipc/procarray.c:2288 -#: storage/ipc/procarray.c:2793 storage/ipc/procarray.c:3424 +#: storage/ipc/procarray.c:2280 storage/ipc/procarray.c:2287 +#: storage/ipc/procarray.c:2792 storage/ipc/procarray.c:3423 #: utils/adt/formatting.c:1732 utils/adt/formatting.c:1854 #: utils/adt/formatting.c:1977 utils/adt/pg_locale.c:453 #: utils/adt/pg_locale.c:617 utils/adt/regexp.c:224 utils/fmgr/dfmgr.c:229 @@ -260,7 +260,7 @@ msgstr "неможливо знайти \"%s\" для виконання" msgid "could not change directory to \"%s\": %m" msgstr "не вдалося змінити каталог на \"%s\": %m" -#: ../common/exec.c:299 access/transam/xlog.c:8323 backup/basebackup.c:1340 +#: ../common/exec.c:299 access/transam/xlog.c:8325 backup/basebackup.c:1340 #: utils/adt/misc.c:342 #, c-format msgid "could not read symbolic link \"%s\": %m" @@ -289,11 +289,11 @@ msgstr "неможливо дублювати нульовий покажчик #: ../common/file_utils.c:87 ../common/file_utils.c:451 #: ../common/file_utils.c:455 access/transam/twophase.c:1317 -#: access/transam/xlogarchive.c:111 access/transam/xlogarchive.c:230 +#: access/transam/xlogarchive.c:111 access/transam/xlogarchive.c:237 #: backup/basebackup.c:338 backup/basebackup.c:528 backup/basebackup.c:599 -#: commands/copyfrom.c:1525 commands/copyto.c:725 commands/extension.c:3390 +#: commands/copyfrom.c:1535 commands/copyto.c:725 commands/extension.c:3390 #: commands/tablespace.c:826 commands/tablespace.c:917 postmaster/pgarch.c:597 -#: replication/logical/snapbuild.c:1639 storage/file/copydir.c:68 +#: replication/logical/snapbuild.c:1651 storage/file/copydir.c:68 #: storage/file/copydir.c:107 storage/file/fd.c:1951 storage/file/fd.c:2037 #: storage/file/fd.c:3243 storage/file/fd.c:3450 utils/adt/dbsize.c:92 #: utils/adt/dbsize.c:244 utils/adt/dbsize.c:324 utils/adt/genfile.c:413 @@ -303,7 +303,7 @@ msgid "could not stat file \"%s\": %m" msgstr "не вдалося отримати інформацію від файлу \"%s\": %m" #: ../common/file_utils.c:166 ../common/pgfnames.c:48 commands/tablespace.c:749 -#: commands/tablespace.c:759 postmaster/postmaster.c:1576 +#: commands/tablespace.c:759 postmaster/postmaster.c:1579 #: storage/file/fd.c:2812 storage/file/reinit.c:126 utils/adt/misc.c:235 #: utils/misc/tzparser.c:338 #, c-format @@ -315,8 +315,8 @@ msgstr "не вдалося відкрити каталог \"%s\": %m" msgid "could not read directory \"%s\": %m" msgstr "не вдалося прочитати каталог \"%s\": %m" -#: ../common/file_utils.c:383 access/transam/xlogarchive.c:419 -#: postmaster/syslogger.c:1608 replication/logical/snapbuild.c:1779 +#: ../common/file_utils.c:383 access/transam/xlogarchive.c:426 +#: postmaster/syslogger.c:1608 replication/logical/snapbuild.c:1791 #: replication/slot.c:721 replication/slot.c:1570 replication/slot.c:1712 #: storage/file/fd.c:755 storage/file/fd.c:853 utils/time/snapmgr.c:1282 #, c-format @@ -656,7 +656,7 @@ msgstr "не вдається перевірити членство токену msgid "request for BRIN range summarization for index \"%s\" page %u was not recorded" msgstr "запит на підсумок діапазону BRIN для індексу «%s» сторінки %u не вдалося записати" -#: access/brin/brin.c:1036 access/brin/brin.c:1137 access/gin/ginfast.c:1043 +#: access/brin/brin.c:1036 access/brin/brin.c:1143 access/gin/ginfast.c:1042 #: access/transam/xlogfuncs.c:165 access/transam/xlogfuncs.c:192 #: access/transam/xlogfuncs.c:231 access/transam/xlogfuncs.c:252 #: access/transam/xlogfuncs.c:273 access/transam/xlogfuncs.c:343 @@ -665,28 +665,34 @@ msgstr "запит на підсумок діапазону BRIN для інде msgid "recovery is in progress" msgstr "відновлення у процесі" -#: access/brin/brin.c:1037 access/brin/brin.c:1138 +#: access/brin/brin.c:1037 access/brin/brin.c:1144 #, c-format msgid "BRIN control functions cannot be executed during recovery." msgstr "Контрольна функція BRIN не може бути виконана під час відновлення." -#: access/brin/brin.c:1042 access/brin/brin.c:1143 +#: access/brin/brin.c:1042 access/brin/brin.c:1149 #, c-format msgid "block number out of range: %lld" msgstr "номер блоку поза діапазоном: %lld" -#: access/brin/brin.c:1086 access/brin/brin.c:1169 +#: access/brin/brin.c:1086 access/brin/brin.c:1175 #, c-format msgid "\"%s\" is not a BRIN index" msgstr "\"%s\" не є індексом BRIN" -#: access/brin/brin.c:1102 access/brin/brin.c:1185 +#: access/brin/brin.c:1102 access/brin/brin.c:1191 #, c-format msgid "could not open parent table of index \"%s\"" msgstr "не вдалося відкрити батьківську таблицю індексу \"%s\"" -#: access/brin/brin_bloom.c:750 access/brin/brin_bloom.c:792 -#: access/brin/brin_minmax_multi.c:3012 access/brin/brin_minmax_multi.c:3155 +#: access/brin/brin.c:1111 access/brin/brin.c:1207 access/gin/ginfast.c:1087 +#: parser/parse_utilcmd.c:2287 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "індекс \"%s\" не є припустимим" + +#: access/brin/brin_bloom.c:749 access/brin/brin_bloom.c:791 +#: access/brin/brin_minmax_multi.c:2986 access/brin/brin_minmax_multi.c:3129 #: statistics/dependencies.c:663 statistics/dependencies.c:716 #: statistics/mcv.c:1484 statistics/mcv.c:1515 statistics/mvdistinct.c:344 #: statistics/mvdistinct.c:397 utils/adt/pseudotypes.c:43 @@ -695,25 +701,9 @@ msgstr "не вдалося відкрити батьківську таблиц msgid "cannot accept a value of type %s" msgstr "не можна прийняти значення типу %s" -#: access/brin/brin_minmax_multi.c:2171 access/brin/brin_minmax_multi.c:2178 -#: access/brin/brin_minmax_multi.c:2185 utils/adt/timestamp.c:938 -#: utils/adt/timestamp.c:1509 utils/adt/timestamp.c:2761 -#: utils/adt/timestamp.c:2778 utils/adt/timestamp.c:2831 -#: utils/adt/timestamp.c:2870 utils/adt/timestamp.c:3115 -#: utils/adt/timestamp.c:3120 utils/adt/timestamp.c:3125 -#: utils/adt/timestamp.c:3175 utils/adt/timestamp.c:3182 -#: utils/adt/timestamp.c:3189 utils/adt/timestamp.c:3209 -#: utils/adt/timestamp.c:3216 utils/adt/timestamp.c:3223 -#: utils/adt/timestamp.c:3253 utils/adt/timestamp.c:3261 -#: utils/adt/timestamp.c:3305 utils/adt/timestamp.c:3731 -#: utils/adt/timestamp.c:3855 utils/adt/timestamp.c:4405 -#, c-format -msgid "interval out of range" -msgstr "інтервал поза діапазоном" - #: 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:1442 access/spgist/spgdoinsert.c:2001 +#: access/gist/gist.c:1462 access/spgist/spgdoinsert.c:2001 #: access/spgist/spgdoinsert.c:2278 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" @@ -812,7 +802,7 @@ msgstr "Атрибут \"%s\" типу %s не збігається з відп msgid "Attribute \"%s\" of type %s does not exist in type %s." msgstr "Атрибут \"%s\" типу %s не існує в типі %s." -#: access/common/heaptuple.c:1036 access/common/heaptuple.c:1371 +#: access/common/heaptuple.c:1133 access/common/heaptuple.c:1468 #, c-format msgid "number of columns (%d) exceeds limit (%d)" msgstr "кількість стовпців (%d) перевищує обмеження (%d)" @@ -856,7 +846,7 @@ msgstr "RESET не має містити значення для парамет msgid "unrecognized parameter namespace \"%s\"" msgstr "нерозпізнаний параметр простору імен \"%s\"" -#: access/common/reloptions.c:1303 utils/misc/guc.c:12987 +#: access/common/reloptions.c:1303 utils/misc/guc.c:12995 #, c-format msgid "tables declared WITH OIDS are not supported" msgstr "таблиці, позначені WITH OIDS, не підтримуються" @@ -932,17 +922,17 @@ msgstr "список вказівників задовгий" msgid "Reduce maintenance_work_mem." msgstr "Зменшіть maintenance_work_mem." -#: access/gin/ginfast.c:1044 +#: access/gin/ginfast.c:1043 #, c-format msgid "GIN pending list cannot be cleaned up during recovery." msgstr "Черга записів GIN не може бути очищена під час відновлення." -#: access/gin/ginfast.c:1051 +#: access/gin/ginfast.c:1050 #, c-format msgid "\"%s\" is not a GIN index" msgstr "\"%s\" не є індексом GIN" -#: access/gin/ginfast.c:1062 +#: access/gin/ginfast.c:1061 #, c-format msgid "cannot access temporary indexes of other sessions" msgstr "доступ до тимчасових індексів з інших сесій заблокований" @@ -963,7 +953,7 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Щоб виправити це, зробіть REINDEX INDEX \"%s\"." #: access/gin/ginutil.c:145 executor/execExpr.c:2168 -#: utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6486 +#: utils/adt/arrayfuncs.c:3866 utils/adt/arrayfuncs.c:6535 #: utils/adt/rowtypes.c:957 #, c-format msgid "could not identify a comparison function for type %s" @@ -1005,7 +995,7 @@ msgstr "Це викликано неповним поділом сторінки msgid "Please REINDEX it." msgstr "Будь ласка, виконайте REINDEX." -#: access/gist/gist.c:1176 +#: access/gist/gist.c:1195 #, c-format msgid "fixing incomplete split in index \"%s\", block %u" msgstr "виправлення неповного розділу в індексі \"%s\", блок %u" @@ -1050,7 +1040,7 @@ msgstr "не вдалося визначити, який параметр сор #: access/hash/hashfunc.c:279 access/hash/hashfunc.c:336 catalog/heap.c:668 #: catalog/heap.c:674 commands/createas.c:206 commands/createas.c:515 -#: commands/indexcmds.c:1979 commands/tablecmds.c:17495 commands/view.c:86 +#: commands/indexcmds.c:1955 commands/tablecmds.c:17505 commands/view.c:86 #: regex/regc_pg_locale.c:243 utils/adt/formatting.c:1690 #: utils/adt/formatting.c:1812 utils/adt/formatting.c:1935 utils/adt/like.c:190 #: utils/adt/like_support.c:1025 utils/adt/varchar.c:733 @@ -1120,18 +1110,18 @@ msgstr "не вдалося видалити кортежі під час пар msgid "attempted to delete invisible tuple" msgstr "спроба видалити невидимий кортеж" -#: access/heap/heapam.c:3183 access/heap/heapam.c:6025 +#: access/heap/heapam.c:3188 access/heap/heapam.c:6032 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "неможливо оновити кортежі під час паралельної операції" -#: access/heap/heapam.c:3307 +#: access/heap/heapam.c:3312 #, c-format msgid "attempted to update invisible tuple" msgstr "спроба оновити невидимий кортеж" -#: access/heap/heapam.c:4669 access/heap/heapam.c:4707 -#: access/heap/heapam.c:4972 access/heap/heapam_handler.c:456 +#: access/heap/heapam.c:4676 access/heap/heapam.c:4714 +#: access/heap/heapam.c:4979 access/heap/heapam_handler.c:456 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "не вдалося отримати блокування у рядку стосовно \"%s\"" @@ -1153,11 +1143,11 @@ msgstr "не вдалося записати до файлу \"%s\", запис #: access/heap/rewriteheap.c:1013 access/heap/rewriteheap.c:1131 #: access/transam/timeline.c:329 access/transam/timeline.c:485 -#: access/transam/xlog.c:2963 access/transam/xlog.c:3176 -#: access/transam/xlog.c:3964 access/transam/xlog.c:8657 +#: access/transam/xlog.c:2965 access/transam/xlog.c:3178 +#: access/transam/xlog.c:3966 access/transam/xlog.c:8659 #: access/transam/xlogfuncs.c:594 backup/basebackup_server.c:149 #: backup/basebackup_server.c:242 commands/dbcommands.c:517 -#: postmaster/postmaster.c:4604 postmaster/postmaster.c:5617 +#: postmaster/postmaster.c:4607 postmaster/postmaster.c:5620 #: replication/logical/origin.c:587 replication/slot.c:1631 #: storage/file/copydir.c:167 storage/smgr/md.c:222 utils/time/snapmgr.c:1261 #, c-format @@ -1171,25 +1161,25 @@ msgstr "не вдалося скоротити файл \"%s\" до потріб #: access/heap/rewriteheap.c:1159 access/transam/timeline.c:384 #: access/transam/timeline.c:424 access/transam/timeline.c:502 -#: access/transam/xlog.c:3035 access/transam/xlog.c:3232 -#: access/transam/xlog.c:3976 commands/dbcommands.c:529 -#: postmaster/postmaster.c:4614 postmaster/postmaster.c:4624 +#: access/transam/xlog.c:3037 access/transam/xlog.c:3234 +#: access/transam/xlog.c:3978 commands/dbcommands.c:529 +#: postmaster/postmaster.c:4617 postmaster/postmaster.c:4627 #: replication/logical/origin.c:599 replication/logical/origin.c:641 -#: replication/logical/origin.c:660 replication/logical/snapbuild.c:1736 +#: replication/logical/origin.c:660 replication/logical/snapbuild.c:1748 #: replication/slot.c:1666 storage/file/buffile.c:537 -#: storage/file/copydir.c:207 utils/init/miscinit.c:1441 -#: utils/init/miscinit.c:1452 utils/init/miscinit.c:1460 utils/misc/guc.c:8721 -#: utils/misc/guc.c:8752 utils/misc/guc.c:10742 utils/misc/guc.c:10756 +#: storage/file/copydir.c:207 utils/init/miscinit.c:1449 +#: utils/init/miscinit.c:1460 utils/init/miscinit.c:1468 utils/misc/guc.c:8721 +#: utils/misc/guc.c:8752 utils/misc/guc.c:10750 utils/misc/guc.c:10764 #: 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:1706 -#: access/transam/xlogarchive.c:119 access/transam/xlogarchive.c:429 +#: access/transam/xlogarchive.c:119 access/transam/xlogarchive.c:436 #: postmaster/postmaster.c:1157 postmaster/syslogger.c:1537 #: replication/logical/origin.c:575 replication/logical/reorderbuffer.c:4431 -#: replication/logical/snapbuild.c:1681 replication/logical/snapbuild.c:2097 +#: replication/logical/snapbuild.c:1693 replication/logical/snapbuild.c:2109 #: replication/slot.c:1763 storage/file/fd.c:795 storage/file/fd.c:3263 #: storage/file/fd.c:3325 storage/file/reinit.c:262 storage/ipc/dsm.c:317 #: storage/smgr/md.c:373 storage/smgr/md.c:432 storage/sync/sync.c:250 @@ -1422,8 +1412,8 @@ msgid "transaction aborted during system catalog scan" msgstr "транзакцію перервано під час сканування системного каталогу" #: access/index/indexam.c:142 catalog/objectaddress.c:1376 -#: commands/indexcmds.c:2807 commands/tablecmds.c:271 commands/tablecmds.c:295 -#: commands/tablecmds.c:17183 commands/tablecmds.c:18966 +#: commands/indexcmds.c:2783 commands/tablecmds.c:271 commands/tablecmds.c:295 +#: commands/tablecmds.c:17191 commands/tablecmds.c:18976 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" не є індексом" @@ -1469,17 +1459,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:2669 +#: access/nbtree/nbtutils.c:2684 #, 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:2675 +#: access/nbtree/nbtutils.c:2690 #, c-format msgid "Index row references tuple (%u,%u) in relation \"%s\"." msgstr "Рядок індексу посилається на кортеж (%u,,%u) у відношенні \"%s\"." -#: access/nbtree/nbtutils.c:2679 +#: access/nbtree/nbtutils.c:2694 #, 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." @@ -1519,7 +1509,7 @@ 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:1842 commands/tablecmds.c:13880 -#: commands/tablecmds.c:17192 +#: commands/tablecmds.c:17200 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\" це складений тип" @@ -1534,7 +1524,7 @@ msgstr "невірний tid (%u, %u) для відношення \"%s\"" msgid "%s cannot be empty." msgstr "%s не може бути пустим." -#: access/table/tableamapi.c:122 utils/misc/guc.c:12911 +#: access/table/tableamapi.c:122 utils/misc/guc.c:12919 #, c-format msgid "%s is too long (maximum %d characters)." msgstr "%s занадто довгий (максимум %d символів)." @@ -2108,249 +2098,249 @@ msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "не можна виконати PREPARE для транзакції, яка має експортовані знімки" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3478 +#: access/transam/xact.c:3479 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s неможливо запустити всередині блоку транзакції" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3488 +#: access/transam/xact.c:3489 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s неможливо запустити всередині підтранзакції" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3498 +#: access/transam/xact.c:3499 #, c-format msgid "%s cannot be executed within a pipeline" msgstr "%s не можна використовувати в межах конвеєра" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3508 +#: access/transam/xact.c:3509 #, c-format msgid "%s cannot be executed from a function" msgstr "%s неможливо виконати з функції" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3579 access/transam/xact.c:3894 -#: access/transam/xact.c:3973 access/transam/xact.c:4096 -#: access/transam/xact.c:4247 access/transam/xact.c:4316 -#: access/transam/xact.c:4427 +#: access/transam/xact.c:3580 access/transam/xact.c:3895 +#: access/transam/xact.c:3974 access/transam/xact.c:4097 +#: access/transam/xact.c:4248 access/transam/xact.c:4317 +#: access/transam/xact.c:4428 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s може використовуватися тільки в блоках транзакції" -#: access/transam/xact.c:3780 +#: access/transam/xact.c:3781 #, c-format msgid "there is already a transaction in progress" msgstr "транзакція вже виконується" -#: access/transam/xact.c:3899 access/transam/xact.c:3978 -#: access/transam/xact.c:4101 +#: access/transam/xact.c:3900 access/transam/xact.c:3979 +#: access/transam/xact.c:4102 #, c-format msgid "there is no transaction in progress" msgstr "немає незавершеної транзакції" -#: access/transam/xact.c:3989 +#: access/transam/xact.c:3990 #, c-format msgid "cannot commit during a parallel operation" msgstr "не можна фіксувати транзакції під час паралельних операцій" -#: access/transam/xact.c:4112 +#: access/transam/xact.c:4113 #, c-format msgid "cannot abort during a parallel operation" msgstr "не можна перервати під час паралельних операцій" -#: access/transam/xact.c:4211 +#: access/transam/xact.c:4212 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "не можна визначати точки збереження під час паралельних операцій" -#: access/transam/xact.c:4298 +#: access/transam/xact.c:4299 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "не можна вивільняти точки збереження під час паралельних транзакцій" -#: access/transam/xact.c:4308 access/transam/xact.c:4359 -#: access/transam/xact.c:4419 access/transam/xact.c:4468 +#: access/transam/xact.c:4309 access/transam/xact.c:4360 +#: access/transam/xact.c:4420 access/transam/xact.c:4469 #, c-format msgid "savepoint \"%s\" does not exist" msgstr "точка збереження \"%s\" не існує" -#: access/transam/xact.c:4365 access/transam/xact.c:4474 +#: access/transam/xact.c:4366 access/transam/xact.c:4475 #, c-format msgid "savepoint \"%s\" does not exist within current savepoint level" msgstr "точка збереження \"%s\" не існує на поточному рівні збереження точок" -#: access/transam/xact.c:4407 +#: access/transam/xact.c:4408 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "не можна відкотити назад до точки збереження під час паралельних операцій" -#: access/transam/xact.c:4535 +#: access/transam/xact.c:4536 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "не можна запустити підтранзакцію під час паралельних операцій" -#: access/transam/xact.c:4603 +#: access/transam/xact.c:4604 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "не можна визначити підтранзакцію під час паралельних операцій" -#: access/transam/xact.c:5250 +#: access/transam/xact.c:5251 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "в одній транзакції не може бути більше 2^32-1 підтранзакцій" -#: access/transam/xlog.c:1463 +#: access/transam/xlog.c:1465 #, 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:2224 +#: access/transam/xlog.c:2226 #, 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:3471 access/transam/xlogutils.c:847 +#: access/transam/xlog.c:3473 access/transam/xlogutils.c:847 #: replication/walsender.c:2716 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "запитуваний сегмент WAL %s вже видалений" -#: access/transam/xlog.c:3756 +#: access/transam/xlog.c:3758 #, c-format msgid "could not rename file \"%s\": %m" msgstr "не вдалося перейменувати файл \"%s\": %m" -#: access/transam/xlog.c:3798 access/transam/xlog.c:3808 +#: access/transam/xlog.c:3800 access/transam/xlog.c:3810 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "необхідний каталог WAL \"%s\" не існує" -#: access/transam/xlog.c:3814 +#: access/transam/xlog.c:3816 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "створюється відсутній каталог WAL \"%s\"" -#: access/transam/xlog.c:3817 commands/dbcommands.c:3115 +#: access/transam/xlog.c:3819 commands/dbcommands.c:3115 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "не вдалося створити відстуній каталог \"%s\": %m" -#: access/transam/xlog.c:3884 +#: access/transam/xlog.c:3886 #, c-format msgid "could not generate secret authorization token" msgstr "не вдалося згенерувати секретний токен для авторизації" -#: access/transam/xlog.c:4043 access/transam/xlog.c:4052 -#: access/transam/xlog.c:4076 access/transam/xlog.c:4083 -#: access/transam/xlog.c:4090 access/transam/xlog.c:4095 -#: access/transam/xlog.c:4102 access/transam/xlog.c:4109 -#: access/transam/xlog.c:4116 access/transam/xlog.c:4123 -#: access/transam/xlog.c:4130 access/transam/xlog.c:4137 -#: access/transam/xlog.c:4146 access/transam/xlog.c:4153 -#: utils/init/miscinit.c:1598 +#: access/transam/xlog.c:4045 access/transam/xlog.c:4054 +#: access/transam/xlog.c:4078 access/transam/xlog.c:4085 +#: access/transam/xlog.c:4092 access/transam/xlog.c:4097 +#: access/transam/xlog.c:4104 access/transam/xlog.c:4111 +#: access/transam/xlog.c:4118 access/transam/xlog.c:4125 +#: access/transam/xlog.c:4132 access/transam/xlog.c:4139 +#: access/transam/xlog.c:4148 access/transam/xlog.c:4155 +#: utils/init/miscinit.c:1606 #, c-format msgid "database files are incompatible with server" msgstr "файли бази даних є несумісними з даним сервером" -#: access/transam/xlog.c:4044 +#: access/transam/xlog.c:4046 #, 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:4048 +#: access/transam/xlog.c:4050 #, 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:4053 +#: access/transam/xlog.c:4055 #, 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:4056 access/transam/xlog.c:4080 -#: access/transam/xlog.c:4087 access/transam/xlog.c:4092 +#: access/transam/xlog.c:4058 access/transam/xlog.c:4082 +#: access/transam/xlog.c:4089 access/transam/xlog.c:4094 #, c-format msgid "It looks like you need to initdb." msgstr "Здається, Вам треба виконати initdb." -#: access/transam/xlog.c:4067 +#: access/transam/xlog.c:4069 #, c-format msgid "incorrect checksum in control file" msgstr "помилка контрольної суми у файлі pg_control" -#: access/transam/xlog.c:4077 +#: access/transam/xlog.c:4079 #, 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:4084 +#: access/transam/xlog.c:4086 #, 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:4091 +#: access/transam/xlog.c:4093 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Здається, в кластері баз даних і в програмі сервера використовуються різні формати чисел з плаваючою точкою." -#: access/transam/xlog.c:4096 +#: access/transam/xlog.c:4098 #, 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:4099 access/transam/xlog.c:4106 -#: access/transam/xlog.c:4113 access/transam/xlog.c:4120 -#: access/transam/xlog.c:4127 access/transam/xlog.c:4134 -#: access/transam/xlog.c:4141 access/transam/xlog.c:4149 -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4101 access/transam/xlog.c:4108 +#: access/transam/xlog.c:4115 access/transam/xlog.c:4122 +#: access/transam/xlog.c:4129 access/transam/xlog.c:4136 +#: access/transam/xlog.c:4143 access/transam/xlog.c:4151 +#: access/transam/xlog.c:4158 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Здається, вам потрібно перекомпілювати сервер або виконати initdb." -#: access/transam/xlog.c:4103 +#: access/transam/xlog.c:4105 #, 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:4110 +#: access/transam/xlog.c:4112 #, 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:4117 +#: access/transam/xlog.c:4119 #, 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:4124 +#: access/transam/xlog.c:4126 #, 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:4131 +#: access/transam/xlog.c:4133 #, 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:4138 +#: access/transam/xlog.c:4140 #, 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:4147 +#: access/transam/xlog.c:4149 #, 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:4154 +#: access/transam/xlog.c:4156 #, 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:4163 +#: access/transam/xlog.c:4165 #, 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" @@ -2359,236 +2349,236 @@ msgstr[1] "Розмір сегменту WAL повинен задаватись msgstr[2] "Розмір сегменту WAL повинен задаватись ступенем 2 в інтервалі від 1 МБ до 1 ГБ, але в керуючому файлі вказано значення %d" msgstr[3] "Розмір сегменту WAL повинен задаватись ступенем 2 в інтервалі від 1 МБ до 1 ГБ, але в керуючому файлі вказано значення %d" -#: access/transam/xlog.c:4175 +#: access/transam/xlog.c:4177 #, 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:4179 +#: access/transam/xlog.c:4181 #, 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:4620 +#: access/transam/xlog.c:4622 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "не вдалося записати початкове завантаження випереджувального журналювання: %m" -#: access/transam/xlog.c:4628 +#: access/transam/xlog.c:4630 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "не вдалося скинути на диск початкове завантаження випереджувального журналювання: %m" -#: access/transam/xlog.c:4634 +#: access/transam/xlog.c:4636 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "не вдалося закрити початкове завантаження випереджувального журналювання: %m" -#: access/transam/xlog.c:4852 +#: access/transam/xlog.c:4854 #, c-format msgid "WAL was generated with wal_level=minimal, cannot continue recovering" msgstr "WAL був створений з параметром wal_level=minimal, неможливо продовжити відновлення" -#: access/transam/xlog.c:4853 +#: access/transam/xlog.c:4855 #, c-format msgid "This happens if you temporarily set wal_level=minimal on the server." msgstr "Це трапляється, якщо ви тимчасово встановили параметр wal_level=minimal на сервері." -#: access/transam/xlog.c:4854 +#: access/transam/xlog.c:4856 #, c-format msgid "Use a backup taken after setting wal_level to higher than minimal." msgstr "Використовуйте резервну копію, зроблену після встановлення значення wal_level, що перевищує максимальне." -#: access/transam/xlog.c:4918 +#: access/transam/xlog.c:4920 #, c-format msgid "control file contains invalid checkpoint location" msgstr "контрольний файл містить недійсне розташування контрольної точки" -#: access/transam/xlog.c:4929 +#: access/transam/xlog.c:4931 #, c-format msgid "database system was shut down at %s" msgstr "система бази даних була вимкнена %s" -#: access/transam/xlog.c:4935 +#: access/transam/xlog.c:4937 #, c-format msgid "database system was shut down in recovery at %s" msgstr "система бази даних завершила роботу у процесі відновлення %s" -#: access/transam/xlog.c:4941 +#: access/transam/xlog.c:4943 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "завершення роботи бази даних було перервано; останній момент роботи %s" -#: access/transam/xlog.c:4947 +#: access/transam/xlog.c:4949 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "система бази даних була перервана в процесі відновлення %s" -#: access/transam/xlog.c:4949 +#: access/transam/xlog.c:4951 #, 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:4955 +#: access/transam/xlog.c:4957 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "робота системи бази даних була перервана в процесі відновлення, час в журналі %s" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4959 #, 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:4963 +#: access/transam/xlog.c:4965 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "робота системи бази даних була перервана; останній момент роботи %s" -#: access/transam/xlog.c:4969 +#: access/transam/xlog.c:4971 #, c-format msgid "control file contains invalid database cluster state" msgstr "контрольний файл містить недійсний стан кластеру бази даних" -#: access/transam/xlog.c:5353 +#: access/transam/xlog.c:5355 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL завершився до завершення онлайн резервного копіювання" -#: access/transam/xlog.c:5354 +#: access/transam/xlog.c:5356 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Всі журнали WAL, створені під час резервного копіювання \"на ходу\", повинні бути в наявності для відновлення." -#: access/transam/xlog.c:5357 +#: access/transam/xlog.c:5359 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL завершився до узгодженої точки відновлення" -#: access/transam/xlog.c:5405 +#: access/transam/xlog.c:5407 #, c-format msgid "selected new timeline ID: %u" msgstr "вибрано новий ID часової лінії: %u" -#: access/transam/xlog.c:5438 +#: access/transam/xlog.c:5440 #, c-format msgid "archive recovery complete" msgstr "відновлення архіву завершено" -#: access/transam/xlog.c:6044 +#: access/transam/xlog.c:6046 #, c-format msgid "shutting down" msgstr "завершення роботи" #. translator: the placeholders show checkpoint options -#: access/transam/xlog.c:6083 +#: access/transam/xlog.c:6085 #, 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:6095 +#: access/transam/xlog.c:6097 #, 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:6155 +#: access/transam/xlog.c:6157 #, 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:6175 +#: access/transam/xlog.c:6177 #, 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:6610 +#: access/transam/xlog.c:6612 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "під час того вимкнення БД помічено конкурентну активність у випереджувальному журналюванні" -#: access/transam/xlog.c:7167 +#: access/transam/xlog.c:7169 #, c-format msgid "recovery restart point at %X/%X" msgstr "відновлення збереженої точки %X/%X" -#: access/transam/xlog.c:7169 +#: access/transam/xlog.c:7171 #, c-format msgid "Last completed transaction was at log time %s." msgstr "Остання завершена транзакція була в %s." -#: access/transam/xlog.c:7416 +#: access/transam/xlog.c:7418 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка відновлення \"%s\" створена в %X/%X" -#: access/transam/xlog.c:7623 +#: access/transam/xlog.c:7625 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "онлайн резервне копіювання скасовано, неможливо продовжити відновлення" -#: access/transam/xlog.c:7680 +#: access/transam/xlog.c:7682 #, c-format msgid "unexpected timeline ID %u (should be %u) in shutdown checkpoint record" msgstr "неочікуваний ID лінії часу %u (повинен бути %u) у записі контрольної точки вимкнення" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7740 #, c-format msgid "unexpected timeline ID %u (should be %u) in online checkpoint record" msgstr "неочікуваний ID лінії часу %u (повинен бути %u) у записі контрольної точки онлайн" -#: access/transam/xlog.c:7767 +#: access/transam/xlog.c:7769 #, c-format msgid "unexpected timeline ID %u (should be %u) in end-of-recovery record" msgstr "неочікуваний ID лінії часу %u (повинен бути %u) у записі кінця відновлення" -#: access/transam/xlog.c:8025 +#: access/transam/xlog.c:8027 #, c-format msgid "could not fsync write-through file \"%s\": %m" msgstr "не вдалосьясинхронізувати файл наскрізного запису %s: %m" -#: access/transam/xlog.c:8031 +#: access/transam/xlog.c:8033 #, c-format msgid "could not fdatasync file \"%s\": %m" msgstr "не вдалося fdatasync файл \"%s\": %m" -#: access/transam/xlog.c:8126 access/transam/xlog.c:8493 +#: access/transam/xlog.c:8128 access/transam/xlog.c:8495 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "Обраний рівень WAL недостатній для резервного копіювання \"на ходу\"" -#: access/transam/xlog.c:8127 access/transam/xlog.c:8494 +#: access/transam/xlog.c:8129 access/transam/xlog.c:8496 #: access/transam/xlogfuncs.c:199 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "встановіть wal_level \"replica\" або \"logical\" при запуску серверу." -#: access/transam/xlog.c:8132 +#: access/transam/xlog.c:8134 #, c-format msgid "backup label too long (max %d bytes)" msgstr "мітка резервного копіювання задовга (максимум %d байт)" -#: access/transam/xlog.c:8248 +#: access/transam/xlog.c:8250 #, 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:8250 access/transam/xlog.c:8606 +#: access/transam/xlog.c:8252 access/transam/xlog.c:8608 #, 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:8330 backup/basebackup.c:1345 utils/adt/misc.c:347 +#: access/transam/xlog.c:8332 backup/basebackup.c:1345 utils/adt/misc.c:347 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "таргет символічного посилання \"%s\" задовгий" -#: access/transam/xlog.c:8380 backup/basebackup.c:1360 +#: access/transam/xlog.c:8382 backup/basebackup.c:1360 #: commands/tablespace.c:399 commands/tablespace.c:581 utils/adt/misc.c:355 #, c-format msgid "tablespaces are not supported on this platform" msgstr "табличний простір не підтримується на цій платформі" -#: access/transam/xlog.c:8539 access/transam/xlog.c:8552 +#: access/transam/xlog.c:8541 access/transam/xlog.c:8554 #: access/transam/xlogrecovery.c:1211 access/transam/xlogrecovery.c:1218 #: access/transam/xlogrecovery.c:1277 access/transam/xlogrecovery.c:1357 #: access/transam/xlogrecovery.c:1381 @@ -2596,67 +2586,67 @@ msgstr "табличний простір не підтримується на msgid "invalid data in file \"%s\"" msgstr "невірні дані у файлі \"%s\"" -#: access/transam/xlog.c:8556 backup/basebackup.c:1200 +#: access/transam/xlog.c:8558 backup/basebackup.c:1200 #, c-format msgid "the standby was promoted during online backup" msgstr "режим очікування було підвищено у процесі резервного копіювання \"на ходу\"" -#: access/transam/xlog.c:8557 backup/basebackup.c:1201 +#: access/transam/xlog.c:8559 backup/basebackup.c:1201 #, 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:8604 +#: access/transam/xlog.c:8606 #, 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:8729 +#: access/transam/xlog.c:8731 #, c-format msgid "base backup done, waiting for required WAL segments to be archived" msgstr "резервне копіювання виконане, очікуються необхідні сегменти WAL для архівації" -#: access/transam/xlog.c:8743 +#: access/transam/xlog.c:8745 #, c-format msgid "still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "все ще чекає на необхідні сегменти WAL для архівації (%d секунд пройшло)" -#: access/transam/xlog.c:8745 +#: access/transam/xlog.c:8747 #, 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:8752 +#: access/transam/xlog.c:8754 #, c-format msgid "all required WAL segments have been archived" msgstr "усі необхідні сегменти WAL архівовані" -#: access/transam/xlog.c:8756 +#: access/transam/xlog.c:8758 #, 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:8805 +#: access/transam/xlog.c:8807 #, c-format msgid "aborting backup due to backend exiting before pg_backup_stop was called" msgstr "припинення резервного копіювання через завершення обслуговуючого процесу до виклику pg_backup_stop" -#: access/transam/xlogarchive.c:208 +#: access/transam/xlogarchive.c:215 #, c-format msgid "archive file \"%s\" has wrong size: %lld instead of %lld" msgstr "файл архіву \"%s\" має неправильний розмір: %lld замість %lld" -#: access/transam/xlogarchive.c:217 +#: access/transam/xlogarchive.c:224 #, c-format msgid "restored log file \"%s\" from archive" msgstr "відновлений файл журналу \"%s\" з архіву" -#: access/transam/xlogarchive.c:231 +#: access/transam/xlogarchive.c:238 #, c-format msgid "restore_command returned a zero exit status, but stat() failed." msgstr "restore_command повернула нульовий статус виходу, але stat() не вдався." -#: access/transam/xlogarchive.c:263 +#: access/transam/xlogarchive.c:270 #, c-format msgid "could not restore file \"%s\" from archive: %s" msgstr "неможливо відновити файл \"%s\" з архіву: %s" @@ -2664,17 +2654,17 @@ msgstr "неможливо відновити файл \"%s\" з архіву: % #. translator: First %s represents a postgresql.conf parameter name like #. "recovery_end_command", the 2nd is the value of that parameter, the #. third an already translated error message. -#: access/transam/xlogarchive.c:376 +#: access/transam/xlogarchive.c:383 #, c-format msgid "%s \"%s\": %s" msgstr "%s \"%s\": %s" -#: access/transam/xlogarchive.c:486 access/transam/xlogarchive.c:566 +#: access/transam/xlogarchive.c:493 access/transam/xlogarchive.c:573 #, c-format msgid "could not create archive status file \"%s\": %m" msgstr "неможливо створити файл статусу архіву \"%s\": %m" -#: access/transam/xlogarchive.c:494 access/transam/xlogarchive.c:574 +#: access/transam/xlogarchive.c:501 access/transam/xlogarchive.c:581 #, c-format msgid "could not write archive status file \"%s\": %m" msgstr "неможливо записати файл архівного статусу \"%s\": %m" @@ -2745,7 +2735,7 @@ msgstr "%s не може бути виконаний після того як п msgid "\"wait_seconds\" must not be negative or zero" msgstr "\"wait_seconds\" не має бути від'ємним чи нулем" -#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:252 +#: access/transam/xlogfuncs.c:607 storage/ipc/signalfuncs.c:257 #, c-format msgid "failed to send signal to postmaster: %m" msgstr "надіслати сигнал процесу postmaster не вдалося: %m" @@ -2764,167 +2754,157 @@ msgstr[3] "сервер не підвищувався протягом %d сек msgid "recovery_prefetch is not supported on platforms that lack posix_fadvise()." msgstr "recovery_prefetch не підтримується на платформах, у яких відсутня posix_fadvise()." -#: access/transam/xlogreader.c:625 +#: access/transam/xlogreader.c:620 #, c-format msgid "invalid record offset at %X/%X" msgstr "невірний зсув запису: %X/%X" -#: access/transam/xlogreader.c:633 +#: access/transam/xlogreader.c:628 #, c-format msgid "contrecord is requested by %X/%X" msgstr "по зсуву %X/%X запитано продовження запису" -#: access/transam/xlogreader.c:674 access/transam/xlogreader.c:1117 +#: access/transam/xlogreader.c:669 access/transam/xlogreader.c:1134 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "невірна довжина запису по зсуву %X/%X: очікувалось %u, отримано %u" -#: access/transam/xlogreader.c:703 -#, c-format -msgid "out of memory while trying to decode a record of length %u" -msgstr "не вистачило пам'яті під час спроби закодування запису довжиною %u" - -#: access/transam/xlogreader.c:725 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "довжина запису %u на %X/%X є задовгою" - -#: access/transam/xlogreader.c:774 +#: access/transam/xlogreader.c:758 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "немає прапорця contrecord в позиції %X/%X" -#: access/transam/xlogreader.c:787 +#: access/transam/xlogreader.c:771 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "неприпустима довжина contrecord %u (очікувалось %lld) на %X/%X" -#: access/transam/xlogreader.c:1125 +#: access/transam/xlogreader.c:1142 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "невірний ID менеджера ресурсів %u в %X/%X" -#: access/transam/xlogreader.c:1138 access/transam/xlogreader.c:1154 +#: access/transam/xlogreader.c:1155 access/transam/xlogreader.c:1171 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запис з неправильним попереднім посиланням %X/%X на %X/%X" -#: access/transam/xlogreader.c:1190 +#: access/transam/xlogreader.c:1209 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "некоректна контрольна сума даних менеджера ресурсів у запису по зсуву %X/%X" -#: access/transam/xlogreader.c:1227 +#: access/transam/xlogreader.c:1246 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "невірне магічне число %04X в сегменті журналу %s, зсув %u" -#: access/transam/xlogreader.c:1241 access/transam/xlogreader.c:1282 +#: access/transam/xlogreader.c:1260 access/transam/xlogreader.c:1301 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "невірні інформаційні біти %04X в сегменті журналу %s, зсув %u" -#: access/transam/xlogreader.c:1256 +#: access/transam/xlogreader.c:1275 #, 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:1264 +#: access/transam/xlogreader.c:1283 #, c-format msgid "WAL file is from different database system: incorrect segment size in page header" msgstr "Файл WAL належить іншій системі баз даних: некоректний розмір сегменту в заголовку сторінки" -#: access/transam/xlogreader.c:1270 +#: access/transam/xlogreader.c:1289 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "Файл WAL належить іншій системі баз даних: некоректний XLOG_BLCKSZ в заголовку сторінки" -#: access/transam/xlogreader.c:1301 +#: access/transam/xlogreader.c:1320 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неочікуваний pageaddr %X/%X в сегменті журналу %s, зсув %u" -#: access/transam/xlogreader.c:1326 +#: access/transam/xlogreader.c:1345 #, 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:1731 +#: access/transam/xlogreader.c:1750 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "ідентифікатор блока %u out-of-order в позиції %X/%X" -#: access/transam/xlogreader.c:1755 +#: access/transam/xlogreader.c:1774 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA встановлений, але немає даних в позиції %X/%X" -#: access/transam/xlogreader.c:1762 +#: access/transam/xlogreader.c:1781 #, 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:1798 +#: access/transam/xlogreader.c:1817 #, 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:1814 +#: access/transam/xlogreader.c:1833 #, 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:1828 +#: access/transam/xlogreader.c:1847 #, c-format msgid "BKPIMAGE_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_COMPRESSED встановлений, але довжина образу блока дорівнює %u в позиції %X/%X" -#: access/transam/xlogreader.c:1843 +#: access/transam/xlogreader.c:1862 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_COMPRESSED set, but block image length is %u at %X/%X" msgstr "ні BKPIMAGE_HAS_HOLE, ні BKPIMAGE_COMPRESSED не встановлені, але довжина образу блока дорівнює %u в позиції %X/%X" -#: access/transam/xlogreader.c:1859 +#: access/transam/xlogreader.c:1878 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL встановлений, але попереднє значення не задано в позиції %X/%X" -#: access/transam/xlogreader.c:1871 +#: access/transam/xlogreader.c:1890 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "невірний ідентифікатор блоку %u в позиції %X/%X" -#: access/transam/xlogreader.c:1938 +#: access/transam/xlogreader.c:1957 #, c-format msgid "record with invalid length at %X/%X" msgstr "запис з невірною довжиною на %X/%X" -#: access/transam/xlogreader.c:1963 +#: access/transam/xlogreader.c:1982 #, c-format msgid "could not locate backup block with ID %d in WAL record" msgstr "не вдалося знайти блок резервної копії з ID %d у записі WAL" -#: access/transam/xlogreader.c:2047 +#: access/transam/xlogreader.c:2066 #, c-format msgid "could not restore image at %X/%X with invalid block %d specified" msgstr "не вдалося відновити зображення %X/%X з недійсним вказаним блоком %d" -#: access/transam/xlogreader.c:2054 +#: access/transam/xlogreader.c:2073 #, c-format msgid "could not restore image at %X/%X with invalid state, block %d" msgstr "не вдалося відновити зображення %X/%X з недійсним станом, блок %d" -#: access/transam/xlogreader.c:2081 access/transam/xlogreader.c:2098 +#: access/transam/xlogreader.c:2100 access/transam/xlogreader.c:2117 #, c-format msgid "could not restore image at %X/%X compressed with %s not supported by build, block %d" msgstr "не вдалося відновити зображення в %X/%X, стиснуте %s, не підтримується збіркою, блок %d" -#: access/transam/xlogreader.c:2107 +#: access/transam/xlogreader.c:2126 #, c-format msgid "could not restore image at %X/%X compressed with unknown method, block %d" msgstr "не вдалося відновити зображення %X/%X стиснуте з невідомим методом, блок %d" -#: access/transam/xlogreader.c:2115 +#: access/transam/xlogreader.c:2134 #, c-format msgid "could not decompress image at %X/%X, block %d" msgstr "не вдалося розпакувати зображення на %X/%X, блок %d" @@ -3585,7 +3565,7 @@ msgstr "не вдалося створити каталог \"%s\": %m" msgid "directory \"%s\" exists but is not empty" msgstr "каталог \"%s\" існує, але він не порожній" -#: backup/basebackup_server.c:123 utils/init/postinit.c:1086 +#: backup/basebackup_server.c:123 utils/init/postinit.c:1090 #, c-format msgid "could not access directory \"%s\": %m" msgstr "немає доступу до каталогу \"%s\": %m" @@ -3806,7 +3786,7 @@ msgstr "речення IN SCHEMA не можна використати в GRANT #: commands/tablecmds.c:8371 commands/tablecmds.c:8489 #: commands/tablecmds.c:12218 commands/tablecmds.c:12399 #: commands/tablecmds.c:12559 commands/tablecmds.c:13723 -#: commands/tablecmds.c:16292 commands/trigger.c:954 parser/analyze.c:2468 +#: commands/tablecmds.c:16292 commands/trigger.c:954 parser/analyze.c:2506 #: parser/parse_relation.c:725 parser/parse_target.c:1063 #: parser/parse_type.c:144 parser/parse_utilcmd.c:3435 #: parser/parse_utilcmd.c:3471 parser/parse_utilcmd.c:3513 utils/adt/acl.c:2869 @@ -3816,7 +3796,7 @@ msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "стовпець \"%s\" зв'язку \"%s\" не існує" #: catalog/aclchk.c:1850 catalog/objectaddress.c:1383 commands/sequence.c:1172 -#: commands/tablecmds.c:253 commands/tablecmds.c:17156 utils/adt/acl.c:2077 +#: commands/tablecmds.c:253 commands/tablecmds.c:17164 utils/adt/acl.c:2077 #: utils/adt/acl.c:2107 utils/adt/acl.c:2139 utils/adt/acl.c:2171 #: utils/adt/acl.c:2199 utils/adt/acl.c:2229 #, c-format @@ -4262,8 +4242,8 @@ msgstr "джерело сторонніх даних з OID %u не існує" msgid "foreign server with OID %u does not exist" msgstr "стороннього серверу з OID %u не усніє" -#: catalog/aclchk.c:4816 catalog/aclchk.c:5210 utils/cache/typcache.c:385 -#: utils/cache/typcache.c:440 +#: catalog/aclchk.c:4816 catalog/aclchk.c:5210 utils/cache/typcache.c:390 +#: utils/cache/typcache.c:445 #, c-format msgid "type with OID %u does not exist" msgstr "тип з OID %u не існує" @@ -4425,10 +4405,10 @@ msgstr "неможливо видалити %s, тому що від нього #: catalog/dependency.c:1212 commands/tablecmds.c:1328 #: commands/tablecmds.c:14365 commands/tablespace.c:476 commands/user.c:1008 #: commands/view.c:522 libpq/auth.c:329 replication/syncrep.c:1043 -#: storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1413 utils/misc/guc.c:7402 -#: utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11865 -#: utils/misc/guc.c:11899 utils/misc/guc.c:11933 utils/misc/guc.c:11976 -#: utils/misc/guc.c:12018 +#: storage/lmgr/deadlock.c:1151 storage/lmgr/proc.c:1421 utils/misc/guc.c:7402 +#: utils/misc/guc.c:7438 utils/misc/guc.c:7508 utils/misc/guc.c:11873 +#: utils/misc/guc.c:11907 utils/misc/guc.c:11941 utils/misc/guc.c:11984 +#: utils/misc/guc.c:12026 #, c-format msgid "%s" msgstr "%s" @@ -4555,100 +4535,100 @@ msgstr "значення relfilenode не встановлено в режимі msgid "cannot add NO INHERIT constraint to partitioned table \"%s\"" msgstr "не можна додати обмеження NO INHERIT до секціонованої таблиці \"%s\"" -#: catalog/heap.c:2401 +#: catalog/heap.c:2402 #, c-format msgid "check constraint \"%s\" already exists" msgstr "обмеження перевірки \"%s\" вже інсує" -#: catalog/heap.c:2571 catalog/index.c:889 catalog/pg_constraint.c:689 +#: catalog/heap.c:2572 catalog/index.c:889 catalog/pg_constraint.c:689 #: commands/tablecmds.c:8863 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "обмеження \"%s\" відношення \"%s\" вже існує" -#: catalog/heap.c:2578 +#: catalog/heap.c:2579 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "обмеження \"%s\" конфліктує з неуспадкованим обмеженням відношення \"%s\"" -#: catalog/heap.c:2589 +#: catalog/heap.c:2590 #, c-format msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" msgstr "обмеження \"%s\" конфліктує з успадкованим обмеженням відношення \"%s\"" -#: catalog/heap.c:2599 +#: catalog/heap.c:2600 #, c-format msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" msgstr "обмеження \"%s\" конфліктує з обмеженням NOT VALID в відношенні \"%s\"" -#: catalog/heap.c:2604 +#: catalog/heap.c:2605 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "злиття обмеження \"%s\" з успадкованим визначенням" -#: catalog/heap.c:2709 +#: catalog/heap.c:2710 #, c-format msgid "cannot use generated column \"%s\" in column generation expression" msgstr "в виразі створення стовпця не можна використовувати згенерований стовпець \"%s\" " -#: catalog/heap.c:2711 +#: catalog/heap.c:2712 #, c-format msgid "A generated column cannot reference another generated column." msgstr "Згенерований стовпець не може посилатися на інший згенерований стовпець." -#: catalog/heap.c:2717 +#: catalog/heap.c:2718 #, c-format msgid "cannot use whole-row variable in column generation expression" msgstr "у виразі створення стовпців не можна використовувати змінну усього рядка" -#: catalog/heap.c:2718 +#: catalog/heap.c:2719 #, c-format msgid "This would cause the generated column to depend on its own value." msgstr "Це призведе до того, що згенерований стовпець буде залежати від власного значення." -#: catalog/heap.c:2771 +#: catalog/heap.c:2774 #, c-format msgid "generation expression is not immutable" msgstr "вираз генерації не є незмінним" -#: catalog/heap.c:2799 rewrite/rewriteHandler.c:1290 +#: catalog/heap.c:2802 rewrite/rewriteHandler.c:1290 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "стовпець \"%s\" має тип %s, але тип виразу за замовчуванням %s" -#: catalog/heap.c:2804 commands/prepare.c:334 parser/analyze.c:2692 +#: catalog/heap.c:2807 commands/prepare.c:334 parser/analyze.c:2730 #: parser/parse_target.c:594 parser/parse_target.c:882 #: parser/parse_target.c:892 rewrite/rewriteHandler.c:1295 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Потрібно буде переписати або привести вираз." -#: catalog/heap.c:2851 +#: catalog/heap.c:2854 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "в обмеженні-перевірці можна посилатися лише на таблицю \"%s\"" -#: catalog/heap.c:3149 +#: catalog/heap.c:3152 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "непідтримуване поєднання зовнішнього ключа з ON COMMIT" -#: catalog/heap.c:3150 +#: catalog/heap.c:3153 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "Таблиця \"%s\" посилається на \"%s\", але вони не мають той же параметр ON COMMIT." -#: catalog/heap.c:3155 +#: catalog/heap.c:3158 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "скоротити таблицю, на яку посилається зовнішній ключ, не можливо" -#: catalog/heap.c:3156 +#: catalog/heap.c:3159 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "Таблиця \"%s\" посилається на \"%s\"." -#: catalog/heap.c:3158 +#: catalog/heap.c:3161 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "Скоротіть таблицю \"%s\" паралельно або використайте TRUNCATE ... CASCADE." @@ -4714,28 +4694,28 @@ msgstr "значення індексу relfilenode не встановлено msgid "DROP INDEX CONCURRENTLY must be first action in transaction" msgstr "DROP INDEX CONCURRENTLY повинен бути першою дією в транзакції" -#: catalog/index.c:3637 +#: catalog/index.c:3646 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "повторно індексувати тимчасові таблиці інших сеансів не можна" -#: catalog/index.c:3648 commands/indexcmds.c:3560 +#: catalog/index.c:3657 commands/indexcmds.c:3536 #, c-format msgid "cannot reindex invalid index on TOAST table" msgstr "переіндексувати неприпустимий індекс в таблиці TOAST не можна" -#: catalog/index.c:3664 commands/indexcmds.c:3440 commands/indexcmds.c:3584 +#: catalog/index.c:3673 commands/indexcmds.c:3416 commands/indexcmds.c:3560 #: commands/tablecmds.c:3305 #, c-format msgid "cannot move system relation \"%s\"" msgstr "перемістити системне відношення \"%s\" не можна" -#: catalog/index.c:3808 +#: catalog/index.c:3817 #, c-format msgid "index \"%s\" was reindexed" msgstr "індекс \"%s\" був перебудований" -#: catalog/index.c:3945 +#: catalog/index.c:3954 #, c-format msgid "cannot reindex invalid index \"%s.%s\" on TOAST table, skipping" msgstr "переіндексувати неприпустимий індекс \"%s.%s\" в таблиці TOAST не можна, пропускається" @@ -4877,7 +4857,7 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "не можна створити тимчасові таблиці під час паралельної операції" #: catalog/namespace.c:4338 commands/tablespace.c:1236 commands/variable.c:64 -#: utils/misc/guc.c:12050 utils/misc/guc.c:12152 +#: utils/misc/guc.c:12058 utils/misc/guc.c:12160 #, c-format msgid "List syntax is invalid." msgstr "Помилка синтаксису у списку." @@ -4890,19 +4870,19 @@ msgid "\"%s\" is not a table" msgstr "\"%s\" не є таблицею" #: catalog/objectaddress.c:1398 commands/tablecmds.c:259 -#: commands/tablecmds.c:17161 commands/view.c:119 +#: commands/tablecmds.c:17169 commands/view.c:119 #, c-format msgid "\"%s\" is not a view" msgstr "\"%s\" не є поданням" #: catalog/objectaddress.c:1405 commands/matview.c:186 commands/tablecmds.c:265 -#: commands/tablecmds.c:17166 +#: commands/tablecmds.c:17174 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\" не є матеріалізованим поданням" #: catalog/objectaddress.c:1412 commands/tablecmds.c:283 -#: commands/tablecmds.c:17171 +#: commands/tablecmds.c:17179 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\" не є сторонньою таблицею" @@ -6512,7 +6492,7 @@ msgstr "не вдалося перетворити локальну назву \ msgid "must be superuser to import system collations" msgstr "імпортувати систмені правила сортування може тільки суперкористувач" -#: commands/collationcmds.c:618 commands/copyfrom.c:1499 commands/copyto.c:679 +#: commands/collationcmds.c:618 commands/copyfrom.c:1509 commands/copyto.c:679 #: libpq/be-secure-common.c:81 #, c-format msgid "could not execute command \"%s\": %m" @@ -6527,8 +6507,8 @@ msgstr "придатні системні локалі не знайдені" #: commands/dbcommands.c:1874 commands/dbcommands.c:2068 #: commands/dbcommands.c:2310 commands/dbcommands.c:2405 #: commands/dbcommands.c:2515 commands/dbcommands.c:3014 -#: utils/init/postinit.c:947 utils/init/postinit.c:1053 -#: utils/init/postinit.c:1079 +#: utils/init/postinit.c:947 utils/init/postinit.c:1011 +#: utils/init/postinit.c:1083 #, c-format msgid "database \"%s\" does not exist" msgstr "бази даних \"%s\" не існує" @@ -6754,7 +6734,7 @@ msgstr "стовпець \"%s\" є згенерованим стовпцем" msgid "Generated columns cannot be used in COPY." msgstr "Згенеровані стовпці не можна використовувати в COPY." -#: commands/copy.c:784 commands/indexcmds.c:1850 commands/statscmds.c:243 +#: commands/copy.c:784 commands/indexcmds.c:1826 commands/statscmds.c:243 #: commands/tablecmds.c:2379 commands/tablecmds.c:3035 #: commands/tablecmds.c:3529 parser/parse_relation.c:3660 #: parser/parse_relation.c:3680 utils/adt/tsvector_op.c:2688 @@ -6833,32 +6813,37 @@ msgstr "виконати COPY FREEZE через попередню активн msgid "cannot perform COPY FREEZE because the table was not created or truncated in the current subtransaction" msgstr "не можна виконати COPY FREEZE, тому, що таблиця не була створена або скорочена в поточній підтранзакції" -#: commands/copyfrom.c:1267 commands/copyto.c:611 +#: commands/copyfrom.c:1270 commands/copyto.c:611 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "Стовпець FORCE_NOT_NULL \"%s\" не фігурує в COPY" -#: commands/copyfrom.c:1290 commands/copyto.c:634 +#: commands/copyfrom.c:1293 commands/copyto.c:634 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "Стовпець FORCE_NULL \"%s\" не фігурує в COPY" -#: commands/copyfrom.c:1518 +#: commands/copyfrom.c:1346 utils/mb/mbutils.c:385 +#, c-format +msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" +msgstr "функції за замовчуванням перетворення з кодування \"%s\" в \"%s\" не існує" + +#: commands/copyfrom.c:1528 #, c-format msgid "COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \\copy." msgstr "COPY FROM наказує серверному процесу PostgreSQL прочитати дані з файлу. Можливо, вам потрібна клієнтська команда, наприклад \\copy в psql." -#: commands/copyfrom.c:1531 commands/copyto.c:731 +#: commands/copyfrom.c:1541 commands/copyto.c:731 #, c-format msgid "\"%s\" is a directory" msgstr "\"%s\" - каталог" -#: commands/copyfrom.c:1599 commands/copyto.c:301 libpq/be-secure-common.c:105 +#: commands/copyfrom.c:1609 commands/copyto.c:301 libpq/be-secure-common.c:105 #, c-format msgid "could not close pipe to external command: %m" msgstr "не вдалося закрити канал за допомогою зовнішньої команди: %m" -#: commands/copyfrom.c:1614 commands/copyto.c:306 +#: commands/copyfrom.c:1624 commands/copyto.c:306 #, c-format msgid "program \"%s\" failed" msgstr "збій програми \"%s\"" @@ -7183,7 +7168,7 @@ msgid "cannot use invalid database \"%s\" as template" msgstr "не можна використовувати невірну базу даних \"%s\" в якості шаблону" #: commands/dbcommands.c:976 commands/dbcommands.c:2320 -#: utils/init/postinit.c:1062 +#: utils/init/postinit.c:1026 #, c-format msgid "Use DROP DATABASE to drop invalid databases." msgstr "Використайте DROP DATABASE для видалення невірних баз даних." @@ -7467,7 +7452,7 @@ msgstr[1] "Є %d інші сеанси з використанням цієї б msgstr[2] "Є %d інших сеансів з використанням цієї бази даних." msgstr[3] "Є %d інших сеансів з використанням цієї бази даних." -#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3848 +#: commands/dbcommands.c:2966 storage/ipc/procarray.c:3847 #, c-format msgid "There is %d prepared transaction using the database." msgid_plural "There are %d prepared transactions using the database." @@ -8582,218 +8567,218 @@ msgstr "непідтримуване обмеження \"%s\" з визначе msgid "%s constraints cannot be used when partition keys include expressions." msgstr "обмеження %s не можуть використовуватись, якщо ключі секціонування включають вирази." -#: commands/indexcmds.c:1037 +#: commands/indexcmds.c:1040 #, c-format msgid "unique constraint on partitioned table must include all partitioning columns" msgstr "обмеження унікальності в секціонованій таблиці повинно включати всі стовпці секціонування" -#: commands/indexcmds.c:1038 +#: commands/indexcmds.c:1041 #, c-format msgid "%s constraint on table \"%s\" lacks column \"%s\" which is part of the partition key." msgstr "в обмеженні %s таблиці\"%s\" не вистачає стовпця \"%s\", що є частиною ключа секціонування." -#: commands/indexcmds.c:1057 commands/indexcmds.c:1076 +#: commands/indexcmds.c:1060 commands/indexcmds.c:1079 #, c-format msgid "index creation on system columns is not supported" msgstr "створення індексу для системних стовпців не підтримується" -#: commands/indexcmds.c:1276 tcop/utility.c:1518 +#: commands/indexcmds.c:1279 tcop/utility.c:1518 #, c-format msgid "cannot create unique index on partitioned table \"%s\"" msgstr "не можна створити унікальний індекс в секціонованій таблиці \"%s\"" -#: commands/indexcmds.c:1278 tcop/utility.c:1520 +#: commands/indexcmds.c:1281 tcop/utility.c:1520 #, c-format msgid "Table \"%s\" contains partitions that are foreign tables." msgstr "Таблиця \"%s\" містить секції, які є зовнішніми таблицями." -#: commands/indexcmds.c:1767 +#: commands/indexcmds.c:1743 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "функції в предикаті індексу повинні бути позначені як IMMUTABLE" -#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:2529 +#: commands/indexcmds.c:1821 parser/parse_utilcmd.c:2529 #: parser/parse_utilcmd.c:2664 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "вказаний у ключі стовпець \"%s\" не існує" -#: commands/indexcmds.c:1869 parser/parse_utilcmd.c:1826 +#: commands/indexcmds.c:1845 parser/parse_utilcmd.c:1826 #, c-format msgid "expressions are not supported in included columns" msgstr "вирази не підтримуються у включених стовпцях " -#: commands/indexcmds.c:1910 +#: commands/indexcmds.c:1886 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "функції в індексному виразі повинні бути позначені як IMMUTABLE" -#: commands/indexcmds.c:1925 +#: commands/indexcmds.c:1901 #, c-format msgid "including column does not support a collation" msgstr "включені стовпці не підтримують правила сортування" -#: commands/indexcmds.c:1929 +#: commands/indexcmds.c:1905 #, c-format msgid "including column does not support an operator class" msgstr "включені стовпці не підтримують класи операторів" -#: commands/indexcmds.c:1933 +#: commands/indexcmds.c:1909 #, c-format msgid "including column does not support ASC/DESC options" msgstr "включені стовпці не підтримують параметри ASC/DESC" -#: commands/indexcmds.c:1937 +#: commands/indexcmds.c:1913 #, c-format msgid "including column does not support NULLS FIRST/LAST options" msgstr "включені стовпці не підтримують параметри NULLS FIRST/LAST" -#: commands/indexcmds.c:1978 +#: commands/indexcmds.c:1954 #, c-format msgid "could not determine which collation to use for index expression" msgstr "не вдалося визначити, яке правило сортування використати для індексного виразу" -#: commands/indexcmds.c:1986 commands/tablecmds.c:17502 commands/typecmds.c:807 +#: commands/indexcmds.c:1962 commands/tablecmds.c:17512 commands/typecmds.c:807 #: parser/parse_expr.c:2690 parser/parse_type.c:570 parser/parse_utilcmd.c:3796 #: utils/adt/misc.c:601 #, c-format msgid "collations are not supported by type %s" msgstr "тип %s не підтримує правила сортування" -#: commands/indexcmds.c:2051 +#: commands/indexcmds.c:2027 #, c-format msgid "operator %s is not commutative" msgstr "оператор %s не комутативний" -#: commands/indexcmds.c:2053 +#: commands/indexcmds.c:2029 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "В обмеженнях-виключеннях можуть використовуватись лише комутативні оператори." -#: commands/indexcmds.c:2079 +#: commands/indexcmds.c:2055 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "оператор %s не є членом сімейства операторів \"%s\"" -#: commands/indexcmds.c:2082 +#: commands/indexcmds.c:2058 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "Оператор винятку для обмеження повинен відноситись до класу операторів індексу." -#: commands/indexcmds.c:2117 +#: commands/indexcmds.c:2093 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "метод доступу \"%s\" не підтримує параметри ASC/DESC" -#: commands/indexcmds.c:2122 +#: commands/indexcmds.c:2098 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "метод доступу \"%s\" не підтримує параметри NULLS FIRST/LAST" -#: commands/indexcmds.c:2168 commands/tablecmds.c:17527 -#: commands/tablecmds.c:17533 commands/typecmds.c:2302 +#: commands/indexcmds.c:2144 commands/tablecmds.c:17537 +#: commands/tablecmds.c:17543 commands/typecmds.c:2302 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "тип даних %s не має класу операторів за замовчуванням для методу доступу \"%s\"" -#: commands/indexcmds.c:2170 +#: commands/indexcmds.c:2146 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "Ви повинні вказати клас операторів для індексу або визначити клас операторів за замовчуванням для цього типу даних." -#: commands/indexcmds.c:2199 commands/indexcmds.c:2207 +#: commands/indexcmds.c:2175 commands/indexcmds.c:2183 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "клас операторів \"%s\" не існує для методу доступу \"%s\"" -#: commands/indexcmds.c:2221 commands/typecmds.c:2290 +#: commands/indexcmds.c:2197 commands/typecmds.c:2290 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "клас операторів \"%s\" не приймає тип даних %s" -#: commands/indexcmds.c:2311 +#: commands/indexcmds.c:2287 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "для типу даних %s є кілька класів операторів за замовчуванням" -#: commands/indexcmds.c:2639 +#: commands/indexcmds.c:2615 #, c-format msgid "unrecognized REINDEX option \"%s\"" msgstr "нерозпізнаний параметр REINDEX \"%s\"" -#: commands/indexcmds.c:2863 +#: commands/indexcmds.c:2839 #, c-format msgid "table \"%s\" has no indexes that can be reindexed concurrently" msgstr "таблиця \"%s\" не має індексів, які можна переіндексувати паралельно" -#: commands/indexcmds.c:2877 +#: commands/indexcmds.c:2853 #, c-format msgid "table \"%s\" has no indexes to reindex" msgstr "таблиця \"%s\" не має індексів для переіндексування" -#: commands/indexcmds.c:2917 commands/indexcmds.c:3421 -#: commands/indexcmds.c:3549 +#: commands/indexcmds.c:2893 commands/indexcmds.c:3397 +#: commands/indexcmds.c:3525 #, c-format msgid "cannot reindex system catalogs concurrently" msgstr "не можна конкурентно переіндексувати системні каталоги" -#: commands/indexcmds.c:2940 +#: commands/indexcmds.c:2916 #, c-format msgid "can only reindex the currently open database" msgstr "переіндексувати можна тільки наразі відкриту базу даних" -#: commands/indexcmds.c:3028 +#: commands/indexcmds.c:3004 #, c-format msgid "cannot reindex system catalogs concurrently, skipping all" msgstr "не можна конкурентно переіндексувати системні каталоги, пропускаємо" -#: commands/indexcmds.c:3061 +#: commands/indexcmds.c:3037 #, c-format msgid "cannot move system relations, skipping all" msgstr "не можна перемістити системні відношення, пропускаються усі" -#: commands/indexcmds.c:3107 +#: commands/indexcmds.c:3083 #, c-format msgid "while reindexing partitioned table \"%s.%s\"" msgstr "під час переіндексування секціонованої таблиці \"%s.%s\"" -#: commands/indexcmds.c:3110 +#: commands/indexcmds.c:3086 #, c-format msgid "while reindexing partitioned index \"%s.%s\"" msgstr "під час переіндексування секціонованого індексу \"%s.%s\"" -#: commands/indexcmds.c:3301 commands/indexcmds.c:4157 +#: commands/indexcmds.c:3277 commands/indexcmds.c:4133 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "таблиця \"%s.%s\" була переіндексована" -#: commands/indexcmds.c:3453 commands/indexcmds.c:3505 +#: commands/indexcmds.c:3429 commands/indexcmds.c:3481 #, c-format msgid "cannot reindex invalid index \"%s.%s\" concurrently, skipping" msgstr "неможливо переіндексувати пошкоджений індекс \"%s.%s\" паралельно, пропускається" -#: commands/indexcmds.c:3459 +#: commands/indexcmds.c:3435 #, c-format msgid "cannot reindex exclusion constraint index \"%s.%s\" concurrently, skipping" msgstr "неможливо переіндексувати індекс обмеження-виключення \"%s.%s\" паралельно, пропускається" -#: commands/indexcmds.c:3614 +#: commands/indexcmds.c:3590 #, c-format msgid "cannot reindex this type of relation concurrently" msgstr "неможливо переіндексувати цей тип відношень паралельон" -#: commands/indexcmds.c:3635 +#: commands/indexcmds.c:3611 #, c-format msgid "cannot move non-shared relation to tablespace \"%s\"" msgstr "не можна перемістити не спільне відношення до табличного простору \"%s\"" -#: commands/indexcmds.c:4138 commands/indexcmds.c:4150 +#: commands/indexcmds.c:4114 commands/indexcmds.c:4126 #, c-format msgid "index \"%s.%s\" was reindexed" msgstr "індекс \"%s.%s\" був перебудований" -#: commands/indexcmds.c:4140 commands/indexcmds.c:4159 +#: commands/indexcmds.c:4116 commands/indexcmds.c:4135 #, c-format msgid "%s." msgstr "%s." @@ -9108,8 +9093,8 @@ msgstr "атрибут оператора \"%s\" неможливо змінит #: commands/policy.c:89 commands/policy.c:382 commands/statscmds.c:149 #: commands/tablecmds.c:1609 commands/tablecmds.c:2197 #: commands/tablecmds.c:3423 commands/tablecmds.c:6312 -#: commands/tablecmds.c:9144 commands/tablecmds.c:17082 -#: commands/tablecmds.c:17117 commands/trigger.c:328 commands/trigger.c:1378 +#: commands/tablecmds.c:9144 commands/tablecmds.c:17090 +#: commands/tablecmds.c:17125 commands/trigger.c:328 commands/trigger.c:1378 #: commands/trigger.c:1488 rewrite/rewriteDefine.c:278 #: rewrite/rewriteDefine.c:957 rewrite/rewriteRemove.c:80 #, c-format @@ -9207,8 +9192,8 @@ msgstr "підготовлений оператор \"%s\" не існує" msgid "must be superuser to create custom procedural language" msgstr "для створення користувацької мови потрібно бути суперкористувачем" -#: commands/publicationcmds.c:130 postmaster/postmaster.c:1219 -#: postmaster/postmaster.c:1318 utils/init/miscinit.c:1651 +#: commands/publicationcmds.c:130 postmaster/postmaster.c:1222 +#: postmaster/postmaster.c:1321 utils/init/miscinit.c:1659 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "неприпустимий синтаксис списку в параметрі \"%s\"" @@ -9678,7 +9663,7 @@ msgid "must be superuser to create subscriptions" msgstr "для створення підписок потрібно бути суперкористувачем" #: commands/subscriptioncmds.c:648 commands/subscriptioncmds.c:776 -#: replication/logical/tablesync.c:1229 replication/logical/worker.c:3738 +#: replication/logical/tablesync.c:1247 replication/logical/worker.c:3738 #, c-format msgid "could not connect to the publisher: %s" msgstr "не вдалося підключитись до сервера публікації: %s" @@ -9791,7 +9776,7 @@ msgstr "Власником підписки повинен бути суперк msgid "could not receive list of replicated tables from the publisher: %s" msgstr "не вдалося отримати список реплікованих таблиць із сервера публікації: %s" -#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:809 +#: commands/subscriptioncmds.c:1810 replication/logical/tablesync.c:819 #: replication/pgoutput/pgoutput.c:1072 #, c-format msgid "cannot use different column lists for table \"%s.%s\" in different publications" @@ -9884,7 +9869,7 @@ msgstr "матеріалізоване подання \"%s\" не існує, п msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Використайте DROP MATERIALIZED VIEW, щоб видалити матеріалізоване подання." -#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19009 +#: commands/tablecmds.c:269 commands/tablecmds.c:293 commands/tablecmds.c:19019 #: parser/parse_utilcmd.c:2261 #, c-format msgid "index \"%s\" does not exist" @@ -10815,8 +10800,8 @@ msgstr "Замість цього змініть власника таблиці msgid "cannot change owner of sequence \"%s\"" msgstr "неможливо змінити власника послідовності \"%s\"" -#: commands/tablecmds.c:13882 commands/tablecmds.c:17193 -#: commands/tablecmds.c:17212 +#: commands/tablecmds.c:13882 commands/tablecmds.c:17201 +#: commands/tablecmds.c:17220 #, c-format msgid "Use ALTER TYPE instead." msgstr "Замість цього використайте ALTER TYPE." @@ -10886,12 +10871,12 @@ msgstr "успадкування для тимчасового відношен msgid "cannot inherit from a partition" msgstr "успадкування від секції неможливе" -#: commands/tablecmds.c:14943 commands/tablecmds.c:17846 +#: commands/tablecmds.c:14943 commands/tablecmds.c:17856 #, c-format msgid "circular inheritance not allowed" msgstr "циклічне успадкування неприпустиме" -#: commands/tablecmds.c:14944 commands/tablecmds.c:17847 +#: commands/tablecmds.c:14944 commands/tablecmds.c:17857 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" вже є нащадком \"%s\"." @@ -11056,220 +11041,220 @@ msgstr "перемістити послідовність з власником msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "відношення \"%s\" вже існує в схемі \"%s\"" -#: commands/tablecmds.c:17026 +#: commands/tablecmds.c:17034 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\" не є таблицею або матеріалізованим поданням" -#: commands/tablecmds.c:17176 +#: commands/tablecmds.c:17184 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" - не складений тип" -#: commands/tablecmds.c:17204 +#: commands/tablecmds.c:17212 #, c-format msgid "cannot change schema of index \"%s\"" msgstr "змінити схему індексу \"%s\" не можна" -#: commands/tablecmds.c:17206 commands/tablecmds.c:17218 +#: commands/tablecmds.c:17214 commands/tablecmds.c:17226 #, c-format msgid "Change the schema of the table instead." msgstr "Замість цього змініть схему таблиці." -#: commands/tablecmds.c:17210 +#: commands/tablecmds.c:17218 #, c-format msgid "cannot change schema of composite type \"%s\"" msgstr "змінити схему складеного типу \"%s\" не можна" -#: commands/tablecmds.c:17216 +#: commands/tablecmds.c:17224 #, c-format msgid "cannot change schema of TOAST table \"%s\"" msgstr "змінити схему таблиці TOAST \"%s\" не можна" -#: commands/tablecmds.c:17253 +#: commands/tablecmds.c:17261 #, c-format msgid "unrecognized partitioning strategy \"%s\"" msgstr "нерозпізнана стратегія секціонування \"%s\"" -#: commands/tablecmds.c:17261 +#: commands/tablecmds.c:17269 #, c-format msgid "cannot use \"list\" partition strategy with more than one column" msgstr "стратегія секціонування \"по списку\" не може використовувати декілька стовпців" -#: commands/tablecmds.c:17327 +#: commands/tablecmds.c:17335 #, c-format msgid "column \"%s\" named in partition key does not exist" msgstr "стовпець \"%s\", згаданий в ключі секціонування, не існує" -#: commands/tablecmds.c:17335 +#: commands/tablecmds.c:17343 #, c-format msgid "cannot use system column \"%s\" in partition key" msgstr "системний стовпець \"%s\" не можна використати в ключі секціонування" -#: commands/tablecmds.c:17346 commands/tablecmds.c:17460 +#: commands/tablecmds.c:17354 commands/tablecmds.c:17444 #, c-format msgid "cannot use generated column in partition key" msgstr "використати згенерований стовпець в ключі секції, не можна" -#: commands/tablecmds.c:17347 commands/tablecmds.c:17461 commands/trigger.c:668 +#: commands/tablecmds.c:17355 commands/tablecmds.c:17445 commands/trigger.c:668 #: rewrite/rewriteHandler.c:929 rewrite/rewriteHandler.c:964 #, c-format msgid "Column \"%s\" is a generated column." msgstr "Стовпець \"%s\" є згенерованим стовпцем." -#: commands/tablecmds.c:17423 -#, c-format -msgid "functions in partition key expression must be marked IMMUTABLE" -msgstr "функції у виразі ключа секціонування повинні бути позначені як IMMUTABLE" - -#: commands/tablecmds.c:17443 +#: commands/tablecmds.c:17427 #, c-format msgid "partition key expressions cannot contain system column references" msgstr "вирази ключа секціонування не можуть містити посилання на системний стовпець" -#: commands/tablecmds.c:17473 +#: commands/tablecmds.c:17474 +#, c-format +msgid "functions in partition key expression must be marked IMMUTABLE" +msgstr "функції у виразі ключа секціонування повинні бути позначені як IMMUTABLE" + +#: commands/tablecmds.c:17483 #, c-format msgid "cannot use constant expression as partition key" msgstr "не можна використати константий вираз як ключ секціонування" -#: commands/tablecmds.c:17494 +#: commands/tablecmds.c:17504 #, c-format msgid "could not determine which collation to use for partition expression" msgstr "не вдалося визначити, яке правило сортування використати для виразу секціонування" -#: commands/tablecmds.c:17529 +#: commands/tablecmds.c:17539 #, 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:17535 +#: commands/tablecmds.c:17545 #, 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:17786 +#: commands/tablecmds.c:17796 #, c-format msgid "\"%s\" is already a partition" msgstr "\"%s\" вже є секцією" -#: commands/tablecmds.c:17792 +#: commands/tablecmds.c:17802 #, c-format msgid "cannot attach a typed table as partition" msgstr "неможливо підключити типізовану таблицю в якості секції" -#: commands/tablecmds.c:17808 +#: commands/tablecmds.c:17818 #, c-format msgid "cannot attach inheritance child as partition" msgstr "неможливо підключити нащадка успадкування в якості секції" -#: commands/tablecmds.c:17822 +#: commands/tablecmds.c:17832 #, c-format msgid "cannot attach inheritance parent as partition" msgstr "неможливо підключити предка успадкування в якості секції" -#: commands/tablecmds.c:17856 +#: commands/tablecmds.c:17866 #, c-format msgid "cannot attach a temporary relation as partition of permanent relation \"%s\"" msgstr "неможливо підкючити тимчасове відношення в якості секції постійного відношення \"%s\"" -#: commands/tablecmds.c:17864 +#: commands/tablecmds.c:17874 #, c-format msgid "cannot attach a permanent relation as partition of temporary relation \"%s\"" msgstr "неможливо підключити постійне відношення в якості секції тимчасового відношення \"%s\"" -#: commands/tablecmds.c:17872 +#: commands/tablecmds.c:17882 #, c-format msgid "cannot attach as partition of temporary relation of another session" msgstr "неможливо підключити секцію до тимчасового відношення в іншому сеансі" -#: commands/tablecmds.c:17879 +#: commands/tablecmds.c:17889 #, c-format msgid "cannot attach temporary relation of another session as partition" msgstr "неможливо підключити тимчасове відношення з іншого сеансу в якості секції" -#: commands/tablecmds.c:17899 +#: commands/tablecmds.c:17909 #, c-format msgid "table \"%s\" contains column \"%s\" not found in parent \"%s\"" msgstr "таблиця \"%s\" містить стовпець \"%s\", відсутній в батьківській \"%s\"" -#: commands/tablecmds.c:17902 +#: commands/tablecmds.c:17912 #, c-format msgid "The new partition may contain only the columns present in parent." msgstr "Нова секція може містити лише стовпці, що є у батьківській таблиці." -#: commands/tablecmds.c:17914 +#: commands/tablecmds.c:17924 #, c-format msgid "trigger \"%s\" prevents table \"%s\" from becoming a partition" msgstr "тригер \"%s\" не дозволяє зробити таблицю \"%s\" секцією" -#: commands/tablecmds.c:17916 +#: commands/tablecmds.c:17926 #, c-format msgid "ROW triggers with transition tables are not supported on partitions." msgstr "Тригери ROW з перехідними таблицями не підтримуються для секцій." -#: commands/tablecmds.c:18095 +#: commands/tablecmds.c:18105 #, c-format msgid "cannot attach foreign table \"%s\" as partition of partitioned table \"%s\"" msgstr "не можна підключити зовнішню таблицю \"%s\" в якості секції секціонованої таблиці \"%s\"" -#: commands/tablecmds.c:18098 +#: commands/tablecmds.c:18108 #, c-format msgid "Partitioned table \"%s\" contains unique indexes." msgstr "Секціонована таблиця \"%s\" містить унікальні індекси." -#: commands/tablecmds.c:18413 +#: commands/tablecmds.c:18423 #, c-format msgid "cannot detach partitions concurrently when a default partition exists" msgstr "не можна одночасно відключити розділи, коли існує розділ за замовчуванням" -#: commands/tablecmds.c:18522 +#: commands/tablecmds.c:18532 #, c-format msgid "partitioned table \"%s\" was removed concurrently" msgstr "секціоновану таблицю \"%s\" було видалено одночасно" -#: commands/tablecmds.c:18528 +#: commands/tablecmds.c:18538 #, c-format msgid "partition \"%s\" was removed concurrently" msgstr "розділ \"%s\" було видалено паралельно" -#: commands/tablecmds.c:19043 commands/tablecmds.c:19063 -#: commands/tablecmds.c:19083 commands/tablecmds.c:19102 -#: commands/tablecmds.c:19144 +#: commands/tablecmds.c:19053 commands/tablecmds.c:19073 +#: commands/tablecmds.c:19093 commands/tablecmds.c:19112 +#: commands/tablecmds.c:19154 #, c-format msgid "cannot attach index \"%s\" as a partition of index \"%s\"" msgstr "неможливо підключити індекс \"%s\" в якості секції індексу \"%s\"" -#: commands/tablecmds.c:19046 +#: commands/tablecmds.c:19056 #, c-format msgid "Index \"%s\" is already attached to another index." msgstr "Індекс \"%s\" вже підключений до іншого індексу." -#: commands/tablecmds.c:19066 +#: commands/tablecmds.c:19076 #, c-format msgid "Index \"%s\" is not an index on any partition of table \"%s\"." msgstr "Індекс \"%s\" не є індексом жодної секції таблиці \"%s\"." -#: commands/tablecmds.c:19086 +#: commands/tablecmds.c:19096 #, c-format msgid "The index definitions do not match." msgstr "Визначення індексів не співпадають." -#: commands/tablecmds.c:19105 +#: commands/tablecmds.c:19115 #, 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:19147 +#: commands/tablecmds.c:19157 #, c-format msgid "Another index is already attached for partition \"%s\"." msgstr "До секції \"%s\" вже підключений інший індекс." -#: commands/tablecmds.c:19384 +#: commands/tablecmds.c:19394 #, c-format msgid "column data type %s does not support compression" msgstr "тип даних стовпця %s не підтримує стискання" -#: commands/tablecmds.c:19391 +#: commands/tablecmds.c:19401 #, c-format msgid "invalid compression method \"%s\"" msgstr "неприпустимий метод стискання \"%s\"" @@ -11658,7 +11643,7 @@ msgstr "кортеж, який повинен бути оновленим, вж #: commands/trigger.c:3424 executor/nodeModifyTable.c:1510 #: executor/nodeModifyTable.c:1584 executor/nodeModifyTable.c:2345 -#: executor/nodeModifyTable.c:2428 executor/nodeModifyTable.c:3059 +#: executor/nodeModifyTable.c:2428 executor/nodeModifyTable.c:3075 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Можливо, для поширення змін в інші рядки слід використати тригер AFTER замість тригера BEFORE." @@ -11673,7 +11658,7 @@ msgstr "не вдалося серіалізувати доступ через #: commands/trigger.c:3473 executor/nodeModifyTable.c:1616 #: executor/nodeModifyTable.c:2445 executor/nodeModifyTable.c:2594 -#: executor/nodeModifyTable.c:2947 +#: executor/nodeModifyTable.c:2963 #, c-format msgid "could not serialize access due to concurrent delete" msgstr "не вдалося серіалізувати доступ через паралельне видалення" @@ -12501,7 +12486,7 @@ msgstr[1] "запущено %d паралельних виконавців оч msgstr[2] "запущено %d паралельних виконавців очистки для очищення індексу (заплановано: %d)" msgstr[3] "запущено %d паралельних виконавців очистки для очищення індексу (заплановано: %d)" -#: commands/variable.c:165 utils/misc/guc.c:12100 utils/misc/guc.c:12178 +#: commands/variable.c:165 utils/misc/guc.c:12108 utils/misc/guc.c:12186 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "Нерозпізнане ключове слово: \"%s\"." @@ -12727,7 +12712,7 @@ msgstr "Запит надає значення для видаленого ст 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:826 +#: executor/execExpr.c:1098 parser/parse_agg.c:837 #, c-format msgid "window function calls cannot be nested" msgstr "виклики віконних функцій не можуть бути вкладеними" @@ -12807,10 +12792,10 @@ msgstr "не можна об'єднати несумісні масиви" msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "Масив з типом елементів %s не може бути включений в конструкцію ARRAY з типом елементів %s." -#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:263 -#: utils/adt/arrayfuncs.c:563 utils/adt/arrayfuncs.c:1305 -#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5370 -#: utils/adt/arrayfuncs.c:5887 utils/adt/arraysubs.c:150 +#: executor/execExprInterp.c:2779 utils/adt/arrayfuncs.c:264 +#: utils/adt/arrayfuncs.c:564 utils/adt/arrayfuncs.c:1306 +#: utils/adt/arrayfuncs.c:3422 utils/adt/arrayfuncs.c:5419 +#: utils/adt/arrayfuncs.c:5936 utils/adt/arraysubs.c:150 #: utils/adt/arraysubs.c:488 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" @@ -12822,11 +12807,14 @@ msgid "multidimensional arrays must have array expressions with matching dimensi msgstr "для багатовимірних масивів повинні задаватись вирази з відповідними вимірами" #: executor/execExprInterp.c:2811 utils/adt/array_expanded.c:274 -#: utils/adt/arrayfuncs.c:936 utils/adt/arrayfuncs.c:1544 -#: utils/adt/arrayfuncs.c:3261 utils/adt/arrayfuncs.c:3403 -#: utils/adt/arrayfuncs.c:5979 utils/adt/arrayfuncs.c:6320 -#: utils/adt/arrayutils.c:94 utils/adt/arrayutils.c:103 -#: utils/adt/arrayutils.c:110 +#: utils/adt/arrayfuncs.c:937 utils/adt/arrayfuncs.c:1545 +#: utils/adt/arrayfuncs.c:2353 utils/adt/arrayfuncs.c:2368 +#: utils/adt/arrayfuncs.c:2630 utils/adt/arrayfuncs.c:2646 +#: utils/adt/arrayfuncs.c:2954 utils/adt/arrayfuncs.c:2969 +#: utils/adt/arrayfuncs.c:3310 utils/adt/arrayfuncs.c:3452 +#: utils/adt/arrayfuncs.c:6028 utils/adt/arrayfuncs.c:6369 +#: utils/adt/arrayutils.c:88 utils/adt/arrayutils.c:97 +#: utils/adt/arrayutils.c:104 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "розмір масиву перевищує максимальний допустимий розмір (%d)" @@ -13095,8 +13083,8 @@ msgstr "паралельне видалення, триває повторна #: executor/execReplication.c:276 parser/parse_cte.c:308 #: parser/parse_oper.c:233 utils/adt/array_userfuncs.c:724 -#: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3653 -#: utils/adt/arrayfuncs.c:4208 utils/adt/arrayfuncs.c:6200 +#: utils/adt/array_userfuncs.c:867 utils/adt/arrayfuncs.c:3702 +#: utils/adt/arrayfuncs.c:4257 utils/adt/arrayfuncs.c:6249 #: utils/adt/rowtypes.c:1203 #, c-format msgid "could not identify an equality operator for type %s" @@ -13291,7 +13279,7 @@ msgstr "для SQL функцій тип повернення %s не підтр msgid "aggregate %u needs to have compatible input type and transition type" msgstr "агрегатна функція %u повинна мати сумісні тип введення і тип переходу" -#: executor/nodeAgg.c:3952 parser/parse_agg.c:668 parser/parse_agg.c:696 +#: executor/nodeAgg.c:3952 parser/parse_agg.c:679 parser/parse_agg.c:707 #, c-format msgid "aggregate function calls cannot be nested" msgstr "виклики агрегатних функцій не можуть бути вкладеними" @@ -13372,7 +13360,7 @@ msgid "Consider defining the foreign key on table \"%s\"." msgstr "Розгляньте визначення зовнішнього ключа для таблиці \"%s\"." #. translator: %s is a SQL command name -#: executor/nodeModifyTable.c:2548 executor/nodeModifyTable.c:2936 +#: executor/nodeModifyTable.c:2548 executor/nodeModifyTable.c:2952 #, c-format msgid "%s command cannot affect row a second time" msgstr "команда %s не може вплинути на рядок вдруге" @@ -13382,17 +13370,17 @@ msgstr "команда %s не може вплинути на рядок вдр msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." msgstr "Переконайтеся, що немає рядків для вставки з тією ж командою з дуплікованими обмежувальними значеннями." -#: executor/nodeModifyTable.c:2938 +#: executor/nodeModifyTable.c:2954 #, c-format msgid "Ensure that not more than one source row matches any one target row." msgstr "Переконайтесь, що не більше ніж один вихідний рядок відповідає будь-якому одному цільовому рядку." -#: executor/nodeModifyTable.c:3019 +#: executor/nodeModifyTable.c:3035 #, c-format msgid "tuple to be deleted was already moved to another partition due to concurrent update" msgstr "кортеж, який підлягає видаленню, вже переміщено в іншу секцію в результаті паралельного оновлення" -#: executor/nodeModifyTable.c:3058 +#: executor/nodeModifyTable.c:3074 #, c-format msgid "tuple to be updated or deleted was already modified by an operation triggered by the current command" msgstr "кортеж, який підлягає оновленню або видаленню, вже змінено операцією, викликаною поточною командою" @@ -13514,7 +13502,7 @@ msgstr "неможливо відкрити запит %s як курсор" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE не підтримується" -#: executor/spi.c:1717 parser/analyze.c:2861 +#: executor/spi.c:1717 parser/analyze.c:2899 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Курсори з прокручуванням повинні бути READ ONLY." @@ -14396,16 +14384,16 @@ 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:204 +#: libpq/be-secure-gssapi.c:201 msgid "GSSAPI wrap error" msgstr "помилка при згортанні GSSAPI" -#: libpq/be-secure-gssapi.c:211 +#: libpq/be-secure-gssapi.c:208 #, c-format msgid "outgoing GSSAPI message would not use confidentiality" msgstr "вихідне повідомлення GSSAPI не буде використовувати конфіденційність" -#: libpq/be-secure-gssapi.c:218 libpq/be-secure-gssapi.c:622 +#: libpq/be-secure-gssapi.c:215 libpq/be-secure-gssapi.c:622 #, c-format msgid "server tried to send oversize GSSAPI packet (%zu > %zu)" msgstr "сервер намагався надіслати переповнений пакет GSSAPI (%zu > %zu)" @@ -14528,112 +14516,112 @@ msgstr "не вдалося ініціалізувати SSL-підключен msgid "could not set SSL socket: %s" msgstr "не вдалося встановити SSL-сокет: %s" -#: libpq/be-secure-openssl.c:499 +#: libpq/be-secure-openssl.c:500 #, c-format msgid "could not accept SSL connection: %m" msgstr "не вдалося прийняти SSL-підключення: %m" -#: libpq/be-secure-openssl.c:503 libpq/be-secure-openssl.c:556 +#: libpq/be-secure-openssl.c:504 libpq/be-secure-openssl.c:557 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "не вдалося прийняти SSL-підключення: виявлений EOF" -#: libpq/be-secure-openssl.c:542 +#: libpq/be-secure-openssl.c:543 #, c-format msgid "could not accept SSL connection: %s" msgstr "не вдалося отримати підключення SSL: %s" -#: libpq/be-secure-openssl.c:545 +#: libpq/be-secure-openssl.c:546 #, c-format msgid "This may indicate that the client does not support any SSL protocol version between %s and %s." msgstr "Це може вказувати, що клієнт не підтримує жодної версії протоколу SSL між %s і %s." -#: libpq/be-secure-openssl.c:561 libpq/be-secure-openssl.c:741 -#: libpq/be-secure-openssl.c:805 +#: libpq/be-secure-openssl.c:562 libpq/be-secure-openssl.c:751 +#: libpq/be-secure-openssl.c:821 #, c-format msgid "unrecognized SSL error code: %d" msgstr "нерозпізнаний код помилки SSL: %d" -#: libpq/be-secure-openssl.c:607 +#: libpq/be-secure-openssl.c:608 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Спільне ім'я SSL-сертифікату містить нульовий байт" -#: libpq/be-secure-openssl.c:647 +#: libpq/be-secure-openssl.c:654 #, c-format msgid "SSL certificate's distinguished name contains embedded null" msgstr "Унікальна назва сертифікату SSL містить вбудоване null-значення" -#: libpq/be-secure-openssl.c:730 libpq/be-secure-openssl.c:789 +#: libpq/be-secure-openssl.c:740 libpq/be-secure-openssl.c:805 #, c-format msgid "SSL error: %s" msgstr "Помилка SSL: %s" -#: libpq/be-secure-openssl.c:971 +#: libpq/be-secure-openssl.c:982 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "не вдалося відкрити файл параметрів DH \"%s\": %m" -#: libpq/be-secure-openssl.c:983 +#: libpq/be-secure-openssl.c:994 #, c-format msgid "could not load DH parameters file: %s" msgstr "не вдалося завантажити файл параметрів DH: %s" -#: libpq/be-secure-openssl.c:993 +#: libpq/be-secure-openssl.c:1004 #, c-format msgid "invalid DH parameters: %s" msgstr "неприпустимі параметри DH: %s" -#: libpq/be-secure-openssl.c:1002 +#: libpq/be-secure-openssl.c:1013 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "неприпустимі параметри DH: р - не штрих" -#: libpq/be-secure-openssl.c:1011 +#: libpq/be-secure-openssl.c:1022 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "неприпустимі параметри DH: немає придатного генератора або безпечного штриха" -#: libpq/be-secure-openssl.c:1172 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "DH: could not load DH parameters" msgstr "DH: не вдалося завантажити параметри DH" -#: libpq/be-secure-openssl.c:1180 +#: libpq/be-secure-openssl.c:1191 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH: не вдалося встановити параметри DH: %s" -#: libpq/be-secure-openssl.c:1207 +#: libpq/be-secure-openssl.c:1218 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: нерозпізнане ім'я кривої: %s" -#: libpq/be-secure-openssl.c:1216 +#: libpq/be-secure-openssl.c:1227 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: не вдалося створити ключ" -#: libpq/be-secure-openssl.c:1244 +#: libpq/be-secure-openssl.c:1255 msgid "no SSL error reported" msgstr "немає повідомлення про помилку SSL" -#: libpq/be-secure-openssl.c:1248 +#: libpq/be-secure-openssl.c:1259 #, c-format msgid "SSL error code %lu" msgstr "Код помилки SSL %lu" -#: libpq/be-secure-openssl.c:1407 +#: libpq/be-secure-openssl.c:1418 #, c-format msgid "could not create BIO" msgstr "неможливо створити BIO" -#: libpq/be-secure-openssl.c:1417 +#: libpq/be-secure-openssl.c:1428 #, c-format msgid "could not get NID for ASN1_OBJECT object" msgstr "не вдалося отримати NID для об'єкту ASN1_OBJECT" -#: libpq/be-secure-openssl.c:1425 +#: libpq/be-secure-openssl.c:1436 #, c-format msgid "could not convert NID %d to an ASN1_OBJECT structure" msgstr "не вдалося перетворити NID %d в структуру ASN1_OBJECT" @@ -15156,9 +15144,9 @@ msgid "could not accept new connection: %m" msgstr "не вдалось прийняти нове підключення: %m" #: libpq/pqcomm.c:766 libpq/pqcomm.c:775 libpq/pqcomm.c:807 libpq/pqcomm.c:817 -#: libpq/pqcomm.c:1642 libpq/pqcomm.c:1687 libpq/pqcomm.c:1727 -#: libpq/pqcomm.c:1771 libpq/pqcomm.c:1810 libpq/pqcomm.c:1849 -#: libpq/pqcomm.c:1885 libpq/pqcomm.c:1924 +#: libpq/pqcomm.c:1652 libpq/pqcomm.c:1697 libpq/pqcomm.c:1737 +#: libpq/pqcomm.c:1781 libpq/pqcomm.c:1820 libpq/pqcomm.c:1859 +#: libpq/pqcomm.c:1895 libpq/pqcomm.c:1934 #, c-format msgid "%s(%s) failed: %m" msgstr "%s(%s) помилка: %m" @@ -15168,47 +15156,47 @@ msgstr "%s(%s) помилка: %m" msgid "there is no client connection" msgstr "немає клієнтського підключення" -#: libpq/pqcomm.c:972 libpq/pqcomm.c:1068 +#: libpq/pqcomm.c:977 libpq/pqcomm.c:1078 #, c-format msgid "could not receive data from client: %m" msgstr "не вдалось отримати дані від клієнта: %m" -#: libpq/pqcomm.c:1173 tcop/postgres.c:4373 +#: libpq/pqcomm.c:1183 tcop/postgres.c:4373 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "завершення підключення через втрату синхронізації протоколу" -#: libpq/pqcomm.c:1239 +#: libpq/pqcomm.c:1249 #, c-format msgid "unexpected EOF within message length word" msgstr "неочікуваний EOF в слові довжини повідомлення" -#: libpq/pqcomm.c:1249 +#: libpq/pqcomm.c:1259 #, c-format msgid "invalid message length" msgstr "неприпустима довжина повідомлення" -#: libpq/pqcomm.c:1271 libpq/pqcomm.c:1284 +#: libpq/pqcomm.c:1281 libpq/pqcomm.c:1294 #, c-format msgid "incomplete message from client" msgstr "неповне повідомлення від клієнта" -#: libpq/pqcomm.c:1395 +#: libpq/pqcomm.c:1405 #, c-format msgid "could not send data to client: %m" msgstr "не вдалось надіслати дані клієнту: %m" -#: libpq/pqcomm.c:1610 +#: libpq/pqcomm.c:1620 #, c-format msgid "%s(%s) failed: error code %d" msgstr "%s(%s) помилка: код помилки %d" -#: libpq/pqcomm.c:1699 +#: libpq/pqcomm.c:1709 #, c-format msgid "setting the keepalive idle time is not supported" msgstr "встановлення часу простою keepalive не підтримується" -#: libpq/pqcomm.c:1783 libpq/pqcomm.c:1858 libpq/pqcomm.c:1933 +#: libpq/pqcomm.c:1793 libpq/pqcomm.c:1868 libpq/pqcomm.c:1943 #, c-format msgid "%s(%s) not supported" msgstr "%s(%s) не підтримується" @@ -15219,7 +15207,7 @@ msgid "no data left in message" msgstr "у повідомлення не залишилось даних" #: libpq/pqformat.c:517 libpq/pqformat.c:535 libpq/pqformat.c:556 -#: utils/adt/arrayfuncs.c:1482 utils/adt/rowtypes.c:588 +#: utils/adt/arrayfuncs.c:1483 utils/adt/rowtypes.c:588 #, c-format msgid "insufficient data left in message" msgstr "недостатьно даних залишилось в повідомленні" @@ -15543,44 +15531,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:1344 parser/analyze.c:1714 parser/analyze.c:1970 -#: parser/analyze.c:3152 +#: optimizer/plan/planner.c:1344 parser/analyze.c:1752 parser/analyze.c:2008 +#: parser/analyze.c:3190 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s несумісно з UNION/INTERSECT/EXCEPT" -#: optimizer/plan/planner.c:2051 optimizer/plan/planner.c:3707 +#: optimizer/plan/planner.c:2045 optimizer/plan/planner.c:3702 #, c-format msgid "could not implement GROUP BY" msgstr "не вдалося реалізувати GROUP BY" -#: optimizer/plan/planner.c:2052 optimizer/plan/planner.c:3708 -#: optimizer/plan/planner.c:4351 optimizer/prep/prepunion.c:1046 +#: optimizer/plan/planner.c:2046 optimizer/plan/planner.c:3703 +#: optimizer/plan/planner.c:4346 optimizer/prep/prepunion.c:1046 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "Деякі типи даних підтримують лише хешування, в той час як інші підтримують тільки сортування." -#: optimizer/plan/planner.c:4350 +#: optimizer/plan/planner.c:4345 #, c-format msgid "could not implement DISTINCT" msgstr "не вдалося реалізувати DISTINCT" -#: optimizer/plan/planner.c:5471 +#: optimizer/plan/planner.c:5466 #, c-format msgid "could not implement window PARTITION BY" msgstr "не вдалося реалізувати PARTITION BY для вікна" -#: optimizer/plan/planner.c:5472 +#: optimizer/plan/planner.c:5467 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "Стовпці, що розділяють вікна, повинні мати типи даних з можливістю сортування." -#: optimizer/plan/planner.c:5476 +#: optimizer/plan/planner.c:5471 #, c-format msgid "could not implement window ORDER BY" msgstr "не вдалося реалізувати ORDER BY для вікна" -#: optimizer/plan/planner.c:5477 +#: optimizer/plan/planner.c:5472 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "Стовпці, що впорядковують вікна, повинні мати типи даних з можливістю сортування." @@ -15601,7 +15589,7 @@ msgstr "Усі стовпці повинні мати типи даних з м msgid "could not implement %s" msgstr "не вдалося реалізувати %s" -#: optimizer/util/clauses.c:4777 +#: optimizer/util/clauses.c:4843 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "Впроваджена в код SQL-функція \"%s\"" @@ -15636,73 +15624,73 @@ msgstr "ON CONFLICT DO UPDATE не підтримується з обмежен msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" msgstr "немає унікального обмеження або обмеження-виключення відповідного специфікації ON CONFLICT" -#: parser/analyze.c:780 parser/analyze.c:1494 +#: parser/analyze.c:818 parser/analyze.c:1532 #, c-format msgid "VALUES lists must all be the same length" msgstr "Списки VALUES повинні мати однакову довжину" -#: parser/analyze.c:981 +#: parser/analyze.c:1019 #, c-format msgid "INSERT has more expressions than target columns" msgstr "INSERT містить більше виразів, ніж цільових стовпців" -#: parser/analyze.c:999 +#: parser/analyze.c:1037 #, c-format msgid "INSERT has more target columns than expressions" msgstr "INSERT містить більше цільових стовпців, ніж виразів" -#: parser/analyze.c:1003 +#: parser/analyze.c:1041 #, c-format msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "Джерелом даних є вираз рядка, який містить стільки ж стовпців, скільки потребується для INSERT. Ви випадково використовували додаткові дужки?" -#: parser/analyze.c:1302 parser/analyze.c:1687 +#: parser/analyze.c:1340 parser/analyze.c:1725 #, c-format 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:1617 parser/analyze.c:3363 +#: parser/analyze.c:1655 parser/analyze.c:3401 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s не можна застосовувати до VALUES" -#: parser/analyze.c:1853 +#: parser/analyze.c:1891 #, c-format msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" msgstr "неприпустиме речення UNION/INTERSECT/EXCEPT ORDER BY" -#: parser/analyze.c:1854 +#: parser/analyze.c:1892 #, c-format msgid "Only result column names can be used, not expressions or functions." msgstr "Дозволено використання тільки імен стовпців, але не виразів або функцій." -#: parser/analyze.c:1855 +#: parser/analyze.c:1893 #, c-format msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause." msgstr "Додайте вираз/функція до кожного SELECT, або перемістіть UNION у речення FROM." -#: parser/analyze.c:1960 +#: parser/analyze.c:1998 #, c-format msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" msgstr "INTO дозволяється додати лише до першого SELECT в UNION/INTERSECT/EXCEPT" -#: parser/analyze.c:2032 +#: parser/analyze.c:2070 #, c-format msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" msgstr "Учасник інструкції UNION/INTERSECT/EXCEPT не може посилатись на інші відносини на тому ж рівні" -#: parser/analyze.c:2119 +#: parser/analyze.c:2157 #, c-format msgid "each %s query must have the same number of columns" msgstr "кожен %s запит повинен мати однакову кількість стовпців" -#: parser/analyze.c:2523 +#: parser/analyze.c:2561 #, c-format msgid "RETURNING must have at least one column" msgstr "В RETURNING повинен бути мінімум один стовпець" -#: parser/analyze.c:2626 +#: parser/analyze.c:2664 #, c-format msgid "assignment source returned %d column" msgid_plural "assignment source returned %d columns" @@ -15711,473 +15699,473 @@ msgstr[1] "джерело призначення повернуло %d стов msgstr[2] "джерело призначення повернуло %d стовпців" msgstr[3] "джерело призначення повернуло %d стовпців" -#: parser/analyze.c:2687 +#: parser/analyze.c:2725 #, c-format 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:2811 parser/analyze.c:2819 +#: parser/analyze.c:2849 parser/analyze.c:2857 #, c-format msgid "cannot specify both %s and %s" msgstr "не можна вказати як %s, так і %s" -#: parser/analyze.c:2839 +#: parser/analyze.c:2877 #, 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:2847 +#: parser/analyze.c:2885 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s не підтримується" -#: parser/analyze.c:2850 +#: parser/analyze.c:2888 #, 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:2858 +#: parser/analyze.c:2896 #, 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:2869 +#: parser/analyze.c:2907 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not valid" msgstr "DECLARE INSENSITIVE CURSOR ... %s не є припустимим" -#: parser/analyze.c:2872 +#: parser/analyze.c:2910 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "Нечутливі курсори повинні бути READ ONLY." -#: parser/analyze.c:2938 +#: parser/analyze.c:2976 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "в матеріалізованих поданнях не повинні використовуватись оператори, які змінюють дані в WITH" -#: parser/analyze.c:2948 +#: parser/analyze.c:2986 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "в матеріалізованих поданнях не повинні використовуватись тимчасові таблиці або подання" -#: parser/analyze.c:2958 +#: parser/analyze.c:2996 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "визначати матеріалізовані подання з зв'язаними параметрами не можна" -#: parser/analyze.c:2970 +#: parser/analyze.c:3008 #, c-format msgid "materialized views cannot be unlogged" msgstr "матеріалізовані подання не можуть бути нежурнальованими" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:3159 +#: parser/analyze.c:3197 #, 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:3166 +#: parser/analyze.c:3204 #, 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:3173 +#: parser/analyze.c:3211 #, 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:3180 +#: parser/analyze.c:3218 #, 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:3187 +#: parser/analyze.c:3225 #, 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:3194 +#: parser/analyze.c:3232 #, 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:3286 +#: parser/analyze.c:3324 #, 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:3336 +#: parser/analyze.c:3374 #, 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:3345 +#: parser/analyze.c:3383 #, 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:3354 +#: parser/analyze.c:3392 #, 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:3372 +#: parser/analyze.c:3410 #, 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:3381 +#: parser/analyze.c:3419 #, 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:3401 +#: parser/analyze.c:3439 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "відношення \"%s\" в реченні %s не знайдено в реченні FROM" -#: parser/parse_agg.c:220 parser/parse_oper.c:227 +#: parser/parse_agg.c:208 parser/parse_oper.c:227 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "для типу %s не вдалося визначити оператора сортування" -#: parser/parse_agg.c:222 +#: parser/parse_agg.c:210 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Агрегатним функціям з DISTINCT необхідно сортувати їх вхідні дані." -#: parser/parse_agg.c:257 +#: parser/parse_agg.c:268 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING повинно містити меньше, ніж 32 аргумента" -#: parser/parse_agg.c:360 +#: parser/parse_agg.c:371 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "агрегатні функції не дозволяються в умовах JOIN" -#: parser/parse_agg.c:362 +#: parser/parse_agg.c:373 msgid "grouping operations are not allowed in JOIN conditions" msgstr "операції групування не дозволяються в умовах JOIN" -#: parser/parse_agg.c:374 +#: parser/parse_agg.c:385 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "агрегатні функції не можна застосовувати в реченні FROM їх рівня запиту" -#: parser/parse_agg.c:376 +#: parser/parse_agg.c:387 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "операції групування не можна застосовувати в реченні FROM їх рівня запиту" -#: parser/parse_agg.c:381 +#: parser/parse_agg.c:392 msgid "aggregate functions are not allowed in functions in FROM" msgstr "агрегатні функції не можна застосовувати у функціях у FROM" -#: parser/parse_agg.c:383 +#: parser/parse_agg.c:394 msgid "grouping operations are not allowed in functions in FROM" msgstr "операції групування не можна застосовувати у функціях у FROM" -#: parser/parse_agg.c:391 +#: parser/parse_agg.c:402 msgid "aggregate functions are not allowed in policy expressions" msgstr "агрегатні функції не можна застосовувати у виразах політики" -#: parser/parse_agg.c:393 +#: parser/parse_agg.c:404 msgid "grouping operations are not allowed in policy expressions" msgstr "операції групування не можна застосовувати у виразах політики" -#: parser/parse_agg.c:410 +#: parser/parse_agg.c:421 msgid "aggregate functions are not allowed in window RANGE" msgstr "агрегатні функції не можна застосовувати у вікні RANGE " -#: parser/parse_agg.c:412 +#: parser/parse_agg.c:423 msgid "grouping operations are not allowed in window RANGE" msgstr "операції групування не можна застосовувати у вікні RANGE" -#: parser/parse_agg.c:417 +#: parser/parse_agg.c:428 msgid "aggregate functions are not allowed in window ROWS" msgstr "агрегатні функції не можна застосовувати у вікні ROWS" -#: parser/parse_agg.c:419 +#: parser/parse_agg.c:430 msgid "grouping operations are not allowed in window ROWS" msgstr "операції групування не можна застосовувати у вікні ROWS" -#: parser/parse_agg.c:424 +#: parser/parse_agg.c:435 msgid "aggregate functions are not allowed in window GROUPS" msgstr "агрегатні функції не можна застосовувати у вікні GROUPS" -#: parser/parse_agg.c:426 +#: parser/parse_agg.c:437 msgid "grouping operations are not allowed in window GROUPS" msgstr "операції групування не можна застосовувати у вікні GROUPS" -#: parser/parse_agg.c:439 +#: parser/parse_agg.c:450 msgid "aggregate functions are not allowed in MERGE WHEN conditions" msgstr "агрегатні функції не можна застосовувати в умовах MERGE WHEN" -#: parser/parse_agg.c:441 +#: parser/parse_agg.c:452 msgid "grouping operations are not allowed in MERGE WHEN conditions" msgstr "операції групування не можна застосовувати в умовах MERGE WHEN" -#: parser/parse_agg.c:467 +#: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in check constraints" msgstr "агрегатні функції не можна застосовувати в перевірці обмежень" -#: parser/parse_agg.c:469 +#: parser/parse_agg.c:480 msgid "grouping operations are not allowed in check constraints" msgstr "операції групування не можна застосовувати в перевірці обмежень" -#: parser/parse_agg.c:476 +#: parser/parse_agg.c:487 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "агрегатні функції не можна застосовувати у виразах DEFAULT" -#: parser/parse_agg.c:478 +#: parser/parse_agg.c:489 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "операції групування не можна застосовувати у виразах DEFAULT" -#: parser/parse_agg.c:483 +#: parser/parse_agg.c:494 msgid "aggregate functions are not allowed in index expressions" msgstr "агрегатні функції не можна застосовувати у виразах індексів" -#: parser/parse_agg.c:485 +#: parser/parse_agg.c:496 msgid "grouping operations are not allowed in index expressions" msgstr "операції групування не можна застосовувати у виразах індексів" -#: parser/parse_agg.c:490 +#: parser/parse_agg.c:501 msgid "aggregate functions are not allowed in index predicates" msgstr "агрегатні функції не можна застосовувати в предикатах індексів" -#: parser/parse_agg.c:492 +#: parser/parse_agg.c:503 msgid "grouping operations are not allowed in index predicates" msgstr "операції групування не можна застосовувати в предикатах індексів" -#: parser/parse_agg.c:497 +#: parser/parse_agg.c:508 msgid "aggregate functions are not allowed in statistics expressions" msgstr "агрегатні функції не можна застосовувати у виразах статистики" -#: parser/parse_agg.c:499 +#: parser/parse_agg.c:510 msgid "grouping operations are not allowed in statistics expressions" msgstr "операції групування не можна застосовувати у виразах статистики" -#: parser/parse_agg.c:504 +#: parser/parse_agg.c:515 msgid "aggregate functions are not allowed in transform expressions" msgstr "агрегатні функції не можна застосовувати у виразах перетворювання" -#: parser/parse_agg.c:506 +#: parser/parse_agg.c:517 msgid "grouping operations are not allowed in transform expressions" msgstr "операції групування не можна застосовувати у виразах перетворювання" -#: parser/parse_agg.c:511 +#: parser/parse_agg.c:522 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "агрегатні функції не можна застосовувати в параметрах EXECUTE" -#: parser/parse_agg.c:513 +#: parser/parse_agg.c:524 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "операції групування не можна застосовувати в параметрах EXECUTE" -#: parser/parse_agg.c:518 +#: parser/parse_agg.c:529 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "агрегатні функції не можна застосовувати в умовах для тригерів WHEN" -#: parser/parse_agg.c:520 +#: parser/parse_agg.c:531 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "операції групування не можна застосовувати в умовах для тригерів WHEN" -#: parser/parse_agg.c:525 +#: parser/parse_agg.c:536 msgid "aggregate functions are not allowed in partition bound" msgstr "агрегатні функції не можна застосовувати в границі секції" -#: parser/parse_agg.c:527 +#: parser/parse_agg.c:538 msgid "grouping operations are not allowed in partition bound" msgstr "операції групування не можна застосовувати в границі секції" -#: parser/parse_agg.c:532 +#: parser/parse_agg.c:543 msgid "aggregate functions are not allowed in partition key expressions" msgstr "агрегатні функції не можна застосовувати у виразах ключа секціонування" -#: parser/parse_agg.c:534 +#: parser/parse_agg.c:545 msgid "grouping operations are not allowed in partition key expressions" msgstr "операції групування не можна застосовувати у виразах ключа секціонування" -#: parser/parse_agg.c:540 +#: parser/parse_agg.c:551 msgid "aggregate functions are not allowed in column generation expressions" msgstr "агрегатні функції не можна застосовувати у виразах генерації стовпців" -#: parser/parse_agg.c:542 +#: parser/parse_agg.c:553 msgid "grouping operations are not allowed in column generation expressions" msgstr "операції групування не можна застосовувати у виразах генерації стовпців" -#: parser/parse_agg.c:548 +#: parser/parse_agg.c:559 msgid "aggregate functions are not allowed in CALL arguments" msgstr "агрегатні функції не можна застосовувати в аргументах CALL" -#: parser/parse_agg.c:550 +#: parser/parse_agg.c:561 msgid "grouping operations are not allowed in CALL arguments" msgstr "операції групування не можна застосовувати в аргументах CALL" -#: parser/parse_agg.c:556 +#: parser/parse_agg.c:567 msgid "aggregate functions are not allowed in COPY FROM WHERE conditions" msgstr "агрегатні функції не можна застосовувати в умовах COPY FROM WHERE" -#: parser/parse_agg.c:558 +#: parser/parse_agg.c:569 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:585 parser/parse_clause.c:1836 +#: parser/parse_agg.c:596 parser/parse_clause.c:1836 #, 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:588 +#: parser/parse_agg.c:599 #, c-format msgid "grouping operations are not allowed in %s" msgstr "операції групування не можна застосовувати в %s" -#: parser/parse_agg.c:689 +#: parser/parse_agg.c:700 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "агрегат зовнішнього рівня не може містити змінну нижчого рівня у своїх аргументах" -#: parser/parse_agg.c:767 +#: parser/parse_agg.c:778 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "виклики агрегатної функції не можуть містити викликів функції, що повертають множину" -#: parser/parse_agg.c:768 parser/parse_expr.c:1674 parser/parse_expr.c:2156 +#: parser/parse_agg.c:779 parser/parse_expr.c:1674 parser/parse_expr.c:2156 #: 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:773 +#: parser/parse_agg.c:784 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "виклики агрегатних функцій не можуть містити виклики віконних функцій" -#: parser/parse_agg.c:852 +#: parser/parse_agg.c:863 msgid "window functions are not allowed in JOIN conditions" msgstr "віконні функції не можна застосовувати в умовах JOIN" -#: parser/parse_agg.c:859 +#: parser/parse_agg.c:870 msgid "window functions are not allowed in functions in FROM" msgstr "віконні функції не можна застосовувати у функціях в FROM" -#: parser/parse_agg.c:865 +#: parser/parse_agg.c:876 msgid "window functions are not allowed in policy expressions" msgstr "віконні функції не можна застосовувати у виразах політики" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:889 msgid "window functions are not allowed in window definitions" msgstr "віконні функції не можна застосовувати у визначенні вікна" -#: parser/parse_agg.c:889 +#: parser/parse_agg.c:900 msgid "window functions are not allowed in MERGE WHEN conditions" msgstr "віконні функції не можна застосовувати в умовах MERGE WHEN" -#: parser/parse_agg.c:913 +#: parser/parse_agg.c:924 msgid "window functions are not allowed in check constraints" msgstr "віконні функції не можна застосовувати в перевірках обмежень" -#: parser/parse_agg.c:917 +#: parser/parse_agg.c:928 msgid "window functions are not allowed in DEFAULT expressions" msgstr "віконні функції не можна застосовувати у виразах DEFAULT" -#: parser/parse_agg.c:920 +#: parser/parse_agg.c:931 msgid "window functions are not allowed in index expressions" msgstr "віконні функції не можна застосовувати у виразах індексів" -#: parser/parse_agg.c:923 +#: parser/parse_agg.c:934 msgid "window functions are not allowed in statistics expressions" msgstr "віконні функції не можна застосовувати у виразах статистики" -#: parser/parse_agg.c:926 +#: parser/parse_agg.c:937 msgid "window functions are not allowed in index predicates" msgstr "віконні функції не можна застосовувати в предикатах індексів" -#: parser/parse_agg.c:929 +#: parser/parse_agg.c:940 msgid "window functions are not allowed in transform expressions" msgstr "віконні функції не можна застосовувати у виразах перетворювання" -#: parser/parse_agg.c:932 +#: parser/parse_agg.c:943 msgid "window functions are not allowed in EXECUTE parameters" msgstr "віконні функції не можна застосовувати в параметрах EXECUTE" -#: parser/parse_agg.c:935 +#: parser/parse_agg.c:946 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "віконні функції не можна застосовувати в умовах WHEN для тригерів" -#: parser/parse_agg.c:938 +#: parser/parse_agg.c:949 msgid "window functions are not allowed in partition bound" msgstr "віконні функції не можна застосовувати в границі секції" -#: parser/parse_agg.c:941 +#: parser/parse_agg.c:952 msgid "window functions are not allowed in partition key expressions" msgstr "віконні функції не можна застосовувати у виразах ключа секціонування" -#: parser/parse_agg.c:944 +#: parser/parse_agg.c:955 msgid "window functions are not allowed in CALL arguments" msgstr "віконні функції не можна застосовувати в аргументах CALL" -#: parser/parse_agg.c:947 +#: parser/parse_agg.c:958 msgid "window functions are not allowed in COPY FROM WHERE conditions" msgstr "віконні функції не можна застосовувати в умовах COPY FROM WHERE" -#: parser/parse_agg.c:950 +#: parser/parse_agg.c:961 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:973 parser/parse_clause.c:1845 +#: parser/parse_agg.c:984 parser/parse_clause.c:1845 #, c-format msgid "window functions are not allowed in %s" msgstr "віконні функції не можна застосовувати в %s" -#: parser/parse_agg.c:1007 parser/parse_clause.c:2678 +#: parser/parse_agg.c:1018 parser/parse_clause.c:2678 #, c-format msgid "window \"%s\" does not exist" msgstr "вікно \"%s\" не існує" -#: parser/parse_agg.c:1091 +#: parser/parse_agg.c:1102 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "забагато наборів групування (максимум 4096)" -#: parser/parse_agg.c:1231 +#: parser/parse_agg.c:1242 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "агрегатні функції не дозволені у рекурсивному терміні рекурсивного запиту" -#: parser/parse_agg.c:1424 +#: parser/parse_agg.c:1435 #, 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:1427 +#: parser/parse_agg.c:1438 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Прямі аргументи сортувального агрегату можуть використовувати лише згруповані стовпці." -#: parser/parse_agg.c:1432 +#: parser/parse_agg.c:1443 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "вкладений запит використовує не згруповані стовпці \"%s.%s\" з зовнішнього запиту" -#: parser/parse_agg.c:1596 +#: parser/parse_agg.c:1607 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "аргументами групування мають бути вирази групування пов'язаного рівня запиту" @@ -17679,8 +17667,8 @@ msgstr "неправильне посилання %%TYPE (занадто баг msgid "type reference %s converted to %s" msgstr "посилання на тип %s перетворене на тип %s" -#: parser/parse_type.c:278 parser/parse_type.c:807 utils/cache/typcache.c:390 -#: utils/cache/typcache.c:445 +#: parser/parse_type.c:278 parser/parse_type.c:807 utils/cache/typcache.c:395 +#: utils/cache/typcache.c:450 #, c-format msgid "type \"%s\" is only a shell" msgstr "тип \"%s\" є лише оболонкою" @@ -17811,11 +17799,6 @@ msgstr "у CREATE TABLE не можна використовувати існу msgid "index \"%s\" is already associated with a constraint" msgstr "індекс \"%s\" вже пов'язаний з обмеженням" -#: parser/parse_utilcmd.c:2287 -#, c-format -msgid "index \"%s\" is not valid" -msgstr "індекс \"%s\" не є припустимим" - #: parser/parse_utilcmd.c:2293 #, c-format msgid "\"%s\" is not a unique index" @@ -18195,12 +18178,12 @@ msgstr "величезні сторінки на цій плтаформі не msgid "huge pages not supported with the current shared_memory_type setting" msgstr "величезні сторінки не підтримуються з поточним параметром shared_memory_type" -#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1187 +#: port/pg_shmem.c:770 port/sysv_shmem.c:770 utils/init/miscinit.c:1195 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "раніше виділений блок спільної пам'яті (ключ %lu, ідентифікатор %lu) все ще використовується" -#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1189 +#: port/pg_shmem.c:773 port/sysv_shmem.c:773 utils/init/miscinit.c:1197 #, c-format msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "Припинити будь-які старі серверні процеси, пов'язані з каталогом даних \"%s\"." @@ -18550,92 +18533,92 @@ msgstr "%s: неприпустимі таблиці маркерів часу, msgid "could not create I/O completion port for child queue" msgstr "не вдалося створити завершений порт вводу-виводу для черги дітей" -#: postmaster/postmaster.c:1178 +#: postmaster/postmaster.c:1189 #, c-format msgid "ending log output to stderr" msgstr "завершення запису виводу Stderr" -#: postmaster/postmaster.c:1179 +#: postmaster/postmaster.c:1190 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "В майбутньому запис виведення буде записуватися в призначення \"%s\"." -#: postmaster/postmaster.c:1190 +#: postmaster/postmaster.c:1201 #, c-format msgid "starting %s" msgstr "початок %s" -#: postmaster/postmaster.c:1250 +#: postmaster/postmaster.c:1253 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "не вдалося створити сокет прослуховування для \"%s\"" -#: postmaster/postmaster.c:1256 +#: postmaster/postmaster.c:1259 #, c-format msgid "could not create any TCP/IP sockets" msgstr "не вдалося створити TCP/IP сокети" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1291 #, c-format msgid "DNSServiceRegister() failed: error code %ld" msgstr "Помилка DNSServiceRegister(): код помилки %ld" -#: postmaster/postmaster.c:1340 +#: postmaster/postmaster.c:1343 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "не вдалося створити Unix-domain сокет в каталозі \"%s\"" -#: postmaster/postmaster.c:1346 +#: postmaster/postmaster.c:1349 #, c-format msgid "could not create any Unix-domain sockets" msgstr "не вдалося створити Unix-domain сокети" -#: postmaster/postmaster.c:1358 +#: postmaster/postmaster.c:1361 #, c-format msgid "no socket created for listening" msgstr "не створено жодного сокету для прослуховування" -#: postmaster/postmaster.c:1389 +#: postmaster/postmaster.c:1392 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: не вдалося змінити дозволи зовнішнього PID файлу \"%s\": %s\n" -#: postmaster/postmaster.c:1393 +#: postmaster/postmaster.c:1396 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: не вдалося записати зовнішній PID файл \"%s\": %s\n" -#: postmaster/postmaster.c:1420 utils/init/postinit.c:220 +#: postmaster/postmaster.c:1423 utils/init/postinit.c:220 #, c-format msgid "could not load pg_hba.conf" msgstr "не вдалося завантажити pg_hba.conf" -#: postmaster/postmaster.c:1446 +#: postmaster/postmaster.c:1449 #, c-format msgid "postmaster became multithreaded during startup" msgstr "адміністратор поштового сервера став багатопотоковим під час запуску" -#: postmaster/postmaster.c:1447 +#: postmaster/postmaster.c:1450 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Встановити в змінній середовища LC_ALL дійісну локаль." -#: postmaster/postmaster.c:1548 +#: postmaster/postmaster.c:1551 #, c-format msgid "%s: could not locate my own executable path" msgstr "%s: не вдалося знайти свій власний шлях для виконання" -#: postmaster/postmaster.c:1555 +#: postmaster/postmaster.c:1558 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: не вдалося знайти відповідний postgres файл, що виконується" -#: postmaster/postmaster.c:1578 utils/misc/tzparser.c:340 +#: postmaster/postmaster.c:1581 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:1605 +#: postmaster/postmaster.c:1608 #, c-format msgid "%s: could not find the database system\n" "Expected to find it in the directory \"%s\",\n" @@ -18644,477 +18627,477 @@ msgstr "%s: не вдалося знайти систему бази даних\ "Очікувалося знайти її у каталозі \"%s\",\n" "але не вдалося відкрити файл \"%s\": %s\n" -#: postmaster/postmaster.c:1782 +#: postmaster/postmaster.c:1785 #, c-format msgid "select() failed in postmaster: %m" msgstr "помилка вибирати() в адміністраторі поштового сервера: %m" -#: postmaster/postmaster.c:1913 +#: postmaster/postmaster.c:1916 #, c-format msgid "issuing SIGKILL to recalcitrant children" msgstr "надсилання SIGKILL непокірливим дітям" -#: postmaster/postmaster.c:1934 +#: postmaster/postmaster.c:1937 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" msgstr "виконується негайне припинення роботи через неприпустимий файл блокування каталогу даних" -#: postmaster/postmaster.c:2037 postmaster/postmaster.c:2065 +#: postmaster/postmaster.c:2040 postmaster/postmaster.c:2068 #, c-format msgid "incomplete startup packet" msgstr "неповний стартовий пакет" -#: postmaster/postmaster.c:2049 postmaster/postmaster.c:2082 +#: postmaster/postmaster.c:2052 postmaster/postmaster.c:2085 #, c-format msgid "invalid length of startup packet" msgstr "неприпустима довжина стартового пакету" -#: postmaster/postmaster.c:2111 +#: postmaster/postmaster.c:2114 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "помилка надсилання протоколу SSL в процесі відповіді зв'язування: %m" -#: postmaster/postmaster.c:2129 +#: postmaster/postmaster.c:2132 #, c-format msgid "received unencrypted data after SSL request" msgstr "отримані незашифровані дані після запиту SSL" -#: postmaster/postmaster.c:2130 postmaster/postmaster.c:2174 +#: postmaster/postmaster.c:2133 postmaster/postmaster.c:2177 #, 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:2155 +#: postmaster/postmaster.c:2158 #, c-format msgid "failed to send GSSAPI negotiation response: %m" msgstr "помилка надсилання GSSAPI в процесі відповіді зв'язування: %m" -#: postmaster/postmaster.c:2173 +#: postmaster/postmaster.c:2176 #, c-format msgid "received unencrypted data after GSSAPI encryption request" msgstr "отримані незашифровані дані після запиту шифрування GSSAPI" -#: postmaster/postmaster.c:2197 +#: postmaster/postmaster.c:2200 #, 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:2261 utils/misc/guc.c:7400 utils/misc/guc.c:7436 -#: utils/misc/guc.c:7506 utils/misc/guc.c:8937 utils/misc/guc.c:11971 -#: utils/misc/guc.c:12012 +#: postmaster/postmaster.c:2264 utils/misc/guc.c:7400 utils/misc/guc.c:7436 +#: utils/misc/guc.c:7506 utils/misc/guc.c:8937 utils/misc/guc.c:11979 +#: utils/misc/guc.c:12020 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "неприпустиме значення параметру \"%s\": \"%s\"" -#: postmaster/postmaster.c:2264 +#: postmaster/postmaster.c:2267 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "Дійсні значення: \"false\", 0, \"true\", 1, \"database\"." -#: postmaster/postmaster.c:2309 +#: postmaster/postmaster.c:2312 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "неприпустима структура стартового пакету: останнім байтом очікувався термінатор" -#: postmaster/postmaster.c:2326 +#: postmaster/postmaster.c:2329 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "не вказано жодного ім'я користувача PostgreSQL у стартовому пакеті" -#: postmaster/postmaster.c:2390 +#: postmaster/postmaster.c:2393 #, c-format msgid "the database system is starting up" msgstr "система бази даних запускається" -#: postmaster/postmaster.c:2396 +#: postmaster/postmaster.c:2399 #, c-format msgid "the database system is not yet accepting connections" msgstr "система бази даних ще не приймає підключення" -#: postmaster/postmaster.c:2397 +#: postmaster/postmaster.c:2400 #, c-format msgid "Consistent recovery state has not been yet reached." msgstr "Узгодженого стану відновлення ще не досягнуто." -#: postmaster/postmaster.c:2401 +#: postmaster/postmaster.c:2404 #, c-format msgid "the database system is not accepting connections" msgstr "система бази даних не приймає підключення" -#: postmaster/postmaster.c:2402 +#: postmaster/postmaster.c:2405 #, c-format msgid "Hot standby mode is disabled." msgstr "Режим Hot standby вимкнений." -#: postmaster/postmaster.c:2407 +#: postmaster/postmaster.c:2410 #, c-format msgid "the database system is shutting down" msgstr "система бази даних завершує роботу" -#: postmaster/postmaster.c:2412 +#: postmaster/postmaster.c:2415 #, c-format msgid "the database system is in recovery mode" msgstr "система бази даних у режимі відновлення" -#: postmaster/postmaster.c:2417 storage/ipc/procarray.c:493 +#: postmaster/postmaster.c:2420 storage/ipc/procarray.c:493 #: storage/ipc/sinvaladt.c:306 storage/lmgr/proc.c:359 #, c-format msgid "sorry, too many clients already" msgstr "вибачте, вже забагато клієнтів" -#: postmaster/postmaster.c:2504 +#: postmaster/postmaster.c:2507 #, c-format msgid "wrong key in cancel request for process %d" msgstr "неправильний ключ в запиті скасування процесу %d" -#: postmaster/postmaster.c:2516 +#: postmaster/postmaster.c:2519 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "PID %d в запиті на скасування не відповідає жодному процесу" -#: postmaster/postmaster.c:2770 +#: postmaster/postmaster.c:2773 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "отримано SIGHUP, поновлення файлів конфігурацій" #. translator: %s is a configuration file -#: postmaster/postmaster.c:2794 postmaster/postmaster.c:2798 +#: postmaster/postmaster.c:2797 postmaster/postmaster.c:2801 #, c-format msgid "%s was not reloaded" msgstr "%s не було перезавантажено" -#: postmaster/postmaster.c:2808 +#: postmaster/postmaster.c:2811 #, c-format msgid "SSL configuration was not reloaded" msgstr "Конфігурація протоколу SSL не була перезавантажена" -#: postmaster/postmaster.c:2864 +#: postmaster/postmaster.c:2867 #, c-format msgid "received smart shutdown request" msgstr "отримано smart запит на завершення роботи" -#: postmaster/postmaster.c:2905 +#: postmaster/postmaster.c:2908 #, c-format msgid "received fast shutdown request" msgstr "отримано швидкий запит на завершення роботи" -#: postmaster/postmaster.c:2923 +#: postmaster/postmaster.c:2926 #, c-format msgid "aborting any active transactions" msgstr "переривання будь-яких активних транзакцій" -#: postmaster/postmaster.c:2947 +#: postmaster/postmaster.c:2950 #, c-format msgid "received immediate shutdown request" msgstr "отримано запит на негайне завершення роботи" -#: postmaster/postmaster.c:3024 +#: postmaster/postmaster.c:3027 #, c-format msgid "shutdown at recovery target" msgstr "завершення роботи при відновленні мети" -#: postmaster/postmaster.c:3042 postmaster/postmaster.c:3078 +#: postmaster/postmaster.c:3045 postmaster/postmaster.c:3081 msgid "startup process" msgstr "стартовий процес" -#: postmaster/postmaster.c:3045 +#: postmaster/postmaster.c:3048 #, c-format msgid "aborting startup due to startup process failure" msgstr "переривання запуску через помилку в стартовому процесі" -#: postmaster/postmaster.c:3118 +#: postmaster/postmaster.c:3121 #, c-format msgid "database system is ready to accept connections" msgstr "система бази даних готова до отримання підключення" -#: postmaster/postmaster.c:3139 +#: postmaster/postmaster.c:3142 msgid "background writer process" msgstr "процес фонового запису" -#: postmaster/postmaster.c:3186 +#: postmaster/postmaster.c:3189 msgid "checkpointer process" msgstr "процес контрольних точок" -#: postmaster/postmaster.c:3202 +#: postmaster/postmaster.c:3205 msgid "WAL writer process" msgstr "Процес запису WAL" -#: postmaster/postmaster.c:3217 +#: postmaster/postmaster.c:3220 msgid "WAL receiver process" msgstr "Процес отримання WAL" -#: postmaster/postmaster.c:3232 +#: postmaster/postmaster.c:3235 msgid "autovacuum launcher process" msgstr "процес запуску автоочистки" -#: postmaster/postmaster.c:3250 +#: postmaster/postmaster.c:3253 msgid "archiver process" msgstr "процес архівації" -#: postmaster/postmaster.c:3263 +#: postmaster/postmaster.c:3266 msgid "system logger process" msgstr "процес системного журналювання" -#: postmaster/postmaster.c:3327 +#: postmaster/postmaster.c:3330 #, c-format msgid "background worker \"%s\"" msgstr "фоновий виконавець \"%s\"" -#: postmaster/postmaster.c:3406 postmaster/postmaster.c:3426 -#: postmaster/postmaster.c:3433 postmaster/postmaster.c:3451 +#: postmaster/postmaster.c:3409 postmaster/postmaster.c:3429 +#: postmaster/postmaster.c:3436 postmaster/postmaster.c:3454 msgid "server process" msgstr "процес сервера" -#: postmaster/postmaster.c:3505 +#: postmaster/postmaster.c:3508 #, 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:3742 +#: postmaster/postmaster.c:3745 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) завершився з кодом виходу %d" -#: postmaster/postmaster.c:3744 postmaster/postmaster.c:3756 -#: postmaster/postmaster.c:3766 postmaster/postmaster.c:3777 +#: postmaster/postmaster.c:3747 postmaster/postmaster.c:3759 +#: postmaster/postmaster.c:3769 postmaster/postmaster.c:3780 #, 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:3753 +#: postmaster/postmaster.c:3756 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) був перерваний винятком 0x%X" -#: postmaster/postmaster.c:3755 postmaster/shell_archive.c:134 +#: postmaster/postmaster.c:3758 postmaster/shell_archive.c:134 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "Опис цього Шістнадцяткового значення дивіться у включаємому C-файлі \"ntstatus.h\"." #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3763 +#: postmaster/postmaster.c:3766 #, 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:3775 +#: postmaster/postmaster.c:3778 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) завершився з нерозпізнаним статусом %d" -#: postmaster/postmaster.c:3975 +#: postmaster/postmaster.c:3978 #, c-format msgid "abnormal database system shutdown" msgstr "ненормальне завершення роботи системи бази даних" -#: postmaster/postmaster.c:4001 +#: postmaster/postmaster.c:4004 #, c-format msgid "shutting down due to startup process failure" msgstr "завершення роботи через помилку в стартовому процесі" -#: postmaster/postmaster.c:4007 +#: postmaster/postmaster.c:4010 #, c-format msgid "shutting down because restart_after_crash is off" msgstr "завершення роботи, тому що restart_after_crash вимкнено" -#: postmaster/postmaster.c:4019 +#: postmaster/postmaster.c:4022 #, c-format msgid "all server processes terminated; reinitializing" msgstr "усі серверні процеси перервано; повторна ініціалізація" -#: postmaster/postmaster.c:4191 postmaster/postmaster.c:5519 -#: postmaster/postmaster.c:5917 +#: postmaster/postmaster.c:4194 postmaster/postmaster.c:5522 +#: postmaster/postmaster.c:5920 #, c-format msgid "could not generate random cancel key" msgstr "не вдалося згенерувати випадковий ключ скасування" -#: postmaster/postmaster.c:4253 +#: postmaster/postmaster.c:4256 #, c-format msgid "could not fork new process for connection: %m" msgstr "не вдалося породити нові процеси для з'єднання: %m" -#: postmaster/postmaster.c:4295 +#: postmaster/postmaster.c:4298 msgid "could not fork new process for connection: " msgstr "не вдалося породити нові процеси для з'єднання: " -#: postmaster/postmaster.c:4401 +#: postmaster/postmaster.c:4404 #, c-format msgid "connection received: host=%s port=%s" msgstr "з'єднання отримано: хост=%s порт=%s" -#: postmaster/postmaster.c:4406 +#: postmaster/postmaster.c:4409 #, c-format msgid "connection received: host=%s" msgstr "з'єднання отримано: хост=%s" -#: postmaster/postmaster.c:4643 +#: postmaster/postmaster.c:4646 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "не вдалося виконати серверні процеси \"%s\":%m" -#: postmaster/postmaster.c:4701 +#: postmaster/postmaster.c:4704 #, c-format msgid "could not create backend parameter file mapping: error code %lu" msgstr "не вдалося створити відображення файлу параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4710 +#: postmaster/postmaster.c:4713 #, c-format msgid "could not map backend parameter memory: error code %lu" msgstr "не вдалося відобразити пам'ять параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4737 +#: postmaster/postmaster.c:4740 #, c-format msgid "subprocess command line too long" msgstr "командний рядок підпроцесу занадто довгий" -#: postmaster/postmaster.c:4755 +#: postmaster/postmaster.c:4758 #, c-format msgid "CreateProcess() call failed: %m (error code %lu)" msgstr "помилка виклику CreateProcess(): %m (код помилки %lu)" -#: postmaster/postmaster.c:4782 +#: postmaster/postmaster.c:4785 #, c-format msgid "could not unmap view of backend parameter file: error code %lu" msgstr "не вдалося вимкнути відображення файлу параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4786 +#: postmaster/postmaster.c:4789 #, c-format msgid "could not close handle to backend parameter file: error code %lu" msgstr "не вдалося закрити покажчик файлу параметру внутрішнього сервера: код помилки %lu" -#: postmaster/postmaster.c:4808 +#: postmaster/postmaster.c:4811 #, c-format msgid "giving up after too many tries to reserve shared memory" msgstr "кількість повторних спроб резервування спільної пам'яті досягло межі" -#: postmaster/postmaster.c:4809 +#: postmaster/postmaster.c:4812 #, c-format msgid "This might be caused by ASLR or antivirus software." msgstr "Це може бути викликано антивірусним програмним забезпеченням або ASLR." -#: postmaster/postmaster.c:4982 +#: postmaster/postmaster.c:4985 #, c-format msgid "SSL configuration could not be loaded in child process" msgstr "Не вдалося завантажити конфігурацію SSL в дочірній процес" -#: postmaster/postmaster.c:5107 +#: postmaster/postmaster.c:5110 #, c-format msgid "Please report this to <%s>." msgstr "Будь-ласка повідомте про це <%s>." -#: postmaster/postmaster.c:5179 +#: postmaster/postmaster.c:5182 #, c-format msgid "database system is ready to accept read-only connections" msgstr "система бази даних готова до отримання підключення лише для читання" -#: postmaster/postmaster.c:5443 +#: postmaster/postmaster.c:5446 #, c-format msgid "could not fork startup process: %m" msgstr "не вдалося породити стартовий процес: %m" -#: postmaster/postmaster.c:5447 +#: postmaster/postmaster.c:5450 #, c-format msgid "could not fork archiver process: %m" msgstr "не вдалося породити процес архіватора: %m" -#: postmaster/postmaster.c:5451 +#: postmaster/postmaster.c:5454 #, c-format msgid "could not fork background writer process: %m" msgstr "не вдалося породити фоновий процес запису: %m" -#: postmaster/postmaster.c:5455 +#: postmaster/postmaster.c:5458 #, c-format msgid "could not fork checkpointer process: %m" msgstr "не вдалося породити процес контрольних точок: %m" -#: postmaster/postmaster.c:5459 +#: postmaster/postmaster.c:5462 #, c-format msgid "could not fork WAL writer process: %m" msgstr "не вдалося породити процес запису WAL: %m" -#: postmaster/postmaster.c:5463 +#: postmaster/postmaster.c:5466 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "не вдалося породити процес отримання WAL: %m" -#: postmaster/postmaster.c:5467 +#: postmaster/postmaster.c:5470 #, c-format msgid "could not fork process: %m" msgstr "не вдалося породити процес: %m" -#: postmaster/postmaster.c:5668 postmaster/postmaster.c:5695 +#: postmaster/postmaster.c:5671 postmaster/postmaster.c:5698 #, c-format msgid "database connection requirement not indicated during registration" msgstr "під час реєстрації не вказувалося, що вимагається підключення до бази даних" -#: postmaster/postmaster.c:5679 postmaster/postmaster.c:5706 +#: postmaster/postmaster.c:5682 postmaster/postmaster.c:5709 #, c-format msgid "invalid processing mode in background worker" msgstr "неприпустимий режим обробки у фоновому записі" -#: postmaster/postmaster.c:5791 +#: postmaster/postmaster.c:5794 #, c-format msgid "could not fork worker process: %m" msgstr "не вдалося породити процес запису: %m" -#: postmaster/postmaster.c:5903 +#: postmaster/postmaster.c:5906 #, c-format msgid "no slot available for new worker process" msgstr "немає доступного слоту для нового робочого процесу" -#: postmaster/postmaster.c:6234 +#: postmaster/postmaster.c:6237 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "не вдалося продублювати сокет %d для використання: код помилки %d" -#: postmaster/postmaster.c:6266 +#: postmaster/postmaster.c:6269 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "не вдалося створити успадкований сокет: код помилки %d\n" -#: postmaster/postmaster.c:6295 +#: postmaster/postmaster.c:6298 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "не вдалося відкрити внутрішні змінні файли \"%s\": %s\n" -#: postmaster/postmaster.c:6302 +#: postmaster/postmaster.c:6305 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "не вдалося прочитати внутрішні змінні файли \"%s\": %s\n" -#: postmaster/postmaster.c:6311 +#: postmaster/postmaster.c:6314 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "не вдалося видалити файл \"%s\": %s\n" -#: postmaster/postmaster.c:6328 +#: postmaster/postmaster.c:6331 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "не вдалося відобразити файл серверних змінних: код помилки %lu\n" -#: postmaster/postmaster.c:6337 +#: postmaster/postmaster.c:6340 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "не вдалося вимкнути відображення файлу серверних змінних: код помилки %lu\n" -#: postmaster/postmaster.c:6344 +#: postmaster/postmaster.c:6347 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "не вдалося закрити покажчик файлу серверних змінних: код помилки %lu\n" -#: postmaster/postmaster.c:6503 +#: postmaster/postmaster.c:6506 #, c-format msgid "could not read exit code for process\n" msgstr "не вдалося прочитати код завершення процесу\n" -#: postmaster/postmaster.c:6545 +#: postmaster/postmaster.c:6548 #, c-format msgid "could not post child completion status\n" msgstr "не вдалося надіслати статус завершення нащадка\n" @@ -19225,97 +19208,97 @@ msgstr "не вдалося аналізувати рядок підключен msgid "could not receive database system identifier and timeline ID from the primary server: %s" msgstr "не вдалося отримати ідентифікатор системи бази даних та ідентифікатор часової шкали з основного серверу: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:384 -#: replication/libpqwalreceiver/libpqwalreceiver.c:622 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:626 #, c-format msgid "invalid response from primary server" msgstr "неприпустима відповідь з основного серверу" -#: replication/libpqwalreceiver/libpqwalreceiver.c:385 +#: replication/libpqwalreceiver/libpqwalreceiver.c:389 #, c-format msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields." msgstr "Не вдалося ідентифікувати систему: отримано %d рядків і %d полів, очікувалось %d рядків і %d або більше полів." -#: replication/libpqwalreceiver/libpqwalreceiver.c:465 -#: replication/libpqwalreceiver/libpqwalreceiver.c:472 -#: replication/libpqwalreceiver/libpqwalreceiver.c:502 +#: replication/libpqwalreceiver/libpqwalreceiver.c:469 +#: replication/libpqwalreceiver/libpqwalreceiver.c:476 +#: replication/libpqwalreceiver/libpqwalreceiver.c:506 #, c-format msgid "could not start WAL streaming: %s" msgstr "не вдалося почати потокове передавання WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:526 +#: replication/libpqwalreceiver/libpqwalreceiver.c:530 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "не вдалося передати основному серверу повідомлення про кінець передвання: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:553 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "неочікуваний набір результатів після кінця передачі" -#: replication/libpqwalreceiver/libpqwalreceiver.c:564 +#: replication/libpqwalreceiver/libpqwalreceiver.c:568 #, c-format msgid "error while shutting down streaming COPY: %s" msgstr "помилка при завершенні потокового передавання \"копіювати\": %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:574 +#: replication/libpqwalreceiver/libpqwalreceiver.c:578 #, c-format msgid "error reading result of streaming command: %s" msgstr "помилка при читанні результату команди потокового передавання: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:583 -#: replication/libpqwalreceiver/libpqwalreceiver.c:821 +#: replication/libpqwalreceiver/libpqwalreceiver.c:587 +#: replication/libpqwalreceiver/libpqwalreceiver.c:825 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "неочікуваний результат CommandComplete: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:610 +#: replication/libpqwalreceiver/libpqwalreceiver.c:614 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "не вдалося отримати файл історії часової шкали з основного сервера: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:623 +#: replication/libpqwalreceiver/libpqwalreceiver.c:627 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Очікувалося 1 кортеж з 2 поле, отримано %d кортежів з %d полями." -#: replication/libpqwalreceiver/libpqwalreceiver.c:784 -#: replication/libpqwalreceiver/libpqwalreceiver.c:837 -#: replication/libpqwalreceiver/libpqwalreceiver.c:844 +#: replication/libpqwalreceiver/libpqwalreceiver.c:788 +#: replication/libpqwalreceiver/libpqwalreceiver.c:841 +#: replication/libpqwalreceiver/libpqwalreceiver.c:848 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "не вдалося отримати дані з WAL потоку: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:864 +#: replication/libpqwalreceiver/libpqwalreceiver.c:868 #, c-format msgid "could not send data to WAL stream: %s" msgstr "не вдалося передати дані потоку WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:956 +#: replication/libpqwalreceiver/libpqwalreceiver.c:960 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "не вдалося створити слот реплікації \"%s\": %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1002 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1006 #, c-format msgid "invalid query response" msgstr "неприпустима відповідь на запит" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1003 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1007 #, c-format msgid "Expected %d fields, got %d fields." msgstr "Очікувалося %d полів, отримано %d полі." -#: replication/libpqwalreceiver/libpqwalreceiver.c:1073 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1077 #, c-format msgid "the query interface requires a database connection" msgstr "інтерфейс запитів вимагає підключення до бази даних" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1104 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1108 msgid "empty query" msgstr "пустий запит" -#: replication/libpqwalreceiver/libpqwalreceiver.c:1110 +#: replication/libpqwalreceiver/libpqwalreceiver.c:1114 msgid "unexpected pipeline mode" msgstr "неочікуваний режим конвеєра" @@ -19606,12 +19589,12 @@ msgstr "не вдалося видалити файл \"%s\" під час ви msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "не вдалося прочитати з файлу \"%s\": прочитано %d замість %d байт" -#: replication/logical/snapbuild.c:634 +#: replication/logical/snapbuild.c:646 #, c-format msgid "initial slot snapshot too large" msgstr "початковий знімок слота занадто великий" -#: replication/logical/snapbuild.c:688 +#: replication/logical/snapbuild.c:700 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "exported logical decoding snapshot: \"%s\" with %u transaction IDs" @@ -19620,58 +19603,58 @@ msgstr[1] "експортовано знімок логічного декоду msgstr[2] "експортовано знімок логічного декодування \"%s\" з %u ID транзакціями" msgstr[3] "експортовано знімок логічного декодування \"%s\" з %u ID транзакціями" -#: replication/logical/snapbuild.c:1367 replication/logical/snapbuild.c:1474 -#: replication/logical/snapbuild.c:2003 +#: replication/logical/snapbuild.c:1379 replication/logical/snapbuild.c:1486 +#: replication/logical/snapbuild.c:2015 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "узгодження процесу логічного кодування знайдено в точці %X/%X" -#: replication/logical/snapbuild.c:1369 +#: replication/logical/snapbuild.c:1381 #, c-format msgid "There are no running transactions." msgstr "Більше активних транзакцій немає." -#: replication/logical/snapbuild.c:1425 +#: replication/logical/snapbuild.c:1437 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "початкова стартова точка процесу логічного декодування знайдена в точці %X/%X" -#: replication/logical/snapbuild.c:1427 replication/logical/snapbuild.c:1451 +#: replication/logical/snapbuild.c:1439 replication/logical/snapbuild.c:1463 #, c-format msgid "Waiting for transactions (approximately %d) older than %u to end." msgstr "Очікування транзакцій (приблизно %d) старіше, ніж %u до кінця." -#: replication/logical/snapbuild.c:1449 +#: replication/logical/snapbuild.c:1461 #, c-format msgid "logical decoding found initial consistent point at %X/%X" msgstr "початкова точка узгодження процесу логічного кодування знайдена в точці %X/%X" -#: replication/logical/snapbuild.c:1476 +#: replication/logical/snapbuild.c:1488 #, c-format msgid "There are no old transactions anymore." msgstr "Більше старих транзакцій немає." -#: replication/logical/snapbuild.c:1871 +#: replication/logical/snapbuild.c:1883 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" msgstr "файл стану snapbuild \"%s\" має неправильне магічне число: %u замість %u" -#: replication/logical/snapbuild.c:1877 +#: replication/logical/snapbuild.c:1889 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "файл стану snapbuild \"%s\" має непідтримуючу версію: %u замість %u" -#: replication/logical/snapbuild.c:1948 +#: replication/logical/snapbuild.c:1960 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "у файлі стану snapbuild \"%s\" невідповідність контрольної суми: %u, повинно бути %u" -#: replication/logical/snapbuild.c:2005 +#: replication/logical/snapbuild.c:2017 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "Логічне декодування почнеться зі збереженого знімку." -#: replication/logical/snapbuild.c:2077 +#: replication/logical/snapbuild.c:2089 #, c-format msgid "could not parse file name \"%s\"" msgstr "не вдалося аналізувати ім'я файлу \"%s\"" @@ -19686,47 +19669,47 @@ msgstr "процес синхронізації таблиці при логіч msgid "logical replication apply worker for subscription \"%s\" will restart so that two_phase can be enabled" msgstr "застосовуючий процес логічної реплікації для підписки \"%s\" буде перезавантажено, щоб можна було активувати two_phase" -#: replication/logical/tablesync.c:731 replication/logical/tablesync.c:872 +#: replication/logical/tablesync.c:741 replication/logical/tablesync.c:882 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "не вдалося отримати інформацію про таблицю \"%s.%s\" з серверу публікації: %s" -#: replication/logical/tablesync.c:738 +#: replication/logical/tablesync.c:748 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "таблиця \"%s.%s\" не знайдена на сервері публікації" -#: replication/logical/tablesync.c:795 +#: replication/logical/tablesync.c:805 #, c-format msgid "could not fetch column list info for table \"%s.%s\" from publisher: %s" msgstr "не вдалося отримати інформацію про список стовпців для таблиці \"%s.%s\" з серверу публікації: %s" -#: replication/logical/tablesync.c:974 +#: replication/logical/tablesync.c:984 #, c-format msgid "could not fetch table WHERE clause info for table \"%s.%s\" from publisher: %s" msgstr "не вдалося отримати інформацію про вираз WHERE для таблиці \"%s.%s\" з серверу публікації: %s" -#: replication/logical/tablesync.c:1111 +#: replication/logical/tablesync.c:1129 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "не вдалося почати копіювання початкового змісту таблиці \"%s.%s\": %s" -#: replication/logical/tablesync.c:1323 replication/logical/worker.c:1635 +#: replication/logical/tablesync.c:1341 replication/logical/worker.c:1635 #, c-format msgid "user \"%s\" cannot replicate into relation with row-level security enabled: \"%s\"" msgstr "користувач \"%s\" не може реплікувати у відношення з увімкненим захистом на рівні рядків: \"%s\"" -#: replication/logical/tablesync.c:1338 +#: replication/logical/tablesync.c:1356 #, c-format msgid "table copy could not start transaction on publisher: %s" msgstr "копії таблиці не вдалося запустити транзакцію на сервері публікації: %s" -#: replication/logical/tablesync.c:1380 +#: replication/logical/tablesync.c:1398 #, c-format msgid "replication origin \"%s\" already exists" msgstr "джерело реплікації \"%s\" вже існує" -#: replication/logical/tablesync.c:1393 +#: replication/logical/tablesync.c:1411 #, c-format msgid "table copy could not finish transaction on publisher: %s" msgstr "копії таблиці не вдалося завершити транзакцію на сервері публікації: %s" @@ -21073,17 +21056,17 @@ msgstr "не вдалося закрити сегмент спільної па msgid "could not duplicate handle for \"%s\": %m" msgstr "не вдалося продублювати маркер для \"%s\": %m" -#: storage/ipc/procarray.c:3846 +#: storage/ipc/procarray.c:3845 #, c-format msgid "database \"%s\" is being used by prepared transactions" msgstr "база даних \"%s\" використовується підготовленими транзакціями" -#: storage/ipc/procarray.c:3878 storage/ipc/signalfuncs.c:226 +#: storage/ipc/procarray.c:3877 storage/ipc/signalfuncs.c:231 #, c-format msgid "must be a superuser to terminate superuser process" msgstr "щоб припинити процес суперкористувача потрібно бути суперкористувачем" -#: storage/ipc/procarray.c:3885 storage/ipc/signalfuncs.c:231 +#: storage/ipc/procarray.c:3884 storage/ipc/signalfuncs.c:236 #, c-format msgid "must be a member of the role whose process is being terminated or member of pg_signal_backend" msgstr "потрібно бути учасником ролі, процес котрої припиняється або учасником pg_signal_backend" @@ -21143,28 +21126,28 @@ msgstr "запитаний сегмент спільної пам'яті не в msgid "PID %d is not a PostgreSQL backend process" msgstr "PID %d не є внутрішнім процесом PostgreSQL" -#: storage/ipc/signalfuncs.c:104 storage/lmgr/proc.c:1434 +#: storage/ipc/signalfuncs.c:109 storage/lmgr/proc.c:1442 #: utils/adt/mcxtfuncs.c:190 #, c-format msgid "could not send signal to process %d: %m" msgstr "не вдалося надіслати сигнал процесу %d: %m" -#: storage/ipc/signalfuncs.c:124 +#: storage/ipc/signalfuncs.c:129 #, c-format msgid "must be a superuser to cancel superuser query" msgstr "щоб скасувати запит суперкористувача потрібно бути суперкористувачем" -#: storage/ipc/signalfuncs.c:129 +#: storage/ipc/signalfuncs.c:134 #, c-format msgid "must be a member of the role whose query is being canceled or member of pg_signal_backend" msgstr "потрібно бути учасником ролі, запит котрої скасовується, або учасником pg_signal_backend" -#: storage/ipc/signalfuncs.c:170 +#: storage/ipc/signalfuncs.c:175 #, c-format msgid "could not check the existence of the backend with PID %d: %m" msgstr "не вдалося перевірити наявність процесу з PID %d: %m" -#: storage/ipc/signalfuncs.c:188 +#: storage/ipc/signalfuncs.c:193 #, c-format msgid "backend with PID %d did not terminate within %lld millisecond" msgid_plural "backend with PID %d did not terminate within %lld milliseconds" @@ -21173,23 +21156,23 @@ msgstr[1] "процес з PID %d не завершився протягом %ll msgstr[2] "процес з PID %d не завершився протягом %lld мілісекунд" msgstr[3] "процес з PID %d не завершився протягом %lld мілісекунд" -#: storage/ipc/signalfuncs.c:219 +#: storage/ipc/signalfuncs.c:224 #, c-format msgid "\"timeout\" must not be negative" msgstr "\"timeout\" повинен не може бути негативним" -#: storage/ipc/signalfuncs.c:271 +#: storage/ipc/signalfuncs.c:276 #, c-format msgid "must be superuser to rotate log files with adminpack 1.0" msgstr "прокручувати файли протоколів використовуючи adminpack 1.0, може лише суперкористувач" #. translator: %s is a SQL function name -#: storage/ipc/signalfuncs.c:273 utils/adt/genfile.c:250 +#: storage/ipc/signalfuncs.c:278 utils/adt/genfile.c:250 #, c-format msgid "Consider using %s, which is part of core, instead." msgstr "Розгляньте використання %s, що є частиною ядра." -#: storage/ipc/signalfuncs.c:279 storage/ipc/signalfuncs.c:299 +#: storage/ipc/signalfuncs.c:284 storage/ipc/signalfuncs.c:304 #, c-format msgid "rotation not possible because log collection not active" msgstr "обертання неможливе тому, що записування колекції не активоване" @@ -21473,27 +21456,27 @@ msgstr "Транзакція може завершитися успішно, я msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "кількість запитаних підключень резервного серверу перевищує max_wal_senders (поточна %d)" -#: storage/lmgr/proc.c:1531 +#: storage/lmgr/proc.c:1539 #, c-format msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" msgstr "процес %d уникнув взаємного блокування, чекаючи в режимі %s блокування %s змінивши порядок черги після %ld.%03d мс" -#: storage/lmgr/proc.c:1546 +#: storage/lmgr/proc.c:1554 #, c-format msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "процес %d виявив взаємне блокування, чекаючи в режимі %s блокування %s після %ld.%03d мс" -#: storage/lmgr/proc.c:1555 +#: storage/lmgr/proc.c:1563 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" msgstr "процес %d все ще чекає в режимі %s блокування %s після %ld.%03d мс" -#: storage/lmgr/proc.c:1562 +#: storage/lmgr/proc.c:1570 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" msgstr "процес %d отримав в режимі %s блокування %s після %ld.%03d мс" -#: storage/lmgr/proc.c:1579 +#: storage/lmgr/proc.c:1587 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" msgstr "процес %d не зміг отримати в режимі %s блокування %s після %ld.%03d мс" @@ -22450,59 +22433,59 @@ msgstr "пошук елементів у багатовимірних масив msgid "initial position must not be null" msgstr "початкова позиція не повинна бути null" -#: utils/adt/arrayfuncs.c:271 utils/adt/arrayfuncs.c:285 -#: utils/adt/arrayfuncs.c:296 utils/adt/arrayfuncs.c:318 -#: utils/adt/arrayfuncs.c:333 utils/adt/arrayfuncs.c:347 -#: utils/adt/arrayfuncs.c:353 utils/adt/arrayfuncs.c:360 -#: utils/adt/arrayfuncs.c:493 utils/adt/arrayfuncs.c:509 -#: utils/adt/arrayfuncs.c:520 utils/adt/arrayfuncs.c:535 -#: utils/adt/arrayfuncs.c:556 utils/adt/arrayfuncs.c:586 -#: utils/adt/arrayfuncs.c:593 utils/adt/arrayfuncs.c:601 -#: utils/adt/arrayfuncs.c:635 utils/adt/arrayfuncs.c:658 -#: utils/adt/arrayfuncs.c:678 utils/adt/arrayfuncs.c:790 -#: utils/adt/arrayfuncs.c:799 utils/adt/arrayfuncs.c:829 -#: utils/adt/arrayfuncs.c:844 utils/adt/arrayfuncs.c:897 +#: utils/adt/arrayfuncs.c:272 utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:334 utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:510 +#: utils/adt/arrayfuncs.c:521 utils/adt/arrayfuncs.c:536 +#: utils/adt/arrayfuncs.c:557 utils/adt/arrayfuncs.c:587 +#: utils/adt/arrayfuncs.c:594 utils/adt/arrayfuncs.c:602 +#: utils/adt/arrayfuncs.c:636 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:679 utils/adt/arrayfuncs.c:791 +#: utils/adt/arrayfuncs.c:800 utils/adt/arrayfuncs.c:830 +#: utils/adt/arrayfuncs.c:845 utils/adt/arrayfuncs.c:898 #, c-format msgid "malformed array literal: \"%s\"" msgstr "неправильний літерал масиву: \"%s\"" -#: utils/adt/arrayfuncs.c:272 +#: utils/adt/arrayfuncs.c:273 #, c-format msgid "\"[\" must introduce explicitly-specified array dimensions." msgstr "\"[\" повинно представляти явно вказані виміри масиву." -#: utils/adt/arrayfuncs.c:286 +#: utils/adt/arrayfuncs.c:287 #, c-format msgid "Missing array dimension value." msgstr "Пропущено значення виміру масиву." -#: utils/adt/arrayfuncs.c:297 utils/adt/arrayfuncs.c:334 +#: utils/adt/arrayfuncs.c:298 utils/adt/arrayfuncs.c:335 #, c-format msgid "Missing \"%s\" after array dimensions." msgstr "Пропущено \"%s\" після вимірів масиву." -#: utils/adt/arrayfuncs.c:306 utils/adt/arrayfuncs.c:2909 -#: utils/adt/arrayfuncs.c:2941 utils/adt/arrayfuncs.c:2956 +#: utils/adt/arrayfuncs.c:307 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2990 utils/adt/arrayfuncs.c:3005 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "верхня границя не може бути меньше нижньої границі" -#: utils/adt/arrayfuncs.c:319 +#: utils/adt/arrayfuncs.c:320 #, c-format msgid "Array value must start with \"{\" or dimension information." msgstr "Значення масиву повинно починатись з \"{\" або з інформації про вимір." -#: utils/adt/arrayfuncs.c:348 +#: utils/adt/arrayfuncs.c:349 #, c-format msgid "Array contents must start with \"{\"." msgstr "Вміст масиву повинен починатись з \"{\"." -#: utils/adt/arrayfuncs.c:354 utils/adt/arrayfuncs.c:361 +#: utils/adt/arrayfuncs.c:355 utils/adt/arrayfuncs.c:362 #, c-format msgid "Specified array dimensions do not match array contents." msgstr "Вказані виміри масиву не відповідають його вмісту." -#: utils/adt/arrayfuncs.c:494 utils/adt/arrayfuncs.c:521 +#: utils/adt/arrayfuncs.c:495 utils/adt/arrayfuncs.c:522 #: utils/adt/multirangetypes.c:164 utils/adt/rangetypes.c:2310 #: utils/adt/rangetypes.c:2318 utils/adt/rowtypes.c:211 #: utils/adt/rowtypes.c:219 @@ -22510,74 +22493,74 @@ msgstr "Вказані виміри масиву не відповідають msgid "Unexpected end of input." msgstr "Неочікуваний кінец введення." -#: utils/adt/arrayfuncs.c:510 utils/adt/arrayfuncs.c:557 -#: utils/adt/arrayfuncs.c:587 utils/adt/arrayfuncs.c:636 +#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:558 +#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:637 #, c-format msgid "Unexpected \"%c\" character." msgstr "Неочікуваний символ \"%c\"." -#: utils/adt/arrayfuncs.c:536 utils/adt/arrayfuncs.c:659 +#: utils/adt/arrayfuncs.c:537 utils/adt/arrayfuncs.c:660 #, c-format msgid "Unexpected array element." msgstr "Неочікуваний елемент масиву." -#: utils/adt/arrayfuncs.c:594 +#: utils/adt/arrayfuncs.c:595 #, c-format msgid "Unmatched \"%c\" character." msgstr "Невідповідний символ \"%c\"." -#: utils/adt/arrayfuncs.c:602 utils/adt/jsonfuncs.c:2490 +#: utils/adt/arrayfuncs.c:603 utils/adt/jsonfuncs.c:2490 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "Багатовимірні масиви повинні мати вкладені масиви з відповідними вимірами." -#: utils/adt/arrayfuncs.c:679 utils/adt/multirangetypes.c:287 +#: utils/adt/arrayfuncs.c:680 utils/adt/multirangetypes.c:287 #, c-format msgid "Junk after closing right brace." msgstr "Сміття після закриття правої дужки." -#: utils/adt/arrayfuncs.c:1301 utils/adt/arrayfuncs.c:3369 -#: utils/adt/arrayfuncs.c:5883 +#: utils/adt/arrayfuncs.c:1302 utils/adt/arrayfuncs.c:3418 +#: utils/adt/arrayfuncs.c:5932 #, c-format msgid "invalid number of dimensions: %d" msgstr "неприпустима кількість вимірів: %d" -#: utils/adt/arrayfuncs.c:1312 +#: utils/adt/arrayfuncs.c:1313 #, c-format msgid "invalid array flags" msgstr "неприпустимі позначки масиву" -#: utils/adt/arrayfuncs.c:1334 +#: utils/adt/arrayfuncs.c:1335 #, c-format msgid "binary data has array element type %u (%s) instead of expected %u (%s)" msgstr "двійкові дані мають тип елементу масиву %u (%s) замість очікуваного %u (%s)" -#: utils/adt/arrayfuncs.c:1378 utils/adt/multirangetypes.c:445 +#: utils/adt/arrayfuncs.c:1379 utils/adt/multirangetypes.c:445 #: utils/adt/rangetypes.c:333 utils/cache/lsyscache.c:2915 #, c-format msgid "no binary input function available for type %s" msgstr "для типу %s немає функції введення двійкових даних" -#: utils/adt/arrayfuncs.c:1518 +#: utils/adt/arrayfuncs.c:1519 #, c-format msgid "improper binary format in array element %d" msgstr "неправильний двійковий формат в елементі масиву %d" -#: utils/adt/arrayfuncs.c:1599 utils/adt/multirangetypes.c:450 +#: utils/adt/arrayfuncs.c:1600 utils/adt/multirangetypes.c:450 #: utils/adt/rangetypes.c:338 utils/cache/lsyscache.c:2948 #, c-format msgid "no binary output function available for type %s" msgstr "для типу %s немає функції виводу двійкових даних" -#: utils/adt/arrayfuncs.c:2078 +#: utils/adt/arrayfuncs.c:2079 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "розрізання масивів постійної довжини не реалізовано" -#: utils/adt/arrayfuncs.c:2256 utils/adt/arrayfuncs.c:2278 -#: utils/adt/arrayfuncs.c:2327 utils/adt/arrayfuncs.c:2565 -#: utils/adt/arrayfuncs.c:2887 utils/adt/arrayfuncs.c:5869 -#: utils/adt/arrayfuncs.c:5895 utils/adt/arrayfuncs.c:5906 +#: utils/adt/arrayfuncs.c:2257 utils/adt/arrayfuncs.c:2279 +#: utils/adt/arrayfuncs.c:2328 utils/adt/arrayfuncs.c:2582 +#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:5918 +#: utils/adt/arrayfuncs.c:5944 utils/adt/arrayfuncs.c:5955 #: utils/adt/json.c:1141 utils/adt/json.c:1215 utils/adt/jsonb.c:1315 #: utils/adt/jsonb.c:1401 utils/adt/jsonfuncs.c:4326 utils/adt/jsonfuncs.c:4480 #: utils/adt/jsonfuncs.c:4592 utils/adt/jsonfuncs.c:4641 @@ -22585,116 +22568,116 @@ msgstr "розрізання масивів постійної довжини н msgid "wrong number of array subscripts" msgstr "невірне число верхніх індексів масива" -#: utils/adt/arrayfuncs.c:2261 utils/adt/arrayfuncs.c:2369 -#: utils/adt/arrayfuncs.c:2632 utils/adt/arrayfuncs.c:2946 +#: utils/adt/arrayfuncs.c:2262 utils/adt/arrayfuncs.c:2386 +#: utils/adt/arrayfuncs.c:2665 utils/adt/arrayfuncs.c:2995 #, c-format msgid "array subscript out of range" msgstr "верхній індекс масиву поза діапазоном" -#: utils/adt/arrayfuncs.c:2266 +#: utils/adt/arrayfuncs.c:2267 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "не можна призначати значення null значення елементу масива постійної довжини" -#: utils/adt/arrayfuncs.c:2834 +#: utils/adt/arrayfuncs.c:2867 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "оновлення в зрізах масивів постійної довжини не реалізовані" -#: utils/adt/arrayfuncs.c:2865 +#: utils/adt/arrayfuncs.c:2898 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "у вказівці зрізу масива повинні бути задані обидві межі" -#: utils/adt/arrayfuncs.c:2866 +#: utils/adt/arrayfuncs.c:2899 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." msgstr "Під час присвоєння значень зрізу в пустому масиві, межі зрізу повинні вказуватися повністю." -#: utils/adt/arrayfuncs.c:2877 utils/adt/arrayfuncs.c:2973 +#: utils/adt/arrayfuncs.c:2910 utils/adt/arrayfuncs.c:3022 #, c-format msgid "source array too small" msgstr "вихідний масив занадто малий" -#: utils/adt/arrayfuncs.c:3527 +#: utils/adt/arrayfuncs.c:3576 #, c-format msgid "null array element not allowed in this context" msgstr "елемент масиву null не дозволений в цьому контексті" -#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 -#: utils/adt/arrayfuncs.c:4191 +#: utils/adt/arrayfuncs.c:3678 utils/adt/arrayfuncs.c:3849 +#: utils/adt/arrayfuncs.c:4240 #, c-format msgid "cannot compare arrays of different element types" msgstr "не можна порівнювати масиви з елементами різних типів" -#: utils/adt/arrayfuncs.c:3978 utils/adt/multirangetypes.c:2799 +#: utils/adt/arrayfuncs.c:4027 utils/adt/multirangetypes.c:2799 #: utils/adt/multirangetypes.c:2871 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" msgstr "не вдалося визначити геш-функцію для типу %s" -#: utils/adt/arrayfuncs.c:4106 utils/adt/rowtypes.c:1979 +#: utils/adt/arrayfuncs.c:4155 utils/adt/rowtypes.c:1979 #, c-format msgid "could not identify an extended hash function for type %s" msgstr "не вдалося визначити розширену геш-функцію для типу %s" -#: utils/adt/arrayfuncs.c:5283 +#: utils/adt/arrayfuncs.c:5332 #, c-format msgid "data type %s is not an array type" msgstr "тип даних %s не є типом масиву" -#: utils/adt/arrayfuncs.c:5338 +#: utils/adt/arrayfuncs.c:5387 #, c-format msgid "cannot accumulate null arrays" msgstr "накопичувати null-масиви не можна" -#: utils/adt/arrayfuncs.c:5366 +#: utils/adt/arrayfuncs.c:5415 #, c-format msgid "cannot accumulate empty arrays" msgstr "накопичувати пусті масиви не можна" -#: utils/adt/arrayfuncs.c:5393 utils/adt/arrayfuncs.c:5399 +#: utils/adt/arrayfuncs.c:5442 utils/adt/arrayfuncs.c:5448 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "накопичувати масиви різної розмірності не можна" -#: utils/adt/arrayfuncs.c:5767 utils/adt/arrayfuncs.c:5807 +#: utils/adt/arrayfuncs.c:5816 utils/adt/arrayfuncs.c:5856 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "масив розмірності або масив нижніх границь не може бути null" -#: utils/adt/arrayfuncs.c:5870 utils/adt/arrayfuncs.c:5896 +#: utils/adt/arrayfuncs.c:5919 utils/adt/arrayfuncs.c:5945 #, c-format msgid "Dimension array must be one dimensional." msgstr "Масив розмірності повинен бути одновимірним." -#: utils/adt/arrayfuncs.c:5875 utils/adt/arrayfuncs.c:5901 +#: utils/adt/arrayfuncs.c:5924 utils/adt/arrayfuncs.c:5950 #, c-format msgid "dimension values cannot be null" msgstr "значення розмірностей не можуть бути null" -#: utils/adt/arrayfuncs.c:5907 +#: utils/adt/arrayfuncs.c:5956 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Масив нижніх границь відрізняється за розміром від масиву розмірностей." -#: utils/adt/arrayfuncs.c:6185 +#: utils/adt/arrayfuncs.c:6234 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "видалення елементів з багатовимірних масивів не підтримується" -#: utils/adt/arrayfuncs.c:6462 +#: utils/adt/arrayfuncs.c:6511 #, c-format msgid "thresholds must be one-dimensional array" msgstr "граничне значення повинно вказуватись одновимірним масивом" -#: utils/adt/arrayfuncs.c:6467 +#: utils/adt/arrayfuncs.c:6516 #, c-format msgid "thresholds array must not contain NULLs" msgstr "масив границь не повинен містити NULL" -#: utils/adt/arrayfuncs.c:6700 +#: utils/adt/arrayfuncs.c:6749 #, c-format msgid "number of elements to trim must be between 0 and %d" msgstr "кількість елементів для обрізки має бути між 0 і %d" @@ -22709,22 +22692,22 @@ msgstr "індекс елементу масиву має бути цілим ч msgid "array subscript in assignment must not be null" msgstr "підрядковий символ масиву у призначенні не може бути NULL" -#: utils/adt/arrayutils.c:140 +#: utils/adt/arrayutils.c:134 #, c-format msgid "array lower bound is too large: %d" msgstr "нижня границя масиву занадто велика: %d" -#: utils/adt/arrayutils.c:240 +#: utils/adt/arrayutils.c:234 #, c-format msgid "typmod array must be type cstring[]" msgstr "масив typmod повинен мати тип cstring[]" -#: utils/adt/arrayutils.c:245 +#: utils/adt/arrayutils.c:239 #, c-format msgid "typmod array must be one-dimensional" msgstr "масив typmod повинен бути одновимірним" -#: utils/adt/arrayutils.c:250 +#: utils/adt/arrayutils.c:244 #, c-format msgid "typmod array must not contain nulls" msgstr "масив typmod не повинен містити елементи nulls" @@ -22774,7 +22757,7 @@ msgstr "значення \"%s\" поза діапазоном для типу %s #: utils/adt/int8.c:1165 utils/adt/numeric.c:3093 utils/adt/numeric.c:3116 #: utils/adt/numeric.c:3201 utils/adt/numeric.c:3219 utils/adt/numeric.c:3315 #: utils/adt/numeric.c:8481 utils/adt/numeric.c:8771 utils/adt/numeric.c:9096 -#: utils/adt/numeric.c:10553 utils/adt/timestamp.c:3337 +#: utils/adt/numeric.c:10553 utils/adt/timestamp.c:3342 #, c-format msgid "division by zero" msgstr "ділення на нуль" @@ -22840,20 +22823,20 @@ msgid "date out of range for timestamp" msgstr "для позначки часу дата поза діапазоном" #: utils/adt/date.c:1115 utils/adt/date.c:1198 utils/adt/date.c:1214 -#: utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4032 -#: utils/adt/timestamp.c:4225 utils/adt/timestamp.c:4397 -#: utils/adt/timestamp.c:4650 utils/adt/timestamp.c:4851 -#: utils/adt/timestamp.c:4898 utils/adt/timestamp.c:5122 -#: utils/adt/timestamp.c:5169 utils/adt/timestamp.c:5299 +#: utils/adt/date.c:2195 utils/adt/date.c:2973 utils/adt/timestamp.c:4059 +#: utils/adt/timestamp.c:4252 utils/adt/timestamp.c:4424 +#: utils/adt/timestamp.c:4677 utils/adt/timestamp.c:4878 +#: utils/adt/timestamp.c:4925 utils/adt/timestamp.c:5149 +#: utils/adt/timestamp.c:5196 utils/adt/timestamp.c:5326 #, c-format msgid "unit \"%s\" not supported for type %s" msgstr "одиниця \"%s\" не підтримується для типу %s" #: utils/adt/date.c:1223 utils/adt/date.c:2211 utils/adt/date.c:2993 -#: utils/adt/timestamp.c:4046 utils/adt/timestamp.c:4242 -#: utils/adt/timestamp.c:4411 utils/adt/timestamp.c:4610 -#: utils/adt/timestamp.c:4907 utils/adt/timestamp.c:5178 -#: utils/adt/timestamp.c:5360 +#: utils/adt/timestamp.c:4073 utils/adt/timestamp.c:4269 +#: utils/adt/timestamp.c:4438 utils/adt/timestamp.c:4637 +#: utils/adt/timestamp.c:4934 utils/adt/timestamp.c:5205 +#: utils/adt/timestamp.c:5387 #, c-format msgid "unit \"%s\" not recognized for type %s" msgstr "нерозпізнана одиниця \"%s\" для типу %s" @@ -22871,16 +22854,16 @@ msgstr "нерозпізнана одиниця \"%s\" для типу %s" #: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:3022 #: utils/adt/timestamp.c:3045 utils/adt/timestamp.c:3058 #: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3077 -#: utils/adt/timestamp.c:3736 utils/adt/timestamp.c:3860 -#: utils/adt/timestamp.c:3950 utils/adt/timestamp.c:4040 -#: utils/adt/timestamp.c:4133 utils/adt/timestamp.c:4236 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4989 -#: utils/adt/timestamp.c:5439 utils/adt/timestamp.c:5453 -#: utils/adt/timestamp.c:5458 utils/adt/timestamp.c:5472 -#: utils/adt/timestamp.c:5505 utils/adt/timestamp.c:5592 -#: utils/adt/timestamp.c:5633 utils/adt/timestamp.c:5637 -#: utils/adt/timestamp.c:5706 utils/adt/timestamp.c:5710 -#: utils/adt/timestamp.c:5724 utils/adt/timestamp.c:5758 utils/adt/xml.c:2231 +#: utils/adt/timestamp.c:3763 utils/adt/timestamp.c:3887 +#: utils/adt/timestamp.c:3977 utils/adt/timestamp.c:4067 +#: utils/adt/timestamp.c:4160 utils/adt/timestamp.c:4263 +#: utils/adt/timestamp.c:4742 utils/adt/timestamp.c:5016 +#: utils/adt/timestamp.c:5466 utils/adt/timestamp.c:5480 +#: utils/adt/timestamp.c:5485 utils/adt/timestamp.c:5499 +#: utils/adt/timestamp.c:5532 utils/adt/timestamp.c:5619 +#: utils/adt/timestamp.c:5660 utils/adt/timestamp.c:5664 +#: utils/adt/timestamp.c:5733 utils/adt/timestamp.c:5737 +#: utils/adt/timestamp.c:5751 utils/adt/timestamp.c:5785 utils/adt/xml.c:2231 #: utils/adt/xml.c:2238 utils/adt/xml.c:2258 utils/adt/xml.c:2265 #, c-format msgid "timestamp out of range" @@ -22899,8 +22882,8 @@ msgstr "значення поля типу time поза діапазоном: % #: utils/adt/date.c:2096 utils/adt/date.c:2630 utils/adt/float.c:1048 #: utils/adt/float.c:1124 utils/adt/int.c:634 utils/adt/int.c:681 #: utils/adt/int.c:716 utils/adt/int8.c:414 utils/adt/numeric.c:2497 -#: utils/adt/timestamp.c:3386 utils/adt/timestamp.c:3417 -#: utils/adt/timestamp.c:3448 +#: utils/adt/timestamp.c:3413 utils/adt/timestamp.c:3444 +#: utils/adt/timestamp.c:3475 #, c-format msgid "invalid preceding or following size in window function" msgstr "неприпустимий розмір preceding або following у віконній функції" @@ -22912,13 +22895,13 @@ msgstr "зсув часового поясу поза діапазоном" #: utils/adt/date.c:3084 utils/adt/datetime.c:1121 utils/adt/datetime.c:2027 #: utils/adt/datetime.c:4898 utils/adt/timestamp.c:516 -#: utils/adt/timestamp.c:543 utils/adt/timestamp.c:4319 -#: utils/adt/timestamp.c:5464 utils/adt/timestamp.c:5716 +#: utils/adt/timestamp.c:543 utils/adt/timestamp.c:4346 +#: utils/adt/timestamp.c:5491 utils/adt/timestamp.c:5743 #, c-format msgid "time zone \"%s\" not recognized" msgstr "часовий пояс \"%s\" не розпізнаний" -#: utils/adt/date.c:3116 utils/adt/timestamp.c:5494 utils/adt/timestamp.c:5747 +#: utils/adt/date.c:3117 utils/adt/timestamp.c:5521 utils/adt/timestamp.c:5774 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "інтервал \"%s\", який задає часовий пояс, не повинен включати місяці або дні" @@ -22948,7 +22931,7 @@ msgstr "зміщення часового поясу, поза діапазон msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"." msgstr "Це ім'я часового поясу з'являється у файлі конфігурації часового поясу з кодом \"%s\"." -#: utils/adt/datum.c:90 utils/adt/datum.c:102 +#: utils/adt/datum.c:91 utils/adt/datum.c:103 #, c-format msgid "invalid Datum pointer" msgstr "неприпустимий вказівник Datum" @@ -23493,7 +23476,7 @@ msgid "invalid int2vector data" msgstr "неприпустимі дані int2vector" #: utils/adt/int.c:1528 utils/adt/int8.c:1404 utils/adt/numeric.c:1678 -#: utils/adt/timestamp.c:5809 utils/adt/timestamp.c:5889 +#: utils/adt/timestamp.c:5836 utils/adt/timestamp.c:5916 #, c-format msgid "step size cannot equal zero" msgstr "розмір кроку не може дорівнювати нулю" @@ -24517,22 +24500,22 @@ msgstr "віднімати NaN з pg_lsn не можна" msgid "function can only be called when server is in binary upgrade mode" msgstr "функцію можна викликати тільки коли сервер знаходиться в режимі двійкового оновлення" -#: utils/adt/pgstatfuncs.c:482 +#: utils/adt/pgstatfuncs.c:483 #, c-format msgid "invalid command name: \"%s\"" msgstr "неприпустиме ім’я команди: \"%s\"" -#: utils/adt/pgstatfuncs.c:2114 +#: utils/adt/pgstatfuncs.c:2115 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "нерозпізнане відновлення мети: \"%s\"" -#: utils/adt/pgstatfuncs.c:2115 +#: utils/adt/pgstatfuncs.c:2116 #, c-format msgid "Target must be \"archiver\", \"bgwriter\", \"recovery_prefetch\", or \"wal\"." msgstr "Ціль має бути \"archiver\", \"bgwriter\", \"recovery_prefetch\", або \"wal\"." -#: utils/adt/pgstatfuncs.c:2193 +#: utils/adt/pgstatfuncs.c:2198 #, c-format msgid "invalid subscription OID %u" msgstr "некоректний OID підписки %u" @@ -24635,7 +24618,7 @@ msgstr "Якщо ви хочете використовувати regexp_replace #: utils/adt/regexp.c:702 utils/adt/regexp.c:711 utils/adt/regexp.c:1068 #: utils/adt/regexp.c:1132 utils/adt/regexp.c:1141 utils/adt/regexp.c:1150 #: utils/adt/regexp.c:1159 utils/adt/regexp.c:1839 utils/adt/regexp.c:1848 -#: utils/adt/regexp.c:1857 utils/misc/guc.c:11860 utils/misc/guc.c:11894 +#: utils/adt/regexp.c:1857 utils/misc/guc.c:11868 utils/misc/guc.c:11902 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "неприпустиме значення для параметра \"%s\": %d" @@ -24684,7 +24667,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:10021 utils/adt/ruleutils.c:10190 +#: utils/adt/ruleutils.c:10028 utils/adt/ruleutils.c:10197 #, c-format msgid "too many arguments" msgstr "занадто багато аргументів" @@ -24890,7 +24873,7 @@ msgstr "TIMESTAMP(%d)%s точність не повинна бути від'є msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "TIMESTAMP(%d)%s точність зменшена до дозволеного максимуму, %d" -#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12884 +#: utils/adt/timestamp.c:179 utils/adt/timestamp.c:437 utils/misc/guc.c:12892 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "позначка часу поза діапазоном: \"%s\"" @@ -24926,6 +24909,20 @@ msgstr "позначка часу не може бути NaN" msgid "timestamp out of range: \"%g\"" msgstr "позначка часу поза діапазоном: \"%g\"" +#: utils/adt/timestamp.c:938 utils/adt/timestamp.c:1509 +#: utils/adt/timestamp.c:2761 utils/adt/timestamp.c:2778 +#: utils/adt/timestamp.c:2831 utils/adt/timestamp.c:2870 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3120 +#: utils/adt/timestamp.c:3125 utils/adt/timestamp.c:3175 +#: utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3189 +#: utils/adt/timestamp.c:3209 utils/adt/timestamp.c:3216 +#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3310 +#: utils/adt/timestamp.c:3385 utils/adt/timestamp.c:3758 +#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4432 +#, c-format +msgid "interval out of range" +msgstr "інтервал поза діапазоном" + #: utils/adt/timestamp.c:1062 utils/adt/timestamp.c:1095 #, c-format msgid "invalid INTERVAL type modifier" @@ -24951,22 +24948,22 @@ msgstr "interval(%d) точність повинна бути між %d і %d" msgid "cannot subtract infinite timestamps" msgstr "віднімати безкінечні позначки часу не можна" -#: utils/adt/timestamp.c:3891 utils/adt/timestamp.c:4074 +#: utils/adt/timestamp.c:3918 utils/adt/timestamp.c:4101 #, c-format msgid "origin out of range" msgstr "джерело поза діапазоном" -#: utils/adt/timestamp.c:3896 utils/adt/timestamp.c:4079 +#: utils/adt/timestamp.c:3923 utils/adt/timestamp.c:4106 #, c-format msgid "timestamps cannot be binned into intervals containing months or years" msgstr "позначки часу не можна розділяти на інтервали, що містять місяці або роки" -#: utils/adt/timestamp.c:3903 utils/adt/timestamp.c:4086 +#: utils/adt/timestamp.c:3930 utils/adt/timestamp.c:4113 #, c-format msgid "stride must be greater than zero" msgstr "крок повинен бути більше нуля" -#: utils/adt/timestamp.c:4399 +#: utils/adt/timestamp.c:4426 #, c-format msgid "Months usually have fractional weeks." msgstr "У місяців зазвичай є дробові тижні." @@ -25473,47 +25470,52 @@ msgstr "XML не підтримує безкінченні значення в msgid "invalid query" msgstr "неприпустимий запит" -#: utils/adt/xml.c:4015 +#: utils/adt/xml.c:2767 +#, c-format +msgid "portal \"%s\" does not return tuples" +msgstr "portal \"%s\" не повертає кортежі" + +#: utils/adt/xml.c:4019 #, c-format msgid "invalid array for XML namespace mapping" msgstr "неприпустимий масив з зіставленням простіру імен XML" -#: utils/adt/xml.c:4016 +#: utils/adt/xml.c:4020 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "Масив повинен бути двовимірним і містити 2 елемента по другій вісі." -#: utils/adt/xml.c:4040 +#: utils/adt/xml.c:4044 #, c-format msgid "empty XPath expression" msgstr "пустий вираз XPath" -#: utils/adt/xml.c:4092 +#: utils/adt/xml.c:4096 #, c-format msgid "neither namespace name nor URI may be null" msgstr "ні ім'я простіру імен ні URI не можуть бути null" -#: utils/adt/xml.c:4099 +#: utils/adt/xml.c:4103 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "не вдалося зареєструвати простір імен XML з ім'ям \"%s\" і URI \"%s\"" -#: utils/adt/xml.c:4450 +#: utils/adt/xml.c:4454 #, c-format msgid "DEFAULT namespace is not supported" msgstr "Простір імен DEFAULT не підтримується" -#: utils/adt/xml.c:4479 +#: utils/adt/xml.c:4483 #, c-format msgid "row path filter must not be empty string" msgstr "шлях фільтруючих рядків не повинен бути пустим" -#: utils/adt/xml.c:4510 +#: utils/adt/xml.c:4514 #, c-format msgid "column path filter must not be empty string" msgstr "шлях фільтруючого стовпця не повинен бути пустим" -#: utils/adt/xml.c:4654 +#: utils/adt/xml.c:4658 #, c-format msgid "more than one value returned by column XPath expression" msgstr "вираз XPath, який відбирає стовпець, повернув більше одного значення" @@ -25544,7 +25546,7 @@ msgstr "для типу %s немає доступної функції виво msgid "operator class \"%s\" of access method %s is missing support function %d for type %s" msgstr "в класі операторів \"%s\" методу доступу %s пропущено опорну функцію %d для типу %s" -#: utils/cache/plancache.c:722 +#: utils/cache/plancache.c:724 #, c-format msgid "cached plan must not change result type" msgstr "в кешованому плані не повинен змінюватись тип результату" @@ -25902,123 +25904,123 @@ msgstr "для ролі \"%s\" вхід не дозволений" msgid "too many connections for role \"%s\"" msgstr "занадто багато підключень для ролі \"%s\"" -#: utils/init/miscinit.c:841 +#: utils/init/miscinit.c:849 #, c-format msgid "permission denied to set session authorization" msgstr "немає прав для встановлення авторизації в сеансі" -#: utils/init/miscinit.c:924 +#: utils/init/miscinit.c:932 #, c-format msgid "invalid role OID: %u" msgstr "неприпустимий OID ролі: %u" -#: utils/init/miscinit.c:978 +#: utils/init/miscinit.c:986 #, c-format msgid "database system is shut down" msgstr "система бази даних вимкнена" -#: utils/init/miscinit.c:1065 +#: utils/init/miscinit.c:1073 #, c-format msgid "could not create lock file \"%s\": %m" msgstr "не вдалося створити файл блокування \"%s\": %m" -#: utils/init/miscinit.c:1079 +#: utils/init/miscinit.c:1087 #, c-format msgid "could not open lock file \"%s\": %m" msgstr "не вдалося відкрити файл блокування \"%s\": %m" -#: utils/init/miscinit.c:1086 +#: utils/init/miscinit.c:1094 #, c-format msgid "could not read lock file \"%s\": %m" msgstr "не вдалося прочитати файл блокування \"%s\": %m" -#: utils/init/miscinit.c:1095 +#: utils/init/miscinit.c:1103 #, c-format msgid "lock file \"%s\" is empty" msgstr "файл блокування \"%s\" пустий" -#: utils/init/miscinit.c:1096 +#: utils/init/miscinit.c:1104 #, c-format msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash." msgstr "Або зараз запускається інший сервер, або цей файл блокування залишився в результаті збою під час попереднього запуску." -#: utils/init/miscinit.c:1140 +#: utils/init/miscinit.c:1148 #, c-format msgid "lock file \"%s\" already exists" msgstr "файл блокування \"%s\" вже існує" -#: utils/init/miscinit.c:1144 +#: utils/init/miscinit.c:1152 #, c-format msgid "Is another postgres (PID %d) running in data directory \"%s\"?" msgstr "Інший postgres (PID %d) працює з каталогом даних \"%s\"?" -#: utils/init/miscinit.c:1146 +#: utils/init/miscinit.c:1154 #, c-format msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" msgstr "Інший postmaster (PID %d) працює з каталогом даних \"%s\"?" -#: utils/init/miscinit.c:1149 +#: utils/init/miscinit.c:1157 #, c-format msgid "Is another postgres (PID %d) using socket file \"%s\"?" msgstr "Інший postgres (PID %d) використовує файл сокету \"%s\"?" -#: utils/init/miscinit.c:1151 +#: utils/init/miscinit.c:1159 #, c-format msgid "Is another postmaster (PID %d) using socket file \"%s\"?" msgstr "Інший postmaster (PID %d) використовує файл сокету \"%s\"?" -#: utils/init/miscinit.c:1202 +#: utils/init/miscinit.c:1210 #, c-format msgid "could not remove old lock file \"%s\": %m" msgstr "не вдалося видалити старий файл блокування \"%s\": %m" -#: utils/init/miscinit.c:1204 +#: utils/init/miscinit.c:1212 #, c-format msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again." msgstr "Здається, файл залишився випадково, але видалити його не вийшло. Будь-ласка, видаліть файл вручну або спробуйте знову." -#: utils/init/miscinit.c:1241 utils/init/miscinit.c:1255 -#: utils/init/miscinit.c:1266 +#: utils/init/miscinit.c:1249 utils/init/miscinit.c:1263 +#: utils/init/miscinit.c:1274 #, c-format msgid "could not write lock file \"%s\": %m" msgstr "не вдалося записати файл блокування \"%s\": %m" -#: utils/init/miscinit.c:1377 utils/init/miscinit.c:1519 utils/misc/guc.c:10828 +#: utils/init/miscinit.c:1385 utils/init/miscinit.c:1527 utils/misc/guc.c:10836 #, c-format msgid "could not read from file \"%s\": %m" msgstr "не вдалося прочитати з файлу \"%s\": %m" -#: utils/init/miscinit.c:1507 +#: utils/init/miscinit.c:1515 #, c-format msgid "could not open file \"%s\": %m; continuing anyway" msgstr "не вдалося відкрити файл \"%s\": %m; все одно продовжується" -#: utils/init/miscinit.c:1532 +#: utils/init/miscinit.c:1540 #, c-format msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" msgstr "файл блокування \"%s\" містить неправильний PID: %ld замість %ld" -#: utils/init/miscinit.c:1571 utils/init/miscinit.c:1587 +#: utils/init/miscinit.c:1579 utils/init/miscinit.c:1595 #, c-format msgid "\"%s\" is not a valid data directory" msgstr "\"%s\" не є припустимим каталогом даних" -#: utils/init/miscinit.c:1573 +#: utils/init/miscinit.c:1581 #, c-format msgid "File \"%s\" is missing." msgstr "Файл \"%s\" пропущено." -#: utils/init/miscinit.c:1589 +#: utils/init/miscinit.c:1597 #, c-format msgid "File \"%s\" does not contain valid data." msgstr "Файл \"%s\" не містить припустимих даних." -#: utils/init/miscinit.c:1591 +#: utils/init/miscinit.c:1599 #, c-format msgid "You might need to initdb." msgstr "Можливо, вам слід виконати initdb." -#: utils/init/miscinit.c:1599 +#: utils/init/miscinit.c:1607 #, c-format msgid "The data directory was initialized by PostgreSQL version %s, which is not compatible with this version %s." msgstr "Каталог даних ініціалізований сервером PostgreSQL версії %s, не сумісною з цією версією %s." @@ -26158,22 +26160,22 @@ msgstr "слоти підключень, які залишились, зарез msgid "must be superuser or replication role to start walsender" msgstr "для запуску процесу walsender потребується роль реплікації або бути суперкористувачем" -#: utils/init/postinit.c:964 -#, c-format -msgid "database %u does not exist" -msgstr "база даних %u не існує" - -#: utils/init/postinit.c:1054 +#: utils/init/postinit.c:1012 #, c-format msgid "It seems to have just been dropped or renamed." msgstr "Схоже, вона щойно була видалена або перейменована." -#: utils/init/postinit.c:1061 +#: utils/init/postinit.c:1016 +#, c-format +msgid "database %u does not exist" +msgstr "база даних %u не існує" + +#: utils/init/postinit.c:1025 #, c-format msgid "cannot connect to invalid database \"%s\"" msgstr "неможливо під'єднатися до невірної бази даних \"%s\"" -#: utils/init/postinit.c:1081 +#: utils/init/postinit.c:1085 #, c-format msgid "The database subdirectory \"%s\" is missing." msgstr "Підкаталог бази даних \"%s\" пропущений." @@ -26200,11 +26202,6 @@ msgstr "неочікуваний ідентифікатор кодування % msgid "conversion between %s and %s is not supported" msgstr "перетворення між %s і %s не підтримується" -#: utils/mb/mbutils.c:385 -#, c-format -msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" -msgstr "функції за замовчуванням перетворення з кодування \"%s\" в \"%s\" не існує" - #: utils/mb/mbutils.c:402 utils/mb/mbutils.c:430 utils/mb/mbutils.c:815 #: utils/mb/mbutils.c:842 #, c-format @@ -26547,8 +26544,8 @@ msgid "Forces synchronization of updates to disk." msgstr "Примусова синхронізація оновлень на диск." #: utils/misc/guc.c:1287 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." -msgstr "Сервер буде використовувати системний виклик fsync() в декількох місцях, щоб впевнитись, що оновлення фізично записані на диск. Це дозволить привести кластер бази даних в узгоджений стан після аварійного завершення роботи операційної системи або апаратного забезпечення." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgstr "Сервер буде використовувати системний виклик fsync() в декількох місцях, щоб переконатися, що оновлення фізично записані на диск. Це гарантує, що кластер баз даних відновиться до узгодженого стану після аварійного завершення роботи операційної системи чи апаратного збою." #: utils/misc/guc.c:1298 msgid "Continues processing after a checksum failure." @@ -28276,7 +28273,7 @@ msgid "parameter \"%s\" cannot be changed now" msgstr "параметр \"%s\" не може бути змінений зараз" #: utils/misc/guc.c:7725 utils/misc/guc.c:7783 utils/misc/guc.c:8896 -#: utils/misc/guc.c:11796 +#: utils/misc/guc.c:11804 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "немає прав для встановлення параметру \"%s\"" @@ -28291,7 +28288,7 @@ msgstr "параметр \"%s\" не можна встановити після msgid "cannot set parameter \"%s\" within security-definer function" msgstr "параметр \"%s\" не можна встановити в межах функції безпеки" -#: utils/misc/guc.c:8475 utils/misc/guc.c:8522 utils/misc/guc.c:10002 +#: utils/misc/guc.c:8475 utils/misc/guc.c:8522 utils/misc/guc.c:10009 #, c-format msgid "must be superuser or have privileges of pg_read_all_settings to examine \"%s\"" msgstr "щоб дослідити \"%s\", потрібно бути суперкористувачем або мати права ролі pg_read_all_settings" @@ -28341,92 +28338,92 @@ msgstr "неприпустима назва параметра конфігур msgid "\"%s\" is now a reserved prefix." msgstr "\"%s\" тепер є зарезервованим префіксом." -#: utils/misc/guc.c:11236 +#: utils/misc/guc.c:11244 #, c-format msgid "while setting parameter \"%s\" to \"%s\"" msgstr "під час налаштування параметру \"%s\" на \"%s\"" -#: utils/misc/guc.c:11405 +#: utils/misc/guc.c:11413 #, c-format msgid "parameter \"%s\" could not be set" msgstr "параметр \"%s\" не вдалося встановити" -#: utils/misc/guc.c:11497 +#: utils/misc/guc.c:11505 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "не вдалося аналізувати налаштування параметру \"%s\"" -#: utils/misc/guc.c:11928 +#: utils/misc/guc.c:11936 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "неприпустиме значення для параметра \"%s\": %g" -#: utils/misc/guc.c:12241 +#: utils/misc/guc.c:12249 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "параметр \"temp_buffers\" не можна змінити після того, як тимчасові таблиці отримали доступ в сеансі." -#: utils/misc/guc.c:12253 +#: utils/misc/guc.c:12261 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour не підтримується даною збіркою" -#: utils/misc/guc.c:12266 +#: utils/misc/guc.c:12274 #, c-format msgid "SSL is not supported by this build" msgstr "SSL не підтримується даною збіркою" -#: utils/misc/guc.c:12278 +#: utils/misc/guc.c:12286 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "Не можна ввімкнути параметр, коли \"log_statement_stats\" дорівнює true." -#: utils/misc/guc.c:12290 +#: utils/misc/guc.c:12298 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "Не можна ввімкнути \"log_statement_stats\", коли \"log_parser_stats\", \"log_planner_stats\", або \"log_executor_stats\" дорівнюють true." -#: utils/misc/guc.c:12520 +#: utils/misc/guc.c:12528 #, c-format msgid "effective_io_concurrency must be set to 0 on platforms that lack posix_fadvise()." msgstr "значення effective_io_concurrency повинне дорівнювати 0 (нулю) на платформах, де відсутній posix_fadvise()." -#: utils/misc/guc.c:12533 +#: utils/misc/guc.c:12541 #, c-format msgid "maintenance_io_concurrency must be set to 0 on platforms that lack posix_fadvise()." msgstr "maintenance_io_concurrency повинне бути встановлене на 0, на платформах які не мають posix_fadvise()." -#: utils/misc/guc.c:12547 +#: utils/misc/guc.c:12555 #, c-format msgid "huge_page_size must be 0 on this platform." msgstr "huge_page_size повинен бути 0 на цій платформі." -#: utils/misc/guc.c:12559 +#: utils/misc/guc.c:12567 #, c-format msgid "client_connection_check_interval must be set to 0 on this platform." msgstr "client_connection_check_interval має бути встановлений в 0 на цій платформі." -#: utils/misc/guc.c:12671 +#: utils/misc/guc.c:12679 #, c-format msgid "invalid character" msgstr "неприпустимий символ" -#: utils/misc/guc.c:12731 +#: utils/misc/guc.c:12739 #, c-format msgid "recovery_target_timeline is not a valid number." msgstr "recovery_target_timeline не є допустимим числом." -#: utils/misc/guc.c:12771 +#: utils/misc/guc.c:12779 #, c-format msgid "multiple recovery targets specified" msgstr "вказано декілька цілей відновлення" -#: utils/misc/guc.c:12772 +#: utils/misc/guc.c:12780 #, c-format msgid "At most one of recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid may be set." msgstr "Максимум один із recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid може бути встановлений." -#: utils/misc/guc.c:12780 +#: utils/misc/guc.c:12788 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Єдиним дозволеним значенням є \"immediate\"." @@ -28436,8 +28433,8 @@ msgstr "Єдиним дозволеним значенням є \"immediate\"." msgid "internal error: unrecognized run-time parameter type\n" msgstr "внутрішня помилка: нерозпізнаний тип параметра часу виконання\n" -#: utils/misc/pg_controldata.c:60 utils/misc/pg_controldata.c:138 -#: utils/misc/pg_controldata.c:241 utils/misc/pg_controldata.c:306 +#: utils/misc/pg_controldata.c:63 utils/misc/pg_controldata.c:143 +#: utils/misc/pg_controldata.c:248 utils/misc/pg_controldata.c:315 #, c-format msgid "calculated CRC checksum does not match value stored in file" msgstr "обчислена контрольна сума CRC не відповідає значенню, збереженому у файлі" diff --git a/src/backend/po/zh_CN.po b/src/backend/po/zh_CN.po index ea09bf2..5ff434a 100644 --- a/src/backend/po/zh_CN.po +++ b/src/backend/po/zh_CN.po @@ -24615,7 +24615,7 @@ msgid "Forces synchronization of updates to disk." msgstr "强制和磁盘同步更新" #: utils/misc/guc.c:1127 -msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." +msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "服务器将在多个位置使用系统调用fsync()来确定更新操作已经将数据写入磁盘.这将确保在操作系统或硬件崩溃后数据库集群将恢复到一个一致性状态. " #: utils/misc/guc.c:1138 diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c index 52944a0..3358001 100644 --- a/src/backend/port/win32/socket.c +++ b/src/backend/port/win32/socket.c @@ -303,6 +303,7 @@ pgwin32_socket(int af, int type, int protocol) if (ioctlsocket(s, FIONBIO, &on)) { TranslateSocketError(); + closesocket(s); return INVALID_SOCKET; } errno = 0; diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c index 096a08e..a468420 100644 --- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c +++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c @@ -373,6 +373,10 @@ libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli) "the primary server: %s", pchomp(PQerrorMessage(conn->streamConn))))); } + /* + * IDENTIFY_SYSTEM returns 3 columns in 9.3 and earlier, and 4 columns in + * 9.4 and onwards. + */ if (PQnfields(res) < 3 || PQntuples(res) != 1) { int ntuples = PQntuples(res); @@ -383,7 +387,7 @@ libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli) (errcode(ERRCODE_PROTOCOL_VIOLATION), errmsg("invalid response from primary server"), errdetail("Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields.", - ntuples, nfields, 3, 1))); + ntuples, nfields, 1, 3))); } primary_sysid = pstrdup(PQgetvalue(res, 0, 0)); *primary_tli = pg_strtoint32(PQgetvalue(res, 0, 1)); diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index 3eaaaac..3981994 100644 --- a/src/backend/replication/logical/snapbuild.c +++ b/src/backend/replication/logical/snapbuild.c @@ -2126,11 +2126,13 @@ SnapBuildXidSetCatalogChanges(SnapBuild *builder, TransactionId xid, int subxcnt TransactionId *subxacts, XLogRecPtr lsn) { /* - * Skip if there is no initial running xacts information or the - * transaction is already marked as containing catalog changes. + * Skip if there is no initial running xacts information. + * + * Even if the transaction has been marked as containing catalog + * changes, it cannot be skipped because its subtransactions that + * modified the catalog may not be marked. */ - if (NInitialRunningXacts == 0 || - ReorderBufferXidHasCatalogChanges(builder->reorder, xid)) + if (NInitialRunningXacts == 0) return; if (bsearch(&xid, InitialRunningXacts, NInitialRunningXacts, diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index b7b933d..c3dd902 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -518,15 +518,25 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn) /* Now safe to release the LWLock */ LWLockRelease(LogicalRepWorkerLock); + if (started_tx) + { + /* + * We must commit the existing transaction to release + * the existing locks before entering a busy loop. + * This is required to avoid any undetected deadlocks + * due to any existing lock as deadlock detector won't + * be able to detect the waits on the latch. + */ + CommitTransactionCommand(); + pgstat_report_stat(false); + } + /* * Enter busy loop and wait for synchronization worker to * reach expected state (or die trying). */ - if (!started_tx) - { - StartTransactionCommand(); - started_tx = true; - } + StartTransactionCommand(); + started_tx = true; wait_for_relation_state_change(rstate->relid, SUBREL_STATE_SYNCDONE); @@ -1043,22 +1053,30 @@ copy_table(Relation rel) /* Regular table with no row filter */ if (lrel.relkind == RELKIND_RELATION && qual == NIL) { - appendStringInfo(&cmd, "COPY %s (", + appendStringInfo(&cmd, "COPY %s", quote_qualified_identifier(lrel.nspname, lrel.relname)); - /* - * XXX Do we need to list the columns in all cases? Maybe we're - * replicating all columns? - */ - for (int i = 0; i < lrel.natts; i++) + /* If the table has columns, then specify the columns */ + if (lrel.natts) { - if (i > 0) - appendStringInfoString(&cmd, ", "); + appendStringInfoString(&cmd, " ("); - appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i])); + /* + * XXX Do we need to list the columns in all cases? Maybe we're + * replicating all columns? + */ + for (int i = 0; i < lrel.natts; i++) + { + if (i > 0) + appendStringInfoString(&cmd, ", "); + + appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i])); + } + + appendStringInfoString(&cmd, ")"); } - appendStringInfo(&cmd, ") TO STDOUT"); + appendStringInfo(&cmd, " TO STDOUT"); } else { diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c index 63a8442..5fc0def 100644 --- a/src/backend/replication/pgoutput/pgoutput.c +++ b/src/backend/replication/pgoutput/pgoutput.c @@ -1095,8 +1095,8 @@ init_tuple_slot(PGOutputData *data, Relation relation, * Create tuple table slots. Create a copy of the TupleDesc as it needs to * live as long as the cache remains. */ - oldtupdesc = CreateTupleDescCopy(RelationGetDescr(relation)); - newtupdesc = CreateTupleDescCopy(RelationGetDescr(relation)); + oldtupdesc = CreateTupleDescCopyConstr(RelationGetDescr(relation)); + newtupdesc = CreateTupleDescCopyConstr(RelationGetDescr(relation)); entry->old_slot = MakeSingleTupleTableSlot(oldtupdesc, &TTSOpsHeapTuple); entry->new_slot = MakeSingleTupleTableSlot(newtupdesc, &TTSOpsHeapTuple); diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 4655d8c..3c4da3c 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -2220,8 +2220,7 @@ GetSnapshotDataReuse(Snapshot snapshot) * but since PGPROC has only a limited cache area for subxact XIDs, full * information may not be available. If we find any overflowed subxid arrays, * we have to mark the snapshot's subxid data as overflowed, and extra work - * *may* need to be done to determine what's running (see XidInMVCCSnapshot() - * in heapam_visibility.c). + * *may* need to be done to determine what's running (see XidInMVCCSnapshot()). * * We also update the following backend-global variables: * TransactionXmin: the oldest xmin of any snapshot in use in the diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c index 3bb4486..ea34ee7 100644 --- a/src/backend/storage/lmgr/lwlock.c +++ b/src/backend/storage/lmgr/lwlock.c @@ -987,6 +987,15 @@ LWLockWakeup(LWLock *lock) wokeup_somebody = true; } + /* + * Signal that the process isn't on the wait list anymore. This allows + * LWLockDequeueSelf() to remove itself of the waitlist with a + * proclist_delete(), rather than having to check if it has been + * removed from the list. + */ + Assert(waiter->lwWaiting == LW_WS_WAITING); + waiter->lwWaiting = LW_WS_PENDING_WAKEUP; + /* * Once we've woken up an exclusive lock, there's no point in waking * up anybody else. @@ -1044,7 +1053,7 @@ LWLockWakeup(LWLock *lock) * another lock. */ pg_write_barrier(); - waiter->lwWaiting = false; + waiter->lwWaiting = LW_WS_NOT_WAITING; PGSemaphoreUnlock(waiter->sem); } } @@ -1065,7 +1074,7 @@ LWLockQueueSelf(LWLock *lock, LWLockMode mode) if (MyProc == NULL) elog(PANIC, "cannot wait without a PGPROC structure"); - if (MyProc->lwWaiting) + if (MyProc->lwWaiting != LW_WS_NOT_WAITING) elog(PANIC, "queueing for lock while waiting on another one"); LWLockWaitListLock(lock); @@ -1073,7 +1082,7 @@ LWLockQueueSelf(LWLock *lock, LWLockMode mode) /* setting the flag is protected by the spinlock */ pg_atomic_fetch_or_u32(&lock->state, LW_FLAG_HAS_WAITERS); - MyProc->lwWaiting = true; + MyProc->lwWaiting = LW_WS_WAITING; MyProc->lwWaitMode = mode; /* LW_WAIT_UNTIL_FREE waiters are always at the front of the queue */ @@ -1100,8 +1109,7 @@ LWLockQueueSelf(LWLock *lock, LWLockMode mode) static void LWLockDequeueSelf(LWLock *lock) { - bool found = false; - proclist_mutable_iter iter; + bool on_waitlist; #ifdef LWLOCK_STATS lwlock_stats *lwstats; @@ -1114,18 +1122,13 @@ LWLockDequeueSelf(LWLock *lock) LWLockWaitListLock(lock); /* - * Can't just remove ourselves from the list, but we need to iterate over - * all entries as somebody else could have dequeued us. + * Remove ourselves from the waitlist, unless we've already been + * removed. The removal happens with the wait list lock held, so there's + * no race in this check. */ - proclist_foreach_modify(iter, &lock->waiters, lwWaitLink) - { - if (iter.cur == MyProc->pgprocno) - { - found = true; - proclist_delete(&lock->waiters, iter.cur, lwWaitLink); - break; - } - } + on_waitlist = MyProc->lwWaiting == LW_WS_WAITING; + if (on_waitlist) + proclist_delete(&lock->waiters, MyProc->pgprocno, lwWaitLink); if (proclist_is_empty(&lock->waiters) && (pg_atomic_read_u32(&lock->state) & LW_FLAG_HAS_WAITERS) != 0) @@ -1137,8 +1140,8 @@ LWLockDequeueSelf(LWLock *lock) LWLockWaitListUnlock(lock); /* clear waiting state again, nice for debugging */ - if (found) - MyProc->lwWaiting = false; + if (on_waitlist) + MyProc->lwWaiting = LW_WS_NOT_WAITING; else { int extraWaits = 0; @@ -1162,7 +1165,7 @@ LWLockDequeueSelf(LWLock *lock) for (;;) { PGSemaphoreLock(MyProc->sem); - if (!MyProc->lwWaiting) + if (MyProc->lwWaiting == LW_WS_NOT_WAITING) break; extraWaits++; } @@ -1313,7 +1316,7 @@ LWLockAcquire(LWLock *lock, LWLockMode mode) for (;;) { PGSemaphoreLock(proc->sem); - if (!proc->lwWaiting) + if (proc->lwWaiting == LW_WS_NOT_WAITING) break; extraWaits++; } @@ -1478,7 +1481,7 @@ LWLockAcquireOrWait(LWLock *lock, LWLockMode mode) for (;;) { PGSemaphoreLock(proc->sem); - if (!proc->lwWaiting) + if (proc->lwWaiting == LW_WS_NOT_WAITING) break; extraWaits++; } @@ -1694,7 +1697,7 @@ LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval) for (;;) { PGSemaphoreLock(proc->sem); - if (!proc->lwWaiting) + if (proc->lwWaiting == LW_WS_NOT_WAITING) break; extraWaits++; } @@ -1772,6 +1775,10 @@ LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 val) proclist_delete(&lock->waiters, iter.cur, lwWaitLink); proclist_push_tail(&wakeup, iter.cur, lwWaitLink); + + /* see LWLockWakeup() */ + Assert(waiter->lwWaiting == LW_WS_WAITING); + waiter->lwWaiting = LW_WS_PENDING_WAKEUP; } /* We are done updating shared state of the lock itself. */ @@ -1787,7 +1794,7 @@ LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 val) proclist_delete(&wakeup, iter.cur, lwWaitLink); /* check comment in LWLockWakeup() about this barrier */ pg_write_barrier(); - waiter->lwWaiting = false; + waiter->lwWaiting = LW_WS_NOT_WAITING; PGSemaphoreUnlock(waiter->sem); } } diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 1b514f4..c60707b 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -397,7 +397,7 @@ InitProcess(void) /* NB -- autovac launcher intentionally does not set IS_AUTOVACUUM */ if (IsAutoVacuumWorkerProcess()) MyProc->statusFlags |= PROC_IS_AUTOVACUUM; - MyProc->lwWaiting = false; + MyProc->lwWaiting = LW_WS_NOT_WAITING; MyProc->lwWaitMode = 0; MyProc->waitLock = NULL; MyProc->waitProcLock = NULL; @@ -579,7 +579,7 @@ InitAuxiliaryProcess(void) MyProc->isBackgroundWorker = IsBackgroundWorker; MyProc->delayChkptFlags = 0; MyProc->statusFlags = 0; - MyProc->lwWaiting = false; + MyProc->lwWaiting = LW_WS_NOT_WAITING; MyProc->lwWaitMode = 0; MyProc->waitLock = NULL; MyProc->waitProcLock = NULL; diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c index 3ecb15d..73f23bc 100644 --- a/src/backend/utils/activity/backend_status.c +++ b/src/backend/utils/activity/backend_status.c @@ -263,9 +263,9 @@ pgstat_beinit(void) * Assign the MyBEEntry for an auxiliary process. Since it doesn't * have a BackendId, the slot is statically allocated based on the * auxiliary process type (MyAuxProcType). Backends use slots indexed - * in the range from 1 to MaxBackends (inclusive), so we use - * MaxBackends + AuxBackendType + 1 as the index of the slot for an - * auxiliary process. + * in the range from 0 to MaxBackends (exclusive), so we use + * MaxBackends + AuxProcType as the index of the slot for an auxiliary + * process. */ MyBEEntry = &BackendStatusArray[MaxBackends + MyAuxProcType]; } diff --git a/src/backend/utils/activity/pgstat.c b/src/backend/utils/activity/pgstat.c index 84d65a7..142e26a 100644 --- a/src/backend/utils/activity/pgstat.c +++ b/src/backend/utils/activity/pgstat.c @@ -918,6 +918,9 @@ pgstat_snapshot_fixed(PgStat_Kind kind) AssertArg(pgstat_is_kind_valid(kind)); AssertArg(pgstat_get_kind_info(kind)->fixed_amount); + if (force_stats_snapshot_clear) + pgstat_clear_snapshot(); + if (pgstat_fetch_consistency == PGSTAT_FETCH_CONSISTENCY_SNAPSHOT) pgstat_build_snapshot(); else diff --git a/src/backend/utils/activity/wait_event.c b/src/backend/utils/activity/wait_event.c index 87c15b9..7875257 100644 --- a/src/backend/utils/activity/wait_event.c +++ b/src/backend/utils/activity/wait_event.c @@ -702,6 +702,9 @@ pgstat_get_wait_io(WaitEventIO w) case WAIT_EVENT_TWOPHASE_FILE_WRITE: event_name = "TwophaseFileWrite"; break; + case WAIT_EVENT_VERSION_FILE_SYNC: + event_name = "VersionFileSync"; + break; case WAIT_EVENT_VERSION_FILE_WRITE: event_name = "VersionFileWrite"; break; diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index f70f829..27073cb 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -2949,8 +2949,16 @@ timestamp_pl_interval(PG_FUNCTION_ARGS) (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), errmsg("timestamp out of range"))); - /* Add days by converting to and from Julian */ - julian = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) + span->day; + /* + * Add days by converting to and from Julian. We need an overflow + * check here since j2date expects a non-negative integer input. + */ + julian = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday); + if (pg_add_s32_overflow(julian, span->day, &julian) || + julian < 0) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("timestamp out of range"))); j2date(julian, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); if (tm2timestamp(tm, fsec, NULL, ×tamp) != 0) @@ -3057,8 +3065,19 @@ timestamptz_pl_interval(PG_FUNCTION_ARGS) (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), errmsg("timestamp out of range"))); - /* Add days by converting to and from Julian */ - julian = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) + span->day; + /* + * Add days by converting to and from Julian. We need an overflow + * check here since j2date expects a non-negative integer input. + * In practice though, it will give correct answers for small + * negative Julian dates; we should allow -1 to avoid + * timezone-dependent failures, as discussed in timestamp.h. + */ + julian = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday); + if (pg_add_s32_overflow(julian, span->day, &julian) || + julian < -1) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("timestamp out of range"))); j2date(julian, &tm->tm_year, &tm->tm_mon, &tm->tm_mday); tz = DetermineTimeZoneOffset(tm, session_timezone); @@ -3246,19 +3265,13 @@ interval_mul(PG_FUNCTION_ARGS) result = (Interval *) palloc(sizeof(Interval)); result_double = span->month * factor; - if (isnan(result_double) || - result_double > INT_MAX || result_double < INT_MIN) - ereport(ERROR, - (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), - errmsg("interval out of range"))); + if (isnan(result_double) || !FLOAT8_FITS_IN_INT32(result_double)) + goto out_of_range; result->month = (int32) result_double; result_double = span->day * factor; - if (isnan(result_double) || - result_double > INT_MAX || result_double < INT_MIN) - ereport(ERROR, - (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), - errmsg("interval out of range"))); + if (isnan(result_double) || !FLOAT8_FITS_IN_INT32(result_double)) + goto out_of_range; result->day = (int32) result_double; /* @@ -3292,20 +3305,30 @@ interval_mul(PG_FUNCTION_ARGS) */ if (Abs(sec_remainder) >= SECS_PER_DAY) { - result->day += (int) (sec_remainder / SECS_PER_DAY); + if (pg_add_s32_overflow(result->day, + (int) (sec_remainder / SECS_PER_DAY), + &result->day)) + goto out_of_range; sec_remainder -= (int) (sec_remainder / SECS_PER_DAY) * SECS_PER_DAY; } /* cascade units down */ - result->day += (int32) month_remainder_days; + if (pg_add_s32_overflow(result->day, (int32) month_remainder_days, + &result->day)) + goto out_of_range; result_double = rint(span->time * factor + sec_remainder * USECS_PER_SEC); if (isnan(result_double) || !FLOAT8_FITS_IN_INT64(result_double)) - ereport(ERROR, - (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), - errmsg("interval out of range"))); + goto out_of_range; result->time = (int64) result_double; PG_RETURN_INTERVAL_P(result); + +out_of_range: + ereport(ERROR, + errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("interval out of range")); + + PG_RETURN_NULL(); /* keep compiler quiet */ } Datum @@ -3324,7 +3347,8 @@ interval_div(PG_FUNCTION_ARGS) Interval *span = PG_GETARG_INTERVAL_P(0); float8 factor = PG_GETARG_FLOAT8(1); double month_remainder_days, - sec_remainder; + sec_remainder, + result_double; int32 orig_month = span->month, orig_day = span->day; Interval *result; @@ -3336,8 +3360,15 @@ interval_div(PG_FUNCTION_ARGS) (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); - result->month = (int32) (span->month / factor); - result->day = (int32) (span->day / factor); + result_double = span->month / factor; + if (isnan(result_double) || !FLOAT8_FITS_IN_INT32(result_double)) + goto out_of_range; + result->month = (int32) result_double; + + result_double = span->day / factor; + if (isnan(result_double) || !FLOAT8_FITS_IN_INT32(result_double)) + goto out_of_range; + result->day = (int32) result_double; /* * Fractional months full days into days. See comment in interval_mul(). @@ -3349,15 +3380,30 @@ interval_div(PG_FUNCTION_ARGS) sec_remainder = TSROUND(sec_remainder); if (Abs(sec_remainder) >= SECS_PER_DAY) { - result->day += (int) (sec_remainder / SECS_PER_DAY); + if (pg_add_s32_overflow(result->day, + (int) (sec_remainder / SECS_PER_DAY), + &result->day)) + goto out_of_range; sec_remainder -= (int) (sec_remainder / SECS_PER_DAY) * SECS_PER_DAY; } /* cascade units down */ - result->day += (int32) month_remainder_days; - result->time = rint(span->time / factor + sec_remainder * USECS_PER_SEC); + if (pg_add_s32_overflow(result->day, (int32) month_remainder_days, + &result->day)) + goto out_of_range; + result_double = rint(span->time / factor + sec_remainder * USECS_PER_SEC); + if (isnan(result_double) || !FLOAT8_FITS_IN_INT64(result_double)) + goto out_of_range; + result->time = (int64) result_double; PG_RETURN_INTERVAL_P(result); + +out_of_range: + ereport(ERROR, + errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("interval out of range")); + + PG_RETURN_NULL(); /* keep compiler quiet */ } diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 6411f56..aae0692 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -65,6 +65,16 @@ #if LIBXML_VERSION >= 20704 #define HAVE_XMLSTRUCTUREDERRORCONTEXT 1 #endif + +/* + * libxml2 2.12 decided to insert "const" into the error handler API. + */ +#if LIBXML_VERSION >= 21200 +#define PgXmlErrorPtr const xmlError * +#else +#define PgXmlErrorPtr xmlErrorPtr +#endif + #endif /* USE_LIBXML */ #include "access/htup_details.h" @@ -119,7 +129,7 @@ struct PgXmlErrorContext static xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt); -static void xml_errorHandler(void *data, xmlErrorPtr error); +static void xml_errorHandler(void *data, PgXmlErrorPtr error); static void xml_ereport_by_code(int level, int sqlcode, const char *msg, int errcode); static void chopStringInfoNewlines(StringInfo str); @@ -1749,7 +1759,7 @@ xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg) * Error handler for libxml errors and warnings */ static void -xml_errorHandler(void *data, xmlErrorPtr error) +xml_errorHandler(void *data, PgXmlErrorPtr error) { PgXmlErrorContext *xmlerrcxt = (PgXmlErrorContext *) data; xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) error->ctxt; diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index 38e943f..d22bc07 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -25,6 +25,7 @@ #include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "common/hashfn.h" +#include "common/pg_prng.h" #include "miscadmin.h" #include "port/pg_bitutils.h" #ifdef CATCACHE_STATS @@ -90,10 +91,10 @@ static void CatCachePrintStats(int code, Datum arg); static void CatCacheRemoveCTup(CatCache *cache, CatCTup *ct); static void CatCacheRemoveCList(CatCache *cache, CatCList *cl); static void CatalogCacheInitializeCache(CatCache *cache); -static CatCTup *CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, +static CatCTup *CatalogCacheCreateEntry(CatCache *cache, + HeapTuple ntp, SysScanDesc scandesc, Datum *arguments, - uint32 hashValue, Index hashIndex, - bool negative); + uint32 hashValue, Index hashIndex); static void CatCacheFreeKeys(TupleDesc tupdesc, int nkeys, int *attnos, Datum *keys); @@ -1318,6 +1319,7 @@ SearchCatCacheMiss(CatCache *cache, SysScanDesc scandesc; HeapTuple ntp; CatCTup *ct; + bool stale; Datum arguments[CATCACHE_MAXKEYS]; /* Initialize local parameter array */ @@ -1326,16 +1328,6 @@ SearchCatCacheMiss(CatCache *cache, arguments[2] = v3; arguments[3] = v4; - /* - * Ok, need to make a lookup in the relation, copy the scankey and fill - * out any per-call fields. - */ - memcpy(cur_skey, cache->cc_skey, sizeof(ScanKeyData) * nkeys); - cur_skey[0].sk_argument = v1; - cur_skey[1].sk_argument = v2; - cur_skey[2].sk_argument = v3; - cur_skey[3].sk_argument = v4; - /* * Tuple was not found in cache, so we have to try to retrieve it directly * from the relation. If found, we will add it to the cache; if not @@ -1350,31 +1342,57 @@ SearchCatCacheMiss(CatCache *cache, * will eventually age out of the cache, so there's no functional problem. * This case is rare enough that it's not worth expending extra cycles to * detect. + * + * Another case, which we *must* handle, is that the tuple could become + * outdated during CatalogCacheCreateEntry's attempt to detoast it (since + * AcceptInvalidationMessages can run during TOAST table access). We do + * not want to return already-stale catcache entries, so we loop around + * and do the table scan again if that happens. */ relation = table_open(cache->cc_reloid, AccessShareLock); - scandesc = systable_beginscan(relation, - cache->cc_indexoid, - IndexScanOK(cache, cur_skey), - NULL, - nkeys, - cur_skey); + do + { + /* + * Ok, need to make a lookup in the relation, copy the scankey and + * fill out any per-call fields. (We must re-do this when retrying, + * because systable_beginscan scribbles on the scankey.) + */ + memcpy(cur_skey, cache->cc_skey, sizeof(ScanKeyData) * nkeys); + cur_skey[0].sk_argument = v1; + cur_skey[1].sk_argument = v2; + cur_skey[2].sk_argument = v3; + cur_skey[3].sk_argument = v4; + + scandesc = systable_beginscan(relation, + cache->cc_indexoid, + IndexScanOK(cache, cur_skey), + NULL, + nkeys, + cur_skey); - ct = NULL; + ct = NULL; + stale = false; - while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) - { - ct = CatalogCacheCreateEntry(cache, ntp, arguments, - hashValue, hashIndex, - false); - /* immediately set the refcount to 1 */ - ResourceOwnerEnlargeCatCacheRefs(CurrentResourceOwner); - ct->refcount++; - ResourceOwnerRememberCatCacheRef(CurrentResourceOwner, &ct->tuple); - break; /* assume only one match */ - } + while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) + { + ct = CatalogCacheCreateEntry(cache, ntp, scandesc, NULL, + hashValue, hashIndex); + /* upon failure, we must start the scan over */ + if (ct == NULL) + { + stale = true; + break; + } + /* immediately set the refcount to 1 */ + ResourceOwnerEnlargeCatCacheRefs(CurrentResourceOwner); + ct->refcount++; + ResourceOwnerRememberCatCacheRef(CurrentResourceOwner, &ct->tuple); + break; /* assume only one match */ + } - systable_endscan(scandesc); + systable_endscan(scandesc); + } while (stale); table_close(relation, AccessShareLock); @@ -1393,9 +1411,11 @@ SearchCatCacheMiss(CatCache *cache, if (IsBootstrapProcessingMode()) return NULL; - ct = CatalogCacheCreateEntry(cache, NULL, arguments, - hashValue, hashIndex, - true); + ct = CatalogCacheCreateEntry(cache, NULL, NULL, arguments, + hashValue, hashIndex); + + /* Creating a negative cache entry shouldn't fail */ + Assert(ct != NULL); CACHE_elog(DEBUG2, "SearchCatCache(%s): Contains %d/%d tuples", cache->cc_relname, cache->cc_ntup, CacheHdr->ch_ntup); @@ -1602,7 +1622,8 @@ SearchCatCacheList(CatCache *cache, * We have to bump the member refcounts temporarily to ensure they won't * get dropped from the cache while loading other members. We use a PG_TRY * block to ensure we can undo those refcounts if we get an error before - * we finish constructing the CatCList. + * we finish constructing the CatCList. ctlist must be valid throughout + * the PG_TRY block. */ ResourceOwnerEnlargeCatCacheListRefs(CurrentResourceOwner); @@ -1613,83 +1634,113 @@ SearchCatCacheList(CatCache *cache, ScanKeyData cur_skey[CATCACHE_MAXKEYS]; Relation relation; SysScanDesc scandesc; - - /* - * Ok, need to make a lookup in the relation, copy the scankey and - * fill out any per-call fields. - */ - memcpy(cur_skey, cache->cc_skey, sizeof(ScanKeyData) * cache->cc_nkeys); - cur_skey[0].sk_argument = v1; - cur_skey[1].sk_argument = v2; - cur_skey[2].sk_argument = v3; - cur_skey[3].sk_argument = v4; + bool stale; relation = table_open(cache->cc_reloid, AccessShareLock); - scandesc = systable_beginscan(relation, - cache->cc_indexoid, - IndexScanOK(cache, cur_skey), - NULL, - nkeys, - cur_skey); - - /* The list will be ordered iff we are doing an index scan */ - ordered = (scandesc->irel != NULL); - - while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) + do { - uint32 hashValue; - Index hashIndex; - bool found = false; - dlist_head *bucket; - /* - * See if there's an entry for this tuple already. + * Ok, need to make a lookup in the relation, copy the scankey and + * fill out any per-call fields. (We must re-do this when + * retrying, because systable_beginscan scribbles on the scankey.) */ - ct = NULL; - hashValue = CatalogCacheComputeTupleHashValue(cache, cache->cc_nkeys, ntp); - hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); + memcpy(cur_skey, cache->cc_skey, sizeof(ScanKeyData) * cache->cc_nkeys); + cur_skey[0].sk_argument = v1; + cur_skey[1].sk_argument = v2; + cur_skey[2].sk_argument = v3; + cur_skey[3].sk_argument = v4; - bucket = &cache->cc_bucket[hashIndex]; - dlist_foreach(iter, bucket) - { - ct = dlist_container(CatCTup, cache_elem, iter.cur); + scandesc = systable_beginscan(relation, + cache->cc_indexoid, + IndexScanOK(cache, cur_skey), + NULL, + nkeys, + cur_skey); - if (ct->dead || ct->negative) - continue; /* ignore dead and negative entries */ + /* The list will be ordered iff we are doing an index scan */ + ordered = (scandesc->irel != NULL); - if (ct->hash_value != hashValue) - continue; /* quickly skip entry if wrong hash val */ + stale = false; - if (!ItemPointerEquals(&(ct->tuple.t_self), &(ntp->t_self))) - continue; /* not same tuple */ + while (HeapTupleIsValid(ntp = systable_getnext(scandesc))) + { + uint32 hashValue; + Index hashIndex; + bool found = false; + dlist_head *bucket; /* - * Found a match, but can't use it if it belongs to another - * list already + * See if there's an entry for this tuple already. */ - if (ct->c_list) - continue; - - found = true; - break; /* A-OK */ - } - - if (!found) - { - /* We didn't find a usable entry, so make a new one */ - ct = CatalogCacheCreateEntry(cache, ntp, arguments, - hashValue, hashIndex, - false); + ct = NULL; + hashValue = CatalogCacheComputeTupleHashValue(cache, cache->cc_nkeys, ntp); + hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); + + bucket = &cache->cc_bucket[hashIndex]; + dlist_foreach(iter, bucket) + { + ct = dlist_container(CatCTup, cache_elem, iter.cur); + + if (ct->dead || ct->negative) + continue; /* ignore dead and negative entries */ + + if (ct->hash_value != hashValue) + continue; /* quickly skip entry if wrong hash val */ + + if (!ItemPointerEquals(&(ct->tuple.t_self), &(ntp->t_self))) + continue; /* not same tuple */ + + /* + * Found a match, but can't use it if it belongs to + * another list already + */ + if (ct->c_list) + continue; + + found = true; + break; /* A-OK */ + } + + if (!found) + { + /* We didn't find a usable entry, so make a new one */ + ct = CatalogCacheCreateEntry(cache, ntp, scandesc, NULL, + hashValue, hashIndex); + /* upon failure, we must start the scan over */ + if (ct == NULL) + { + /* + * Release refcounts on any items we already had. We + * dare not try to free them if they're now + * unreferenced, since an error while doing that would + * result in the PG_CATCH below doing extra refcount + * decrements. Besides, we'll likely re-adopt those + * items in the next iteration, so it's not worth + * complicating matters to try to get rid of them. + */ + foreach(ctlist_item, ctlist) + { + ct = (CatCTup *) lfirst(ctlist_item); + Assert(ct->c_list == NULL); + Assert(ct->refcount > 0); + ct->refcount--; + } + /* Reset ctlist in preparation for new try */ + ctlist = NIL; + stale = true; + break; + } + } + + /* Careful here: add entry to ctlist, then bump its refcount */ + /* This way leaves state correct if lappend runs out of memory */ + ctlist = lappend(ctlist, ct); + ct->refcount++; } - /* Careful here: add entry to ctlist, then bump its refcount */ - /* This way leaves state correct if lappend runs out of memory */ - ctlist = lappend(ctlist, ct); - ct->refcount++; - } - - systable_endscan(scandesc); + systable_endscan(scandesc); + } while (stale); table_close(relation, AccessShareLock); @@ -1796,22 +1847,42 @@ ReleaseCatCacheList(CatCList *list) * CatalogCacheCreateEntry * Create a new CatCTup entry, copying the given HeapTuple and other * supplied data into it. The new entry initially has refcount 0. + * + * To create a normal cache entry, ntp must be the HeapTuple just fetched + * from scandesc, and "arguments" is not used. To create a negative cache + * entry, pass NULL for ntp and scandesc; then "arguments" is the cache + * keys to use. In either case, hashValue/hashIndex are the hash values + * computed from the cache keys. + * + * Returns NULL if we attempt to detoast the tuple and observe that it + * became stale. (This cannot happen for a negative entry.) Caller must + * retry the tuple lookup in that case. */ static CatCTup * -CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, Datum *arguments, - uint32 hashValue, Index hashIndex, - bool negative) +CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, SysScanDesc scandesc, + Datum *arguments, + uint32 hashValue, Index hashIndex) { CatCTup *ct; HeapTuple dtp; MemoryContext oldcxt; - /* negative entries have no tuple associated */ if (ntp) { int i; - Assert(!negative); + /* + * The visibility recheck below essentially never fails during our + * regression tests, and there's no easy way to force it to fail for + * testing purposes. To ensure we have test coverage for the retry + * paths in our callers, make debug builds randomly fail about 0.1% of + * the times through this code path, even when there's no toasted + * fields. + */ +#ifdef USE_ASSERT_CHECKING + if (pg_prng_uint32(&pg_global_prng_state) <= (PG_UINT32_MAX / 1000)) + return NULL; +#endif /* * If there are any out-of-line toasted fields in the tuple, expand @@ -1821,7 +1892,20 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, Datum *arguments, * something using a slightly stale catcache entry. */ if (HeapTupleHasExternal(ntp)) + { dtp = toast_flatten_tuple(ntp, cache->cc_tupdesc); + + /* + * The tuple could become stale while we are doing toast table + * access (since AcceptInvalidationMessages can run then), so we + * must recheck its visibility afterwards. + */ + if (!systable_recheck_tuple(scandesc, ntp)) + { + heap_freetuple(dtp); + return NULL; + } + } else dtp = ntp; @@ -1860,7 +1944,7 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, Datum *arguments, } else { - Assert(negative); + /* Set up keys for a negative cache entry */ oldcxt = MemoryContextSwitchTo(CacheMemoryContext); ct = (CatCTup *) palloc(sizeof(CatCTup)); @@ -1882,7 +1966,7 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, Datum *arguments, ct->c_list = NULL; ct->refcount = 0; /* for the moment */ ct->dead = false; - ct->negative = negative; + ct->negative = (ntp == NULL); ct->hash_value = hashValue; dlist_push_head(&cache->cc_bucket[hashIndex], &ct->cache_elem); diff --git a/src/backend/utils/cache/relmapper.c b/src/backend/utils/cache/relmapper.c index 2a330cf..4c50044 100644 --- a/src/backend/utils/cache/relmapper.c +++ b/src/backend/utils/cache/relmapper.c @@ -298,14 +298,15 @@ RelationMapCopy(Oid dbid, Oid tsid, char *srcdbpath, char *dstdbpath) * Write the same data into the destination database's relmap file. * * No sinval is needed because no one can be connected to the destination - * database yet. For the same reason, there is no need to acquire - * RelationMappingLock. + * database yet. * * There's no point in trying to preserve files here. The new database * isn't usable yet anyway, and won't ever be if we can't install a relmap * file. */ + LWLockAcquire(RelationMappingLock, LW_EXCLUSIVE); write_relmap_file(&map, true, false, false, dbid, tsid, dstdbpath); + LWLockRelease(RelationMappingLock); } /* @@ -627,10 +628,12 @@ RelationMapFinishBootstrap(void) Assert(pending_local_updates.num_mappings == 0); /* Write the files; no WAL or sinval needed */ + LWLockAcquire(RelationMappingLock, LW_EXCLUSIVE); write_relmap_file(&shared_map, false, false, false, InvalidOid, GLOBALTABLESPACE_OID, "global"); write_relmap_file(&local_map, false, false, false, MyDatabaseId, MyDatabaseTableSpace, DatabasePath); + LWLockRelease(RelationMappingLock); } /* @@ -876,6 +879,15 @@ write_relmap_file(RelMapFile *newmap, bool write_wal, bool send_sinval, int fd; char mapfilename[MAXPGPATH]; + /* + * Even without concurrent use of this map, CheckPointRelationMap() relies + * on this locking. Without it, a restore of a base backup taken after + * this function's XLogInsert() and before its durable_rename() would not + * have the changes. wal_level=minimal doesn't need the lock, but this + * isn't performance-critical enough for such a micro-optimization. + */ + Assert(LWLockHeldByMeInMode(RelationMappingLock, LW_EXCLUSIVE)); + /* * Fill in the overhead fields and update CRC. */ diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 6fa4f2c..0106683 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -755,6 +755,10 @@ errcode_for_file_access(void) edata->sqlerrcode = ERRCODE_DISK_FULL; break; + case ENOMEM: /* Out of memory */ + edata->sqlerrcode = ERRCODE_OUT_OF_MEMORY; + break; + case ENFILE: /* File table overflow */ case EMFILE: /* Too many open files */ edata->sqlerrcode = ERRCODE_INSUFFICIENT_RESOURCES; diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 0b5b77b..07d6538 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -1285,7 +1285,7 @@ static struct config_bool ConfigureNamesBool[] = {"fsync", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Forces synchronization of updates to disk."), gettext_noop("The server will use the fsync() system call in several places to make " - "sure that updates are physically written to disk. This insures " + "sure that updates are physically written to disk. This ensures " "that a database cluster will recover to a consistent state after " "an operating system or hardware crash.") }, @@ -7643,9 +7643,12 @@ set_config_option_ext(const char *name, const char *value, * Other changes might need to affect other workers, so forbid them. */ if (IsInParallelMode() && changeVal && action != GUC_ACTION_SAVE) + { ereport(elevel, (errcode(ERRCODE_INVALID_TRANSACTION_STATE), errmsg("cannot set parameters during a parallel operation"))); + return -1; + } record = find_option(name, true, false, elevel); if (record == NULL) @@ -7740,6 +7743,10 @@ set_config_option_ext(const char *name, const char *value, * backends. This is a tad klugy, but necessary because we * don't re-read the config file during backend start. * + * However, if changeVal is false then plow ahead anyway since + * we are trying to find out if the value is potentially good, + * not actually use it. + * * In EXEC_BACKEND builds, this works differently: we load all * non-default settings from the CONFIG_EXEC_PARAMS file * during backend start. In that case we must accept @@ -7750,7 +7757,7 @@ set_config_option_ext(const char *name, const char *value, * started it. is_reload will be true when either situation * applies. */ - if (IsUnderPostmaster && !is_reload) + if (IsUnderPostmaster && changeVal && !is_reload) return -1; } else if (context != PGC_POSTMASTER && diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index dd78e5b..f58320b 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -559,11 +559,11 @@ start_postmaster(void) else close(fd); - cmd = psprintf("\"%s\" /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"", + cmd = psprintf("\"%s\" /D /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"", comspec, exec_path, pgdata_opt, post_opts, DEVNULL, log_file); } else - cmd = psprintf("\"%s\" /C \"\"%s\" %s%s < \"%s\" 2>&1\"", + cmd = psprintf("\"%s\" /D /C \"\"%s\" %s%s < \"%s\" 2>&1\"", comspec, exec_path, pgdata_opt, post_opts, DEVNULL); if (!CreateRestrictedProcess(cmd, &pi, false)) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 5e7317b..cf34bfd 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1576,13 +1576,10 @@ checkExtensionMembership(DumpableObject *dobj, Archive *fout) addObjectDependency(dobj, ext->dobj.dumpId); /* - * In 9.6 and above, mark the member object to have any non-initial ACL, - * policies, and security labels dumped. - * - * Note that any initial ACLs (see pg_init_privs) will be removed when we - * extract the information about the object. We don't provide support for - * initial policies and security labels and it seems unlikely for those to - * ever exist, but we may have to revisit this later. + * In 9.6 and above, mark the member object to have any non-initial ACLs + * dumped. (Any initial ACLs will be removed later, using data from + * pg_init_privs, so that we'll dump only the delta from the extension's + * initial setup.) * * Prior to 9.6, we do not include any extension member components. * @@ -1590,6 +1587,13 @@ checkExtensionMembership(DumpableObject *dobj, Archive *fout) * individually, since the idea is to exactly reproduce the database * contents rather than replace the extension contents with something * different. + * + * Note: it might be interesting someday to implement storage and delta + * dumping of extension members' RLS policies and/or security labels. + * However there is a pitfall for RLS policies: trying to dump them + * requires getting a lock on their tables, and the calling user might not + * have privileges for that. We need no lock to examine a table's ACLs, + * so the current feature doesn't have a problem of that sort. */ if (fout->dopt->binary_upgrade) dobj->dump = ext->dobj.dump; @@ -1598,9 +1602,7 @@ checkExtensionMembership(DumpableObject *dobj, Archive *fout) if (fout->remoteVersion < 90600) dobj->dump = DUMP_COMPONENT_NONE; else - dobj->dump = ext->dobj.dump_contains & (DUMP_COMPONENT_ACL | - DUMP_COMPONENT_SECLABEL | - DUMP_COMPONENT_POLICY); + dobj->dump = ext->dobj.dump_contains & (DUMP_COMPONENT_ACL); } return true; @@ -1931,6 +1933,26 @@ selectDumpablePublicationObject(DumpableObject *dobj, Archive *fout) DUMP_COMPONENT_ALL : DUMP_COMPONENT_NONE; } +/* + * selectDumpableStatisticsObject: policy-setting subroutine + * Mark an extended statistics object as to be dumped or not + * + * We dump an extended statistics object if the schema it's in and the table + * it's for are being dumped. (This'll need more thought if statistics + * objects ever support cross-table stats.) + */ +static void +selectDumpableStatisticsObject(StatsExtInfo *sobj, Archive *fout) +{ + if (checkExtensionMembership(&sobj->dobj, fout)) + return; /* extension membership overrides all else */ + + sobj->dobj.dump = sobj->dobj.namespace->dobj.dump_contains; + if (sobj->stattable == NULL || + !(sobj->stattable->dobj.dump & DUMP_COMPONENT_DEFINITION)) + sobj->dobj.dump = DUMP_COMPONENT_NONE; +} + /* * selectDumpableObject: policy-setting subroutine * Mark a generic dumpable object as to be dumped or not @@ -7094,6 +7116,7 @@ getExtendedStatistics(Archive *fout) int i_stxname; int i_stxnamespace; int i_stxowner; + int i_stxrelid; int i_stattarget; int i; @@ -7105,11 +7128,11 @@ getExtendedStatistics(Archive *fout) if (fout->remoteVersion < 130000) appendPQExpBuffer(query, "SELECT tableoid, oid, stxname, " - "stxnamespace, stxowner, (-1) AS stxstattarget " + "stxnamespace, stxowner, stxrelid, (-1) AS stxstattarget " "FROM pg_catalog.pg_statistic_ext"); else appendPQExpBuffer(query, "SELECT tableoid, oid, stxname, " - "stxnamespace, stxowner, stxstattarget " + "stxnamespace, stxowner, stxrelid, stxstattarget " "FROM pg_catalog.pg_statistic_ext"); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); @@ -7121,6 +7144,7 @@ getExtendedStatistics(Archive *fout) i_stxname = PQfnumber(res, "stxname"); i_stxnamespace = PQfnumber(res, "stxnamespace"); i_stxowner = PQfnumber(res, "stxowner"); + i_stxrelid = PQfnumber(res, "stxrelid"); i_stattarget = PQfnumber(res, "stxstattarget"); statsextinfo = (StatsExtInfo *) pg_malloc(ntups * sizeof(StatsExtInfo)); @@ -7135,10 +7159,12 @@ getExtendedStatistics(Archive *fout) statsextinfo[i].dobj.namespace = findNamespace(atooid(PQgetvalue(res, i, i_stxnamespace))); statsextinfo[i].rolname = getRoleName(PQgetvalue(res, i, i_stxowner)); + statsextinfo[i].stattable = + findTableByOid(atooid(PQgetvalue(res, i, i_stxrelid))); statsextinfo[i].stattarget = atoi(PQgetvalue(res, i, i_stattarget)); /* Decide whether we want to dump it */ - selectDumpableObject(&(statsextinfo[i].dobj), fout); + selectDumpableStatisticsObject(&(statsextinfo[i]), fout); } PQclear(res); diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h index 0cdcc01..18c9517 100644 --- a/src/bin/pg_dump/pg_dump.h +++ b/src/bin/pg_dump/pg_dump.h @@ -418,7 +418,8 @@ typedef struct _indexAttachInfo typedef struct _statsExtInfo { DumpableObject dobj; - const char *rolname; + const char *rolname; /* owner */ + TableInfo *stattable; /* link to table the stats are for */ int stattarget; /* statistics target */ } StatsExtInfo; diff --git a/src/bin/pg_dump/po/ru.po b/src/bin/pg_dump/po/ru.po index 0738e01..c0dd159 100644 --- a/src/bin/pg_dump/po/ru.po +++ b/src/bin/pg_dump/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 09:09+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2023-08-30 14:18+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -629,7 +629,7 @@ msgstr "восстановление большого объекта с OID %u" msgid "could not create large object %u: %s" msgstr "не удалось создать большой объект %u: %s" -#: pg_backup_archiver.c:1375 pg_dump.c:3607 +#: pg_backup_archiver.c:1375 pg_dump.c:3629 #, c-format msgid "could not open large object %u: %s" msgstr "не удалось открыть большой объект %u: %s" @@ -1113,7 +1113,7 @@ msgstr "ошибка в PQputCopyEnd: %s" msgid "COPY failed for table \"%s\": %s" msgstr "сбой команды COPY для таблицы \"%s\": %s" -#: pg_backup_db.c:522 pg_dump.c:2106 +#: pg_backup_db.c:522 pg_dump.c:2128 #, c-format msgid "unexpected extra results during COPY of table \"%s\"" msgstr "неожиданные лишние результаты получены при COPY для таблицы \"%s\"" @@ -1918,115 +1918,115 @@ msgstr "В данный момент вы не подключены к базе msgid "cross-database references are not implemented: %s" msgstr "ссылки между базами не реализованы: %s" -#: pg_dump.c:1981 +#: pg_dump.c:2003 #, c-format msgid "dumping contents of table \"%s.%s\"" msgstr "выгрузка содержимого таблицы \"%s.%s\"" -#: pg_dump.c:2087 +#: pg_dump.c:2109 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed." msgstr "Ошибка выгрузки таблицы \"%s\": сбой в PQgetCopyData()." -#: pg_dump.c:2088 pg_dump.c:2098 +#: pg_dump.c:2110 pg_dump.c:2120 #, c-format msgid "Error message from server: %s" msgstr "Сообщение об ошибке с сервера: %s" # skip-rule: language-mix -#: pg_dump.c:2089 pg_dump.c:2099 +#: pg_dump.c:2111 pg_dump.c:2121 #, c-format msgid "Command was: %s" msgstr "Выполнялась команда: %s" -#: pg_dump.c:2097 +#: pg_dump.c:2119 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed." msgstr "Ошибка выгрузки таблицы \"%s\": сбой в PQgetResult()." -#: pg_dump.c:2179 +#: pg_dump.c:2201 #, c-format msgid "wrong number of fields retrieved from table \"%s\"" msgstr "из таблицы \"%s\" получено неверное количество полей" -#: pg_dump.c:2875 +#: pg_dump.c:2897 #, c-format msgid "saving database definition" msgstr "сохранение определения базы данных" -#: pg_dump.c:2971 +#: pg_dump.c:2993 #, c-format msgid "unrecognized locale provider: %s" msgstr "нераспознанный провайдер локали: %s" -#: pg_dump.c:3317 +#: pg_dump.c:3339 #, c-format msgid "saving encoding = %s" msgstr "сохранение кодировки (%s)" -#: pg_dump.c:3342 +#: pg_dump.c:3364 #, c-format msgid "saving standard_conforming_strings = %s" msgstr "сохранение standard_conforming_strings (%s)" -#: pg_dump.c:3381 +#: pg_dump.c:3403 #, c-format msgid "could not parse result of current_schemas()" msgstr "не удалось разобрать результат current_schemas()" -#: pg_dump.c:3400 +#: pg_dump.c:3422 #, c-format msgid "saving search_path = %s" msgstr "сохранение search_path = %s" -#: pg_dump.c:3438 +#: pg_dump.c:3460 #, c-format msgid "reading large objects" msgstr "чтение больших объектов" -#: pg_dump.c:3576 +#: pg_dump.c:3598 #, c-format msgid "saving large objects" msgstr "сохранение больших объектов" -#: pg_dump.c:3617 +#: pg_dump.c:3639 #, c-format msgid "error reading large object %u: %s" msgstr "ошибка чтения большого объекта %u: %s" -#: pg_dump.c:3723 +#: pg_dump.c:3745 #, c-format msgid "reading row-level security policies" msgstr "чтение политик защиты на уровне строк" -#: pg_dump.c:3864 +#: pg_dump.c:3886 #, c-format msgid "unexpected policy command type: %c" msgstr "нераспознанный тип команды в политике: %c" -#: pg_dump.c:4314 pg_dump.c:4632 pg_dump.c:11835 pg_dump.c:17724 -#: pg_dump.c:17726 pg_dump.c:18347 +#: pg_dump.c:4336 pg_dump.c:4654 pg_dump.c:11861 pg_dump.c:17750 +#: pg_dump.c:17752 pg_dump.c:18373 #, c-format msgid "could not parse %s array" msgstr "не удалось разобрать массив %s" -#: pg_dump.c:4500 +#: pg_dump.c:4522 #, c-format msgid "subscriptions not dumped because current user is not a superuser" msgstr "" "подписки не выгружены, так как текущий пользователь не суперпользователь" -#: pg_dump.c:5014 +#: pg_dump.c:5036 #, c-format msgid "could not find parent extension for %s %s" msgstr "не удалось найти родительское расширение для %s %s" -#: pg_dump.c:5159 +#: pg_dump.c:5181 #, c-format msgid "schema with OID %u does not exist" msgstr "схема с OID %u не существует" -#: pg_dump.c:6615 pg_dump.c:16988 +#: pg_dump.c:6637 pg_dump.c:17014 #, c-format msgid "" "failed sanity check, parent table with OID %u of sequence with OID %u not " @@ -2035,7 +2035,7 @@ msgstr "" "нарушение целостности: по OID %u не удалось найти родительскую таблицу " "последовательности с OID %u" -#: pg_dump.c:6758 +#: pg_dump.c:6780 #, c-format msgid "" "failed sanity check, table OID %u appearing in pg_partitioned_table not found" @@ -2043,18 +2043,18 @@ msgstr "" "нарушение целостности: таблица с OID %u, фигурирующим в " "pg_partitioned_table, не найдена" -#: pg_dump.c:6989 pg_dump.c:7256 pg_dump.c:7727 pg_dump.c:8394 pg_dump.c:8515 -#: pg_dump.c:8669 +#: pg_dump.c:7011 pg_dump.c:7282 pg_dump.c:7753 pg_dump.c:8420 pg_dump.c:8541 +#: pg_dump.c:8695 #, c-format msgid "unrecognized table OID %u" msgstr "нераспознанный OID таблицы %u" -#: pg_dump.c:6993 +#: pg_dump.c:7015 #, c-format msgid "unexpected index data for table \"%s\"" msgstr "неожиданно получены данные индекса для таблицы \"%s\"" -#: pg_dump.c:7488 +#: pg_dump.c:7514 #, c-format msgid "" "failed sanity check, parent table with OID %u of pg_rewrite entry with OID " @@ -2063,7 +2063,7 @@ msgstr "" "нарушение целостности: по OID %u не удалось найти родительскую таблицу для " "записи pg_rewrite с OID %u" -#: pg_dump.c:7779 +#: pg_dump.c:7805 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -2072,32 +2072,32 @@ msgstr "" "запрос выдал NULL вместо имени целевой таблицы для триггера внешнего ключа " "\"%s\" в таблице \"%s\" (OID целевой таблицы: %u)" -#: pg_dump.c:8398 +#: pg_dump.c:8424 #, c-format msgid "unexpected column data for table \"%s\"" msgstr "неожиданно получены данные столбцов для таблицы \"%s\"" -#: pg_dump.c:8428 +#: pg_dump.c:8454 #, c-format msgid "invalid column numbering in table \"%s\"" msgstr "неверная нумерация столбцов в таблице \"%s\"" -#: pg_dump.c:8477 +#: pg_dump.c:8503 #, c-format msgid "finding table default expressions" msgstr "поиск выражений по умолчанию для таблиц" -#: pg_dump.c:8519 +#: pg_dump.c:8545 #, c-format msgid "invalid adnum value %d for table \"%s\"" msgstr "неверное значение adnum (%d) в таблице \"%s\"" -#: pg_dump.c:8619 +#: pg_dump.c:8645 #, c-format msgid "finding table check constraints" msgstr "поиск ограничений-проверок для таблиц" -#: pg_dump.c:8673 +#: pg_dump.c:8699 #, 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" @@ -2108,54 +2108,54 @@ msgstr[1] "" msgstr[2] "" "ожидалось %d ограничений-проверок для таблицы \"%s\", но найдено: %d" -#: pg_dump.c:8677 +#: pg_dump.c:8703 #, c-format msgid "The system catalogs might be corrupted." msgstr "Возможно, повреждены системные каталоги." -#: pg_dump.c:9367 +#: pg_dump.c:9393 #, c-format msgid "role with OID %u does not exist" msgstr "роль с OID %u не существует" -#: pg_dump.c:9479 pg_dump.c:9508 +#: pg_dump.c:9505 pg_dump.c:9534 #, c-format msgid "unsupported pg_init_privs entry: %u %u %d" msgstr "неподдерживаемая запись в pg_init_privs: %u %u %d" -#: pg_dump.c:10329 +#: pg_dump.c:10355 #, c-format msgid "typtype of data type \"%s\" appears to be invalid" msgstr "у типа данных \"%s\" по-видимому неправильный тип типа" # TO REVEIW -#: pg_dump.c:11904 +#: pg_dump.c:11930 #, c-format msgid "unrecognized provolatile value for function \"%s\"" msgstr "недопустимое значение provolatile для функции \"%s\"" # TO REVEIW -#: pg_dump.c:11954 pg_dump.c:13817 +#: pg_dump.c:11980 pg_dump.c:13843 #, c-format msgid "unrecognized proparallel value for function \"%s\"" msgstr "недопустимое значение proparallel для функции \"%s\"" -#: pg_dump.c:12086 pg_dump.c:12192 pg_dump.c:12199 +#: pg_dump.c:12112 pg_dump.c:12218 pg_dump.c:12225 #, c-format msgid "could not find function definition for function with OID %u" msgstr "не удалось найти определение функции для функции с OID %u" -#: pg_dump.c:12125 +#: pg_dump.c:12151 #, c-format msgid "bogus value in pg_cast.castfunc or pg_cast.castmethod field" msgstr "неприемлемое значение в поле pg_cast.castfunc или pg_cast.castmethod" -#: pg_dump.c:12128 +#: pg_dump.c:12154 #, c-format msgid "bogus value in pg_cast.castmethod field" msgstr "неприемлемое значение в поле pg_cast.castmethod" -#: pg_dump.c:12218 +#: pg_dump.c:12244 #, c-format msgid "" "bogus transform definition, at least one of trffromsql and trftosql should " @@ -2164,62 +2164,62 @@ msgstr "" "неприемлемое определение преобразования (trffromsql или trftosql должно быть " "ненулевым)" -#: pg_dump.c:12235 +#: pg_dump.c:12261 #, c-format msgid "bogus value in pg_transform.trffromsql field" msgstr "неприемлемое значение в поле pg_transform.trffromsql" -#: pg_dump.c:12256 +#: pg_dump.c:12282 #, c-format msgid "bogus value in pg_transform.trftosql field" msgstr "неприемлемое значение в поле pg_transform.trftosql" -#: pg_dump.c:12401 +#: pg_dump.c:12427 #, c-format msgid "postfix operators are not supported anymore (operator \"%s\")" msgstr "постфиксные операторы больше не поддерживаются (оператор \"%s\")" -#: pg_dump.c:12571 +#: pg_dump.c:12597 #, c-format msgid "could not find operator with OID %s" msgstr "оператор с OID %s не найден" -#: pg_dump.c:12639 +#: pg_dump.c:12665 #, c-format msgid "invalid type \"%c\" of access method \"%s\"" msgstr "неверный тип \"%c\" метода доступа \"%s\"" -#: pg_dump.c:13293 pg_dump.c:13346 +#: pg_dump.c:13319 pg_dump.c:13372 #, c-format msgid "unrecognized collation provider: %s" msgstr "нераспознанный провайдер правил сортировки: %s" -#: pg_dump.c:13302 pg_dump.c:13311 pg_dump.c:13321 pg_dump.c:13330 +#: pg_dump.c:13328 pg_dump.c:13337 pg_dump.c:13347 pg_dump.c:13356 #, c-format msgid "invalid collation \"%s\"" msgstr "неверное правило сортировки \"%s\"" -#: pg_dump.c:13736 +#: pg_dump.c:13762 #, c-format msgid "unrecognized aggfinalmodify value for aggregate \"%s\"" msgstr "нераспознанное значение aggfinalmodify для агрегата \"%s\"" -#: pg_dump.c:13792 +#: pg_dump.c:13818 #, c-format msgid "unrecognized aggmfinalmodify value for aggregate \"%s\"" msgstr "нераспознанное значение aggmfinalmodify для агрегата \"%s\"" -#: pg_dump.c:14510 +#: pg_dump.c:14536 #, c-format msgid "unrecognized object type in default privileges: %d" msgstr "нераспознанный тип объекта в определении прав по умолчанию: %d" -#: pg_dump.c:14526 +#: pg_dump.c:14552 #, c-format msgid "could not parse default ACL list (%s)" msgstr "не удалось разобрать список прав по умолчанию (%s)" -#: pg_dump.c:14608 +#: pg_dump.c:14634 #, c-format msgid "" "could not parse initial ACL list (%s) or default (%s) for object \"%s\" (%s)" @@ -2227,20 +2227,20 @@ msgstr "" "не удалось разобрать изначальный список ACL (%s) или ACL по умолчанию (%s) " "для объекта \"%s\" (%s)" -#: pg_dump.c:14633 +#: pg_dump.c:14659 #, c-format msgid "could not parse ACL list (%s) or default (%s) for object \"%s\" (%s)" msgstr "" "не удалось разобрать список ACL (%s) или ACL по умолчанию (%s) для объекта " "\"%s\" (%s)" -#: pg_dump.c:15171 +#: pg_dump.c:15197 #, c-format msgid "query to obtain definition of view \"%s\" returned no data" msgstr "" "запрос на получение определения представления \"%s\" не возвратил данные" -#: pg_dump.c:15174 +#: pg_dump.c:15200 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition" @@ -2248,49 +2248,49 @@ msgstr "" "запрос на получение определения представления \"%s\" возвратил несколько " "определений" -#: pg_dump.c:15181 +#: pg_dump.c:15207 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)" msgstr "определение представления \"%s\" пустое (длина равна нулю)" -#: pg_dump.c:15265 +#: pg_dump.c:15291 #, c-format msgid "WITH OIDS is not supported anymore (table \"%s\")" msgstr "свойство WITH OIDS больше не поддерживается (таблица \"%s\")" -#: pg_dump.c:16194 +#: pg_dump.c:16220 #, c-format msgid "invalid column number %d for table \"%s\"" msgstr "неверный номер столбца %d для таблицы \"%s\"" -#: pg_dump.c:16272 +#: pg_dump.c:16298 #, c-format msgid "could not parse index statistic columns" msgstr "не удалось разобрать столбцы статистики в индексе" -#: pg_dump.c:16274 +#: pg_dump.c:16300 #, c-format msgid "could not parse index statistic values" msgstr "не удалось разобрать значения статистики в индексе" -#: pg_dump.c:16276 +#: pg_dump.c:16302 #, c-format msgid "mismatched number of columns and values for index statistics" msgstr "" "столбцы, задающие статистику индекса, не соответствуют значениям по " "количеству" -#: pg_dump.c:16494 +#: pg_dump.c:16520 #, c-format msgid "missing index for constraint \"%s\"" msgstr "отсутствует индекс для ограничения \"%s\"" -#: pg_dump.c:16722 +#: pg_dump.c:16748 #, c-format msgid "unrecognized constraint type: %c" msgstr "нераспознанный тип ограничения: %c" -#: pg_dump.c:16823 pg_dump.c:17052 +#: pg_dump.c:16849 pg_dump.c:17078 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)" msgid_plural "" @@ -2305,22 +2305,22 @@ msgstr[2] "" "запрос на получение данных последовательности \"%s\" вернул %d строк " "(ожидалась 1)" -#: pg_dump.c:16855 +#: pg_dump.c:16881 #, c-format msgid "unrecognized sequence type: %s" msgstr "нераспознанный тип последовательности: %s" -#: pg_dump.c:17144 +#: pg_dump.c:17170 #, c-format msgid "unexpected tgtype value: %d" msgstr "неожиданное значение tgtype: %d" -#: pg_dump.c:17216 +#: pg_dump.c:17242 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"" msgstr "неверная строка аргументов (%s) для триггера \"%s\" таблицы \"%s\"" -#: pg_dump.c:17485 +#: pg_dump.c:17511 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -2329,27 +2329,27 @@ msgstr "" "запрос на получение правила \"%s\" для таблицы \"%s\" возвратил неверное " "число строк" -#: pg_dump.c:17638 +#: pg_dump.c:17664 #, c-format msgid "could not find referenced extension %u" msgstr "не удалось найти упомянутое расширение %u" -#: pg_dump.c:17728 +#: pg_dump.c:17754 #, c-format msgid "mismatched number of configurations and conditions for extension" msgstr "конфигурации расширения не соответствуют условиям по количеству" -#: pg_dump.c:17860 +#: pg_dump.c:17886 #, c-format msgid "reading dependency data" msgstr "чтение информации о зависимостях" -#: pg_dump.c:17946 +#: pg_dump.c:17972 #, c-format msgid "no referencing object %u %u" msgstr "нет подчинённого объекта %u %u" -#: pg_dump.c:17957 +#: pg_dump.c:17983 #, c-format msgid "no referenced object %u %u" msgstr "нет вышестоящего объекта %u %u" diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl index 6006276..d012b74 100644 --- a/src/bin/pg_dump/t/002_pg_dump.pl +++ b/src/bin/pg_dump/t/002_pg_dump.pl @@ -3136,13 +3136,13 @@ my %tests = ( 'CREATE STATISTICS extended_stats_no_options' => { create_order => 97, create_sql => 'CREATE STATISTICS dump_test.test_ext_stats_no_options - ON col1, col2 FROM dump_test.test_fifth_table', + ON col1, col2 FROM dump_test.test_table', regexp => qr/^ - \QCREATE STATISTICS dump_test.test_ext_stats_no_options ON col1, col2 FROM dump_test.test_fifth_table;\E + \QCREATE STATISTICS dump_test.test_ext_stats_no_options ON col1, col2 FROM dump_test.test_table;\E /xms, like => { %full_runs, %dump_test_schema_runs, section_post_data => 1, }, - unlike => { exclude_dump_test_schema => 1, }, + unlike => { exclude_dump_test_schema => 1, exclude_test_table => 1, }, }, 'CREATE STATISTICS extended_stats_options' => { diff --git a/src/bin/pg_rewind/po/ru.po b/src/bin/pg_rewind/po/ru.po index f41d400..4c95c7c 100644 --- a/src/bin/pg_rewind/po/ru.po +++ b/src/bin/pg_rewind/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 09:09+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2023-08-30 15:22+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -904,59 +904,59 @@ msgid "Timeline IDs must be less than child timeline's ID." msgstr "" "Идентификаторы линий времени должны быть меньше идентификатора линии-потомка." -#: xlogreader.c:592 +#: xlogreader.c:620 #, c-format msgid "invalid record offset at %X/%X" msgstr "неверное смещение записи в позиции %X/%X" -#: xlogreader.c:600 +#: xlogreader.c:628 #, c-format msgid "contrecord is requested by %X/%X" msgstr "в позиции %X/%X запрошено продолжение записи" -#: xlogreader.c:641 xlogreader.c:1106 +#: xlogreader.c:669 xlogreader.c:1134 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "неверная длина записи в позиции %X/%X: ожидалось %u, получено %u" -#: xlogreader.c:730 +#: xlogreader.c:758 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "нет флага contrecord в позиции %X/%X" -#: xlogreader.c:743 +#: xlogreader.c:771 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "неверная длина contrecord: %u (ожидалась %lld) в позиции %X/%X" -#: xlogreader.c:1114 +#: xlogreader.c:1142 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "неверный ID менеджера ресурсов %u в позиции %X/%X" -#: xlogreader.c:1127 xlogreader.c:1143 +#: xlogreader.c:1155 xlogreader.c:1171 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запись с неверной ссылкой назад %X/%X в позиции %X/%X" -#: xlogreader.c:1181 +#: xlogreader.c:1209 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" "некорректная контрольная сумма данных менеджера ресурсов в записи в позиции " "%X/%X" -#: xlogreader.c:1218 +#: xlogreader.c:1246 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "неверное магическое число %04X в сегменте журнала %s, смещение %u" -#: xlogreader.c:1232 xlogreader.c:1273 +#: xlogreader.c:1260 xlogreader.c:1301 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "неверные информационные биты %04X в сегменте журнала %s, смещение %u" -#: xlogreader.c:1247 +#: xlogreader.c:1275 #, c-format msgid "" "WAL file is from different database system: WAL file database system " @@ -965,7 +965,7 @@ msgstr "" "файл WAL принадлежит другой СУБД: в нём указан идентификатор системы БД " "%llu, а идентификатор системы pg_control: %llu" -#: xlogreader.c:1255 +#: xlogreader.c:1283 #, c-format msgid "" "WAL file is from different database system: incorrect segment size in page " @@ -974,7 +974,7 @@ msgstr "" "файл WAL принадлежит другой СУБД: некорректный размер сегмента в заголовке " "страницы" -#: xlogreader.c:1261 +#: xlogreader.c:1289 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_BLCKSZ in page " @@ -983,35 +983,35 @@ msgstr "" "файл WAL принадлежит другой СУБД: некорректный XLOG_BLCKSZ в заголовке " "страницы" -#: xlogreader.c:1292 +#: xlogreader.c:1320 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неожиданный pageaddr %X/%X в сегменте журнала %s, смещение %u" -#: xlogreader.c:1317 +#: xlogreader.c:1345 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "" "нарушение последовательности ID линии времени %u (после %u) в сегменте " "журнала %s, смещение %u" -#: xlogreader.c:1722 +#: xlogreader.c:1750 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "идентификатор блока %u идёт не по порядку в позиции %X/%X" -#: xlogreader.c:1746 +#: xlogreader.c:1774 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA установлен, но данных в позиции %X/%X нет" -#: xlogreader.c:1753 +#: xlogreader.c:1781 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "" "BKPBLOCK_HAS_DATA не установлен, но длина данных равна %u в позиции %X/%X" -#: xlogreader.c:1789 +#: xlogreader.c:1817 #, c-format msgid "" "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " @@ -1020,21 +1020,21 @@ msgstr "" "BKPIMAGE_HAS_HOLE установлен, но для пропуска заданы смещение %u и длина %u " "при длине образа блока %u в позиции %X/%X" -#: xlogreader.c:1805 +#: xlogreader.c:1833 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "" "BKPIMAGE_HAS_HOLE не установлен, но для пропуска заданы смещение %u и длина " "%u в позиции %X/%X" -#: xlogreader.c:1819 +#: xlogreader.c:1847 #, c-format msgid "BKPIMAGE_COMPRESSED set, but block image length %u at %X/%X" msgstr "" "BKPIMAGE_COMPRESSED установлен, но длина образа блока равна %u в позиции %X/" "%X" -#: xlogreader.c:1834 +#: xlogreader.c:1862 #, c-format msgid "" "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_COMPRESSED set, but block image " @@ -1043,41 +1043,41 @@ msgstr "" "ни BKPIMAGE_HAS_HOLE, ни BKPIMAGE_COMPRESSED не установлены, но длина образа " "блока равна %u в позиции %X/%X" -#: xlogreader.c:1850 +#: xlogreader.c:1878 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "" "BKPBLOCK_SAME_REL установлен, но предыдущее значение не задано в позиции %X/" "%X" -#: xlogreader.c:1862 +#: xlogreader.c:1890 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "неверный идентификатор блока %u в позиции %X/%X" -#: xlogreader.c:1929 +#: xlogreader.c:1957 #, c-format msgid "record with invalid length at %X/%X" msgstr "запись с неверной длиной в позиции %X/%X" -#: xlogreader.c:1954 +#: xlogreader.c:1982 #, c-format msgid "could not locate backup block with ID %d in WAL record" msgstr "не удалось найти копию блока с ID %d в записи журнала WAL" -#: xlogreader.c:2038 +#: xlogreader.c:2066 #, c-format msgid "could not restore image at %X/%X with invalid block %d specified" msgstr "" "не удалось восстановить образ в позиции %X/%X с указанным неверным блоком %d" -#: xlogreader.c:2045 +#: xlogreader.c:2073 #, c-format msgid "could not restore image at %X/%X with invalid state, block %d" msgstr "" "не удалось восстановить образ в позиции %X/%X с неверным состоянием, блок %d" -#: xlogreader.c:2072 xlogreader.c:2089 +#: xlogreader.c:2100 xlogreader.c:2117 #, c-format msgid "" "could not restore image at %X/%X compressed with %s not supported by build, " @@ -1086,7 +1086,7 @@ msgstr "" "не удалось восстановить образ в позиции %X/%X, сжатый методом %s, который не " "поддерживается этой сборкой, блок %d" -#: xlogreader.c:2098 +#: xlogreader.c:2126 #, c-format msgid "" "could not restore image at %X/%X compressed with unknown method, block %d" @@ -1094,7 +1094,7 @@ msgstr "" "не удалось восстановить образ в позиции %X/%X, сжатый неизвестным методом, " "блок %d" -#: xlogreader.c:2106 +#: xlogreader.c:2134 #, c-format msgid "could not decompress image at %X/%X, block %d" msgstr "не удалось развернуть образ в позиции %X/%X, блок %d" diff --git a/src/bin/pg_rewind/t/003_extrafiles.pl b/src/bin/pg_rewind/t/003_extrafiles.pl index b1c47ea..100c212 100644 --- a/src/bin/pg_rewind/t/003_extrafiles.pl +++ b/src/bin/pg_rewind/t/003_extrafiles.pl @@ -78,6 +78,19 @@ sub run_test }, $test_primary_datadir); @paths = sort @paths; + + # File::Find converts backslashes to slashes in the newer Perl + # versions. To support all Perl versions, do the same conversion + # for Windows before comparing the paths. + if ($windows_os) + { + for my $filename (@paths) + { + $filename =~ s{\\}{/}g; + } + $test_primary_datadir =~ s{\\}{/}g; + } + is_deeply( \@paths, [ diff --git a/src/bin/pg_upgrade/po/ru.po b/src/bin/pg_upgrade/po/ru.po index 4eeef71..cd50ed2 100644 --- a/src/bin/pg_upgrade/po/ru.po +++ b/src/bin/pg_upgrade/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_upgrade (PostgreSQL) 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 09:09+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2023-11-03 09:24+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -273,8 +273,8 @@ msgstr "" "pg_database.datallowconn должно быть false\n" #: check.c:785 check.c:910 check.c:1012 check.c:1138 check.c:1219 check.c:1278 -#: check.c:1339 check.c:1404 check.c:1523 function.c:187 version.c:192 -#: version.c:232 version.c:378 +#: check.c:1339 check.c:1373 check.c:1404 check.c:1523 function.c:187 +#: version.c:192 version.c:232 version.c:378 #, c-format msgid "fatal\n" msgstr "сбой\n" @@ -472,11 +472,6 @@ msgstr "" msgid "Checking for removed \"%s\" data type in user tables" msgstr "Проверка удалённого типа данных \"%s\" в пользовательских таблицах" -#: check.c:1373 -#, c-format -msgid "fatal" -msgstr "сбой" - #: check.c:1374 #, c-format msgid "" @@ -2100,6 +2095,10 @@ msgstr "" "эти расширения.\n" "\n" +#, c-format +#~ msgid "fatal" +#~ msgstr "сбой" + #~ msgid "" #~ "When checking a pre-PG 9.1 live old server, you must specify the old " #~ "server's port number.\n" diff --git a/src/bin/pg_upgrade/po/uk.po b/src/bin/pg_upgrade/po/uk.po index 8710602..eefdc2f 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: 2022-08-12 10:49+0000\n" -"PO-Revision-Date: 2022-09-13 11:52\n" +"POT-Creation-Date: 2023-12-17 22:33+0000\n" +"PO-Revision-Date: 2023-12-18 17:41\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -17,28 +17,28 @@ msgstr "" "X-Crowdin-File: /REL_15_STABLE/pg_upgrade.pot\n" "X-Crowdin-File-ID: 916\n" -#: check.c:72 +#: check.c:75 #, c-format msgid "Performing Consistency Checks on Old Live Server\n" "------------------------------------------------\n" msgstr "Перевірка цілістності на старому працюючому сервері\n" "------------------------------------------------\n" -#: check.c:78 +#: check.c:81 #, c-format msgid "Performing Consistency Checks\n" "-----------------------------\n" msgstr "Проведення перевірок цілістності\n" "-----------------------------\n" -#: check.c:218 +#: check.c:231 #, c-format msgid "\n" "*Clusters are compatible*\n" msgstr "\n" "*Кластери сумісні*\n" -#: check.c:226 +#: check.c:239 #, 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:267 +#: check.c:280 #, 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:273 +#: check.c:286 #, c-format msgid "Running this script will delete the old cluster's data files:\n" " %s\n" msgstr "При запуску цього скрипту файли даних старого кластера будуть видалені:\n" " %s\n" -#: check.c:278 +#: check.c:291 #, 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,150 +74,150 @@ msgstr "Не вдалося створити скрипт для видален "простори або каталог даних нового кластера. Вміст старого кластера\n" "треба буде видалити вручну.\n" -#: check.c:290 +#: check.c:303 #, c-format msgid "Checking cluster versions" msgstr "Перевірка версій кластерів" -#: check.c:302 +#: check.c:315 #, c-format msgid "This utility can only upgrade from PostgreSQL version %s and later.\n" msgstr "Ця утиліта може виконувати оновлення тільки з версії PostgreSQL %s і новіше.\n" -#: check.c:307 +#: check.c:320 #, c-format msgid "This utility can only upgrade to PostgreSQL version %s.\n" msgstr "Ця утиліта може тільки підвищувати версію PostgreSQL до %s.\n" -#: check.c:316 +#: check.c:329 #, c-format msgid "This utility cannot be used to downgrade to older major PostgreSQL versions.\n" msgstr "Ця утиліта не може не може використовуватись щоб понижувати версію до більш старих основних версій PostgreSQL.\n" -#: check.c:321 +#: check.c:334 #, c-format msgid "Old cluster data and binary directories are from different major versions.\n" msgstr "Каталог даних і двійковий каталог старого кластера з різних основних версій.\n" -#: check.c:324 +#: check.c:337 #, c-format msgid "New cluster data and binary directories are from different major versions.\n" msgstr "Каталог даних і двійковий каталог нового кластера з різних основних версій.\n" -#: check.c:339 +#: check.c:352 #, c-format msgid "When checking a live server, the old and new port numbers must be different.\n" msgstr "Для перевірки працюючого сервера, старий і новий номер порта повинні бути різними.\n" -#: check.c:354 +#: check.c:367 #, c-format msgid "encodings for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "кодування для бази даних \"%s\" не збігаються: старе \"%s\", нове \"%s\"\n" -#: check.c:359 +#: check.c:372 #, 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:362 +#: check.c:375 #, 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:365 +#: check.c:378 #, c-format msgid "locale providers for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "постачальники локалей для бази даних \"%s\" не збігаються: старий \"%s\", новий \"%s\"\n" -#: check.c:372 +#: check.c:385 #, c-format msgid "ICU locale values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "значення локалі ICU для бази даних \"%s\" не збігаються: старий \"%s\", новий \"%s\n" -#: check.c:447 +#: check.c:460 #, c-format msgid "New cluster database \"%s\" is not empty: found relation \"%s.%s\"\n" msgstr "Новий кластер бази даних \"%s\" не порожній: знайдено відношення \"%s.%s\"\n" -#: check.c:499 +#: check.c:512 #, c-format msgid "Checking for new cluster tablespace directories" msgstr "Перевірка каталогів табличних просторів кластера" -#: check.c:510 +#: check.c:523 #, c-format msgid "new cluster tablespace directory already exists: \"%s\"\n" msgstr "каталог нового кластерного табличного простору вже існує: \"%s\"\n" -#: check.c:543 +#: check.c:556 #, c-format msgid "\n" "WARNING: new data directory should not be inside the old data directory, i.e. %s\n" msgstr "\n" "ПОПЕРЕДЖЕННЯ: новий каталог даних не повинен бути всередині старого каталогу даних, наприклад %s\n" -#: check.c:567 +#: check.c:580 #, c-format msgid "\n" "WARNING: user-defined tablespace locations should not be inside the data directory, i.e. %s\n" msgstr "\n" "ПОПЕРЕДЖЕННЯ: користувацькі розташування табличних просторів не повинні бути всередині каталогу даних, наприклад %s\n" -#: check.c:577 +#: check.c:590 #, c-format msgid "Creating script to delete old cluster" msgstr "Створення скрипту для видалення старого кластеру" -#: check.c:580 check.c:755 check.c:875 check.c:974 check.c:1105 check.c:1184 -#: check.c:1447 file.c:338 function.c:165 option.c:465 version.c:116 -#: version.c:288 version.c:423 +#: check.c:593 check.c:768 check.c:888 check.c:987 check.c:1118 check.c:1197 +#: check.c:1500 file.c:338 function.c:165 option.c:465 version.c:116 +#: version.c:292 version.c:429 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "не вдалося відкрити файл \"%s\": %s\n" -#: check.c:631 +#: check.c:644 #, c-format msgid "could not add execute permission to file \"%s\": %s\n" msgstr "не вдалося додати право виконання для файлу \"%s\": %s\n" -#: check.c:651 +#: check.c:664 #, c-format msgid "Checking database user is the install user" msgstr "Перевірка, чи є користувач бази даних стартовим користувачем" -#: check.c:667 +#: check.c:680 #, c-format msgid "database user \"%s\" is not the install user\n" msgstr "користувач бази даних \"%s\" не є стартовим користувачем\n" -#: check.c:678 +#: check.c:691 #, c-format msgid "could not determine the number of users\n" msgstr "не вдалося визначити кількість користувачів\n" -#: check.c:686 +#: check.c:699 #, c-format msgid "Only the install user can be defined in the new cluster.\n" msgstr "В новому кластері може бути визначеним тільки стартовий користувач.\n" -#: check.c:716 +#: check.c:729 #, c-format msgid "Checking database connection settings" msgstr "Перевірка параметрів підключення до бази даних" -#: check.c:742 +#: check.c:755 #, 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:772 check.c:897 check.c:999 check.c:1125 check.c:1206 check.c:1263 -#: check.c:1322 check.c:1351 check.c:1470 function.c:187 version.c:190 -#: version.c:228 version.c:372 +#: check.c:785 check.c:910 check.c:1012 check.c:1138 check.c:1219 check.c:1278 +#: check.c:1339 check.c:1373 check.c:1404 check.c:1523 function.c:187 +#: version.c:192 version.c:232 version.c:378 #, c-format msgid "fatal\n" msgstr "збій\n" -#: check.c:773 +#: check.c:786 #, c-format msgid "All non-template0 databases must allow connections, i.e. their\n" "pg_database.datallowconn must be true. Your installation contains\n" @@ -234,27 +234,27 @@ msgstr "Всі бази даних, окрім template0, повинні доз "Список баз даних з проблемою знаходиться у файлі:\n" " %s\n\n" -#: check.c:798 +#: check.c:811 #, c-format msgid "Checking for prepared transactions" msgstr "Перевірка підготовлених транзакцій" -#: check.c:807 +#: check.c:820 #, c-format msgid "The source cluster contains prepared transactions\n" msgstr "Початковий кластер містить підготовлені транзакції\n" -#: check.c:809 +#: check.c:822 #, c-format msgid "The target cluster contains prepared transactions\n" msgstr "Цільовий кластер містить підготовлені транзакції\n" -#: check.c:835 +#: check.c:848 #, c-format msgid "Checking for contrib/isn with bigint-passing mismatch" msgstr "Перевірка невідповідності при передаванні bigint в contrib/isn" -#: check.c:898 +#: check.c:911 #, 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" @@ -266,12 +266,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:921 +#: check.c:934 #, c-format msgid "Checking for user-defined postfix operators" msgstr "Перевірка постфіксних операторів визначених користувачем" -#: check.c:1000 +#: check.c:1013 #, c-format msgid "Your installation contains user-defined postfix operators, which are not\n" "supported anymore. Consider dropping the postfix operators and replacing\n" @@ -283,12 +283,12 @@ msgstr "Ваша інсталяція містить користувацькі "Список користувацьких постфіксних операторів знаходиться у файлі:\n" " %s\n\n" -#: check.c:1024 +#: check.c:1037 #, c-format msgid "Checking for incompatible polymorphic functions" msgstr "Перевірка несумісних поліморфних функцій" -#: check.c:1126 +#: check.c:1139 #, c-format msgid "Your installation contains user-defined objects that refer to internal\n" "polymorphic functions with arguments of type \"anyarray\" or \"anyelement\".\n" @@ -305,12 +305,12 @@ msgstr "У вашій інсталяції містяться користува "Список проблемних об'єктів знаходиться у файлі:\n" " %s\n\n" -#: check.c:1151 +#: check.c:1164 #, c-format msgid "Checking for tables WITH OIDS" msgstr "Перевірка таблиць WITH OIDS" -#: check.c:1207 +#: check.c:1220 #, c-format msgid "Your installation contains tables declared WITH OIDS, which is not\n" "supported anymore. Consider removing the oid column using\n" @@ -322,12 +322,12 @@ msgstr "Ваша інсталяція містить таблиці, створ "Список проблемних таблиць подано у файлі:\n" " %s\n\n" -#: check.c:1235 +#: check.c:1248 #, c-format msgid "Checking for system-defined composite types in user tables" msgstr "Перевірка складених типів визначених системою у таблицях користувача" -#: check.c:1264 +#: check.c:1279 #, 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" @@ -341,12 +341,12 @@ msgstr "Ваша інсталяція містить складені типи "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: check.c:1292 +#: check.c:1307 #, c-format msgid "Checking for reg* data types in user tables" msgstr "Перевірка типів даних reg* в користувацьких таблицях" -#: check.c:1323 +#: check.c:1340 #, 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" @@ -360,12 +360,32 @@ msgstr "Ваша інсталяція містить один з типів да "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: check.c:1345 +#: check.c:1364 +#, c-format +msgid "Checking for removed \"%s\" data type in user tables" +msgstr "Перевірка видаленого типу даних \"%s\" в користувацьких таблицях" + +#: check.c:1374 +#, 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" +"so this cluster cannot currently be upgraded. You can drop the\n" +"problem columns, or change them to another data type, and restart\n" +"the upgrade. A list of the problem columns is in the file:\n" +" %s\n\n" +msgstr "Користувацькі таблиці у вашій інсталяції містять тип даних \"%s\".\n" +"Тип \"%s\" був видалений з версії PostgreSQL %s, тому цей кластер \n" +"наразі не може бути оновлений. Ви можете видалите проблемні \n" +"стовпці або змінити їх на інший тип даних, і перезапустити\n" +"оновлення. Список проблемних стовпців є у файлі:\n" +" %s\n\n" + +#: check.c:1396 #, c-format msgid "Checking for incompatible \"jsonb\" data type" msgstr "Перевірка несумісного типу даних \"jsonb\"" -#: check.c:1352 +#: check.c:1405 #, 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" @@ -380,27 +400,27 @@ msgstr "Ваша інсталяція містить тип даних \"jsonb\" "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: check.c:1374 +#: check.c:1427 #, c-format msgid "Checking for roles starting with \"pg_\"" msgstr "Перевірка ролей, які починаються з \"pg_\"" -#: check.c:1384 +#: check.c:1437 #, c-format msgid "The source cluster contains roles starting with \"pg_\"\n" msgstr "Початковий кластер містить ролі, які починаються з \"pg_\"\n" -#: check.c:1386 +#: check.c:1439 #, c-format msgid "The target cluster contains roles starting with \"pg_\"\n" msgstr "Цільовий кластер містить ролі, які починаються з \"pg_\"\n" -#: check.c:1407 +#: check.c:1460 #, c-format msgid "Checking for user-defined encoding conversions" msgstr "Перевірка користувацьких перетворення кодувань" -#: check.c:1471 +#: check.c:1524 #, c-format msgid "Your installation contains user-defined encoding conversions.\n" "The conversion function parameters changed in PostgreSQL version 14\n" @@ -415,17 +435,17 @@ msgstr "Ваша інсталяція містить користувацькі "Список перетворень кодувань знаходиться у файлі:\n" " %s\n\n" -#: check.c:1498 +#: check.c:1551 #, c-format msgid "failed to get the current locale\n" msgstr "не вдалося отримати поточну локаль\n" -#: check.c:1507 +#: check.c:1560 #, c-format msgid "failed to get system locale name for \"%s\"\n" msgstr "не вдалося отримати системне ім'я локалі для \"%s\"\n" -#: check.c:1513 +#: check.c:1566 #, c-format msgid "failed to restore old locale \"%s\"\n" msgstr "не вдалося відновити стару локаль \"%s\"\n" @@ -492,194 +512,194 @@ msgstr "%d: проблема pg_resetwal\n" msgid "%d: controldata retrieval problem\n" msgstr "%d: проблема з отриманням контрольних даних\n" -#: controldata.c:572 +#: controldata.c:571 #, c-format msgid "The source cluster lacks some required control information:\n" msgstr "У початковому кластері відсутня необхідна контрольна інформація:\n" -#: controldata.c:575 +#: controldata.c:574 #, c-format msgid "The target cluster lacks some required control information:\n" msgstr "У цільовому кластері відсутня необхідна контрольна інформація:\n" -#: controldata.c:578 +#: controldata.c:577 #, c-format msgid " checkpoint next XID\n" msgstr " наступний XID контрольної точки\n" -#: controldata.c:581 +#: controldata.c:580 #, c-format msgid " latest checkpoint next OID\n" msgstr " наступний OID останньої контрольної точки\n" -#: controldata.c:584 +#: controldata.c:583 #, c-format msgid " latest checkpoint next MultiXactId\n" msgstr " наступний MultiXactId останньої контрольної точки\n" -#: controldata.c:588 +#: controldata.c:587 #, c-format msgid " latest checkpoint oldest MultiXactId\n" msgstr " найстарший MultiXactId останньої контрольної точки\n" -#: controldata.c:591 +#: controldata.c:590 #, c-format msgid " latest checkpoint oldestXID\n" msgstr " найстарший oldestXID останньої контрольної точки\n" -#: controldata.c:594 +#: controldata.c:593 #, c-format msgid " latest checkpoint next MultiXactOffset\n" msgstr " наступний MultiXactOffset останньої контрольної точки\n" -#: controldata.c:597 +#: controldata.c:596 #, c-format msgid " first WAL segment after reset\n" msgstr " перший сегмет WAL після скидання\n" -#: controldata.c:600 +#: controldata.c:599 #, c-format msgid " float8 argument passing method\n" msgstr " метод передачі аргументу float8\n" -#: controldata.c:603 +#: controldata.c:602 #, c-format msgid " maximum alignment\n" msgstr " максимальне вирівнювання\n" -#: controldata.c:606 +#: controldata.c:605 #, c-format msgid " block size\n" msgstr " розмір блоку\n" -#: controldata.c:609 +#: controldata.c:608 #, c-format msgid " large relation segment size\n" msgstr " розмір сегменту великого відношення\n" -#: controldata.c:612 +#: controldata.c:611 #, c-format msgid " WAL block size\n" msgstr " розмір блоку WAL\n" -#: controldata.c:615 +#: controldata.c:614 #, c-format msgid " WAL segment size\n" msgstr " розмір сегменту WAL\n" -#: controldata.c:618 +#: controldata.c:617 #, c-format msgid " maximum identifier length\n" msgstr " максимальна довжина ідентифікатора\n" -#: controldata.c:621 +#: controldata.c:620 #, c-format msgid " maximum number of indexed columns\n" msgstr " максимальна кількість індексованих стовпців\n" -#: controldata.c:624 +#: controldata.c:623 #, c-format msgid " maximum TOAST chunk size\n" msgstr " максимальний розмір порції TOAST\n" -#: controldata.c:628 +#: controldata.c:627 #, c-format msgid " large-object chunk size\n" msgstr " розмір порції великого об'єкту\n" -#: controldata.c:631 +#: controldata.c:630 #, c-format msgid " dates/times are integers?\n" msgstr " дата/час представлені цілими числами?\n" -#: controldata.c:635 +#: controldata.c:634 #, c-format msgid " data checksum version\n" msgstr " версія контрольних сум даних\n" -#: controldata.c:637 +#: controldata.c:636 #, c-format msgid "Cannot continue without required control information, terminating\n" msgstr "Не можна продовжити без необхідної контрольної інформації, завершення\n" -#: controldata.c:652 +#: controldata.c:651 #, c-format msgid "old and new pg_controldata alignments are invalid or do not match\n" "Likely one cluster is a 32-bit install, the other 64-bit\n" msgstr "старе і нове вирівнювання в pg_controldata неприпустимі або не збігаються\n" "Ймовірно, один кластер встановлений у 32-бітній системі, а інший - у 64-бітній\n" -#: controldata.c:656 +#: controldata.c:655 #, c-format msgid "old and new pg_controldata block sizes are invalid or do not match\n" msgstr "старий і новий розмір блоків в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:659 +#: controldata.c:658 #, c-format msgid "old and new pg_controldata maximum relation segment sizes are invalid or do not match\n" msgstr "старий і новий максимальний розмір сегментів відношень в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:662 +#: controldata.c:661 #, c-format msgid "old and new pg_controldata WAL block sizes are invalid or do not match\n" msgstr "старий і новий розмір блоків WAL в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:665 +#: controldata.c:664 #, c-format msgid "old and new pg_controldata WAL segment sizes are invalid or do not match\n" msgstr "старий і новий розмір сегментів WAL в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:668 +#: controldata.c:667 #, c-format msgid "old and new pg_controldata maximum identifier lengths are invalid or do not match\n" msgstr "стара і нова максимальна довжина ідентифікаторів в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:671 +#: controldata.c:670 #, c-format msgid "old and new pg_controldata maximum indexed columns are invalid or do not match\n" msgstr "стара і нова максимальна кількість індексованих стовпців в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:674 +#: controldata.c:673 #, c-format msgid "old and new pg_controldata maximum TOAST chunk sizes are invalid or do not match\n" msgstr "старий і новий максимальний розмір порції TOAST в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:679 +#: controldata.c:678 #, c-format msgid "old and new pg_controldata large-object chunk sizes are invalid or do not match\n" msgstr "старий і новий розмір порції великого об'єкту в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:682 +#: controldata.c:681 #, c-format msgid "old and new pg_controldata date/time storage types do not match\n" msgstr "старий і новий тип сховища дати/часу в pg_controldata неприпустимі або не збігаються\n" -#: controldata.c:695 +#: controldata.c:694 #, c-format msgid "old cluster does not use data checksums but the new one does\n" msgstr "старий кластер не використовує контрольні суми даних, але новий використовує\n" -#: controldata.c:698 +#: controldata.c:697 #, c-format msgid "old cluster uses data checksums but the new one does not\n" msgstr "старий кластер використовує контрольні суми даних, але новий не використовує\n" -#: controldata.c:700 +#: controldata.c:699 #, c-format msgid "old and new cluster pg_controldata checksum versions do not match\n" msgstr "стара і нова версія контрольних сум кластера в pg_controldata не збігаються\n" -#: controldata.c:711 +#: controldata.c:710 #, c-format msgid "Adding \".old\" suffix to old global/pg_control" msgstr "Додавання суфікса \".old\" до старого файла global/pg_control" -#: controldata.c:716 +#: controldata.c:715 #, c-format msgid "Unable to rename %s to %s.\n" msgstr "Не вдалося перейменувати %s на %s.\n" -#: controldata.c:719 +#: controldata.c:718 #, c-format msgid "\n" "If you want to start the old cluster, you will need to remove\n" @@ -957,17 +977,17 @@ msgid "\n" msgstr "\n" "цільові бази даних:\n" -#: info.c:605 +#: info.c:604 #, c-format msgid "Database: %s\n" msgstr "База даних: %s\n" -#: info.c:607 +#: info.c:606 #, c-format msgid "\n\n" msgstr "\n\n" -#: info.c:618 +#: info.c:617 #, c-format msgid "relname: %s.%s: reloid: %u reltblspace: %s\n" msgstr "ім'я_відношення: %s.%s: oid_відношення: %u табл_простір: %s\n" @@ -1578,7 +1598,7 @@ msgstr "ok" msgid "Checking for incompatible \"line\" data type" msgstr "Перевірка несумісного типу даних \"line\"" -#: version.c:191 +#: version.c:193 #, c-format msgid "Your installation contains the \"line\" data type in user tables.\n" "This data type changed its internal and input/output format\n" @@ -1594,12 +1614,12 @@ msgstr "Ваша інсталяція містить тип даних \"line\" "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: version.c:222 +#: version.c:224 #, c-format msgid "Checking for invalid \"unknown\" user columns" msgstr "Перевірка неприпустимих користувацьких стовпців \"unknown\"" -#: version.c:229 +#: version.c:233 #, c-format msgid "Your installation contains the \"unknown\" data type in user tables.\n" "This data type is no longer allowed in tables, so this\n" @@ -1614,17 +1634,17 @@ msgstr "Ваша інсталяція містить \"unknown\" тип дани "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: version.c:253 +#: version.c:257 #, c-format msgid "Checking for hash indexes" msgstr "Перевірка геш-індексів" -#: version.c:331 +#: version.c:335 #, c-format msgid "warning" msgstr "попередження" -#: version.c:333 +#: version.c:337 #, c-format msgid "\n" "Your installation contains hash indexes. These indexes have different\n" @@ -1636,7 +1656,7 @@ msgstr "\n" "формати в старому і новому кластерах, тож їх потрібно повторно індексувати\n" "за допомогою команди REINDEX. Після оновлення вам буде надано інструкції REINDEX.\n\n" -#: version.c:339 +#: version.c:343 #, c-format msgid "\n" "Your installation contains hash indexes. These indexes have different\n" @@ -1653,12 +1673,12 @@ msgstr "\n" "після виконання суперкористувачем бази даних в psql, повторно створить\n" "всі неприпустимі індекси; до цього ніякі геш-індекси не будуть використовуватись.\n\n" -#: version.c:365 +#: version.c:369 #, c-format msgid "Checking for invalid \"sql_identifier\" user columns" msgstr "Перевірка неприпустимих користувацьких стовпців \"sql_identifier\"" -#: version.c:373 +#: version.c:379 #, c-format msgid "Your installation contains the \"sql_identifier\" data type in user tables.\n" "The on-disk format for this data type has changed, so this\n" @@ -1673,17 +1693,17 @@ msgstr "Ваша інсталяція містить \"sql_identifier\" тип "Список проблемних стовпців знаходиться у файлі:\n" " %s\n\n" -#: version.c:397 +#: version.c:403 #, c-format msgid "Checking for extension updates" msgstr "Перевірка оновлень розширення" -#: version.c:449 +#: version.c:455 #, c-format msgid "notice" msgstr "повідомлення" -#: version.c:450 +#: version.c:456 #, c-format msgid "\n" "Your installation contains extensions that should be updated\n" diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl index 6b0f42c..ceca3ac 100644 --- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl +++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl @@ -221,7 +221,7 @@ if (defined($ENV{oldinstall})) my $dump_data = slurp_file($dump1_file); - my $newregresssrc = "$srcdir/src/test/regress"; + my $newregresssrc = dirname($ENV{REGRESS_SHLIB}); foreach (@libpaths) { my $libpath = $_; @@ -364,15 +364,9 @@ push(@dump_command, '--extra-float-digits', '0') if ($oldnode->pg_version < 12); $newnode->command_ok(\@dump_command, 'dump after running pg_upgrade'); -# No need to apply filters on the dumps if working on the same version -# for the old and new nodes. -my $dump1_filtered = $dump1_file; -my $dump2_filtered = $dump2_file; -if ($oldnode->pg_version != $newnode->pg_version) -{ - $dump1_filtered = filter_dump(1, $oldnode->pg_version, $dump1_file); - $dump2_filtered = filter_dump(0, $oldnode->pg_version, $dump2_file); -} +# Filter the contents of the dumps. +my $dump1_filtered = filter_dump(1, $oldnode->pg_version, $dump1_file); +my $dump2_filtered = filter_dump(0, $oldnode->pg_version, $dump2_file); # Compare the two dumps, there should be no differences. my $compare_res = compare($dump1_filtered, $dump2_filtered); diff --git a/src/bin/pg_waldump/po/de.po b/src/bin/pg_waldump/po/de.po index 7e3e141..4b73d64 100644 --- a/src/bin/pg_waldump/po/de.po +++ b/src/bin/pg_waldump/po/de.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: pg_waldump (PostgreSQL) 15\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" "POT-Creation-Date: 2022-09-26 04:48+0000\n" -"PO-Revision-Date: 2022-05-20 10:51+0200\n" +"PO-Revision-Date: 2023-11-08 21:52+0100\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -265,12 +265,12 @@ msgstr "ungültiger Wert »%s« für Option %s" #: pg_waldump.c:858 #, c-format msgid "custom resource manager \"%s\" does not exist" -msgstr "Custom-Resouce-Manager »%s« existiert nicht" +msgstr "Custom-Resource-Manager »%s« existiert nicht" #: pg_waldump.c:879 #, c-format msgid "resource manager \"%s\" does not exist" -msgstr "Resouce-Manager »%s« existiert nicht" +msgstr "Resource-Manager »%s« existiert nicht" #: pg_waldump.c:894 #, c-format diff --git a/src/bin/pg_waldump/po/ru.po b/src/bin/pg_waldump/po/ru.po index 6d05882..7a0e293 100644 --- a/src/bin/pg_waldump/po/ru.po +++ b/src/bin/pg_waldump/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_waldump (PostgreSQL) 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 09:09+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2023-08-30 15:41+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -409,59 +409,59 @@ msgstr "ошибка в записи WAL в позиции %X/%X: %s" msgid "Try \"%s --help\" for more information." msgstr "Для дополнительной информации попробуйте \"%s --help\"." -#: xlogreader.c:592 +#: xlogreader.c:620 #, c-format msgid "invalid record offset at %X/%X" msgstr "неверное смещение записи в позиции %X/%X" -#: xlogreader.c:600 +#: xlogreader.c:628 #, c-format msgid "contrecord is requested by %X/%X" msgstr "в позиции %X/%X запрошено продолжение записи" -#: xlogreader.c:641 xlogreader.c:1106 +#: xlogreader.c:669 xlogreader.c:1134 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "неверная длина записи в позиции %X/%X: ожидалось %u, получено %u" -#: xlogreader.c:730 +#: xlogreader.c:758 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "нет флага contrecord в позиции %X/%X" -#: xlogreader.c:743 +#: xlogreader.c:771 #, c-format msgid "invalid contrecord length %u (expected %lld) at %X/%X" msgstr "неверная длина contrecord: %u (ожидалась %lld) в позиции %X/%X" -#: xlogreader.c:1114 +#: xlogreader.c:1142 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "неверный ID менеджера ресурсов %u в позиции %X/%X" -#: xlogreader.c:1127 xlogreader.c:1143 +#: xlogreader.c:1155 xlogreader.c:1171 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запись с неверной ссылкой назад %X/%X в позиции %X/%X" -#: xlogreader.c:1181 +#: xlogreader.c:1209 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" "некорректная контрольная сумма данных менеджера ресурсов в записи в позиции " "%X/%X" -#: xlogreader.c:1218 +#: xlogreader.c:1246 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "неверное магическое число %04X в сегменте журнала %s, смещение %u" -#: xlogreader.c:1232 xlogreader.c:1273 +#: xlogreader.c:1260 xlogreader.c:1301 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "неверные информационные биты %04X в сегменте журнала %s, смещение %u" -#: xlogreader.c:1247 +#: xlogreader.c:1275 #, c-format msgid "" "WAL file is from different database system: WAL file database system " @@ -470,7 +470,7 @@ msgstr "" "файл WAL принадлежит другой СУБД: в нём указан идентификатор системы БД " "%llu, а идентификатор системы pg_control: %llu" -#: xlogreader.c:1255 +#: xlogreader.c:1283 #, c-format msgid "" "WAL file is from different database system: incorrect segment size in page " @@ -479,7 +479,7 @@ msgstr "" "файл WAL принадлежит другой СУБД: некорректный размер сегмента в заголовке " "страницы" -#: xlogreader.c:1261 +#: xlogreader.c:1289 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_BLCKSZ in page " @@ -488,35 +488,35 @@ msgstr "" "файл WAL принадлежит другой СУБД: некорректный XLOG_BLCKSZ в заголовке " "страницы" -#: xlogreader.c:1292 +#: xlogreader.c:1320 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неожиданный pageaddr %X/%X в сегменте журнала %s, смещение %u" -#: xlogreader.c:1317 +#: xlogreader.c:1345 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "" "нарушение последовательности ID линии времени %u (после %u) в сегменте " "журнала %s, смещение %u" -#: xlogreader.c:1722 +#: xlogreader.c:1750 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "идентификатор блока %u идёт не по порядку в позиции %X/%X" -#: xlogreader.c:1746 +#: xlogreader.c:1774 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA установлен, но данных в позиции %X/%X нет" -#: xlogreader.c:1753 +#: xlogreader.c:1781 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "" "BKPBLOCK_HAS_DATA не установлен, но длина данных равна %u в позиции %X/%X" -#: xlogreader.c:1789 +#: xlogreader.c:1817 #, c-format msgid "" "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " @@ -525,21 +525,21 @@ msgstr "" "BKPIMAGE_HAS_HOLE установлен, но для пропуска заданы смещение %u и длина %u " "при длине образа блока %u в позиции %X/%X" -#: xlogreader.c:1805 +#: xlogreader.c:1833 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "" "BKPIMAGE_HAS_HOLE не установлен, но для пропуска заданы смещение %u и длина " "%u в позиции %X/%X" -#: xlogreader.c:1819 +#: xlogreader.c:1847 #, c-format msgid "BKPIMAGE_COMPRESSED set, but block image length %u at %X/%X" msgstr "" "BKPIMAGE_COMPRESSED установлен, но длина образа блока равна %u в позиции %X/" "%X" -#: xlogreader.c:1834 +#: xlogreader.c:1862 #, c-format msgid "" "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_COMPRESSED set, but block image " @@ -548,41 +548,41 @@ msgstr "" "ни BKPIMAGE_HAS_HOLE, ни BKPIMAGE_COMPRESSED не установлены, но длина образа " "блока равна %u в позиции %X/%X" -#: xlogreader.c:1850 +#: xlogreader.c:1878 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "" "BKPBLOCK_SAME_REL установлен, но предыдущее значение не задано в позиции %X/" "%X" -#: xlogreader.c:1862 +#: xlogreader.c:1890 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "неверный идентификатор блока %u в позиции %X/%X" -#: xlogreader.c:1929 +#: xlogreader.c:1957 #, c-format msgid "record with invalid length at %X/%X" msgstr "запись с неверной длиной в позиции %X/%X" -#: xlogreader.c:1954 +#: xlogreader.c:1982 #, c-format msgid "could not locate backup block with ID %d in WAL record" msgstr "не удалось найти копию блока с ID %d в записи журнала WAL" -#: xlogreader.c:2038 +#: xlogreader.c:2066 #, c-format msgid "could not restore image at %X/%X with invalid block %d specified" msgstr "" "не удалось восстановить образ в позиции %X/%X с указанным неверным блоком %d" -#: xlogreader.c:2045 +#: xlogreader.c:2073 #, c-format msgid "could not restore image at %X/%X with invalid state, block %d" msgstr "" "не удалось восстановить образ в позиции %X/%X с неверным состоянием, блок %d" -#: xlogreader.c:2072 xlogreader.c:2089 +#: xlogreader.c:2100 xlogreader.c:2117 #, c-format msgid "" "could not restore image at %X/%X compressed with %s not supported by build, " @@ -591,7 +591,7 @@ msgstr "" "не удалось восстановить образ в позиции %X/%X, сжатый методом %s, который не " "поддерживается этой сборкой, блок %d" -#: xlogreader.c:2098 +#: xlogreader.c:2126 #, c-format msgid "" "could not restore image at %X/%X compressed with unknown method, block %d" @@ -599,7 +599,7 @@ msgstr "" "не удалось восстановить образ в позиции %X/%X, сжатый неизвестным методом, " "блок %d" -#: xlogreader.c:2106 +#: xlogreader.c:2134 #, c-format msgid "could not decompress image at %X/%X, block %d" msgstr "не удалось развернуть образ в позиции %X/%X, блок %d" diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 895afcb..e5ee1a0 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -3778,10 +3778,21 @@ advanceConnectionState(TState *thread, CState *st, StatsData *agg) case CSTATE_START_COMMAND: command = sql_script[st->use_file].commands[st->command]; - /* Transition to script end processing if done */ + /* + * Transition to script end processing if done, but close up + * shop if a pipeline is open at this point. + */ if (command == NULL) { - st->state = CSTATE_END_TX; + if (PQpipelineStatus(st->con) == PQ_PIPELINE_OFF) + st->state = CSTATE_END_TX; + else + { + pg_log_error("client %d aborted: end of script reached with pipeline open", + st->id); + st->state = CSTATE_ABORTED; + } + break; } diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl index 027c513..85eb5bc 100644 --- a/src/bin/pgbench/t/001_pgbench_with_server.pl +++ b/src/bin/pgbench/t/001_pgbench_with_server.pl @@ -841,9 +841,37 @@ select 1 \gset f } }); +# Try \startpipeline without \endpipeline in a single transaction +$node->pgbench( + '-t 1 -n -M extended', + 2, + [], + [qr{end of script reached with pipeline open}], + 'error: call \startpipeline without \endpipeline in a single transaction', + { + '001_pgbench_pipeline_5' => q{ +-- startpipeline only with single transaction +\startpipeline +} + }); + +# Try \startpipeline without \endpipeline +$node->pgbench( + '-t 2 -n -M extended', + 2, + [], + [qr{end of script reached with pipeline open}], + 'error: call \startpipeline without \endpipeline', + { + '001_pgbench_pipeline_6' => q{ +-- startpipeline only +\startpipeline +} + }); + # Working \startpipeline in prepared query mode with serializable $node->pgbench( - '-c4 -j2 -t 10 -n -M prepared', + '-c4 -t 10 -n -M prepared', 0, [ qr{type: .*/001_pgbench_pipeline_serializable}, diff --git a/src/bin/psql/po/ja.po b/src/bin/psql/po/ja.po index b707ff5..b07e77d 100644 --- a/src/bin/psql/po/ja.po +++ b/src/bin/psql/po/ja.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: psql (PostgreSQL 15)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" "POT-Creation-Date: 2023-02-06 15:59+0900\n" -"PO-Revision-Date: 2023-02-06 17:39+0900\n" +"PO-Revision-Date: 2023-11-22 10:50+0900\n" "Last-Translator: Kyotaro Horiguchi \n" "Language-Team: Japan PostgreSQL Users Group \n" "Language: ja\n" @@ -161,7 +161,7 @@ msgstr "割り込み\n" #: ../../fe_utils/print.c:3173 #, c-format msgid "Cannot add header to table content: column count of %d exceeded.\n" -msgstr "テーブルの内容にヘッダーを追加できません: 列数 %d が制限値を超えています。\n" +msgstr "テーブルの内容にヘッダーを追加できません: 列数の上限値%dを超えています。\n" #: ../../fe_utils/print.c:3213 #, c-format diff --git a/src/bin/psql/po/ru.po b/src/bin/psql/po/ru.po index 3026961..b8153a8 100644 --- a/src/bin/psql/po/ru.po +++ b/src/bin/psql/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-11-03 09:09+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2023-02-03 15:12+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -288,7 +288,7 @@ msgstr "" #: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5603 #: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 #: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 -#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: copy.c:488 copy.c:723 help.c:66 large_obj.c:157 large_obj.c:192 #: large_obj.c:254 startup.c:304 #, c-format msgid "%s" @@ -1019,11 +1019,11 @@ msgstr "" "Вводите данные для копирования, разделяя строки переводом строки.\n" "Закончите ввод строкой '\\.' или сигналом EOF." -#: copy.c:684 +#: copy.c:685 msgid "aborted because of read failure" msgstr "прерывание из-за ошибки чтения" -#: copy.c:718 +#: copy.c:719 msgid "trying to exit copy mode" msgstr "попытка выйти из режима копирования" diff --git a/src/bin/scripts/po/uk.po b/src/bin/scripts/po/uk.po index 59346f8..b8c10b9 100644 --- a/src/bin/scripts/po/uk.po +++ b/src/bin/scripts/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: 2022-08-12 10:50+0000\n" -"PO-Revision-Date: 2022-09-13 11:52\n" +"POT-Creation-Date: 2023-12-17 22:34+0000\n" +"PO-Revision-Date: 2023-12-18 17:41\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -94,12 +94,22 @@ msgstr "неприпустиме значення \"%s\" для параметр msgid "%s must be in range %d..%d" msgstr "%s має бути в діапазоні %d..%d" -#: ../../fe_utils/parallel_slot.c:301 +#: ../../fe_utils/parallel_slot.c:319 #, c-format -msgid "too many jobs for this platform" -msgstr "занадто багато завдань для цієї платформи" +msgid "too many jobs for this platform: %d" +msgstr "занадто багато завдань для цієї платформи: %d" -#: ../../fe_utils/parallel_slot.c:519 +#: ../../fe_utils/parallel_slot.c:328 +#, c-format +msgid "socket file descriptor out of range for select(): %d" +msgstr "дескриптор файлу сокету поза діапазоном для select(): %d" + +#: ../../fe_utils/parallel_slot.c:330 +#, c-format +msgid "Try fewer jobs." +msgstr "Спробуйте менше робочих завдань." + +#: ../../fe_utils/parallel_slot.c:552 #, c-format msgid "processing of database \"%s\" failed: %s" msgstr "обробка бази даних \"%s\" не вдалась: %s" @@ -177,130 +187,130 @@ msgstr "кластеризувати таблицю \"%s\" у базі дани msgid "clustering of database \"%s\" failed: %s" msgstr "кластеризувати базу даних \"%s\" не вдалося: %s" -#: clusterdb.c:246 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s: кластеризація бази даних \"%s\"\n" -#: clusterdb.c:262 +#: clusterdb.c:264 #, c-format msgid "%s clusters all previously clustered tables in a database.\n\n" msgstr "%s кластеризація усіх попередньо кластеризованих таблиць в базі даних.\n\n" -#: clusterdb.c:263 createdb.c:283 createuser.c:346 dropdb.c:172 dropuser.c:170 -#: pg_isready.c:226 reindexdb.c:760 vacuumdb.c:964 +#: clusterdb.c:265 createdb.c:281 createuser.c:346 dropdb.c:172 dropuser.c:170 +#: pg_isready.c:226 reindexdb.c:762 vacuumdb.c:964 #, c-format msgid "Usage:\n" msgstr "Використання:\n" -#: clusterdb.c:264 reindexdb.c:761 vacuumdb.c:965 +#: clusterdb.c:266 reindexdb.c:763 vacuumdb.c:965 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: clusterdb.c:265 createdb.c:285 createuser.c:348 dropdb.c:174 dropuser.c:172 -#: pg_isready.c:229 reindexdb.c:762 vacuumdb.c:966 +#: clusterdb.c:267 createdb.c:283 createuser.c:348 dropdb.c:174 dropuser.c:172 +#: pg_isready.c:229 reindexdb.c:764 vacuumdb.c:966 #, c-format msgid "\n" "Options:\n" msgstr "\n" "Параметри:\n" -#: clusterdb.c:266 +#: clusterdb.c:268 #, c-format msgid " -a, --all cluster all databases\n" msgstr " -a, --all кластеризація усіх баз даних\n" -#: clusterdb.c:267 +#: clusterdb.c:269 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" msgstr " -d, --dbname=ІМ'Я_БД база даних для кластеризації\n" -#: clusterdb.c:268 createuser.c:352 dropdb.c:175 dropuser.c:173 +#: clusterdb.c:270 createuser.c:352 dropdb.c:175 dropuser.c:173 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo показати команди, надіслані серверу\n" -#: clusterdb.c:269 +#: clusterdb.c:271 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet не виводити жодних повідомлень\n" -#: clusterdb.c:270 +#: clusterdb.c:272 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" msgstr " -t, --table=ТАБЛИЦЯ кластеризувати тільки вказані таблиці\n" -#: clusterdb.c:271 +#: clusterdb.c:273 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose виводити багато інформації\n" -#: clusterdb.c:272 createuser.c:364 dropdb.c:178 dropuser.c:176 +#: clusterdb.c:274 createuser.c:364 dropdb.c:178 dropuser.c:176 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version вивести інформацію про версію і вийти\n" -#: clusterdb.c:273 createuser.c:369 dropdb.c:180 dropuser.c:178 +#: clusterdb.c:275 createuser.c:369 dropdb.c:180 dropuser.c:178 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показати цю довідку, потім вийти\n" -#: clusterdb.c:274 createdb.c:300 createuser.c:370 dropdb.c:181 dropuser.c:179 -#: pg_isready.c:235 reindexdb.c:777 vacuumdb.c:991 +#: clusterdb.c:276 createdb.c:298 createuser.c:370 dropdb.c:181 dropuser.c:179 +#: pg_isready.c:235 reindexdb.c:779 vacuumdb.c:991 #, c-format msgid "\n" "Connection options:\n" msgstr "\n" "Налаштування з'єднання:\n" -#: clusterdb.c:275 createuser.c:371 dropdb.c:182 dropuser.c:180 vacuumdb.c:992 +#: clusterdb.c:277 createuser.c:371 dropdb.c:182 dropuser.c:180 vacuumdb.c:992 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME хост сервера бази даних або каталог сокетів\n" -#: clusterdb.c:276 createuser.c:372 dropdb.c:183 dropuser.c:181 vacuumdb.c:993 +#: clusterdb.c:278 createuser.c:372 dropdb.c:183 dropuser.c:181 vacuumdb.c:993 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT порт сервера бази даних\n" -#: clusterdb.c:277 dropdb.c:184 vacuumdb.c:994 +#: clusterdb.c:279 dropdb.c:184 vacuumdb.c:994 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ІМ'Я_КОРИСТУВАЧА ім'я користувача для з'єднання з сервером\n" -#: clusterdb.c:278 createuser.c:374 dropdb.c:185 dropuser.c:183 vacuumdb.c:995 +#: clusterdb.c:280 createuser.c:374 dropdb.c:185 dropuser.c:183 vacuumdb.c:995 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ніколи не запитувати пароль\n" -#: clusterdb.c:279 createuser.c:375 dropdb.c:186 dropuser.c:184 vacuumdb.c:996 +#: clusterdb.c:281 createuser.c:375 dropdb.c:186 dropuser.c:184 vacuumdb.c:996 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password запросити пароль\n" -#: clusterdb.c:280 dropdb.c:187 vacuumdb.c:997 +#: clusterdb.c:282 dropdb.c:187 vacuumdb.c:997 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAME альтернативна бази даних для обслуговування\n" -#: clusterdb.c:281 +#: clusterdb.c:283 #, c-format msgid "\n" "Read the description of the SQL command CLUSTER for details.\n" msgstr "\n" "Для деталей читайте опис команди SQL CLUSTER.\n" -#: clusterdb.c:282 createdb.c:308 createuser.c:376 dropdb.c:188 dropuser.c:185 -#: pg_isready.c:240 reindexdb.c:785 vacuumdb.c:999 +#: clusterdb.c:284 createdb.c:306 createuser.c:376 dropdb.c:188 dropuser.c:185 +#: pg_isready.c:240 reindexdb.c:787 vacuumdb.c:999 #, c-format msgid "\n" "Report bugs to <%s>.\n" msgstr "\n" "Повідомляти про помилки на <%s>.\n" -#: clusterdb.c:283 createdb.c:309 createuser.c:377 dropdb.c:189 dropuser.c:186 -#: pg_isready.c:241 reindexdb.c:786 vacuumdb.c:1000 +#: clusterdb.c:285 createdb.c:307 createuser.c:377 dropdb.c:189 dropuser.c:186 +#: pg_isready.c:241 reindexdb.c:788 vacuumdb.c:1000 #, c-format msgid "%s home page: <%s>\n" msgstr "Домашня сторінка %s: <%s>\n" @@ -336,139 +346,129 @@ msgstr "%s (%s/%s) " msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Відповідь має бути \"%s\" або \"%s\".\n" -#: createdb.c:165 -#, c-format -msgid "only one of --locale and --lc-ctype can be specified" -msgstr "тільки --locale або --lc-ctype може бути вказаний" - -#: createdb.c:167 -#, c-format -msgid "only one of --locale and --lc-collate can be specified" -msgstr "можна вказати лише одне: або --locale, або --lc-collate" - -#: createdb.c:175 +#: createdb.c:173 #, c-format msgid "\"%s\" is not a valid encoding name" msgstr "\"%s\" не є невірним ім'ям кодування" -#: createdb.c:245 +#: createdb.c:243 #, c-format msgid "database creation failed: %s" msgstr "створити базу даних не вдалося: %s" -#: createdb.c:264 +#: createdb.c:262 #, c-format msgid "comment creation failed (database was created): %s" msgstr "не вдалося створити коментарі (база даних була створена): %s" -#: createdb.c:282 +#: createdb.c:280 #, c-format msgid "%s creates a PostgreSQL database.\n\n" msgstr "%s створює базу даних PostgreSQL.\n\n" -#: createdb.c:284 +#: createdb.c:282 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" -#: createdb.c:286 +#: createdb.c:284 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=ТАБЛИЧНИЙ_ПРОСТІР табличний простір для бази даних за замовчуванням\n" -#: createdb.c:287 reindexdb.c:766 +#: createdb.c:285 reindexdb.c:768 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo показати команди, надіслані серверу\n" -#: createdb.c:288 +#: createdb.c:286 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=КОДУВАННЯ кодування бази даних\n" -#: createdb.c:289 +#: createdb.c:287 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr " -l, --locale=ЛОКАЛЬ параметри локалі бази даних\n" -#: createdb.c:290 +#: createdb.c:288 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" msgstr " --lc-collate=ЛОКАЛЬ параметр LC_COLLATE для бази даних\n" -#: createdb.c:291 +#: createdb.c:289 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" msgstr " --lc-ctype=ЛОКАЛЬ параметр LC_CTYPE для бази даних\n" -#: createdb.c:292 +#: createdb.c:290 #, c-format msgid " --icu-locale=LOCALE ICU locale setting for the database\n" msgstr " --icu-locale=LOCALE параметр локалі ICU бази даних\n" -#: createdb.c:293 +#: createdb.c:291 #, c-format msgid " --locale-provider={libc|icu}\n" " locale provider for the database's default collation\n" msgstr " --locale-provider={libc|icu}\n" " провайдер локалі для сортування бази даних за замовчуванням\n" -#: createdb.c:295 +#: createdb.c:293 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr " -O, --власник=ВЛАСНИК користувач-власник нової бази даних\n" -#: createdb.c:296 +#: createdb.c:294 #, c-format msgid " -S, --strategy=STRATEGY database creation strategy wal_log or file_copy\n" msgstr " -S, --strategy=STRATEGY стратегія створення бази даних для wal_log або file_copy\n" -#: createdb.c:297 +#: createdb.c:295 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --шаблон=ШАБЛОН шаблонна база даних для копіювання\n" -#: createdb.c:298 reindexdb.c:775 +#: createdb.c:296 reindexdb.c:777 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version вивести інформацію про версію, потім вийти\n" -#: createdb.c:299 reindexdb.c:776 +#: createdb.c:297 reindexdb.c:778 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показати цю довідку, потім вийти\n" -#: createdb.c:301 reindexdb.c:778 +#: createdb.c:299 reindexdb.c:780 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=ІМ'Я_ХОСТА хост сервера бази даних або каталог сокетів\n" -#: createdb.c:302 reindexdb.c:779 +#: createdb.c:300 reindexdb.c:781 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=ПОРТ порт сервера бази даних\n" -#: createdb.c:303 reindexdb.c:780 +#: createdb.c:301 reindexdb.c:782 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ІМ'Я_КОРИСТУВАЧА ім'я користувача для з'єднання з сервером\n" -#: createdb.c:304 reindexdb.c:781 +#: createdb.c:302 reindexdb.c:783 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ніколи не запитувати пароль\n" -#: createdb.c:305 reindexdb.c:782 +#: createdb.c:303 reindexdb.c:784 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password запросити пароль\n" -#: createdb.c:306 reindexdb.c:783 +#: createdb.c:304 reindexdb.c:785 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAME альтернативна бази даних для обслуговування\n" -#: createdb.c:307 +#: createdb.c:305 #, c-format msgid "\n" "By default, a database with the same name as the current user is created.\n" @@ -864,72 +864,72 @@ msgstr "переіндексування системних каталогів msgid "reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "переіндексувати таблиці \"%s\" в базі даних \"%s\" не вдалося: %s" -#: reindexdb.c:742 +#: reindexdb.c:744 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s: переіндексування бази даних \"%s\"\n" -#: reindexdb.c:759 +#: reindexdb.c:761 #, c-format msgid "%s reindexes a PostgreSQL database.\n\n" msgstr "%s переіндексовує базу даних PostgreSQL.\n\n" -#: reindexdb.c:763 +#: reindexdb.c:765 #, c-format msgid " -a, --all reindex all databases\n" msgstr " -a, --all переіндексувати всі бази даних\n" -#: reindexdb.c:764 +#: reindexdb.c:766 #, c-format msgid " --concurrently reindex concurrently\n" msgstr " --concurrently переіндексувати одночасно\n" -#: reindexdb.c:765 +#: reindexdb.c:767 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" msgstr " -d, --dbname=DBNAME база даних для переіндексування\n" -#: reindexdb.c:767 +#: reindexdb.c:769 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" msgstr " -i, --index=INDEX повторно створити лише вказані індекси\n" -#: reindexdb.c:768 +#: reindexdb.c:770 #, c-format msgid " -j, --jobs=NUM use this many concurrent connections to reindex\n" msgstr " -j, --jobs=NUM використати цю кількість паралельних підключень для переіндексування\n" -#: reindexdb.c:769 +#: reindexdb.c:771 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet не писати жодних повідомлень\n" -#: reindexdb.c:770 +#: reindexdb.c:772 #, c-format msgid " -s, --system reindex system catalogs only\n" msgstr " -s, --system переіндексувати тільки системні каталоги\n" -#: reindexdb.c:771 +#: reindexdb.c:773 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" msgstr " -S, --schema=SCHEMA переіндексувати лише вказані схеми\n" -#: reindexdb.c:772 +#: reindexdb.c:774 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" msgstr " -t, --table=TABLE переіндексувати лише вказані таблиці\n" -#: reindexdb.c:773 +#: reindexdb.c:775 #, c-format msgid " --tablespace=TABLESPACE tablespace where indexes are rebuilt\n" msgstr " --tablespace=TABLESPACE табличний простір для перебудованих індексів\n" -#: reindexdb.c:774 +#: reindexdb.c:776 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose виводити багато повідомлень\n" -#: reindexdb.c:784 +#: reindexdb.c:786 #, c-format msgid "\n" "Read the description of the SQL command REINDEX for details.\n" diff --git a/src/common/wchar.c b/src/common/wchar.c index 1e6e198..ea46192 100644 --- a/src/common/wchar.c +++ b/src/common/wchar.c @@ -13,6 +13,7 @@ #include "c.h" #include "mb/pg_wchar.h" +#include "utils/ascii.h" /* diff --git a/src/include/access/genam.h b/src/include/access/genam.h index 134b20f..f6ad7c3 100644 --- a/src/include/access/genam.h +++ b/src/include/access/genam.h @@ -138,6 +138,7 @@ typedef struct IndexOrderByDistance #define IndexScanIsValid(scan) PointerIsValid(scan) extern Relation index_open(Oid relationId, LOCKMODE lockmode); +extern Relation try_index_open(Oid relationId, LOCKMODE lockmode); extern void index_close(Relation relation, LOCKMODE lockmode); extern bool index_insert(Relation indexRelation, diff --git a/src/include/access/tableam.h b/src/include/access/tableam.h index fe869c6..5d0431a 100644 --- a/src/include/access/tableam.h +++ b/src/include/access/tableam.h @@ -1455,8 +1455,8 @@ table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots, * TM_BeingModified (the last only possible if wait == false). * * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, - * t_xmax, and, if possible, and, if possible, t_cmax. See comments for - * struct TM_FailureData for additional info. + * t_xmax, and, if possible, t_cmax. See comments for struct + * TM_FailureData for additional info. */ static inline TM_Result table_tuple_delete(Relation rel, ItemPointer tid, CommandId cid, diff --git a/src/include/common/int.h b/src/include/common/int.h index 12a269d..e2617fb 100644 --- a/src/include/common/int.h +++ b/src/include/common/int.h @@ -200,8 +200,12 @@ pg_sub_s64_overflow(int64 a, int64 b, int64 *result) *result = (int64) res; return false; #else + /* + * Note: overflow is also possible when a == 0 and b < 0 (specifically, + * when b == PG_INT64_MIN). + */ if ((a < 0 && b > 0 && a < PG_INT64_MIN + b) || - (a > 0 && b < 0 && a > PG_INT64_MAX + b)) + (a >= 0 && b < 0 && a > PG_INT64_MAX + b)) { *result = 0x5EED; /* to avoid spurious warnings */ return true; diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h index fe769e0..08fac9e 100644 --- a/src/include/jit/llvmjit.h +++ b/src/include/jit/llvmjit.h @@ -42,6 +42,13 @@ typedef struct LLVMJitContext /* number of modules created */ size_t module_generation; + /* + * The LLVM Context used by this JIT context. An LLVM context is reused + * across many compilations, but occasionally reset to prevent it using + * too much memory due to more and more types accumulating. + */ + LLVMContextRef llvm_context; + /* current, "open for write", module */ LLVMModuleRef module; @@ -107,6 +114,7 @@ extern LLVMValueRef llvm_function_reference(LLVMJitContext *context, LLVMModuleRef mod, FunctionCallInfo fcinfo); +extern void llvm_inline_reset_caches(void); extern void llvm_inline(LLVMModuleRef mod); /* diff --git a/src/include/jit/llvmjit_emit.h b/src/include/jit/llvmjit_emit.h index 27a080b..0a0f876 100644 --- a/src/include/jit/llvmjit_emit.h +++ b/src/include/jit/llvmjit_emit.h @@ -45,36 +45,36 @@ l_ptr(LLVMTypeRef t) * Emit constant integer. */ static inline LLVMValueRef -l_int8_const(int8 i) +l_int8_const(LLVMContextRef lc, int8 i) { - return LLVMConstInt(LLVMInt8Type(), i, false); + return LLVMConstInt(LLVMInt8TypeInContext(lc), i, false); } /* * Emit constant integer. */ static inline LLVMValueRef -l_int16_const(int16 i) +l_int16_const(LLVMContextRef lc, int16 i) { - return LLVMConstInt(LLVMInt16Type(), i, false); + return LLVMConstInt(LLVMInt16TypeInContext(lc), i, false); } /* * Emit constant integer. */ static inline LLVMValueRef -l_int32_const(int32 i) +l_int32_const(LLVMContextRef lc, int32 i) { - return LLVMConstInt(LLVMInt32Type(), i, false); + return LLVMConstInt(LLVMInt32TypeInContext(lc), i, false); } /* * Emit constant integer. */ static inline LLVMValueRef -l_int64_const(int64 i) +l_int64_const(LLVMContextRef lc, int64 i) { - return LLVMConstInt(LLVMInt64Type(), i, false); + return LLVMConstInt(LLVMInt64TypeInContext(lc), i, false); } /* @@ -177,12 +177,15 @@ l_bb_before_v(LLVMBasicBlockRef r, const char *fmt,...) { char buf[512]; va_list args; + LLVMContextRef lc; va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); - return LLVMInsertBasicBlock(r, buf); + lc = LLVMGetTypeContext(LLVMTypeOf(LLVMGetBasicBlockParent(r))); + + return LLVMInsertBasicBlockInContext(lc, r, buf); } /* separate, because pg_attribute_printf(2, 3) can't appear in definition */ @@ -197,12 +200,15 @@ l_bb_append_v(LLVMValueRef f, const char *fmt,...) { char buf[512]; va_list args; + LLVMContextRef lc; va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); - return LLVMAppendBasicBlock(f, buf); + lc = LLVMGetTypeContext(LLVMTypeOf(f)); + + return LLVMAppendBasicBlockInContext(lc, f, buf); } /* @@ -214,7 +220,7 @@ l_callsite_ro(LLVMValueRef f) const char argname[] = "readonly"; LLVMAttributeRef ref; - ref = LLVMCreateStringAttribute(LLVMGetGlobalContext(), + ref = LLVMCreateStringAttribute(LLVMGetTypeContext(LLVMTypeOf(f)), argname, sizeof(argname) - 1, NULL, 0); @@ -234,7 +240,7 @@ l_callsite_alwaysinline(LLVMValueRef f) id = LLVMGetEnumAttributeKindForName(argname, sizeof(argname) - 1); - attr = LLVMCreateEnumAttribute(LLVMGetGlobalContext(), id, 0); + attr = LLVMCreateEnumAttribute(LLVMGetTypeContext(LLVMTypeOf(f)), id, 0); LLVMAddCallSiteAttribute(f, LLVMAttributeFunctionIndex, attr); } diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h index 31f5b39..4a0e6bf 100644 --- a/src/include/mb/pg_wchar.h +++ b/src/include/mb/pg_wchar.h @@ -699,57 +699,4 @@ extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p, extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len); #endif - -/* - * Verify a chunk of bytes for valid ASCII. - * - * Returns false if the input contains any zero bytes or bytes with the - * high-bit set. Input len must be a multiple of 8. - */ -static inline bool -is_valid_ascii(const unsigned char *s, int len) -{ - uint64 chunk, - highbit_cum = UINT64CONST(0), - zero_cum = UINT64CONST(0x8080808080808080); - - Assert(len % sizeof(chunk) == 0); - - while (len > 0) - { - memcpy(&chunk, s, sizeof(chunk)); - - /* - * Capture any zero bytes in this chunk. - * - * First, add 0x7f to each byte. This sets the high bit in each byte, - * unless it was a zero. If any resulting high bits are zero, the - * corresponding high bits in the zero accumulator will be cleared. - * - * If none of the bytes in the chunk had the high bit set, the max - * value each byte can have after the addition is 0x7f + 0x7f = 0xfe, - * and we don't need to worry about carrying over to the next byte. If - * any input bytes did have the high bit set, it doesn't matter - * because we check for those separately. - */ - zero_cum &= (chunk + UINT64CONST(0x7f7f7f7f7f7f7f7f)); - - /* Capture any set bits in this chunk. */ - highbit_cum |= chunk; - - s += sizeof(chunk); - len -= sizeof(chunk); - } - - /* Check if any high bits in the high bit accumulator got set. */ - if (highbit_cum & UINT64CONST(0x8080808080808080)) - return false; - - /* Check if any high bits in the zero accumulator got cleared. */ - if (zero_cum != UINT64CONST(0x8080808080808080)) - return false; - - return true; -} - #endif /* PG_WCHAR_H */ diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h index 409005b..7b2a0e0 100644 --- a/src/include/optimizer/optimizer.h +++ b/src/include/optimizer/optimizer.h @@ -138,7 +138,9 @@ extern Expr *canonicalize_qual(Expr *qual, bool is_check); /* in util/clauses.c: */ extern bool contain_mutable_functions(Node *clause); +extern bool contain_mutable_functions_after_planning(Expr *expr); extern bool contain_volatile_functions(Node *clause); +extern bool contain_volatile_functions_after_planning(Expr *expr); extern bool contain_volatile_functions_not_nextval(Node *clause); extern Node *eval_const_expressions(PlannerInfo *root, Node *node); diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index d09e9f9..768e3d7 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -77,9 +77,6 @@ /* Define to 1 if you have the `backtrace_symbols' function. */ #undef HAVE_BACKTRACE_SYMBOLS -/* Define to 1 if you have the `BIO_get_data' function. */ -#undef HAVE_BIO_GET_DATA - /* Define to 1 if you have the `BIO_meth_new' function. */ #undef HAVE_BIO_METH_NEW diff --git a/src/include/port/atomics/generic.h b/src/include/port/atomics/generic.h index a1f2456..d62428a 100644 --- a/src/include/port/atomics/generic.h +++ b/src/include/port/atomics/generic.h @@ -83,7 +83,7 @@ pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr) static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { - return pg_atomic_exchange_u32_impl(ptr, &value, 1) == 0; + return pg_atomic_exchange_u32_impl(ptr, 1) == 0; } #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h index a17e7b2..dbb0aef 100644 --- a/src/include/storage/buf_internals.h +++ b/src/include/storage/buf_internals.h @@ -150,7 +150,7 @@ typedef struct buftag * is held. Thus buffer header lock holder can do complex updates of the * state variable in single write, simultaneously with lock release (cleaning * BM_LOCKED flag). On the other hand, updating of state without holding - * buffer header lock is restricted to CAS, which insure that BM_LOCKED flag + * buffer header lock is restricted to CAS, which ensures that BM_LOCKED flag * is not set. Atomic increment/decrement, OR/AND etc. are not allowed. * * An exception is that if we have the buffer pinned, its tag can't change diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h index e03d317..d88fa4b 100644 --- a/src/include/storage/lwlock.h +++ b/src/include/storage/lwlock.h @@ -23,6 +23,14 @@ struct PGPROC; +/* what state of the wait process is a backend in */ +typedef enum LWLockWaitState +{ + LW_WS_NOT_WAITING, /* not currently waiting / woken up */ + LW_WS_WAITING, /* currently waiting */ + LW_WS_PENDING_WAKEUP /* removed from waitlist, but not yet signalled */ +} LWLockWaitState; + /* * Code outside of lwlock.c should not manipulate the contents of this * structure directly, but we have to declare it here to allow LWLocks to be diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 2579e61..2ea7730 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -211,7 +211,7 @@ struct PGPROC bool recoveryConflictPending; /* Info about LWLock the process is currently waiting for, if any. */ - bool lwWaiting; /* true if waiting for an LW lock */ + uint8 lwWaiting; /* see LWLockWaitState */ uint8 lwWaitMode; /* lwlock mode being waited for */ proclist_node lwWaitLink; /* position in LW lock wait list */ diff --git a/src/include/utils/ascii.h b/src/include/utils/ascii.h index aed8019..4e3a1d4 100644 --- a/src/include/utils/ascii.h +++ b/src/include/utils/ascii.h @@ -13,4 +13,56 @@ extern void ascii_safe_strlcpy(char *dest, const char *src, size_t destsiz); +/* + * Verify a chunk of bytes for valid ASCII. + * + * Returns false if the input contains any zero bytes or bytes with the + * high-bit set. Input len must be a multiple of 8. + */ +static inline bool +is_valid_ascii(const unsigned char *s, int len) +{ + uint64 chunk, + highbit_cum = UINT64CONST(0), + zero_cum = UINT64CONST(0x8080808080808080); + + Assert(len % sizeof(chunk) == 0); + + while (len > 0) + { + memcpy(&chunk, s, sizeof(chunk)); + + /* + * Capture any zero bytes in this chunk. + * + * First, add 0x7f to each byte. This sets the high bit in each byte, + * unless it was a zero. If any resulting high bits are zero, the + * corresponding high bits in the zero accumulator will be cleared. + * + * If none of the bytes in the chunk had the high bit set, the max + * value each byte can have after the addition is 0x7f + 0x7f = 0xfe, + * and we don't need to worry about carrying over to the next byte. If + * any input bytes did have the high bit set, it doesn't matter + * because we check for those separately. + */ + zero_cum &= (chunk + UINT64CONST(0x7f7f7f7f7f7f7f7f)); + + /* Capture any set bits in this chunk. */ + highbit_cum |= chunk; + + s += sizeof(chunk); + len -= sizeof(chunk); + } + + /* Check if any high bits in the high bit accumulator got set. */ + if (highbit_cum & UINT64CONST(0x8080808080808080)) + return false; + + /* Check if any high bits in the zero accumulator got cleared. */ + if (zero_cum != UINT64CONST(0x8080808080808080)) + return false; + + return true; +} + #endif /* _ASCII_H_ */ diff --git a/src/include/utils/wait_event.h b/src/include/utils/wait_event.h index b578e2e..c814918 100644 --- a/src/include/utils/wait_event.h +++ b/src/include/utils/wait_event.h @@ -229,7 +229,8 @@ typedef enum WAIT_EVENT_WAL_READ, WAIT_EVENT_WAL_SYNC, WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN, - WAIT_EVENT_WAL_WRITE + WAIT_EVENT_WAL_WRITE, + WAIT_EVENT_VERSION_FILE_SYNC } WaitEventIO; diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 8989f71..c9450ec 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -846,6 +846,8 @@ pqSaveWriteError(PGconn *conn) * using whatever is in conn->errorMessage. In any case, clear the async * result storage, and update our notion of how much error text has been * returned to the application. + * + * Note that in no case (not even OOM) do we return NULL. */ PGresult * pqPrepareAsyncResult(PGconn *conn) @@ -2119,29 +2121,21 @@ PQgetResult(PGconn *conn) /* * We're about to return the NULL that terminates the round of - * results from the current query; prepare to send the results - * of the next query, if any, when we're called next. If there's - * no next element in the command queue, this gets us in IDLE - * state. + * results from the current query; prepare to send the results of + * the next query, if any, when we're called next. If there's no + * next element in the command queue, this gets us in IDLE state. */ pqPipelineProcessQueue(conn); res = NULL; /* query is complete */ break; case PGASYNC_READY: - - /* - * For any query type other than simple query protocol, we advance - * the command queue here. This is because for simple query - * protocol we can get the READY state multiple times before the - * command is actually complete, since the command string can - * contain many queries. In simple query protocol, the queue - * advance is done by fe-protocol3 when it receives ReadyForQuery. - */ - if (conn->cmd_queue_head && - conn->cmd_queue_head->queryclass != PGQUERY_SIMPLE) - pqCommandQueueAdvance(conn); res = pqPrepareAsyncResult(conn); + + /* Advance the queue as appropriate */ + pqCommandQueueAdvance(conn, false, + res->resultStatus == PGRES_PIPELINE_SYNC); + if (conn->pipelineStatus != PQ_PIPELINE_OFF) { /* @@ -2161,7 +2155,7 @@ PQgetResult(PGconn *conn) * (In other words: we don't return a NULL after a pipeline * sync.) */ - if (res && res->resultStatus == PGRES_PIPELINE_SYNC) + if (res->resultStatus == PGRES_PIPELINE_SYNC) pqPipelineProcessQueue(conn); } else @@ -3040,18 +3034,44 @@ PQexitPipelineMode(PGconn *conn) /* * pqCommandQueueAdvance - * Remove one query from the command queue, when we receive - * all results from the server that pertain to it. + * Remove one query from the command queue, if appropriate. + * + * If we have received all results corresponding to the head element + * in the command queue, remove it. + * + * In simple query protocol we must not advance the command queue until the + * ReadyForQuery message has been received. This is because in simple mode a + * command can have multiple queries, and we must process result for all of + * them before moving on to the next command. + * + * Another consideration is synchronization during error processing in + * extended query protocol: we refuse to advance the queue past a SYNC queue + * element, unless the result we've received is also a SYNC. In particular + * this protects us from advancing when an error is received at an + * inappropriate moment. */ void -pqCommandQueueAdvance(PGconn *conn) +pqCommandQueueAdvance(PGconn *conn, bool isReadyForQuery, bool gotSync) { PGcmdQueueEntry *prevquery; if (conn->cmd_queue_head == NULL) return; - /* delink from queue */ + /* + * If processing a query of simple query protocol, we only advance the + * queue when we receive the ReadyForQuery message for it. + */ + if (conn->cmd_queue_head->queryclass == PGQUERY_SIMPLE && !isReadyForQuery) + return; + + /* + * If we're waiting for a SYNC, don't advance the queue until we get one. + */ + if (conn->cmd_queue_head->queryclass == PGQUERY_SYNC && !gotSync) + return; + + /* delink element from queue */ prevquery = conn->cmd_queue_head; conn->cmd_queue_head = conn->cmd_queue_head->next; @@ -3059,7 +3079,7 @@ pqCommandQueueAdvance(PGconn *conn) if (conn->cmd_queue_head == NULL) conn->cmd_queue_tail = NULL; - /* and make it recyclable */ + /* and make the queue element recyclable */ prevquery->next = NULL; pqRecycleCmdQueueEntry(conn, prevquery); } @@ -3083,6 +3103,7 @@ pqPipelineProcessQueue(PGconn *conn) return; case PGASYNC_IDLE: + /* * If we're in IDLE mode and there's some command in the queue, * get us into PIPELINE_IDLE mode and process normally. Otherwise @@ -3271,6 +3292,14 @@ PQsendFlushRequest(PGconn *conn) return 0; } + /* + * Give the data a push (in pipeline mode, only if we're past the size + * threshold). In nonblock mode, don't complain if we're unable to send + * it all; PQgetResult() will do any additional flushing needed. + */ + if (pqPipelineFlush(conn) < 0) + return 0; + return 1; } diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index 0d60e8c..3870d52 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -240,13 +240,8 @@ pqParseInput3(PGconn *conn) } else { - /* - * In simple query protocol, advance the command queue - * (see PQgetResult). - */ - if (conn->cmd_queue_head && - conn->cmd_queue_head->queryclass == PGQUERY_SIMPLE) - pqCommandQueueAdvance(conn); + /* Advance the command queue and set us idle */ + pqCommandQueueAdvance(conn, true, false); conn->asyncStatus = PGASYNC_IDLE; } break; diff --git a/src/interfaces/libpq/fe-secure-gssapi.c b/src/interfaces/libpq/fe-secure-gssapi.c index 5f9104b..a3768cd 100644 --- a/src/interfaces/libpq/fe-secure-gssapi.c +++ b/src/interfaces/libpq/fe-secure-gssapi.c @@ -79,8 +79,8 @@ * On success, returns the number of data bytes consumed (possibly less than * len). On failure, returns -1 with errno set appropriately. If the errno * indicates a non-retryable error, a message is added to conn->errorMessage. - * For retryable errors, caller should call again (passing the same data) - * once the socket is ready. + * For retryable errors, caller should call again (passing the same or more + * data) once the socket is ready. */ ssize_t pg_GSS_write(PGconn *conn, const void *ptr, size_t len) @@ -90,19 +90,25 @@ pg_GSS_write(PGconn *conn, const void *ptr, size_t len) gss_buffer_desc input, output = GSS_C_EMPTY_BUFFER; ssize_t ret = -1; - size_t bytes_sent = 0; size_t bytes_to_encrypt; size_t bytes_encrypted; gss_ctx_id_t gctx = conn->gctx; /* - * When we get a failure, we must not tell the caller we have successfully - * transmitted everything, else it won't retry. Hence a "success" - * (positive) return value must only count source bytes corresponding to - * fully-transmitted encrypted packets. The amount of source data - * corresponding to the current partly-transmitted packet is remembered in + * When we get a retryable failure, we must not tell the caller we have + * successfully transmitted everything, else it won't retry. For + * simplicity, we claim we haven't transmitted anything until we have + * successfully transmitted all "len" bytes. Between calls, the amount of + * the current input data that's already been encrypted and placed into + * PqGSSSendBuffer (and perhaps transmitted) is remembered in * PqGSSSendConsumed. On a retry, the caller *must* be sending that data * again, so if it offers a len less than that, something is wrong. + * + * Note: it may seem attractive to report partial write completion once + * we've successfully sent any encrypted packets. However, that can cause + * problems for callers; notably, pqPutMsgEnd's heuristic to send only + * full 8K blocks interacts badly with such a hack. We won't save much, + * typically, by letting callers discard data early, so don't risk it. */ if (len < PqGSSSendConsumed) { @@ -135,38 +141,25 @@ pg_GSS_write(PGconn *conn, const void *ptr, size_t len) */ if (PqGSSSendLength) { - ssize_t ret; + ssize_t retval; ssize_t amount = PqGSSSendLength - PqGSSSendNext; - ret = pqsecure_raw_write(conn, PqGSSSendBuffer + PqGSSSendNext, amount); - if (ret <= 0) - { - /* - * Report any previously-sent data; if there was none, reflect - * the pqsecure_raw_write result up to our caller. When there - * was some, we're effectively assuming that any interesting - * failure condition will recur on the next try. - */ - if (bytes_sent) - return bytes_sent; - return ret; - } + retval = pqsecure_raw_write(conn, PqGSSSendBuffer + PqGSSSendNext, amount); + if (retval <= 0) + return retval; /* * Check if this was a partial write, and if so, move forward that * far in our buffer and try again. */ - if (ret != amount) + if (retval < amount) { - PqGSSSendNext += ret; + PqGSSSendNext += retval; continue; } - /* We've successfully sent whatever data was in that packet. */ - bytes_sent += PqGSSSendConsumed; - - /* All encrypted data was sent, our buffer is empty now. */ - PqGSSSendLength = PqGSSSendNext = PqGSSSendConsumed = 0; + /* We've successfully sent whatever data was in the buffer. */ + PqGSSSendLength = PqGSSSendNext = 0; } /* @@ -192,7 +185,7 @@ pg_GSS_write(PGconn *conn, const void *ptr, size_t len) /* * Create the next encrypted packet. Any failure here is considered a - * hard failure, so we return -1 even if bytes_sent > 0. + * hard failure, so we return -1 even if some data has been sent. */ major = gss_wrap(&minor, gctx, 1, GSS_C_QOP_DEFAULT, &input, &conf_state, &output); @@ -238,10 +231,13 @@ pg_GSS_write(PGconn *conn, const void *ptr, size_t len) } /* If we get here, our counters should all match up. */ - Assert(bytes_sent == len); - Assert(bytes_sent == bytes_encrypted); + Assert(len == PqGSSSendConsumed); + Assert(len == bytes_encrypted); + + /* We're reporting all the data as sent, so reset PqGSSSendConsumed. */ + PqGSSSendConsumed = 0; - ret = bytes_sent; + ret = bytes_encrypted; cleanup: /* Release GSSAPI buffer storage, if we didn't already */ diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c index af59ff4..61f3767 100644 --- a/src/interfaces/libpq/fe-secure-openssl.c +++ b/src/interfaces/libpq/fe-secure-openssl.c @@ -209,7 +209,7 @@ rloop: */ goto rloop; case SSL_ERROR_SYSCALL: - if (n < 0) + if (n < 0 && SOCK_ERRNO != 0) { result_errno = SOCK_ERRNO; if (result_errno == EPIPE || @@ -317,7 +317,13 @@ pgtls_write(PGconn *conn, const void *ptr, size_t len) n = 0; break; case SSL_ERROR_SYSCALL: - if (n < 0) + + /* + * If errno is still zero then assume it's a read EOF situation, + * and report EOF. (This seems possible because SSL_write can + * also do reads.) + */ + if (n < 0 && SOCK_ERRNO != 0) { result_errno = SOCK_ERRNO; if (result_errno == EPIPE || result_errno == ECONNRESET) @@ -1479,10 +1485,12 @@ open_client_SSL(PGconn *conn) { int r; + SOCK_ERRNO_SET(0); ERR_clear_error(); r = SSL_connect(conn->ssl); if (r <= 0) { + int save_errno = SOCK_ERRNO; int err = SSL_get_error(conn->ssl, r); unsigned long ecode; @@ -1499,10 +1507,10 @@ open_client_SSL(PGconn *conn) { char sebuf[PG_STRERROR_R_BUFLEN]; - if (r == -1) + if (r == -1 && save_errno != 0) appendPQExpBuffer(&conn->errorMessage, libpq_gettext("SSL SYSCALL error: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); + SOCK_STRERROR(save_errno, sebuf, sizeof(sebuf))); else appendPQExpBufferStr(&conn->errorMessage, libpq_gettext("SSL SYSCALL error: EOF detected\n")); @@ -1800,11 +1808,7 @@ PQsslAttribute(PGconn *conn, const char *attribute_name) * to retry; do we need to adopt their logic for that? */ -#ifndef HAVE_BIO_GET_DATA -#define BIO_get_data(bio) (bio->ptr) -#define BIO_set_data(bio, data) (bio->ptr = data) -#endif - +/* protected by ssl_config_mutex */ static BIO_METHOD *my_bio_methods; static int @@ -1812,7 +1816,7 @@ my_sock_read(BIO *h, char *buf, int size) { int res; - res = pqsecure_raw_read((PGconn *) BIO_get_data(h), buf, size); + res = pqsecure_raw_read((PGconn *) BIO_get_app_data(h), buf, size); BIO_clear_retry_flags(h); if (res < 0) { @@ -1842,7 +1846,7 @@ my_sock_write(BIO *h, const char *buf, int size) { int res; - res = pqsecure_raw_write((PGconn *) BIO_get_data(h), buf, size); + res = pqsecure_raw_write((PGconn *) BIO_get_app_data(h), buf, size); BIO_clear_retry_flags(h); if (res < 0) { @@ -1870,6 +1874,15 @@ my_sock_write(BIO *h, const char *buf, int size) static BIO_METHOD * my_BIO_s_socket(void) { + BIO_METHOD *res; + +#ifdef ENABLE_THREAD_SAFETY + if (pthread_mutex_lock(&ssl_config_mutex)) + return NULL; +#endif + + res = my_bio_methods; + if (!my_bio_methods) { BIO_METHOD *biom = (BIO_METHOD *) BIO_s_socket(); @@ -1878,39 +1891,58 @@ my_BIO_s_socket(void) my_bio_index = BIO_get_new_index(); if (my_bio_index == -1) - return NULL; + goto err; my_bio_index |= (BIO_TYPE_DESCRIPTOR | BIO_TYPE_SOURCE_SINK); - my_bio_methods = BIO_meth_new(my_bio_index, "libpq socket"); - if (!my_bio_methods) - return NULL; + res = BIO_meth_new(my_bio_index, "libpq socket"); + if (!res) + goto err; /* * As of this writing, these functions never fail. But check anyway, * like OpenSSL's own examples do. */ - if (!BIO_meth_set_write(my_bio_methods, my_sock_write) || - !BIO_meth_set_read(my_bio_methods, my_sock_read) || - !BIO_meth_set_gets(my_bio_methods, BIO_meth_get_gets(biom)) || - !BIO_meth_set_puts(my_bio_methods, BIO_meth_get_puts(biom)) || - !BIO_meth_set_ctrl(my_bio_methods, BIO_meth_get_ctrl(biom)) || - !BIO_meth_set_create(my_bio_methods, BIO_meth_get_create(biom)) || - !BIO_meth_set_destroy(my_bio_methods, BIO_meth_get_destroy(biom)) || - !BIO_meth_set_callback_ctrl(my_bio_methods, BIO_meth_get_callback_ctrl(biom))) + if (!BIO_meth_set_write(res, my_sock_write) || + !BIO_meth_set_read(res, my_sock_read) || + !BIO_meth_set_gets(res, BIO_meth_get_gets(biom)) || + !BIO_meth_set_puts(res, BIO_meth_get_puts(biom)) || + !BIO_meth_set_ctrl(res, BIO_meth_get_ctrl(biom)) || + !BIO_meth_set_create(res, BIO_meth_get_create(biom)) || + !BIO_meth_set_destroy(res, BIO_meth_get_destroy(biom)) || + !BIO_meth_set_callback_ctrl(res, BIO_meth_get_callback_ctrl(biom))) { - BIO_meth_free(my_bio_methods); - my_bio_methods = NULL; - return NULL; + goto err; } #else - my_bio_methods = malloc(sizeof(BIO_METHOD)); - if (!my_bio_methods) - return NULL; - memcpy(my_bio_methods, biom, sizeof(BIO_METHOD)); - my_bio_methods->bread = my_sock_read; - my_bio_methods->bwrite = my_sock_write; + res = malloc(sizeof(BIO_METHOD)); + if (!res) + goto err; + memcpy(res, biom, sizeof(BIO_METHOD)); + res->bread = my_sock_read; + res->bwrite = my_sock_write; #endif } - return my_bio_methods; + + my_bio_methods = res; + +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif + + return res; + +err: +#ifdef HAVE_BIO_METH_NEW + if (res) + BIO_meth_free(res); +#else + if (res) + free(res); +#endif + +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif + return NULL; } /* This should exactly match OpenSSL's SSL_set_fd except for using my BIO */ @@ -1933,7 +1965,7 @@ my_SSL_set_fd(PGconn *conn, int fd) SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); goto err; } - BIO_set_data(bio, conn); + BIO_set_app_data(bio, conn); SSL_set_bio(conn->ssl, bio, bio); BIO_set_fd(bio, fd, BIO_NOCLOSE); diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index a1dc7b7..4c85b72 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -235,6 +235,8 @@ pqsecure_raw_read(PGconn *conn, void *ptr, size_t len) int result_errno = 0; char sebuf[PG_STRERROR_R_BUFLEN]; + SOCK_ERRNO_SET(0); + n = recv(conn->sock, ptr, len, 0); if (n < 0) @@ -262,6 +264,11 @@ pqsecure_raw_read(PGconn *conn, void *ptr, size_t len) "\tbefore or while processing the request.\n")); break; + case 0: + /* If errno didn't get set, treat it as regular EOF */ + n = 0; + break; + default: appendPQExpBuffer(&conn->errorMessage, libpq_gettext("could not receive data from server: %s\n"), diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index ac9042f..0731855 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -553,8 +553,8 @@ struct pg_conn int gss_SendLength; /* End of data available in gss_SendBuffer */ int gss_SendNext; /* Next index to send a byte from * gss_SendBuffer */ - int gss_SendConsumed; /* Number of *unencrypted* bytes consumed - * for current contents of gss_SendBuffer */ + int gss_SendConsumed; /* Number of source bytes encrypted but + * not yet reported as sent */ char *gss_RecvBuffer; /* Received, encrypted data */ int gss_RecvLength; /* End of data available in gss_RecvBuffer */ char *gss_ResultBuffer; /* Decryption of data in gss_RecvBuffer */ @@ -673,7 +673,8 @@ extern void pqSaveMessageField(PGresult *res, char code, extern void pqSaveParameterStatus(PGconn *conn, const char *name, const char *value); extern int pqRowProcessor(PGconn *conn, const char **errmsgp); -extern void pqCommandQueueAdvance(PGconn *conn); +extern void pqCommandQueueAdvance(PGconn *conn, bool isReadyForQuery, + bool gotSync); extern int PQsendQueryContinue(PGconn *conn, const char *query); /* === in fe-protocol3.c === */ diff --git a/src/interfaces/libpq/po/ru.po b/src/interfaces/libpq/po/ru.po index 320d4b4..78affba 100644 --- a/src/interfaces/libpq/po/ru.po +++ b/src/interfaces/libpq/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-05-03 05:56+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2023-08-30 15:09+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -77,11 +77,11 @@ msgstr "не удалось сгенерировать разовый код\n" #: fe-connect.c:5542 fe-connect.c:5641 fe-connect.c:5897 fe-connect.c:5926 #: fe-connect.c:5998 fe-connect.c:6022 fe-connect.c:6040 fe-connect.c:6141 #: fe-connect.c:6150 fe-connect.c:6508 fe-connect.c:6658 fe-connect.c:6924 -#: fe-exec.c:710 fe-exec.c:976 fe-exec.c:1324 fe-exec.c:3144 fe-exec.c:3328 -#: fe-exec.c:4110 fe-exec.c:4275 fe-gssapi-common.c:111 fe-lobj.c:884 -#: fe-protocol3.c:973 fe-protocol3.c:988 fe-protocol3.c:1021 -#: fe-protocol3.c:1729 fe-protocol3.c:2132 fe-secure-common.c:112 -#: fe-secure-gssapi.c:504 fe-secure-openssl.c:454 fe-secure-openssl.c:1266 +#: fe-exec.c:710 fe-exec.c:978 fe-exec.c:1326 fe-exec.c:3165 fe-exec.c:3357 +#: fe-exec.c:4139 fe-exec.c:4304 fe-gssapi-common.c:111 fe-lobj.c:884 +#: fe-protocol3.c:968 fe-protocol3.c:983 fe-protocol3.c:1016 +#: fe-protocol3.c:1724 fe-protocol3.c:2127 fe-secure-common.c:112 +#: fe-secure-gssapi.c:500 fe-secure-openssl.c:460 fe-secure-openssl.c:1272 msgid "out of memory\n" msgstr "нехватка памяти\n" @@ -130,7 +130,7 @@ msgid "malformed SCRAM message (invalid server signature)\n" msgstr "неправильное сообщение SCRAM (неверная сигнатура сервера)\n" #: fe-auth-scram.c:935 fe-exec.c:527 fe-protocol3.c:207 fe-protocol3.c:232 -#: fe-protocol3.c:261 fe-protocol3.c:279 fe-protocol3.c:360 fe-protocol3.c:733 +#: fe-protocol3.c:256 fe-protocol3.c:274 fe-protocol3.c:355 fe-protocol3.c:728 msgid "out of memory" msgstr "нехватка памяти" @@ -702,12 +702,12 @@ msgstr "" msgid "password retrieved from file \"%s\"\n" msgstr "пароль получен из файла \"%s\"\n" -#: fe-exec.c:466 fe-exec.c:3402 +#: fe-exec.c:466 fe-exec.c:3431 #, c-format msgid "row number %d is out of range 0..%d" msgstr "номер записи %d вне диапазона 0..%d" -#: fe-exec.c:528 fe-protocol3.c:1937 +#: fe-exec.c:528 fe-protocol3.c:1932 #, c-format msgid "%s" msgstr "%s" @@ -716,127 +716,127 @@ msgstr "%s" msgid "write to server failed\n" msgstr "ошибка при передаче данных серверу\n" -#: fe-exec.c:875 +#: fe-exec.c:877 msgid "no error text available\n" msgstr "текст ошибки отсутствует\n" -#: fe-exec.c:964 +#: fe-exec.c:966 msgid "NOTICE" msgstr "ЗАМЕЧАНИЕ" -#: fe-exec.c:1022 +#: fe-exec.c:1024 msgid "PGresult cannot support more than INT_MAX tuples" msgstr "PGresult не может вместить больше чем INT_MAX кортежей" -#: fe-exec.c:1034 +#: fe-exec.c:1036 msgid "size_t overflow" msgstr "переполнение size_t" -#: fe-exec.c:1448 fe-exec.c:1519 fe-exec.c:1568 +#: fe-exec.c:1450 fe-exec.c:1521 fe-exec.c:1570 msgid "command string is a null pointer\n" msgstr "указатель на командную строку нулевой\n" -#: fe-exec.c:1455 fe-exec.c:2914 +#: fe-exec.c:1457 fe-exec.c:2908 #, c-format msgid "%s not allowed in pipeline mode\n" msgstr "%s не допускается в конвейерном режиме\n" -#: fe-exec.c:1525 fe-exec.c:1574 fe-exec.c:1670 +#: fe-exec.c:1527 fe-exec.c:1576 fe-exec.c:1672 #, c-format msgid "number of parameters must be between 0 and %d\n" msgstr "число параметров должно быть от 0 до %d\n" -#: fe-exec.c:1562 fe-exec.c:1664 +#: fe-exec.c:1564 fe-exec.c:1666 msgid "statement name is a null pointer\n" msgstr "указатель на имя оператора нулевой\n" -#: fe-exec.c:1708 fe-exec.c:3255 +#: fe-exec.c:1710 fe-exec.c:3276 msgid "no connection to the server\n" msgstr "нет соединения с сервером\n" -#: fe-exec.c:1717 fe-exec.c:3264 +#: fe-exec.c:1719 fe-exec.c:3285 msgid "another command is already in progress\n" msgstr "уже выполняется другая команда\n" -#: fe-exec.c:1748 +#: fe-exec.c:1750 msgid "cannot queue commands during COPY\n" msgstr "во время COPY нельзя добавлять команды в очередь\n" -#: fe-exec.c:1866 +#: fe-exec.c:1868 msgid "length must be given for binary parameter\n" msgstr "для двоичного параметра должна быть указана длина\n" -#: fe-exec.c:2189 +#: fe-exec.c:2183 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "неожиданный asyncStatus: %d\n" -#: fe-exec.c:2347 +#: fe-exec.c:2341 msgid "" "synchronous command execution functions are not allowed in pipeline mode\n" msgstr "" "функции синхронного выполнения команд не допускаются в конвейерном режиме\n" -#: fe-exec.c:2364 +#: fe-exec.c:2358 msgid "COPY terminated by new PQexec" msgstr "операция COPY прервана вызовом PQexec" -#: fe-exec.c:2381 +#: fe-exec.c:2375 msgid "PQexec not allowed during COPY BOTH\n" msgstr "вызов PQexec не допускается в процессе COPY BOTH\n" -#: fe-exec.c:2609 fe-exec.c:2665 fe-exec.c:2734 fe-protocol3.c:1868 +#: fe-exec.c:2603 fe-exec.c:2659 fe-exec.c:2728 fe-protocol3.c:1863 msgid "no COPY in progress\n" msgstr "операция COPY не выполняется\n" -#: fe-exec.c:2923 +#: fe-exec.c:2917 msgid "connection in wrong state\n" msgstr "соединение в неправильном состоянии\n" -#: fe-exec.c:2967 +#: fe-exec.c:2961 msgid "cannot enter pipeline mode, connection not idle\n" msgstr "перейти в конвейерный режиме нельзя, соединение не простаивает\n" -#: fe-exec.c:3004 fe-exec.c:3028 +#: fe-exec.c:2998 fe-exec.c:3022 msgid "cannot exit pipeline mode with uncollected results\n" msgstr "выйти из конвейерного режима нельзя, не собрав все результаты\n" -#: fe-exec.c:3009 +#: fe-exec.c:3003 msgid "cannot exit pipeline mode while busy\n" msgstr "выйти из конвейерного режима в занятом состоянии нельзя\n" -#: fe-exec.c:3021 +#: fe-exec.c:3015 msgid "cannot exit pipeline mode while in COPY\n" msgstr "выйти из конвейерного режима во время COPY нельзя\n" -#: fe-exec.c:3188 +#: fe-exec.c:3209 msgid "cannot send pipeline when not in pipeline mode\n" msgstr "отправить конвейер, не перейдя в конвейерный режим, нельзя\n" -#: fe-exec.c:3291 +#: fe-exec.c:3320 msgid "invalid ExecStatusType code" msgstr "неверный код ExecStatusType" -#: fe-exec.c:3318 +#: fe-exec.c:3347 msgid "PGresult is not an error result\n" msgstr "В PGresult не передан результат ошибки\n" -#: fe-exec.c:3386 fe-exec.c:3409 +#: fe-exec.c:3415 fe-exec.c:3438 #, c-format msgid "column number %d is out of range 0..%d" msgstr "номер столбца %d вне диапазона 0..%d" -#: fe-exec.c:3424 +#: fe-exec.c:3453 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "номер параметра %d вне диапазона 0..%d" -#: fe-exec.c:3735 +#: fe-exec.c:3764 #, c-format msgid "could not interpret result from server: %s" msgstr "не удалось интерпретировать ответ сервера: %s" -#: fe-exec.c:4001 fe-exec.c:4092 +#: fe-exec.c:4030 fe-exec.c:4121 msgid "incomplete multibyte character\n" msgstr "неполный многобайтный символ\n" @@ -896,8 +896,8 @@ msgstr "функция pqPutInt не поддерживает integer разме msgid "connection not open\n" msgstr "соединение не открыто\n" -#: fe-misc.c:755 fe-secure-openssl.c:218 fe-secure-openssl.c:325 -#: fe-secure.c:260 fe-secure.c:423 +#: fe-misc.c:755 fe-secure-openssl.c:218 fe-secure-openssl.c:331 +#: fe-secure.c:262 fe-secure.c:430 #, c-format msgid "" "server closed the connection unexpectedly\n" @@ -926,7 +926,7 @@ msgstr "ошибка в %s(): %s\n" msgid "message type 0x%02x arrived from server while idle" msgstr "от сервера во время простоя получено сообщение типа 0x%02x" -#: fe-protocol3.c:393 +#: fe-protocol3.c:388 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)\n" @@ -934,125 +934,125 @@ msgstr "" "сервер отправил данные (сообщение \"D\") без предварительного описания " "строки (сообщение \"T\")\n" -#: fe-protocol3.c:436 +#: fe-protocol3.c:431 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "неожиданный ответ сервера; первый полученный символ: \"%c\"\n" -#: fe-protocol3.c:461 +#: fe-protocol3.c:456 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "содержимое не соответствует длине в сообщении типа \"%c\"\n" -#: fe-protocol3.c:481 +#: fe-protocol3.c:476 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "потеряна синхронизация с сервером: получено сообщение типа \"%c\", длина %d\n" -#: fe-protocol3.c:533 fe-protocol3.c:573 +#: fe-protocol3.c:528 fe-protocol3.c:568 msgid "insufficient data in \"T\" message" msgstr "недостаточно данных в сообщении \"T\"" -#: fe-protocol3.c:644 fe-protocol3.c:850 +#: fe-protocol3.c:639 fe-protocol3.c:845 msgid "out of memory for query result" msgstr "недостаточно памяти для результата запроса" -#: fe-protocol3.c:713 +#: fe-protocol3.c:708 msgid "insufficient data in \"t\" message" msgstr "недостаточно данных в сообщении \"t\"" -#: fe-protocol3.c:772 fe-protocol3.c:804 fe-protocol3.c:822 +#: fe-protocol3.c:767 fe-protocol3.c:799 fe-protocol3.c:817 msgid "insufficient data in \"D\" message" msgstr "недостаточно данных в сообщении \"D\"" -#: fe-protocol3.c:778 +#: fe-protocol3.c:773 msgid "unexpected field count in \"D\" message" msgstr "неверное число полей в сообщении \"D\"" -#: fe-protocol3.c:1034 +#: fe-protocol3.c:1029 msgid "no error message available\n" msgstr "нет сообщения об ошибке\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1082 fe-protocol3.c:1101 +#: fe-protocol3.c:1077 fe-protocol3.c:1096 #, c-format msgid " at character %s" msgstr " символ %s" -#: fe-protocol3.c:1114 +#: fe-protocol3.c:1109 #, c-format msgid "DETAIL: %s\n" msgstr "ПОДРОБНОСТИ: %s\n" -#: fe-protocol3.c:1117 +#: fe-protocol3.c:1112 #, c-format msgid "HINT: %s\n" msgstr "ПОДСКАЗКА: %s\n" -#: fe-protocol3.c:1120 +#: fe-protocol3.c:1115 #, c-format msgid "QUERY: %s\n" msgstr "ЗАПРОС: %s\n" -#: fe-protocol3.c:1127 +#: fe-protocol3.c:1122 #, c-format msgid "CONTEXT: %s\n" msgstr "КОНТЕКСТ: %s\n" -#: fe-protocol3.c:1136 +#: fe-protocol3.c:1131 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "СХЕМА: %s\n" -#: fe-protocol3.c:1140 +#: fe-protocol3.c:1135 #, c-format msgid "TABLE NAME: %s\n" msgstr "ТАБЛИЦА: %s\n" -#: fe-protocol3.c:1144 +#: fe-protocol3.c:1139 #, c-format msgid "COLUMN NAME: %s\n" msgstr "СТОЛБЕЦ: %s\n" -#: fe-protocol3.c:1148 +#: fe-protocol3.c:1143 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "ТИП ДАННЫХ: %s\n" -#: fe-protocol3.c:1152 +#: fe-protocol3.c:1147 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "ОГРАНИЧЕНИЕ: %s\n" -#: fe-protocol3.c:1164 +#: fe-protocol3.c:1159 msgid "LOCATION: " msgstr "ПОЛОЖЕНИЕ: " -#: fe-protocol3.c:1166 +#: fe-protocol3.c:1161 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1168 +#: fe-protocol3.c:1163 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1363 +#: fe-protocol3.c:1358 #, c-format msgid "LINE %d: " msgstr "СТРОКА %d: " -#: fe-protocol3.c:1762 +#: fe-protocol3.c:1757 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline можно вызывать только во время COPY OUT с текстом\n" -#: fe-protocol3.c:2139 +#: fe-protocol3.c:2134 msgid "protocol error: no function result\n" msgstr "ошибка протокола: нет результата функции\n" -#: fe-protocol3.c:2151 +#: fe-protocol3.c:2146 #, c-format msgid "protocol error: id=0x%x\n" msgstr "ошибка протокола: id=0x%x\n" @@ -1085,119 +1085,119 @@ msgstr "" msgid "could not get server's host name from server certificate\n" msgstr "не удалось получить имя сервера из серверного сертификата\n" -#: fe-secure-gssapi.c:201 +#: fe-secure-gssapi.c:194 msgid "GSSAPI wrap error" msgstr "ошибка обёртывания сообщения в GSSAPI" -#: fe-secure-gssapi.c:209 +#: fe-secure-gssapi.c:202 msgid "outgoing GSSAPI message would not use confidentiality\n" msgstr "исходящее сообщение GSSAPI не будет защищено\n" -#: fe-secure-gssapi.c:217 +#: fe-secure-gssapi.c:210 #, c-format msgid "client tried to send oversize GSSAPI packet (%zu > %zu)\n" msgstr "клиент попытался передать чрезмерно большой пакет GSSAPI (%zu > %zu)\n" -#: fe-secure-gssapi.c:354 fe-secure-gssapi.c:598 +#: fe-secure-gssapi.c:350 fe-secure-gssapi.c:594 #, c-format msgid "oversize GSSAPI packet sent by the server (%zu > %zu)\n" msgstr "сервер передал чрезмерно большой пакет GSSAPI (%zu > %zu)\n" -#: fe-secure-gssapi.c:393 +#: fe-secure-gssapi.c:389 msgid "GSSAPI unwrap error" msgstr "ошибка развёртывания сообщения в GSSAPI" -#: fe-secure-gssapi.c:403 +#: fe-secure-gssapi.c:399 msgid "incoming GSSAPI message did not use confidentiality\n" msgstr "входящее сообщение GSSAPI не защищено\n" -#: fe-secure-gssapi.c:644 +#: fe-secure-gssapi.c:640 msgid "could not initiate GSSAPI security context" msgstr "не удалось инициализировать контекст безопасности GSSAPI" -#: fe-secure-gssapi.c:672 +#: fe-secure-gssapi.c:668 msgid "GSSAPI size check error" msgstr "ошибка проверки размера в GSSAPI" -#: fe-secure-gssapi.c:683 +#: fe-secure-gssapi.c:679 msgid "GSSAPI context establishment error" msgstr "ошибка установления контекста в GSSAPI" -#: fe-secure-openssl.c:223 fe-secure-openssl.c:330 fe-secure-openssl.c:1504 +#: fe-secure-openssl.c:223 fe-secure-openssl.c:336 fe-secure-openssl.c:1512 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "ошибка SSL SYSCALL: %s\n" -#: fe-secure-openssl.c:230 fe-secure-openssl.c:337 fe-secure-openssl.c:1508 +#: fe-secure-openssl.c:230 fe-secure-openssl.c:343 fe-secure-openssl.c:1516 msgid "SSL SYSCALL error: EOF detected\n" msgstr "ошибка SSL SYSCALL: конец файла (EOF)\n" -#: fe-secure-openssl.c:241 fe-secure-openssl.c:348 fe-secure-openssl.c:1517 +#: fe-secure-openssl.c:241 fe-secure-openssl.c:354 fe-secure-openssl.c:1525 #, c-format msgid "SSL error: %s\n" msgstr "ошибка SSL: %s\n" -#: fe-secure-openssl.c:256 fe-secure-openssl.c:363 +#: fe-secure-openssl.c:256 fe-secure-openssl.c:369 msgid "SSL connection has been closed unexpectedly\n" msgstr "SSL-соединение было неожиданно закрыто\n" -#: fe-secure-openssl.c:262 fe-secure-openssl.c:369 fe-secure-openssl.c:1567 +#: fe-secure-openssl.c:262 fe-secure-openssl.c:375 fe-secure-openssl.c:1575 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "нераспознанный код ошибки SSL: %d\n" -#: fe-secure-openssl.c:414 +#: fe-secure-openssl.c:420 msgid "could not determine server certificate signature algorithm\n" msgstr "не удалось определить алгоритм подписи сертификата сервера\n" -#: fe-secure-openssl.c:435 +#: fe-secure-openssl.c:441 #, c-format msgid "could not find digest for NID %s\n" msgstr "не удалось найти алгоритм хеширования по NID %s\n" -#: fe-secure-openssl.c:445 +#: fe-secure-openssl.c:451 msgid "could not generate peer certificate hash\n" msgstr "не удалось сгенерировать хеш сертификата сервера\n" -#: fe-secure-openssl.c:502 +#: fe-secure-openssl.c:508 msgid "SSL certificate's name entry is missing\n" msgstr "в SSL-сертификате отсутствует запись имени\n" -#: fe-secure-openssl.c:537 +#: fe-secure-openssl.c:543 msgid "SSL certificate's address entry is missing\n" msgstr "в SSL-сертификате отсутствует запись адреса\n" -#: fe-secure-openssl.c:955 +#: fe-secure-openssl.c:961 #, c-format msgid "could not create SSL context: %s\n" msgstr "не удалось создать контекст SSL: %s\n" -#: fe-secure-openssl.c:994 +#: fe-secure-openssl.c:1000 #, c-format msgid "invalid value \"%s\" for minimum SSL protocol version\n" msgstr "неверное значение \"%s\" для минимальной версии протокола SSL\n" -#: fe-secure-openssl.c:1005 +#: fe-secure-openssl.c:1011 #, c-format msgid "could not set minimum SSL protocol version: %s\n" msgstr "не удалось задать минимальную версию протокола SSL: %s\n" -#: fe-secure-openssl.c:1023 +#: fe-secure-openssl.c:1029 #, c-format msgid "invalid value \"%s\" for maximum SSL protocol version\n" msgstr "неверное значение \"%s\" для максимальной версии протокола SSL\n" -#: fe-secure-openssl.c:1034 +#: fe-secure-openssl.c:1040 #, c-format msgid "could not set maximum SSL protocol version: %s\n" msgstr "не удалось задать максимальную версию протокола SSL: %s\n" -#: fe-secure-openssl.c:1070 +#: fe-secure-openssl.c:1076 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "не удалось прочитать файл корневых сертификатов \"%s\": %s\n" -#: fe-secure-openssl.c:1123 +#: fe-secure-openssl.c:1129 msgid "" "could not get home directory to locate root certificate file\n" "Either provide the file or change sslmode to disable server certificate " @@ -1207,7 +1207,7 @@ msgstr "" "Укажите полный путь к файлу или отключите проверку сертификата сервера, " "изменив sslmode.\n" -#: fe-secure-openssl.c:1127 +#: fe-secure-openssl.c:1133 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -1218,63 +1218,63 @@ msgstr "" "Укажите полный путь к файлу или отключите проверку сертификата сервера, " "изменив sslmode.\n" -#: fe-secure-openssl.c:1158 +#: fe-secure-openssl.c:1164 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "не удалось открыть файл сертификата \"%s\": %s\n" -#: fe-secure-openssl.c:1177 +#: fe-secure-openssl.c:1183 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "не удалось прочитать файл сертификата \"%s\": %s\n" -#: fe-secure-openssl.c:1202 +#: fe-secure-openssl.c:1208 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "не удалось установить SSL-соединение: %s\n" -#: fe-secure-openssl.c:1236 +#: fe-secure-openssl.c:1242 #, c-format msgid "could not set SSL Server Name Indication (SNI): %s\n" msgstr "" "не удалось задать SNI (Server Name Indication) для SSL-подключения: %s\n" -#: fe-secure-openssl.c:1282 +#: fe-secure-openssl.c:1288 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "не удалось загрузить модуль SSL ENGINE \"%s\": %s\n" -#: fe-secure-openssl.c:1294 +#: fe-secure-openssl.c:1300 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "не удалось инициализировать модуль SSL ENGINE \"%s\": %s\n" -#: fe-secure-openssl.c:1310 +#: fe-secure-openssl.c:1316 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "не удалось прочитать закрытый ключ SSL \"%s\" из модуля \"%s\": %s\n" -#: fe-secure-openssl.c:1324 +#: fe-secure-openssl.c:1330 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "не удалось загрузить закрытый ключ SSL \"%s\" из модуля \"%s\": %s\n" -#: fe-secure-openssl.c:1362 +#: fe-secure-openssl.c:1368 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "при наличии сертификата отсутствует файл закрытого ключа \"%s\"\n" -#: fe-secure-openssl.c:1366 +#: fe-secure-openssl.c:1372 #, c-format msgid "could not stat private key file \"%s\": %m\n" msgstr "не удалось получить информацию о файле закрытого ключа \"%s\": %m\n" -#: fe-secure-openssl.c:1375 +#: fe-secure-openssl.c:1381 #, c-format msgid "private key file \"%s\" is not a regular file\n" msgstr "файл закрытого ключа \"%s\" - не обычный файл\n" -#: fe-secure-openssl.c:1408 +#: fe-secure-openssl.c:1414 #, c-format msgid "" "private key file \"%s\" has group or world access; file must have " @@ -1286,17 +1286,17 @@ msgstr "" "текущему пользователю, либо u=rw,g=r (0640) или более строгие, если он " "принадлежит root\n" -#: fe-secure-openssl.c:1433 +#: fe-secure-openssl.c:1439 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "не удалось загрузить файл закрытого ключа \"%s\": %s\n" -#: fe-secure-openssl.c:1450 +#: fe-secure-openssl.c:1456 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "сертификат не соответствует файлу закрытого ключа \"%s\": %s\n" -#: fe-secure-openssl.c:1550 +#: fe-secure-openssl.c:1558 #, c-format msgid "" "This may indicate that the server does not support any SSL protocol version " @@ -1305,32 +1305,32 @@ msgstr "" "Это может указывать на то, что сервер не поддерживает ни одну версию " "протокола SSL между %s и %s.\n" -#: fe-secure-openssl.c:1586 +#: fe-secure-openssl.c:1594 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "не удалось получить сертификат: %s\n" -#: fe-secure-openssl.c:1692 +#: fe-secure-openssl.c:1700 #, c-format msgid "no SSL error reported" msgstr "нет сообщения об ошибке SSL" -#: fe-secure-openssl.c:1701 +#: fe-secure-openssl.c:1709 #, c-format msgid "SSL error code %lu" msgstr "код ошибки SSL: %lu" -#: fe-secure-openssl.c:1956 +#: fe-secure-openssl.c:1988 #, c-format msgid "WARNING: sslpassword truncated\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: значение sslpassword усечено\n" -#: fe-secure.c:267 +#: fe-secure.c:274 #, c-format msgid "could not receive data from server: %s\n" msgstr "не удалось получить данные с сервера: %s\n" -#: fe-secure.c:436 +#: fe-secure.c:443 #, c-format msgid "could not send data to server: %s\n" msgstr "не удалось передать данные серверу: %s\n" diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile index a2e6410..3a6954c 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -103,11 +103,11 @@ uninstall: uninstall-lib uninstall-data install-data: installdirs $(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/' - $(INSTALL_DATA) $(srcdir)/plperl.h $(srcdir)/ppport.h $(srcdir)/plperl_helpers.h '$(DESTDIR)$(includedir_server)' + $(INSTALL_DATA) $(srcdir)/plperl.h $(srcdir)/plperl_system.h $(srcdir)/ppport.h $(srcdir)/plperl_helpers.h '$(DESTDIR)$(includedir_server)' uninstall-data: rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA))) - rm -f $(addprefix '$(DESTDIR)$(includedir_server)'/, plperl.h ppport.h) + rm -f $(addprefix '$(DESTDIR)$(includedir_server)'/, plperl.h plperl_system.h ppport.h) .PHONY: install-data uninstall-data diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h index ebca895..c0dd8cb 100644 --- a/src/pl/plperl/plperl.h +++ b/src/pl/plperl/plperl.h @@ -14,200 +14,11 @@ #ifndef PL_PERL_H #define PL_PERL_H -/* stop perl headers from hijacking stdio and other stuff on Windows */ -#ifdef WIN32 -#define WIN32IO_IS_STDIO -#endif /* WIN32 */ - -/* - * Supply a value of PERL_UNUSED_DECL that will satisfy gcc - the one - * perl itself supplies doesn't seem to. - */ -#define PERL_UNUSED_DECL pg_attribute_unused() - -/* - * Sometimes perl carefully scribbles on our *printf macros. - * So we undefine them here and redefine them after it's done its dirty deed. - */ -#undef vsnprintf -#undef snprintf -#undef vsprintf -#undef sprintf -#undef vfprintf -#undef fprintf -#undef vprintf -#undef printf - -/* - * Perl scribbles on the "_" macro too. - */ -#undef _ - -/* - * ActivePerl 5.18 and later are MinGW-built, and their headers use GCC's - * __inline__. Translate to something MSVC recognizes. Also, perl.h sometimes - * defines isnan, so undefine it here and put back the definition later if - * perl.h doesn't. - */ -#ifdef _MSC_VER -#define __inline__ inline -#ifdef isnan -#undef isnan -#endif -/* Work around for using MSVC and Strawberry Perl >= 5.30. */ -#define __builtin_expect(expr, val) (expr) -#endif - -/* - * Regarding bool, both PostgreSQL and Perl might use stdbool.h or not, - * depending on configuration. If both agree, things are relatively harmless. - * If not, things get tricky. If PostgreSQL does but Perl does not, define - * HAS_BOOL here so that Perl does not redefine bool; this avoids compiler - * warnings. If PostgreSQL does not but Perl does, we need to undefine bool - * after we include the Perl headers; see below. - */ -#ifdef PG_USE_STDBOOL -#define HAS_BOOL 1 -#endif - -/* - * Newer versions of the perl headers trigger a lot of warnings with our - * compiler flags (at least -Wdeclaration-after-statement, - * -Wshadow=compatible-local are known to be problematic). The system_header - * pragma hides warnings from within the rest of this file, if supported. - */ -#ifdef HAVE_PRAGMA_GCC_SYSTEM_HEADER -#pragma GCC system_header -#endif - /* - * Get the basic Perl API. We use PERL_NO_GET_CONTEXT mode so that our code - * can compile against MULTIPLICITY Perl builds without including XSUB.h. + * Pull in Perl headers via a wrapper header, to control the scope of + * the system_header pragma therein. */ -#define PERL_NO_GET_CONTEXT -#include "EXTERN.h" -#include "perl.h" - -/* - * We want to include XSUB.h only within .xs files, because on some platforms - * it undesirably redefines a lot of libc functions. But it must appear - * before ppport.h, so use a #define flag to control inclusion here. - */ -#ifdef PG_NEED_PERL_XSUB_H -/* - * On Windows, win32_port.h defines macros for a lot of these same functions. - * To avoid compiler warnings when XSUB.h redefines them, #undef our versions. - */ -#ifdef WIN32 -#undef accept -#undef bind -#undef connect -#undef fopen -#undef fstat -#undef kill -#undef listen -#undef lstat -#undef mkdir -#undef open -#undef putenv -#undef recv -#undef rename -#undef select -#undef send -#undef socket -#undef stat -#undef unlink -#endif - -#include "XSUB.h" -#endif - -/* put back our *printf macros ... this must match src/include/port.h */ -#ifdef vsnprintf -#undef vsnprintf -#endif -#ifdef snprintf -#undef snprintf -#endif -#ifdef vsprintf -#undef vsprintf -#endif -#ifdef sprintf -#undef sprintf -#endif -#ifdef vfprintf -#undef vfprintf -#endif -#ifdef fprintf -#undef fprintf -#endif -#ifdef vprintf -#undef vprintf -#endif -#ifdef printf -#undef printf -#endif - -#define vsnprintf pg_vsnprintf -#define snprintf pg_snprintf -#define vsprintf pg_vsprintf -#define sprintf pg_sprintf -#define vfprintf pg_vfprintf -#define fprintf pg_fprintf -#define vprintf pg_vprintf -#define printf(...) pg_printf(__VA_ARGS__) - -/* - * Put back "_" too; but rather than making it just gettext() as the core - * code does, make it dgettext() so that the right things will happen in - * loadable modules (if they've set up TEXTDOMAIN correctly). Note that - * we can't just set TEXTDOMAIN here, because this file is used by more - * extensions than just PL/Perl itself. - */ -#undef _ -#define _(x) dgettext(TEXTDOMAIN, x) - -/* put back the definition of isnan if needed */ -#ifdef _MSC_VER -#ifndef isnan -#define isnan(x) _isnan(x) -#endif -#endif - -/* perl version and platform portability */ -#include "ppport.h" - -/* - * perl might have included stdbool.h. If we also did that earlier (see c.h), - * then that's fine. If not, we probably rejected it for some reason. In - * that case, undef bool and proceed with our own bool. (Note that stdbool.h - * makes bool a macro, but our own replacement is a typedef, so the undef - * makes ours visible again). - */ -#ifndef PG_USE_STDBOOL -#ifdef bool -#undef bool -#endif -#endif - -/* supply HeUTF8 if it's missing - ppport.h doesn't supply it, unfortunately */ -#ifndef HeUTF8 -#define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ - SvUTF8(HeKEY_sv(he)) : \ - (U32)HeKUTF8(he)) -#endif - -/* supply GvCV_set if it's missing - ppport.h doesn't supply it, unfortunately */ -#ifndef GvCV_set -#define GvCV_set(gv, cv) (GvCV(gv) = cv) -#endif - -/* Perl 5.19.4 changed array indices from I32 to SSize_t */ -#if PERL_BCDVERSION >= 0x5019004 -#define AV_SIZE_MAX SSize_t_MAX -#else -#define AV_SIZE_MAX I32_MAX -#endif +#include "plperl_system.h" /* declare routines from plperl.c for access by .xs files */ HV *plperl_spi_exec(char *, int); diff --git a/src/pl/plperl/plperl_system.h b/src/pl/plperl/plperl_system.h new file mode 100644 index 0000000..61550db --- /dev/null +++ b/src/pl/plperl/plperl_system.h @@ -0,0 +1,215 @@ +/*------------------------------------------------------------------------- + * + * plperl_system.h + * Pull in Perl's system header files. + * + * We break this out as a separate header file to precisely control + * the scope of the "system_header" pragma. No Postgres-specific + * declarations should be put here. However, we do include some stuff + * that is meant to prevent conflicts between our code and Perl. + * + * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group + * Portions Copyright (c) 1995, Regents of the University of California + * + * src/pl/plperl/plperl_system.h + */ + +#ifndef PL_PERL_SYSTEM_H +#define PL_PERL_SYSTEM_H + +/* + * Newer versions of the perl headers trigger a lot of warnings with our + * preferred compiler flags (at least -Wdeclaration-after-statement, + * -Wshadow=compatible-local are known to be problematic). The system_header + * pragma hides warnings from within the rest of this file, if supported. + */ +#ifdef HAVE_PRAGMA_GCC_SYSTEM_HEADER +#pragma GCC system_header +#endif + +/* stop perl headers from hijacking stdio and other stuff on Windows */ +#ifdef WIN32 +#define WIN32IO_IS_STDIO +#endif /* WIN32 */ + +/* + * Supply a value of PERL_UNUSED_DECL that will satisfy gcc - the one + * perl itself supplies doesn't seem to. + */ +#define PERL_UNUSED_DECL pg_attribute_unused() + +/* + * Sometimes perl carefully scribbles on our *printf macros. + * So we undefine them here and redefine them after it's done its dirty deed. + */ +#undef vsnprintf +#undef snprintf +#undef vsprintf +#undef sprintf +#undef vfprintf +#undef fprintf +#undef vprintf +#undef printf + +/* + * Perl scribbles on the "_" macro too. + */ +#undef _ + +/* + * ActivePerl 5.18 and later are MinGW-built, and their headers use GCC's + * __inline__. Translate to something MSVC recognizes. Also, perl.h sometimes + * defines isnan, so undefine it here and put back the definition later if + * perl.h doesn't. + */ +#ifdef _MSC_VER +#define __inline__ inline +#ifdef isnan +#undef isnan +#endif +/* Work around for using MSVC and Strawberry Perl >= 5.30. */ +#define __builtin_expect(expr, val) (expr) +#endif + +/* + * Regarding bool, both PostgreSQL and Perl might use stdbool.h or not, + * depending on configuration. If both agree, things are relatively harmless. + * If not, things get tricky. If PostgreSQL does but Perl does not, define + * HAS_BOOL here so that Perl does not redefine bool; this avoids compiler + * warnings. If PostgreSQL does not but Perl does, we need to undefine bool + * after we include the Perl headers; see below. + */ +#ifdef PG_USE_STDBOOL +#define HAS_BOOL 1 +#endif + +/* + * Get the basic Perl API. We use PERL_NO_GET_CONTEXT mode so that our code + * can compile against MULTIPLICITY Perl builds without including XSUB.h. + */ +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" + +/* + * We want to include XSUB.h only within .xs files, because on some platforms + * it undesirably redefines a lot of libc functions. But it must appear + * before ppport.h, so use a #define flag to control inclusion here. + */ +#ifdef PG_NEED_PERL_XSUB_H +/* + * On Windows, win32_port.h defines macros for a lot of these same functions. + * To avoid compiler warnings when XSUB.h redefines them, #undef our versions. + */ +#ifdef WIN32 +#undef accept +#undef bind +#undef connect +#undef fopen +#undef fstat +#undef kill +#undef listen +#undef lstat +#undef mkdir +#undef open +#undef putenv +#undef recv +#undef rename +#undef select +#undef send +#undef socket +#undef stat +#undef unlink +#endif + +#include "XSUB.h" +#endif + +/* put back our *printf macros ... this must match src/include/port.h */ +#ifdef vsnprintf +#undef vsnprintf +#endif +#ifdef snprintf +#undef snprintf +#endif +#ifdef vsprintf +#undef vsprintf +#endif +#ifdef sprintf +#undef sprintf +#endif +#ifdef vfprintf +#undef vfprintf +#endif +#ifdef fprintf +#undef fprintf +#endif +#ifdef vprintf +#undef vprintf +#endif +#ifdef printf +#undef printf +#endif + +#define vsnprintf pg_vsnprintf +#define snprintf pg_snprintf +#define vsprintf pg_vsprintf +#define sprintf pg_sprintf +#define vfprintf pg_vfprintf +#define fprintf pg_fprintf +#define vprintf pg_vprintf +#define printf(...) pg_printf(__VA_ARGS__) + +/* + * Put back "_" too; but rather than making it just gettext() as the core + * code does, make it dgettext() so that the right things will happen in + * loadable modules (if they've set up TEXTDOMAIN correctly). Note that + * we can't just set TEXTDOMAIN here, because this file is used by more + * extensions than just PL/Perl itself. + */ +#undef _ +#define _(x) dgettext(TEXTDOMAIN, x) + +/* put back the definition of isnan if needed */ +#ifdef _MSC_VER +#ifndef isnan +#define isnan(x) _isnan(x) +#endif +#endif + +/* perl version and platform portability */ +#include "ppport.h" + +/* + * perl might have included stdbool.h. If we also did that earlier (see c.h), + * then that's fine. If not, we probably rejected it for some reason. In + * that case, undef bool and proceed with our own bool. (Note that stdbool.h + * makes bool a macro, but our own replacement is a typedef, so the undef + * makes ours visible again). + */ +#ifndef PG_USE_STDBOOL +#ifdef bool +#undef bool +#endif +#endif + +/* supply HeUTF8 if it's missing - ppport.h doesn't supply it, unfortunately */ +#ifndef HeUTF8 +#define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ + SvUTF8(HeKEY_sv(he)) : \ + (U32)HeKUTF8(he)) +#endif + +/* supply GvCV_set if it's missing - ppport.h doesn't supply it, unfortunately */ +#ifndef GvCV_set +#define GvCV_set(gv, cv) (GvCV(gv) = cv) +#endif + +/* Perl 5.19.4 changed array indices from I32 to SSize_t */ +#if PERL_BCDVERSION >= 0x5019004 +#define AV_SIZE_MAX SSize_t_MAX +#else +#define AV_SIZE_MAX I32_MAX +#endif + +#endif /* PL_PERL_SYSTEM_H */ diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile index f7eb42d..7cd8900 100644 --- a/src/pl/plpgsql/src/Makefile +++ b/src/pl/plpgsql/src/Makefile @@ -32,8 +32,9 @@ DATA = plpgsql.control plpgsql--1.0.sql REGRESS_OPTS = --dbname=$(PL_TESTDB) -REGRESS = plpgsql_array plpgsql_call plpgsql_control plpgsql_copy plpgsql_domain \ - plpgsql_record plpgsql_cache plpgsql_simple plpgsql_transaction \ +REGRESS = plpgsql_array plpgsql_cache plpgsql_call plpgsql_control \ + plpgsql_copy plpgsql_domain plpgsql_misc \ + plpgsql_record plpgsql_simple plpgsql_transaction \ plpgsql_trap plpgsql_trigger plpgsql_varprops # where to find gen_keywordlist.pl and subsidiary files diff --git a/src/pl/plpgsql/src/expected/plpgsql_misc.out b/src/pl/plpgsql/src/expected/plpgsql_misc.out new file mode 100644 index 0000000..faddba2 --- /dev/null +++ b/src/pl/plpgsql/src/expected/plpgsql_misc.out @@ -0,0 +1,31 @@ +-- +-- Miscellaneous topics +-- +-- Verify that we can parse new-style CREATE FUNCTION/PROCEDURE +do +$$ + declare procedure int; -- check we still recognize non-keywords as vars + begin + create function test1() returns int + begin atomic + select 2 + 2; + end; + create or replace procedure test2(x int) + begin atomic + select x + 2; + end; + end +$$; +\sf test1 +CREATE OR REPLACE FUNCTION public.test1() + RETURNS integer + LANGUAGE sql +BEGIN ATOMIC + SELECT (2 + 2); +END +\sf test2 +CREATE OR REPLACE PROCEDURE public.test2(IN x integer) + LANGUAGE sql +BEGIN ATOMIC + SELECT (x + 2); +END diff --git a/src/pl/plpgsql/src/pl_gram.c b/src/pl/plpgsql/src/pl_gram.c index 2d3e1c2..5d1cd56 100644 --- a/src/pl/plpgsql/src/pl_gram.c +++ b/src/pl/plpgsql/src/pl_gram.c @@ -157,7 +157,8 @@ static PLpgSQL_expr *read_sql_expression2(int until, int until2, int *endtoken); static PLpgSQL_expr *read_sql_stmt(void); static PLpgSQL_type *read_datatype(int tok); -static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location); +static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location, + PLword *word); static PLpgSQL_stmt_fetch *read_fetch_direction(void); static void complete_direction(PLpgSQL_stmt_fetch *fetch, bool *check_FROM); @@ -189,7 +190,7 @@ static List *read_raise_options(void); static void check_raise_parameters(PLpgSQL_stmt_raise *stmt); -#line 193 "pl_gram.c" +#line 194 "pl_gram.c" # ifndef YY_CAST # ifdef __cplusplus @@ -835,32 +836,32 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 361, 361, 367, 368, 371, 375, 384, 388, 392, - 398, 402, 407, 408, 411, 434, 442, 449, 458, 470, - 471, 474, 475, 479, 492, 530, 536, 535, 589, 592, - 596, 603, 609, 612, 643, 647, 653, 661, 662, 664, - 679, 694, 722, 750, 781, 782, 787, 798, 799, 804, - 809, 816, 817, 821, 823, 829, 830, 838, 839, 843, - 844, 854, 856, 858, 860, 862, 864, 866, 868, 870, - 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, - 892, 894, 896, 898, 900, 904, 940, 958, 979, 1018, - 1081, 1084, 1088, 1094, 1098, 1104, 1117, 1161, 1179, 1184, - 1191, 1209, 1212, 1226, 1229, 1235, 1242, 1256, 1260, 1266, - 1278, 1281, 1296, 1314, 1333, 1367, 1626, 1652, 1666, 1673, - 1712, 1715, 1721, 1774, 1778, 1784, 1810, 1955, 1979, 1997, - 2001, 2005, 2009, 2020, 2033, 2097, 2175, 2205, 2218, 2223, - 2237, 2244, 2258, 2273, 2274, 2275, 2279, 2301, 2306, 2314, - 2316, 2315, 2357, 2361, 2367, 2380, 2389, 2395, 2432, 2436, - 2440, 2444, 2448, 2456, 2460, 2468, 2471, 2478, 2480, 2487, - 2491, 2495, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, - 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, - 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, - 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, - 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, - 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, - 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, - 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, - 2582, 2583, 2584 + 0, 362, 362, 368, 369, 372, 376, 385, 389, 393, + 399, 403, 408, 409, 412, 435, 443, 450, 459, 471, + 472, 475, 476, 480, 493, 531, 537, 536, 590, 593, + 597, 604, 610, 613, 644, 648, 654, 662, 663, 665, + 680, 695, 723, 751, 782, 783, 788, 799, 800, 805, + 810, 817, 818, 822, 824, 830, 831, 839, 840, 844, + 845, 855, 857, 859, 861, 863, 865, 867, 869, 871, + 873, 875, 877, 879, 881, 883, 885, 887, 889, 891, + 893, 895, 897, 899, 901, 905, 941, 959, 980, 1019, + 1082, 1085, 1089, 1095, 1099, 1105, 1118, 1162, 1180, 1185, + 1192, 1210, 1213, 1227, 1230, 1236, 1243, 1257, 1261, 1267, + 1279, 1282, 1297, 1315, 1334, 1368, 1627, 1653, 1667, 1674, + 1713, 1716, 1722, 1775, 1779, 1785, 1811, 1956, 1980, 1998, + 2002, 2006, 2010, 2021, 2034, 2098, 2176, 2206, 2219, 2224, + 2238, 2245, 2259, 2274, 2275, 2276, 2280, 2302, 2307, 2315, + 2317, 2316, 2358, 2362, 2368, 2381, 2390, 2396, 2433, 2437, + 2441, 2445, 2449, 2457, 2461, 2469, 2472, 2479, 2481, 2488, + 2492, 2496, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, + 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, + 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, + 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, + 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, + 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, + 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, + 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, + 2583, 2584, 2585 }; #endif @@ -2024,23 +2025,23 @@ yyreduce: switch (yyn) { case 2: /* pl_function: comp_options pl_block opt_semi */ -#line 362 "pl_gram.y" +#line 363 "pl_gram.y" { plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[-1].stmt); } -#line 2032 "pl_gram.c" +#line 2033 "pl_gram.c" break; case 5: /* comp_option: '#' K_OPTION K_DUMP */ -#line 372 "pl_gram.y" +#line 373 "pl_gram.y" { plpgsql_DumpExecTree = true; } -#line 2040 "pl_gram.c" +#line 2041 "pl_gram.c" break; case 6: /* comp_option: '#' K_PRINT_STRICT_PARAMS option_value */ -#line 376 "pl_gram.y" +#line 377 "pl_gram.y" { if (strcmp((yyvsp[0].str), "on") == 0) plpgsql_curr_compile->print_strict_params = true; @@ -2049,51 +2050,51 @@ yyreduce: else elog(ERROR, "unrecognized print_strict_params option %s", (yyvsp[0].str)); } -#line 2053 "pl_gram.c" +#line 2054 "pl_gram.c" break; case 7: /* comp_option: '#' K_VARIABLE_CONFLICT K_ERROR */ -#line 385 "pl_gram.y" +#line 386 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_ERROR; } -#line 2061 "pl_gram.c" +#line 2062 "pl_gram.c" break; case 8: /* comp_option: '#' K_VARIABLE_CONFLICT K_USE_VARIABLE */ -#line 389 "pl_gram.y" +#line 390 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_VARIABLE; } -#line 2069 "pl_gram.c" +#line 2070 "pl_gram.c" break; case 9: /* comp_option: '#' K_VARIABLE_CONFLICT K_USE_COLUMN */ -#line 393 "pl_gram.y" +#line 394 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_COLUMN; } -#line 2077 "pl_gram.c" +#line 2078 "pl_gram.c" break; case 10: /* option_value: T_WORD */ -#line 399 "pl_gram.y" +#line 400 "pl_gram.y" { (yyval.str) = (yyvsp[0].word).ident; } -#line 2085 "pl_gram.c" +#line 2086 "pl_gram.c" break; case 11: /* option_value: unreserved_keyword */ -#line 403 "pl_gram.y" +#line 404 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 2093 "pl_gram.c" +#line 2094 "pl_gram.c" break; case 14: /* pl_block: decl_sect K_BEGIN proc_sect exception_sect K_END opt_label */ -#line 412 "pl_gram.y" +#line 413 "pl_gram.y" { PLpgSQL_stmt_block *new; @@ -2113,11 +2114,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 2117 "pl_gram.c" +#line 2118 "pl_gram.c" break; case 15: /* decl_sect: opt_block_label */ -#line 435 "pl_gram.y" +#line 436 "pl_gram.y" { /* done with decls, so resume identifier lookup */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; @@ -2125,33 +2126,33 @@ yyreduce: (yyval.declhdr).n_initvars = 0; (yyval.declhdr).initvarnos = NULL; } -#line 2129 "pl_gram.c" +#line 2130 "pl_gram.c" break; case 16: /* decl_sect: opt_block_label decl_start */ -#line 443 "pl_gram.y" +#line 444 "pl_gram.y" { plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; (yyval.declhdr).label = (yyvsp[-1].str); (yyval.declhdr).n_initvars = 0; (yyval.declhdr).initvarnos = NULL; } -#line 2140 "pl_gram.c" +#line 2141 "pl_gram.c" break; case 17: /* decl_sect: opt_block_label decl_start decl_stmts */ -#line 450 "pl_gram.y" +#line 451 "pl_gram.y" { plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; (yyval.declhdr).label = (yyvsp[-2].str); /* Remember variables declared in decl_stmts */ (yyval.declhdr).n_initvars = plpgsql_add_initdatums(&((yyval.declhdr).initvarnos)); } -#line 2151 "pl_gram.c" +#line 2152 "pl_gram.c" break; case 18: /* decl_start: K_DECLARE */ -#line 459 "pl_gram.y" +#line 460 "pl_gram.y" { /* Forget any variables created before block */ plpgsql_add_initdatums(NULL); @@ -2161,19 +2162,19 @@ yyreduce: */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_DECLARE; } -#line 2165 "pl_gram.c" +#line 2166 "pl_gram.c" break; case 22: /* decl_stmt: K_DECLARE */ -#line 476 "pl_gram.y" +#line 477 "pl_gram.y" { /* We allow useless extra DECLAREs */ } -#line 2173 "pl_gram.c" +#line 2174 "pl_gram.c" break; case 23: /* decl_stmt: LESS_LESS any_identifier GREATER_GREATER */ -#line 480 "pl_gram.y" +#line 481 "pl_gram.y" { /* * Throw a helpful error if user tries to put block @@ -2184,11 +2185,11 @@ yyreduce: errmsg("block label must be placed before DECLARE, not after"), parser_errposition((yylsp[-2])))); } -#line 2188 "pl_gram.c" +#line 2189 "pl_gram.c" break; case 24: /* decl_statement: decl_varname decl_const decl_datatype decl_collate decl_notnull decl_defval */ -#line 493 "pl_gram.y" +#line 494 "pl_gram.y" { PLpgSQL_variable *var; @@ -2226,26 +2227,26 @@ yyreduce: var->refname), parser_errposition((yylsp[-1])))); } -#line 2230 "pl_gram.c" +#line 2231 "pl_gram.c" break; case 25: /* decl_statement: decl_varname K_ALIAS K_FOR decl_aliasitem ';' */ -#line 531 "pl_gram.y" +#line 532 "pl_gram.y" { plpgsql_ns_additem((yyvsp[-1].nsitem)->itemtype, (yyvsp[-1].nsitem)->itemno, (yyvsp[-4].varname).name); } -#line 2239 "pl_gram.c" +#line 2240 "pl_gram.c" break; case 26: /* $@1: %empty */ -#line 536 "pl_gram.y" +#line 537 "pl_gram.y" { plpgsql_ns_push((yyvsp[-2].varname).name, PLPGSQL_LABEL_OTHER); } -#line 2245 "pl_gram.c" +#line 2246 "pl_gram.c" break; case 27: /* decl_statement: decl_varname opt_scrollable K_CURSOR $@1 decl_cursor_args decl_is_for decl_cursor_query */ -#line 538 "pl_gram.y" +#line 539 "pl_gram.y" { PLpgSQL_var *new; PLpgSQL_expr *curname_def; @@ -2294,51 +2295,51 @@ yyreduce: new->cursor_explicit_argrow = (yyvsp[-2].datum)->dno; new->cursor_options = CURSOR_OPT_FAST_PLAN | (yyvsp[-5].ival); } -#line 2298 "pl_gram.c" +#line 2299 "pl_gram.c" break; case 28: /* opt_scrollable: %empty */ -#line 589 "pl_gram.y" +#line 590 "pl_gram.y" { (yyval.ival) = 0; } -#line 2306 "pl_gram.c" +#line 2307 "pl_gram.c" break; case 29: /* opt_scrollable: K_NO K_SCROLL */ -#line 593 "pl_gram.y" +#line 594 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_NO_SCROLL; } -#line 2314 "pl_gram.c" +#line 2315 "pl_gram.c" break; case 30: /* opt_scrollable: K_SCROLL */ -#line 597 "pl_gram.y" +#line 598 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_SCROLL; } -#line 2322 "pl_gram.c" +#line 2323 "pl_gram.c" break; case 31: /* decl_cursor_query: %empty */ -#line 603 "pl_gram.y" +#line 604 "pl_gram.y" { (yyval.expr) = read_sql_stmt(); } -#line 2330 "pl_gram.c" +#line 2331 "pl_gram.c" break; case 32: /* decl_cursor_args: %empty */ -#line 609 "pl_gram.y" +#line 610 "pl_gram.y" { (yyval.datum) = NULL; } -#line 2338 "pl_gram.c" +#line 2339 "pl_gram.c" break; case 33: /* decl_cursor_args: '(' decl_cursor_arglist ')' */ -#line 613 "pl_gram.y" +#line 614 "pl_gram.y" { PLpgSQL_row *new; int i; @@ -2367,37 +2368,37 @@ yyreduce: plpgsql_adddatum((PLpgSQL_datum *) new); (yyval.datum) = (PLpgSQL_datum *) new; } -#line 2371 "pl_gram.c" +#line 2372 "pl_gram.c" break; case 34: /* decl_cursor_arglist: decl_cursor_arg */ -#line 644 "pl_gram.y" +#line 645 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[0].datum)); } -#line 2379 "pl_gram.c" +#line 2380 "pl_gram.c" break; case 35: /* decl_cursor_arglist: decl_cursor_arglist ',' decl_cursor_arg */ -#line 648 "pl_gram.y" +#line 649 "pl_gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].datum)); } -#line 2387 "pl_gram.c" +#line 2388 "pl_gram.c" break; case 36: /* decl_cursor_arg: decl_varname decl_datatype */ -#line 654 "pl_gram.y" +#line 655 "pl_gram.y" { (yyval.datum) = (PLpgSQL_datum *) plpgsql_build_variable((yyvsp[-1].varname).name, (yyvsp[-1].varname).lineno, (yyvsp[0].dtype), true); } -#line 2397 "pl_gram.c" +#line 2398 "pl_gram.c" break; case 39: /* decl_aliasitem: T_WORD */ -#line 665 "pl_gram.y" +#line 666 "pl_gram.y" { PLpgSQL_nsitem *nsi; @@ -2412,11 +2413,11 @@ yyreduce: parser_errposition((yylsp[0])))); (yyval.nsitem) = nsi; } -#line 2416 "pl_gram.c" +#line 2417 "pl_gram.c" break; case 40: /* decl_aliasitem: unreserved_keyword */ -#line 680 "pl_gram.y" +#line 681 "pl_gram.y" { PLpgSQL_nsitem *nsi; @@ -2431,11 +2432,11 @@ yyreduce: parser_errposition((yylsp[0])))); (yyval.nsitem) = nsi; } -#line 2435 "pl_gram.c" +#line 2436 "pl_gram.c" break; case 41: /* decl_aliasitem: T_CWORD */ -#line 695 "pl_gram.y" +#line 696 "pl_gram.y" { PLpgSQL_nsitem *nsi; @@ -2461,11 +2462,11 @@ yyreduce: parser_errposition((yylsp[0])))); (yyval.nsitem) = nsi; } -#line 2465 "pl_gram.c" +#line 2466 "pl_gram.c" break; case 42: /* decl_varname: T_WORD */ -#line 723 "pl_gram.y" +#line 724 "pl_gram.y" { (yyval.varname).name = (yyvsp[0].word).ident; (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[0])); @@ -2493,11 +2494,11 @@ yyreduce: } } -#line 2497 "pl_gram.c" +#line 2498 "pl_gram.c" break; case 43: /* decl_varname: unreserved_keyword */ -#line 751 "pl_gram.y" +#line 752 "pl_gram.y" { (yyval.varname).name = pstrdup((yyvsp[0].keyword)); (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[0])); @@ -2525,23 +2526,23 @@ yyreduce: } } -#line 2529 "pl_gram.c" +#line 2530 "pl_gram.c" break; case 44: /* decl_const: %empty */ -#line 781 "pl_gram.y" +#line 782 "pl_gram.y" { (yyval.boolean) = false; } -#line 2535 "pl_gram.c" +#line 2536 "pl_gram.c" break; case 45: /* decl_const: K_CONSTANT */ -#line 783 "pl_gram.y" +#line 784 "pl_gram.y" { (yyval.boolean) = true; } -#line 2541 "pl_gram.c" +#line 2542 "pl_gram.c" break; case 46: /* decl_datatype: %empty */ -#line 787 "pl_gram.y" +#line 788 "pl_gram.y" { /* * If there's a lookahead token, read_datatype @@ -2550,75 +2551,75 @@ yyreduce: (yyval.dtype) = read_datatype(yychar); yyclearin; } -#line 2554 "pl_gram.c" +#line 2555 "pl_gram.c" break; case 47: /* decl_collate: %empty */ -#line 798 "pl_gram.y" +#line 799 "pl_gram.y" { (yyval.oid) = InvalidOid; } -#line 2560 "pl_gram.c" +#line 2561 "pl_gram.c" break; case 48: /* decl_collate: K_COLLATE T_WORD */ -#line 800 "pl_gram.y" +#line 801 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[0].word).ident)), false); } -#line 2569 "pl_gram.c" +#line 2570 "pl_gram.c" break; case 49: /* decl_collate: K_COLLATE unreserved_keyword */ -#line 805 "pl_gram.y" +#line 806 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[0].keyword)))), false); } -#line 2578 "pl_gram.c" +#line 2579 "pl_gram.c" break; case 50: /* decl_collate: K_COLLATE T_CWORD */ -#line 810 "pl_gram.y" +#line 811 "pl_gram.y" { (yyval.oid) = get_collation_oid((yyvsp[0].cword).idents, false); } -#line 2586 "pl_gram.c" +#line 2587 "pl_gram.c" break; case 51: /* decl_notnull: %empty */ -#line 816 "pl_gram.y" +#line 817 "pl_gram.y" { (yyval.boolean) = false; } -#line 2592 "pl_gram.c" +#line 2593 "pl_gram.c" break; case 52: /* decl_notnull: K_NOT K_NULL */ -#line 818 "pl_gram.y" +#line 819 "pl_gram.y" { (yyval.boolean) = true; } -#line 2598 "pl_gram.c" +#line 2599 "pl_gram.c" break; case 53: /* decl_defval: ';' */ -#line 822 "pl_gram.y" +#line 823 "pl_gram.y" { (yyval.expr) = NULL; } -#line 2604 "pl_gram.c" +#line 2605 "pl_gram.c" break; case 54: /* decl_defval: decl_defkey */ -#line 824 "pl_gram.y" +#line 825 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); } -#line 2612 "pl_gram.c" +#line 2613 "pl_gram.c" break; case 59: /* proc_sect: %empty */ -#line 843 "pl_gram.y" +#line 844 "pl_gram.y" { (yyval.list) = NIL; } -#line 2618 "pl_gram.c" +#line 2619 "pl_gram.c" break; case 60: /* proc_sect: proc_sect proc_stmt */ -#line 845 "pl_gram.y" +#line 846 "pl_gram.y" { /* don't bother linking null statements into list */ if ((yyvsp[0].stmt) == NULL) @@ -2626,155 +2627,155 @@ yyreduce: else (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].stmt)); } -#line 2630 "pl_gram.c" +#line 2631 "pl_gram.c" break; case 61: /* proc_stmt: pl_block ';' */ -#line 855 "pl_gram.y" +#line 856 "pl_gram.y" { (yyval.stmt) = (yyvsp[-1].stmt); } -#line 2636 "pl_gram.c" +#line 2637 "pl_gram.c" break; case 62: /* proc_stmt: stmt_assign */ -#line 857 "pl_gram.y" +#line 858 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2642 "pl_gram.c" +#line 2643 "pl_gram.c" break; case 63: /* proc_stmt: stmt_if */ -#line 859 "pl_gram.y" +#line 860 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2648 "pl_gram.c" +#line 2649 "pl_gram.c" break; case 64: /* proc_stmt: stmt_case */ -#line 861 "pl_gram.y" +#line 862 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2654 "pl_gram.c" +#line 2655 "pl_gram.c" break; case 65: /* proc_stmt: stmt_loop */ -#line 863 "pl_gram.y" +#line 864 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2660 "pl_gram.c" +#line 2661 "pl_gram.c" break; case 66: /* proc_stmt: stmt_while */ -#line 865 "pl_gram.y" +#line 866 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2666 "pl_gram.c" +#line 2667 "pl_gram.c" break; case 67: /* proc_stmt: stmt_for */ -#line 867 "pl_gram.y" +#line 868 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2672 "pl_gram.c" +#line 2673 "pl_gram.c" break; case 68: /* proc_stmt: stmt_foreach_a */ -#line 869 "pl_gram.y" +#line 870 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2678 "pl_gram.c" +#line 2679 "pl_gram.c" break; case 69: /* proc_stmt: stmt_exit */ -#line 871 "pl_gram.y" +#line 872 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2684 "pl_gram.c" +#line 2685 "pl_gram.c" break; case 70: /* proc_stmt: stmt_return */ -#line 873 "pl_gram.y" +#line 874 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2690 "pl_gram.c" +#line 2691 "pl_gram.c" break; case 71: /* proc_stmt: stmt_raise */ -#line 875 "pl_gram.y" +#line 876 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2696 "pl_gram.c" +#line 2697 "pl_gram.c" break; case 72: /* proc_stmt: stmt_assert */ -#line 877 "pl_gram.y" +#line 878 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2702 "pl_gram.c" +#line 2703 "pl_gram.c" break; case 73: /* proc_stmt: stmt_execsql */ -#line 879 "pl_gram.y" +#line 880 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2708 "pl_gram.c" +#line 2709 "pl_gram.c" break; case 74: /* proc_stmt: stmt_dynexecute */ -#line 881 "pl_gram.y" +#line 882 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2714 "pl_gram.c" +#line 2715 "pl_gram.c" break; case 75: /* proc_stmt: stmt_perform */ -#line 883 "pl_gram.y" +#line 884 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2720 "pl_gram.c" +#line 2721 "pl_gram.c" break; case 76: /* proc_stmt: stmt_call */ -#line 885 "pl_gram.y" +#line 886 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2726 "pl_gram.c" +#line 2727 "pl_gram.c" break; case 77: /* proc_stmt: stmt_getdiag */ -#line 887 "pl_gram.y" +#line 888 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2732 "pl_gram.c" +#line 2733 "pl_gram.c" break; case 78: /* proc_stmt: stmt_open */ -#line 889 "pl_gram.y" +#line 890 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2738 "pl_gram.c" +#line 2739 "pl_gram.c" break; case 79: /* proc_stmt: stmt_fetch */ -#line 891 "pl_gram.y" +#line 892 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2744 "pl_gram.c" +#line 2745 "pl_gram.c" break; case 80: /* proc_stmt: stmt_move */ -#line 893 "pl_gram.y" +#line 894 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2750 "pl_gram.c" +#line 2751 "pl_gram.c" break; case 81: /* proc_stmt: stmt_close */ -#line 895 "pl_gram.y" +#line 896 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2756 "pl_gram.c" +#line 2757 "pl_gram.c" break; case 82: /* proc_stmt: stmt_null */ -#line 897 "pl_gram.y" +#line 898 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2762 "pl_gram.c" +#line 2763 "pl_gram.c" break; case 83: /* proc_stmt: stmt_commit */ -#line 899 "pl_gram.y" +#line 900 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2768 "pl_gram.c" +#line 2769 "pl_gram.c" break; case 84: /* proc_stmt: stmt_rollback */ -#line 901 "pl_gram.y" +#line 902 "pl_gram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2774 "pl_gram.c" +#line 2775 "pl_gram.c" break; case 85: /* stmt_perform: K_PERFORM */ -#line 905 "pl_gram.y" +#line 906 "pl_gram.y" { PLpgSQL_stmt_perform *new; int startloc; @@ -2808,11 +2809,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 2812 "pl_gram.c" +#line 2813 "pl_gram.c" break; case 86: /* stmt_call: K_CALL */ -#line 941 "pl_gram.y" +#line 942 "pl_gram.y" { PLpgSQL_stmt_call *new; @@ -2830,11 +2831,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 2834 "pl_gram.c" +#line 2835 "pl_gram.c" break; case 87: /* stmt_call: K_DO */ -#line 959 "pl_gram.y" +#line 960 "pl_gram.y" { /* use the same structures as for CALL, for simplicity */ PLpgSQL_stmt_call *new; @@ -2853,11 +2854,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 2857 "pl_gram.c" +#line 2858 "pl_gram.c" break; case 88: /* stmt_assign: T_DATUM */ -#line 980 "pl_gram.y" +#line 981 "pl_gram.y" { PLpgSQL_stmt_assign *new; RawParseMode pmode; @@ -2894,11 +2895,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 2898 "pl_gram.c" +#line 2899 "pl_gram.c" break; case 89: /* stmt_getdiag: K_GET getdiag_area_opt K_DIAGNOSTICS getdiag_list ';' */ -#line 1019 "pl_gram.y" +#line 1020 "pl_gram.y" { PLpgSQL_stmt_getdiag *new; ListCell *lc; @@ -2958,51 +2959,51 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 2962 "pl_gram.c" +#line 2963 "pl_gram.c" break; case 90: /* getdiag_area_opt: %empty */ -#line 1081 "pl_gram.y" +#line 1082 "pl_gram.y" { (yyval.boolean) = false; } -#line 2970 "pl_gram.c" +#line 2971 "pl_gram.c" break; case 91: /* getdiag_area_opt: K_CURRENT */ -#line 1085 "pl_gram.y" +#line 1086 "pl_gram.y" { (yyval.boolean) = false; } -#line 2978 "pl_gram.c" +#line 2979 "pl_gram.c" break; case 92: /* getdiag_area_opt: K_STACKED */ -#line 1089 "pl_gram.y" +#line 1090 "pl_gram.y" { (yyval.boolean) = true; } -#line 2986 "pl_gram.c" +#line 2987 "pl_gram.c" break; case 93: /* getdiag_list: getdiag_list ',' getdiag_list_item */ -#line 1095 "pl_gram.y" +#line 1096 "pl_gram.y" { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].diagitem)); } -#line 2994 "pl_gram.c" +#line 2995 "pl_gram.c" break; case 94: /* getdiag_list: getdiag_list_item */ -#line 1099 "pl_gram.y" +#line 1100 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[0].diagitem)); } -#line 3002 "pl_gram.c" +#line 3003 "pl_gram.c" break; case 95: /* getdiag_list_item: getdiag_target assign_operator getdiag_item */ -#line 1105 "pl_gram.y" +#line 1106 "pl_gram.y" { PLpgSQL_diag_item *new; @@ -3012,11 +3013,11 @@ yyreduce: (yyval.diagitem) = new; } -#line 3016 "pl_gram.c" +#line 3017 "pl_gram.c" break; case 96: /* getdiag_item: %empty */ -#line 1117 "pl_gram.y" +#line 1118 "pl_gram.y" { int tok = yylex(); @@ -3059,11 +3060,11 @@ yyreduce: else yyerror("unrecognized GET DIAGNOSTICS item"); } -#line 3063 "pl_gram.c" +#line 3064 "pl_gram.c" break; case 97: /* getdiag_target: T_DATUM */ -#line 1162 "pl_gram.y" +#line 1163 "pl_gram.y" { /* * In principle we should support a getdiag_target @@ -3081,29 +3082,29 @@ yyreduce: check_assignable((yyvsp[0].wdatum).datum, (yylsp[0])); (yyval.datum) = (yyvsp[0].wdatum).datum; } -#line 3085 "pl_gram.c" +#line 3086 "pl_gram.c" break; case 98: /* getdiag_target: T_WORD */ -#line 1180 "pl_gram.y" +#line 1181 "pl_gram.y" { /* just to give a better message than "syntax error" */ word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); } -#line 3094 "pl_gram.c" +#line 3095 "pl_gram.c" break; case 99: /* getdiag_target: T_CWORD */ -#line 1185 "pl_gram.y" +#line 1186 "pl_gram.y" { /* just to give a better message than "syntax error" */ cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); } -#line 3103 "pl_gram.c" +#line 3104 "pl_gram.c" break; case 100: /* stmt_if: K_IF expr_until_then proc_sect stmt_elsifs stmt_else K_END K_IF ';' */ -#line 1192 "pl_gram.y" +#line 1193 "pl_gram.y" { PLpgSQL_stmt_if *new; @@ -3118,19 +3119,19 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3122 "pl_gram.c" +#line 3123 "pl_gram.c" break; case 101: /* stmt_elsifs: %empty */ -#line 1209 "pl_gram.y" +#line 1210 "pl_gram.y" { (yyval.list) = NIL; } -#line 3130 "pl_gram.c" +#line 3131 "pl_gram.c" break; case 102: /* stmt_elsifs: stmt_elsifs K_ELSIF expr_until_then proc_sect */ -#line 1213 "pl_gram.y" +#line 1214 "pl_gram.y" { PLpgSQL_if_elsif *new; @@ -3141,35 +3142,35 @@ yyreduce: (yyval.list) = lappend((yyvsp[-3].list), new); } -#line 3145 "pl_gram.c" +#line 3146 "pl_gram.c" break; case 103: /* stmt_else: %empty */ -#line 1226 "pl_gram.y" +#line 1227 "pl_gram.y" { (yyval.list) = NIL; } -#line 3153 "pl_gram.c" +#line 3154 "pl_gram.c" break; case 104: /* stmt_else: K_ELSE proc_sect */ -#line 1230 "pl_gram.y" +#line 1231 "pl_gram.y" { (yyval.list) = (yyvsp[0].list); } -#line 3161 "pl_gram.c" +#line 3162 "pl_gram.c" break; case 105: /* stmt_case: K_CASE opt_expr_until_when case_when_list opt_case_else K_END K_CASE ';' */ -#line 1236 "pl_gram.y" +#line 1237 "pl_gram.y" { (yyval.stmt) = make_case((yylsp[-6]), (yyvsp[-5].expr), (yyvsp[-4].list), (yyvsp[-3].list)); } -#line 3169 "pl_gram.c" +#line 3170 "pl_gram.c" break; case 106: /* opt_expr_until_when: %empty */ -#line 1242 "pl_gram.y" +#line 1243 "pl_gram.y" { PLpgSQL_expr *expr = NULL; int tok = yylex(); @@ -3182,27 +3183,27 @@ yyreduce: plpgsql_push_back_token(K_WHEN); (yyval.expr) = expr; } -#line 3186 "pl_gram.c" +#line 3187 "pl_gram.c" break; case 107: /* case_when_list: case_when_list case_when */ -#line 1257 "pl_gram.y" +#line 1258 "pl_gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].casewhen)); } -#line 3194 "pl_gram.c" +#line 3195 "pl_gram.c" break; case 108: /* case_when_list: case_when */ -#line 1261 "pl_gram.y" +#line 1262 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[0].casewhen)); } -#line 3202 "pl_gram.c" +#line 3203 "pl_gram.c" break; case 109: /* case_when: K_WHEN expr_until_then proc_sect */ -#line 1267 "pl_gram.y" +#line 1268 "pl_gram.y" { PLpgSQL_case_when *new = palloc(sizeof(PLpgSQL_case_when)); @@ -3211,19 +3212,19 @@ yyreduce: new->stmts = (yyvsp[0].list); (yyval.casewhen) = new; } -#line 3215 "pl_gram.c" +#line 3216 "pl_gram.c" break; case 110: /* opt_case_else: %empty */ -#line 1278 "pl_gram.y" +#line 1279 "pl_gram.y" { (yyval.list) = NIL; } -#line 3223 "pl_gram.c" +#line 3224 "pl_gram.c" break; case 111: /* opt_case_else: K_ELSE proc_sect */ -#line 1282 "pl_gram.y" +#line 1283 "pl_gram.y" { /* * proc_sect could return an empty list, but we @@ -3236,11 +3237,11 @@ yyreduce: else (yyval.list) = list_make1(NULL); } -#line 3240 "pl_gram.c" +#line 3241 "pl_gram.c" break; case 112: /* stmt_loop: opt_loop_label K_LOOP loop_body */ -#line 1297 "pl_gram.y" +#line 1298 "pl_gram.y" { PLpgSQL_stmt_loop *new; @@ -3256,11 +3257,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3260 "pl_gram.c" +#line 3261 "pl_gram.c" break; case 113: /* stmt_while: opt_loop_label K_WHILE expr_until_loop loop_body */ -#line 1315 "pl_gram.y" +#line 1316 "pl_gram.y" { PLpgSQL_stmt_while *new; @@ -3277,11 +3278,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3281 "pl_gram.c" +#line 3282 "pl_gram.c" break; case 114: /* stmt_for: opt_loop_label K_FOR for_control loop_body */ -#line 1334 "pl_gram.y" +#line 1335 "pl_gram.y" { /* This runs after we've scanned the loop body */ if ((yyvsp[-1].stmt)->cmd_type == PLPGSQL_STMT_FORI) @@ -3313,11 +3314,11 @@ yyreduce: /* close namespace started in opt_loop_label */ plpgsql_ns_pop(); } -#line 3317 "pl_gram.c" +#line 3318 "pl_gram.c" break; case 115: /* for_control: for_variable K_IN */ -#line 1368 "pl_gram.y" +#line 1369 "pl_gram.y" { int tok = yylex(); int tokloc = yylloc; @@ -3556,11 +3557,11 @@ yyreduce: } } } -#line 3560 "pl_gram.c" +#line 3561 "pl_gram.c" break; case 116: /* for_variable: T_DATUM */ -#line 1627 "pl_gram.y" +#line 1628 "pl_gram.y" { (yyval.forvariable).name = NameOfDatum(&((yyvsp[0].wdatum))); (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[0])); @@ -3586,11 +3587,11 @@ yyreduce: (yylsp[0])); } } -#line 3590 "pl_gram.c" +#line 3591 "pl_gram.c" break; case 117: /* for_variable: T_WORD */ -#line 1653 "pl_gram.y" +#line 1654 "pl_gram.y" { int tok; @@ -3604,20 +3605,20 @@ yyreduce: if (tok == ',') word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); } -#line 3608 "pl_gram.c" +#line 3609 "pl_gram.c" break; case 118: /* for_variable: T_CWORD */ -#line 1667 "pl_gram.y" +#line 1668 "pl_gram.y" { /* just to give a better message than "syntax error" */ cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); } -#line 3617 "pl_gram.c" +#line 3618 "pl_gram.c" break; case 119: /* stmt_foreach_a: opt_loop_label K_FOREACH for_variable foreach_slice K_IN K_ARRAY expr_until_loop loop_body */ -#line 1674 "pl_gram.y" +#line 1675 "pl_gram.y" { PLpgSQL_stmt_foreach_a *new; @@ -3653,27 +3654,27 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3657 "pl_gram.c" +#line 3658 "pl_gram.c" break; case 120: /* foreach_slice: %empty */ -#line 1712 "pl_gram.y" +#line 1713 "pl_gram.y" { (yyval.ival) = 0; } -#line 3665 "pl_gram.c" +#line 3666 "pl_gram.c" break; case 121: /* foreach_slice: K_SLICE ICONST */ -#line 1716 "pl_gram.y" +#line 1717 "pl_gram.y" { (yyval.ival) = (yyvsp[0].ival); } -#line 3673 "pl_gram.c" +#line 3674 "pl_gram.c" break; case 122: /* stmt_exit: exit_type opt_label opt_exitcond */ -#line 1722 "pl_gram.y" +#line 1723 "pl_gram.y" { PLpgSQL_stmt_exit *new; @@ -3724,27 +3725,27 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3728 "pl_gram.c" +#line 3729 "pl_gram.c" break; case 123: /* exit_type: K_EXIT */ -#line 1775 "pl_gram.y" +#line 1776 "pl_gram.y" { (yyval.boolean) = true; } -#line 3736 "pl_gram.c" +#line 3737 "pl_gram.c" break; case 124: /* exit_type: K_CONTINUE */ -#line 1779 "pl_gram.y" +#line 1780 "pl_gram.y" { (yyval.boolean) = false; } -#line 3744 "pl_gram.c" +#line 3745 "pl_gram.c" break; case 125: /* stmt_return: K_RETURN */ -#line 1785 "pl_gram.y" +#line 1786 "pl_gram.y" { int tok; @@ -3768,11 +3769,11 @@ yyreduce: (yyval.stmt) = make_return_stmt((yylsp[0])); } } -#line 3772 "pl_gram.c" +#line 3773 "pl_gram.c" break; case 126: /* stmt_raise: K_RAISE */ -#line 1811 "pl_gram.y" +#line 1812 "pl_gram.y" { PLpgSQL_stmt_raise *new; int tok; @@ -3915,11 +3916,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3919 "pl_gram.c" +#line 3920 "pl_gram.c" break; case 127: /* stmt_assert: K_ASSERT */ -#line 1956 "pl_gram.y" +#line 1957 "pl_gram.y" { PLpgSQL_stmt_assert *new; int tok; @@ -3941,45 +3942,45 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 3945 "pl_gram.c" +#line 3946 "pl_gram.c" break; case 128: /* loop_body: proc_sect K_END K_LOOP opt_label ';' */ -#line 1980 "pl_gram.y" +#line 1981 "pl_gram.y" { (yyval.loop_body).stmts = (yyvsp[-4].list); (yyval.loop_body).end_label = (yyvsp[-1].str); (yyval.loop_body).end_label_location = (yylsp[-1]); } -#line 3955 "pl_gram.c" +#line 3956 "pl_gram.c" break; case 129: /* stmt_execsql: K_IMPORT */ -#line 1998 "pl_gram.y" +#line 1999 "pl_gram.y" { - (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[0])); + (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[0]), NULL); } -#line 3963 "pl_gram.c" +#line 3964 "pl_gram.c" break; case 130: /* stmt_execsql: K_INSERT */ -#line 2002 "pl_gram.y" +#line 2003 "pl_gram.y" { - (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[0])); + (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[0]), NULL); } -#line 3971 "pl_gram.c" +#line 3972 "pl_gram.c" break; case 131: /* stmt_execsql: K_MERGE */ -#line 2006 "pl_gram.y" +#line 2007 "pl_gram.y" { - (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[0])); + (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[0]), NULL); } -#line 3979 "pl_gram.c" +#line 3980 "pl_gram.c" break; case 132: /* stmt_execsql: T_WORD */ -#line 2010 "pl_gram.y" +#line 2011 "pl_gram.y" { int tok; @@ -3988,13 +3989,13 @@ yyreduce: if (tok == '=' || tok == COLON_EQUALS || tok == '[' || tok == '.') word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); - (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[0])); + (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[0]), &((yyvsp[0].word))); } -#line 3994 "pl_gram.c" +#line 3995 "pl_gram.c" break; case 133: /* stmt_execsql: T_CWORD */ -#line 2021 "pl_gram.y" +#line 2022 "pl_gram.y" { int tok; @@ -4003,13 +4004,13 @@ yyreduce: if (tok == '=' || tok == COLON_EQUALS || tok == '[' || tok == '.') cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); - (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[0])); + (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[0]), NULL); } -#line 4009 "pl_gram.c" +#line 4010 "pl_gram.c" break; case 134: /* stmt_dynexecute: K_EXECUTE */ -#line 2034 "pl_gram.y" +#line 2035 "pl_gram.y" { PLpgSQL_stmt_dynexecute *new; PLpgSQL_expr *expr; @@ -4070,11 +4071,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 4074 "pl_gram.c" +#line 4075 "pl_gram.c" break; case 135: /* stmt_open: K_OPEN cursor_variable */ -#line 2098 "pl_gram.y" +#line 2099 "pl_gram.y" { PLpgSQL_stmt_open *new; int tok; @@ -4150,11 +4151,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 4154 "pl_gram.c" +#line 4155 "pl_gram.c" break; case 136: /* stmt_fetch: K_FETCH opt_fetch_direction cursor_variable K_INTO */ -#line 2176 "pl_gram.y" +#line 2177 "pl_gram.y" { PLpgSQL_stmt_fetch *fetch = (yyvsp[-2].fetch); PLpgSQL_variable *target; @@ -4182,11 +4183,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) fetch; } -#line 4186 "pl_gram.c" +#line 4187 "pl_gram.c" break; case 137: /* stmt_move: K_MOVE opt_fetch_direction cursor_variable ';' */ -#line 2206 "pl_gram.y" +#line 2207 "pl_gram.y" { PLpgSQL_stmt_fetch *fetch = (yyvsp[-2].fetch); @@ -4196,19 +4197,19 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) fetch; } -#line 4200 "pl_gram.c" +#line 4201 "pl_gram.c" break; case 138: /* opt_fetch_direction: %empty */ -#line 2218 "pl_gram.y" +#line 2219 "pl_gram.y" { (yyval.fetch) = read_fetch_direction(); } -#line 4208 "pl_gram.c" +#line 4209 "pl_gram.c" break; case 139: /* stmt_close: K_CLOSE cursor_variable ';' */ -#line 2224 "pl_gram.y" +#line 2225 "pl_gram.y" { PLpgSQL_stmt_close *new; @@ -4220,20 +4221,20 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 4224 "pl_gram.c" +#line 4225 "pl_gram.c" break; case 140: /* stmt_null: K_NULL ';' */ -#line 2238 "pl_gram.y" +#line 2239 "pl_gram.y" { /* We do not bother building a node for NULL */ (yyval.stmt) = NULL; } -#line 4233 "pl_gram.c" +#line 4234 "pl_gram.c" break; case 141: /* stmt_commit: K_COMMIT opt_transaction_chain ';' */ -#line 2245 "pl_gram.y" +#line 2246 "pl_gram.y" { PLpgSQL_stmt_commit *new; @@ -4245,11 +4246,11 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 4249 "pl_gram.c" +#line 4250 "pl_gram.c" break; case 142: /* stmt_rollback: K_ROLLBACK opt_transaction_chain ';' */ -#line 2259 "pl_gram.y" +#line 2260 "pl_gram.y" { PLpgSQL_stmt_rollback *new; @@ -4261,29 +4262,29 @@ yyreduce: (yyval.stmt) = (PLpgSQL_stmt *) new; } -#line 4265 "pl_gram.c" +#line 4266 "pl_gram.c" break; case 143: /* opt_transaction_chain: K_AND K_CHAIN */ -#line 2273 "pl_gram.y" +#line 2274 "pl_gram.y" { (yyval.ival) = true; } -#line 4271 "pl_gram.c" +#line 4272 "pl_gram.c" break; case 144: /* opt_transaction_chain: K_AND K_NO K_CHAIN */ -#line 2274 "pl_gram.y" +#line 2275 "pl_gram.y" { (yyval.ival) = false; } -#line 4277 "pl_gram.c" +#line 4278 "pl_gram.c" break; case 145: /* opt_transaction_chain: %empty */ -#line 2275 "pl_gram.y" +#line 2276 "pl_gram.y" { (yyval.ival) = false; } -#line 4283 "pl_gram.c" +#line 4284 "pl_gram.c" break; case 146: /* cursor_variable: T_DATUM */ -#line 2280 "pl_gram.y" +#line 2281 "pl_gram.y" { /* * In principle we should support a cursor_variable @@ -4305,35 +4306,35 @@ yyreduce: parser_errposition((yylsp[0])))); (yyval.var) = (PLpgSQL_var *) (yyvsp[0].wdatum).datum; } -#line 4309 "pl_gram.c" +#line 4310 "pl_gram.c" break; case 147: /* cursor_variable: T_WORD */ -#line 2302 "pl_gram.y" +#line 2303 "pl_gram.y" { /* just to give a better message than "syntax error" */ word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); } -#line 4318 "pl_gram.c" +#line 4319 "pl_gram.c" break; case 148: /* cursor_variable: T_CWORD */ -#line 2307 "pl_gram.y" +#line 2308 "pl_gram.y" { /* just to give a better message than "syntax error" */ cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); } -#line 4327 "pl_gram.c" +#line 4328 "pl_gram.c" break; case 149: /* exception_sect: %empty */ -#line 2314 "pl_gram.y" +#line 2315 "pl_gram.y" { (yyval.exception_block) = NULL; } -#line 4333 "pl_gram.c" +#line 4334 "pl_gram.c" break; case 150: /* @2: %empty */ -#line 2316 "pl_gram.y" +#line 2317 "pl_gram.y" { /* * We use a mid-rule action to add these @@ -4366,38 +4367,38 @@ yyreduce: (yyval.exception_block) = new; } -#line 4370 "pl_gram.c" +#line 4371 "pl_gram.c" break; case 151: /* exception_sect: K_EXCEPTION @2 proc_exceptions */ -#line 2349 "pl_gram.y" +#line 2350 "pl_gram.y" { PLpgSQL_exception_block *new = (yyvsp[-1].exception_block); new->exc_list = (yyvsp[0].list); (yyval.exception_block) = new; } -#line 4381 "pl_gram.c" +#line 4382 "pl_gram.c" break; case 152: /* proc_exceptions: proc_exceptions proc_exception */ -#line 2358 "pl_gram.y" +#line 2359 "pl_gram.y" { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].exception)); } -#line 4389 "pl_gram.c" +#line 4390 "pl_gram.c" break; case 153: /* proc_exceptions: proc_exception */ -#line 2362 "pl_gram.y" +#line 2363 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[0].exception)); } -#line 4397 "pl_gram.c" +#line 4398 "pl_gram.c" break; case 154: /* proc_exception: K_WHEN proc_conditions K_THEN proc_sect */ -#line 2368 "pl_gram.y" +#line 2369 "pl_gram.y" { PLpgSQL_exception *new; @@ -4408,11 +4409,11 @@ yyreduce: (yyval.exception) = new; } -#line 4412 "pl_gram.c" +#line 4413 "pl_gram.c" break; case 155: /* proc_conditions: proc_conditions K_OR proc_condition */ -#line 2381 "pl_gram.y" +#line 2382 "pl_gram.y" { PLpgSQL_condition *old; @@ -4421,19 +4422,19 @@ yyreduce: old->next = (yyvsp[0].condition); (yyval.condition) = (yyvsp[-2].condition); } -#line 4425 "pl_gram.c" +#line 4426 "pl_gram.c" break; case 156: /* proc_conditions: proc_condition */ -#line 2390 "pl_gram.y" +#line 2391 "pl_gram.y" { (yyval.condition) = (yyvsp[0].condition); } -#line 4433 "pl_gram.c" +#line 4434 "pl_gram.c" break; case 157: /* proc_condition: any_identifier */ -#line 2396 "pl_gram.y" +#line 2397 "pl_gram.y" { if (strcmp((yyvsp[0].str), "sqlstate") != 0) { @@ -4467,120 +4468,120 @@ yyreduce: (yyval.condition) = new; } } -#line 4471 "pl_gram.c" +#line 4472 "pl_gram.c" break; case 158: /* expr_until_semi: %empty */ -#line 2432 "pl_gram.y" +#line 2433 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); } -#line 4477 "pl_gram.c" +#line 4478 "pl_gram.c" break; case 159: /* expr_until_then: %empty */ -#line 2436 "pl_gram.y" +#line 2437 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); } -#line 4483 "pl_gram.c" +#line 4484 "pl_gram.c" break; case 160: /* expr_until_loop: %empty */ -#line 2440 "pl_gram.y" +#line 2441 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); } -#line 4489 "pl_gram.c" +#line 4490 "pl_gram.c" break; case 161: /* opt_block_label: %empty */ -#line 2444 "pl_gram.y" +#line 2445 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_BLOCK); (yyval.str) = NULL; } -#line 4498 "pl_gram.c" +#line 4499 "pl_gram.c" break; case 162: /* opt_block_label: LESS_LESS any_identifier GREATER_GREATER */ -#line 2449 "pl_gram.y" +#line 2450 "pl_gram.y" { plpgsql_ns_push((yyvsp[-1].str), PLPGSQL_LABEL_BLOCK); (yyval.str) = (yyvsp[-1].str); } -#line 4507 "pl_gram.c" +#line 4508 "pl_gram.c" break; case 163: /* opt_loop_label: %empty */ -#line 2456 "pl_gram.y" +#line 2457 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_LOOP); (yyval.str) = NULL; } -#line 4516 "pl_gram.c" +#line 4517 "pl_gram.c" break; case 164: /* opt_loop_label: LESS_LESS any_identifier GREATER_GREATER */ -#line 2461 "pl_gram.y" +#line 2462 "pl_gram.y" { plpgsql_ns_push((yyvsp[-1].str), PLPGSQL_LABEL_LOOP); (yyval.str) = (yyvsp[-1].str); } -#line 4525 "pl_gram.c" +#line 4526 "pl_gram.c" break; case 165: /* opt_label: %empty */ -#line 2468 "pl_gram.y" +#line 2469 "pl_gram.y" { (yyval.str) = NULL; } -#line 4533 "pl_gram.c" +#line 4534 "pl_gram.c" break; case 166: /* opt_label: any_identifier */ -#line 2472 "pl_gram.y" +#line 2473 "pl_gram.y" { /* label validity will be checked by outer production */ (yyval.str) = (yyvsp[0].str); } -#line 4542 "pl_gram.c" +#line 4543 "pl_gram.c" break; case 167: /* opt_exitcond: ';' */ -#line 2479 "pl_gram.y" +#line 2480 "pl_gram.y" { (yyval.expr) = NULL; } -#line 4548 "pl_gram.c" +#line 4549 "pl_gram.c" break; case 168: /* opt_exitcond: K_WHEN expr_until_semi */ -#line 2481 "pl_gram.y" +#line 2482 "pl_gram.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4554 "pl_gram.c" +#line 4555 "pl_gram.c" break; case 169: /* any_identifier: T_WORD */ -#line 2488 "pl_gram.y" +#line 2489 "pl_gram.y" { (yyval.str) = (yyvsp[0].word).ident; } -#line 4562 "pl_gram.c" +#line 4563 "pl_gram.c" break; case 170: /* any_identifier: unreserved_keyword */ -#line 2492 "pl_gram.y" +#line 2493 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[0].keyword)); } -#line 4570 "pl_gram.c" +#line 4571 "pl_gram.c" break; case 171: /* any_identifier: T_DATUM */ -#line 2496 "pl_gram.y" +#line 2497 "pl_gram.y" { if ((yyvsp[0].wdatum).ident == NULL) /* composite name not OK */ yyerror("syntax error"); (yyval.str) = (yyvsp[0].wdatum).ident; } -#line 4580 "pl_gram.c" +#line 4581 "pl_gram.c" break; -#line 4584 "pl_gram.c" +#line 4585 "pl_gram.c" default: break; } @@ -4779,7 +4780,7 @@ yyreturn: return yyresult; } -#line 2587 "pl_gram.y" +#line 2588 "pl_gram.y" /* @@ -5139,8 +5140,13 @@ read_datatype(int tok) return result; } +/* + * Read a generic SQL statement. We have already read its first token; + * firsttoken is that token's code and location its starting location. + * If firsttoken == T_WORD, pass its yylval value as "word", else pass NULL. + */ static PLpgSQL_stmt * -make_execsql_stmt(int firsttoken, int location) +make_execsql_stmt(int firsttoken, int location, PLword *word) { StringInfoData ds; IdentifierLookup save_IdentifierLookup; @@ -5153,9 +5159,16 @@ make_execsql_stmt(int firsttoken, int location) bool have_strict = false; int into_start_loc = -1; int into_end_loc = -1; + int paren_depth = 0; + int begin_depth = 0; + bool in_routine_definition = false; + int token_count = 0; + char tokens[4]; /* records the first few tokens */ initStringInfo(&ds); + memset(tokens, 0, sizeof(tokens)); + /* special lookup mode for identifiers within the SQL text */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; @@ -5164,6 +5177,12 @@ make_execsql_stmt(int firsttoken, int location) * Scan to the end of the SQL command. Identify any INTO-variables * clause lurking within it, and parse that via read_into_target(). * + * The end of the statement is defined by a semicolon ... except that + * semicolons within parentheses or BEGIN/END blocks don't terminate a + * statement. We follow psql's lead in not recognizing BEGIN/END except + * after CREATE [OR REPLACE] {FUNCTION|PROCEDURE}. END can also appear + * within a CASE construct, so we treat CASE/END like BEGIN/END. + * * Because INTO is sometimes used in the main SQL grammar, we have to be * careful not to take any such usage of INTO as a PL/pgSQL INTO clause. * There are currently three such cases: @@ -5189,13 +5208,50 @@ make_execsql_stmt(int firsttoken, int location) * break this logic again ... beware! */ tok = firsttoken; + if (tok == T_WORD && strcmp(word->ident, "create") == 0) + tokens[token_count] = 'c'; + token_count++; + for (;;) { prev_tok = tok; tok = yylex(); if (have_into && into_end_loc < 0) into_end_loc = yylloc; /* token after the INTO part */ - if (tok == ';') + /* Detect CREATE [OR REPLACE] {FUNCTION|PROCEDURE} */ + if (tokens[0] == 'c' && token_count < sizeof(tokens)) + { + if (tok == K_OR) + tokens[token_count] = 'o'; + else if (tok == T_WORD && + strcmp(yylval.word.ident, "replace") == 0) + tokens[token_count] = 'r'; + else if (tok == T_WORD && + strcmp(yylval.word.ident, "function") == 0) + tokens[token_count] = 'f'; + else if (tok == T_WORD && + strcmp(yylval.word.ident, "procedure") == 0) + tokens[token_count] = 'f'; /* treat same as "function" */ + if (tokens[1] == 'f' || + (tokens[1] == 'o' && tokens[2] == 'r' && tokens[3] == 'f')) + in_routine_definition = true; + token_count++; + } + /* Track paren nesting (needed for CREATE RULE syntax) */ + if (tok == '(') + paren_depth++; + else if (tok == ')' && paren_depth > 0) + paren_depth--; + /* We need track BEGIN/END nesting only in a routine definition */ + if (in_routine_definition && paren_depth == 0) + { + if (tok == K_BEGIN || tok == K_CASE) + begin_depth++; + else if (tok == K_END && begin_depth > 0) + begin_depth--; + } + /* Command-ending semicolon? */ + if (tok == ';' && paren_depth == 0 && begin_depth == 0) break; if (tok == 0) yyerror("unexpected end of function definition"); diff --git a/src/pl/plpgsql/src/pl_gram.h b/src/pl/plpgsql/src/pl_gram.h index 9fd14bd..e22b1c0 100644 --- a/src/pl/plpgsql/src/pl_gram.h +++ b/src/pl/plpgsql/src/pl_gram.h @@ -189,7 +189,7 @@ extern int plpgsql_yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 120 "pl_gram.y" +#line 121 "pl_gram.y" core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y index 0b8aea9..debbafe 100644 --- a/src/pl/plpgsql/src/pl_gram.y +++ b/src/pl/plpgsql/src/pl_gram.y @@ -79,7 +79,8 @@ static PLpgSQL_expr *read_sql_expression2(int until, int until2, int *endtoken); static PLpgSQL_expr *read_sql_stmt(void); static PLpgSQL_type *read_datatype(int tok); -static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location); +static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location, + PLword *word); static PLpgSQL_stmt_fetch *read_fetch_direction(void); static void complete_direction(PLpgSQL_stmt_fetch *fetch, bool *check_FROM); @@ -1996,15 +1997,15 @@ loop_body : proc_sect K_END K_LOOP opt_label ';' */ stmt_execsql : K_IMPORT { - $$ = make_execsql_stmt(K_IMPORT, @1); + $$ = make_execsql_stmt(K_IMPORT, @1, NULL); } | K_INSERT { - $$ = make_execsql_stmt(K_INSERT, @1); + $$ = make_execsql_stmt(K_INSERT, @1, NULL); } | K_MERGE { - $$ = make_execsql_stmt(K_MERGE, @1); + $$ = make_execsql_stmt(K_MERGE, @1, NULL); } | T_WORD { @@ -2015,7 +2016,7 @@ stmt_execsql : K_IMPORT if (tok == '=' || tok == COLON_EQUALS || tok == '[' || tok == '.') word_is_not_variable(&($1), @1); - $$ = make_execsql_stmt(T_WORD, @1); + $$ = make_execsql_stmt(T_WORD, @1, &($1)); } | T_CWORD { @@ -2026,7 +2027,7 @@ stmt_execsql : K_IMPORT if (tok == '=' || tok == COLON_EQUALS || tok == '[' || tok == '.') cword_is_not_variable(&($1), @1); - $$ = make_execsql_stmt(T_CWORD, @1); + $$ = make_execsql_stmt(T_CWORD, @1, NULL); } ; @@ -2943,8 +2944,13 @@ read_datatype(int tok) return result; } +/* + * Read a generic SQL statement. We have already read its first token; + * firsttoken is that token's code and location its starting location. + * If firsttoken == T_WORD, pass its yylval value as "word", else pass NULL. + */ static PLpgSQL_stmt * -make_execsql_stmt(int firsttoken, int location) +make_execsql_stmt(int firsttoken, int location, PLword *word) { StringInfoData ds; IdentifierLookup save_IdentifierLookup; @@ -2957,9 +2963,16 @@ make_execsql_stmt(int firsttoken, int location) bool have_strict = false; int into_start_loc = -1; int into_end_loc = -1; + int paren_depth = 0; + int begin_depth = 0; + bool in_routine_definition = false; + int token_count = 0; + char tokens[4]; /* records the first few tokens */ initStringInfo(&ds); + memset(tokens, 0, sizeof(tokens)); + /* special lookup mode for identifiers within the SQL text */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; @@ -2968,6 +2981,12 @@ make_execsql_stmt(int firsttoken, int location) * Scan to the end of the SQL command. Identify any INTO-variables * clause lurking within it, and parse that via read_into_target(). * + * The end of the statement is defined by a semicolon ... except that + * semicolons within parentheses or BEGIN/END blocks don't terminate a + * statement. We follow psql's lead in not recognizing BEGIN/END except + * after CREATE [OR REPLACE] {FUNCTION|PROCEDURE}. END can also appear + * within a CASE construct, so we treat CASE/END like BEGIN/END. + * * Because INTO is sometimes used in the main SQL grammar, we have to be * careful not to take any such usage of INTO as a PL/pgSQL INTO clause. * There are currently three such cases: @@ -2993,13 +3012,50 @@ make_execsql_stmt(int firsttoken, int location) * break this logic again ... beware! */ tok = firsttoken; + if (tok == T_WORD && strcmp(word->ident, "create") == 0) + tokens[token_count] = 'c'; + token_count++; + for (;;) { prev_tok = tok; tok = yylex(); if (have_into && into_end_loc < 0) into_end_loc = yylloc; /* token after the INTO part */ - if (tok == ';') + /* Detect CREATE [OR REPLACE] {FUNCTION|PROCEDURE} */ + if (tokens[0] == 'c' && token_count < sizeof(tokens)) + { + if (tok == K_OR) + tokens[token_count] = 'o'; + else if (tok == T_WORD && + strcmp(yylval.word.ident, "replace") == 0) + tokens[token_count] = 'r'; + else if (tok == T_WORD && + strcmp(yylval.word.ident, "function") == 0) + tokens[token_count] = 'f'; + else if (tok == T_WORD && + strcmp(yylval.word.ident, "procedure") == 0) + tokens[token_count] = 'f'; /* treat same as "function" */ + if (tokens[1] == 'f' || + (tokens[1] == 'o' && tokens[2] == 'r' && tokens[3] == 'f')) + in_routine_definition = true; + token_count++; + } + /* Track paren nesting (needed for CREATE RULE syntax) */ + if (tok == '(') + paren_depth++; + else if (tok == ')' && paren_depth > 0) + paren_depth--; + /* We need track BEGIN/END nesting only in a routine definition */ + if (in_routine_definition && paren_depth == 0) + { + if (tok == K_BEGIN || tok == K_CASE) + begin_depth++; + else if (tok == K_END && begin_depth > 0) + begin_depth--; + } + /* Command-ending semicolon? */ + if (tok == ';' && paren_depth == 0 && begin_depth == 0) break; if (tok == 0) yyerror("unexpected end of function definition"); diff --git a/src/pl/plpgsql/src/po/ru.po b/src/pl/plpgsql/src/po/ru.po index 5c93496..a1a17a0 100644 --- a/src/pl/plpgsql/src/po/ru.po +++ b/src/pl/plpgsql/src/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: plpgsql (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" -"POT-Creation-Date: 2023-05-03 05:56+0300\n" +"POT-Creation-Date: 2024-02-02 18:11+0300\n" "PO-Revision-Date: 2022-09-05 13:38+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -323,7 +323,7 @@ msgid "" msgstr "" "функция, возвращающая составной тип, не может вернуть несоставное значение" -#: pl_exec.c:3331 pl_gram.y:3319 +#: pl_exec.c:3331 pl_gram.y:3375 #, c-format msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "" @@ -344,7 +344,7 @@ msgstr "в RETURN NEXT передан неправильный тип запис msgid "RETURN NEXT must have a parameter" msgstr "у оператора RETURN NEXT должен быть параметр" -#: pl_exec.c:3551 pl_gram.y:3383 +#: pl_exec.c:3551 pl_gram.y:3439 #, c-format msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "" @@ -545,7 +545,7 @@ msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "" "Для записи, которой не присвоено значение, структура кортежа не определена." -#: pl_exec.c:8319 pl_gram.y:3442 +#: pl_exec.c:8319 pl_gram.y:3498 #, c-format msgid "variable \"%s\" is declared CONSTANT" msgstr "переменная \"%s\" объявлена как CONSTANT" @@ -582,57 +582,57 @@ msgstr "SQL-оператор" msgid "FOR over EXECUTE statement" msgstr "FOR по результатам EXECUTE" -#: pl_gram.y:487 +#: pl_gram.y:488 #, c-format msgid "block label must be placed before DECLARE, not after" msgstr "метка блока должна помещаться до DECLARE, а не после" -#: pl_gram.y:507 +#: pl_gram.y:508 #, c-format msgid "collations are not supported by type %s" msgstr "тип %s не поддерживает сортировку (COLLATION)" -#: pl_gram.y:526 +#: pl_gram.y:527 #, c-format msgid "variable \"%s\" must have a default value, since it's declared NOT NULL" msgstr "" "у переменной \"%s\" должно быть значение по умолчанию, так как она объявлена " "как NOT NULL" -#: pl_gram.y:674 pl_gram.y:689 pl_gram.y:715 +#: pl_gram.y:675 pl_gram.y:690 pl_gram.y:716 #, c-format msgid "variable \"%s\" does not exist" msgstr "переменная \"%s\" не существует" -#: pl_gram.y:733 pl_gram.y:761 +#: pl_gram.y:734 pl_gram.y:762 msgid "duplicate declaration" msgstr "повторяющееся объявление" -#: pl_gram.y:744 pl_gram.y:772 +#: pl_gram.y:745 pl_gram.y:773 #, c-format msgid "variable \"%s\" shadows a previously defined variable" msgstr "переменная \"%s\" скрывает ранее определённую переменную" -#: pl_gram.y:1044 +#: pl_gram.y:1045 #, c-format msgid "diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS" msgstr "команда GET STACKED DIAGNOSTICS не принимает элемент %s" -#: pl_gram.y:1062 +#: pl_gram.y:1063 #, c-format msgid "diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS" msgstr "команда GET CURRENT DIAGNOSTICS не принимает элемент %s" -#: pl_gram.y:1157 +#: pl_gram.y:1158 msgid "unrecognized GET DIAGNOSTICS item" msgstr "нераспознанный элемент GET DIAGNOSTICS" -#: pl_gram.y:1173 pl_gram.y:3558 +#: pl_gram.y:1174 pl_gram.y:3614 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" - не скалярная переменная" -#: pl_gram.y:1403 pl_gram.y:1597 +#: pl_gram.y:1404 pl_gram.y:1598 #, c-format msgid "" "loop variable of loop over rows must be a record variable or list of scalar " @@ -641,229 +641,229 @@ msgstr "" "переменная цикла по кортежам должна быть переменной типа запись или списком " "скалярных переменных" -#: pl_gram.y:1438 +#: pl_gram.y:1439 #, c-format msgid "cursor FOR loop must have only one target variable" msgstr "в цикле FOR с курсором должна быть только одна переменная" -#: pl_gram.y:1445 +#: pl_gram.y:1446 #, c-format msgid "cursor FOR loop must use a bound cursor variable" msgstr "" "в цикле FOR с курсором должен использоваться курсор, привязанный к запросу" -#: pl_gram.y:1536 +#: pl_gram.y:1537 #, c-format msgid "integer FOR loop must have only one target variable" msgstr "в целочисленном цикле FOR должна быть только одна переменная" -#: pl_gram.y:1570 +#: pl_gram.y:1571 #, c-format msgid "cannot specify REVERSE in query FOR loop" msgstr "в цикле FOR с запросом нельзя указать REVERSE" -#: pl_gram.y:1700 +#: pl_gram.y:1701 #, c-format msgid "loop variable of FOREACH must be a known variable or list of variables" msgstr "" "переменной цикла FOREACH должна быть известная переменная или список " "переменных" -#: pl_gram.y:1742 +#: pl_gram.y:1743 #, c-format msgid "" "there is no label \"%s\" attached to any block or loop enclosing this " "statement" msgstr "в блоке или цикле, окружающем этот оператор, нет метки \"%s\"" -#: pl_gram.y:1750 +#: pl_gram.y:1751 #, c-format msgid "block label \"%s\" cannot be used in CONTINUE" msgstr "метку блока \"%s\" нельзя использовать в CONTINUE" -#: pl_gram.y:1765 +#: pl_gram.y:1766 #, c-format msgid "EXIT cannot be used outside a loop, unless it has a label" msgstr "EXIT можно использовать вне цикла только с указанием метки" -#: pl_gram.y:1766 +#: pl_gram.y:1767 #, c-format msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE нельзя использовать вне цикла" -#: pl_gram.y:1790 pl_gram.y:1828 pl_gram.y:1876 pl_gram.y:3005 pl_gram.y:3093 -#: pl_gram.y:3204 pl_gram.y:3957 +#: pl_gram.y:1791 pl_gram.y:1829 pl_gram.y:1877 pl_gram.y:3061 pl_gram.y:3149 +#: pl_gram.y:3260 pl_gram.y:4013 msgid "unexpected end of function definition" msgstr "неожиданный конец определения функции" -#: pl_gram.y:1896 pl_gram.y:1920 pl_gram.y:1936 pl_gram.y:1942 pl_gram.y:2067 -#: pl_gram.y:2075 pl_gram.y:2089 pl_gram.y:2184 pl_gram.y:2408 pl_gram.y:2498 -#: pl_gram.y:2656 pl_gram.y:3800 pl_gram.y:3861 pl_gram.y:3938 +#: pl_gram.y:1897 pl_gram.y:1921 pl_gram.y:1937 pl_gram.y:1943 pl_gram.y:2068 +#: pl_gram.y:2076 pl_gram.y:2090 pl_gram.y:2185 pl_gram.y:2409 pl_gram.y:2499 +#: pl_gram.y:2657 pl_gram.y:3856 pl_gram.y:3917 pl_gram.y:3994 msgid "syntax error" msgstr "ошибка синтаксиса" -#: pl_gram.y:1924 pl_gram.y:1926 pl_gram.y:2412 pl_gram.y:2414 +#: pl_gram.y:1925 pl_gram.y:1927 pl_gram.y:2413 pl_gram.y:2415 msgid "invalid SQLSTATE code" msgstr "неверный код SQLSTATE" -#: pl_gram.y:2132 +#: pl_gram.y:2133 msgid "syntax error, expected \"FOR\"" msgstr "ошибка синтаксиса, ожидался \"FOR\"" -#: pl_gram.y:2193 +#: pl_gram.y:2194 #, c-format msgid "FETCH statement cannot return multiple rows" msgstr "оператор FETCH не может вернуть несколько строк" -#: pl_gram.y:2290 +#: pl_gram.y:2291 #, c-format msgid "cursor variable must be a simple variable" msgstr "переменная-курсор должна быть простой переменной" -#: pl_gram.y:2296 +#: pl_gram.y:2297 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "переменная \"%s\" должна быть типа cursor или refcursor" -#: pl_gram.y:2627 pl_gram.y:2638 +#: pl_gram.y:2628 pl_gram.y:2639 #, c-format msgid "\"%s\" is not a known variable" msgstr "\"%s\" - не известная переменная" -#: pl_gram.y:2744 pl_gram.y:2754 pl_gram.y:2910 +#: pl_gram.y:2745 pl_gram.y:2755 pl_gram.y:2911 msgid "mismatched parentheses" msgstr "непарные скобки" -#: pl_gram.y:2758 +#: pl_gram.y:2759 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "отсутствует \"%s\" в конце выражения SQL" -#: pl_gram.y:2764 +#: pl_gram.y:2765 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "отсутствует \"%s\" в конце оператора SQL" -#: pl_gram.y:2781 +#: pl_gram.y:2782 msgid "missing expression" msgstr "отсутствует выражение" -#: pl_gram.y:2783 +#: pl_gram.y:2784 msgid "missing SQL statement" msgstr "отсутствует оператор SQL" -#: pl_gram.y:2912 +#: pl_gram.y:2913 msgid "incomplete data type declaration" msgstr "неполное определение типа данных" -#: pl_gram.y:2935 +#: pl_gram.y:2936 msgid "missing data type declaration" msgstr "отсутствует определение типа данных" -#: pl_gram.y:3015 +#: pl_gram.y:3071 msgid "INTO specified more than once" msgstr "INTO указано неоднократно" -#: pl_gram.y:3185 +#: pl_gram.y:3241 msgid "expected FROM or IN" msgstr "ожидалось FROM или IN" -#: pl_gram.y:3246 +#: pl_gram.y:3302 #, c-format msgid "RETURN cannot have a parameter in function returning set" msgstr "в функции, возвращающей множество, RETURN должен быть без параметров" -#: pl_gram.y:3247 +#: pl_gram.y:3303 #, c-format msgid "Use RETURN NEXT or RETURN QUERY." msgstr "Используйте RETURN NEXT или RETURN QUERY." -#: pl_gram.y:3257 +#: pl_gram.y:3313 #, c-format msgid "RETURN cannot have a parameter in a procedure" msgstr "в процедуре RETURN должен быть без параметров" -#: pl_gram.y:3262 +#: pl_gram.y:3318 #, c-format msgid "RETURN cannot have a parameter in function returning void" msgstr "в функции, не возвращающей ничего, RETURN не должен иметь параметров" -#: pl_gram.y:3271 +#: pl_gram.y:3327 #, c-format msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN должен быть без параметров в функции с параметрами OUT" -#: pl_gram.y:3334 +#: pl_gram.y:3390 #, c-format msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "RETURN NEXT должен быть без параметров в функции с параметрами OUT" -#: pl_gram.y:3500 +#: pl_gram.y:3556 #, c-format msgid "record variable cannot be part of multiple-item INTO list" msgstr "" "переменная типа запись не может быть частью списка INTO с несколькими " "элементами" -#: pl_gram.y:3546 +#: pl_gram.y:3602 #, c-format msgid "too many INTO variables specified" msgstr "указано слишком много переменных INTO" -#: pl_gram.y:3754 +#: pl_gram.y:3810 #, c-format msgid "end label \"%s\" specified for unlabeled block" msgstr "конечная метка \"%s\" указана для непомеченного блока" -#: pl_gram.y:3761 +#: pl_gram.y:3817 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "конечная метка \"%s\" отличается от метки блока \"%s\"" -#: pl_gram.y:3795 +#: pl_gram.y:3851 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "курсор \"%s\" не имеет аргументов" -#: pl_gram.y:3809 +#: pl_gram.y:3865 #, c-format msgid "cursor \"%s\" has arguments" msgstr "курсор \"%s\" имеет аргументы" -#: pl_gram.y:3851 +#: pl_gram.y:3907 #, c-format msgid "cursor \"%s\" has no argument named \"%s\"" msgstr "курсор \"%s\" не имеет аргумента \"%s\"" -#: pl_gram.y:3871 +#: pl_gram.y:3927 #, c-format msgid "value for parameter \"%s\" of cursor \"%s\" specified more than once" msgstr "значение параметра \"%s\" курсора \"%s\" указано неоднократно" -#: pl_gram.y:3896 +#: pl_gram.y:3952 #, c-format msgid "not enough arguments for cursor \"%s\"" msgstr "недостаточно аргументов для курсора \"%s\"" -#: pl_gram.y:3903 +#: pl_gram.y:3959 #, c-format msgid "too many arguments for cursor \"%s\"" msgstr "слишком много аргументов для курсора \"%s\"" -#: pl_gram.y:3989 +#: pl_gram.y:4045 msgid "unrecognized RAISE statement option" msgstr "нераспознанный параметр оператора RAISE" -#: pl_gram.y:3993 +#: pl_gram.y:4049 msgid "syntax error, expected \"=\"" msgstr "ошибка синтаксиса, ожидалось \"=\"" -#: pl_gram.y:4034 +#: pl_gram.y:4090 #, c-format msgid "too many parameters specified for RAISE" msgstr "слишком много параметров для RAISE" -#: pl_gram.y:4038 +#: pl_gram.y:4094 #, c-format msgid "too few parameters specified for RAISE" msgstr "недостаточно параметров для RAISE" diff --git a/src/pl/plpgsql/src/sql/plpgsql_misc.sql b/src/pl/plpgsql/src/sql/plpgsql_misc.sql new file mode 100644 index 0000000..71a8fc2 --- /dev/null +++ b/src/pl/plpgsql/src/sql/plpgsql_misc.sql @@ -0,0 +1,22 @@ +-- +-- Miscellaneous topics +-- + +-- Verify that we can parse new-style CREATE FUNCTION/PROCEDURE +do +$$ + declare procedure int; -- check we still recognize non-keywords as vars + begin + create function test1() returns int + begin atomic + select 2 + 2; + end; + create or replace procedure test2(x int) + begin atomic + select x + 2; + end; + end +$$; + +\sf test1 +\sf test2 diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile index 6b1865c..bb26426 100644 --- a/src/pl/plpython/Makefile +++ b/src/pl/plpython/Makefile @@ -39,6 +39,7 @@ DATA = $(NAME)u.control $(NAME)u--1.0.sql # header files to install - it's not clear which of these might be needed # so install them all. INCS = plpython.h \ + plpython_system.h \ plpy_cursorobject.h \ plpy_elog.h \ plpy_exec.h \ @@ -120,7 +121,7 @@ install-data: installdirs uninstall-data: rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA))) - rm -f $(addprefix '$(DESTDIR)$(includedir_server)'/, plpython.h plpy_util.h) + rm -f $(addprefix '$(DESTDIR)$(includedir_server)'/, $(INCS)) .PHONY: install-data uninstall-data diff --git a/src/pl/plpython/plpython.h b/src/pl/plpython/plpython.h index 2a0c9bf..c8f12c0 100644 --- a/src/pl/plpython/plpython.h +++ b/src/pl/plpython/plpython.h @@ -22,82 +22,15 @@ #endif /* - * Undefine some things that get (re)defined in the Python headers. They aren't - * used by the PL/Python code, and all PostgreSQL headers should be included - * earlier, so this should be pretty safe. + * Pull in Python headers via a wrapper header, to control the scope of + * the system_header pragma therein. */ -#undef _POSIX_C_SOURCE -#undef _XOPEN_SOURCE - -/* - * Sometimes python carefully scribbles on our *printf macros. - * So we undefine them here and redefine them after it's done its dirty deed. - */ -#undef vsnprintf -#undef snprintf -#undef vsprintf -#undef sprintf -#undef vfprintf -#undef fprintf -#undef vprintf -#undef printf - -#if defined(_MSC_VER) && defined(_DEBUG) -/* Python uses #pragma to bring in a non-default libpython on VC++ if - * _DEBUG is defined */ -#undef _DEBUG -/* Also hide away errcode, since we load Python.h before postgres.h */ -#define errcode __msvc_errcode -#include -#undef errcode -#define _DEBUG -#elif defined (_MSC_VER) -#define errcode __msvc_errcode -#include -#undef errcode -#else -#include -#endif +#include "plpython_system.h" /* define our text domain for translations */ #undef TEXTDOMAIN #define TEXTDOMAIN PG_TEXTDOMAIN("plpython") -/* put back our *printf macros ... this must match src/include/port.h */ -#ifdef vsnprintf -#undef vsnprintf -#endif -#ifdef snprintf -#undef snprintf -#endif -#ifdef vsprintf -#undef vsprintf -#endif -#ifdef sprintf -#undef sprintf -#endif -#ifdef vfprintf -#undef vfprintf -#endif -#ifdef fprintf -#undef fprintf -#endif -#ifdef vprintf -#undef vprintf -#endif -#ifdef printf -#undef printf -#endif - -#define vsnprintf pg_vsnprintf -#define snprintf pg_snprintf -#define vsprintf pg_vsprintf -#define sprintf pg_sprintf -#define vfprintf pg_vfprintf -#define fprintf pg_fprintf -#define vprintf pg_vprintf -#define printf(...) pg_printf(__VA_ARGS__) - /* * Used throughout, so it's easier to just include it everywhere. */ diff --git a/src/pl/plpython/plpython_system.h b/src/pl/plpython/plpython_system.h new file mode 100644 index 0000000..e93583f --- /dev/null +++ b/src/pl/plpython/plpython_system.h @@ -0,0 +1,103 @@ +/*------------------------------------------------------------------------- + * + * plpython_system.h - pull in Python's system header files + * + * We break this out as a separate header file to precisely control + * the scope of the "system_header" pragma. No Postgres-specific + * declarations should be put here. However, we do include some stuff + * that is meant to prevent conflicts between our code and Python. + * + * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/pl/plpython/plpython_system.h + * + *------------------------------------------------------------------------- + */ +#ifndef PLPYTHON_SYSTEM_H +#define PLPYTHON_SYSTEM_H + +/* + * Newer versions of the Python headers trigger a lot of warnings with our + * preferred compiler flags (at least -Wdeclaration-after-statement is known + * to be problematic). The system_header pragma hides warnings from within + * the rest of this file, if supported. + */ +#ifdef HAVE_PRAGMA_GCC_SYSTEM_HEADER +#pragma GCC system_header +#endif + +/* + * Undefine some things that get (re)defined in the Python headers. They aren't + * used by the PL/Python code, and all PostgreSQL headers should be included + * earlier, so this should be pretty safe. + */ +#undef _POSIX_C_SOURCE +#undef _XOPEN_SOURCE + +/* + * Sometimes python carefully scribbles on our *printf macros. + * So we undefine them here and redefine them after it's done its dirty deed. + */ +#undef vsnprintf +#undef snprintf +#undef vsprintf +#undef sprintf +#undef vfprintf +#undef fprintf +#undef vprintf +#undef printf + +#if defined(_MSC_VER) && defined(_DEBUG) +/* Python uses #pragma to bring in a non-default libpython on VC++ if + * _DEBUG is defined */ +#undef _DEBUG +/* Also hide away errcode, since we load Python.h before postgres.h */ +#define errcode __msvc_errcode +#include +#undef errcode +#define _DEBUG +#elif defined (_MSC_VER) +#define errcode __msvc_errcode +#include +#undef errcode +#else +#include +#endif + +/* put back our *printf macros ... this must match src/include/port.h */ +#ifdef vsnprintf +#undef vsnprintf +#endif +#ifdef snprintf +#undef snprintf +#endif +#ifdef vsprintf +#undef vsprintf +#endif +#ifdef sprintf +#undef sprintf +#endif +#ifdef vfprintf +#undef vfprintf +#endif +#ifdef fprintf +#undef fprintf +#endif +#ifdef vprintf +#undef vprintf +#endif +#ifdef printf +#undef printf +#endif + +#define vsnprintf pg_vsnprintf +#define snprintf pg_snprintf +#define vsprintf pg_vsprintf +#define sprintf pg_sprintf +#define vfprintf pg_vfprintf +#define fprintf pg_fprintf +#define vprintf pg_vprintf +#define printf(...) pg_printf(__VA_ARGS__) + +#endif /* PLPYTHON_SYSTEM_H */ diff --git a/src/test/isolation/expected/fk-snapshot.out b/src/test/isolation/expected/fk-snapshot.out index 5faf80d..bdd26ba 100644 --- a/src/test/isolation/expected/fk-snapshot.out +++ b/src/test/isolation/expected/fk-snapshot.out @@ -122,3 +122,25 @@ a 1 (1 row) + +starting permutation: s2ip2 s1brr s1ifp2 s2brr s2dp2 s1c s2c +step s2ip2: INSERT INTO pk_noparted VALUES (2); +step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; +step s1ifp2: INSERT INTO fk_parted_pk VALUES (2); +step s2brr: BEGIN ISOLATION LEVEL REPEATABLE READ; +step s2dp2: DELETE FROM pk_noparted WHERE a = 2; +step s1c: COMMIT; +step s2dp2: <... completed> +ERROR: could not serialize access due to concurrent update +step s2c: COMMIT; + +starting permutation: s2ip2 s1brr s1ifn2 s2brr s2dp2 s1c s2c +step s2ip2: INSERT INTO pk_noparted VALUES (2); +step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; +step s1ifn2: INSERT INTO fk_noparted_sn VALUES (2); +step s2brr: BEGIN ISOLATION LEVEL REPEATABLE READ; +step s2dp2: DELETE FROM pk_noparted WHERE a = 2; +step s1c: COMMIT; +step s2dp2: <... completed> +ERROR: could not serialize access due to concurrent update +step s2c: COMMIT; diff --git a/src/test/isolation/specs/fk-snapshot.spec b/src/test/isolation/specs/fk-snapshot.spec index 378507f..9fad57e 100644 --- a/src/test/isolation/specs/fk-snapshot.spec +++ b/src/test/isolation/specs/fk-snapshot.spec @@ -13,6 +13,11 @@ setup CREATE TABLE fk_noparted ( a int REFERENCES fk_parted_pk ON DELETE NO ACTION INITIALLY DEFERRED ); + + CREATE TABLE fk_noparted_sn ( + a int REFERENCES pk_noparted ON DELETE SET NULL + ); + INSERT INTO pk_noparted VALUES (1); INSERT INTO fk_parted_pk VALUES (1); INSERT INTO fk_noparted VALUES (1); @@ -20,7 +25,7 @@ setup teardown { - DROP TABLE pk_noparted, fk_parted_pk, fk_noparted; + DROP TABLE pk_noparted, fk_parted_pk, fk_noparted, fk_noparted_sn; } session s1 @@ -28,6 +33,7 @@ step s1brr { BEGIN ISOLATION LEVEL REPEATABLE READ; } step s1brc { BEGIN ISOLATION LEVEL READ COMMITTED; } step s1ifp2 { INSERT INTO fk_parted_pk VALUES (2); } step s1ifp1 { INSERT INTO fk_parted_pk VALUES (1); } +step s1ifn2 { INSERT INTO fk_noparted_sn VALUES (2); } step s1dfp { DELETE FROM fk_parted_pk WHERE a = 1; } step s1c { COMMIT; } step s1sfp { SELECT * FROM fk_parted_pk; } @@ -38,6 +44,7 @@ session s2 step s2brr { BEGIN ISOLATION LEVEL REPEATABLE READ; } step s2brc { BEGIN ISOLATION LEVEL READ COMMITTED; } step s2ip2 { INSERT INTO pk_noparted VALUES (2); } +step s2dp2 { DELETE FROM pk_noparted WHERE a = 2; } step s2ifn2 { INSERT INTO fk_noparted VALUES (2); } step s2c { COMMIT; } step s2sfp { SELECT * FROM fk_parted_pk; } @@ -59,3 +66,11 @@ permutation s1brc s2brc s2ip2 s1sp s2c s1sp s1ifp2 s2brc s2sfp s1c s1sfp s2ifn2 # the same no matter the snapshot mode permutation s1brr s1dfp s1ifp1 s1c s1sfn permutation s1brc s1dfp s1ifp1 s1c s1sfn + +# trying to delete a row through DELETE CASCADE, whilst that row is deleted +# in a concurrent transaction +permutation s2ip2 s1brr s1ifp2 s2brr s2dp2 s1c s2c + +# trying to update a row through DELETE SET NULL, whilst that row is deleted +# in a concurrent transaction +permutation s2ip2 s1brr s1ifn2 s2brr s2dp2 s1c s2c diff --git a/src/test/modules/test_pg_dump/t/001_base.pl b/src/test/modules/test_pg_dump/t/001_base.pl index f5da6bf..23a7901 100644 --- a/src/test/modules/test_pg_dump/t/001_base.pl +++ b/src/test/modules/test_pg_dump/t/001_base.pl @@ -170,6 +170,19 @@ my %pgdump_runs = ( 'postgres', ], }, + + # regress_dump_login_role shouldn't need SELECT rights on internal + # (undumped) extension tables + privileged_internals => { + dump_cmd => [ + 'pg_dump', '--no-sync', "--file=$tempdir/privileged_internals.sql", + # these two tables are irrelevant to the test case + '--exclude-table=regress_pg_dump_schema.external_tab', + '--exclude-table=regress_pg_dump_schema.extdependtab', + '--username=regress_dump_login_role', 'postgres', + ], + }, + schema_only => { dump_cmd => [ 'pg_dump', '--no-sync', "--file=$tempdir/schema_only.sql", @@ -279,6 +292,7 @@ my %full_runs = ( exclude_table => 1, no_privs => 1, no_owner => 1, + privileged_internals => 1, with_extension => 1, without_extension => 1); @@ -316,6 +330,16 @@ my %tests = ( like => { pg_dumpall_globals => 1, }, }, + 'CREATE ROLE regress_dump_login_role' => { + create_order => 1, + create_sql => 'CREATE ROLE regress_dump_login_role LOGIN;', + regexp => qr/^ + \QCREATE ROLE regress_dump_login_role;\E + \n\QALTER ROLE regress_dump_login_role WITH \E.*\Q LOGIN \E.*; + \n/xm, + like => { pg_dumpall_globals => 1, }, + }, + 'GRANT ALTER SYSTEM ON PARAMETER full_page_writes TO regress_dump_test_role' => { create_order => 2, @@ -699,6 +723,7 @@ my %tests = ( data_only => 1, extension_schema => 1, pg_dumpall_globals => 1, + privileged_internals => 1, section_data => 1, section_pre_data => 1, # Excludes this schema as extension is not listed. @@ -715,6 +740,7 @@ my %tests = ( data_only => 1, extension_schema => 1, pg_dumpall_globals => 1, + privileged_internals => 1, section_data => 1, section_pre_data => 1, # Excludes this schema as extension is not listed. @@ -738,13 +764,14 @@ my %tests = ( # Excludes the extension and keeps the schema's data. without_extension_internal_schema => 1, }, + unlike => { privileged_internals => 1 }, },); ######################################### # Create a PG instance to test actually dumping from my $node = PostgreSQL::Test::Cluster->new('main'); -$node->init; +$node->init('auth_extra' => [ '--create-role', 'regress_dump_login_role' ]); $node->start; my $port = $node->port; diff --git a/src/test/modules/test_pg_dump/test_pg_dump--1.0.sql b/src/test/modules/test_pg_dump/test_pg_dump--1.0.sql index 110f7ee..1c68e14 100644 --- a/src/test/modules/test_pg_dump/test_pg_dump--1.0.sql +++ b/src/test/modules/test_pg_dump/test_pg_dump--1.0.sql @@ -12,11 +12,13 @@ CREATE SEQUENCE regress_pg_dump_seq; CREATE SEQUENCE regress_seq_dumpable; SELECT pg_catalog.pg_extension_config_dump('regress_seq_dumpable', ''); +GRANT SELECT ON SEQUENCE regress_seq_dumpable TO public; CREATE TABLE regress_table_dumpable ( col1 int check (col1 > 0) ); SELECT pg_catalog.pg_extension_config_dump('regress_table_dumpable', ''); +GRANT SELECT ON regress_table_dumpable TO public; CREATE SCHEMA regress_pg_dump_schema; diff --git a/src/test/regress/expected/fast_default.out b/src/test/regress/expected/fast_default.out index 91f2571..59365da 100644 --- a/src/test/regress/expected/fast_default.out +++ b/src/test/regress/expected/fast_default.out @@ -272,7 +272,25 @@ SELECT comp(); Rewritten (1 row) +-- check that we notice insertion of a volatile default argument +CREATE FUNCTION foolme(timestamptz DEFAULT clock_timestamp()) + RETURNS timestamptz + IMMUTABLE AS 'select $1' LANGUAGE sql; +ALTER TABLE T ADD COLUMN c3 timestamptz DEFAULT foolme(); +NOTICE: rewriting table t for reason 2 +SELECT attname, atthasmissing, attmissingval FROM pg_attribute + WHERE attrelid = 't'::regclass AND attnum > 0 + ORDER BY attnum; + attname | atthasmissing | attmissingval +---------+---------------+--------------- + pk | f | + c1 | f | + c2 | f | + c3 | f | +(4 rows) + DROP TABLE T; +DROP FUNCTION foolme(timestamptz); -- Simple querie CREATE TABLE T (pk INT NOT NULL PRIMARY KEY); SELECT set('t'); diff --git a/src/test/regress/expected/generated.out b/src/test/regress/expected/generated.out index 7c3c7b2..1020848 100644 --- a/src/test/regress/expected/generated.out +++ b/src/test/regress/expected/generated.out @@ -61,6 +61,9 @@ LINE 1: ..._3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) STO... -- generation expression must be immutable CREATE TABLE gtest_err_4 (a int PRIMARY KEY, b double precision GENERATED ALWAYS AS (random()) STORED); ERROR: generation expression is not immutable +-- ... but be sure that the immutability test is accurate +CREATE TABLE gtest2 (a int, b text GENERATED ALWAYS AS (a || ' sec') STORED); +DROP TABLE gtest2; -- cannot have default/identity and generated CREATE TABLE gtest_err_5a (a int PRIMARY KEY, b int DEFAULT 5 GENERATED ALWAYS AS (a * 2) STORED); ERROR: both default and generation expression specified for column "b" of table "gtest_err_5a" diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index de73683..2dc9b00 100644 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -373,6 +373,8 @@ SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '109203489 days' Sun Dec 31 00:00:00 294276 (1 row) +SELECT timestamp without time zone '2000-01-01' - interval '2483590 days' AS "out of range"; +ERROR: timestamp out of range SELECT timestamp without time zone '12/31/294276' - timestamp without time zone '12/23/1999' AS "106751991 Days"; 106751991 Days ------------------ @@ -633,6 +635,8 @@ SELECT timestamp with time zone '1999-12-01' + interval '1 month - 1 second' AS Fri Dec 31 23:59:59 1999 PST (1 row) +SELECT timestamp with time zone '2000-01-01' - interval '2483590 days' AS "out of range"; +ERROR: timestamp out of range SELECT (timestamp with time zone 'today' = (timestamp with time zone 'yesterday' + interval '1 day')) as "True"; True ------ diff --git a/src/test/regress/expected/indexing.out b/src/test/regress/expected/indexing.out index 368e735..e17879b 100644 --- a/src/test/regress/expected/indexing.out +++ b/src/test/regress/expected/indexing.out @@ -1281,6 +1281,45 @@ select tableoid::regclass, * from idxpart order by a; idxpart2 | 857142 | six (8 rows) +drop table idxpart; +-- Test some other non-btree index types +create table idxpart (a int, b text, c int[]) partition by range (a); +create table idxpart1 partition of idxpart for values from (0) to (100000); +set enable_seqscan to off; +create index idxpart_brin on idxpart using brin(b); +explain (costs off) select * from idxpart where b = 'abcd'; + QUERY PLAN +------------------------------------------- + Bitmap Heap Scan on idxpart1 idxpart + Recheck Cond: (b = 'abcd'::text) + -> Bitmap Index Scan on idxpart1_b_idx + Index Cond: (b = 'abcd'::text) +(4 rows) + +drop index idxpart_brin; +create index idxpart_spgist on idxpart using spgist(b); +explain (costs off) select * from idxpart where b = 'abcd'; + QUERY PLAN +------------------------------------------- + Bitmap Heap Scan on idxpart1 idxpart + Recheck Cond: (b = 'abcd'::text) + -> Bitmap Index Scan on idxpart1_b_idx + Index Cond: (b = 'abcd'::text) +(4 rows) + +drop index idxpart_spgist; +create index idxpart_gin on idxpart using gin(c); +explain (costs off) select * from idxpart where c @> array[42]; + QUERY PLAN +---------------------------------------------- + Bitmap Heap Scan on idxpart1 idxpart + Recheck Cond: (c @> '{42}'::integer[]) + -> Bitmap Index Scan on idxpart1_c_idx + Index Cond: (c @> '{42}'::integer[]) +(4 rows) + +drop index idxpart_gin; +reset enable_seqscan; drop table idxpart; -- intentionally leave some objects around create table idxpart (a int) partition by range (a); diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 61e1522..33d9f13 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1088,6 +1088,23 @@ Inherits: inht1, inhs1 DROP TABLE inhts; +-- Test for adding a column to a parent table with complex inheritance +CREATE TABLE inhta (); +CREATE TABLE inhtb () INHERITS (inhta); +CREATE TABLE inhtc () INHERITS (inhtb); +CREATE TABLE inhtd () INHERITS (inhta, inhtb, inhtc); +ALTER TABLE inhta ADD COLUMN i int; +NOTICE: merging definition of column "i" for child "inhtd" +NOTICE: merging definition of column "i" for child "inhtd" +\d+ inhta + Table "public.inhta" + Column | Type | Collation | Nullable | Default | Storage | Stats target | Description +--------+---------+-----------+----------+---------+---------+--------------+------------- + i | integer | | | | plain | | +Child tables: inhtb, + inhtd + +DROP TABLE inhta, inhtb, inhtc, inhtd; -- Test for renaming in diamond inheritance CREATE TABLE inht2 (x int) INHERITS (inht1); CREATE TABLE inht3 (y int) INHERITS (inht1); diff --git a/src/test/regress/expected/int8.out b/src/test/regress/expected/int8.out index 1ae23cf..329f391 100644 --- a/src/test/regress/expected/int8.out +++ b/src/test/regress/expected/int8.out @@ -654,6 +654,8 @@ select -('-9223372036854775807'::int8); select -('-9223372036854775808'::int8); ERROR: bigint out of range +select 0::int8 - '-9223372036854775808'::int8; +ERROR: bigint out of range select '9223372036854775800'::int8 + '9223372036854775800'::int8; ERROR: bigint out of range select '-9223372036854775800'::int8 + '-9223372036854775800'::int8; diff --git a/src/test/regress/expected/interval.out b/src/test/regress/expected/interval.out index 5350abf..f96eadd 100644 --- a/src/test/regress/expected/interval.out +++ b/src/test/regress/expected/interval.out @@ -357,6 +357,19 @@ SELECT * FROM INTERVAL_TBL; @ 5 mons 12 hours (10 rows) +-- multiplication and division overflow test cases +SELECT '3000000 months'::interval * 1000; +ERROR: interval out of range +SELECT '3000000 months'::interval / 0.001; +ERROR: interval out of range +SELECT '3000000 days'::interval * 1000; +ERROR: interval out of range +SELECT '3000000 days'::interval / 0.001; +ERROR: interval out of range +SELECT '1 month 2146410 days'::interval * 1000.5002; +ERROR: interval out of range +SELECT '4611686018427387904 usec'::interval / 0.1; +ERROR: interval out of range -- test avg(interval), which is somewhat fragile since people have been -- known to change the allowed input syntax for type interval without -- updating pg_aggregate.agginitval diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out index 0eb6339..867c6d2 100644 --- a/src/test/regress/expected/join.out +++ b/src/test/regress/expected/join.out @@ -5803,6 +5803,32 @@ select * from Output: (COALESCE((COALESCE(b.q2, '42'::bigint)), d.q2)) (24 rows) +-- another case requiring nested PlaceHolderVars +explain (verbose, costs off) +select * from + (select 0 as val0) as ss0 + left join (select 1 as val) as ss1 on true + left join lateral (select ss1.val as val_filtered where false) as ss2 on true; + QUERY PLAN +-------------------------------- + Nested Loop Left Join + Output: 0, (1), ((1)) + -> Result + Output: 1 + -> Result + Output: (1) + One-Time Filter: false +(7 rows) + +select * from + (select 0 as val0) as ss0 + left join (select 1 as val) as ss1 on true + left join lateral (select ss1.val as val_filtered where false) as ss2 on true; + val0 | val | val_filtered +------+-----+-------------- + 0 | 1 | +(1 row) + -- case that breaks the old ph_may_need optimization explain (verbose, costs off) select c.*,a.*,ss1.q1,ss2.q1,ss3.* from diff --git a/src/test/regress/expected/matview.out b/src/test/regress/expected/matview.out index c109d97..e811e1a 100644 --- a/src/test/regress/expected/matview.out +++ b/src/test/regress/expected/matview.out @@ -572,6 +572,22 @@ REFRESH MATERIALIZED VIEW mvtest_mv_foo; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_mv_foo; DROP OWNED BY regress_user_mvtest CASCADE; DROP ROLE regress_user_mvtest; +-- Concurrent refresh requires a unique index on the materialized +-- view. Test what happens if it's dropped during the refresh. +CREATE OR REPLACE FUNCTION mvtest_drop_the_index() + RETURNS bool AS $$ +BEGIN + EXECUTE 'DROP INDEX IF EXISTS mvtest_drop_idx'; + RETURN true; +END; +$$ LANGUAGE plpgsql; +CREATE MATERIALIZED VIEW drop_idx_matview AS + SELECT 1 as i WHERE mvtest_drop_the_index(); +NOTICE: index "mvtest_drop_idx" does not exist, skipping +CREATE UNIQUE INDEX mvtest_drop_idx ON drop_idx_matview (i); +REFRESH MATERIALIZED VIEW CONCURRENTLY drop_idx_matview; +ERROR: could not find suitable unique index on materialized view +DROP MATERIALIZED VIEW drop_idx_matview; -- clean up -- make sure that create WITH NO DATA works via SPI BEGIN; CREATE FUNCTION mvtest_func() diff --git a/src/test/regress/expected/merge.out b/src/test/regress/expected/merge.out index 15c6632..edc0043 100644 --- a/src/test/regress/expected/merge.out +++ b/src/test/regress/expected/merge.out @@ -1662,6 +1662,10 @@ ALTER TABLE pa_target ATTACH PARTITION part4 DEFAULT; INSERT INTO pa_target SELECT id, id * 100, 'initial' FROM generate_series(1,14,2) AS id; -- try simple MERGE BEGIN; +DO $$ +DECLARE + result integer; +BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid @@ -1669,6 +1673,11 @@ MERGE INTO pa_target t UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; +NOTICE: ROW_COUNT = 14 SELECT * FROM pa_target ORDER BY tid; tid | balance | val -----+---------+-------------------------- @@ -1725,6 +1734,10 @@ SELECT * FROM pa_target ORDER BY tid; ROLLBACK; -- try updating the partition key column BEGIN; +DO $$ +DECLARE + result integer; +BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid @@ -1732,6 +1745,11 @@ MERGE INTO pa_target t UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; +NOTICE: ROW_COUNT = 14 SELECT * FROM pa_target ORDER BY tid; tid | balance | val -----+---------+-------------------------- @@ -1751,6 +1769,79 @@ SELECT * FROM pa_target ORDER BY tid; 14 | 140 | inserted by merge (14 rows) +ROLLBACK; +-- as above, but blocked by BEFORE DELETE ROW trigger +BEGIN; +CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS + $$ BEGIN RETURN NULL; END; $$; +CREATE TRIGGER del_trig BEFORE DELETE ON pa_target + FOR EACH ROW EXECUTE PROCEDURE trig_fn(); +DO $$ +DECLARE + result integer; +BEGIN +MERGE INTO pa_target t + USING pa_source s + ON t.tid = s.sid + WHEN MATCHED THEN + UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' + WHEN NOT MATCHED THEN + INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; +NOTICE: ROW_COUNT = 10 +SELECT * FROM pa_target ORDER BY tid; + tid | balance | val +-----+---------+-------------------------- + 1 | 100 | initial + 2 | 20 | inserted by merge + 3 | 300 | initial + 4 | 40 | inserted by merge + 6 | 550 | initial updated by merge + 6 | 60 | inserted by merge + 7 | 700 | initial + 8 | 80 | inserted by merge + 9 | 900 | initial + 10 | 100 | inserted by merge + 12 | 1210 | initial updated by merge + 12 | 120 | inserted by merge + 14 | 1430 | initial updated by merge + 14 | 140 | inserted by merge +(14 rows) + +ROLLBACK; +-- as above, but blocked by BEFORE INSERT ROW trigger +BEGIN; +CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS + $$ BEGIN RETURN NULL; END; $$; +CREATE TRIGGER ins_trig BEFORE INSERT ON pa_target + FOR EACH ROW EXECUTE PROCEDURE trig_fn(); +DO $$ +DECLARE + result integer; +BEGIN +MERGE INTO pa_target t + USING pa_source s + ON t.tid = s.sid + WHEN MATCHED THEN + UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' + WHEN NOT MATCHED THEN + INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; +NOTICE: ROW_COUNT = 3 +SELECT * FROM pa_target ORDER BY tid; + tid | balance | val +-----+---------+-------------------------- + 6 | 550 | initial updated by merge + 12 | 1210 | initial updated by merge + 14 | 1430 | initial updated by merge +(3 rows) + ROLLBACK; -- test RLS enforcement BEGIN; diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out index f27217c..ba5875d 100644 --- a/src/test/regress/expected/opr_sanity.out +++ b/src/test/regress/expected/opr_sanity.out @@ -1887,7 +1887,7 @@ WHERE p1.oid = a1.amhandler AND a1.amtype = 'i' AND -- Check for table amhandler functions with the wrong signature SELECT a1.oid, a1.amname, p1.oid, p1.proname FROM pg_am AS a1, pg_proc AS p1 -WHERE p1.oid = a1.amhandler AND a1.amtype = 's' AND +WHERE p1.oid = a1.amhandler AND a1.amtype = 't' AND (p1.prorettype != 'table_am_handler'::regtype OR p1.proretset OR p1.pronargs != 1 diff --git a/src/test/regress/expected/partition_join.out b/src/test/regress/expected/partition_join.out index bb5b7c4..8b179fa 100644 --- a/src/test/regress/expected/partition_join.out +++ b/src/test/regress/expected/partition_join.out @@ -459,6 +459,99 @@ SELECT t1.a, ss.t2a, ss.t2c FROM prt1 t1 LEFT JOIN LATERAL 550 | | (12 rows) +SET max_parallel_workers_per_gather = 0; +-- If there are lateral references to the other relation in sample scan, +-- we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT * FROM prt1 t1 JOIN LATERAL + (SELECT * FROM prt1 t2 TABLESAMPLE SYSTEM (t1.a) REPEATABLE(t1.b)) s + ON t1.a = s.a; + QUERY PLAN +--------------------------------------------------------- + Nested Loop + -> Append + -> Seq Scan on prt1_p1 t1_1 + -> Seq Scan on prt1_p2 t1_2 + -> Seq Scan on prt1_p3 t1_3 + -> Append + -> Sample Scan on prt1_p1 t2_1 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: (t1.a = a) + -> Sample Scan on prt1_p2 t2_2 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: (t1.a = a) + -> Sample Scan on prt1_p3 t2_3 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: (t1.a = a) +(15 rows) + +-- If there are lateral references to the other relation in scan's restriction +-- clauses, we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.a; + QUERY PLAN +--------------------------------------------------------------- + Aggregate + -> Nested Loop + -> Append + -> Seq Scan on prt1_p1 t1_1 + -> Seq Scan on prt1_p2 t1_2 + -> Seq Scan on prt1_p3 t1_3 + -> Append + -> Index Scan using iprt2_p1_b on prt2_p1 t2_1 + Index Cond: (b = t1.a) + Filter: (t1.b = a) + -> Index Scan using iprt2_p2_b on prt2_p2 t2_2 + Index Cond: (b = t1.a) + Filter: (t1.b = a) + -> Index Scan using iprt2_p3_b on prt2_p3 t2_3 + Index Cond: (b = t1.a) + Filter: (t1.b = a) +(16 rows) + +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.a; + count +------- + 100 +(1 row) + +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.b; + QUERY PLAN +-------------------------------------------------------------------- + Aggregate + -> Nested Loop + -> Append + -> Seq Scan on prt1_p1 t1_1 + -> Seq Scan on prt1_p2 t1_2 + -> Seq Scan on prt1_p3 t1_3 + -> Append + -> Index Only Scan using iprt2_p1_b on prt2_p1 t2_1 + Index Cond: (b = t1.a) + Filter: (b = t1.b) + -> Index Only Scan using iprt2_p2_b on prt2_p2 t2_2 + Index Cond: (b = t1.a) + Filter: (b = t1.b) + -> Index Only Scan using iprt2_p3_b on prt2_p3 t2_3 + Index Cond: (b = t1.a) + Filter: (b = t1.b) +(16 rows) + +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.b; + count +------- + 5 +(1 row) + +RESET max_parallel_workers_per_gather; -- bug with inadequate sort key representation SET enable_partitionwise_aggregate TO true; SET enable_hashjoin TO false; @@ -1897,6 +1990,80 @@ SELECT * FROM prt1_l t1 LEFT JOIN LATERAL 550 | 0 | 0002 | | | | | (12 rows) +SET max_parallel_workers_per_gather = 0; +-- If there are lateral references to the other relation in sample scan, +-- we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT * FROM prt1_l t1 JOIN LATERAL + (SELECT * FROM prt1_l t2 TABLESAMPLE SYSTEM (t1.a) REPEATABLE(t1.b)) s + ON t1.a = s.a AND t1.b = s.b AND t1.c = s.c; + QUERY PLAN +---------------------------------------------------------------------------------- + Nested Loop + -> Append + -> Seq Scan on prt1_l_p1 t1_1 + -> Seq Scan on prt1_l_p2_p1 t1_2 + -> Seq Scan on prt1_l_p2_p2 t1_3 + -> Seq Scan on prt1_l_p3_p1 t1_4 + -> Seq Scan on prt1_l_p3_p2 t1_5 + -> Append + -> Sample Scan on prt1_l_p1 t2_1 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: ((t1.a = a) AND (t1.b = b) AND ((t1.c)::text = (c)::text)) + -> Sample Scan on prt1_l_p2_p1 t2_2 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: ((t1.a = a) AND (t1.b = b) AND ((t1.c)::text = (c)::text)) + -> Sample Scan on prt1_l_p2_p2 t2_3 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: ((t1.a = a) AND (t1.b = b) AND ((t1.c)::text = (c)::text)) + -> Sample Scan on prt1_l_p3_p1 t2_4 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: ((t1.a = a) AND (t1.b = b) AND ((t1.c)::text = (c)::text)) + -> Sample Scan on prt1_l_p3_p2 t2_5 + Sampling: system (t1.a) REPEATABLE (t1.b) + Filter: ((t1.a = a) AND (t1.b = b) AND ((t1.c)::text = (c)::text)) +(23 rows) + +-- If there are lateral references to the other relation in scan's restriction +-- clauses, we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT COUNT(*) FROM prt1_l t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2_l t2) s + ON t1.a = s.b AND t1.b = s.a AND t1.c = s.c + WHERE s.t1b = s.a; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Aggregate + -> Nested Loop + -> Append + -> Seq Scan on prt1_l_p1 t1_1 + -> Seq Scan on prt1_l_p2_p1 t1_2 + -> Seq Scan on prt1_l_p2_p2 t1_3 + -> Seq Scan on prt1_l_p3_p1 t1_4 + -> Seq Scan on prt1_l_p3_p2 t1_5 + -> Append + -> Seq Scan on prt2_l_p1 t2_1 + Filter: ((a = t1.b) AND (t1.a = b) AND (t1.b = a) AND ((t1.c)::text = (c)::text)) + -> Seq Scan on prt2_l_p2_p1 t2_2 + Filter: ((a = t1.b) AND (t1.a = b) AND (t1.b = a) AND ((t1.c)::text = (c)::text)) + -> Seq Scan on prt2_l_p2_p2 t2_3 + Filter: ((a = t1.b) AND (t1.a = b) AND (t1.b = a) AND ((t1.c)::text = (c)::text)) + -> Seq Scan on prt2_l_p3_p1 t2_4 + Filter: ((a = t1.b) AND (t1.a = b) AND (t1.b = a) AND ((t1.c)::text = (c)::text)) + -> Seq Scan on prt2_l_p3_p2 t2_5 + Filter: ((a = t1.b) AND (t1.a = b) AND (t1.b = a) AND ((t1.c)::text = (c)::text)) +(19 rows) + +SELECT COUNT(*) FROM prt1_l t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2_l t2) s + ON t1.a = s.b AND t1.b = s.a AND t1.c = s.c + WHERE s.t1b = s.a; + count +------- + 100 +(1 row) + +RESET max_parallel_workers_per_gather; -- join with one side empty EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_l WHERE a = 1 AND a = 2) t1 RIGHT JOIN prt2_l t2 ON t1.a = t2.b AND t1.b = t2.a AND t1.c = t2.c; diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out index cc15f5c..723e8b7 100644 --- a/src/test/regress/expected/triggers.out +++ b/src/test/regress/expected/triggers.out @@ -2309,6 +2309,51 @@ NOTICE: trigger zzz on parted_trig_1_1 AFTER INSERT for ROW NOTICE: trigger bbb on parted_trig_2 AFTER INSERT for ROW NOTICE: trigger zzz on parted_trig_2 AFTER INSERT for ROW drop table parted_trig; +-- Verify that the correct triggers fire for cross-partition updates +create table parted_trig (a int) partition by list (a); +create table parted_trig1 partition of parted_trig for values in (1); +create table parted_trig2 partition of parted_trig for values in (2); +insert into parted_trig values (1); +create or replace function trigger_notice() returns trigger as $$ + begin + raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; + if TG_LEVEL = 'ROW' then + if TG_OP = 'DELETE' then + return OLD; + else + return NEW; + end if; + end if; + return null; + end; + $$ language plpgsql; +create trigger parted_trig_before_stmt before insert or update or delete on parted_trig + for each statement execute procedure trigger_notice(); +create trigger parted_trig_before_row before insert or update or delete on parted_trig + for each row execute procedure trigger_notice(); +create trigger parted_trig_after_row after insert or update or delete on parted_trig + for each row execute procedure trigger_notice(); +create trigger parted_trig_after_stmt after insert or update or delete on parted_trig + for each statement execute procedure trigger_notice(); +update parted_trig set a = 2 where a = 1; +NOTICE: trigger parted_trig_before_stmt on parted_trig BEFORE UPDATE for STATEMENT +NOTICE: trigger parted_trig_before_row on parted_trig1 BEFORE UPDATE for ROW +NOTICE: trigger parted_trig_before_row on parted_trig1 BEFORE DELETE for ROW +NOTICE: trigger parted_trig_before_row on parted_trig2 BEFORE INSERT for ROW +NOTICE: trigger parted_trig_after_row on parted_trig1 AFTER DELETE for ROW +NOTICE: trigger parted_trig_after_row on parted_trig2 AFTER INSERT for ROW +NOTICE: trigger parted_trig_after_stmt on parted_trig AFTER UPDATE for STATEMENT +-- update action in merge should behave the same +merge into parted_trig using (select 1) as ss on true + when matched and a = 2 then update set a = 1; +NOTICE: trigger parted_trig_before_stmt on parted_trig BEFORE UPDATE for STATEMENT +NOTICE: trigger parted_trig_before_row on parted_trig2 BEFORE UPDATE for ROW +NOTICE: trigger parted_trig_before_row on parted_trig2 BEFORE DELETE for ROW +NOTICE: trigger parted_trig_before_row on parted_trig1 BEFORE INSERT for ROW +NOTICE: trigger parted_trig_after_row on parted_trig2 AFTER DELETE for ROW +NOTICE: trigger parted_trig_after_row on parted_trig1 AFTER INSERT for ROW +NOTICE: trigger parted_trig_after_stmt on parted_trig AFTER UPDATE for STATEMENT +drop table parted_trig; -- Verify propagation of trigger arguments to partitions create table parted_trig (a int) partition by list (a); create table parted_trig1 partition of parted_trig for values in (1); diff --git a/src/test/regress/expected/tsdicts.out b/src/test/regress/expected/tsdicts.out index c804293..4eff85d 100644 --- a/src/test/regress/expected/tsdicts.out +++ b/src/test/regress/expected/tsdicts.out @@ -687,3 +687,37 @@ CREATE TEXT SEARCH DICTIONARY tsdict_case "AffFile" = ispell_sample ); ERROR: unrecognized Ispell parameter: "DictFile" +-- Test grammar for configurations +CREATE TEXT SEARCH CONFIGURATION dummy_tst (COPY=english); +-- Overriden mapping change with duplicated tokens. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + ALTER MAPPING FOR word, word WITH ispell; +-- Not a token supported by the configuration's parser, fails. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING FOR not_a_token, not_a_token; +ERROR: token type "not_a_token" does not exist +-- Not a token supported by the configuration's parser, fails even +-- with IF EXISTS. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING IF EXISTS FOR not_a_token, not_a_token; +ERROR: token type "not_a_token" does not exist +-- Token supported by the configuration's parser, succeeds. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING FOR word, word; +-- No mapping for token supported by the configuration's parser, fails. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING FOR word; +ERROR: mapping for token type "word" does not exist +-- Token supported by the configuration's parser, cannot be found, +-- succeeds with IF EXISTS. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING IF EXISTS FOR word, word; +NOTICE: mapping for token type "word" does not exist, skipping +-- Re-add mapping, with duplicated tokens supported by the parser. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + ADD MAPPING FOR word, word WITH ispell; +-- Not a token supported by the configuration's parser, fails. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + ADD MAPPING FOR not_a_token WITH ispell; +ERROR: token type "not_a_token" does not exist +DROP TEXT SEARCH CONFIGURATION dummy_tst; diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index d7d5f4a..e275871 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -1126,7 +1126,7 @@ spawn_process(const char *cmdline) comspec = "CMD"; memset(&pi, 0, sizeof(pi)); - cmdline2 = psprintf("\"%s\" /c \"%s\"", comspec, cmdline); + cmdline2 = psprintf("\"%s\" /d /c \"%s\"", comspec, cmdline); if ((restrictedToken = CreateRestrictedProcess(cmdline2, &pi)) == 0) diff --git a/src/test/regress/sql/fast_default.sql b/src/test/regress/sql/fast_default.sql index 16a3b7c..dc9df78 100644 --- a/src/test/regress/sql/fast_default.sql +++ b/src/test/regress/sql/fast_default.sql @@ -256,7 +256,18 @@ ALTER TABLE T ADD COLUMN c2 TIMESTAMP DEFAULT clock_timestamp(); SELECT comp(); +-- check that we notice insertion of a volatile default argument +CREATE FUNCTION foolme(timestamptz DEFAULT clock_timestamp()) + RETURNS timestamptz + IMMUTABLE AS 'select $1' LANGUAGE sql; +ALTER TABLE T ADD COLUMN c3 timestamptz DEFAULT foolme(); + +SELECT attname, atthasmissing, attmissingval FROM pg_attribute + WHERE attrelid = 't'::regclass AND attnum > 0 + ORDER BY attnum; + DROP TABLE T; +DROP FUNCTION foolme(timestamptz); -- Simple querie CREATE TABLE T (pk INT NOT NULL PRIMARY KEY); diff --git a/src/test/regress/sql/generated.sql b/src/test/regress/sql/generated.sql index 8d25161..53bccf9 100644 --- a/src/test/regress/sql/generated.sql +++ b/src/test/regress/sql/generated.sql @@ -26,6 +26,9 @@ CREATE TABLE gtest_err_3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) S -- generation expression must be immutable CREATE TABLE gtest_err_4 (a int PRIMARY KEY, b double precision GENERATED ALWAYS AS (random()) STORED); +-- ... but be sure that the immutability test is accurate +CREATE TABLE gtest2 (a int, b text GENERATED ALWAYS AS (a || ' sec') STORED); +DROP TABLE gtest2; -- cannot have default/identity and generated CREATE TABLE gtest_err_5a (a int PRIMARY KEY, b int DEFAULT 5 GENERATED ALWAYS AS (a * 2) STORED); diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql index 2724a2b..4065348 100644 --- a/src/test/regress/sql/horology.sql +++ b/src/test/regress/sql/horology.sql @@ -86,6 +86,7 @@ SELECT timestamp without time zone '1999-12-01' + interval '1 month - 1 second' SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '106000000 days' AS "Feb 23, 285506"; SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '107000000 days' AS "Jan 20, 288244"; SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '109203489 days' AS "Dec 31, 294276"; +SELECT timestamp without time zone '2000-01-01' - interval '2483590 days' AS "out of range"; SELECT timestamp without time zone '12/31/294276' - timestamp without time zone '12/23/1999' AS "106751991 Days"; -- Shorthand values @@ -117,6 +118,7 @@ SELECT timestamp with time zone '1996-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp with time zone '1999-03-01' - interval '1 second' AS "Feb 28"; SELECT timestamp with time zone '2000-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp with time zone '1999-12-01' + interval '1 month - 1 second' AS "Dec 31"; +SELECT timestamp with time zone '2000-01-01' - interval '2483590 days' AS "out of range"; SELECT (timestamp with time zone 'today' = (timestamp with time zone 'yesterday' + interval '1 day')) as "True"; SELECT (timestamp with time zone 'today' = (timestamp with time zone 'tomorrow' - interval '1 day')) as "True"; diff --git a/src/test/regress/sql/indexing.sql b/src/test/regress/sql/indexing.sql index 6f60d1d..a48a317 100644 --- a/src/test/regress/sql/indexing.sql +++ b/src/test/regress/sql/indexing.sql @@ -668,6 +668,26 @@ insert into idxpart values (857142, 'six'); select tableoid::regclass, * from idxpart order by a; drop table idxpart; +-- Test some other non-btree index types +create table idxpart (a int, b text, c int[]) partition by range (a); +create table idxpart1 partition of idxpart for values from (0) to (100000); +set enable_seqscan to off; + +create index idxpart_brin on idxpart using brin(b); +explain (costs off) select * from idxpart where b = 'abcd'; +drop index idxpart_brin; + +create index idxpart_spgist on idxpart using spgist(b); +explain (costs off) select * from idxpart where b = 'abcd'; +drop index idxpart_spgist; + +create index idxpart_gin on idxpart using gin(c); +explain (costs off) select * from idxpart where c @> array[42]; +drop index idxpart_gin; + +reset enable_seqscan; +drop table idxpart; + -- intentionally leave some objects around create table idxpart (a int) partition by range (a); create table idxpart1 partition of idxpart for values from (0) to (100); diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql index 76ea197..bd90834 100644 --- a/src/test/regress/sql/inherit.sql +++ b/src/test/regress/sql/inherit.sql @@ -372,6 +372,15 @@ ALTER TABLE inhts RENAME d TO dd; DROP TABLE inhts; +-- Test for adding a column to a parent table with complex inheritance +CREATE TABLE inhta (); +CREATE TABLE inhtb () INHERITS (inhta); +CREATE TABLE inhtc () INHERITS (inhtb); +CREATE TABLE inhtd () INHERITS (inhta, inhtb, inhtc); +ALTER TABLE inhta ADD COLUMN i int; +\d+ inhta +DROP TABLE inhta, inhtb, inhtc, inhtd; + -- Test for renaming in diamond inheritance CREATE TABLE inht2 (x int) INHERITS (inht1); CREATE TABLE inht3 (y int) INHERITS (inht1); diff --git a/src/test/regress/sql/int8.sql b/src/test/regress/sql/int8.sql index 38b7719..8a3d537 100644 --- a/src/test/regress/sql/int8.sql +++ b/src/test/regress/sql/int8.sql @@ -126,6 +126,7 @@ select '9223372036854775808'::int8; select -('-9223372036854775807'::int8); select -('-9223372036854775808'::int8); +select 0::int8 - '-9223372036854775808'::int8; select '9223372036854775800'::int8 + '9223372036854775800'::int8; select '-9223372036854775800'::int8 + '-9223372036854775800'::int8; diff --git a/src/test/regress/sql/interval.sql b/src/test/regress/sql/interval.sql index 5b4944c..2a3dd0c 100644 --- a/src/test/regress/sql/interval.sql +++ b/src/test/regress/sql/interval.sql @@ -129,6 +129,14 @@ SET IntervalStyle to postgres_verbose; SELECT * FROM INTERVAL_TBL; +-- multiplication and division overflow test cases +SELECT '3000000 months'::interval * 1000; +SELECT '3000000 months'::interval / 0.001; +SELECT '3000000 days'::interval * 1000; +SELECT '3000000 days'::interval / 0.001; +SELECT '1 month 2146410 days'::interval * 1000.5002; +SELECT '4611686018427387904 usec'::interval / 0.1; + -- test avg(interval), which is somewhat fragile since people have been -- known to change the allowed input syntax for type interval without -- updating pg_aggregate.agginitval diff --git a/src/test/regress/sql/join.sql b/src/test/regress/sql/join.sql index 5fdacce..1113e98 100644 --- a/src/test/regress/sql/join.sql +++ b/src/test/regress/sql/join.sql @@ -1978,6 +1978,18 @@ select * from ) on c.q2 = ss2.q1, lateral (select ss2.y offset 0) ss3; +-- another case requiring nested PlaceHolderVars +explain (verbose, costs off) +select * from + (select 0 as val0) as ss0 + left join (select 1 as val) as ss1 on true + left join lateral (select ss1.val as val_filtered where false) as ss2 on true; + +select * from + (select 0 as val0) as ss0 + left join (select 1 as val) as ss1 on true + left join lateral (select ss1.val as val_filtered where false) as ss2 on true; + -- case that breaks the old ph_may_need optimization explain (verbose, costs off) select c.*,a.*,ss1.q1,ss2.q1,ss3.* from diff --git a/src/test/regress/sql/matview.sql b/src/test/regress/sql/matview.sql index 68b9ccf..543e0a6 100644 --- a/src/test/regress/sql/matview.sql +++ b/src/test/regress/sql/matview.sql @@ -231,6 +231,23 @@ REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_mv_foo; DROP OWNED BY regress_user_mvtest CASCADE; DROP ROLE regress_user_mvtest; +-- Concurrent refresh requires a unique index on the materialized +-- view. Test what happens if it's dropped during the refresh. +CREATE OR REPLACE FUNCTION mvtest_drop_the_index() + RETURNS bool AS $$ +BEGIN + EXECUTE 'DROP INDEX IF EXISTS mvtest_drop_idx'; + RETURN true; +END; +$$ LANGUAGE plpgsql; + +CREATE MATERIALIZED VIEW drop_idx_matview AS + SELECT 1 as i WHERE mvtest_drop_the_index(); + +CREATE UNIQUE INDEX mvtest_drop_idx ON drop_idx_matview (i); +REFRESH MATERIALIZED VIEW CONCURRENTLY drop_idx_matview; +DROP MATERIALIZED VIEW drop_idx_matview; -- clean up + -- make sure that create WITH NO DATA works via SPI BEGIN; CREATE FUNCTION mvtest_func() diff --git a/src/test/regress/sql/merge.sql b/src/test/regress/sql/merge.sql index 4cf6db9..66cb75a 100644 --- a/src/test/regress/sql/merge.sql +++ b/src/test/regress/sql/merge.sql @@ -1060,6 +1060,10 @@ INSERT INTO pa_target SELECT id, id * 100, 'initial' FROM generate_series(1,14,2 -- try simple MERGE BEGIN; +DO $$ +DECLARE + result integer; +BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid @@ -1067,6 +1071,10 @@ MERGE INTO pa_target t UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; SELECT * FROM pa_target ORDER BY tid; ROLLBACK; @@ -1085,6 +1093,34 @@ ROLLBACK; -- try updating the partition key column BEGIN; +DO $$ +DECLARE + result integer; +BEGIN +MERGE INTO pa_target t + USING pa_source s + ON t.tid = s.sid + WHEN MATCHED THEN + UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' + WHEN NOT MATCHED THEN + INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; +SELECT * FROM pa_target ORDER BY tid; +ROLLBACK; + +-- as above, but blocked by BEFORE DELETE ROW trigger +BEGIN; +CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS + $$ BEGIN RETURN NULL; END; $$; +CREATE TRIGGER del_trig BEFORE DELETE ON pa_target + FOR EACH ROW EXECUTE PROCEDURE trig_fn(); +DO $$ +DECLARE + result integer; +BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid @@ -1092,6 +1128,34 @@ MERGE INTO pa_target t UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; +SELECT * FROM pa_target ORDER BY tid; +ROLLBACK; + +-- as above, but blocked by BEFORE INSERT ROW trigger +BEGIN; +CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS + $$ BEGIN RETURN NULL; END; $$; +CREATE TRIGGER ins_trig BEFORE INSERT ON pa_target + FOR EACH ROW EXECUTE PROCEDURE trig_fn(); +DO $$ +DECLARE + result integer; +BEGIN +MERGE INTO pa_target t + USING pa_source s + ON t.tid = s.sid + WHEN MATCHED THEN + UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' + WHEN NOT MATCHED THEN + INSERT VALUES (sid, delta, 'inserted by merge'); +GET DIAGNOSTICS result := ROW_COUNT; +RAISE NOTICE 'ROW_COUNT = %', result; +END; +$$; SELECT * FROM pa_target ORDER BY tid; ROLLBACK; diff --git a/src/test/regress/sql/opr_sanity.sql b/src/test/regress/sql/opr_sanity.sql index 2b29285..0f039f2 100644 --- a/src/test/regress/sql/opr_sanity.sql +++ b/src/test/regress/sql/opr_sanity.sql @@ -1195,7 +1195,7 @@ WHERE p1.oid = a1.amhandler AND a1.amtype = 'i' AND SELECT a1.oid, a1.amname, p1.oid, p1.proname FROM pg_am AS a1, pg_proc AS p1 -WHERE p1.oid = a1.amhandler AND a1.amtype = 's' AND +WHERE p1.oid = a1.amhandler AND a1.amtype = 't' AND (p1.prorettype != 'table_am_handler'::regtype OR p1.proretset OR p1.pronargs != 1 diff --git a/src/test/regress/sql/partition_join.sql b/src/test/regress/sql/partition_join.sql index 67f5063..04d7adb 100644 --- a/src/test/regress/sql/partition_join.sql +++ b/src/test/regress/sql/partition_join.sql @@ -91,6 +91,33 @@ SELECT t1.a, ss.t2a, ss.t2c FROM prt1 t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t3.a AS t3a, t2.b t2b, t2.c t2c, least(t1.a,t2.a,t3.a) FROM prt1 t2 JOIN prt2 t3 ON (t2.a = t3.b)) ss ON t1.c = ss.t2c WHERE (t1.b + coalesce(ss.t2b, 0)) = 0 ORDER BY t1.a; +SET max_parallel_workers_per_gather = 0; +-- If there are lateral references to the other relation in sample scan, +-- we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT * FROM prt1 t1 JOIN LATERAL + (SELECT * FROM prt1 t2 TABLESAMPLE SYSTEM (t1.a) REPEATABLE(t1.b)) s + ON t1.a = s.a; + +-- If there are lateral references to the other relation in scan's restriction +-- clauses, we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.a; +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.a; + +EXPLAIN (COSTS OFF) +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.b; +SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s + ON t1.a = s.b WHERE s.t1b = s.b; +RESET max_parallel_workers_per_gather; + -- bug with inadequate sort key representation SET enable_partitionwise_aggregate TO true; SET enable_hashjoin TO false; @@ -378,6 +405,27 @@ SELECT * FROM prt1_l t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t2.c AS t2c, t2.b AS t2b, t3.b AS t3b, least(t1.a,t2.a,t3.b) FROM prt1_l t2 JOIN prt2_l t3 ON (t2.a = t3.b AND t2.c = t3.c)) ss ON t1.a = ss.t2a AND t1.c = ss.t2c WHERE t1.b = 0 ORDER BY t1.a; +SET max_parallel_workers_per_gather = 0; +-- If there are lateral references to the other relation in sample scan, +-- we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT * FROM prt1_l t1 JOIN LATERAL + (SELECT * FROM prt1_l t2 TABLESAMPLE SYSTEM (t1.a) REPEATABLE(t1.b)) s + ON t1.a = s.a AND t1.b = s.b AND t1.c = s.c; + +-- If there are lateral references to the other relation in scan's restriction +-- clauses, we cannot generate a partitionwise join. +EXPLAIN (COSTS OFF) +SELECT COUNT(*) FROM prt1_l t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2_l t2) s + ON t1.a = s.b AND t1.b = s.a AND t1.c = s.c + WHERE s.t1b = s.a; +SELECT COUNT(*) FROM prt1_l t1 LEFT JOIN LATERAL + (SELECT t1.b AS t1b, t2.* FROM prt2_l t2) s + ON t1.a = s.b AND t1.b = s.a AND t1.c = s.c + WHERE s.t1b = s.a; +RESET max_parallel_workers_per_gather; + -- join with one side empty EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_l WHERE a = 1 AND a = 2) t1 RIGHT JOIN prt2_l t2 ON t1.a = t2.b AND t1.b = t2.a AND t1.c = t2.c; diff --git a/src/test/regress/sql/triggers.sql b/src/test/regress/sql/triggers.sql index d29e98d..46795a9 100644 --- a/src/test/regress/sql/triggers.sql +++ b/src/test/regress/sql/triggers.sql @@ -1583,6 +1583,42 @@ create trigger qqq after insert on parted_trig_1_1 for each row execute procedur insert into parted_trig values (50), (1500); drop table parted_trig; +-- Verify that the correct triggers fire for cross-partition updates +create table parted_trig (a int) partition by list (a); +create table parted_trig1 partition of parted_trig for values in (1); +create table parted_trig2 partition of parted_trig for values in (2); +insert into parted_trig values (1); + +create or replace function trigger_notice() returns trigger as $$ + begin + raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; + if TG_LEVEL = 'ROW' then + if TG_OP = 'DELETE' then + return OLD; + else + return NEW; + end if; + end if; + return null; + end; + $$ language plpgsql; +create trigger parted_trig_before_stmt before insert or update or delete on parted_trig + for each statement execute procedure trigger_notice(); +create trigger parted_trig_before_row before insert or update or delete on parted_trig + for each row execute procedure trigger_notice(); +create trigger parted_trig_after_row after insert or update or delete on parted_trig + for each row execute procedure trigger_notice(); +create trigger parted_trig_after_stmt after insert or update or delete on parted_trig + for each statement execute procedure trigger_notice(); + +update parted_trig set a = 2 where a = 1; + +-- update action in merge should behave the same +merge into parted_trig using (select 1) as ss on true + when matched and a = 2 then update set a = 1; + +drop table parted_trig; + -- Verify propagation of trigger arguments to partitions create table parted_trig (a int) partition by list (a); create table parted_trig1 partition of parted_trig for values in (1); diff --git a/src/test/regress/sql/tsdicts.sql b/src/test/regress/sql/tsdicts.sql index ddc6c7f..6a2b003 100644 --- a/src/test/regress/sql/tsdicts.sql +++ b/src/test/regress/sql/tsdicts.sql @@ -251,3 +251,33 @@ CREATE TEXT SEARCH DICTIONARY tsdict_case "DictFile" = ispell_sample, "AffFile" = ispell_sample ); + +-- Test grammar for configurations +CREATE TEXT SEARCH CONFIGURATION dummy_tst (COPY=english); +-- Overriden mapping change with duplicated tokens. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + ALTER MAPPING FOR word, word WITH ispell; +-- Not a token supported by the configuration's parser, fails. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING FOR not_a_token, not_a_token; +-- Not a token supported by the configuration's parser, fails even +-- with IF EXISTS. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING IF EXISTS FOR not_a_token, not_a_token; +-- Token supported by the configuration's parser, succeeds. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING FOR word, word; +-- No mapping for token supported by the configuration's parser, fails. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING FOR word; +-- Token supported by the configuration's parser, cannot be found, +-- succeeds with IF EXISTS. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + DROP MAPPING IF EXISTS FOR word, word; +-- Re-add mapping, with duplicated tokens supported by the parser. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + ADD MAPPING FOR word, word WITH ispell; +-- Not a token supported by the configuration's parser, fails. +ALTER TEXT SEARCH CONFIGURATION dummy_tst + ADD MAPPING FOR not_a_token WITH ispell; +DROP TEXT SEARCH CONFIGURATION dummy_tst; diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl index 707f400..c570b48 100644 --- a/src/test/ssl/t/001_ssltests.pl +++ b/src/test/ssl/t/001_ssltests.pl @@ -682,7 +682,7 @@ $node->connect_fails( "$common_connstr user=ssltestuser sslcert=ssl/client-revoked.crt " . sslkey('client-revoked.key'), "certificate authorization fails with revoked client cert", - expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, + expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, # revoked certificates should not authenticate the user log_unlike => [qr/connection authenticated:/],); @@ -743,6 +743,6 @@ $node->connect_fails( "$common_connstr user=ssltestuser sslcert=ssl/client-revoked.crt " . sslkey('client-revoked.key'), "certificate authorization fails with revoked client cert with server-side CRL directory", - expected_stderr => qr/SSL error: sslv3 alert certificate revoked/); + expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|); done_testing(); diff --git a/src/test/subscription/t/001_rep_changes.pl b/src/test/subscription/t/001_rep_changes.pl index 6ed9265..6e6ebd8 100644 --- a/src/test/subscription/t/001_rep_changes.pl +++ b/src/test/subscription/t/001_rep_changes.pl @@ -57,6 +57,11 @@ $node_publisher->safe_psql('postgres', "CREATE INDEX idx_no_replidentity_index ON tab_no_replidentity_index(c1)" ); +# Replicate the changes without columns +$node_publisher->safe_psql('postgres', "CREATE TABLE tab_no_col()"); +$node_publisher->safe_psql('postgres', + "INSERT INTO tab_no_col default VALUES"); + # Setup structure on subscriber $node_subscriber->safe_psql('postgres', "CREATE TABLE tab_notrep (a int)"); $node_subscriber->safe_psql('postgres', "CREATE TABLE tab_ins (a int)"); @@ -87,13 +92,16 @@ $node_subscriber->safe_psql('postgres', "CREATE INDEX idx_no_replidentity_index ON tab_no_replidentity_index(c1)" ); +# replication of the table without columns +$node_subscriber->safe_psql('postgres', "CREATE TABLE tab_no_col()"); + # Setup logical replication my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres'; $node_publisher->safe_psql('postgres', "CREATE PUBLICATION tap_pub"); $node_publisher->safe_psql('postgres', "CREATE PUBLICATION tap_pub_ins_only WITH (publish = insert)"); $node_publisher->safe_psql('postgres', - "ALTER PUBLICATION tap_pub ADD TABLE tab_rep, tab_full, tab_full2, tab_mixed, tab_include, tab_nothing, tab_full_pk, tab_no_replidentity_index" + "ALTER PUBLICATION tap_pub ADD TABLE tab_rep, tab_full, tab_full2, tab_mixed, tab_include, tab_nothing, tab_full_pk, tab_no_replidentity_index, tab_no_col" ); $node_publisher->safe_psql('postgres', "ALTER PUBLICATION tap_pub_ins_only ADD TABLE tab_ins"); @@ -141,6 +149,9 @@ $node_publisher->safe_psql('postgres', "UPDATE tab_include SET a = -a"); $node_publisher->safe_psql('postgres', "INSERT INTO tab_no_replidentity_index VALUES(1)"); +$node_publisher->safe_psql('postgres', + "INSERT INTO tab_no_col default VALUES"); + $node_publisher->wait_for_catchup('tap_sub'); $result = $node_subscriber->safe_psql('postgres', @@ -169,6 +180,10 @@ is( $node_subscriber->safe_psql( 1, "value replicated to subscriber without replica identity index"); +$result = + $node_subscriber->safe_psql('postgres', "SELECT count(*) FROM tab_no_col"); +is($result, qq(2), 'check replicated changes for table having no columns'); + # insert some duplicate rows $node_publisher->safe_psql('postgres', "INSERT INTO tab_full SELECT generate_series(1,10)"); diff --git a/src/test/subscription/t/100_bugs.pl b/src/test/subscription/t/100_bugs.pl index 61c9f53..28ca4af 100644 --- a/src/test/subscription/t/100_bugs.pl +++ b/src/test/subscription/t/100_bugs.pl @@ -365,4 +365,57 @@ is( $node_subscriber_d_cols->safe_psql( $node_publisher_d_cols->stop('fast'); $node_subscriber_d_cols->stop('fast'); +# The bug was that pgoutput was incorrectly replacing missing attributes in +# tuples with NULL. This could result in incorrect replication with +# `REPLICA IDENTITY FULL`. + +$node_publisher->rotate_logfile(); +$node_publisher->start(); + +$node_subscriber->rotate_logfile(); +$node_subscriber->start(); + +# Set up a table with schema `(a int, b bool)` where the `b` attribute is +# missing for one row due to the `ALTER TABLE ... ADD COLUMN ... DEFAULT` +# fast path. +$node_publisher->safe_psql( + 'postgres', qq( + CREATE TABLE tab_default (a int); + ALTER TABLE tab_default REPLICA IDENTITY FULL; + INSERT INTO tab_default VALUES (1); + ALTER TABLE tab_default ADD COLUMN b bool DEFAULT false NOT NULL; + INSERT INTO tab_default VALUES (2, true); + CREATE PUBLICATION pub1 FOR TABLE tab_default; +)); + +# Replicate to the subscriber. +$node_subscriber->safe_psql( + 'postgres', qq( + CREATE TABLE tab_default (a int, b bool); + CREATE SUBSCRIPTION sub1 CONNECTION '$publisher_connstr' PUBLICATION pub1; +)); + +$node_subscriber->wait_for_subscription_sync($node_publisher, 'sub1'); +my $result = $node_subscriber->safe_psql('postgres', + "SELECT a, b FROM tab_default"); +is($result, qq(1|f +2|t), 'check snapshot on subscriber'); + +# Update all rows in the table and ensure the rows with the missing `b` +# attribute replicate correctly. +$node_publisher->safe_psql('postgres', + "UPDATE tab_default SET a = a + 1"); +$node_publisher->wait_for_catchup('sub1'); + +# When the bug is present, the `1|f` row will not be updated to `2|f` because +# the publisher incorrectly fills in `NULL` for `b` and publishes an update +# for `1|NULL`, which doesn't exist in the subscriber. +$result = $node_subscriber->safe_psql('postgres', + "SELECT a, b FROM tab_default"); +is($result, qq(2|f +3|t), 'check replicated update on subscriber'); + +$node_publisher->stop('fast'); +$node_subscriber->stop('fast'); + done_testing(); diff --git a/src/timezone/data/tzdata.zi b/src/timezone/data/tzdata.zi index b522e39..be1c408 100644 --- a/src/timezone/data/tzdata.zi +++ b/src/timezone/data/tzdata.zi @@ -1,4 +1,4 @@ -# version 2023c +# version 2024a # 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 - @@ -22,27 +22,6 @@ R d 1978 o - Mar 24 1 1 S R d 1978 o - S 22 3 0 - R d 1980 o - Ap 25 0 1 S R d 1980 o - O 31 2 0 - -Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16 -0:9:21 - PMT 1911 Mar 11 -0 d WE%sT 1940 F 25 2 -1 d CE%sT 1946 O 7 -0 - WET 1956 Ja 29 -1 - CET 1963 Ap 14 -0 d WE%sT 1977 O 21 -1 d CE%sT 1979 O 26 -0 d WE%sT 1981 May -1 - CET -Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u --2 - -02 1942 S --2 1 -01 1945 O 15 --2 - -02 1975 N 25 2 --1 - -01 -Z Africa/Ndjamena 1:0:12 - LMT 1912 -1 - WAT 1979 O 14 -1 1 WAST 1980 Mar 8 -1 - WAT -Z Africa/Abidjan -0:16:8 - LMT 1912 -0 - GMT R K 1940 o - Jul 15 0 1 S R K 1940 o - O 1 0 0 - R K 1941 o - Ap 15 0 1 S @@ -77,21 +56,6 @@ R K 2014 o - Jul 31 24 1 S R K 2014 o - S lastTh 24 0 - R K 2023 ma - Ap lastF 0 1 S R K 2023 ma - O lastTh 24 0 - -Z Africa/Cairo 2:5:9 - LMT 1900 O -2 K EE%sT -Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u --1 - -01 1975 -0 - GMT -Z Africa/Nairobi 2:27:16 - LMT 1908 May -2:30 - +0230 1928 Jun 30 24 -3 - EAT 1930 Ja 4 24 -2:30 - +0230 1936 D 31 24 -2:45 - +0245 1942 Jul 31 24 -3 - EAT -Z Africa/Monrovia -0:43:8 - LMT 1882 --0:43:8 - MMT 1919 Mar --0:44:30 - MMT 1972 Ja 7 -0 - GMT R L 1951 o - O 14 2 1 S R L 1952 o - Ja 1 0 0 - R L 1953 o - O 9 2 1 S @@ -109,21 +73,10 @@ R L 1997 o - Ap 4 0 1 S R L 1997 o - O 4 0 0 - R L 2013 o - Mar lastF 1 1 S R L 2013 o - O lastF 2 0 - -Z Africa/Tripoli 0:52:44 - LMT 1920 -1 L CE%sT 1959 -2 - EET 1982 -1 L CE%sT 1990 May 4 -2 - EET 1996 S 30 -1 L CE%sT 1997 O 4 -2 - EET 2012 N 10 2 -1 L CE%sT 2013 O 25 2 -2 - EET R MU 1982 o - O 10 0 1 - R MU 1983 o - Mar 21 0 0 - R MU 2008 o - O lastSu 2 1 - R MU 2009 o - Mar lastSu 2 0 - -Z Indian/Mauritius 3:50 - LMT 1907 -4 MU +04/+05 R M 1939 o - S 12 0 1 - R M 1939 o - N 19 0 0 - R M 1940 o - F 25 0 1 - @@ -307,53 +260,15 @@ R M 2086 o - Ap 14 3 -1 - R M 2086 o - May 19 2 0 - R M 2087 o - Mar 30 3 -1 - R M 2087 o - May 11 2 0 - -Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 -0 M +00/+01 1984 Mar 16 -1 - +01 1986 -0 M +00/+01 2018 O 28 3 -1 M +01/+00 -Z Africa/El_Aaiun -0:52:48 - LMT 1934 --1 - -01 1976 Ap 14 -0 M +00/+01 2018 O 28 3 -1 M +01/+00 -Z Africa/Maputo 2:10:20 - LMT 1903 Mar -2 - CAT R NA 1994 o - Mar 21 0 -1 WAT R NA 1994 2017 - S Su>=1 2 0 CAT R NA 1995 2017 - Ap Su>=1 2 -1 WAT -Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 -1:30 - +0130 1903 Mar -2 - SAST 1942 S 20 2 -2 1 SAST 1943 Mar 21 2 -2 - SAST 1990 Mar 21 -2 NA %s -Z Africa/Lagos 0:13:35 - LMT 1905 Jul -0 - GMT 1908 Jul -0:13:35 - LMT 1914 -0:30 - +0030 1919 S -1 - WAT -Z Africa/Sao_Tome 0:26:56 - LMT 1884 --0:36:45 - LMT 1912 Ja 1 0u -0 - GMT 2018 Ja 1 1 -1 - WAT 2019 Ja 1 2 -0 - GMT R SA 1942 1943 - S Su>=15 2 1 - R SA 1943 1944 - Mar Su>=15 2 0 - -Z Africa/Johannesburg 1:52 - LMT 1892 F 8 -1:30 - SAST 1903 Mar -2 SA SAST R SD 1970 o - May 1 0 1 S R SD 1970 1985 - O 15 0 0 - R SD 1971 o - Ap 30 0 1 S R SD 1972 1985 - Ap lastSu 0 1 S -Z Africa/Khartoum 2:10:8 - LMT 1931 -2 SD CA%sT 2000 Ja 15 12 -3 - EAT 2017 N -2 - CAT -Z Africa/Juba 2:6:28 - LMT 1931 -2 SD CA%sT 2000 Ja 15 12 -3 - EAT 2021 F -2 - CAT R n 1939 o - Ap 15 23s 1 S R n 1939 o - N 18 23s 0 - R n 1940 o - F 25 23s 1 S @@ -379,80 +294,14 @@ R n 2005 o - May 1 0s 1 S R n 2005 o - S 30 1s 0 - R n 2006 2008 - Mar lastSu 2s 1 S R n 2006 2008 - O lastSu 2s 0 - -Z Africa/Tunis 0:40:44 - LMT 1881 May 12 -0:9:21 - PMT 1911 Mar 11 -1 n CE%sT -Z Antarctica/Casey 0 - -00 1969 -8 - +08 2009 O 18 2 -11 - +11 2010 Mar 5 2 -8 - +08 2011 O 28 2 -11 - +11 2012 F 21 17u -8 - +08 2016 O 22 -11 - +11 2018 Mar 11 4 -8 - +08 2018 O 7 4 -11 - +11 2019 Mar 17 3 -8 - +08 2019 O 4 3 -11 - +11 2020 Mar 8 3 -8 - +08 2020 O 4 0:1 -11 - +11 -Z Antarctica/Davis 0 - -00 1957 Ja 13 -7 - +07 1964 N -0 - -00 1969 F -7 - +07 2009 O 18 2 -5 - +05 2010 Mar 10 20u -7 - +07 2011 O 28 2 -5 - +05 2012 F 21 20u -7 - +07 -Z Antarctica/Mawson 0 - -00 1954 F 13 -6 - +06 2009 O 18 2 -5 - +05 R Tr 2005 ma - Mar lastSu 1u 2 +02 R Tr 2004 ma - O lastSu 1u 0 +00 -Z Antarctica/Troll 0 - -00 2005 F 12 -0 Tr %s -Z Antarctica/Rothera 0 - -00 1976 D --3 - -03 -Z Asia/Kabul 4:36:48 - LMT 1890 -4 - +04 1945 -4:30 - +0430 R AM 2011 o - Mar lastSu 2s 1 - R AM 2011 o - O lastSu 2s 0 - -Z Asia/Yerevan 2:58 - LMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1995 S 24 2s -4 - +04 1997 -4 R +04/+05 2011 -4 AM +04/+05 R AZ 1997 2015 - Mar lastSu 4 1 - R AZ 1997 2015 - O lastSu 5 0 - -Z Asia/Baku 3:19:24 - LMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1992 S lastSu 2s -4 - +04 1996 -4 E +04/+05 1997 -4 AZ +04/+05 R BD 2009 o - Jun 19 23 1 - R BD 2009 o - D 31 24 0 - -Z Asia/Dhaka 6:1:40 - LMT 1890 -5:53:20 - HMT 1941 O -6:30 - +0630 1942 May 15 -5:30 - +0530 1942 S -6:30 - +0630 1951 S 30 -6 - +06 2009 -6 BD +06/+07 -Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 -5:30 - +0530 1987 O -6 - +06 -Z Indian/Chagos 4:49:40 - LMT 1907 -5 - +05 1996 -6 - +06 -Z Asia/Yangon 6:24:47 - LMT 1880 -6:24:47 - RMT 1920 -6:30 - +0630 1942 May -9 - +09 1945 May 3 -6:30 - +0630 R Sh 1919 o - Ap 12 24 1 D R Sh 1919 o - S 30 24 0 S R Sh 1940 o - Jun 1 0 1 D @@ -470,11 +319,6 @@ R Sh 1948 1949 - S 30 24 0 S R CN 1986 o - May 4 2 1 D R CN 1986 1991 - S Su>=11 2 0 S R CN 1987 1991 - Ap Su>=11 2 1 D -Z Asia/Shanghai 8:5:43 - LMT 1901 -8 Sh C%sT 1949 May 28 -8 CN C%sT -Z Asia/Urumqi 5:50:20 - LMT 1928 -6 - +06 R HK 1946 o - Ap 21 0 1 S R HK 1946 o - D 1 3:30s 0 - R HK 1947 o - Ap 13 3:30s 1 S @@ -489,12 +333,6 @@ R HK 1965 1976 - O Su>=16 3:30 0 - R HK 1973 o - D 30 3:30 1 S R HK 1979 o - May 13 3:30 1 S R HK 1979 o - O 21 3:30 0 - -Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u -8 - HKT 1941 Jun 15 3 -8 1 HKST 1941 O 1 4 -8 0:30 HKWT 1941 D 25 -9 - JST 1945 N 18 2 -8 HK HK%sT R f 1946 o - May 15 0 1 D R f 1946 o - O 1 0 0 S R f 1947 o - Ap 15 0 1 D @@ -510,10 +348,6 @@ R f 1974 1975 - Ap 1 0 1 D R f 1974 1975 - O 1 0 0 S R f 1979 o - Jul 1 0 1 D R f 1979 o - O 1 0 0 S -Z Asia/Taipei 8:6 - LMT 1896 -8 - CST 1937 O -9 - JST 1945 S 21 1 -8 f C%sT R _ 1942 1943 - Ap 30 23 1 - R _ 1942 o - N 17 23 0 - R _ 1943 o - S 30 23 0 S @@ -541,10 +375,6 @@ R _ 1973 o - D 30 3:30 1 D R _ 1975 1976 - Ap Su>=16 3:30 1 D R _ 1979 o - May 13 3:30 1 D R _ 1979 o - O Su>=16 3:30 0 S -Z Asia/Macau 7:34:10 - LMT 1904 O 30 -8 - CST 1941 D 21 23 -9 _ +09/+10 1945 S 30 24 -8 _ C%sT R CY 1975 o - Ap 13 0 1 S R CY 1975 o - O 12 0 0 - R CY 1976 o - May 15 0 1 S @@ -554,65 +384,6 @@ R CY 1977 o - S 25 0 0 - R CY 1978 o - O 2 0 0 - R CY 1979 1997 - S lastSu 0 0 - R CY 1981 1998 - Mar lastSu 0 1 S -Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 -2 CY EE%sT 1998 S -2 E EE%sT -Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 -2 CY EE%sT 1998 S -2 E EE%sT 2016 S 8 -3 - +03 2017 O 29 1u -2 E EE%sT -Z Asia/Tbilisi 2:59:11 - LMT 1880 -2:59:11 - TBMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1992 -3 e +03/+04 1994 S lastSu -4 e +04/+05 1996 O lastSu -4 1 +05 1997 Mar lastSu -4 e +04/+05 2004 Jun 27 -3 R +03/+04 2005 Mar lastSu 2 -4 - +04 -Z Asia/Dili 8:22:20 - LMT 1912 -8 - +08 1942 F 21 23 -9 - +09 1976 May 3 -8 - +08 2000 S 17 -9 - +09 -Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 -5:53:20 - HMT 1870 -5:21:10 - MMT 1906 -5:30 - IST 1941 O -5:30 1 +0630 1942 May 15 -5:30 - IST 1942 S -5:30 1 +0630 1945 O 15 -5:30 - IST -Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 -7:7:12 - BMT 1923 D 31 16:40u -7:20 - +0720 1932 N -7:30 - +0730 1942 Mar 23 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -7 - WIB -Z Asia/Pontianak 7:17:20 - LMT 1908 May -7:17:20 - PMT 1932 N -7:30 - +0730 1942 Ja 29 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -8 - WITA 1988 -7 - WIB -Z Asia/Makassar 7:57:36 - LMT 1920 -7:57:36 - MMT 1932 N -8 - +08 1942 F 9 -9 - +09 1945 S 23 -8 - WITA -Z Asia/Jayapura 9:22:48 - LMT 1932 N -9 - +09 1944 S -9:30 - +0930 1964 -9 - WIT R i 1910 o - Ja 1 0 0 - R i 1977 o - Mar 21 23 1 - R i 1977 o - O 20 24 0 - @@ -653,11 +424,6 @@ R i 2020 o - Mar 20 24 1 - R i 2020 o - S 20 24 0 - R i 2021 2022 - Mar 21 24 1 - R i 2021 2022 - S 21 24 0 - -Z Asia/Tehran 3:25:44 - LMT 1916 -3:25:44 - TMT 1935 Jun 13 -3:30 i +0330/+0430 1977 O 20 24 -4 i +04/+05 1979 -3:30 i +0330/+0430 R IQ 1982 o - May 1 0 1 - R IQ 1982 1984 - O 1 0 0 - R IQ 1983 o - Mar 31 0 1 - @@ -666,10 +432,6 @@ R IQ 1985 1990 - S lastSu 1s 0 - R IQ 1986 1990 - Mar lastSu 1s 1 - R IQ 1991 2007 - Ap 1 3s 1 - R IQ 1991 2007 - O 1 3s 0 - -Z Asia/Baghdad 2:57:40 - LMT 1890 -2:57:36 - BMT 1918 -3 - +03 1982 May -3 IQ +03/+04 R Z 1940 o - May 31 24u 1 D R Z 1940 o - S 30 24u 0 S R Z 1940 o - N 16 24u 1 D @@ -755,15 +517,10 @@ R Z 2011 o - O 2 2 0 S R Z 2012 o - S 23 2 0 S R Z 2013 ma - Mar F>=23 2 1 D R Z 2013 ma - O lastSu 2 0 S -Z Asia/Jerusalem 2:20:54 - LMT 1880 -2:20:40 - JMT 1918 -2 Z I%sT R JP 1948 o - May Sa>=1 24 1 D R JP 1948 1951 - S Sa>=8 25 0 S R JP 1949 o - Ap Sa>=1 24 1 D R JP 1950 1951 - May Sa>=1 24 1 D -Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u -9 JP J%sT R J 1973 o - Jun 6 0 1 S R J 1973 1975 - O 1 0 0 - R J 1974 1977 - May 1 0 1 S @@ -796,83 +553,10 @@ R J 2013 o - D 20 0 0 - R J 2014 2021 - Mar lastTh 24 1 S R J 2014 2022 - O lastF 0s 0 - R J 2022 o - F lastTh 24 1 S -Z Asia/Amman 2:23:44 - LMT 1931 -2 J EE%sT 2022 O 28 0s -3 - +03 -Z Asia/Almaty 5:7:48 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 2004 O 31 2s -6 - +06 -Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1991 S 29 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 1992 Mar 29 2s -5 R +05/+06 2004 O 31 2s -6 - +06 2018 D 21 -5 - +05 -Z Asia/Qostanay 4:14:28 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2004 O 31 2s -6 - +06 -Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2004 O 31 2s -5 - +05 -Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1994 S 25 2s -4 R +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1999 Mar 28 2s -4 R +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Oral 3:25:24 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1989 Mar 26 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1992 Mar 29 2s -4 R +04/+05 2004 O 31 2s -5 - +05 R KG 1992 1996 - Ap Su>=7 0s 1 - R KG 1992 1996 - S lastSu 0 0 - R KG 1997 2005 - Mar lastSu 2:30 1 - R KG 1997 2004 - O lastSu 2:30 0 - -Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1991 Au 31 2 -5 KG +05/+06 2005 Au 12 -6 - +06 R KR 1948 o - Jun 1 0 1 D R KR 1948 o - S 12 24 0 S R KR 1949 o - Ap 3 0 1 D @@ -887,18 +571,6 @@ R KR 1957 1960 - May Su>=1 0 1 D R KR 1957 1960 - S Sa>=17 24 0 S R KR 1987 1988 - May Su>=8 2 1 D R KR 1987 1988 - O Su>=8 3 0 S -Z Asia/Seoul 8:27:52 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 S 8 -9 KR K%sT 1954 Mar 21 -8:30 KR K%sT 1961 Au 10 -9 KR K%sT -Z Asia/Pyongyang 8:23 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 Au 24 -9 - KST 2015 Au 15 -8:30 - KST 2018 May 4 23:30 -9 - KST R l 1920 o - Mar 28 0 1 S R l 1920 o - O 25 0 0 - R l 1921 o - Ap 3 0 1 S @@ -923,18 +595,8 @@ R l 1992 o - O 4 0 0 - R l 1993 ma - Mar lastSu 0 1 S R l 1993 1998 - S lastSu 0 0 - R l 1999 ma - O lastSu 0 0 - -Z Asia/Beirut 2:22 - LMT 1880 -2 l EE%sT R NB 1935 1941 - S 14 0 0:20 - R NB 1935 1941 - D 14 0 0 - -Z Asia/Kuching 7:21:20 - LMT 1926 Mar -7:30 - +0730 1933 -8 NB +08/+0820 1942 F 16 -9 - +09 1945 S 12 -8 - +08 -Z Indian/Maldives 4:54 - LMT 1880 -4:54 - MMT 1960 -5 - +05 R X 1983 1984 - Ap 1 0 1 - R X 1983 o - O 1 0 0 - R X 1985 1998 - Mar lastSu 0 1 - @@ -944,31 +606,11 @@ R X 2001 2006 - S lastSa 2 0 - R X 2002 2006 - Mar lastSa 2 1 - R X 2015 2016 - Mar lastSa 2 1 - R X 2015 2016 - S lastSa 0 0 - -Z Asia/Hovd 6:6:36 - LMT 1905 Au -6 - +06 1978 -7 X +07/+08 -Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au -7 - +07 1978 -8 X +08/+09 -Z Asia/Choibalsan 7:38 - LMT 1905 Au -7 - +07 1978 -8 - +08 1983 Ap -9 X +09/+10 2008 Mar 31 -8 X +08/+09 -Z Asia/Kathmandu 5:41:16 - LMT 1920 -5:30 - +0530 1986 -5:45 - +0545 R PK 2002 o - Ap Su>=2 0 1 S R PK 2002 o - O Su>=2 0 0 - R PK 2008 o - Jun 1 0 1 S R PK 2008 2009 - N 1 0 0 - R PK 2009 o - Ap 15 0 1 S -Z Asia/Karachi 4:28:12 - LMT 1907 -5:30 - +0530 1942 S -5:30 1 +0630 1945 O 15 -5:30 - +0530 1951 S 30 -5 - +05 1971 Mar 26 -5 PK PK%sT R P 1999 2005 - Ap F>=15 0 1 S R P 1999 2003 - O F>=15 0 0 - R P 2004 o - O 1 1 0 - @@ -1001,136 +643,90 @@ R P 2021 o - O 29 1 0 - R P 2022 o - Mar 27 0 1 S R P 2022 2035 - O Sa<=30 2 0 - R P 2023 o - Ap 29 2 1 S -R P 2024 o - Ap 13 2 1 S -R P 2025 o - Ap 5 2 1 S +R P 2024 o - Ap 20 2 1 S +R P 2025 o - Ap 12 2 1 S R P 2026 2054 - Mar Sa<=30 2 1 S R P 2036 o - O 18 2 0 - R P 2037 o - O 10 2 0 - R P 2038 o - S 25 2 0 - R P 2039 o - S 17 2 0 - -R P 2039 o - O 22 2 1 S -R P 2039 2067 - O Sa<=30 2 0 - R P 2040 o - S 1 2 0 - -R P 2040 o - O 13 2 1 S +R P 2040 o - O 20 2 1 S +R P 2040 2067 - O Sa<=30 2 0 - R P 2041 o - Au 24 2 0 - -R P 2041 o - S 28 2 1 S +R P 2041 o - O 5 2 1 S R P 2042 o - Au 16 2 0 - -R P 2042 o - S 20 2 1 S +R P 2042 o - S 27 2 1 S R P 2043 o - Au 1 2 0 - -R P 2043 o - S 12 2 1 S +R P 2043 o - S 19 2 1 S R P 2044 o - Jul 23 2 0 - -R P 2044 o - Au 27 2 1 S +R P 2044 o - S 3 2 1 S R P 2045 o - Jul 15 2 0 - -R P 2045 o - Au 19 2 1 S +R P 2045 o - Au 26 2 1 S R P 2046 o - Jun 30 2 0 - -R P 2046 o - Au 11 2 1 S +R P 2046 o - Au 18 2 1 S R P 2047 o - Jun 22 2 0 - -R P 2047 o - Jul 27 2 1 S +R P 2047 o - Au 3 2 1 S R P 2048 o - Jun 6 2 0 - -R P 2048 o - Jul 18 2 1 S +R P 2048 o - Jul 25 2 1 S R P 2049 o - May 29 2 0 - -R P 2049 o - Jul 3 2 1 S +R P 2049 o - Jul 10 2 1 S R P 2050 o - May 21 2 0 - -R P 2050 o - Jun 25 2 1 S +R P 2050 o - Jul 2 2 1 S R P 2051 o - May 6 2 0 - -R P 2051 o - Jun 17 2 1 S +R P 2051 o - Jun 24 2 1 S R P 2052 o - Ap 27 2 0 - -R P 2052 o - Jun 1 2 1 S +R P 2052 o - Jun 8 2 1 S R P 2053 o - Ap 12 2 0 - -R P 2053 o - May 24 2 1 S +R P 2053 o - May 31 2 1 S R P 2054 o - Ap 4 2 0 - -R P 2054 o - May 16 2 1 S -R P 2055 o - May 1 2 1 S -R P 2056 o - Ap 22 2 1 S -R P 2057 o - Ap 7 2 1 S -R P 2058 ma - Mar Sa<=30 2 1 S +R P 2054 o - May 23 2 1 S +R P 2055 o - May 8 2 1 S +R P 2056 o - Ap 29 2 1 S +R P 2057 o - Ap 14 2 1 S +R P 2058 o - Ap 6 2 1 S +R P 2059 ma - Mar Sa<=30 2 1 S R P 2068 o - O 20 2 0 - R P 2069 o - O 12 2 0 - R P 2070 o - O 4 2 0 - R P 2071 o - S 19 2 0 - R P 2072 o - S 10 2 0 - -R P 2072 o - O 15 2 1 S +R P 2072 o - O 22 2 1 S +R P 2072 ma - O Sa<=30 2 0 - R P 2073 o - S 2 2 0 - -R P 2073 o - O 7 2 1 S +R P 2073 o - O 14 2 1 S R P 2074 o - Au 18 2 0 - -R P 2074 o - S 29 2 1 S +R P 2074 o - O 6 2 1 S R P 2075 o - Au 10 2 0 - -R P 2075 o - S 14 2 1 S -R P 2075 ma - O Sa<=30 2 0 - +R P 2075 o - S 21 2 1 S R P 2076 o - Jul 25 2 0 - -R P 2076 o - S 5 2 1 S +R P 2076 o - S 12 2 1 S R P 2077 o - Jul 17 2 0 - -R P 2077 o - Au 28 2 1 S +R P 2077 o - S 4 2 1 S R P 2078 o - Jul 9 2 0 - -R P 2078 o - Au 13 2 1 S +R P 2078 o - Au 20 2 1 S R P 2079 o - Jun 24 2 0 - -R P 2079 o - Au 5 2 1 S +R P 2079 o - Au 12 2 1 S R P 2080 o - Jun 15 2 0 - -R P 2080 o - Jul 20 2 1 S +R P 2080 o - Jul 27 2 1 S R P 2081 o - Jun 7 2 0 - -R P 2081 o - Jul 12 2 1 S +R P 2081 o - Jul 19 2 1 S R P 2082 o - May 23 2 0 - -R P 2082 o - Jul 4 2 1 S +R P 2082 o - Jul 11 2 1 S R P 2083 o - May 15 2 0 - -R P 2083 o - Jun 19 2 1 S +R P 2083 o - Jun 26 2 1 S R P 2084 o - Ap 29 2 0 - -R P 2084 o - Jun 10 2 1 S +R P 2084 o - Jun 17 2 1 S R P 2085 o - Ap 21 2 0 - -R P 2085 o - Jun 2 2 1 S +R P 2085 o - Jun 9 2 1 S R P 2086 o - Ap 13 2 0 - -R P 2086 o - May 18 2 1 S -Z Asia/Gaza 2:17:52 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 K EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 J EE%sT 1999 -2 P EE%sT 2008 Au 29 -2 - EET 2008 S -2 P EE%sT 2010 -2 - EET 2010 Mar 27 0:1 -2 P EE%sT 2011 Au -2 - EET 2012 -2 P EE%sT -Z Asia/Hebron 2:20:23 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 K EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 J EE%sT 1999 -2 P EE%sT +R P 2086 o - May 25 2 1 S R PH 1936 o - N 1 0 1 D R PH 1937 o - F 1 0 0 S R PH 1954 o - Ap 12 0 1 D R PH 1954 o - Jul 1 0 0 S R PH 1978 o - Mar 22 0 1 D R PH 1978 o - S 21 0 0 S -Z Asia/Manila -15:56 - LMT 1844 D 31 -8:4 - LMT 1899 May 11 -8 PH P%sT 1942 May -9 - JST 1944 N -8 PH P%sT -Z Asia/Qatar 3:26:8 - LMT 1920 -4 - +04 1972 Jun -3 - +03 -Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 -3 - +03 -Z Asia/Singapore 6:55:25 - LMT 1901 -6:55:25 - SMT 1905 Jun -7 - +07 1933 -7 0:20 +0720 1936 -7:20 - +0720 1941 S -7:30 - +0730 1942 F 16 -9 - +09 1945 S 12 -7:30 - +0730 1981 D 31 16u -8 - +08 -Z Asia/Colombo 5:19:24 - LMT 1880 -5:19:32 - MMT 1906 -5:30 - +0530 1942 Ja 5 -5:30 0:30 +06 1942 S -5:30 1 +0630 1945 O 16 2 -5:30 - +0530 1996 May 25 -6:30 - +0630 1996 O 26 0:30 -6 - +06 2006 Ap 15 0:30 -5:30 - +0530 R S 1920 1923 - Ap Su>=15 2 1 S R S 1920 1923 - O Su>=1 2 0 - R S 1962 o - Ap 29 2 1 S @@ -1172,46 +768,6 @@ R S 2009 o - Mar lastF 0 1 S R S 2010 2011 - Ap F>=1 0 1 S R S 2012 2022 - Mar lastF 0 1 S R S 2009 2022 - O lastF 0 0 - -Z Asia/Damascus 2:25:12 - LMT 1920 -2 S EE%sT 2022 O 28 -3 - +03 -Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 1 +06 1991 S 9 2s -5 - +05 -Z Asia/Bangkok 6:42:4 - LMT 1880 -6:42:4 - BMT 1920 Ap -7 - +07 -Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 R +05/+06 1991 Mar 31 2 -4 R +04/+05 1992 Ja 19 2 -5 - +05 -Z Asia/Dubai 3:41:12 - LMT 1920 -4 - +04 -Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1992 -5 - +05 -Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2 -5 R +05/+06 1992 -5 - +05 -Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul -7:6:30 - PLMT 1911 May -7 - +07 1942 D 31 23 -8 - +08 1945 Mar 14 23 -9 - +09 1945 S 2 -7 - +07 1947 Ap -8 - +08 1955 Jul -7 - +07 1959 D 31 23 -8 - +08 1975 Jun 13 -7 - +07 R AU 1917 o - Ja 1 2s 1 D R AU 1917 o - Mar lastSu 2s 0 S R AU 1942 o - Ja 1 2s 1 D @@ -1219,9 +775,6 @@ R AU 1942 o - Mar lastSu 2s 0 S R AU 1942 o - S 27 2s 1 D R AU 1943 1944 - Mar lastSu 2s 0 S R AU 1943 o - O 3 2s 1 D -Z Australia/Darwin 8:43:20 - LMT 1895 F -9 - ACST 1899 May -9:30 AU AC%sT R AW 1974 o - O lastSu 2s 1 D R AW 1975 o - Mar Su>=1 2s 0 S R AW 1983 o - O lastSu 2s 1 D @@ -1231,25 +784,12 @@ R AW 1992 o - Mar Su>=1 2s 0 S R AW 2006 o - D 3 2s 1 D R AW 2007 2009 - Mar lastSu 2s 0 S R AW 2007 2008 - O lastSu 2s 1 D -Z Australia/Perth 7:43:24 - LMT 1895 D -8 AU AW%sT 1943 Jul -8 AW AW%sT -Z Australia/Eucla 8:35:28 - LMT 1895 D -8:45 AU +0845/+0945 1943 Jul -8:45 AW +0845/+0945 R AQ 1971 o - O lastSu 2s 1 D R AQ 1972 o - F lastSu 2s 0 S R AQ 1989 1991 - O lastSu 2s 1 D R AQ 1990 1992 - Mar Su>=1 2s 0 S R Ho 1992 1993 - O lastSu 2s 1 D R Ho 1993 1994 - Mar Su>=1 2s 0 S -Z Australia/Brisbane 10:12:8 - LMT 1895 -10 AU AE%sT 1971 -10 AQ AE%sT -Z Australia/Lindeman 9:55:56 - LMT 1895 -10 AU AE%sT 1971 -10 AQ AE%sT 1992 Jul -10 Ho AE%sT R AS 1971 1985 - O lastSu 2s 1 D R AS 1986 o - O 19 2s 1 D R AS 1987 2007 - O lastSu 2s 1 D @@ -1265,10 +805,6 @@ R AS 2006 o - Ap 2 2s 0 S R AS 2007 o - Mar lastSu 2s 0 S R AS 2008 ma - Ap Su>=1 2s 0 S R AS 2008 ma - O Su>=1 2s 1 D -Z Australia/Adelaide 9:14:20 - LMT 1895 F -9 - ACST 1899 May -9:30 AU AC%sT 1971 -9:30 AS AC%sT R AT 1916 o - O Su>=1 2s 1 D R AT 1917 o - Mar lastSu 2s 0 S R AT 1917 1918 - O Su>=22 2s 1 D @@ -1292,10 +828,6 @@ R AT 2001 ma - O Su>=1 2s 1 D R AT 2006 o - Ap Su>=1 2s 0 S R AT 2007 o - Mar lastSu 2s 0 S R AT 2008 ma - Ap Su>=1 2s 0 S -Z Australia/Hobart 9:49:16 - LMT 1895 S -10 AT AE%sT 1919 O 24 -10 AU AE%sT 1967 -10 AT AE%sT R AV 1971 1985 - O lastSu 2s 1 D R AV 1972 o - F lastSu 2s 0 S R AV 1973 1985 - Mar Su>=1 2s 0 S @@ -1310,9 +842,6 @@ R AV 2006 o - Ap Su>=1 2s 0 S R AV 2007 o - Mar lastSu 2s 0 S R AV 2008 ma - Ap Su>=1 2s 0 S R AV 2008 ma - O Su>=1 2s 1 D -Z Australia/Melbourne 9:39:52 - LMT 1895 F -10 AU AE%sT 1971 -10 AV AE%sT R AN 1971 1985 - O lastSu 2s 1 D R AN 1972 o - F 27 2s 0 S R AN 1973 1981 - Mar Su>=1 2s 0 S @@ -1329,15 +858,6 @@ R AN 2006 o - Ap Su>=1 2s 0 S R AN 2007 o - Mar lastSu 2s 0 S R AN 2008 ma - Ap Su>=1 2s 0 S R AN 2008 ma - O Su>=1 2s 1 D -Z Australia/Sydney 10:4:52 - LMT 1895 F -10 AU AE%sT 1971 -10 AN AE%sT -Z Australia/Broken_Hill 9:25:48 - LMT 1895 F -10 - AEST 1896 Au 23 -9 - ACST 1899 May -9:30 AU AC%sT 1971 -9:30 AN AC%sT 2000 -9:30 AS AC%sT R LH 1981 1984 - O lastSu 2 1 - R LH 1982 1985 - Mar Su>=1 2 0 - R LH 1985 o - O lastSu 2 0:30 - @@ -1352,19 +872,6 @@ R LH 2006 o - Ap Su>=1 2 0 - R LH 2007 o - Mar lastSu 2 0 - R LH 2008 ma - Ap Su>=1 2 0 - R LH 2008 ma - O Su>=1 2 0:30 - -Z Australia/Lord_Howe 10:36:20 - LMT 1895 F -10 - AEST 1981 Mar -10:30 LH +1030/+1130 1985 Jul -10:30 LH +1030/+11 -Z Antarctica/Macquarie 0 - -00 1899 N -10 - AEST 1916 O 1 2 -10 1 AEDT 1917 F -10 AU AE%sT 1919 Ap 1 0s -0 - -00 1948 Mar 25 -10 AU AE%sT 1967 -10 AT AE%sT 2010 -10 1 AEDT 2011 -10 AT AE%sT R FJ 1998 1999 - N Su>=1 2 1 - R FJ 1999 2000 - F lastSu 3 0 - R FJ 2009 o - N 29 2 1 - @@ -1377,14 +884,6 @@ R FJ 2014 2018 - N Su>=1 2 1 - R FJ 2015 2021 - Ja Su>=12 3 0 - R FJ 2019 o - N Su>=8 2 1 - R FJ 2020 o - D 20 2 1 - -Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 -12 FJ +12/+13 -Z Pacific/Gambier -8:59:48 - LMT 1912 O --9 - -09 -Z Pacific/Marquesas -9:18 - LMT 1912 O --9:30 - -0930 -Z Pacific/Tahiti -9:58:16 - LMT 1912 O --10 - -10 R Gu 1959 o - Jun 27 2 1 D R Gu 1961 o - Ja 29 2 0 S R Gu 1967 o - S 1 2 1 D @@ -1399,50 +898,10 @@ R Gu 1976 o - May 26 2 1 D R Gu 1976 o - Au 22 2:1 0 S R Gu 1977 o - Ap 24 2 1 D R Gu 1977 o - Au 28 2 0 S -Z Pacific/Guam -14:21 - LMT 1844 D 31 -9:39 - LMT 1901 -10 - GST 1941 D 10 -9 - +09 1944 Jul 31 -10 Gu G%sT 2000 D 23 -10 - ChST -Z Pacific/Tarawa 11:32:4 - LMT 1901 -12 - +12 -Z Pacific/Kanton 0 - -00 1937 Au 31 --12 - -12 1979 O --11 - -11 1994 D 31 -13 - +13 -Z Pacific/Kiritimati -10:29:20 - LMT 1901 --10:40 - -1040 1979 O --10 - -10 1994 D 31 -14 - +14 -Z Pacific/Kwajalein 11:9:20 - LMT 1901 -11 - +11 1937 -10 - +10 1941 Ap -9 - +09 1944 F 6 -11 - +11 1969 O --12 - -12 1993 Au 20 24 -12 - +12 -Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31 -10:51:56 - LMT 1901 -11 - +11 1914 O -9 - +09 1919 F -11 - +11 1937 -10 - +10 1941 Ap -9 - +09 1945 Au -11 - +11 1969 O -12 - +12 1999 -11 - +11 -Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 -11:30 - +1130 1942 Au 29 -9 - +09 1945 S 8 -11:30 - +1130 1979 F 10 2 -12 - +12 R NC 1977 1978 - D Su>=1 0 1 - R NC 1978 1979 - F 27 0 0 - R NC 1996 o - D 1 2s 1 - R NC 1997 o - Mar 2 2s 0 - -Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 -11 NC +11/+12 R NZ 1927 o - N 6 2 1 S R NZ 1928 o - Mar 4 2 0 M R NZ 1928 1933 - O Su>=8 2 0:30 S @@ -1468,80 +927,26 @@ R NZ 2007 ma - S lastSu 2s 1 D R k 2007 ma - S lastSu 2:45s 1 - R NZ 2008 ma - Ap Su>=1 2s 0 S R k 2008 ma - Ap Su>=1 2:45s 0 - -Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 -11:30 NZ NZ%sT 1946 -12 NZ NZ%sT -Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 -12:15 - +1215 1946 -12:45 k +1245/+1345 R CK 1978 o - N 12 0 0:30 - R CK 1979 1991 - Mar Su>=1 0 0 - R CK 1979 1990 - O lastSu 0 0:30 - -Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 --10:39:4 - LMT 1952 O 16 --10:30 - -1030 1978 N 12 --10 CK -10/-0930 -Z Pacific/Niue -11:19:40 - LMT 1952 O 16 --11:20 - -1120 1964 Jul --11 - -11 -Z Pacific/Norfolk 11:11:52 - LMT 1901 -11:12 - +1112 1951 -11:30 - +1130 1974 O 27 2s -11:30 1 +1230 1975 Mar 2 2s -11:30 - +1130 2015 O 4 2s -11 - +11 2019 Jul -11 AN +11/+12 -Z Pacific/Palau -15:2:4 - LMT 1844 D 31 -8:57:56 - LMT 1901 -9 - +09 -Z Pacific/Port_Moresby 9:48:40 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 -Z Pacific/Bougainville 10:22:16 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 1942 Jul -9 - +09 1945 Au 21 -10 - +10 2014 D 28 2 -11 - +11 -Z Pacific/Pitcairn -8:40:20 - LMT 1901 --8:30 - -0830 1998 Ap 27 --8 - -08 -Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 --11:22:48 - LMT 1911 --11 - SST R WS 2010 o - S lastSu 0 1 - R WS 2011 o - Ap Sa>=1 4 0 - R WS 2011 o - S lastSa 3 1 - R WS 2012 2021 - Ap Su>=1 4 0 - R WS 2012 2020 - S lastSu 3 1 - -Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 --11:26:56 - LMT 1911 --11:30 - -1130 1950 --11 WS -11/-10 2011 D 29 24 -13 WS +13/+14 -Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O -11 - +11 -Z Pacific/Fakaofo -11:24:56 - LMT 1901 --11 - -11 2011 D 30 -13 - +13 R TO 1999 o - O 7 2s 1 - R TO 2000 o - Mar 19 2s 0 - R TO 2000 2001 - N Su>=1 2 1 - R TO 2001 2002 - Ja lastSu 2 0 - R TO 2016 o - N Su>=1 2 1 - R TO 2017 o - Ja Su>=15 3 0 - -Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 -12:20 - +1220 1961 -13 - +13 1999 -13 TO +13/+14 R VU 1973 o - D 22 12u 1 - R VU 1974 o - Mar 30 12u 0 - R VU 1983 1991 - S Sa>=22 24 1 - R VU 1984 1991 - Mar Sa>=22 24 0 - R VU 1992 1993 - Ja Sa>=22 24 0 - R VU 1992 o - O Sa>=22 24 1 - -Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 -11 VU +11/+12 R G 1916 o - May 21 2s 1 BST R G 1916 o - O 1 2s 0 GMT R G 1917 o - Ap 8 2s 1 BST @@ -1607,11 +1012,6 @@ R G 1972 1980 - O Su>=23 2s 0 GMT R G 1981 1995 - Mar lastSu 1u 1 BST R G 1981 1989 - O Su>=23 1u 0 GMT R G 1990 1995 - O Su>=22 1u 0 GMT -Z Europe/London -0:1:15 - LMT 1847 D -0 G %s 1968 O 27 -1 - BST 1971 O 31 2u -0 G %s 1996 -0 E GMT/BST R IE 1971 o - O 31 2u -1 - R IE 1972 1980 - Mar Su>=16 2u 0 - R IE 1972 1980 - O Su>=23 2u -1 - @@ -1619,17 +1019,6 @@ R IE 1981 ma - Mar lastSu 1u 0 - R IE 1981 1989 - O Su>=23 1u -1 - R IE 1990 1995 - O Su>=22 1u -1 - R IE 1996 ma - O lastSu 1u -1 - -Z Europe/Dublin -0:25:21 - LMT 1880 Au 2 --0:25:21 - DMT 1916 May 21 2s --0:25:21 1 IST 1916 O 1 2s -0 G %s 1921 D 6 -0 G GMT/IST 1940 F 25 2s -0 1 IST 1946 O 6 2s -0 - GMT 1947 Mar 16 2s -0 1 IST 1947 N 2 2s -0 - GMT 1948 Ap 18 2s -0 G GMT/IST 1968 O 27 -1 IE IST/GMT R E 1977 1980 - Ap Su>=1 1u 1 S R E 1977 o - S lastSu 1u 0 - R E 1978 o - O 1 1u 0 - @@ -1681,10 +1070,6 @@ R R 1981 1983 - O 1 0 0 - R R 1984 1995 - S lastSu 2s 0 - R R 1985 2010 - Mar lastSu 2s 1 S R R 1996 2010 - O lastSu 2s 0 - -Z WET 0 E WE%sT -Z CET 1 c CE%sT -Z MET 1 c ME%sT -Z EET 2 E EE%sT R q 1940 o - Jun 16 0 1 S R q 1942 o - N 2 3 0 - R q 1943 o - Mar 29 2 1 S @@ -1710,14 +1095,6 @@ R q 1982 o - O 3 0 0 - R q 1983 o - Ap 18 0 1 S R q 1983 o - O 1 0 0 - R q 1984 o - Ap 1 0 1 S -Z Europe/Tirane 1:19:20 - LMT 1914 -1 - CET 1940 Jun 16 -1 q CE%sT 1984 Jul -1 E CE%sT -Z Europe/Andorra 0:6:4 - LMT 1901 -0 - WET 1946 S 30 -1 - CET 1985 Mar 31 2 -1 E CE%sT R a 1920 o - Ap 5 2s 1 S R a 1920 o - S 13 2s 0 - R a 1946 o - Ap 14 2s 1 S @@ -1727,23 +1104,6 @@ R a 1947 o - Ap 6 2s 1 S R a 1948 o - Ap 18 2s 1 S R a 1980 o - Ap 6 0 1 S R a 1980 o - S 28 0 0 - -Z Europe/Vienna 1:5:21 - LMT 1893 Ap -1 c CE%sT 1920 -1 a CE%sT 1940 Ap 1 2s -1 c CE%sT 1945 Ap 2 2s -1 1 CEST 1945 Ap 12 2s -1 - CET 1946 -1 a CE%sT 1981 -1 E CE%sT -Z Europe/Minsk 1:50:16 - LMT 1880 -1:50 - MMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 Jun 28 -1 c CE%sT 1944 Jul 3 -3 R MSK/MSD 1990 -3 - MSK 1991 Mar 31 2s -2 R EE%sT 2011 Mar 27 2s -3 - +03 R b 1918 o - Mar 9 0s 1 S R b 1918 1919 - O Sa>=1 23s 0 - R b 1919 o - Mar 1 23s 1 S @@ -1778,87 +1138,27 @@ R b 1945 o - Ap 2 2s 1 S R b 1945 o - S 16 2s 0 - R b 1946 o - May 19 2s 1 S R b 1946 o - O 7 2s 0 - -Z Europe/Brussels 0:17:30 - LMT 1880 -0:17:30 - BMT 1892 May 1 0:17:30 -0 - WET 1914 N 8 -1 - CET 1916 May -1 c CE%sT 1918 N 11 11u -0 b WE%sT 1940 May 20 2s -1 c CE%sT 1944 S 3 -1 b CE%sT 1977 -1 E CE%sT R BG 1979 o - Mar 31 23 1 S R BG 1979 o - O 1 1 0 - R BG 1980 1982 - Ap Sa>=1 23 1 S R BG 1980 o - S 29 1 0 - R BG 1981 o - S 27 2 0 - -Z Europe/Sofia 1:33:16 - LMT 1880 -1:56:56 - IMT 1894 N 30 -2 - EET 1942 N 2 3 -1 c CE%sT 1945 -1 - CET 1945 Ap 2 3 -2 - EET 1979 Mar 31 23 -2 BG EE%sT 1982 S 26 3 -2 c EE%sT 1991 -2 e EE%sT 1997 -2 E EE%sT R CZ 1945 o - Ap M>=1 2s 1 S R CZ 1945 o - O 1 2s 0 - R CZ 1946 o - May 6 2s 1 S R CZ 1946 1949 - O Su>=1 2s 0 - R CZ 1947 1948 - Ap Su>=15 2s 1 S R CZ 1949 o - Ap 9 2s 1 S -Z Europe/Prague 0:57:44 - LMT 1850 -0:57:44 - PMT 1891 O -1 c CE%sT 1945 May 9 -1 CZ CE%sT 1946 D 1 3 -1 -1 GMT 1947 F 23 2 -1 CZ CE%sT 1979 -1 E CE%sT -Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 -0 - WET 1981 -0 E WE%sT R Th 1991 1992 - Mar lastSu 2 1 D R Th 1991 1992 - S lastSu 2 0 S R Th 1993 2006 - Ap Su>=1 2 1 D R Th 1993 2006 - O lastSu 2 0 S R Th 2007 ma - Mar Su>=8 2 1 D R Th 2007 ma - N Su>=1 2 0 S -Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 E -03/-02 1996 -0 - GMT -Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 --2 - -02 1980 Ap 6 2 --2 c -02/-01 1981 Mar 29 --1 E -01/+00 -Z America/Nuuk -3:26:56 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 E -03/-02 2023 O 29 1u --2 E -02/-01 -Z America/Thule -4:35:8 - LMT 1916 Jul 28 --4 Th A%sT -Z Europe/Tallinn 1:39 - LMT 1880 -1:39 - TMT 1918 F -1 c CE%sT 1919 Jul -1:39 - TMT 1921 May -2 - EET 1940 Au 6 -3 - MSK 1941 S 15 -1 c CE%sT 1944 S 22 -3 R MSK/MSD 1989 Mar 26 2s -2 1 EEST 1989 S 24 2s -2 c EE%sT 1998 S 22 -2 E EE%sT 1999 O 31 4 -2 - EET 2002 F 21 -2 E EE%sT R FI 1942 o - Ap 2 24 1 S R FI 1942 o - O 4 1 0 - R FI 1981 1982 - Mar lastSu 2 1 S R FI 1981 1982 - S lastSu 3 0 - -Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 -1:39:49 - HMT 1921 May -2 FI EE%sT 1983 -2 E EE%sT R F 1916 o - Jun 14 23s 1 S R F 1916 1919 - O Su>=1 23s 0 - R F 1917 o - Mar 24 23s 1 S @@ -1901,13 +1201,6 @@ R F 1945 o - Ap 2 2 2 M R F 1945 o - S 16 3 0 - R F 1976 o - Mar 28 1 1 S R F 1976 o - S 26 1 0 - -Z Europe/Paris 0:9:21 - LMT 1891 Mar 16 -0:9:21 - PMT 1911 Mar 11 -0 F WE%sT 1940 Jun 14 23 -1 c CE%sT 1944 Au 25 -0 F WE%sT 1945 S 16 3 -1 F CE%sT 1977 -1 E CE%sT R DE 1946 o - Ap 14 2s 1 S R DE 1946 o - O 7 2s 0 - R DE 1947 1949 - O Su>=1 2s 0 - @@ -1919,15 +1212,6 @@ R DE 1949 o - Ap 10 2s 1 S R So 1945 o - May 24 2 2 M R So 1945 o - S 24 3 1 S R So 1945 o - N 18 2s 0 - -Z Europe/Berlin 0:53:28 - LMT 1893 Ap -1 c CE%sT 1945 May 24 2 -1 So CE%sT 1946 -1 DE CE%sT 1980 -1 E CE%sT -Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 -0 G %s 1957 Ap 14 2 -1 - CET 1982 -1 E CE%sT R g 1932 o - Jul 7 0 1 S R g 1932 o - S 1 0 0 - R g 1941 o - Ap 7 0 1 S @@ -1947,12 +1231,6 @@ R g 1979 o - Ap 1 9 1 S R g 1979 o - S 29 2 0 - R g 1980 o - Ap 1 0 1 S R g 1980 o - S 28 0 0 - -Z Europe/Athens 1:34:52 - LMT 1895 S 14 -1:34:52 - AMT 1916 Jul 28 0:1 -2 g EE%sT 1941 Ap 30 -1 g CE%sT 1944 Ap 4 -2 g EE%sT 1981 -2 E EE%sT R h 1918 1919 - Ap 15 2 1 S R h 1918 1920 - S M>=15 3 0 - R h 1920 o - Ap 5 2 1 S @@ -1972,12 +1250,6 @@ R h 1980 o - Ap 6 0 1 S R h 1980 o - S 28 1 0 - R h 1981 1983 - Mar lastSu 0 1 S R h 1981 1983 - S lastSu 1 0 - -Z Europe/Budapest 1:16:20 - LMT 1890 N -1 c CE%sT 1918 -1 h CE%sT 1941 Ap 7 23 -1 c CE%sT 1945 -1 h CE%sT 1984 -1 E CE%sT R I 1916 o - Jun 3 24 1 S R I 1916 1917 - S 30 24 0 - R I 1917 o - Mar 31 24 1 S @@ -2019,44 +1291,8 @@ R I 1976 o - May 30 0s 1 S R I 1977 1979 - May Su>=22 0s 1 S R I 1978 o - O 1 0s 0 - R I 1979 o - S 30 0s 0 - -Z Europe/Rome 0:49:56 - LMT 1866 D 12 -0:49:56 - RMT 1893 O 31 23u -1 I CE%sT 1943 S 10 -1 c CE%sT 1944 Jun 4 -1 I CE%sT 1980 -1 E CE%sT R LV 1989 1996 - Mar lastSu 2s 1 S R LV 1989 1996 - S lastSu 2s 0 - -Z Europe/Riga 1:36:34 - LMT 1880 -1:36:34 - RMT 1918 Ap 15 2 -1:36:34 1 LST 1918 S 16 3 -1:36:34 - RMT 1919 Ap 1 2 -1:36:34 1 LST 1919 May 22 3 -1:36:34 - RMT 1926 May 11 -2 - EET 1940 Au 5 -3 - MSK 1941 Jul -1 c CE%sT 1944 O 13 -3 R MSK/MSD 1989 Mar lastSu 2s -2 1 EEST 1989 S lastSu 2s -2 LV EE%sT 1997 Ja 21 -2 E EE%sT 2000 F 29 -2 - EET 2001 Ja 2 -2 E EE%sT -Z Europe/Vilnius 1:41:16 - LMT 1880 -1:24 - WMT 1917 -1:35:36 - KMT 1919 O 10 -1 - CET 1920 Jul 12 -2 - EET 1920 O 9 -1 - CET 1940 Au 3 -3 - MSK 1941 Jun 24 -1 c CE%sT 1944 Au -3 R MSK/MSD 1989 Mar 26 2s -2 R EE%sT 1991 S 29 2s -2 c EE%sT 1998 -2 - EET 1998 Mar 29 1u -1 E CE%sT 1999 O 31 1u -2 - EET 2003 -2 E EE%sT R MT 1973 o - Mar 31 0s 1 S R MT 1973 o - S 29 0s 0 - R MT 1974 o - Ap 21 0s 1 S @@ -2064,22 +1300,8 @@ R MT 1974 o - S 16 0s 0 - R MT 1975 1979 - Ap Su>=15 2 1 S R MT 1975 1980 - S Su>=15 2 0 - R MT 1980 o - Mar 31 2 1 S -Z Europe/Malta 0:58:4 - LMT 1893 N 2 -1 I CE%sT 1973 Mar 31 -1 MT CE%sT 1981 -1 E CE%sT R MD 1997 ma - Mar lastSu 2 1 S R MD 1997 ma - O lastSu 3 0 - -Z Europe/Chisinau 1:55:20 - LMT 1880 -1:55 - CMT 1918 F 15 -1:44:24 - BMT 1931 Jul 24 -2 z EE%sT 1940 Au 15 -2 1 EEST 1941 Jul 17 -1 c CE%sT 1944 Au 24 -3 R MSK/MSD 1990 May 6 2 -2 R EE%sT 1992 -2 e EE%sT 1997 -2 MD EE%sT R O 1918 1919 - S 16 2s 0 - R O 1919 o - Ap 15 2s 1 S R O 1944 o - Ap 3 2s 1 S @@ -2100,15 +1322,6 @@ R O 1959 1961 - O Su>=1 1s 0 - R O 1960 o - Ap 3 1s 1 S R O 1961 1964 - May lastSu 1s 1 S R O 1962 1964 - S lastSu 1s 0 - -Z Europe/Warsaw 1:24 - LMT 1880 -1:24 - WMT 1915 Au 5 -1 c CE%sT 1918 S 16 3 -2 O EE%sT 1922 Jun -1 O CE%sT 1940 Jun 23 2 -1 c CE%sT 1944 O -1 O CE%sT 1977 -1 W- CE%sT 1988 -1 E CE%sT R p 1916 o - Jun 17 23 1 S R p 1916 o - N 1 1 0 - R p 1917 o - F 28 23s 1 S @@ -2157,42 +1370,6 @@ R p 1979 1982 - S lastSu 1s 0 - R p 1980 o - Mar lastSu 0s 1 S R p 1981 1982 - Mar lastSu 1s 1 S R p 1983 o - Mar lastSu 2s 1 S -Z Europe/Lisbon -0:36:45 - LMT 1884 --0:36:45 - LMT 1912 Ja 1 0u -0 p WE%sT 1966 Ap 3 2 -1 - CET 1976 S 26 1 -0 p WE%sT 1983 S 25 1s -0 W- WE%sT 1992 S 27 1s -1 E CE%sT 1996 Mar 31 1u -0 E WE%sT -Z Atlantic/Azores -1:42:40 - LMT 1884 --1:54:32 - HMT 1912 Ja 1 2u --2 p -02/-01 1942 Ap 25 22s --2 p +00 1942 Au 15 22s --2 p -02/-01 1943 Ap 17 22s --2 p +00 1943 Au 28 22s --2 p -02/-01 1944 Ap 22 22s --2 p +00 1944 Au 26 22s --2 p -02/-01 1945 Ap 21 22s --2 p +00 1945 Au 25 22s --2 p -02/-01 1966 Ap 3 2 --1 p -01/+00 1983 S 25 1s --1 W- -01/+00 1992 S 27 1s -0 E WE%sT 1993 Mar 28 1u --1 E -01/+00 -Z Atlantic/Madeira -1:7:36 - LMT 1884 --1:7:36 - FMT 1912 Ja 1 1u --1 p -01/+00 1942 Ap 25 22s --1 p +01 1942 Au 15 22s --1 p -01/+00 1943 Ap 17 22s --1 p +01 1943 Au 28 22s --1 p -01/+00 1944 Ap 22 22s --1 p +01 1944 Au 26 22s --1 p -01/+00 1945 Ap 21 22s --1 p +01 1945 Au 25 22s --1 p -01/+00 1966 Ap 3 2 -0 p WE%sT 1983 S 25 1s -0 E WE%sT R z 1932 o - May 21 0s 1 S R z 1932 1939 - O Su>=1 0s 0 - R z 1933 1939 - Ap Su>=2 0s 1 S @@ -2202,252 +1379,6 @@ R z 1980 o - Ap 5 23 1 S R z 1980 o - S lastSu 1 0 - R z 1991 1993 - Mar lastSu 0s 1 S R z 1991 1993 - S lastSu 0s 0 - -Z Europe/Bucharest 1:44:24 - LMT 1891 O -1:44:24 - BMT 1931 Jul 24 -2 z EE%sT 1981 Mar 29 2s -2 c EE%sT 1991 -2 z EE%sT 1994 -2 e EE%sT 1997 -2 E EE%sT -Z Europe/Kaliningrad 1:22 - LMT 1893 Ap -1 c CE%sT 1945 Ap 10 -2 O EE%sT 1946 Ap 7 -3 R MSK/MSD 1989 Mar 26 2s -2 R EE%sT 2011 Mar 27 2s -3 - +03 2014 O 26 2s -2 - EET -Z Europe/Moscow 2:30:17 - LMT 1880 -2:30:17 - MMT 1916 Jul 3 -2:31:19 R %s 1919 Jul 1 0u -3 R %s 1921 O -3 R MSK/MSD 1922 O -2 - EET 1930 Jun 21 -3 R MSK/MSD 1991 Mar 31 2s -2 R EE%sT 1992 Ja 19 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Simferopol 2:16:24 - LMT 1880 -2:16 - SMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 N -1 c CE%sT 1944 Ap 13 -3 R MSK/MSD 1990 -3 - MSK 1990 Jul 1 2 -2 - EET 1992 Mar 20 -2 c EE%sT 1994 May -3 c MSK/MSD 1996 Mar 31 0s -3 1 MSD 1996 O 27 3s -3 - MSK 1997 Mar lastSu 1u -2 E EE%sT 2014 Mar 30 2 -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Astrakhan 3:12:12 - LMT 1924 May -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 -3 - +03 1930 Jun 21 -4 - +04 1961 N 11 -4 R +04/+05 1988 Mar 27 2s -3 R MSK/MSD 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK 2018 O 28 2s -4 - +04 2020 D 27 2s -3 - MSK -Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1988 Mar 27 2s -3 R +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 D 4 2s -4 - +04 -Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R MSK/MSD 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 - +04 1935 Ja 27 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -2 R +02/+03 1991 S 29 2s -3 - +03 1991 O 20 3 -4 R +04/+05 2010 Mar 28 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 -Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -2 R +02/+03 1992 Ja 19 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 -3:45:5 - PMT 1919 Jul 15 4 -4 - +04 1930 Jun 21 -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2011 Mar 27 2s -6 - +06 2014 O 26 2s -5 - +05 -Z Asia/Omsk 4:53:30 - LMT 1919 N 14 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 -Z Asia/Barnaul 5:35 - LMT 1919 D 10 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 1995 May 28 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Mar 27 2s -7 - +07 -Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 1993 May 23 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Jul 24 2s -7 - +07 -Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2002 May 1 3 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 May 29 2s -7 - +07 -Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2010 Mar 28 2s -6 R +06/+07 2011 Mar 27 2s -7 - +07 -Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2011 Mar 27 2s -8 - +08 2014 O 26 2s -7 - +07 -Z Asia/Irkutsk 6:57:5 - LMT 1880 -6:57:5 - IMT 1920 Ja 25 -7 - +07 1930 Jun 21 -8 R +08/+09 1991 Mar 31 2s -7 R +07/+08 1992 Ja 19 2s -8 R +08/+09 2011 Mar 27 2s -9 - +09 2014 O 26 2s -8 - +08 -Z Asia/Chita 7:33:52 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -8 - +08 2016 Mar 27 2 -9 - +09 -Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 -9 - +09 1930 Jun 21 -10 R +10/+11 1991 Mar 31 2s -9 R +09/+10 1992 Ja 19 2s -10 R +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2004 -10 R +10/+11 2011 Mar 27 2s -11 - +11 2011 S 13 0s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 -9 - +09 1945 Au 25 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 1997 Mar lastSu 2s -10 R +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 2016 Mar 27 2s -11 - +11 -Z Asia/Magadan 10:3:12 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -10 - +10 2016 Ap 24 2s -11 - +11 -Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -11 - +11 -Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1981 Ap -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2011 S 13 0s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 -11 - +11 1930 Jun 21 -12 R +12/+13 1991 Mar 31 2s -11 R +11/+12 1992 Ja 19 2s -12 R +12/+13 2010 Mar 28 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 -Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 -12 - +12 1930 Jun 21 -13 R +13/+14 1982 Ap 1 0s -12 R +12/+13 1991 Mar 31 2s -11 R +11/+12 1992 Ja 19 2s -12 R +12/+13 2010 Mar 28 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 -Z Europe/Belgrade 1:22 - LMT 1884 -1 - CET 1941 Ap 18 23 -1 c CE%sT 1945 -1 - CET 1945 May 8 2s -1 1 CEST 1945 S 16 2s -1 - CET 1982 N 27 -1 E CE%sT R s 1918 o - Ap 15 23 1 S R s 1918 1919 - O 6 24s 0 - R s 1919 o - Ap 6 23 1 S @@ -2487,30 +1418,8 @@ R Sp 1976 o - Au 1 0 0 - R Sp 1977 o - S 28 0 0 - R Sp 1978 o - Jun 1 0 1 S R Sp 1978 o - Au 4 0 0 - -Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u -0 s WE%sT 1940 Mar 16 23 -1 s CE%sT 1979 -1 E CE%sT -Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u -0 - WET 1918 May 6 23 -0 1 WEST 1918 O 7 23 -0 - WET 1924 -0 s WE%sT 1929 -0 - WET 1967 -0 Sp WE%sT 1984 Mar 16 -1 - CET 1986 -1 E CE%sT -Z Atlantic/Canary -1:1:36 - LMT 1922 Mar --1 - -01 1946 S 30 1 -0 - WET 1980 Ap 6 0s -0 1 WEST 1980 S 28 1u -0 E WE%sT R CH 1941 1942 - May M>=1 1 1 S R CH 1941 1942 - O M>=1 2 0 - -Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 -0:29:46 - BMT 1894 Jun -1 CH CE%sT 1981 -1 E CE%sT R T 1916 o - May 1 0 1 S R T 1916 o - O 1 0 0 - R T 1920 o - Mar 28 0 1 S @@ -2556,28 +1465,6 @@ R T 1986 1995 - S lastSu 1s 0 - R T 1994 o - Mar 20 1s 1 S R T 1995 2006 - Mar lastSu 1s 1 S R T 1996 2006 - O lastSu 1s 0 - -Z Europe/Istanbul 1:55:52 - LMT 1880 -1:56:56 - IMT 1910 O -2 T EE%sT 1978 Jun 29 -3 T +03/+04 1984 N 1 2 -2 T EE%sT 2007 -2 E EE%sT 2011 Mar 27 1u -2 - EET 2011 Mar 28 1u -2 E EE%sT 2014 Mar 30 1u -2 - EET 2014 Mar 31 1u -2 E EE%sT 2015 O 25 1u -2 1 EEST 2015 N 8 1u -2 E EE%sT 2016 S 7 -3 - +03 -Z Europe/Kyiv 2:2:4 - LMT 1880 -2:2:4 - KMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 S 20 -1 c CE%sT 1943 N 6 -3 R MSK/MSD 1990 Jul 1 2 -2 1 EEST 1991 S 29 3 -2 c EE%sT 1996 May 13 -2 E EE%sT R u 1918 1919 - Mar lastSu 2 1 D R u 1918 1919 - O lastSu 2 0 S R u 1942 o - F 9 2 1 W @@ -2591,172 +1478,34 @@ R u 1976 1986 - Ap lastSu 2 1 D R u 1987 2006 - Ap Su>=1 2 1 D R u 2007 ma - Mar Su>=8 2 1 D R u 2007 ma - N Su>=1 2 0 S -Z EST -5 - EST -Z MST -7 - MST -Z HST -10 - HST -Z EST5EDT -5 u E%sT -Z CST6CDT -6 u C%sT -Z MST7MDT -7 u M%sT -Z PST8PDT -8 u P%sT R NY 1920 o - Mar lastSu 2 1 D R NY 1920 o - O lastSu 2 0 S R NY 1921 1966 - Ap lastSu 2 1 D R NY 1921 1954 - S lastSu 2 0 S R NY 1955 1966 - O lastSu 2 0 S -Z America/New_York -4:56:2 - LMT 1883 N 18 17u --5 u E%sT 1920 --5 NY E%sT 1942 --5 u E%sT 1946 --5 NY E%sT 1967 --5 u E%sT R Ch 1920 o - Jun 13 2 1 D R Ch 1920 1921 - O lastSu 2 0 S R Ch 1921 o - Mar lastSu 2 1 D R Ch 1922 1966 - Ap lastSu 2 1 D R Ch 1922 1954 - S lastSu 2 0 S R Ch 1955 1966 - O lastSu 2 0 S -Z America/Chicago -5:50:36 - LMT 1883 N 18 18u --6 u C%sT 1920 --6 Ch C%sT 1936 Mar 1 2 --5 - EST 1936 N 15 2 --6 Ch C%sT 1942 --6 u C%sT 1946 --6 Ch C%sT 1967 --6 u C%sT -Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u --7 u M%sT 1992 O 25 2 --6 u C%sT -Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u --7 u M%sT 2003 O 26 2 --6 u C%sT -Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u --7 u M%sT 2010 N 7 2 --6 u C%sT R De 1920 1921 - Mar lastSu 2 1 D R De 1920 o - O lastSu 2 0 S R De 1921 o - May 22 2 0 S R De 1965 1966 - Ap lastSu 2 1 D R De 1965 1966 - O lastSu 2 0 S -Z America/Denver -6:59:56 - LMT 1883 N 18 19u --7 u M%sT 1920 --7 De M%sT 1942 --7 u M%sT 1946 --7 De M%sT 1967 --7 u M%sT R CA 1948 o - Mar 14 2:1 1 D R CA 1949 o - Ja 1 2 0 S R CA 1950 1966 - Ap lastSu 1 1 D R CA 1950 1961 - S lastSu 2 0 S R CA 1962 1966 - O lastSu 2 0 S -Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u --8 u P%sT 1946 --8 CA P%sT 1967 --8 u P%sT -Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 --8:57:41 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1980 Ap 27 2 --9 u Y%sT 1980 O 26 2 --8 u P%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 --9:1:13 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 --8:46:18 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1983 O 30 2 --8 - PST 2015 N 1 2 --9 u AK%sT 2018 N 4 2 --8 - PST 2019 Ja 20 2 --9 u AK%sT -Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 --9:18:55 - LMT 1900 Au 20 12 --9 - YST 1942 --9 u Y%sT 1946 --9 - YST 1969 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 --9:59:36 - LMT 1900 Au 20 12 --10 - AST 1942 --10 u A%sT 1967 Ap --10 - AHST 1969 --10 u AH%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 --11:1:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 u N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 u B%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 --11:46:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 u N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 u B%sT 1983 O 30 2 --10 u AH%sT 1983 N 30 --10 u H%sT -Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 --10:30 - HST 1933 Ap 30 2 --10:30 1 HDT 1933 May 21 12 --10:30 u H%sT 1947 Jun 8 2 --10 - HST -Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u --7 u M%sT 1944 Ja 1 0:1 --7 - MST 1944 Ap 1 0:1 --7 u M%sT 1944 O 1 0:1 --7 - MST 1967 --7 u M%sT 1968 Mar 21 --7 - MST -Z America/Boise -7:44:49 - LMT 1883 N 18 20u --8 u P%sT 1923 May 13 2 --7 u M%sT 1974 --7 - MST 1974 F 3 2 --7 u M%sT R In 1941 o - Jun 22 2 1 D R In 1941 1954 - S lastSu 2 0 S R In 1946 1954 - Ap lastSu 2 1 D -Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u --6 u C%sT 1920 --6 In C%sT 1942 --6 u C%sT 1946 --6 In C%sT 1955 Ap 24 2 --5 - EST 1957 S 29 2 --6 - CST 1958 Ap 27 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 --5 u E%sT R Ma 1951 o - Ap lastSu 2 1 D R Ma 1951 o - S lastSu 2 0 S R Ma 1954 1960 - Ap lastSu 2 1 D R Ma 1954 1960 - S lastSu 2 0 S -Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u --6 u C%sT 1951 --6 Ma C%sT 1961 Ap 30 2 --5 - EST 1969 --5 u E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 u E%sT 1976 --5 - EST 2006 --5 u E%sT R V 1946 o - Ap lastSu 2 1 D R V 1946 o - S lastSu 2 0 S R V 1953 1954 - Ap lastSu 2 1 D @@ -2766,68 +1515,23 @@ R V 1956 1963 - Ap lastSu 2 1 D R V 1960 o - O lastSu 2 0 S R V 1961 o - S lastSu 2 0 S R V 1962 1963 - O lastSu 2 0 S -Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 V C%sT 1964 Ap 26 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 N 4 2 --5 u E%sT R Pe 1955 o - May 1 0 1 D R Pe 1955 1960 - S lastSu 2 0 S R Pe 1956 1963 - Ap lastSu 2 1 D R Pe 1961 1963 - O lastSu 2 0 S -Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 Pe C%sT 1964 Ap 26 2 --5 - EST 1967 O 29 2 --6 u C%sT 1969 Ap 27 2 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT R Pi 1955 o - May 1 0 1 D R Pi 1955 1960 - S lastSu 2 0 S R Pi 1956 1964 - Ap lastSu 2 1 D R Pi 1961 1964 - O lastSu 2 0 S -Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u --6 u C%sT 1955 --6 Pi C%sT 1965 Ap 25 2 --5 - EST 1966 O 30 2 --6 u C%sT 1977 O 30 2 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 N 4 2 --5 u E%sT R St 1947 1961 - Ap lastSu 2 1 D R St 1947 1954 - S lastSu 2 0 S R St 1955 1956 - O lastSu 2 0 S R St 1957 1958 - S lastSu 2 0 S R St 1959 1961 - O lastSu 2 0 S -Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u --6 u C%sT 1947 --6 St C%sT 1962 Ap 29 2 --5 - EST 1963 O 27 2 --6 u C%sT 1991 O 27 2 --5 - EST 2006 Ap 2 2 --6 u C%sT R Pu 1946 1960 - Ap lastSu 2 1 D R Pu 1946 1954 - S lastSu 2 0 S R Pu 1955 1956 - O lastSu 2 0 S R Pu 1957 1960 - S lastSu 2 0 S -Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 Pu C%sT 1961 Ap 30 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 Mar 11 2 --5 u E%sT -Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u --6 u C%sT 1954 Ap 25 2 --5 - EST 1969 --5 u E%sT 1973 --5 - EST 2006 --5 u E%sT R v 1921 o - May 1 2 1 D R v 1921 o - S 1 2 0 S R v 1941 o - Ap lastSu 2 1 D @@ -2837,41 +1541,12 @@ R v 1946 o - Jun 2 2 0 S R v 1950 1961 - Ap lastSu 2 1 D R v 1950 1955 - S lastSu 2 0 S R v 1956 1961 - O lastSu 2 0 S -Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u --6 u C%sT 1921 --6 v C%sT 1942 --6 u C%sT 1946 --6 v C%sT 1961 Jul 23 2 --5 - EST 1968 --5 u E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 u E%sT -Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 - CST 1968 --6 u C%sT 2000 O 29 2 --5 u E%sT R Dt 1948 o - Ap lastSu 2 1 D R Dt 1948 o - S lastSu 2 0 S -Z America/Detroit -5:32:11 - LMT 1905 --6 - CST 1915 May 15 2 --5 - EST 1942 --5 u E%sT 1946 --5 Dt E%sT 1967 Jun 14 0:1 --5 u E%sT 1969 --5 - EST 1973 --5 u E%sT 1975 --5 - EST 1975 Ap 27 2 --5 u E%sT R Me 1946 o - Ap lastSu 2 1 D R Me 1946 o - S lastSu 2 0 S R Me 1966 o - Ap lastSu 2 1 D R Me 1966 o - O lastSu 2 0 S -Z America/Menominee -5:50:27 - LMT 1885 S 18 12 --6 u C%sT 1946 --6 Me C%sT 1969 Ap 27 2 --5 - EST 1973 Ap 29 2 --6 u C%sT R C 1918 o - Ap 14 2 1 D R C 1918 o - O 27 2 0 S R C 1942 o - F 9 2 1 W @@ -2901,24 +1576,6 @@ R j 1988 o - Ap Su>=1 0:1 2 DD R j 1989 2006 - Ap Su>=1 0:1 1 D R j 2007 2011 - Mar Su>=8 0:1 1 D R j 2007 2010 - N Su>=1 0:1 0 S -Z America/St_Johns -3:30:52 - LMT 1884 --3:30:52 j N%sT 1918 --3:30:52 C N%sT 1919 --3:30:52 j N%sT 1935 Mar 30 --3:30 j N%sT 1942 May 11 --3:30 C N%sT 1946 --3:30 j N%sT 2011 N --3:30 C N%sT -Z America/Goose_Bay -4:1:40 - LMT 1884 --3:30:52 - NST 1918 --3:30:52 C N%sT 1919 --3:30:52 - NST 1935 Mar 30 --3:30 - NST 1936 --3:30 j N%sT 1942 May 11 --3:30 C N%sT 1946 --3:30 j N%sT 1966 Mar 15 2 --4 j A%sT 2011 N --4 C A%sT R H 1916 o - Ap 1 0 1 D R H 1916 o - O 1 0 0 S R H 1920 o - May 9 0 1 D @@ -2960,19 +1617,6 @@ R H 1956 1959 - Ap lastSu 2 1 D R H 1956 1959 - S lastSu 2 0 S R H 1962 1973 - Ap lastSu 2 1 D R H 1962 1973 - O lastSu 2 0 S -Z America/Halifax -4:14:24 - LMT 1902 Jun 15 --4 H A%sT 1918 --4 C A%sT 1919 --4 H A%sT 1942 F 9 2s --4 C A%sT 1946 --4 H A%sT 1974 --4 C A%sT -Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 --4 C A%sT 1953 --4 H A%sT 1954 --4 - AST 1972 --4 H A%sT 1974 --4 C A%sT R o 1933 1935 - Jun Su>=8 1 1 D R o 1933 1935 - S Su>=8 1 0 S R o 1936 1938 - Jun Su>=1 1 1 D @@ -2986,15 +1630,6 @@ R o 1946 1956 - S lastSu 2 0 S R o 1957 1972 - O lastSu 2 0 S R o 1993 2006 - Ap Su>=1 0:1 1 D R o 1993 2006 - O lastSu 0:1 0 S -Z America/Moncton -4:19:8 - LMT 1883 D 9 --5 - EST 1902 Jun 15 --4 C A%sT 1933 --4 o A%sT 1942 --4 C A%sT 1946 --4 o A%sT 1973 --4 C A%sT 1993 --4 o A%sT 2007 --4 C A%sT R t 1919 o - Mar 30 23:30 1 D R t 1919 o - O 26 0 0 S R t 1920 o - May 2 2 1 D @@ -3008,21 +1643,11 @@ R t 1927 1937 - S Su>=25 2 0 S R t 1928 1937 - Ap Su>=25 2 1 D R t 1938 1940 - Ap lastSu 2 1 D R t 1938 1939 - S lastSu 2 0 S -R t 1945 1946 - S lastSu 2 0 S -R t 1946 o - Ap lastSu 2 1 D -R t 1947 1949 - Ap lastSu 0 1 D -R t 1947 1948 - S lastSu 0 0 S -R t 1949 o - N lastSu 0 0 S -R t 1950 1973 - Ap lastSu 2 1 D -R t 1950 o - N lastSu 2 0 S +R t 1945 1948 - S lastSu 2 0 S +R t 1946 1973 - Ap lastSu 2 1 D +R t 1949 1950 - N lastSu 2 0 S R t 1951 1956 - S lastSu 2 0 S R t 1957 1973 - O lastSu 2 0 S -Z America/Toronto -5:17:32 - LMT 1895 --5 C E%sT 1919 --5 t E%sT 1942 F 9 2s --5 C E%sT 1946 --5 t E%sT 1974 --5 C E%sT R W 1916 o - Ap 23 0 1 D R W 1916 o - S 17 0 0 S R W 1918 o - Ap 14 2 1 D @@ -3047,9 +1672,6 @@ R W 1963 o - S 22 2 0 S R W 1966 1986 - Ap lastSu 2s 1 D R W 1966 2005 - O lastSu 2s 0 S R W 1987 2005 - Ap Su>=1 2s 1 D -Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 --6 W C%sT 2006 --6 C C%sT R r 1918 o - Ap 14 2 1 D R r 1918 o - O 27 2 0 S R r 1930 1934 - May Su>=1 0 1 D @@ -3072,14 +1694,6 @@ R Sw 1957 o - O lastSu 2 0 S R Sw 1959 1961 - Ap lastSu 2 1 D R Sw 1959 o - O lastSu 2 0 S R Sw 1960 1961 - S lastSu 2 0 S -Z America/Regina -6:58:36 - LMT 1905 S --7 r M%sT 1960 Ap lastSu 2 --6 - CST -Z America/Swift_Current -7:11:20 - LMT 1905 S --7 C M%sT 1946 Ap lastSu 2 --7 r M%sT 1950 --7 Sw M%sT 1972 Ap lastSu 2 --6 - CST R Ed 1918 1919 - Ap Su>=8 2 1 D R Ed 1918 o - O 27 2 0 S R Ed 1919 o - May 27 2 0 S @@ -3093,9 +1707,6 @@ R Ed 1947 o - Ap lastSu 2 1 D R Ed 1947 o - S lastSu 2 0 S R Ed 1972 1986 - Ap lastSu 2 1 D R Ed 1972 2006 - O lastSu 2 0 S -Z America/Edmonton -7:33:52 - LMT 1906 S --7 Ed M%sT 1987 --7 C M%sT R Va 1918 o - Ap 14 2 1 D R Va 1918 o - O 27 2 0 S R Va 1942 o - F 9 2 1 W @@ -3105,19 +1716,6 @@ R Va 1946 1986 - Ap lastSu 2 1 D R Va 1946 o - S 29 2 0 S R Va 1947 1961 - S lastSu 2 0 S R Va 1962 2006 - O lastSu 2 0 S -Z America/Vancouver -8:12:28 - LMT 1884 --8 Va P%sT 1987 --8 C P%sT -Z America/Dawson_Creek -8:0:56 - LMT 1884 --8 C P%sT 1947 --8 Va P%sT 1972 Au 30 2 --7 - MST -Z America/Fort_Nelson -8:10:47 - LMT 1884 --8 Va P%sT 1946 --8 - PST 1947 --8 Va P%sT 1987 --8 C P%sT 2015 Mar 8 2 --7 - MST R Y 1918 o - Ap 14 2 1 D R Y 1918 o - O 27 2 0 S R Y 1919 o - May 25 2 1 D @@ -3130,42 +1728,6 @@ R Y 1972 2006 - O lastSu 2 0 S R Y 1987 2006 - Ap Su>=1 2 1 D R Yu 1965 o - Ap lastSu 0 2 DD R Yu 1965 o - O lastSu 2 0 S -Z America/Iqaluit 0 - -00 1942 Au --5 Y E%sT 1999 O 31 2 --6 C C%sT 2000 O 29 2 --5 C E%sT -Z America/Resolute 0 - -00 1947 Au 31 --6 Y C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 C C%sT 2006 O 29 2 --5 - EST 2007 Mar 11 3 --6 C C%sT -Z America/Rankin_Inlet 0 - -00 1957 --6 Y C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 C C%sT -Z America/Cambridge_Bay 0 - -00 1920 --7 Y M%sT 1999 O 31 2 --6 C C%sT 2000 O 29 2 --5 - EST 2000 N 5 --6 - CST 2001 Ap 1 3 --7 C M%sT -Z America/Inuvik 0 - -00 1953 --8 Y P%sT 1979 Ap lastSu 2 --7 Y M%sT 1980 --7 C M%sT -Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 --9 Y Y%sT 1965 --9 Yu Y%sT 1966 F 27 --8 - PST 1980 --8 C P%sT 2020 N --7 - MST -Z America/Dawson -9:17:40 - LMT 1900 Au 20 --9 Y Y%sT 1965 --9 Yu Y%sT 1973 O 28 --8 - PST 1980 --8 C P%sT 2020 N --7 - MST R m 1931 o - May 1 23 1 D R m 1931 o - O 1 0 0 S R m 1939 o - F 5 0 1 D @@ -3182,107 +1744,6 @@ R m 2001 o - May Su>=1 2 1 D R m 2001 o - S lastSu 2 0 S R m 2002 2022 - Ap Su>=1 2 1 D R m 2002 2022 - O lastSu 2 0 S -Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u --6 - CST 1981 D 23 --5 m E%sT 1998 Au 2 2 --6 m C%sT 2015 F 1 2 --5 - EST -Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u --6 - CST 1981 D 23 --5 - EST 1982 D 2 --6 m C%sT -Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u --6 - CST 1988 --6 u C%sT 1989 --6 m C%sT 2010 --6 u C%sT -Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u --6 - CST 1988 --6 u C%sT 1989 --6 m C%sT -Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 m C%sT 2001 S 30 2 --6 - CST 2002 F 20 --6 m C%sT -Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2010 --7 u M%sT 2022 O 30 2 --6 - CST 2022 N 30 --7 u M%sT -Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2010 --7 u M%sT 2022 O 30 2 --6 - CST 2022 N 30 --6 u C%sT -Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2022 O 30 2 --6 - CST -Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT 1999 --7 - MST -Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT -Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT 2010 Ap 4 2 --6 m C%sT -Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u --7 - MST 1924 --8 - PST 1927 Jun 10 23 --7 - MST 1930 N 15 --8 - PST 1931 Ap --8 1 PDT 1931 S 30 --8 - PST 1942 Ap 24 --8 1 PWT 1945 Au 14 23u --8 1 PPT 1945 N 12 --8 - PST 1948 Ap 5 --8 1 PDT 1949 Ja 14 --8 - PST 1954 --8 CA P%sT 1961 --8 - PST 1976 --8 u P%sT 1996 --8 m P%sT 2001 --8 u P%sT 2002 F 20 --8 m P%sT 2010 --8 u P%sT R BB 1942 o - Ap 19 5u 1 D R BB 1942 o - Au 31 6u 0 S R BB 1943 o - May 2 5u 1 D @@ -3294,10 +1755,6 @@ R BB 1977 1978 - O Su>=1 2 0 S R BB 1978 1980 - Ap Su>=15 2 1 D R BB 1979 o - S 30 2 0 S R BB 1980 o - S 25 2 0 S -Z America/Barbados -3:58:29 - LMT 1911 Au 28 --4 BB A%sT 1944 --4 BB AST/-0330 1945 --4 BB A%sT R BZ 1918 1941 - O Sa>=1 24 0:30 -0530 R BZ 1919 1942 - F Sa>=8 24 0 CST R BZ 1942 o - Jun 27 24 1 CWT @@ -3309,8 +1766,6 @@ R BZ 1973 o - D 5 0 1 CDT R BZ 1974 o - F 9 0 0 CST R BZ 1982 o - D 18 0 1 CDT R BZ 1983 o - F 12 0 0 CST -Z America/Belize -5:52:48 - LMT 1912 Ap --6 BZ %s R Be 1917 o - Ap 5 24 1 - R Be 1917 o - S 30 24 0 - R Be 1918 o - Ap 13 24 1 - @@ -3327,19 +1782,11 @@ R Be 1948 1952 - May Su>=22 2 1 D R Be 1948 1952 - S Su>=1 2 0 S R Be 1956 o - May Su>=22 2 1 D R Be 1956 o - O lastSu 2 0 S -Z Atlantic/Bermuda -4:19:18 - LMT 1890 --4:19:18 Be BMT/BST 1930 Ja 1 2 --4 Be A%sT 1974 Ap 28 2 --4 C A%sT 1976 --4 u A%sT R CR 1979 1980 - F lastSu 0 1 D R CR 1979 1980 - Jun Su>=1 0 0 S R CR 1991 1992 - Ja Sa>=15 0 1 D R CR 1991 o - Jul 1 0 0 S R CR 1992 o - Mar 15 0 0 S -Z America/Costa_Rica -5:36:13 - LMT 1890 --5:36:13 - SJMT 1921 Ja 15 --6 CR C%sT R Q 1928 o - Jun 10 0 1 D R Q 1928 o - O 10 0 0 S R Q 1940 1942 - Jun Su>=1 0 1 D @@ -3379,25 +1826,14 @@ R Q 2011 o - N 13 0s 0 S R Q 2012 o - Ap 1 0s 1 D R Q 2012 ma - N Su>=1 0s 0 S R Q 2013 ma - Mar Su>=8 0s 1 D -Z America/Havana -5:29:28 - LMT 1890 --5:29:36 - HMT 1925 Jul 19 12 --5 Q C%sT R DO 1966 o - O 30 0 1 EDT R DO 1967 o - F 28 0 0 EST R DO 1969 1973 - O lastSu 0 0:30 -0430 R DO 1970 o - F 21 0 0 EST R DO 1971 o - Ja 20 0 0 EST R DO 1972 1974 - Ja 21 0 0 EST -Z America/Santo_Domingo -4:39:36 - LMT 1890 --4:40 - SDMT 1933 Ap 1 12 --5 DO %s 1974 O 27 --4 - AST 2000 O 29 2 --5 u E%sT 2000 D 3 1 --4 - AST R SV 1987 1988 - May Su>=1 0 1 D R SV 1987 1988 - S lastSu 0 0 S -Z America/El_Salvador -5:56:48 - LMT 1921 --6 SV C%sT R GT 1973 o - N 25 0 1 D R GT 1974 o - F 24 0 0 S R GT 1983 o - May 21 0 1 D @@ -3406,8 +1842,6 @@ R GT 1991 o - Mar 23 0 1 D R GT 1991 o - S 7 0 0 S R GT 2006 o - Ap 30 0 1 D R GT 2006 o - O 1 0 0 S -Z America/Guatemala -6:2:4 - LMT 1918 O 5 --6 GT C%sT R HT 1983 o - May 8 0 1 D R HT 1984 1987 - Ap lastSu 0 1 D R HT 1983 1987 - O lastSu 0 0 S @@ -3419,57 +1853,16 @@ R HT 2012 2015 - Mar Su>=8 2 1 D R HT 2012 2015 - N Su>=1 2 0 S R HT 2017 ma - Mar Su>=8 2 1 D R HT 2017 ma - N Su>=1 2 0 S -Z America/Port-au-Prince -4:49:20 - LMT 1890 --4:49 - PPMT 1917 Ja 24 12 --5 HT E%sT R HN 1987 1988 - May Su>=1 0 1 D R HN 1987 1988 - S lastSu 0 0 S R HN 2006 o - May Su>=1 0 1 D R HN 2006 o - Au M>=1 0 0 S -Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap --6 HN C%sT -Z America/Jamaica -5:7:10 - LMT 1890 --5:7:10 - KMT 1912 F --5 - EST 1974 --5 u E%sT 1984 --5 - EST -Z America/Martinique -4:4:20 - LMT 1890 --4:4:20 - FFMT 1911 May --4 - AST 1980 Ap 6 --4 1 ADT 1980 S 28 --4 - AST R NI 1979 1980 - Mar Su>=16 0 1 D R NI 1979 1980 - Jun M>=23 0 0 S R NI 2005 o - Ap 10 0 1 D R NI 2005 o - O Su>=1 0 0 S R NI 2006 o - Ap 30 2 1 D R NI 2006 o - O Su>=1 1 0 S -Z America/Managua -5:45:8 - LMT 1890 --5:45:12 - MMT 1934 Jun 23 --6 - CST 1973 May --5 - EST 1975 F 16 --6 NI C%sT 1992 Ja 1 4 --5 - EST 1992 S 24 --6 - CST 1993 --5 - EST 1997 --6 NI C%sT -Z America/Panama -5:18:8 - LMT 1890 --5:19:36 - CMT 1908 Ap 22 --5 - EST -Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 --4 - AST 1942 May 3 --4 u A%sT 1946 --4 - AST -Z America/Miquelon -3:44:40 - LMT 1911 May 15 --4 - AST 1980 May --3 - -03 1987 --3 C -03/-02 -Z America/Grand_Turk -4:44:32 - LMT 1890 --5:7:10 - KMT 1912 F --5 - EST 1979 --5 u E%sT 2015 Mar 8 2 --4 - AST 2018 Mar 11 3 --5 u E%sT R A 1930 o - D 1 0 1 - R A 1931 o - Ap 1 0 0 - R A 1931 o - O 15 0 1 - @@ -3499,150 +1892,8 @@ R A 2000 o - Mar 3 0 0 - R A 2007 o - D 30 0 1 - R A 2008 2009 - Mar Su>=15 0 0 - R A 2008 o - O Su>=15 0 1 - -Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 -Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 -Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 13 --3 A -03/-02 -Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar --4 - -04 1991 May 7 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar --4 - -04 1991 May 7 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 Mar 4 --4 - -04 1990 O 28 --4 1 -03 1991 Mar 17 --4 - -04 1991 O 6 --3 1 -02 1992 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 Mar 4 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 O 15 --4 1 -03 1992 Mar --4 - -04 1992 O 18 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 23 --4 - -04 2004 S 26 --3 A -03/-02 2008 O 18 --3 - -03 R Sa 2008 2009 - Mar Su>=8 0 0 - R Sa 2007 2008 - O Su>=8 0 1 - -Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 --3 1 -02 1990 Mar 14 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 Jun --3 - -03 1999 O 3 --4 1 -03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 A -03/-02 2008 Ja 21 --4 Sa -04/-03 2009 O 11 --3 - -03 -Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 30 --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/La_Paz -4:32:36 - LMT 1890 --4:32:36 - CMT 1931 O 15 --4:32:36 1 BST 1932 Mar 21 --4 - -04 R B 1931 o - O 3 11 1 - R B 1932 1933 - Ap 1 0 0 - R B 1932 o - O 3 0 1 - @@ -3700,90 +1951,6 @@ R B 2013 2014 - F Su>=15 0 0 - R B 2015 o - F Su>=22 0 0 - R B 2016 2019 - F Su>=15 0 0 - R B 2018 o - N Su>=1 0 1 - -Z America/Noronha -2:9:40 - LMT 1914 --2 B -02/-01 1990 S 17 --2 - -02 1999 S 30 --2 B -02/-01 2000 O 15 --2 - -02 2001 S 13 --2 B -02/-01 2002 O --2 - -02 -Z America/Belem -3:13:56 - LMT 1914 --3 B -03/-02 1988 S 12 --3 - -03 -Z America/Santarem -3:38:48 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 2008 Jun 24 --3 - -03 -Z America/Fortaleza -2:34 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Recife -2:19:36 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 15 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Araguaina -3:12:48 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1995 S 14 --3 B -03/-02 2003 S 24 --3 - -03 2012 O 21 --3 B -03/-02 2013 S --3 - -03 -Z America/Maceio -2:22:52 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1995 O 13 --3 B -03/-02 1996 S 4 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Bahia -2:34:4 - LMT 1914 --3 B -03/-02 2003 S 24 --3 - -03 2011 O 16 --3 B -03/-02 2012 O 21 --3 - -03 -Z America/Sao_Paulo -3:6:28 - LMT 1914 --3 B -03/-02 1963 O 23 --3 1 -02 1964 --3 B -03/-02 -Z America/Campo_Grande -3:38:28 - LMT 1914 --4 B -04/-03 -Z America/Cuiaba -3:44:20 - LMT 1914 --4 B -04/-03 2003 S 24 --4 - -04 2004 O --4 B -04/-03 -Z America/Porto_Velho -4:15:36 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 -Z America/Boa_Vista -4:2:40 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 1999 S 30 --4 B -04/-03 2000 O 15 --4 - -04 -Z America/Manaus -4:0:4 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 1993 S 28 --4 B -04/-03 1994 S 22 --4 - -04 -Z America/Eirunepe -4:39:28 - LMT 1914 --5 B -05/-04 1988 S 12 --5 - -05 1993 S 28 --5 B -05/-04 1994 S 22 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 -Z America/Rio_Branco -4:31:12 - LMT 1914 --5 B -05/-04 1988 S 12 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 R x 1927 1931 - S 1 0 1 - R x 1928 1932 - Ap 1 0 0 - R x 1968 o - N 3 4u 1 - @@ -3820,56 +1987,10 @@ R x 2019 ma - Ap Su>=2 3u 0 - R x 2019 2021 - S Su>=2 4u 1 - R x 2022 o - S Su>=9 4u 1 - R x 2023 ma - S Su>=2 4u 1 - -Z America/Santiago -4:42:45 - LMT 1890 --4:42:45 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:45 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:45 - SMT 1927 S --5 x -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Jul 14 24 --4 1 -03 1946 Au 28 24 --5 1 -04 1947 Mar 31 24 --5 - -05 1947 May 21 23 --4 x -04/-03 -Z America/Punta_Arenas -4:43:40 - LMT 1890 --4:42:45 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:45 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:45 - SMT 1927 S --5 x -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Au 28 24 --5 1 -04 1947 Mar 31 24 --5 - -05 1947 May 21 23 --4 x -04/-03 2016 D 4 --3 - -03 -Z Pacific/Easter -7:17:28 - LMT 1890 --7:17:28 - EMT 1932 S --7 x -07/-06 1982 Mar 14 3u --6 x -06/-05 -Z Antarctica/Palmer 0 - -00 1965 --4 A -04/-03 1969 O 5 --3 A -03/-02 1982 May --4 x -04/-03 2016 D 4 --3 - -03 R CO 1992 o - May 3 0 1 - R CO 1993 o - F 6 24 0 - -Z America/Bogota -4:56:16 - LMT 1884 Mar 13 --4:56:16 - BMT 1914 N 23 --5 CO -05/-04 R EC 1992 o - N 28 0 1 - R EC 1993 o - F 5 0 0 - -Z America/Guayaquil -5:19:20 - LMT 1890 --5:14 - QMT 1931 --5 EC -05/-04 -Z Pacific/Galapagos -5:58:24 - LMT 1931 --5 - -05 1986 --6 EC -06/-05 R FK 1937 1938 - S lastSu 0 1 - R FK 1938 1942 - Mar Su>=19 0 0 - R FK 1939 o - O 1 0 1 - @@ -3882,20 +2003,6 @@ R FK 1985 2000 - S Su>=9 0 1 - R FK 1986 2000 - Ap Su>=16 0 0 - R FK 2001 2010 - Ap Su>=15 2 0 - R FK 2001 2010 - S Su>=1 2 1 - -Z Atlantic/Stanley -3:51:24 - LMT 1890 --3:51:24 - SMT 1912 Mar 12 --4 FK -04/-03 1983 May --3 FK -03/-02 1985 S 15 --4 FK -04/-03 2010 S 5 2 --3 - -03 -Z America/Cayenne -3:29:20 - LMT 1911 Jul --4 - -04 1967 O --3 - -03 -Z America/Guyana -3:52:39 - LMT 1911 Au --4 - -04 1915 Mar --3:45 - -0345 1975 Au --3 - -03 1992 Mar 29 1 --4 - -04 R y 1975 1988 - O 1 0 1 - R y 1975 1978 - Mar 1 0 0 - R y 1979 1991 - Ap 1 0 0 - @@ -3918,11 +2025,6 @@ R y 2005 2009 - Mar Su>=8 0 0 - R y 2010 ma - O Su>=1 0 1 - R y 2010 2012 - Ap Su>=8 0 0 - R y 2013 ma - Mar Su>=22 0 0 - -Z America/Asuncion -3:50:40 - LMT 1890 --3:50:40 - AMT 1931 O 10 --4 - -04 1972 O --3 - -03 1974 Ap --4 y -04/-03 R PE 1938 o - Ja 1 0 1 - R PE 1938 o - Ap 1 0 0 - R PE 1938 1939 - S lastSu 0 1 - @@ -3933,16 +2035,6 @@ R PE 1990 o - Ja 1 0 1 - R PE 1990 o - Ap 1 0 0 - R PE 1994 o - Ja 1 0 1 - R PE 1994 o - Ap 1 0 0 - -Z America/Lima -5:8:12 - LMT 1890 --5:8:36 - LMT 1908 Jul 28 --5 PE -05/-04 -Z Atlantic/South_Georgia -2:26:8 - LMT 1890 --2 - -02 -Z America/Paramaribo -3:40:40 - LMT 1911 --3:40:52 - PMT 1935 --3:40:36 - PMT 1945 O --3:30 - -0330 1984 O --3 - -03 R U 1923 1925 - O 1 0 0:30 - R U 1924 1926 - Ap 1 0 0 - R U 1933 1938 - O lastSu 0 0:30 - @@ -3991,53 +2083,1971 @@ R U 2005 o - Mar 27 2 0 - R U 2005 o - O 9 2 1 - R U 2006 2015 - Mar Su>=8 2 0 - R U 2006 2014 - O Su>=1 2 1 - -Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 --3:44:51 - MMT 1920 May --4 - -04 1923 O --3:30 U -0330/-03 1942 D 14 --3 U -03/-0230 1960 --3 U -03/-02 1968 --3 U -03/-0230 1970 --3 U -03/-02 1974 --3 U -03/-0130 1974 Mar 10 --3 U -03/-0230 1974 D 22 --3 U -03/-02 -Z America/Caracas -4:27:44 - LMT 1890 --4:27:40 - CMT 1912 F 12 --4:30 - -0430 1965 --4 - -04 2007 D 9 3 --4:30 - -0430 2016 May 1 2:30 --4 - -04 -Z Etc/UTC 0 - UTC -Z Etc/GMT 0 - GMT -L Etc/GMT GMT -Z Etc/GMT-14 14 - +14 -Z Etc/GMT-13 13 - +13 -Z Etc/GMT-12 12 - +12 -Z Etc/GMT-11 11 - +11 -Z Etc/GMT-10 10 - +10 -Z Etc/GMT-9 9 - +09 -Z Etc/GMT-8 8 - +08 -Z Etc/GMT-7 7 - +07 -Z Etc/GMT-6 6 - +06 -Z Etc/GMT-5 5 - +05 -Z Etc/GMT-4 4 - +04 -Z Etc/GMT-3 3 - +03 -Z Etc/GMT-2 2 - +02 -Z Etc/GMT-1 1 - +01 -Z Etc/GMT+1 -1 - -01 -Z Etc/GMT+2 -2 - -02 -Z Etc/GMT+3 -3 - -03 -Z Etc/GMT+4 -4 - -04 -Z Etc/GMT+5 -5 - -05 -Z Etc/GMT+6 -6 - -06 -Z Etc/GMT+7 -7 - -07 -Z Etc/GMT+8 -8 - -08 -Z Etc/GMT+9 -9 - -09 -Z Etc/GMT+10 -10 - -10 -Z Etc/GMT+11 -11 - -11 -Z Etc/GMT+12 -12 - -12 -Z Factory 0 - -00 +Z Africa/Abidjan -0:16:8 - LMT 1912 +0 - GMT +Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16 +0:9:21 - PMT 1911 Mar 11 +0 d WE%sT 1940 F 25 2 +1 d CE%sT 1946 O 7 +0 - WET 1956 Ja 29 +1 - CET 1963 Ap 14 +0 d WE%sT 1977 O 21 +1 d CE%sT 1979 O 26 +0 d WE%sT 1981 May +1 - CET +Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u +-1 - -01 1975 +0 - GMT +Z Africa/Cairo 2:5:9 - LMT 1900 O +2 K EE%sT +Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 +0 M +00/+01 1984 Mar 16 +1 - +01 1986 +0 M +00/+01 2018 O 28 3 +1 M +01/+00 +Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u +0 - WET 1918 May 6 23 +0 1 WEST 1918 O 7 23 +0 - WET 1924 +0 s WE%sT 1929 +0 - WET 1967 +0 Sp WE%sT 1984 Mar 16 +1 - CET 1986 +1 E CE%sT +Z Africa/El_Aaiun -0:52:48 - LMT 1934 +-1 - -01 1976 Ap 14 +0 M +00/+01 2018 O 28 3 +1 M +01/+00 +Z Africa/Johannesburg 1:52 - LMT 1892 F 8 +1:30 - SAST 1903 Mar +2 SA SAST +Z Africa/Juba 2:6:28 - LMT 1931 +2 SD CA%sT 2000 Ja 15 12 +3 - EAT 2021 F +2 - CAT +Z Africa/Khartoum 2:10:8 - LMT 1931 +2 SD CA%sT 2000 Ja 15 12 +3 - EAT 2017 N +2 - CAT +Z Africa/Lagos 0:13:35 - LMT 1905 Jul +0 - GMT 1908 Jul +0:13:35 - LMT 1914 +0:30 - +0030 1919 S +1 - WAT +Z Africa/Maputo 2:10:20 - LMT 1903 Mar +2 - CAT +Z Africa/Monrovia -0:43:8 - LMT 1882 +-0:43:8 - MMT 1919 Mar +-0:44:30 - MMT 1972 Ja 7 +0 - GMT +Z Africa/Nairobi 2:27:16 - LMT 1908 May +2:30 - +0230 1928 Jun 30 24 +3 - EAT 1930 Ja 4 24 +2:30 - +0230 1936 D 31 24 +2:45 - +0245 1942 Jul 31 24 +3 - EAT +Z Africa/Ndjamena 1:0:12 - LMT 1912 +1 - WAT 1979 O 14 +1 1 WAST 1980 Mar 8 +1 - WAT +Z Africa/Sao_Tome 0:26:56 - LMT 1884 +-0:36:45 - LMT 1912 Ja 1 0u +0 - GMT 2018 Ja 1 1 +1 - WAT 2019 Ja 1 2 +0 - GMT +Z Africa/Tripoli 0:52:44 - LMT 1920 +1 L CE%sT 1959 +2 - EET 1982 +1 L CE%sT 1990 May 4 +2 - EET 1996 S 30 +1 L CE%sT 1997 O 4 +2 - EET 2012 N 10 2 +1 L CE%sT 2013 O 25 2 +2 - EET +Z Africa/Tunis 0:40:44 - LMT 1881 May 12 +0:9:21 - PMT 1911 Mar 11 +1 n CE%sT +Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 +1:30 - +0130 1903 Mar +2 - SAST 1942 S 20 2 +2 1 SAST 1943 Mar 21 2 +2 - SAST 1990 Mar 21 +2 NA %s +Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 +-11:46:38 - LMT 1900 Au 20 12 +-11 - NST 1942 +-11 u N%sT 1946 +-11 - NST 1967 Ap +-11 - BST 1969 +-11 u B%sT 1983 O 30 2 +-10 u AH%sT 1983 N 30 +-10 u H%sT +Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 +-9:59:36 - LMT 1900 Au 20 12 +-10 - AST 1942 +-10 u A%sT 1967 Ap +-10 - AHST 1969 +-10 u AH%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Araguaina -3:12:48 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1995 S 14 +-3 B -03/-02 2003 S 24 +-3 - -03 2012 O 21 +-3 B -03/-02 2013 S +-3 - -03 +Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 +Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 +Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 Mar 4 +-4 - -04 1990 O 28 +-4 1 -03 1991 Mar 17 +-4 - -04 1991 O 6 +-3 1 -02 1992 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar +-4 - -04 1991 May 7 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 Mar 4 +-4 - -04 1990 O 15 +-4 1 -03 1991 Mar +-4 - -04 1991 O 15 +-4 1 -03 1992 Mar +-4 - -04 1992 O 18 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 23 +-4 - -04 2004 S 26 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar +-4 - -04 1991 May 7 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 31 +-4 - -04 2004 Jul 25 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 +-3 1 -02 1990 Mar 14 +-4 - -04 1990 O 15 +-4 1 -03 1991 Mar +-4 - -04 1991 Jun +-3 - -03 1999 O 3 +-4 1 -03 2000 Mar 3 +-3 - -03 2004 May 31 +-4 - -04 2004 Jul 25 +-3 A -03/-02 2008 Ja 21 +-4 Sa -04/-03 2009 O 11 +-3 - -03 +Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 13 +-3 A -03/-02 +Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 30 +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Asuncion -3:50:40 - LMT 1890 +-3:50:40 - AMT 1931 O 10 +-4 - -04 1972 O +-3 - -03 1974 Ap +-4 y -04/-03 +Z America/Bahia -2:34:4 - LMT 1914 +-3 B -03/-02 2003 S 24 +-3 - -03 2011 O 16 +-3 B -03/-02 2012 O 21 +-3 - -03 +Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT 2010 Ap 4 2 +-6 m C%sT +Z America/Barbados -3:58:29 - LMT 1911 Au 28 +-4 BB A%sT 1944 +-4 BB AST/-0330 1945 +-4 BB A%sT +Z America/Belem -3:13:56 - LMT 1914 +-3 B -03/-02 1988 S 12 +-3 - -03 +Z America/Belize -5:52:48 - LMT 1912 Ap +-6 BZ %s +Z America/Boa_Vista -4:2:40 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 1999 S 30 +-4 B -04/-03 2000 O 15 +-4 - -04 +Z America/Bogota -4:56:16 - LMT 1884 Mar 13 +-4:56:16 - BMT 1914 N 23 +-5 CO -05/-04 +Z America/Boise -7:44:49 - LMT 1883 N 18 20u +-8 u P%sT 1923 May 13 2 +-7 u M%sT 1974 +-7 - MST 1974 F 3 2 +-7 u M%sT +Z America/Cambridge_Bay 0 - -00 1920 +-7 Y M%sT 1999 O 31 2 +-6 C C%sT 2000 O 29 2 +-5 - EST 2000 N 5 +-6 - CST 2001 Ap 1 3 +-7 C M%sT +Z America/Campo_Grande -3:38:28 - LMT 1914 +-4 B -04/-03 +Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u +-6 - CST 1981 D 23 +-5 m E%sT 1998 Au 2 2 +-6 m C%sT 2015 F 1 2 +-5 - EST +Z America/Caracas -4:27:44 - LMT 1890 +-4:27:40 - CMT 1912 F 12 +-4:30 - -0430 1965 +-4 - -04 2007 D 9 3 +-4:30 - -0430 2016 May 1 2:30 +-4 - -04 +Z America/Cayenne -3:29:20 - LMT 1911 Jul +-4 - -04 1967 O +-3 - -03 +Z America/Chicago -5:50:36 - LMT 1883 N 18 18u +-6 u C%sT 1920 +-6 Ch C%sT 1936 Mar 1 2 +-5 - EST 1936 N 15 2 +-6 Ch C%sT 1942 +-6 u C%sT 1946 +-6 Ch C%sT 1967 +-6 u C%sT +Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2022 O 30 2 +-6 - CST +Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2010 +-7 u M%sT 2022 O 30 2 +-6 - CST 2022 N 30 +-7 u M%sT +Z America/Costa_Rica -5:36:13 - LMT 1890 +-5:36:13 - SJMT 1921 Ja 15 +-6 CR C%sT +Z America/Cuiaba -3:44:20 - LMT 1914 +-4 B -04/-03 2003 S 24 +-4 - -04 2004 O +-4 B -04/-03 +Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 +-3 - -03 1980 Ap 6 2 +-3 E -03/-02 1996 +0 - GMT +Z America/Dawson -9:17:40 - LMT 1900 Au 20 +-9 Y Y%sT 1965 +-9 Yu Y%sT 1973 O 28 +-8 - PST 1980 +-8 C P%sT 2020 N +-7 - MST +Z America/Dawson_Creek -8:0:56 - LMT 1884 +-8 C P%sT 1947 +-8 Va P%sT 1972 Au 30 2 +-7 - MST +Z America/Denver -6:59:56 - LMT 1883 N 18 19u +-7 u M%sT 1920 +-7 De M%sT 1942 +-7 u M%sT 1946 +-7 De M%sT 1967 +-7 u M%sT +Z America/Detroit -5:32:11 - LMT 1905 +-6 - CST 1915 May 15 2 +-5 - EST 1942 +-5 u E%sT 1946 +-5 Dt E%sT 1967 Jun 14 0:1 +-5 u E%sT 1969 +-5 - EST 1973 +-5 u E%sT 1975 +-5 - EST 1975 Ap 27 2 +-5 u E%sT +Z America/Edmonton -7:33:52 - LMT 1906 S +-7 Ed M%sT 1987 +-7 C M%sT +Z America/Eirunepe -4:39:28 - LMT 1914 +-5 B -05/-04 1988 S 12 +-5 - -05 1993 S 28 +-5 B -05/-04 1994 S 22 +-5 - -05 2008 Jun 24 +-4 - -04 2013 N 10 +-5 - -05 +Z America/El_Salvador -5:56:48 - LMT 1921 +-6 SV C%sT +Z America/Fort_Nelson -8:10:47 - LMT 1884 +-8 Va P%sT 1946 +-8 - PST 1947 +-8 Va P%sT 1987 +-8 C P%sT 2015 Mar 8 2 +-7 - MST +Z America/Fortaleza -2:34 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 22 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 +-4 C A%sT 1953 +-4 H A%sT 1954 +-4 - AST 1972 +-4 H A%sT 1974 +-4 C A%sT +Z America/Goose_Bay -4:1:40 - LMT 1884 +-3:30:52 - NST 1918 +-3:30:52 C N%sT 1919 +-3:30:52 - NST 1935 Mar 30 +-3:30 - NST 1936 +-3:30 j N%sT 1942 May 11 +-3:30 C N%sT 1946 +-3:30 j N%sT 1966 Mar 15 2 +-4 j A%sT 2011 N +-4 C A%sT +Z America/Grand_Turk -4:44:32 - LMT 1890 +-5:7:10 - KMT 1912 F +-5 - EST 1979 +-5 u E%sT 2015 Mar 8 2 +-4 - AST 2018 Mar 11 3 +-5 u E%sT +Z America/Guatemala -6:2:4 - LMT 1918 O 5 +-6 GT C%sT +Z America/Guayaquil -5:19:20 - LMT 1890 +-5:14 - QMT 1931 +-5 EC -05/-04 +Z America/Guyana -3:52:39 - LMT 1911 Au +-4 - -04 1915 Mar +-3:45 - -0345 1975 Au +-3 - -03 1992 Mar 29 1 +-4 - -04 +Z America/Halifax -4:14:24 - LMT 1902 Jun 15 +-4 H A%sT 1918 +-4 C A%sT 1919 +-4 H A%sT 1942 F 9 2s +-4 C A%sT 1946 +-4 H A%sT 1974 +-4 C A%sT +Z America/Havana -5:29:28 - LMT 1890 +-5:29:36 - HMT 1925 Jul 19 12 +-5 Q C%sT +Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT 1999 +-7 - MST +Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u +-6 u C%sT 1920 +-6 In C%sT 1942 +-6 u C%sT 1946 +-6 In C%sT 1955 Ap 24 2 +-5 - EST 1957 S 29 2 +-6 - CST 1958 Ap 27 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u +-6 u C%sT 1947 +-6 St C%sT 1962 Ap 29 2 +-5 - EST 1963 O 27 2 +-6 u C%sT 1991 O 27 2 +-5 - EST 2006 Ap 2 2 +-6 u C%sT +Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u +-6 u C%sT 1951 +-6 Ma C%sT 1961 Ap 30 2 +-5 - EST 1969 +-5 u E%sT 1974 Ja 6 2 +-6 1 CDT 1974 O 27 2 +-5 u E%sT 1976 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u +-6 u C%sT 1955 +-6 Pi C%sT 1965 Ap 25 2 +-5 - EST 1966 O 30 2 +-6 u C%sT 1977 O 30 2 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 N 4 2 +-5 u E%sT +Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 Pe C%sT 1964 Ap 26 2 +-5 - EST 1967 O 29 2 +-6 u C%sT 1969 Ap 27 2 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT +Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u +-6 u C%sT 1954 Ap 25 2 +-5 - EST 1969 +-5 u E%sT 1973 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 V C%sT 1964 Ap 26 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 N 4 2 +-5 u E%sT +Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 Pu C%sT 1961 Ap 30 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 Mar 11 2 +-5 u E%sT +Z America/Inuvik 0 - -00 1953 +-8 Y P%sT 1979 Ap lastSu 2 +-7 Y M%sT 1980 +-7 C M%sT +Z America/Iqaluit 0 - -00 1942 Au +-5 Y E%sT 1999 O 31 2 +-6 C C%sT 2000 O 29 2 +-5 C E%sT +Z America/Jamaica -5:7:10 - LMT 1890 +-5:7:10 - KMT 1912 F +-5 - EST 1974 +-5 u E%sT 1984 +-5 - EST +Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 +-8:57:41 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1980 Ap 27 2 +-9 u Y%sT 1980 O 26 2 +-8 u P%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u +-6 u C%sT 1921 +-6 v C%sT 1942 +-6 u C%sT 1946 +-6 v C%sT 1961 Jul 23 2 +-5 - EST 1968 +-5 u E%sT 1974 Ja 6 2 +-6 1 CDT 1974 O 27 2 +-5 u E%sT +Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 - CST 1968 +-6 u C%sT 2000 O 29 2 +-5 u E%sT +Z America/La_Paz -4:32:36 - LMT 1890 +-4:32:36 - CMT 1931 O 15 +-4:32:36 1 BST 1932 Mar 21 +-4 - -04 +Z America/Lima -5:8:12 - LMT 1890 +-5:8:36 - LMT 1908 Jul 28 +-5 PE -05/-04 +Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u +-8 u P%sT 1946 +-8 CA P%sT 1967 +-8 u P%sT +Z America/Maceio -2:22:52 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1995 O 13 +-3 B -03/-02 1996 S 4 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 22 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Managua -5:45:8 - LMT 1890 +-5:45:12 - MMT 1934 Jun 23 +-6 - CST 1973 May +-5 - EST 1975 F 16 +-6 NI C%sT 1992 Ja 1 4 +-5 - EST 1992 S 24 +-6 - CST 1993 +-5 - EST 1997 +-6 NI C%sT +Z America/Manaus -4:0:4 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 1993 S 28 +-4 B -04/-03 1994 S 22 +-4 - -04 +Z America/Martinique -4:4:20 - LMT 1890 +-4:4:20 - FFMT 1911 May +-4 - AST 1980 Ap 6 +-4 1 ADT 1980 S 28 +-4 - AST +Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u +-6 - CST 1988 +-6 u C%sT 1989 +-6 m C%sT 2010 +-6 u C%sT +Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT +Z America/Menominee -5:50:27 - LMT 1885 S 18 12 +-6 u C%sT 1946 +-6 Me C%sT 1969 Ap 27 2 +-5 - EST 1973 Ap 29 2 +-6 u C%sT +Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u +-6 - CST 1981 D 23 +-5 - EST 1982 D 2 +-6 m C%sT +Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 +-8:46:18 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1983 O 30 2 +-8 - PST 2015 N 1 2 +-9 u AK%sT 2018 N 4 2 +-8 - PST 2019 Ja 20 2 +-9 u AK%sT +Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 m C%sT 2001 S 30 2 +-6 - CST 2002 F 20 +-6 m C%sT +Z America/Miquelon -3:44:40 - LMT 1911 Jun 15 +-4 - AST 1980 May +-3 - -03 1987 +-3 C -03/-02 +Z America/Moncton -4:19:8 - LMT 1883 D 9 +-5 - EST 1902 Jun 15 +-4 C A%sT 1933 +-4 o A%sT 1942 +-4 C A%sT 1946 +-4 o A%sT 1973 +-4 C A%sT 1993 +-4 o A%sT 2007 +-4 C A%sT +Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u +-6 - CST 1988 +-6 u C%sT 1989 +-6 m C%sT +Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 +-3:44:51 - MMT 1920 May +-4 - -04 1923 O +-3:30 U -0330/-03 1942 D 14 +-3 U -03/-0230 1960 +-3 U -03/-02 1968 +-3 U -03/-0230 1970 +-3 U -03/-02 1974 +-3 U -03/-0130 1974 Mar 10 +-3 U -03/-0230 1974 D 22 +-3 U -03/-02 +Z America/New_York -4:56:2 - LMT 1883 N 18 17u +-5 u E%sT 1920 +-5 NY E%sT 1942 +-5 u E%sT 1946 +-5 NY E%sT 1967 +-5 u E%sT +Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 +-11:1:38 - LMT 1900 Au 20 12 +-11 - NST 1942 +-11 u N%sT 1946 +-11 - NST 1967 Ap +-11 - BST 1969 +-11 u B%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Noronha -2:9:40 - LMT 1914 +-2 B -02/-01 1990 S 17 +-2 - -02 1999 S 30 +-2 B -02/-01 2000 O 15 +-2 - -02 2001 S 13 +-2 B -02/-01 2002 O +-2 - -02 +Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u +-7 u M%sT 2010 N 7 2 +-6 u C%sT +Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u +-7 u M%sT 1992 O 25 2 +-6 u C%sT +Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u +-7 u M%sT 2003 O 26 2 +-6 u C%sT +Z America/Nuuk -3:26:56 - LMT 1916 Jul 28 +-3 - -03 1980 Ap 6 2 +-3 E -03/-02 2023 Mar 26 1u +-2 - -02 2023 O 29 1u +-2 E -02/-01 +Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2010 +-7 u M%sT 2022 O 30 2 +-6 - CST 2022 N 30 +-6 u C%sT +Z America/Panama -5:18:8 - LMT 1890 +-5:19:36 - CMT 1908 Ap 22 +-5 - EST +Z America/Paramaribo -3:40:40 - LMT 1911 +-3:40:52 - PMT 1935 +-3:40:36 - PMT 1945 O +-3:30 - -0330 1984 O +-3 - -03 +Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u +-7 u M%sT 1944 Ja 1 0:1 +-7 - MST 1944 Ap 1 0:1 +-7 u M%sT 1944 O 1 0:1 +-7 - MST 1967 +-7 u M%sT 1968 Mar 21 +-7 - MST +Z America/Port-au-Prince -4:49:20 - LMT 1890 +-4:49 - PPMT 1917 Ja 24 12 +-5 HT E%sT +Z America/Porto_Velho -4:15:36 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 +Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 +-4 - AST 1942 May 3 +-4 u A%sT 1946 +-4 - AST +Z America/Punta_Arenas -4:43:40 - LMT 1890 +-4:42:45 - SMT 1910 Ja 10 +-5 - -05 1916 Jul +-4:42:45 - SMT 1918 S 10 +-4 - -04 1919 Jul +-4:42:45 - SMT 1927 S +-5 x -05/-04 1932 S +-4 - -04 1942 Jun +-5 - -05 1942 Au +-4 - -04 1946 Au 28 24 +-5 1 -04 1947 Mar 31 24 +-5 - -05 1947 May 21 23 +-4 x -04/-03 2016 D 4 +-3 - -03 +Z America/Rankin_Inlet 0 - -00 1957 +-6 Y C%sT 2000 O 29 2 +-5 - EST 2001 Ap 1 3 +-6 C C%sT +Z America/Recife -2:19:36 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 15 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Regina -6:58:36 - LMT 1905 S +-7 r M%sT 1960 Ap lastSu 2 +-6 - CST +Z America/Resolute 0 - -00 1947 Au 31 +-6 Y C%sT 2000 O 29 2 +-5 - EST 2001 Ap 1 3 +-6 C C%sT 2006 O 29 2 +-5 - EST 2007 Mar 11 3 +-6 C C%sT +Z America/Rio_Branco -4:31:12 - LMT 1914 +-5 B -05/-04 1988 S 12 +-5 - -05 2008 Jun 24 +-4 - -04 2013 N 10 +-5 - -05 +Z America/Santarem -3:38:48 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 2008 Jun 24 +-3 - -03 +Z America/Santiago -4:42:45 - LMT 1890 +-4:42:45 - SMT 1910 Ja 10 +-5 - -05 1916 Jul +-4:42:45 - SMT 1918 S 10 +-4 - -04 1919 Jul +-4:42:45 - SMT 1927 S +-5 x -05/-04 1932 S +-4 - -04 1942 Jun +-5 - -05 1942 Au +-4 - -04 1946 Jul 14 24 +-4 1 -03 1946 Au 28 24 +-5 1 -04 1947 Mar 31 24 +-5 - -05 1947 May 21 23 +-4 x -04/-03 +Z America/Santo_Domingo -4:39:36 - LMT 1890 +-4:40 - SDMT 1933 Ap 1 12 +-5 DO %s 1974 O 27 +-4 - AST 2000 O 29 2 +-5 u E%sT 2000 D 3 1 +-4 - AST +Z America/Sao_Paulo -3:6:28 - LMT 1914 +-3 B -03/-02 1963 O 23 +-3 1 -02 1964 +-3 B -03/-02 +Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 +-2 - -02 1980 Ap 6 2 +-2 c -02/-01 1981 Mar 29 +-1 E -01/+00 2024 Mar 31 +-2 E -02/-01 +Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 +-9:1:13 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/St_Johns -3:30:52 - LMT 1884 +-3:30:52 j N%sT 1918 +-3:30:52 C N%sT 1919 +-3:30:52 j N%sT 1935 Mar 30 +-3:30 j N%sT 1942 May 11 +-3:30 C N%sT 1946 +-3:30 j N%sT 2011 N +-3:30 C N%sT +Z America/Swift_Current -7:11:20 - LMT 1905 S +-7 C M%sT 1946 Ap lastSu 2 +-7 r M%sT 1950 +-7 Sw M%sT 1972 Ap lastSu 2 +-6 - CST +Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap +-6 HN C%sT +Z America/Thule -4:35:8 - LMT 1916 Jul 28 +-4 Th A%sT +Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u +-7 - MST 1924 +-8 - PST 1927 Jun 10 23 +-7 - MST 1930 N 15 +-8 - PST 1931 Ap +-8 1 PDT 1931 S 30 +-8 - PST 1942 Ap 24 +-8 1 PWT 1945 Au 14 23u +-8 1 PPT 1945 N 12 +-8 - PST 1948 Ap 5 +-8 1 PDT 1949 Ja 14 +-8 - PST 1954 +-8 CA P%sT 1961 +-8 - PST 1976 +-8 u P%sT 1996 +-8 m P%sT 2001 +-8 u P%sT 2002 F 20 +-8 m P%sT 2010 +-8 u P%sT +Z America/Toronto -5:17:32 - LMT 1895 +-5 C E%sT 1919 +-5 t E%sT 1942 F 9 2s +-5 C E%sT 1946 +-5 t E%sT 1974 +-5 C E%sT +Z America/Vancouver -8:12:28 - LMT 1884 +-8 Va P%sT 1987 +-8 C P%sT +Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 +-9 Y Y%sT 1965 +-9 Yu Y%sT 1966 F 27 +-8 - PST 1980 +-8 C P%sT 2020 N +-7 - MST +Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 +-6 W C%sT 2006 +-6 C C%sT +Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 +-9:18:55 - LMT 1900 Au 20 12 +-9 - YST 1942 +-9 u Y%sT 1946 +-9 - YST 1969 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z Antarctica/Casey 0 - -00 1969 +8 - +08 2009 O 18 2 +11 - +11 2010 Mar 5 2 +8 - +08 2011 O 28 2 +11 - +11 2012 F 21 17u +8 - +08 2016 O 22 +11 - +11 2018 Mar 11 4 +8 - +08 2018 O 7 4 +11 - +11 2019 Mar 17 3 +8 - +08 2019 O 4 3 +11 - +11 2020 Mar 8 3 +8 - +08 2020 O 4 0:1 +11 - +11 2021 Mar 14 +8 - +08 2021 O 3 0:1 +11 - +11 2022 Mar 13 +8 - +08 2022 O 2 0:1 +11 - +11 2023 Mar 9 3 +8 - +08 +Z Antarctica/Davis 0 - -00 1957 Ja 13 +7 - +07 1964 N +0 - -00 1969 F +7 - +07 2009 O 18 2 +5 - +05 2010 Mar 10 20u +7 - +07 2011 O 28 2 +5 - +05 2012 F 21 20u +7 - +07 +Z Antarctica/Macquarie 0 - -00 1899 N +10 - AEST 1916 O 1 2 +10 1 AEDT 1917 F +10 AU AE%sT 1919 Ap 1 0s +0 - -00 1948 Mar 25 +10 AU AE%sT 1967 +10 AT AE%sT 2010 +10 1 AEDT 2011 +10 AT AE%sT +Z Antarctica/Mawson 0 - -00 1954 F 13 +6 - +06 2009 O 18 2 +5 - +05 +Z Antarctica/Palmer 0 - -00 1965 +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1982 May +-4 x -04/-03 2016 D 4 +-3 - -03 +Z Antarctica/Rothera 0 - -00 1976 D +-3 - -03 +Z Antarctica/Troll 0 - -00 2005 F 12 +0 Tr %s +Z Antarctica/Vostok 0 - -00 1957 D 16 +7 - +07 1994 F +0 - -00 1994 N +7 - +07 2023 D 18 2 +5 - +05 +Z Asia/Almaty 5:7:48 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 2004 O 31 2s +6 - +06 2024 Mar +5 - +05 +Z Asia/Amman 2:23:44 - LMT 1931 +2 J EE%sT 2022 O 28 0s +3 - +03 +Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 +12 - +12 1930 Jun 21 +13 R +13/+14 1982 Ap 1 0s +12 R +12/+13 1991 Mar 31 2s +11 R +11/+12 1992 Ja 19 2s +12 R +12/+13 2010 Mar 28 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 +Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1994 S 25 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2004 O 31 2s +5 - +05 +Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 R +05/+06 1991 Mar 31 2 +4 R +04/+05 1992 Ja 19 2 +5 - +05 +Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 +3 - +03 1930 Jun 21 +5 - +05 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1999 Mar 28 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Baghdad 2:57:40 - LMT 1890 +2:57:36 - BMT 1918 +3 - +03 1982 May +3 IQ +03/+04 +Z Asia/Baku 3:19:24 - LMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1992 S lastSu 2s +4 - +04 1996 +4 E +04/+05 1997 +4 AZ +04/+05 +Z Asia/Bangkok 6:42:4 - LMT 1880 +6:42:4 - BMT 1920 Ap +7 - +07 +Z Asia/Barnaul 5:35 - LMT 1919 D 10 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 1995 May 28 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 Mar 27 2s +7 - +07 +Z Asia/Beirut 2:22 - LMT 1880 +2 l EE%sT +Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1991 Au 31 2 +5 KG +05/+06 2005 Au 12 +6 - +06 +Z Asia/Chita 7:33:52 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2011 Mar 27 2s +10 - +10 2014 O 26 2s +8 - +08 2016 Mar 27 2 +9 - +09 +Z Asia/Choibalsan 7:38 - LMT 1905 Au +7 - +07 1978 +8 - +08 1983 Ap +9 X +09/+10 2008 Mar 31 +8 X +08/+09 +Z Asia/Colombo 5:19:24 - LMT 1880 +5:19:32 - MMT 1906 +5:30 - +0530 1942 Ja 5 +5:30 0:30 +06 1942 S +5:30 1 +0630 1945 O 16 2 +5:30 - +0530 1996 May 25 +6:30 - +0630 1996 O 26 0:30 +6 - +06 2006 Ap 15 0:30 +5:30 - +0530 +Z Asia/Damascus 2:25:12 - LMT 1920 +2 S EE%sT 2022 O 28 +3 - +03 +Z Asia/Dhaka 6:1:40 - LMT 1890 +5:53:20 - HMT 1941 O +6:30 - +0630 1942 May 15 +5:30 - +0530 1942 S +6:30 - +0630 1951 S 30 +6 - +06 2009 +6 BD +06/+07 +Z Asia/Dili 8:22:20 - LMT 1912 +8 - +08 1942 F 21 23 +9 - +09 1976 May 3 +8 - +08 2000 S 17 +9 - +09 +Z Asia/Dubai 3:41:12 - LMT 1920 +4 - +04 +Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 1 +06 1991 S 9 2s +5 - +05 +Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 +2 CY EE%sT 1998 S +2 E EE%sT 2016 S 8 +3 - +03 2017 O 29 1u +2 E EE%sT +Z Asia/Gaza 2:17:52 - LMT 1900 O +2 Z EET/EEST 1948 May 15 +2 K EE%sT 1967 Jun 5 +2 Z I%sT 1996 +2 J EE%sT 1999 +2 P EE%sT 2008 Au 29 +2 - EET 2008 S +2 P EE%sT 2010 +2 - EET 2010 Mar 27 0:1 +2 P EE%sT 2011 Au +2 - EET 2012 +2 P EE%sT +Z Asia/Hebron 2:20:23 - LMT 1900 O +2 Z EET/EEST 1948 May 15 +2 K EE%sT 1967 Jun 5 +2 Z I%sT 1996 +2 J EE%sT 1999 +2 P EE%sT +Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul +7:6:30 - PLMT 1911 May +7 - +07 1942 D 31 23 +8 - +08 1945 Mar 14 23 +9 - +09 1945 S 1 24 +7 - +07 1947 Ap +8 - +08 1955 Jul 1 1 +7 - +07 1959 D 31 23 +8 - +08 1975 Jun 13 +7 - +07 +Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u +8 - HKT 1941 Jun 15 3 +8 1 HKST 1941 O 1 4 +8 0:30 HKWT 1941 D 25 +9 - JST 1945 N 18 2 +8 HK HK%sT +Z Asia/Hovd 6:6:36 - LMT 1905 Au +6 - +06 1978 +7 X +07/+08 +Z Asia/Irkutsk 6:57:5 - LMT 1880 +6:57:5 - IMT 1920 Ja 25 +7 - +07 1930 Jun 21 +8 R +08/+09 1991 Mar 31 2s +7 R +07/+08 1992 Ja 19 2s +8 R +08/+09 2011 Mar 27 2s +9 - +09 2014 O 26 2s +8 - +08 +Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 +7:7:12 - BMT 1923 D 31 16:40u +7:20 - +0720 1932 N +7:30 - +0730 1942 Mar 23 +9 - +09 1945 S 23 +7:30 - +0730 1948 May +8 - +08 1950 May +7:30 - +0730 1964 +7 - WIB +Z Asia/Jayapura 9:22:48 - LMT 1932 N +9 - +09 1944 S +9:30 - +0930 1964 +9 - WIT +Z Asia/Jerusalem 2:20:54 - LMT 1880 +2:20:40 - JMT 1918 +2 Z I%sT +Z Asia/Kabul 4:36:48 - LMT 1890 +4 - +04 1945 +4:30 - +0430 +Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 +11 - +11 1930 Jun 21 +12 R +12/+13 1991 Mar 31 2s +11 R +11/+12 1992 Ja 19 2s +12 R +12/+13 2010 Mar 28 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 +Z Asia/Karachi 4:28:12 - LMT 1907 +5:30 - +0530 1942 S +5:30 1 +0630 1945 O 15 +5:30 - +0530 1951 S 30 +5 - +05 1971 Mar 26 +5 PK PK%sT +Z Asia/Kathmandu 5:41:16 - LMT 1920 +5:30 - +0530 1986 +5:45 - +0545 +Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2004 +10 R +10/+11 2011 Mar 27 2s +11 - +11 2011 S 13 0s +10 - +10 2014 O 26 2s +9 - +09 +Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 +5:53:20 - HMT 1870 +5:21:10 - MMT 1906 +5:30 - IST 1941 O +5:30 1 +0630 1942 May 15 +5:30 - IST 1942 S +5:30 1 +0630 1945 O 15 +5:30 - IST +Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2011 Mar 27 2s +8 - +08 2014 O 26 2s +7 - +07 +Z Asia/Kuching 7:21:20 - LMT 1926 Mar +7:30 - +0730 1933 +8 NB +08/+0820 1942 F 16 +9 - +09 1945 S 12 +8 - +08 +Z Asia/Macau 7:34:10 - LMT 1904 O 30 +8 - CST 1941 D 21 23 +9 _ +09/+10 1945 S 30 24 +8 _ C%sT +Z Asia/Magadan 10:3:12 - LMT 1924 May 2 +10 - +10 1930 Jun 21 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2014 O 26 2s +10 - +10 2016 Ap 24 2s +11 - +11 +Z Asia/Makassar 7:57:36 - LMT 1920 +7:57:36 - MMT 1932 N +8 - +08 1942 F 9 +9 - +09 1945 S 23 +8 - WITA +Z Asia/Manila -15:56 - LMT 1844 D 31 +8:4 - LMT 1899 May 11 +8 PH P%sT 1942 May +9 - JST 1944 N +8 PH P%sT +Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 +2 CY EE%sT 1998 S +2 E EE%sT +Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2010 Mar 28 2s +6 R +06/+07 2011 Mar 27 2s +7 - +07 +Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 1993 May 23 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 Jul 24 2s +7 - +07 +Z Asia/Omsk 4:53:30 - LMT 1919 N 14 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 +Z Asia/Oral 3:25:24 - LMT 1924 May 2 +3 - +03 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1989 Mar 26 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1992 Mar 29 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Pontianak 7:17:20 - LMT 1908 May +7:17:20 - PMT 1932 N +7:30 - +0730 1942 Ja 29 +9 - +09 1945 S 23 +7:30 - +0730 1948 May +8 - +08 1950 May +7:30 - +0730 1964 +8 - WITA 1988 +7 - WIB +Z Asia/Pyongyang 8:23 - LMT 1908 Ap +8:30 - KST 1912 +9 - JST 1945 Au 24 +9 - KST 2015 Au 15 +8:30 - KST 2018 May 4 23:30 +9 - KST +Z Asia/Qatar 3:26:8 - LMT 1920 +4 - +04 1972 Jun +3 - +03 +Z Asia/Qostanay 4:14:28 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2004 O 31 2s +6 - +06 2024 Mar +5 - +05 +Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1991 S 29 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 1992 Mar 29 2s +5 R +05/+06 2004 O 31 2s +6 - +06 2018 D 21 +5 - +05 +Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 +3 - +03 +Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 +9 - +09 1945 Au 25 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 1997 Mar lastSu 2s +10 R +10/+11 2011 Mar 27 2s +11 - +11 2014 O 26 2s +10 - +10 2016 Mar 27 2s +11 - +11 +Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1992 +5 - +05 +Z Asia/Seoul 8:27:52 - LMT 1908 Ap +8:30 - KST 1912 +9 - JST 1945 S 8 +9 KR K%sT 1954 Mar 21 +8:30 KR K%sT 1961 Au 10 +9 KR K%sT +Z Asia/Shanghai 8:5:43 - LMT 1901 +8 Sh C%sT 1949 May 28 +8 CN C%sT +Z Asia/Singapore 6:55:25 - LMT 1901 +6:55:25 - SMT 1905 Jun +7 - +07 1933 +7 0:20 +0720 1936 +7:20 - +0720 1941 S +7:30 - +0730 1942 F 16 +9 - +09 1945 S 12 +7:30 - +0730 1981 D 31 16u +8 - +08 +Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 +10 - +10 1930 Jun 21 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2014 O 26 2s +11 - +11 +Z Asia/Taipei 8:6 - LMT 1896 +8 - CST 1937 O +9 - JST 1945 S 21 1 +8 f C%sT +Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2 +5 R +05/+06 1992 +5 - +05 +Z Asia/Tbilisi 2:59:11 - LMT 1880 +2:59:11 - TBMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1992 +3 e +03/+04 1994 S lastSu +4 e +04/+05 1996 O lastSu +4 1 +05 1997 Mar lastSu +4 e +04/+05 2004 Jun 27 +3 R +03/+04 2005 Mar lastSu 2 +4 - +04 +Z Asia/Tehran 3:25:44 - LMT 1916 +3:25:44 - TMT 1935 Jun 13 +3:30 i +0330/+0430 1977 O 20 24 +4 i +04/+05 1979 +3:30 i +0330/+0430 +Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 +5:30 - +0530 1987 O +6 - +06 +Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u +9 JP J%sT +Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2002 May 1 3 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 May 29 2s +7 - +07 +Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au +7 - +07 1978 +8 X +08/+09 +Z Asia/Urumqi 5:50:20 - LMT 1928 +6 - +06 +Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1981 Ap +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2011 S 13 0s +11 - +11 2014 O 26 2s +10 - +10 +Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 +9 - +09 1930 Jun 21 +10 R +10/+11 1991 Mar 31 2s +9 R +09/+10 1992 Ja 19 2s +10 R +10/+11 2011 Mar 27 2s +11 - +11 2014 O 26 2s +10 - +10 +Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2011 Mar 27 2s +10 - +10 2014 O 26 2s +9 - +09 +Z Asia/Yangon 6:24:47 - LMT 1880 +6:24:47 - RMT 1920 +6:30 - +0630 1942 May +9 - +09 1945 May 3 +6:30 - +0630 +Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 +3:45:5 - PMT 1919 Jul 15 4 +4 - +04 1930 Jun 21 +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2011 Mar 27 2s +6 - +06 2014 O 26 2s +5 - +05 +Z Asia/Yerevan 2:58 - LMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1995 S 24 2s +4 - +04 1997 +4 R +04/+05 2011 +4 AM +04/+05 +Z Atlantic/Azores -1:42:40 - LMT 1884 +-1:54:32 - HMT 1912 Ja 1 2u +-2 p -02/-01 1942 Ap 25 22s +-2 p +00 1942 Au 15 22s +-2 p -02/-01 1943 Ap 17 22s +-2 p +00 1943 Au 28 22s +-2 p -02/-01 1944 Ap 22 22s +-2 p +00 1944 Au 26 22s +-2 p -02/-01 1945 Ap 21 22s +-2 p +00 1945 Au 25 22s +-2 p -02/-01 1966 Ap 3 2 +-1 p -01/+00 1983 S 25 1s +-1 W- -01/+00 1992 S 27 1s +0 E WE%sT 1993 Mar 28 1u +-1 E -01/+00 +Z Atlantic/Bermuda -4:19:18 - LMT 1890 +-4:19:18 Be BMT/BST 1930 Ja 1 2 +-4 Be A%sT 1974 Ap 28 2 +-4 C A%sT 1976 +-4 u A%sT +Z Atlantic/Canary -1:1:36 - LMT 1922 Mar +-1 - -01 1946 S 30 1 +0 - WET 1980 Ap 6 0s +0 1 WEST 1980 S 28 1u +0 E WE%sT +Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u +-2 - -02 1942 S +-2 1 -01 1945 O 15 +-2 - -02 1975 N 25 2 +-1 - -01 +Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 +0 - WET 1981 +0 E WE%sT +Z Atlantic/Madeira -1:7:36 - LMT 1884 +-1:7:36 - FMT 1912 Ja 1 1u +-1 p -01/+00 1942 Ap 25 22s +-1 p +01 1942 Au 15 22s +-1 p -01/+00 1943 Ap 17 22s +-1 p +01 1943 Au 28 22s +-1 p -01/+00 1944 Ap 22 22s +-1 p +01 1944 Au 26 22s +-1 p -01/+00 1945 Ap 21 22s +-1 p +01 1945 Au 25 22s +-1 p -01/+00 1966 Ap 3 2 +0 p WE%sT 1983 S 25 1s +0 E WE%sT +Z Atlantic/South_Georgia -2:26:8 - LMT 1890 +-2 - -02 +Z Atlantic/Stanley -3:51:24 - LMT 1890 +-3:51:24 - SMT 1912 Mar 12 +-4 FK -04/-03 1983 May +-3 FK -03/-02 1985 S 15 +-4 FK -04/-03 2010 S 5 2 +-3 - -03 +Z Australia/Adelaide 9:14:20 - LMT 1895 F +9 - ACST 1899 May +9:30 AU AC%sT 1971 +9:30 AS AC%sT +Z Australia/Brisbane 10:12:8 - LMT 1895 +10 AU AE%sT 1971 +10 AQ AE%sT +Z Australia/Broken_Hill 9:25:48 - LMT 1895 F +10 - AEST 1896 Au 23 +9 - ACST 1899 May +9:30 AU AC%sT 1971 +9:30 AN AC%sT 2000 +9:30 AS AC%sT +Z Australia/Darwin 8:43:20 - LMT 1895 F +9 - ACST 1899 May +9:30 AU AC%sT +Z Australia/Eucla 8:35:28 - LMT 1895 D +8:45 AU +0845/+0945 1943 Jul +8:45 AW +0845/+0945 +Z Australia/Hobart 9:49:16 - LMT 1895 S +10 AT AE%sT 1919 O 24 +10 AU AE%sT 1967 +10 AT AE%sT +Z Australia/Lindeman 9:55:56 - LMT 1895 +10 AU AE%sT 1971 +10 AQ AE%sT 1992 Jul +10 Ho AE%sT +Z Australia/Lord_Howe 10:36:20 - LMT 1895 F +10 - AEST 1981 Mar +10:30 LH +1030/+1130 1985 Jul +10:30 LH +1030/+11 +Z Australia/Melbourne 9:39:52 - LMT 1895 F +10 AU AE%sT 1971 +10 AV AE%sT +Z Australia/Perth 7:43:24 - LMT 1895 D +8 AU AW%sT 1943 Jul +8 AW AW%sT +Z Australia/Sydney 10:4:52 - LMT 1895 F +10 AU AE%sT 1971 +10 AN AE%sT +Z CET 1 c CE%sT +Z CST6CDT -6 u C%sT +Z EET 2 E EE%sT +Z EST -5 - EST +Z EST5EDT -5 u E%sT +Z Etc/GMT 0 - GMT +Z Etc/GMT+1 -1 - -01 +Z Etc/GMT+10 -10 - -10 +Z Etc/GMT+11 -11 - -11 +Z Etc/GMT+12 -12 - -12 +Z Etc/GMT+2 -2 - -02 +Z Etc/GMT+3 -3 - -03 +Z Etc/GMT+4 -4 - -04 +Z Etc/GMT+5 -5 - -05 +Z Etc/GMT+6 -6 - -06 +Z Etc/GMT+7 -7 - -07 +Z Etc/GMT+8 -8 - -08 +Z Etc/GMT+9 -9 - -09 +Z Etc/GMT-1 1 - +01 +Z Etc/GMT-10 10 - +10 +Z Etc/GMT-11 11 - +11 +Z Etc/GMT-12 12 - +12 +Z Etc/GMT-13 13 - +13 +Z Etc/GMT-14 14 - +14 +Z Etc/GMT-2 2 - +02 +Z Etc/GMT-3 3 - +03 +Z Etc/GMT-4 4 - +04 +Z Etc/GMT-5 5 - +05 +Z Etc/GMT-6 6 - +06 +Z Etc/GMT-7 7 - +07 +Z Etc/GMT-8 8 - +08 +Z Etc/GMT-9 9 - +09 +Z Etc/UTC 0 - UTC +Z Europe/Andorra 0:6:4 - LMT 1901 +0 - WET 1946 S 30 +1 - CET 1985 Mar 31 2 +1 E CE%sT +Z Europe/Astrakhan 3:12:12 - LMT 1924 May +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 Mar 27 2s +4 - +04 +Z Europe/Athens 1:34:52 - LMT 1895 S 14 +1:34:52 - AMT 1916 Jul 28 0:1 +2 g EE%sT 1941 Ap 30 +1 g CE%sT 1944 Ap 4 +2 g EE%sT 1981 +2 E EE%sT +Z Europe/Belgrade 1:22 - LMT 1884 +1 - CET 1941 Ap 18 23 +1 c CE%sT 1945 +1 - CET 1945 May 8 2s +1 1 CEST 1945 S 16 2s +1 - CET 1982 N 27 +1 E CE%sT +Z Europe/Berlin 0:53:28 - LMT 1893 Ap +1 c CE%sT 1945 May 24 2 +1 So CE%sT 1946 +1 DE CE%sT 1980 +1 E CE%sT +Z Europe/Brussels 0:17:30 - LMT 1880 +0:17:30 - BMT 1892 May 1 0:17:30 +0 - WET 1914 N 8 +1 - CET 1916 May +1 c CE%sT 1918 N 11 11u +0 b WE%sT 1940 May 20 2s +1 c CE%sT 1944 S 3 +1 b CE%sT 1977 +1 E CE%sT +Z Europe/Bucharest 1:44:24 - LMT 1891 O +1:44:24 - BMT 1931 Jul 24 +2 z EE%sT 1981 Mar 29 2s +2 c EE%sT 1991 +2 z EE%sT 1994 +2 e EE%sT 1997 +2 E EE%sT +Z Europe/Budapest 1:16:20 - LMT 1890 N +1 c CE%sT 1918 +1 h CE%sT 1941 Ap 7 23 +1 c CE%sT 1945 +1 h CE%sT 1984 +1 E CE%sT +Z Europe/Chisinau 1:55:20 - LMT 1880 +1:55 - CMT 1918 F 15 +1:44:24 - BMT 1931 Jul 24 +2 z EE%sT 1940 Au 15 +2 1 EEST 1941 Jul 17 +1 c CE%sT 1944 Au 24 +3 R MSK/MSD 1990 May 6 2 +2 R EE%sT 1992 +2 e EE%sT 1997 +2 MD EE%sT +Z Europe/Dublin -0:25:21 - LMT 1880 Au 2 +-0:25:21 - DMT 1916 May 21 2s +-0:25:21 1 IST 1916 O 1 2s +0 G %s 1921 D 6 +0 G GMT/IST 1940 F 25 2s +0 1 IST 1946 O 6 2s +0 - GMT 1947 Mar 16 2s +0 1 IST 1947 N 2 2s +0 - GMT 1948 Ap 18 2s +0 G GMT/IST 1968 O 27 +1 IE IST/GMT +Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 +0 G %s 1957 Ap 14 2 +1 - CET 1982 +1 E CE%sT +Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 +1:39:49 - HMT 1921 May +2 FI EE%sT 1983 +2 E EE%sT +Z Europe/Istanbul 1:55:52 - LMT 1880 +1:56:56 - IMT 1910 O +2 T EE%sT 1978 Jun 29 +3 T +03/+04 1984 N 1 2 +2 T EE%sT 2007 +2 E EE%sT 2011 Mar 27 1u +2 - EET 2011 Mar 28 1u +2 E EE%sT 2014 Mar 30 1u +2 - EET 2014 Mar 31 1u +2 E EE%sT 2015 O 25 1u +2 1 EEST 2015 N 8 1u +2 E EE%sT 2016 S 7 +3 - +03 +Z Europe/Kaliningrad 1:22 - LMT 1893 Ap +1 c CE%sT 1945 Ap 10 +2 O EE%sT 1946 Ap 7 +3 R MSK/MSD 1989 Mar 26 2s +2 R EE%sT 2011 Mar 27 2s +3 - +03 2014 O 26 2s +2 - EET +Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R MSK/MSD 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Kyiv 2:2:4 - LMT 1880 +2:2:4 - KMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 S 20 +1 c CE%sT 1943 N 6 +3 R MSK/MSD 1990 Jul 1 2 +2 1 EEST 1991 S 29 3 +2 c EE%sT 1996 May 13 +2 E EE%sT +Z Europe/Lisbon -0:36:45 - LMT 1884 +-0:36:45 - LMT 1912 Ja 1 0u +0 p WE%sT 1966 Ap 3 2 +1 - CET 1976 S 26 1 +0 p WE%sT 1983 S 25 1s +0 W- WE%sT 1992 S 27 1s +1 E CE%sT 1996 Mar 31 1u +0 E WE%sT +Z Europe/London -0:1:15 - LMT 1847 D +0 G %s 1968 O 27 +1 - BST 1971 O 31 2u +0 G %s 1996 +0 E GMT/BST +Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u +0 s WE%sT 1940 Mar 16 23 +1 s CE%sT 1979 +1 E CE%sT +Z Europe/Malta 0:58:4 - LMT 1893 N 2 +1 I CE%sT 1973 Mar 31 +1 MT CE%sT 1981 +1 E CE%sT +Z Europe/Minsk 1:50:16 - LMT 1880 +1:50 - MMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 Jun 28 +1 c CE%sT 1944 Jul 3 +3 R MSK/MSD 1990 +3 - MSK 1991 Mar 31 2s +2 R EE%sT 2011 Mar 27 2s +3 - +03 +Z Europe/Moscow 2:30:17 - LMT 1880 +2:30:17 - MMT 1916 Jul 3 +2:31:19 R %s 1919 Jul 1 0u +3 R %s 1921 O +3 R MSK/MSD 1922 O +2 - EET 1930 Jun 21 +3 R MSK/MSD 1991 Mar 31 2s +2 R EE%sT 1992 Ja 19 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Paris 0:9:21 - LMT 1891 Mar 16 +0:9:21 - PMT 1911 Mar 11 +0 F WE%sT 1940 Jun 14 23 +1 c CE%sT 1944 Au 25 +0 F WE%sT 1945 S 16 3 +1 F CE%sT 1977 +1 E CE%sT +Z Europe/Prague 0:57:44 - LMT 1850 +0:57:44 - PMT 1891 O +1 c CE%sT 1945 May 9 +1 CZ CE%sT 1946 D 1 3 +1 -1 GMT 1947 F 23 2 +1 CZ CE%sT 1979 +1 E CE%sT +Z Europe/Riga 1:36:34 - LMT 1880 +1:36:34 - RMT 1918 Ap 15 2 +1:36:34 1 LST 1918 S 16 3 +1:36:34 - RMT 1919 Ap 1 2 +1:36:34 1 LST 1919 May 22 3 +1:36:34 - RMT 1926 May 11 +2 - EET 1940 Au 5 +3 - MSK 1941 Jul +1 c CE%sT 1944 O 13 +3 R MSK/MSD 1989 Mar lastSu 2s +2 1 EEST 1989 S lastSu 2s +2 LV EE%sT 1997 Ja 21 +2 E EE%sT 2000 F 29 +2 - EET 2001 Ja 2 +2 E EE%sT +Z Europe/Rome 0:49:56 - LMT 1866 D 12 +0:49:56 - RMT 1893 O 31 23u +1 I CE%sT 1943 S 10 +1 c CE%sT 1944 Jun 4 +1 I CE%sT 1980 +1 E CE%sT +Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 - +04 1935 Ja 27 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +2 R +02/+03 1991 S 29 2s +3 - +03 1991 O 20 3 +4 R +04/+05 2010 Mar 28 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 +Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1988 Mar 27 2s +3 R +03/+04 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 D 4 2s +4 - +04 +Z Europe/Simferopol 2:16:24 - LMT 1880 +2:16 - SMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 N +1 c CE%sT 1944 Ap 13 +3 R MSK/MSD 1990 +3 - MSK 1990 Jul 1 2 +2 - EET 1992 Mar 20 +2 c EE%sT 1994 May +3 c MSK/MSD 1996 Mar 31 0s +3 1 MSD 1996 O 27 3s +3 - MSK 1997 Mar lastSu 1u +2 E EE%sT 2014 Mar 30 2 +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Sofia 1:33:16 - LMT 1880 +1:56:56 - IMT 1894 N 30 +2 - EET 1942 N 2 3 +1 c CE%sT 1945 +1 - CET 1945 Ap 2 3 +2 - EET 1979 Mar 31 23 +2 BG EE%sT 1982 S 26 3 +2 c EE%sT 1991 +2 e EE%sT 1997 +2 E EE%sT +Z Europe/Tallinn 1:39 - LMT 1880 +1:39 - TMT 1918 F +1 c CE%sT 1919 Jul +1:39 - TMT 1921 May +2 - EET 1940 Au 6 +3 - MSK 1941 S 15 +1 c CE%sT 1944 S 22 +3 R MSK/MSD 1989 Mar 26 2s +2 1 EEST 1989 S 24 2s +2 c EE%sT 1998 S 22 +2 E EE%sT 1999 O 31 4 +2 - EET 2002 F 21 +2 E EE%sT +Z Europe/Tirane 1:19:20 - LMT 1914 +1 - CET 1940 Jun 16 +1 q CE%sT 1984 Jul +1 E CE%sT +Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +2 R +02/+03 1992 Ja 19 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 Mar 27 2s +4 - +04 +Z Europe/Vienna 1:5:21 - LMT 1893 Ap +1 c CE%sT 1920 +1 a CE%sT 1940 Ap 1 2s +1 c CE%sT 1945 Ap 2 2s +1 1 CEST 1945 Ap 12 2s +1 - CET 1946 +1 a CE%sT 1981 +1 E CE%sT +Z Europe/Vilnius 1:41:16 - LMT 1880 +1:24 - WMT 1917 +1:35:36 - KMT 1919 O 10 +1 - CET 1920 Jul 12 +2 - EET 1920 O 9 +1 - CET 1940 Au 3 +3 - MSK 1941 Jun 24 +1 c CE%sT 1944 Au +3 R MSK/MSD 1989 Mar 26 2s +2 R EE%sT 1991 S 29 2s +2 c EE%sT 1998 +2 - EET 1998 Mar 29 1u +1 E CE%sT 1999 O 31 1u +2 - EET 2003 +2 E EE%sT +Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 +3 - +03 1930 Jun 21 +4 - +04 1961 N 11 +4 R +04/+05 1988 Mar 27 2s +3 R MSK/MSD 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK 2018 O 28 2s +4 - +04 2020 D 27 2s +3 - MSK +Z Europe/Warsaw 1:24 - LMT 1880 +1:24 - WMT 1915 Au 5 +1 c CE%sT 1918 S 16 3 +2 O EE%sT 1922 Jun +1 O CE%sT 1940 Jun 23 2 +1 c CE%sT 1944 O +1 O CE%sT 1977 +1 W- CE%sT 1988 +1 E CE%sT +Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 +0:29:46 - BMT 1894 Jun +1 CH CE%sT 1981 +1 E CE%sT +Z Factory 0 - -00 +Z HST -10 - HST +Z Indian/Chagos 4:49:40 - LMT 1907 +5 - +05 1996 +6 - +06 +Z Indian/Maldives 4:54 - LMT 1880 +4:54 - MMT 1960 +5 - +05 +Z Indian/Mauritius 3:50 - LMT 1907 +4 MU +04/+05 +Z MET 1 c ME%sT +Z MST -7 - MST +Z MST7MDT -7 u M%sT +Z PST8PDT -8 u P%sT +Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 +-11:26:56 - LMT 1911 +-11:30 - -1130 1950 +-11 WS -11/-10 2011 D 29 24 +13 WS +13/+14 +Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 +11:30 NZ NZ%sT 1946 +12 NZ NZ%sT +Z Pacific/Bougainville 10:22:16 - LMT 1880 +9:48:32 - PMMT 1895 +10 - +10 1942 Jul +9 - +09 1945 Au 21 +10 - +10 2014 D 28 2 +11 - +11 +Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 +12:15 - +1215 1946 +12:45 k +1245/+1345 +Z Pacific/Easter -7:17:28 - LMT 1890 +-7:17:28 - EMT 1932 S +-7 x -07/-06 1982 Mar 14 3u +-6 x -06/-05 +Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 +11 VU +11/+12 +Z Pacific/Fakaofo -11:24:56 - LMT 1901 +-11 - -11 2011 D 30 +13 - +13 +Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 +12 FJ +12/+13 +Z Pacific/Galapagos -5:58:24 - LMT 1931 +-5 - -05 1986 +-6 EC -06/-05 +Z Pacific/Gambier -8:59:48 - LMT 1912 O +-9 - -09 +Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O +11 - +11 +Z Pacific/Guam -14:21 - LMT 1844 D 31 +9:39 - LMT 1901 +10 - GST 1941 D 10 +9 - +09 1944 Jul 31 +10 Gu G%sT 2000 D 23 +10 - ChST +Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 +-10:30 - HST 1933 Ap 30 2 +-10:30 1 HDT 1933 May 21 12 +-10:30 u H%sT 1947 Jun 8 2 +-10 - HST +Z Pacific/Kanton 0 - -00 1937 Au 31 +-12 - -12 1979 O +-11 - -11 1994 D 31 +13 - +13 +Z Pacific/Kiritimati -10:29:20 - LMT 1901 +-10:40 - -1040 1979 O +-10 - -10 1994 D 31 +14 - +14 +Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31 +10:51:56 - LMT 1901 +11 - +11 1914 O +9 - +09 1919 F +11 - +11 1937 +10 - +10 1941 Ap +9 - +09 1945 Au +11 - +11 1969 O +12 - +12 1999 +11 - +11 +Z Pacific/Kwajalein 11:9:20 - LMT 1901 +11 - +11 1937 +10 - +10 1941 Ap +9 - +09 1944 F 6 +11 - +11 1969 O +-12 - -12 1993 Au 20 24 +12 - +12 +Z Pacific/Marquesas -9:18 - LMT 1912 O +-9:30 - -0930 +Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 +11:30 - +1130 1942 Au 29 +9 - +09 1945 S 8 +11:30 - +1130 1979 F 10 2 +12 - +12 +Z Pacific/Niue -11:19:40 - LMT 1952 O 16 +-11:20 - -1120 1964 Jul +-11 - -11 +Z Pacific/Norfolk 11:11:52 - LMT 1901 +11:12 - +1112 1951 +11:30 - +1130 1974 O 27 2s +11:30 1 +1230 1975 Mar 2 2s +11:30 - +1130 2015 O 4 2s +11 - +11 2019 Jul +11 AN +11/+12 +Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 +11 NC +11/+12 +Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 +-11:22:48 - LMT 1911 +-11 - SST +Z Pacific/Palau -15:2:4 - LMT 1844 D 31 +8:57:56 - LMT 1901 +9 - +09 +Z Pacific/Pitcairn -8:40:20 - LMT 1901 +-8:30 - -0830 1998 Ap 27 +-8 - -08 +Z Pacific/Port_Moresby 9:48:40 - LMT 1880 +9:48:32 - PMMT 1895 +10 - +10 +Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 +-10:39:4 - LMT 1952 O 16 +-10:30 - -1030 1978 N 12 +-10 CK -10/-0930 +Z Pacific/Tahiti -9:58:16 - LMT 1912 O +-10 - -10 +Z Pacific/Tarawa 11:32:4 - LMT 1901 +12 - +12 +Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 +12:20 - +1220 1961 +13 - +13 1999 +13 TO +13/+14 +Z WET 0 E WE%sT +L Etc/GMT GMT L Australia/Sydney Australia/ACT L Australia/Lord_Howe Australia/LHI L Australia/Sydney Australia/NSW @@ -4185,7 +4195,6 @@ L America/Puerto_Rico America/Tortola L Pacific/Port_Moresby Antarctica/DumontDUrville L Pacific/Auckland Antarctica/McMurdo L Asia/Riyadh Antarctica/Syowa -L Asia/Urumqi Antarctica/Vostok L Europe/Berlin Arctic/Longyearbyen L Asia/Riyadh Asia/Aden L Asia/Qatar Asia/Bahrain diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index 790f03b..a53239f 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -226,7 +226,6 @@ sub GenerateFiles HAVE_ATOMICS => 1, HAVE_ATOMIC_H => undef, HAVE_BACKTRACE_SYMBOLS => undef, - HAVE_BIO_GET_DATA => undef, HAVE_BIO_METH_NEW => undef, HAVE_CLOCK_GETTIME => undef, HAVE_COMPUTED_GOTO => undef, @@ -566,7 +565,6 @@ sub GenerateFiles || ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0')) { $define{HAVE_ASN1_STRING_GET0_DATA} = 1; - $define{HAVE_BIO_GET_DATA} = 1; $define{HAVE_BIO_METH_NEW} = 1; $define{HAVE_HMAC_CTX_FREE} = 1; $define{HAVE_HMAC_CTX_NEW} = 1; diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list index 8c5b136..d030c48 100644 --- a/src/tools/pgindent/typedefs.list +++ b/src/tools/pgindent/typedefs.list @@ -2689,6 +2689,7 @@ TSQuerySign TSReadPointer TSTemplateInfo TSTernaryValue +TSTokenTypeItem TSTokenTypeStorage TSVector TSVectorBuildState -- cgit v1.2.3