[-]
[+]
|
Changed |
postgresql-pl.changes
|
|
[-]
[+]
|
Changed |
postgresql.changes
^
|
|
[-]
[+]
|
Changed |
postgresql-pl.spec
^
|
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/HISTORY
^
|
@@ -17,6 +17,123 @@
review, so each item is truly a community effort.
__________________________________________________________________
+ Release 8.4.15
+
+ Release Date: 2012-12-06
+
+ This release contains a variety of fixes from 8.4.14. For information
+ about new features in the 8.4 major release, see the Section called
+ Release 8.4.
+ __________________________________________________________________
+
+Migration to Version 8.4.15
+
+ A dump/restore is not required for those running 8.4.X.
+
+ However, if you are upgrading from a version earlier than 8.4.10, see
+ the release notes for 8.4.10.
+ __________________________________________________________________
+
+Changes
+
+ * Fix multiple bugs associated with "CREATE INDEX CONCURRENTLY"
+ (Andres Freund, Tom Lane)
+ Fix "CREATE INDEX CONCURRENTLY" to use in-place updates when
+ changing the state of an index's pg_index row. This prevents race
+ conditions that could cause concurrent sessions to miss updating
+ the target index, thus resulting in corrupt concurrently-created
+ indexes.
+ Also, fix various other operations to ensure that they ignore
+ invalid indexes resulting from a failed "CREATE INDEX CONCURRENTLY"
+ command. The most important of these is "VACUUM", because an
+ auto-vacuum could easily be launched on the table before corrective
+ action can be taken to fix or remove the invalid index.
+ * Avoid corruption of internal hash tables when out of memory
+ (Hitoshi Harada)
+ * Fix planning of non-strict equivalence clauses above outer joins
+ (Tom Lane)
+ The planner could derive incorrect constraints from a clause
+ equating a non-strict construct to something else, for example
+ WHERE COALESCE(foo, 0) = 0 when foo is coming from the nullable
+ side of an outer join.
+ * Improve planner's ability to prove exclusion constraints from
+ equivalence classes (Tom Lane)
+ * Fix partial-row matching in hashed subplans to handle cross-type
+ cases correctly (Tom Lane)
+ This affects multicolumn NOT IN subplans, such as WHERE (a, b) NOT
+ IN (SELECT x, y FROM ...) when for instance b and y are int4 and
+ int8 respectively. This mistake led to wrong answers or crashes
+ depending on the specific datatypes involved.
+ * Acquire buffer lock when re-fetching the old tuple for an AFTER ROW
+ UPDATE/DELETE trigger (Andres Freund)
+ In very unusual circumstances, this oversight could result in
+ passing incorrect data to the precheck logic for a foreign-key
+ enforcement trigger. That could result in a crash, or in an
+ incorrect decision about whether to fire the trigger.
+ * Fix "ALTER COLUMN TYPE" to handle inherited check constraints
+ properly (Pavan Deolasee)
+ This worked correctly in pre-8.4 releases, and now works correctly
+ in 8.4 and later.
+ * Fix "REASSIGN OWNED" to handle grants on tablespaces (Álvaro
+ Herrera)
+ * Ignore incorrect pg_attribute entries for system columns for views
+ (Tom Lane)
+ Views do not have any system columns. However, we forgot to remove
+ such entries when converting a table to a view. That's fixed
+ properly for 9.3 and later, but in previous branches we need to
+ defend against existing mis-converted views.
+ * Fix rule printing to dump INSERT INTO table DEFAULT VALUES
+ correctly (Tom Lane)
+ * Guard against stack overflow when there are too many
+ UNION/INTERSECT/EXCEPT clauses in a query (Tom Lane)
+ * Prevent platform-dependent failures when dividing the minimum
+ possible integer value by -1 (Xi Wang, Tom Lane)
+ * Fix possible access past end of string in date parsing (Hitoshi
+ Harada)
+ * Produce an understandable error message if the length of the path
+ name for a Unix-domain socket exceeds the platform-specific limit
+ (Tom Lane, Andrew Dunstan)
+ Formerly, this would result in something quite unhelpful, such as
+ "Non-recoverable failure in name resolution".
+ * Fix memory leaks when sending composite column values to the client
+ (Tom Lane)
+ * Make pg_ctl more robust about reading the "postmaster.pid" file
+ (Heikki Linnakangas)
+ Fix race conditions and possible file descriptor leakage.
+ * Fix possible crash in psql if incorrectly-encoded data is presented
+ and the client_encoding setting is a client-only encoding, such as
+ SJIS (Jiang Guiqing)
+ * Fix bugs in the "restore.sql" script emitted by pg_dump in tar
+ output format (Tom Lane)
+ The script would fail outright on tables whose names include
+ upper-case characters. Also, make the script capable of restoring
+ data in "--inserts" mode as well as the regular COPY mode.
+ * Fix pg_restore to accept POSIX-conformant tar files (Brian Weaver,
+ Tom Lane)
+ The original coding of pg_dump's tar output mode produced files
+ that are not fully conformant with the POSIX standard. This has
+ been corrected for version 9.3. This patch updates previous
+ branches so that they will accept both the incorrect and the
+ corrected formats, in hopes of avoiding compatibility problems when
+ 9.3 comes out.
+ * Fix pg_resetxlog to locate "postmaster.pid" correctly when given a
+ relative path to the data directory (Tom Lane)
+ This mistake could lead to pg_resetxlog not noticing that there is
+ an active postmaster using the data directory.
+ * Fix libpq's lo_import() and lo_export() functions to report file
+ I/O errors properly (Tom Lane)
+ * Fix ecpg's processing of nested structure pointer variables
+ (Muhammad Usama)
+ * Make "contrib/pageinspect"'s btree page inspection functions take
+ buffer locks while examining pages (Tom Lane)
+ * Fix pgxs support for building loadable modules on AIX (Tom Lane)
+ Building modules outside the original source tree didn't work on
+ AIX.
+ * Update time zone data files to tzdata release 2012j for DST law
+ changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa,
+ and portions of Brazil.
+ __________________________________________________________________
+
Release 8.4.14
Release Date: 2012-09-24
@@ -2811,6 +2928,123 @@
unsafe to use a symlink (Simon)
__________________________________________________________________
+ Release 8.3.22
+
+ Release Date: 2012-12-06
+
+ This release contains a variety of fixes from 8.3.21. For information
+ about new features in the 8.3 major release, see the Section called
+ Release 8.3.
+
+ The PostgreSQL community will stop releasing updates for the 8.3.X
+ release series in February 2013. Users are encouraged to update to a
+ newer release branch soon.
+ __________________________________________________________________
+
+Migration to Version 8.3.22
+
+ A dump/restore is not required for those running 8.3.X.
+
+ However, if you are upgrading from a version earlier than 8.3.17, see
+ the release notes for 8.3.17.
+ __________________________________________________________________
+
+Changes
+
+ * Fix multiple bugs associated with "CREATE INDEX CONCURRENTLY"
+ (Andres Freund, Tom Lane)
+ Fix "CREATE INDEX CONCURRENTLY" to use in-place updates when
+ changing the state of an index's pg_index row. This prevents race
+ conditions that could cause concurrent sessions to miss updating
+ the target index, thus resulting in corrupt concurrently-created
+ indexes.
+ Also, fix various other operations to ensure that they ignore
+ invalid indexes resulting from a failed "CREATE INDEX CONCURRENTLY"
+ command. The most important of these is "VACUUM", because an
+ auto-vacuum could easily be launched on the table before corrective
+ action can be taken to fix or remove the invalid index.
+ * Avoid corruption of internal hash tables when out of memory
+ (Hitoshi Harada)
+ * Fix planning of non-strict equivalence clauses above outer joins
+ (Tom Lane)
+ The planner could derive incorrect constraints from a clause
+ equating a non-strict construct to something else, for example
+ WHERE COALESCE(foo, 0) = 0 when foo is coming from the nullable
+ side of an outer join.
+ * Improve planner's ability to prove exclusion constraints from
+ equivalence classes (Tom Lane)
+ * Fix partial-row matching in hashed subplans to handle cross-type
+ cases correctly (Tom Lane)
+ This affects multicolumn NOT IN subplans, such as WHERE (a, b) NOT
+ IN (SELECT x, y FROM ...) when for instance b and y are int4 and
+ int8 respectively. This mistake led to wrong answers or crashes
+ depending on the specific datatypes involved.
+ * Acquire buffer lock when re-fetching the old tuple for an AFTER ROW
+ UPDATE/DELETE trigger (Andres Freund)
+ In very unusual circumstances, this oversight could result in
+ passing incorrect data to the precheck logic for a foreign-key
+ enforcement trigger. That could result in a crash, or in an
+ incorrect decision about whether to fire the trigger.
+ * Fix "REASSIGN OWNED" to handle grants on tablespaces (Álvaro
+ Herrera)
+ * Ignore incorrect pg_attribute entries for system columns for views
+ (Tom Lane)
+ Views do not have any system columns. However, we forgot to remove
+ such entries when converting a table to a view. That's fixed
+ properly for 9.3 and later, but in previous branches we need to
+ defend against existing mis-converted views.
+ * Fix rule printing to dump INSERT INTO table DEFAULT VALUES
+ correctly (Tom Lane)
+ * Guard against stack overflow when there are too many
+ UNION/INTERSECT/EXCEPT clauses in a query (Tom Lane)
+ * Prevent platform-dependent failures when dividing the minimum
+ possible integer value by -1 (Xi Wang, Tom Lane)
+ * Fix possible access past end of string in date parsing (Hitoshi
+ Harada)
+ * Produce an understandable error message if the length of the path
+ name for a Unix-domain socket exceeds the platform-specific limit
+ (Tom Lane, Andrew Dunstan)
+ Formerly, this would result in something quite unhelpful, such as
+ "Non-recoverable failure in name resolution".
+ * Fix memory leaks when sending composite column values to the client
+ (Tom Lane)
+ * Make pg_ctl more robust about reading the "postmaster.pid" file
+ (Heikki Linnakangas)
+ Fix race conditions and possible file descriptor leakage.
+ * Fix possible crash in psql if incorrectly-encoded data is presented
+ and the client_encoding setting is a client-only encoding, such as
+ SJIS (Jiang Guiqing)
+ * Fix bugs in the "restore.sql" script emitted by pg_dump in tar
+ output format (Tom Lane)
+ The script would fail outright on tables whose names include
+ upper-case characters. Also, make the script capable of restoring
+ data in "--inserts" mode as well as the regular COPY mode.
+ * Fix pg_restore to accept POSIX-conformant tar files (Brian Weaver,
+ Tom Lane)
+ The original coding of pg_dump's tar output mode produced files
+ that are not fully conformant with the POSIX standard. This has
+ been corrected for version 9.3. This patch updates previous
+ branches so that they will accept both the incorrect and the
+ corrected formats, in hopes of avoiding compatibility problems when
+ 9.3 comes out.
+ * Fix pg_resetxlog to locate "postmaster.pid" correctly when given a
+ relative path to the data directory (Tom Lane)
+ This mistake could lead to pg_resetxlog not noticing that there is
+ an active postmaster using the data directory.
+ * Fix libpq's lo_import() and lo_export() functions to report file
+ I/O errors properly (Tom Lane)
+ * Fix ecpg's processing of nested structure pointer variables
+ (Muhammad Usama)
+ * Make "contrib/pageinspect"'s btree page inspection functions take
+ buffer locks while examining pages (Tom Lane)
+ * Fix pgxs support for building loadable modules on AIX (Tom Lane)
+ Building modules outside the original source tree didn't work on
+ AIX.
+ * Update time zone data files to tzdata release 2012j for DST law
+ changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa,
+ and portions of Brazil.
+ __________________________________________________________________
+
Release 8.3.21
Release Date: 2012-09-24
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/INSTALL
^
|
@@ -173,7 +173,7 @@
keys), then use the "-o" option when running pg_dumpall.
To make the backup, you can use the pg_dumpall command from the
version you are currently running. For best results, however, try
- to use the pg_dumpall command from PostgreSQL 8.4.14, since this
+ to use the pg_dumpall command from PostgreSQL 8.4.15, since this
version contains bug fixes and improvements over older versions.
While this advice might seem idiosyncratic since you haven't
installed the new version yet, it is advisable to follow it if you
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/configure
^
|
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for PostgreSQL 8.4.14.
+# Generated by GNU Autoconf 2.61 for PostgreSQL 8.4.15.
#
# Report bugs to <pgsql-bugs@postgresql.org>.
#
@@ -576,8 +576,8 @@
# Identity of this package.
PACKAGE_NAME='PostgreSQL'
PACKAGE_TARNAME='postgresql'
-PACKAGE_VERSION='8.4.14'
-PACKAGE_STRING='PostgreSQL 8.4.14'
+PACKAGE_VERSION='8.4.15'
+PACKAGE_STRING='PostgreSQL 8.4.15'
PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org'
ac_unique_file="src/backend/access/common/heaptuple.c"
@@ -1289,7 +1289,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures PostgreSQL 8.4.14 to adapt to many kinds of systems.
+\`configure' configures PostgreSQL 8.4.15 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1354,7 +1354,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of PostgreSQL 8.4.14:";;
+ short | recursive ) echo "Configuration of PostgreSQL 8.4.15:";;
esac
cat <<\_ACEOF
@@ -1499,7 +1499,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-PostgreSQL configure 8.4.14
+PostgreSQL configure 8.4.15
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1515,7 +1515,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by PostgreSQL $as_me 8.4.14, which was
+It was created by PostgreSQL $as_me 8.4.15, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -27925,7 +27925,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by PostgreSQL $as_me 8.4.14, which was
+This file was extended by PostgreSQL $as_me 8.4.15, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -27982,7 +27982,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-PostgreSQL config.status 8.4.14
+PostgreSQL config.status 8.4.15
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/configure.in
^
|
@@ -17,7 +17,7 @@
dnl
m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
-AC_INIT([PostgreSQL], [8.4.14], [pgsql-bugs@postgresql.org])
+AC_INIT([PostgreSQL], [8.4.15], [pgsql-bugs@postgresql.org])
m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.61], [], [m4_fatal([Autoconf version 2.61 is required.
Untested combinations of 'autoconf' and PostgreSQL versions are not
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/contrib/pageinspect/btreefuncs.c
^
|
@@ -158,9 +158,9 @@
}
/* -----------------------------------------------
- * bt_page()
+ * bt_page_stats()
*
- * Usage: SELECT * FROM bt_page('t1_pkey', 1);
+ * Usage: SELECT * FROM bt_page_stats('t1_pkey', 1);
* -----------------------------------------------
*/
Datum
@@ -206,6 +206,7 @@
CHECK_RELATION_BLOCK_RANGE(rel, blkno);
buffer = ReadBuffer(rel, blkno);
+ LockBuffer(buffer, BUFFER_LOCK_SHARE);
/* keep compiler quiet */
stat.btpo_prev = stat.btpo_next = InvalidBlockNumber;
@@ -213,6 +214,9 @@
GetBTPageStatistics(blkno, buffer, &stat);
+ UnlockReleaseBuffer(buffer);
+ relation_close(rel, AccessShareLock);
+
/* Build a tuple descriptor for our result type */
if (get_call_result_type(fcinfo, NULL, &tupleDesc) != TYPEFUNC_COMPOSITE)
elog(ERROR, "return type must be a row type");
@@ -249,10 +253,6 @@
result = HeapTupleGetDatum(tuple);
- ReleaseBuffer(buffer);
-
- relation_close(rel, AccessShareLock);
-
PG_RETURN_DATUM(result);
}
@@ -324,6 +324,7 @@
CHECK_RELATION_BLOCK_RANGE(rel, blkno);
buffer = ReadBuffer(rel, blkno);
+ LockBuffer(buffer, BUFFER_LOCK_SHARE);
/*
* We copy the page into local storage to avoid holding pin on the
@@ -337,7 +338,7 @@
uargs->page = palloc(BLCKSZ);
memcpy(uargs->page, BufferGetPage(buffer), BLCKSZ);
- ReleaseBuffer(buffer);
+ UnlockReleaseBuffer(buffer);
relation_close(rel, AccessShareLock);
uargs->offset = FirstOffsetNumber;
@@ -468,6 +469,8 @@
errmsg("cannot access temporary tables of other sessions")));
buffer = ReadBuffer(rel, 0);
+ LockBuffer(buffer, BUFFER_LOCK_SHARE);
+
page = BufferGetPage(buffer);
metad = BTPageGetMeta(page);
@@ -494,8 +497,7 @@
result = HeapTupleGetDatum(tuple);
- ReleaseBuffer(buffer);
-
+ UnlockReleaseBuffer(buffer);
relation_close(rel, AccessShareLock);
PG_RETURN_DATUM(result);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/bug.template
^
|
@@ -27,7 +27,7 @@
Operating System (example: Linux 2.4.18) :
- PostgreSQL version (example: PostgreSQL 8.4.14): PostgreSQL 8.4.14
+ PostgreSQL version (example: PostgreSQL 8.4.15): PostgreSQL 8.4.15
Compiler used (example: gcc 3.3.5) :
|
|
Changed |
postgresql-8.4.15.tar.bz2/doc/man.tar.gz
^
|
|
Changed |
postgresql-8.4.15.tar.bz2/doc/postgres.tar.gz
^
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/backup.sgml
^
|
@@ -1856,46 +1856,6 @@
</para>
</sect2>
- <sect2 id="backup-incremental-updated">
- <title>Incrementally Updated Backups</title>
-
- <indexterm zone="backup">
- <primary>incrementally updated backups</primary>
- </indexterm>
-
- <indexterm zone="backup">
- <primary>change accumulation</primary>
- </indexterm>
-
- <para>
- In a warm standby configuration, it is possible to offload the expense of
- taking periodic base backups from the primary server; instead base backups
- can be made by backing
- up a standby server's files. This concept is generally known as
- incrementally updated backups, log change accumulation, or more simply,
- change accumulation.
- </para>
-
- <para>
- If we take a backup of the standby server's data directory while it is processing
- logs shipped from the primary, we will be able to reload that data and
- restart the standby's recovery process from the last restart point.
- We no longer need to keep WAL files from before the restart point.
- If we need to recover, it will be faster to recover from the incrementally
- updated backup than from the original base backup.
- </para>
-
- <para>
- Since the standby server is not <quote>live</>, it is not possible to
- use <function>pg_start_backup()</> and <function>pg_stop_backup()</>
- to manage the backup process; it will be up to you to determine how
- far back you need to keep WAL segment files to have a recoverable
- backup. You can do this by running <application>pg_controldata</>
- on the standby server to inspect the control file and determine the
- current checkpoint WAL location, or by using the
- <varname>log_checkpoints</> option to print values to the server log.
- </para>
- </sect2>
</sect1>
<sect1 id="migration">
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/docguide.sgml
^
|
@@ -120,7 +120,7 @@
</varlistentry>
<varlistentry>
- <term><ulink url="http://wiki.docbook.org/topic/DocBookDssslStylesheets">DocBook DSSSL Stylesheets</ulink></term>
+ <term><ulink url="http://wiki.docbook.org/DocBookDssslStylesheetDocs">DocBook DSSSL Stylesheets</ulink></term>
<listitem>
<para>
These contain the processing instructions for converting the
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/func.sgml
^
|
@@ -7371,7 +7371,7 @@
</row>
<row>
<entry><literal><function>path</function>(<type>polygon</type>)</literal></entry>
- <entry><type>point</type></entry>
+ <entry><type>path</type></entry>
<entry>polygon to path</entry>
<entry><literal>path(polygon '((0,0),(1,1),(2,0))')</literal></entry>
</row>
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/ref/create_database.sgml
^
|
@@ -47,14 +47,6 @@
</para>
<para>
- Normally, the creator becomes the owner of the new database.
- Superusers can create databases owned by other users, by using the
- <literal>OWNER</> clause. They can even create databases owned by
- users with no special privileges. Non-superusers with <literal>CREATEDB</>
- privilege can only create databases owned by themselves.
- </para>
-
- <para>
By default, the new database will be created by cloning the standard
system database <literal>template1</>. A different template can be
specified by writing <literal>TEMPLATE
@@ -84,9 +76,11 @@
<term><replaceable class="parameter">dbowner</replaceable></term>
<listitem>
<para>
- The name of the database user who will own the new database,
+ The role name of the user who will own the new database,
or <literal>DEFAULT</literal> to use the default (namely, the
- user executing the command).
+ user executing the command). To create a database owned by another
+ role, you must be a direct or indirect member of that role,
+ or be a superuser.
</para>
</listitem>
</varlistentry>
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/ref/create_index.sgml
^
|
@@ -428,6 +428,18 @@
they can be useful.
</para>
+ <caution>
+ <para>
+ Hash index operations are not presently WAL-logged,
+ so hash indexes might need to be rebuilt with <command>REINDEX</>
+ after a database crash if there were unwritten changes.
+ Also, changes to hash indexes are not replicated over warm standby
+ replication after the initial base backup, so they
+ give wrong answers to queries that subsequently use them.
+ For these reasons, hash index use is presently discouraged.
+ </para>
+ </caution>
+
<para>
Currently, only the B-tree, GiST and GIN index methods support
multicolumn indexes. Up to 32 fields can be specified by default.
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/ref/create_schema.sgml
^
|
@@ -65,7 +65,8 @@
<term><replaceable class="parameter">schemaname</replaceable></term>
<listitem>
<para>
- The name of a schema to be created. If this is omitted, the user name
+ The name of a schema to be created. If this is omitted, the
+ <replaceable class="parameter">username</replaceable>
is used as the schema name. The name cannot
begin with <literal>pg_</literal>, as such names
are reserved for system schemas.
@@ -77,9 +78,10 @@
<term><replaceable class="parameter">username</replaceable></term>
<listitem>
<para>
- The name of the user who will own the schema. If omitted,
- defaults to the user executing the command. Only superusers
- can create schemas owned by users other than themselves.
+ The role name of the user who will own the new schema. If omitted,
+ defaults to the user executing the command. To create a schema
+ owned by another role, you must be a direct or indirect member of
+ that role, or be a superuser.
</para>
</listitem>
</varlistentry>
@@ -176,7 +178,8 @@
all objects within it. <productname>PostgreSQL</productname>
allows schemas to contain objects owned by users other than the
schema owner. This can happen only if the schema owner grants the
- <literal>CREATE</> privilege on his schema to someone else.
+ <literal>CREATE</> privilege on his schema to someone else, or a
+ superuser chooses to create objects in it.
</para>
</refsect1>
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/release-8.3.sgml
^
|
@@ -1,6 +1,302 @@
<!-- doc/src/sgml/release-8.3.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-8-3-22">
+ <title>Release 8.3.22</title>
+
+ <note>
+ <title>Release Date</title>
+ <simpara>2012-12-06</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 8.3.21.
+ For information about new features in the 8.3 major release, see
+ <xref linkend="release-8-3">.
+ </para>
+
+ <para>
+ The <productname>PostgreSQL</> community will stop releasing updates
+ for the 8.3.X release series in February 2013.
+ Users are encouraged to update to a newer release branch soon.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 8.3.22</title>
+
+ <para>
+ A dump/restore is not required for those running 8.3.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 8.3.17,
+ see the release notes for 8.3.17.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix multiple bugs associated with <command>CREATE INDEX
+ CONCURRENTLY</> (Andres Freund, Tom Lane)
+ </para>
+
+ <para>
+ Fix <command>CREATE INDEX CONCURRENTLY</> to use
+ in-place updates when changing the state of an index's
+ <structname>pg_index</> row. This prevents race conditions that could
+ cause concurrent sessions to miss updating the target index, thus
+ resulting in corrupt concurrently-created indexes.
+ </para>
+
+ <para>
+ Also, fix various other operations to ensure that they ignore
+ invalid indexes resulting from a failed <command>CREATE INDEX
+ CONCURRENTLY</> command. The most important of these is
+ <command>VACUUM</>, because an auto-vacuum could easily be launched
+ on the table before corrective action can be taken to fix or remove
+ the invalid index.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Avoid corruption of internal hash tables when out of memory
+ (Hitoshi Harada)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix planning of non-strict equivalence clauses above outer joins
+ (Tom Lane)
+ </para>
+
+ <para>
+ The planner could derive incorrect constraints from a clause equating
+ a non-strict construct to something else, for example
+ <literal>WHERE COALESCE(foo, 0) = 0</>
+ when <literal>foo</> is coming from the nullable side of an outer join.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve planner's ability to prove exclusion constraints from
+ equivalence classes (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix partial-row matching in hashed subplans to handle cross-type cases
+ correctly (Tom Lane)
+ </para>
+
+ <para>
+ This affects multicolumn <literal>NOT IN</> subplans, such as
+ <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
+ when for instance <literal>b</> and <literal>y</> are <type>int4</>
+ and <type>int8</> respectively. This mistake led to wrong answers
+ or crashes depending on the specific datatypes involved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Acquire buffer lock when re-fetching the old tuple for an
+ <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
+ </para>
+
+ <para>
+ In very unusual circumstances, this oversight could result in passing
+ incorrect data to the precheck logic for a foreign-key enforcement
+ trigger. That could result in a crash, or in an incorrect decision
+ about whether to fire the trigger.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
+ (Álvaro Herrera)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Ignore incorrect <structname>pg_attribute</> entries for system
+ columns for views (Tom Lane)
+ </para>
+
+ <para>
+ Views do not have any system columns. However, we forgot to
+ remove such entries when converting a table to a view. That's fixed
+ properly for 9.3 and later, but in previous branches we need to defend
+ against existing mis-converted views.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
+ DEFAULT VALUES</literal> correctly (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Guard against stack overflow when there are too many
+ <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
+ in a query (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Prevent platform-dependent failures when dividing the minimum possible
+ integer value by -1 (Xi Wang, Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix possible access past end of string in date parsing
+ (Hitoshi Harada)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Produce an understandable error message if the length of the path name
+ for a Unix-domain socket exceeds the platform-specific limit
+ (Tom Lane, Andrew Dunstan)
+ </para>
+
+ <para>
+ Formerly, this would result in something quite unhelpful, such as
+ <quote>Non-recoverable failure in name resolution</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix memory leaks when sending composite column values to the client
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <application>pg_ctl</> more robust about reading the
+ <filename>postmaster.pid</> file (Heikki Linnakangas)
+ </para>
+
+ <para>
+ Fix race conditions and possible file descriptor leakage.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix possible crash in <application>psql</> if incorrectly-encoded data
+ is presented and the <varname>client_encoding</> setting is a
+ client-only encoding, such as SJIS (Jiang Guiqing)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bugs in the <filename>restore.sql</> script emitted by
+ <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
+ </para>
+
+ <para>
+ The script would fail outright on tables whose names include
+ upper-case characters. Also, make the script capable of restoring
+ data in <option>--inserts</> mode as well as the regular COPY mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>pg_restore</> to accept POSIX-conformant
+ <literal>tar</> files (Brian Weaver, Tom Lane)
+ </para>
+
+ <para>
+ The original coding of <application>pg_dump</>'s <literal>tar</>
+ output mode produced files that are not fully conformant with the
+ POSIX standard. This has been corrected for version 9.3. This
+ patch updates previous branches so that they will accept both the
+ incorrect and the corrected formats, in hopes of avoiding
+ compatibility problems when 9.3 comes out.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
+ correctly when given a relative path to the data directory (Tom Lane)
+ </para>
+
+ <para>
+ This mistake could lead to <application>pg_resetxlog</> not noticing
+ that there is an active postmaster using the data directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>libpq</>'s <function>lo_import()</> and
+ <function>lo_export()</> functions to report file I/O errors properly
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>ecpg</>'s processing of nested structure pointer
+ variables (Muhammad Usama)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <filename>contrib/pageinspect</>'s btree page inspection
+ functions take buffer locks while examining pages (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>pgxs</> support for building loadable modules on AIX
+ (Tom Lane)
+ </para>
+
+ <para>
+ Building modules outside the original source tree didn't work on AIX.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Update time zone data files to <application>tzdata</> release 2012j
+ for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
+ Samoa, and portions of Brazil.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
<sect1 id="release-8-3-21">
<title>Release 8.3.21</title>
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/release-8.4.sgml
^
|
@@ -1,6 +1,308 @@
<!-- doc/src/sgml/release-8.4.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-8-4-15">
+ <title>Release 8.4.15</title>
+
+ <note>
+ <title>Release Date</title>
+ <simpara>2012-12-06</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 8.4.14.
+ For information about new features in the 8.4 major release, see
+ <xref linkend="release-8-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 8.4.15</title>
+
+ <para>
+ A dump/restore is not required for those running 8.4.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 8.4.10,
+ see the release notes for 8.4.10.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix multiple bugs associated with <command>CREATE INDEX
+ CONCURRENTLY</> (Andres Freund, Tom Lane)
+ </para>
+
+ <para>
+ Fix <command>CREATE INDEX CONCURRENTLY</> to use
+ in-place updates when changing the state of an index's
+ <structname>pg_index</> row. This prevents race conditions that could
+ cause concurrent sessions to miss updating the target index, thus
+ resulting in corrupt concurrently-created indexes.
+ </para>
+
+ <para>
+ Also, fix various other operations to ensure that they ignore
+ invalid indexes resulting from a failed <command>CREATE INDEX
+ CONCURRENTLY</> command. The most important of these is
+ <command>VACUUM</>, because an auto-vacuum could easily be launched
+ on the table before corrective action can be taken to fix or remove
+ the invalid index.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Avoid corruption of internal hash tables when out of memory
+ (Hitoshi Harada)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix planning of non-strict equivalence clauses above outer joins
+ (Tom Lane)
+ </para>
+
+ <para>
+ The planner could derive incorrect constraints from a clause equating
+ a non-strict construct to something else, for example
+ <literal>WHERE COALESCE(foo, 0) = 0</>
+ when <literal>foo</> is coming from the nullable side of an outer join.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve planner's ability to prove exclusion constraints from
+ equivalence classes (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix partial-row matching in hashed subplans to handle cross-type cases
+ correctly (Tom Lane)
+ </para>
+
+ <para>
+ This affects multicolumn <literal>NOT IN</> subplans, such as
+ <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
+ when for instance <literal>b</> and <literal>y</> are <type>int4</>
+ and <type>int8</> respectively. This mistake led to wrong answers
+ or crashes depending on the specific datatypes involved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Acquire buffer lock when re-fetching the old tuple for an
+ <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
+ </para>
+
+ <para>
+ In very unusual circumstances, this oversight could result in passing
+ incorrect data to the precheck logic for a foreign-key enforcement
+ trigger. That could result in a crash, or in an incorrect decision
+ about whether to fire the trigger.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <command>ALTER COLUMN TYPE</> to handle inherited check
+ constraints properly (Pavan Deolasee)
+ </para>
+
+ <para>
+ This worked correctly in pre-8.4 releases, and now works correctly
+ in 8.4 and later.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
+ (Álvaro Herrera)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Ignore incorrect <structname>pg_attribute</> entries for system
+ columns for views (Tom Lane)
+ </para>
+
+ <para>
+ Views do not have any system columns. However, we forgot to
+ remove such entries when converting a table to a view. That's fixed
+ properly for 9.3 and later, but in previous branches we need to defend
+ against existing mis-converted views.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
+ DEFAULT VALUES</literal> correctly (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Guard against stack overflow when there are too many
+ <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
+ in a query (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Prevent platform-dependent failures when dividing the minimum possible
+ integer value by -1 (Xi Wang, Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix possible access past end of string in date parsing
+ (Hitoshi Harada)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Produce an understandable error message if the length of the path name
+ for a Unix-domain socket exceeds the platform-specific limit
+ (Tom Lane, Andrew Dunstan)
+ </para>
+
+ <para>
+ Formerly, this would result in something quite unhelpful, such as
+ <quote>Non-recoverable failure in name resolution</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix memory leaks when sending composite column values to the client
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <application>pg_ctl</> more robust about reading the
+ <filename>postmaster.pid</> file (Heikki Linnakangas)
+ </para>
+
+ <para>
+ Fix race conditions and possible file descriptor leakage.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix possible crash in <application>psql</> if incorrectly-encoded data
+ is presented and the <varname>client_encoding</> setting is a
+ client-only encoding, such as SJIS (Jiang Guiqing)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bugs in the <filename>restore.sql</> script emitted by
+ <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
+ </para>
+
+ <para>
+ The script would fail outright on tables whose names include
+ upper-case characters. Also, make the script capable of restoring
+ data in <option>--inserts</> mode as well as the regular COPY mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>pg_restore</> to accept POSIX-conformant
+ <literal>tar</> files (Brian Weaver, Tom Lane)
+ </para>
+
+ <para>
+ The original coding of <application>pg_dump</>'s <literal>tar</>
+ output mode produced files that are not fully conformant with the
+ POSIX standard. This has been corrected for version 9.3. This
+ patch updates previous branches so that they will accept both the
+ incorrect and the corrected formats, in hopes of avoiding
+ compatibility problems when 9.3 comes out.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
+ correctly when given a relative path to the data directory (Tom Lane)
+ </para>
+
+ <para>
+ This mistake could lead to <application>pg_resetxlog</> not noticing
+ that there is an active postmaster using the data directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>libpq</>'s <function>lo_import()</> and
+ <function>lo_export()</> functions to report file I/O errors properly
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>ecpg</>'s processing of nested structure pointer
+ variables (Muhammad Usama)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <filename>contrib/pageinspect</>'s btree page inspection
+ functions take buffer locks while examining pages (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>pgxs</> support for building loadable modules on AIX
+ (Tom Lane)
+ </para>
+
+ <para>
+ Building modules outside the original source tree didn't work on AIX.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Update time zone data files to <application>tzdata</> release 2012j
+ for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
+ Samoa, and portions of Brazil.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
<sect1 id="release-8-4-14">
<title>Release 8.4.14</title>
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/doc/src/sgml/runtime.sgml
^
|
@@ -266,10 +266,10 @@
<filename>rc.d</> directories. Whatever you do, the server must be
run by the <productname>PostgreSQL</productname> user account
<emphasis>and not by root</emphasis> or any other user. Therefore you
- probably should form your commands using <literal>su -c '...'
- postgres</literal>. For example:
+ probably should form your commands using
+ <literal>su postgres -c '...'</literal>. For example:
<programlisting>
-su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres
+su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'
</programlisting>
</para>
@@ -295,7 +295,7 @@
<indexterm><primary>OpenBSD</><secondary>start script</secondary></>
<programlisting>
if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then
- su - -c '/usr/local/pgsql/bin/pg_ctl start -l /var/postgresql/log -s' postgres
+ su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data'
echo -n ' postgresql'
fi
</programlisting>
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/Makefile
^
|
@@ -193,6 +193,7 @@
endif
ifeq ($(MAKE_EXPORTS), true)
$(INSTALL_DATA) $(POSTGRES_IMP) '$(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP)'
+ $(INSTALL_PROGRAM) $(MKLDEXPORT) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)/mkldexport.sh'
endif
.PHONY: install-bin
@@ -211,6 +212,7 @@
endif
ifeq ($(MAKE_EXPORTS), true)
$(mkinstalldirs) '$(DESTDIR)$(pkglibdir)'
+ $(mkinstalldirs) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)'
endif
@@ -220,6 +222,7 @@
rm -f '$(DESTDIR)$(bindir)/postgres$(X)' '$(DESTDIR)$(bindir)/postmaster'
ifeq ($(MAKE_EXPORTS), true)
rm -f '$(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP)'
+ rm -f '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)/mkldexport.sh'
endif
ifeq ($(PORTNAME), cygwin)
ifeq ($(MAKE_DLL), true)
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/access/heap/README.HOT
^
|
@@ -401,6 +401,12 @@
rows in a broken HOT chain (the first condition is stronger than the
second). Finally, we can mark the index valid for searches.
+Note that we do not need to set pg_index.indcheckxmin in this code path,
+because we have outwaited any transactions that would need to avoid using
+the index. (indcheckxmin is only needed because non-concurrent CREATE
+INDEX doesn't want to wait; its stronger lock would create too much risk of
+deadlock if it did.)
+
Limitations and Restrictions
----------------------------
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/catalog/index.c
^
|
@@ -1022,7 +1022,7 @@
/* other info */
ii->ii_Unique = indexStruct->indisunique;
- ii->ii_ReadyForInserts = indexStruct->indisready;
+ ii->ii_ReadyForInserts = IndexIsReady(indexStruct);
/* initialize index-build state to default */
ii->ii_Concurrent = false;
@@ -1426,8 +1426,20 @@
* index's usability horizon. Moreover, we *must not* try to change
* the index's pg_index entry while reindexing pg_index itself, and this
* optimization nicely prevents that.
+ *
+ * We also need not set indcheckxmin during a concurrent index build,
+ * because we won't set indisvalid true until all transactions that care
+ * about the broken HOT chains are gone.
+ *
+ * Therefore, this code path can only be taken during non-concurrent
+ * CREATE INDEX. Thus the fact that heap_update will set the pg_index
+ * tuple's xmin doesn't matter, because that tuple was created in the
+ * current transaction anyway. That also means we don't need to worry
+ * about any concurrent readers of the tuple; no other transaction can see
+ * it yet.
*/
- if (indexInfo->ii_BrokenHotChain && !isreindex)
+ if (indexInfo->ii_BrokenHotChain && !isreindex &&
+ !indexInfo->ii_Concurrent)
{
Oid indexId = RelationGetRelid(indexRelation);
Relation pg_index;
@@ -2244,6 +2256,66 @@
/*
+ * index_set_state_flags - adjust pg_index state flags
+ *
+ * This is used during CREATE INDEX CONCURRENTLY to adjust the pg_index
+ * flags that denote the index's state. We must use an in-place update of
+ * the pg_index tuple, because we do not have exclusive lock on the parent
+ * table and so other sessions might concurrently be doing SnapshotNow scans
+ * of pg_index to identify the table's indexes. A transactional update would
+ * risk somebody not seeing the index at all. Because the update is not
+ * transactional and will not roll back on error, this must only be used as
+ * the last step in a transaction that has not made any transactional catalog
+ * updates!
+ *
+ * Note that heap_inplace_update does send a cache inval message for the
+ * tuple, so other sessions will hear about the update as soon as we commit.
+ */
+void
+index_set_state_flags(Oid indexId, IndexStateFlagsAction action)
+{
+ Relation pg_index;
+ HeapTuple indexTuple;
+ Form_pg_index indexForm;
+
+ /* Assert that current xact hasn't done any transactional updates */
+ Assert(GetTopTransactionIdIfAny() == InvalidTransactionId);
+
+ /* Open pg_index and fetch a writable copy of the index's tuple */
+ pg_index = heap_open(IndexRelationId, RowExclusiveLock);
+
+ indexTuple = SearchSysCacheCopy(INDEXRELID,
+ ObjectIdGetDatum(indexId),
+ 0, 0, 0);
+ if (!HeapTupleIsValid(indexTuple))
+ elog(ERROR, "cache lookup failed for index %u", indexId);
+ indexForm = (Form_pg_index) GETSTRUCT(indexTuple);
+
+ /* Perform the requested state change on the copy */
+ switch (action)
+ {
+ case INDEX_CREATE_SET_READY:
+ /* Set indisready during a CREATE INDEX CONCURRENTLY sequence */
+ Assert(!indexForm->indisready);
+ Assert(!indexForm->indisvalid);
+ indexForm->indisready = true;
+ break;
+ case INDEX_CREATE_SET_VALID:
+ /* Set indisvalid during a CREATE INDEX CONCURRENTLY sequence */
+ Assert(indexForm->indisready);
+ Assert(!indexForm->indisvalid);
+ indexForm->indisvalid = true;
+ break;
+ }
+
+ /* ... and write it back in-place */
+ heap_inplace_update(pg_index, indexTuple);
+
+ heap_close(pg_index, RowExclusiveLock);
+}
+
+
+/*
* IndexGetRelation: given an index's relation OID, get the OID of the
* relation it is an index on. Uses the system cache.
*/
@@ -2281,6 +2353,7 @@
IndexInfo *indexInfo;
HeapTuple indexTuple;
Form_pg_index indexForm;
+ bool index_bad;
/*
* Open and lock the parent heap relation. ShareLock is sufficient since
@@ -2396,17 +2469,28 @@
elog(ERROR, "cache lookup failed for index %u", indexId);
indexForm = (Form_pg_index) GETSTRUCT(indexTuple);
- if (!indexForm->indisvalid || !indexForm->indisready ||
+ index_bad = (!indexForm->indisvalid ||
+ !indexForm->indisready);
+ if (index_bad ||
(indexForm->indcheckxmin && !indexInfo->ii_BrokenHotChain))
{
if (!indexInfo->ii_BrokenHotChain)
indexForm->indcheckxmin = false;
- else if (!indexForm->indisvalid || !indexForm->indisready)
+ else if (index_bad)
indexForm->indcheckxmin = true;
indexForm->indisvalid = true;
indexForm->indisready = true;
simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
CatalogUpdateIndexes(pg_index, indexTuple);
+
+ /*
+ * Invalidate the relcache for the table, so that after we commit
+ * all sessions will refresh the table's index list. This ensures
+ * that if anyone misses seeing the pg_index row during this
+ * update, they'll refresh their list before attempting any update
+ * on the table.
+ */
+ CacheInvalidateRelcache(heapRelation);
}
heap_close(pg_index, RowExclusiveLock);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/catalog/pg_shdepend.c
^
|
@@ -1185,8 +1185,12 @@
InternalGrant istmt;
ObjectAddress obj;
- /* We only operate on objects in the current database */
- if (sdepForm->dbid != MyDatabaseId)
+ /*
+ * We only operate on shared objects and objects in the current
+ * database
+ */
+ if (sdepForm->dbid != MyDatabaseId &&
+ sdepForm->dbid != InvalidOid)
continue;
switch (sdepForm->deptype)
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/commands/cluster.c
^
|
@@ -443,7 +443,7 @@
* might put recently-dead tuples out-of-order in the new table, and there
* is little harm in that.)
*/
- if (!OldIndex->rd_index->indisvalid)
+ if (!IndexIsValid(OldIndex->rd_index))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot cluster on invalid index \"%s\"",
@@ -485,6 +485,11 @@
* mark_index_clustered: mark the specified index as the one clustered on
*
* With indexOid == InvalidOid, will mark all indexes of rel not-clustered.
+ *
+ * Note: we do transactional updates of the pg_index rows, which are unsafe
+ * against concurrent SnapshotNow scans of pg_index. Therefore this is unsafe
+ * to execute with less than full exclusive lock on the parent table;
+ * otherwise concurrent executions of RelationGetIndexList could miss indexes.
*/
void
mark_index_clustered(Relation rel, Oid indexOid)
@@ -545,6 +550,9 @@
}
else if (thisIndexOid == indexOid)
{
+ /* this was checked earlier, but let's be real sure */
+ if (!IndexIsValid(indexForm))
+ elog(ERROR, "cannot cluster on invalid index %u", indexOid);
indexForm->indisclustered = true;
simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
CatalogUpdateIndexes(pg_index, indexTuple);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/commands/indexcmds.c
^
|
@@ -135,9 +135,6 @@
LockRelId heaprelid;
LOCKTAG heaplocktag;
Snapshot snapshot;
- Relation pg_index;
- HeapTuple indexTuple;
- Form_pg_index indexForm;
int i;
/*
@@ -565,24 +562,7 @@
* commit this transaction, any new transactions that open the table must
* insert new entries into the index for insertions and non-HOT updates.
*/
- pg_index = heap_open(IndexRelationId, RowExclusiveLock);
-
- indexTuple = SearchSysCacheCopy(INDEXRELID,
- ObjectIdGetDatum(indexRelationId),
- 0, 0, 0);
- if (!HeapTupleIsValid(indexTuple))
- elog(ERROR, "cache lookup failed for index %u", indexRelationId);
- indexForm = (Form_pg_index) GETSTRUCT(indexTuple);
-
- Assert(!indexForm->indisready);
- Assert(!indexForm->indisvalid);
-
- indexForm->indisready = true;
-
- simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
- CatalogUpdateIndexes(pg_index, indexTuple);
-
- heap_close(pg_index, RowExclusiveLock);
+ index_set_state_flags(indexRelationId, INDEX_CREATE_SET_READY);
/* we can do away with our snapshot */
PopActiveSnapshot();
@@ -706,24 +686,7 @@
/*
* Index can now be marked valid -- update its pg_index entry
*/
- pg_index = heap_open(IndexRelationId, RowExclusiveLock);
-
- indexTuple = SearchSysCacheCopy(INDEXRELID,
- ObjectIdGetDatum(indexRelationId),
- 0, 0, 0);
- if (!HeapTupleIsValid(indexTuple))
- elog(ERROR, "cache lookup failed for index %u", indexRelationId);
- indexForm = (Form_pg_index) GETSTRUCT(indexTuple);
-
- Assert(indexForm->indisready);
- Assert(!indexForm->indisvalid);
-
- indexForm->indisvalid = true;
-
- simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
- CatalogUpdateIndexes(pg_index, indexTuple);
-
- heap_close(pg_index, RowExclusiveLock);
+ index_set_state_flags(indexRelationId, INDEX_CREATE_SET_VALID);
/*
* The pg_index update will cause backends (including this one) to update
@@ -731,7 +694,7 @@
* relcache inval on the parent table to force replanning of cached plans.
* Otherwise existing sessions might fail to use the new index where it
* would be useful. (Note that our earlier commits did not create reasons
- * to replan; relcache flush on the index itself was sufficient.)
+ * to replan; so relcache flush on the index itself was sufficient.)
*/
CacheInvalidateRelcacheByRelid(heaprelid.relId);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/commands/tablecmds.c
^
|
@@ -291,11 +291,11 @@
IndexStmt *stmt, bool is_rebuild);
static void ATExecAddConstraint(List **wqueue,
AlteredTableInfo *tab, Relation rel,
- Node *newConstraint, bool recurse);
+ Node *newConstraint, bool recurse, bool is_readd);
static void ATAddCheckConstraint(List **wqueue,
AlteredTableInfo *tab, Relation rel,
Constraint *constr,
- bool recurse, bool recursing);
+ bool recurse, bool recursing, bool is_readd);
static void ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
FkConstraint *fkconstraint);
static void ATExecDropConstraint(Relation rel, const char *constrName,
@@ -2559,10 +2559,13 @@
ATExecAddIndex(tab, rel, (IndexStmt *) cmd->def, true);
break;
case AT_AddConstraint: /* ADD CONSTRAINT */
- ATExecAddConstraint(wqueue, tab, rel, cmd->def, false);
+ ATExecAddConstraint(wqueue, tab, rel, cmd->def, false, false);
break;
case AT_AddConstraintRecurse: /* ADD CONSTRAINT with recursion */
- ATExecAddConstraint(wqueue, tab, rel, cmd->def, true);
+ ATExecAddConstraint(wqueue, tab, rel, cmd->def, true, false);
+ break;
+ case AT_ReAddConstraint: /* Re-add pre-existing check constraint */
+ ATExecAddConstraint(wqueue, tab, rel, cmd->def, false, true);
break;
case AT_DropConstraint: /* DROP CONSTRAINT */
ATExecDropConstraint(rel, cmd->name, cmd->behavior, false, false);
@@ -3760,6 +3763,8 @@
/*
* Check that the attribute is not in a primary key
+ *
+ * Note: we'll throw error even if the pkey index is not valid.
*/
/* Loop over all indexes on the relation */
@@ -4309,7 +4314,7 @@
*/
static void
ATExecAddConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
- Node *newConstraint, bool recurse)
+ Node *newConstraint, bool recurse, bool is_readd)
{
switch (nodeTag(newConstraint))
{
@@ -4327,7 +4332,7 @@
{
case CONSTR_CHECK:
ATAddCheckConstraint(wqueue, tab, rel,
- constr, recurse, false);
+ constr, recurse, false, is_readd);
break;
default:
elog(ERROR, "unrecognized constraint type: %d",
@@ -4387,10 +4392,18 @@
* AddRelationNewConstraints would normally assign different names to the
* child constraints. To fix that, we must capture the name assigned at
* the parent table and pass that down.
+ *
+ * When re-adding a previously existing constraint (during ALTER COLUMN TYPE),
+ * we don't need to recurse here, because recursion will be carried out at a
+ * higher level; the constraint name issue doesn't apply because the names
+ * have already been assigned and are just being re-used. We need a separate
+ * "is_readd" flag for that; just setting recurse=false would result in an
+ * error if there are child tables.
*/
static void
ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
- Constraint *constr, bool recurse, bool recursing)
+ Constraint *constr, bool recurse, bool recursing,
+ bool is_readd)
{
List *newcons;
ListCell *lcon;
@@ -4450,6 +4463,13 @@
return;
/*
+ * Also, in a re-add operation, we don't need to recurse (that will be
+ * handled at higher levels).
+ */
+ if (is_readd)
+ return;
+
+ /*
* Propagate to children as appropriate. Unlike most other ALTER
* routines, we have to do this one level of recursion at a time; we can't
* use find_all_inheritors to do it in one pass.
@@ -4481,7 +4501,7 @@
/* Recurse to child */
ATAddCheckConstraint(wqueue, childtab, childrel,
- constr, recurse, true);
+ constr, recurse, true, is_readd);
heap_close(childrel, NoLock);
}
@@ -4851,7 +4871,7 @@
/*
* Get the list of index OIDs for the table from the relcache, and look up
* each one in the pg_index syscache until we find one marked primary key
- * (hopefully there isn't more than one such).
+ * (hopefully there isn't more than one such). Insist it's valid, too.
*/
*indexOid = InvalidOid;
@@ -4867,7 +4887,7 @@
if (!HeapTupleIsValid(indexTuple))
elog(ERROR, "cache lookup failed for index %u", indexoid);
indexStruct = (Form_pg_index) GETSTRUCT(indexTuple);
- if (indexStruct->indisprimary)
+ if (indexStruct->indisprimary && IndexIsValid(indexStruct))
{
*indexOid = indexoid;
break;
@@ -4955,10 +4975,12 @@
/*
* Must have the right number of columns; must be unique and not a
- * partial index; forget it if there are any expressions, too
+ * partial index; forget it if there are any expressions, too. Invalid
+ * indexes are out as well.
*/
if (indexStruct->indnatts == numattrs &&
indexStruct->indisunique &&
+ IndexIsValid(indexStruct) &&
heap_attisnull(indexTuple, Anum_pg_index_indpred) &&
heap_attisnull(indexTuple, Anum_pg_index_indexprs))
{
@@ -6057,6 +6079,10 @@
/*
* Attach each generated command to the proper place in the work queue.
* Note this could result in creation of entirely new work-queue entries.
+ *
+ * Also note that we have to tweak the command subtypes, because it turns
+ * out that re-creation of indexes and constraints has to act a bit
+ * differently from initial creation.
*/
foreach(list_item, querytree_list)
{
@@ -6100,6 +6126,7 @@
lappend(tab->subcmds[AT_PASS_OLD_INDEX], cmd);
break;
case AT_AddConstraint:
+ cmd->subtype = AT_ReAddConstraint;
tab->subcmds[AT_PASS_OLD_CONSTR] =
lappend(tab->subcmds[AT_PASS_OLD_CONSTR], cmd);
break;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/commands/trigger.c
^
|
@@ -2188,6 +2188,16 @@
buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid));
+ /*
+ * Although we already know this tuple is valid, we must lock the
+ * buffer to ensure that no one has a buffer cleanup lock; otherwise
+ * they might move the tuple while we try to copy it. But we can
+ * release the lock before actually doing the heap_copytuple call,
+ * since holding pin is sufficient to prevent anyone from getting a
+ * cleanup lock they don't already hold.
+ */
+ LockBuffer(buffer, BUFFER_LOCK_SHARE);
+
page = BufferGetPage(buffer);
lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid));
@@ -2197,6 +2207,8 @@
tuple.t_len = ItemIdGetLength(lp);
tuple.t_self = *tid;
tuple.t_tableOid = RelationGetRelid(relation);
+
+ LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
}
result = heap_copytuple(&tuple);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/commands/vacuum.c
^
|
@@ -3853,9 +3853,16 @@
/*
- * Open all the indexes of the given relation, obtaining the specified kind
- * of lock on each. Return an array of Relation pointers for the indexes
- * into *Irel, and the number of indexes into *nindexes.
+ * Open all the vacuumable indexes of the given relation, obtaining the
+ * specified kind of lock on each. Return an array of Relation pointers for
+ * the indexes into *Irel, and the number of indexes into *nindexes.
+ *
+ * We consider an index vacuumable if it is marked insertable (IndexIsReady).
+ * If it isn't, probably a CREATE INDEX CONCURRENTLY command failed early in
+ * execution, and what we have is too corrupt to be processable. We will
+ * vacuum even if the index isn't indisvalid; this is important because in a
+ * unique index, uniqueness checks will be performed anyway and had better not
+ * hit dangling index pointers.
*/
void
vac_open_indexes(Relation relation, LOCKMODE lockmode,
@@ -3869,21 +3876,30 @@
indexoidlist = RelationGetIndexList(relation);
- *nindexes = list_length(indexoidlist);
+ /* allocate enough memory for all indexes */
+ i = list_length(indexoidlist);
- if (*nindexes > 0)
- *Irel = (Relation *) palloc(*nindexes * sizeof(Relation));
+ if (i > 0)
+ *Irel = (Relation *) palloc(i * sizeof(Relation));
else
*Irel = NULL;
+ /* collect just the ready indexes */
i = 0;
foreach(indexoidscan, indexoidlist)
{
Oid indexoid = lfirst_oid(indexoidscan);
+ Relation indrel;
- (*Irel)[i++] = index_open(indexoid, lockmode);
+ indrel = index_open(indexoid, lockmode);
+ if (IndexIsReady(indrel->rd_index))
+ (*Irel)[i++] = indrel;
+ else
+ index_close(indrel, lockmode);
}
+ *nindexes = i;
+
list_free(indexoidlist);
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/commands/vacuumlazy.c
^
|
@@ -800,6 +800,15 @@
vacrelstats->scanned_pages,
num_tuples);
+ /*
+ * Release any remaining pin on visibility map page.
+ */
+ if (BufferIsValid(vmbuffer))
+ {
+ ReleaseBuffer(vmbuffer);
+ vmbuffer = InvalidBuffer;
+ }
+
/* If any tuples need to be deleted, perform final vacuum cycle */
/* XXX put a threshold on min number of tuples here? */
if (vacrelstats->num_dead_tuples > 0)
@@ -814,13 +823,6 @@
vacrelstats->num_index_scans++;
}
- /* Release the pin on the visibility map page */
- if (BufferIsValid(vmbuffer))
- {
- ReleaseBuffer(vmbuffer);
- vmbuffer = InvalidBuffer;
- }
-
/* Do post-vacuum cleanup and statistics update for each index */
for (i = 0; i < nindexes; i++)
lazy_cleanup_index(Irel[i], indstats[i], vacrelstats);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/executor/execUtils.c
^
|
@@ -970,6 +970,9 @@
/*
* For each index, open the index relation and save pg_index info. We
* acquire RowExclusiveLock, signifying we will update the index.
+ *
+ * Note: we do this even if the index is not IndexIsReady; it's not worth
+ * the trouble to optimize for the case where it isn't.
*/
i = 0;
foreach(l, indexoidlist)
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/executor/nodeSubplan.c
^
|
@@ -44,7 +44,8 @@
ExprContext *econtext,
bool *isNull);
static void buildSubPlanHash(SubPlanState *node, ExprContext *econtext);
-static bool findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot);
+static bool findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot,
+ FmgrInfo *eqfunctions);
static bool slotAllNulls(TupleTableSlot *slot);
static bool slotNoNulls(TupleTableSlot *slot);
@@ -151,7 +152,7 @@
return BoolGetDatum(true);
}
if (node->havenullrows &&
- findPartialMatch(node->hashnulls, slot))
+ findPartialMatch(node->hashnulls, slot, node->cur_eq_funcs))
{
ExecClearTuple(slot);
*isNull = true;
@@ -184,14 +185,14 @@
}
/* Scan partly-null table first, since more likely to get a match */
if (node->havenullrows &&
- findPartialMatch(node->hashnulls, slot))
+ findPartialMatch(node->hashnulls, slot, node->cur_eq_funcs))
{
ExecClearTuple(slot);
*isNull = true;
return BoolGetDatum(false);
}
if (node->havehashrows &&
- findPartialMatch(node->hashtable, slot))
+ findPartialMatch(node->hashtable, slot, node->cur_eq_funcs))
{
ExecClearTuple(slot);
*isNull = true;
@@ -571,9 +572,13 @@
* We have to scan the whole hashtable; we can't usefully use hashkeys
* to guide probing, since we might get partial matches on tuples with
* hashkeys quite unrelated to what we'd get from the given tuple.
+ *
+ * Caller must provide the equality functions to use, since in cross-type
+ * cases these are different from the hashtable's internal functions.
*/
static bool
-findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot)
+findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot,
+ FmgrInfo *eqfunctions)
{
int numCols = hashtable->numCols;
AttrNumber *keyColIdx = hashtable->keyColIdx;
@@ -586,7 +591,7 @@
ExecStoreMinimalTuple(entry->firstTuple, hashtable->tableslot, false);
if (!execTuplesUnequal(slot, hashtable->tableslot,
numCols, keyColIdx,
- hashtable->cur_eq_funcs,
+ eqfunctions,
hashtable->tempcxt))
{
TermTupleHashIterator(&hashiter);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/libpq/pqcomm.c
^
|
@@ -476,6 +476,14 @@
Lock_AF_UNIX(unsigned short portNumber, char *unixSocketName)
{
UNIXSOCK_PATH(sock_path, portNumber, unixSocketName);
+ if (strlen(sock_path) >= UNIXSOCK_PATH_BUFLEN)
+ {
+ ereport(LOG,
+ (errmsg("Unix-domain socket path \"%s\" is too long (maximum %d bytes)",
+ sock_path,
+ (int) (UNIXSOCK_PATH_BUFLEN - 1))));
+ return STATUS_ERROR;
+ }
/*
* Grab an interlock file associated with the socket file.
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/nodes/outfuncs.c
^
|
@@ -1587,6 +1587,7 @@
WRITE_NODE_FIELD(em_expr);
WRITE_BITMAPSET_FIELD(em_relids);
+ WRITE_BITMAPSET_FIELD(em_nullable_relids);
WRITE_BOOL_FIELD(em_is_const);
WRITE_BOOL_FIELD(em_is_child);
WRITE_OID_FIELD(em_datatype);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/optimizer/path/equivclass.c
^
|
@@ -28,7 +28,7 @@
static EquivalenceMember *add_eq_member(EquivalenceClass *ec,
- Expr *expr, Relids relids,
+ Expr *expr, Relids relids, Relids nullable_relids,
bool is_child, Oid datatype);
static void generate_base_implied_equalities_const(PlannerInfo *root,
EquivalenceClass *ec);
@@ -98,7 +98,9 @@
Expr *item1;
Expr *item2;
Relids item1_relids,
- item2_relids;
+ item2_relids,
+ item1_nullable_relids,
+ item2_nullable_relids;
List *opfamilies;
EquivalenceClass *ec1,
*ec2;
@@ -140,6 +142,12 @@
return false; /* RHS is non-strict but not constant */
}
+ /* Calculate nullable-relid sets for each side of the clause */
+ item1_nullable_relids = bms_intersect(item1_relids,
+ restrictinfo->nullable_relids);
+ item2_nullable_relids = bms_intersect(item2_relids,
+ restrictinfo->nullable_relids);
+
/*
* We use the declared input types of the operator, not exprType() of the
* inputs, as the nominal datatypes for opfamily lookup. This presumes
@@ -274,7 +282,8 @@
else if (ec1)
{
/* Case 3: add item2 to ec1 */
- em2 = add_eq_member(ec1, item2, item2_relids, false, item2_type);
+ em2 = add_eq_member(ec1, item2, item2_relids, item2_nullable_relids,
+ false, item2_type);
ec1->ec_sources = lappend(ec1->ec_sources, restrictinfo);
ec1->ec_below_outer_join |= below_outer_join;
/* mark the RI as usable with this pair of EMs */
@@ -284,7 +293,8 @@
else if (ec2)
{
/* Case 3: add item1 to ec2 */
- em1 = add_eq_member(ec2, item1, item1_relids, false, item1_type);
+ em1 = add_eq_member(ec2, item1, item1_relids, item1_nullable_relids,
+ false, item1_type);
ec2->ec_sources = lappend(ec2->ec_sources, restrictinfo);
ec2->ec_below_outer_join |= below_outer_join;
/* mark the RI as usable with this pair of EMs */
@@ -307,8 +317,10 @@
ec->ec_broken = false;
ec->ec_sortref = 0;
ec->ec_merged = NULL;
- em1 = add_eq_member(ec, item1, item1_relids, false, item1_type);
- em2 = add_eq_member(ec, item2, item2_relids, false, item2_type);
+ em1 = add_eq_member(ec, item1, item1_relids, item1_nullable_relids,
+ false, item1_type);
+ em2 = add_eq_member(ec, item2, item2_relids, item2_nullable_relids,
+ false, item2_type);
root->eq_classes = lappend(root->eq_classes, ec);
@@ -325,12 +337,13 @@
*/
static EquivalenceMember *
add_eq_member(EquivalenceClass *ec, Expr *expr, Relids relids,
- bool is_child, Oid datatype)
+ Relids nullable_relids, bool is_child, Oid datatype)
{
EquivalenceMember *em = makeNode(EquivalenceMember);
em->em_expr = expr;
em->em_relids = relids;
+ em->em_nullable_relids = nullable_relids;
em->em_is_const = false;
em->em_is_child = is_child;
em->em_datatype = datatype;
@@ -452,7 +465,7 @@
elog(ERROR, "volatile EquivalenceClass has no sortref");
newem = add_eq_member(newec, expr, pull_varnos((Node *) expr),
- false, expr_datatype);
+ NULL, false, expr_datatype);
/*
* add_eq_member doesn't check for volatile functions, set-returning
@@ -599,7 +612,12 @@
}
}
- /* Find the constant member to use */
+ /*
+ * Find the constant member to use. We prefer an actual constant to
+ * pseudo-constants (such as Params), because the constraint exclusion
+ * machinery might be able to exclude relations on the basis of generated
+ * "var = const" equalities, but "var = param" won't work for that.
+ */
foreach(lc, ec->ec_members)
{
EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc);
@@ -607,7 +625,8 @@
if (cur_em->em_is_const)
{
const_em = cur_em;
- break;
+ if (IsA(cur_em->em_expr, Const))
+ break;
}
}
Assert(const_em != NULL);
@@ -632,7 +651,9 @@
}
process_implied_equality(root, eq_op,
cur_em->em_expr, const_em->em_expr,
- ec->ec_relids,
+ bms_copy(ec->ec_relids),
+ bms_union(cur_em->em_nullable_relids,
+ const_em->em_nullable_relids),
ec->ec_below_outer_join,
cur_em->em_is_const);
}
@@ -687,7 +708,9 @@
}
process_implied_equality(root, eq_op,
prev_em->em_expr, cur_em->em_expr,
- ec->ec_relids,
+ bms_copy(ec->ec_relids),
+ bms_union(prev_em->em_nullable_relids,
+ cur_em->em_nullable_relids),
ec->ec_below_outer_join,
false);
}
@@ -1089,7 +1112,9 @@
leftem->em_expr,
rightem->em_expr,
bms_union(leftem->em_relids,
- rightem->em_relids));
+ rightem->em_relids),
+ bms_union(leftem->em_nullable_relids,
+ rightem->em_nullable_relids));
/* Mark the clause as redundant, or not */
rinfo->parent_ec = parent_ec;
@@ -1310,7 +1335,8 @@
left_type,
right_type,
inner_datatype;
- Relids inner_relids;
+ Relids inner_relids,
+ inner_nullable_relids;
ListCell *lc1;
Assert(is_opclause(rinfo->clause));
@@ -1336,6 +1362,8 @@
inner_datatype = left_type;
inner_relids = rinfo->left_relids;
}
+ inner_nullable_relids = bms_intersect(inner_relids,
+ rinfo->nullable_relids);
/* Scan EquivalenceClasses for a match to outervar */
foreach(lc1, root->eq_classes)
@@ -1390,7 +1418,8 @@
newrinfo = build_implied_join_equality(eq_op,
innervar,
cur_em->em_expr,
- inner_relids);
+ bms_copy(inner_relids),
+ bms_copy(inner_nullable_relids));
if (process_equivalence(root, newrinfo, true))
match = true;
}
@@ -1423,7 +1452,9 @@
left_type,
right_type;
Relids left_relids,
- right_relids;
+ right_relids,
+ left_nullable_relids,
+ right_nullable_relids;
ListCell *lc1;
/* Can't use an outerjoin_delayed clause here */
@@ -1438,6 +1469,10 @@
rightvar = (Expr *) get_rightop(rinfo->clause);
left_relids = rinfo->left_relids;
right_relids = rinfo->right_relids;
+ left_nullable_relids = bms_intersect(left_relids,
+ rinfo->nullable_relids);
+ right_nullable_relids = bms_intersect(right_relids,
+ rinfo->nullable_relids);
foreach(lc1, root->eq_classes)
{
@@ -1519,7 +1554,8 @@
newrinfo = build_implied_join_equality(eq_op,
leftvar,
cur_em->em_expr,
- left_relids);
+ bms_copy(left_relids),
+ bms_copy(left_nullable_relids));
if (process_equivalence(root, newrinfo, true))
matchleft = true;
}
@@ -1531,7 +1567,8 @@
newrinfo = build_implied_join_equality(eq_op,
rightvar,
cur_em->em_expr,
- right_relids);
+ bms_copy(right_relids),
+ bms_copy(right_nullable_relids));
if (process_equivalence(root, newrinfo, true))
matchright = true;
}
@@ -1651,11 +1688,27 @@
{
/* Yes, generate transformed child version */
Expr *child_expr;
+ Relids new_nullable_relids;
child_expr = (Expr *)
adjust_appendrel_attrs((Node *) cur_em->em_expr,
appinfo);
- (void) add_eq_member(cur_ec, child_expr, child_rel->relids,
+
+ /*
+ * Must translate nullable_relids. Note this code assumes
+ * parent and child relids are singletons.
+ */
+ new_nullable_relids = cur_em->em_nullable_relids;
+ if (bms_overlap(new_nullable_relids, parent_rel->relids))
+ {
+ new_nullable_relids = bms_difference(new_nullable_relids,
+ parent_rel->relids);
+ new_nullable_relids = bms_add_members(new_nullable_relids,
+ child_rel->relids);
+ }
+
+ (void) add_eq_member(cur_ec, child_expr,
+ child_rel->relids, new_nullable_relids,
true, cur_em->em_datatype);
}
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/optimizer/plan/initsplan.c
^
|
@@ -51,9 +51,12 @@
JoinType jointype,
Relids qualscope,
Relids ojscope,
- Relids outerjoin_nonnullable);
+ Relids outerjoin_nonnullable,
+ Relids deduced_nullable_relids);
static bool check_outerjoin_delay(PlannerInfo *root, Relids *relids_p,
Relids *nullable_relids_p, bool is_pushed_down);
+static bool check_equivalence_delay(PlannerInfo *root,
+ RestrictInfo *restrictinfo);
static bool check_redundant_nullability_qual(PlannerInfo *root, Node *clause);
static void check_mergejoinable(RestrictInfo *restrictinfo);
static void check_hashjoinable(RestrictInfo *restrictinfo);
@@ -350,7 +353,7 @@
distribute_qual_to_rels(root, qual,
false, below_outer_join, JOIN_INNER,
- *qualscope, NULL, NULL);
+ *qualscope, NULL, NULL, NULL);
}
}
else if (IsA(jtnode, JoinExpr))
@@ -474,7 +477,7 @@
distribute_qual_to_rels(root, qual,
false, below_outer_join, j->jointype,
*qualscope,
- ojscope, nonnullable_rels);
+ ojscope, nonnullable_rels, NULL);
}
/* Now we can add the SpecialJoinInfo to join_info_list */
@@ -780,13 +783,19 @@
* baserels appearing on the outer (nonnullable) side of the join
* (for FULL JOIN this includes both sides of the join, and must in fact
* equal qualscope)
+ * 'deduced_nullable_relids': if is_deduced is TRUE, the nullable relids to
+ * impute to the clause; otherwise NULL
*
* 'qualscope' identifies what level of JOIN the qual came from syntactically.
* 'ojscope' is needed if we decide to force the qual up to the outer-join
* level, which will be ojscope not necessarily qualscope.
*
- * At the time this is called, root->join_info_list must contain entries for
- * all and only those special joins that are syntactically below this qual.
+ * In normal use (when is_deduced is FALSE), at the time this is called,
+ * root->join_info_list must contain entries for all and only those special
+ * joins that are syntactically below this qual. But when is_deduced is TRUE,
+ * we are adding new deduced clauses after completion of deconstruct_jointree,
+ * so it cannot be assumed that root->join_info_list has anything to do with
+ * qual placement.
*/
static void
distribute_qual_to_rels(PlannerInfo *root, Node *clause,
@@ -795,7 +804,8 @@
JoinType jointype,
Relids qualscope,
Relids ojscope,
- Relids outerjoin_nonnullable)
+ Relids outerjoin_nonnullable,
+ Relids deduced_nullable_relids)
{
Relids relids;
bool is_pushed_down;
@@ -908,12 +918,13 @@
* If the qual came from implied-equality deduction, it should not be
* outerjoin-delayed, else deducer blew it. But we can't check this
* because the join_info_list may now contain OJs above where the qual
- * belongs.
+ * belongs. For the same reason, we must rely on caller to supply the
+ * correct nullable_relids set.
*/
Assert(!ojscope);
is_pushed_down = true;
outerjoin_delayed = false;
- nullable_relids = NULL;
+ nullable_relids = deduced_nullable_relids;
/* Don't feed it back for more deductions */
maybe_equivalence = false;
maybe_outer_join = false;
@@ -1075,7 +1086,8 @@
{
if (maybe_equivalence)
{
- if (process_equivalence(root, restrictinfo, below_outer_join))
+ if (check_equivalence_delay(root, restrictinfo) &&
+ process_equivalence(root, restrictinfo, below_outer_join))
return;
/* EC rejected it, so pass to distribute_restrictinfo_to_rels */
}
@@ -1237,6 +1249,44 @@
}
/*
+ * check_equivalence_delay
+ * Detect whether a potential equivalence clause is rendered unsafe
+ * by outer-join-delay considerations. Return TRUE if it's safe.
+ *
+ * The initial tests in distribute_qual_to_rels will consider a mergejoinable
+ * clause to be a potential equivalence clause if it is not outerjoin_delayed.
+ * But since the point of equivalence processing is that we will recombine the
+ * two sides of the clause with others, we have to check that each side
+ * satisfies the not-outerjoin_delayed condition on its own; otherwise it might
+ * not be safe to evaluate everywhere we could place a derived equivalence
+ * condition.
+ */
+static bool
+check_equivalence_delay(PlannerInfo *root,
+ RestrictInfo *restrictinfo)
+{
+ Relids relids;
+ Relids nullable_relids;
+
+ /* fast path if no special joins */
+ if (root->join_info_list == NIL)
+ return true;
+
+ /* must copy restrictinfo's relids to avoid changing it */
+ relids = bms_copy(restrictinfo->left_relids);
+ /* check left side does not need delay */
+ if (check_outerjoin_delay(root, &relids, &nullable_relids, true))
+ return false;
+
+ /* and similarly for the right side */
+ relids = bms_copy(restrictinfo->right_relids);
+ if (check_outerjoin_delay(root, &relids, &nullable_relids, true))
+ return false;
+
+ return true;
+}
+
+/*
* check_redundant_nullability_qual
* Check to see if the qual is an IS NULL qual that is redundant with
* a lower JOIN_ANTI join.
@@ -1347,11 +1397,20 @@
* variable-free. Otherwise the qual is applied at the lowest join level
* that provides all its variables.
*
+ * "nullable_relids" is the set of relids used in the expressions that are
+ * potentially nullable below the expressions. (This has to be supplied by
+ * caller because this function is used after deconstruct_jointree, so we
+ * don't have knowledge of where the clause items came from.)
+ *
* "both_const" indicates whether both items are known pseudo-constant;
* in this case it is worth applying eval_const_expressions() in case we
* can produce constant TRUE or constant FALSE. (Otherwise it's not,
* because the expressions went through eval_const_expressions already.)
*
+ * Note: this function will copy item1 and item2, but it is caller's
+ * responsibility to make sure that the Relids parameters are fresh copies
+ * not shared with other uses.
+ *
* This is currently used only when an EquivalenceClass is found to
* contain pseudoconstants. See path/pathkeys.c for more details.
*/
@@ -1361,6 +1420,7 @@
Expr *item1,
Expr *item2,
Relids qualscope,
+ Relids nullable_relids,
bool below_outer_join,
bool both_const)
{
@@ -1392,15 +1452,12 @@
}
}
- /* Make a copy of qualscope to avoid problems if source EC changes */
- qualscope = bms_copy(qualscope);
-
/*
* Push the new clause into all the appropriate restrictinfo lists.
*/
distribute_qual_to_rels(root, (Node *) clause,
true, below_outer_join, JOIN_INNER,
- qualscope, NULL, NULL);
+ qualscope, NULL, NULL, nullable_relids);
}
/*
@@ -1408,12 +1465,17 @@
*
* This overlaps the functionality of process_implied_equality(), but we
* must return the RestrictInfo, not push it into the joininfo tree.
+ *
+ * Note: this function will copy item1 and item2, but it is caller's
+ * responsibility to make sure that the Relids parameters are fresh copies
+ * not shared with other uses.
*/
RestrictInfo *
build_implied_join_equality(Oid opno,
Expr *item1,
Expr *item2,
- Relids qualscope)
+ Relids qualscope,
+ Relids nullable_relids)
{
RestrictInfo *restrictinfo;
Expr *clause;
@@ -1428,9 +1490,6 @@
(Expr *) copyObject(item1),
(Expr *) copyObject(item2));
- /* Make a copy of qualscope to avoid problems if source EC changes */
- qualscope = bms_copy(qualscope);
-
/*
* Build the RestrictInfo node itself.
*/
@@ -1439,7 +1498,7 @@
false, /* outerjoin_delayed */
false, /* pseudoconstant */
qualscope, /* required_relids */
- NULL); /* nullable_relids */
+ nullable_relids); /* nullable_relids */
/* Set mergejoinability info always, and hashjoinability if enabled */
check_mergejoinable(restrictinfo);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/optimizer/util/plancat.c
^
|
@@ -158,9 +158,10 @@
* Ignore invalid indexes, since they can't safely be used for
* queries. Note that this is OK because the data structure we
* are constructing is only used by the planner --- the executor
- * still needs to insert into "invalid" indexes!
+ * still needs to insert into "invalid" indexes, if they're marked
+ * IndexIsReady.
*/
- if (!index->indisvalid)
+ if (!IndexIsValid(index))
{
index_close(indexRelation, NoLock);
continue;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/parser/analyze.c
^
|
@@ -26,6 +26,7 @@
#include "access/sysattr.h"
#include "catalog/pg_type.h"
+#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "optimizer/var.h"
@@ -1386,6 +1387,9 @@
Assert(stmt && IsA(stmt, SelectStmt));
+ /* Guard against stack overflow due to overly complex set-expressions */
+ check_stack_depth();
+
/*
* Validity-check both leaf and internal SELECTs for disallowed ops.
*/
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/parser/parse_relation.c
^
|
@@ -495,11 +495,18 @@
attnum = specialAttNum(colname);
if (attnum != InvalidAttrNumber)
{
- /* now check to see if column actually is defined */
+ /*
+ * Now check to see if column actually is defined. Because of
+ * an ancient oversight in DefineQueryRewrite, it's possible that
+ * pg_attribute contains entries for system columns for a view,
+ * even though views should not have such --- so we also check
+ * the relkind. This kluge will not be needed in 9.3 and later.
+ */
if (SearchSysCacheExists(ATTNUM,
ObjectIdGetDatum(rte->relid),
Int16GetDatum(attnum),
- 0, 0))
+ 0, 0) &&
+ get_rel_relkind(rte->relid) != RELKIND_VIEW)
{
var = make_var(pstate, rte, attnum, location);
/* Require read access to the column */
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/po/de.po
^
|
@@ -1,5 +1,5 @@
# German message translation file for PostgreSQL server
-# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2011.
+# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2012.
#
# Use these quotes: »%s«
#
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-09-17 19:43+0000\n"
-"PO-Revision-Date: 2012-09-18 21:27-0400\n"
+"POT-Creation-Date: 2012-12-01 23:11+0000\n"
+"PO-Revision-Date: 2012-12-02 00:58-0500\n"
"Last-Translator: Peter Eisentraut <peter_e@gmx.net>\n"
"Language-Team: German <peter_e@gmx.net>\n"
"Language: de\n"
@@ -588,7 +588,7 @@
#: postmaster/postmaster.c:3033 postmaster/postmaster.c:3783
#: postmaster/postmaster.c:3869 postmaster/postmaster.c:4438
#: utils/hash/dynahash.c:363 utils/hash/dynahash.c:435
-#: utils/hash/dynahash.c:929 utils/misc/guc.c:2757 utils/misc/guc.c:2770
+#: utils/hash/dynahash.c:950 utils/misc/guc.c:2757 utils/misc/guc.c:2770
#: utils/misc/guc.c:2783 utils/init/miscinit.c:212 utils/init/miscinit.c:233
#: utils/init/miscinit.c:243 utils/fmgr/dfmgr.c:224 utils/mb/mbutils.c:335
#: utils/mb/mbutils.c:596 utils/mmgr/aset.c:385 utils/mmgr/aset.c:564
@@ -838,17 +838,17 @@
msgid "cached plan must not change result type"
msgstr "gecachter Plan darf den Ergebnistyp nicht ändern"
-#: utils/cache/relcache.c:3859
+#: utils/cache/relcache.c:3876
#, c-format
msgid "could not create relation-cache initialization file \"%s\": %m"
msgstr ""
"konnte Initialisierungsdatei für Relationscache »%s« nicht erzeugen: %m"
-#: utils/cache/relcache.c:3861
+#: utils/cache/relcache.c:3878
msgid "Continuing anyway, but there's something wrong."
msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht."
-#: utils/cache/relcache.c:4063
+#: utils/cache/relcache.c:4080
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "konnte Cache-Datei »%s« nicht löschen: %m"
@@ -900,7 +900,7 @@
msgid "record type has not been registered"
msgstr "Record-Typ wurde nicht registriert"
-#: utils/hash/dynahash.c:925 storage/ipc/shmem.c:190 storage/ipc/shmem.c:359
+#: utils/hash/dynahash.c:946 storage/ipc/shmem.c:190 storage/ipc/shmem.c:359
#: storage/lmgr/proc.c:186 storage/lmgr/proc.c:199 storage/lmgr/lock.c:583
#: storage/lmgr/lock.c:649 storage/lmgr/lock.c:2051 storage/lmgr/lock.c:2339
#: storage/lmgr/lock.c:2404
@@ -3533,13 +3533,13 @@
#: utils/adt/array_userfuncs.c:104 utils/adt/array_userfuncs.c:114
#: utils/adt/int.c:613 utils/adt/int.c:642 utils/adt/int.c:663
-#: utils/adt/int.c:683 utils/adt/int.c:705 utils/adt/int.c:734
-#: utils/adt/int.c:748 utils/adt/int.c:763 utils/adt/int.c:902
-#: utils/adt/int.c:923 utils/adt/int.c:950 utils/adt/int.c:990
-#: utils/adt/int.c:1011 utils/adt/int.c:1038 utils/adt/int.c:1069
-#: utils/adt/int.c:1132 utils/adt/int8.c:1222 utils/adt/float.c:1100
-#: utils/adt/float.c:1159 utils/adt/float.c:2716 utils/adt/float.c:2732
-#: utils/adt/varbit.c:1392 utils/adt/numeric.c:2035 utils/adt/numeric.c:2044
+#: utils/adt/int.c:694 utils/adt/int.c:727 utils/adt/int.c:749
+#: utils/adt/int.c:897 utils/adt/int.c:918 utils/adt/int.c:945
+#: utils/adt/int.c:985 utils/adt/int.c:1006 utils/adt/int.c:1033
+#: utils/adt/int.c:1066 utils/adt/int.c:1149 utils/adt/int8.c:1258
+#: utils/adt/float.c:1100 utils/adt/float.c:1159 utils/adt/float.c:2716
+#: utils/adt/float.c:2732 utils/adt/varbit.c:1392 utils/adt/numeric.c:2035
+#: utils/adt/numeric.c:2044
msgid "integer out of range"
msgstr "integer ist außerhalb des gültigen Bereichs"
@@ -3606,18 +3606,18 @@
msgid "invalid int2vector data"
msgstr "ungültige int2vector-Daten"
-#: utils/adt/int.c:339 utils/adt/int.c:779 utils/adt/int.c:808
-#: utils/adt/int.c:829 utils/adt/int.c:849 utils/adt/int.c:881
-#: utils/adt/int.c:1147 utils/adt/int8.c:1247 utils/adt/float.c:1118
+#: utils/adt/int.c:339 utils/adt/int.c:765 utils/adt/int.c:794
+#: utils/adt/int.c:815 utils/adt/int.c:835 utils/adt/int.c:869
+#: utils/adt/int.c:1164 utils/adt/int8.c:1283 utils/adt/float.c:1118
#: utils/adt/float.c:1176 utils/adt/numeric.c:2136 utils/adt/numeric.c:2147
msgid "smallint out of range"
msgstr "smallint ist außerhalb des gültigen Bereichs"
-#: utils/adt/int.c:720 utils/adt/int.c:865 utils/adt/int.c:964
-#: utils/adt/int.c:1053 utils/adt/int.c:1083 utils/adt/int.c:1107
-#: utils/adt/timestamp.c:2865 utils/adt/geo_ops.c:3967 utils/adt/int8.c:605
-#: utils/adt/int8.c:656 utils/adt/int8.c:839 utils/adt/int8.c:938
-#: utils/adt/int8.c:1027 utils/adt/int8.c:1126 utils/adt/float.c:763
+#: utils/adt/int.c:709 utils/adt/int.c:851 utils/adt/int.c:959
+#: utils/adt/int.c:1048 utils/adt/int.c:1087 utils/adt/int.c:1115
+#: utils/adt/timestamp.c:2865 utils/adt/geo_ops.c:3967 utils/adt/int8.c:606
+#: utils/adt/int8.c:666 utils/adt/int8.c:857 utils/adt/int8.c:965
+#: utils/adt/int8.c:1054 utils/adt/int8.c:1162 utils/adt/float.c:763
#: utils/adt/float.c:827 utils/adt/float.c:2475 utils/adt/float.c:2538
#: utils/adt/cash.c:538 utils/adt/cash.c:589 utils/adt/cash.c:638
#: utils/adt/cash.c:690 utils/adt/cash.c:740 utils/adt/numeric.c:4183
@@ -3625,8 +3625,8 @@
msgid "division by zero"
msgstr "Division durch Null"
-#: utils/adt/int.c:1335 utils/adt/timestamp.c:4701 utils/adt/timestamp.c:4782
-#: utils/adt/int8.c:1384
+#: utils/adt/int.c:1352 utils/adt/timestamp.c:4701 utils/adt/timestamp.c:4782
+#: utils/adt/int8.c:1420
msgid "step size cannot equal zero"
msgstr "Schrittgröße kann nicht gleich null sein"
@@ -3976,18 +3976,18 @@
msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ bigint"
#: utils/adt/int8.c:506 utils/adt/int8.c:535 utils/adt/int8.c:556
-#: utils/adt/int8.c:589 utils/adt/int8.c:621 utils/adt/int8.c:639
-#: utils/adt/int8.c:690 utils/adt/int8.c:707 utils/adt/int8.c:776
-#: utils/adt/int8.c:797 utils/adt/int8.c:824 utils/adt/int8.c:855
-#: utils/adt/int8.c:876 utils/adt/int8.c:897 utils/adt/int8.c:924
-#: utils/adt/int8.c:964 utils/adt/int8.c:985 utils/adt/int8.c:1012
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1064 utils/adt/int8.c:1085
-#: utils/adt/int8.c:1112 utils/adt/int8.c:1285 utils/adt/int8.c:1324
+#: utils/adt/int8.c:590 utils/adt/int8.c:624 utils/adt/int8.c:649
+#: utils/adt/int8.c:708 utils/adt/int8.c:725 utils/adt/int8.c:794
+#: utils/adt/int8.c:815 utils/adt/int8.c:842 utils/adt/int8.c:875
+#: utils/adt/int8.c:903 utils/adt/int8.c:924 utils/adt/int8.c:951
+#: utils/adt/int8.c:991 utils/adt/int8.c:1012 utils/adt/int8.c:1039
+#: utils/adt/int8.c:1072 utils/adt/int8.c:1100 utils/adt/int8.c:1121
+#: utils/adt/int8.c:1148 utils/adt/int8.c:1321 utils/adt/int8.c:1360
#: utils/adt/varbit.c:1476 utils/adt/numeric.c:2088
msgid "bigint out of range"
msgstr "bigint ist außerhalb des gültigen Bereichs"
-#: utils/adt/int8.c:1341
+#: utils/adt/int8.c:1377
msgid "OID out of range"
msgstr "OID ist außerhalb des gültigen Bereichs"
@@ -4363,8 +4363,8 @@
msgstr "Datenbank mit OID %u existiert nicht"
#: utils/adt/dbsize.c:246 utils/adt/acl.c:3695 commands/tablecmds.c:412
-#: commands/tablecmds.c:6540 commands/dbcommands.c:431
-#: commands/dbcommands.c:1043 commands/indexcmds.c:213 commands/comment.c:665
+#: commands/tablecmds.c:6567 commands/dbcommands.c:431
+#: commands/dbcommands.c:1043 commands/indexcmds.c:210 commands/comment.c:665
#: commands/tablespace.c:415 commands/tablespace.c:770
#: commands/tablespace.c:837 commands/tablespace.c:939
#: commands/tablespace.c:1072 executor/execMain.c:2922 catalog/aclchk.c:613
@@ -4403,7 +4403,7 @@
msgstr "Bezeichner muss weniger als %d Zeichen haben."
#. translator: first %s is inet or cidr
-#: utils/adt/network.c:107 utils/adt/datetime.c:3558
+#: utils/adt/network.c:107 utils/adt/datetime.c:3561
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "ungültige Eingabesyntax für Typ %s: »%s«"
@@ -4496,14 +4496,14 @@
msgid "value for domain %s violates check constraint \"%s\""
msgstr "Wert für Domäne %s verletzt Check-Constraint »%s«"
-#: utils/adt/ruleutils.c:1361 utils/adt/acl.c:2303 commands/tablecmds.c:3749
-#: commands/tablecmds.c:3841 commands/tablecmds.c:3888
-#: commands/tablecmds.c:3984 commands/tablecmds.c:4045
-#: commands/tablecmds.c:4109 commands/tablecmds.c:5516
-#: commands/tablecmds.c:5655 commands/analyze.c:271 commands/sequence.c:1349
+#: utils/adt/ruleutils.c:1361 utils/adt/acl.c:2303 commands/tablecmds.c:3752
+#: commands/tablecmds.c:3846 commands/tablecmds.c:3893
+#: commands/tablecmds.c:3989 commands/tablecmds.c:4050
+#: commands/tablecmds.c:4114 commands/tablecmds.c:5538
+#: commands/tablecmds.c:5677 commands/analyze.c:271 commands/sequence.c:1349
#: commands/copy.c:3417 commands/comment.c:579 catalog/aclchk.c:672
-#: parser/analyze.c:1833 parser/parse_target.c:804
-#: parser/parse_relation.c:2061 parser/parse_relation.c:2116
+#: parser/analyze.c:1837 parser/parse_target.c:804
+#: parser/parse_relation.c:2068 parser/parse_relation.c:2123
#: parser/parse_type.c:117
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
@@ -4521,8 +4521,8 @@
msgid "rule \"%s\" has unsupported event type %d"
msgstr "Regel »%s« hat nicht unterstützten Ereignistyp %d"
-#: utils/adt/ruleutils.c:5308 utils/adt/ruleutils.c:5345
-#: utils/adt/ruleutils.c:5379 utils/adt/regproc.c:641 utils/adt/regproc.c:1501
+#: utils/adt/ruleutils.c:5316 utils/adt/ruleutils.c:5353
+#: utils/adt/ruleutils.c:5387 utils/adt/regproc.c:641 utils/adt/regproc.c:1501
msgid "too many arguments"
msgstr "zu viele Argumente"
@@ -4655,7 +4655,7 @@
msgid "wrong element type"
msgstr "falscher Elementtyp"
-#: utils/adt/arrayfuncs.c:1345 utils/adt/rowtypes.c:551 libpq/pqformat.c:611
+#: utils/adt/arrayfuncs.c:1345 utils/adt/rowtypes.c:566 libpq/pqformat.c:611
#: libpq/pqformat.c:629 libpq/pqformat.c:650
msgid "insufficient data left in message"
msgstr "nicht genug Daten in Message übrig"
@@ -4705,12 +4705,12 @@
msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen"
#: utils/adt/arrayfuncs.c:3068 utils/adt/arrayfuncs.c:3469
-#: utils/adt/rowtypes.c:1133 parser/parse_oper.c:259
+#: utils/adt/rowtypes.c:1161 parser/parse_oper.c:259
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "konnte keinen Ist-Gleich-Operator für Typ %s ermitteln"
-#: utils/adt/arrayfuncs.c:3269 utils/adt/rowtypes.c:907
+#: utils/adt/arrayfuncs.c:3269 utils/adt/rowtypes.c:935
#: executor/execQual.c:4879
#, c-format
msgid "could not identify a comparison function for type %s"
@@ -4881,7 +4881,7 @@
msgstr "Textsuchekonfigurationsname »%s« muss Schemaqualifikation haben"
#: utils/adt/tsvector_op.c:1371 commands/tablecmds.c:1838 commands/copy.c:3422
-#: commands/indexcmds.c:863 parser/parse_expr.c:472
+#: commands/indexcmds.c:826 parser/parse_expr.c:472
#, c-format
msgid "column \"%s\" does not exist"
msgstr "Spalte »%s« existiert nicht"
@@ -4891,21 +4891,21 @@
msgid "column \"%s\" is not of a character type"
msgstr "Spalte »%s« hat keinen Zeichentyp"
-#: utils/adt/datetime.c:3531 utils/adt/datetime.c:3538
+#: utils/adt/datetime.c:3534 utils/adt/datetime.c:3541
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "Datum/Zeit-Feldwert ist außerhalb des gültigen Bereichs: »%s«"
-#: utils/adt/datetime.c:3540
+#: utils/adt/datetime.c:3543
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Möglicherweise benötigen Sie eine andere »datestyle«-Einstellung."
-#: utils/adt/datetime.c:3545
+#: utils/adt/datetime.c:3548
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "»interval«-Feldwert ist außerhalb des gültigen Bereichs: »%s«"
-#: utils/adt/datetime.c:3551
+#: utils/adt/datetime.c:3554
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs: »%s«"
@@ -4969,59 +4969,59 @@
msgid "invalid input syntax for uuid: \"%s\""
msgstr "ungültige Eingabesyntax für Typ uuid: »%s«"
-#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:467
+#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:482
msgid "input of anonymous composite types is not implemented"
msgstr "Eingabe anonymer zusammengesetzter Typen ist nicht implementiert"
-#: utils/adt/rowtypes.c:145 utils/adt/rowtypes.c:173 utils/adt/rowtypes.c:196
-#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:256 utils/adt/rowtypes.c:264
+#: utils/adt/rowtypes.c:146 utils/adt/rowtypes.c:174 utils/adt/rowtypes.c:197
+#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:257 utils/adt/rowtypes.c:265
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "fehlerhafte Record-Konstante: »%s«"
-#: utils/adt/rowtypes.c:146
+#: utils/adt/rowtypes.c:147
msgid "Missing left parenthesis."
msgstr "Linke Klammer fehlt."
-#: utils/adt/rowtypes.c:174
+#: utils/adt/rowtypes.c:175
msgid "Too few columns."
msgstr "Zu wenige Spalten."
-#: utils/adt/rowtypes.c:198 utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:199 utils/adt/rowtypes.c:207
msgid "Unexpected end of input."
msgstr "Unerwartetes Ende der Eingabe."
-#: utils/adt/rowtypes.c:257
+#: utils/adt/rowtypes.c:258
msgid "Too many columns."
msgstr "Zu viele Spalten."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:266
msgid "Junk after right parenthesis."
msgstr "Müll nach rechter Klammer."
-#: utils/adt/rowtypes.c:516
+#: utils/adt/rowtypes.c:531
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "falsche Anzahl der Spalten: %d, erwartet wurden %d"
-#: utils/adt/rowtypes.c:543
+#: utils/adt/rowtypes.c:558
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "falscher Datentyp: %u, erwartet wurde %u"
-#: utils/adt/rowtypes.c:604
+#: utils/adt/rowtypes.c:619
#, c-format
msgid "improper binary format in record column %d"
msgstr "falsches Binärformat in Record-Spalte %d"
-#: utils/adt/rowtypes.c:890 utils/adt/rowtypes.c:1116
+#: utils/adt/rowtypes.c:918 utils/adt/rowtypes.c:1144
#, c-format
msgid "cannot compare dissimilar column types %s and %s at record column %d"
msgstr ""
"kann unterschiedliche Spaltentyp %s und %s in Record-Spalte %d nicht "
"vergleichen"
-#: utils/adt/rowtypes.c:968 utils/adt/rowtypes.c:1179
+#: utils/adt/rowtypes.c:996 utils/adt/rowtypes.c:1207
msgid "cannot compare record types with different numbers of columns"
msgstr ""
"kann Record-Typen mit unterschiedlicher Anzahl Spalten nicht vergleichen"
@@ -5443,7 +5443,7 @@
msgstr "Geben Sie zwei Argumente für den Operator an."
#: utils/adt/regproc.c:818 commands/lockcmds.c:118 catalog/namespace.c:275
-#: parser/parse_relation.c:876 parser/parse_relation.c:884
+#: parser/parse_relation.c:883 parser/parse_relation.c:891
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "Relation »%s« existiert nicht"
@@ -5817,7 +5817,7 @@
msgid "cannot insert multiple commands into a prepared statement"
msgstr "kann nicht mehrere Befehle in vorbereitete Anweisung einfügen"
-#: tcop/postgres.c:1247 commands/prepare.c:122 parser/analyze.c:2278
+#: tcop/postgres.c:1247 commands/prepare.c:122 parser/analyze.c:2282
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "konnte Datentyp von Parameter $%d nicht ermitteln"
@@ -6013,8 +6013,8 @@
"Host=%s%s%s"
#: tcop/utility.c:90 commands/tablecmds.c:744 commands/tablecmds.c:1054
-#: commands/tablecmds.c:1785 commands/tablecmds.c:3168
-#: commands/tablecmds.c:3197 commands/tablecmds.c:4538 commands/trigger.c:121
+#: commands/tablecmds.c:1785 commands/tablecmds.c:3171
+#: commands/tablecmds.c:3200 commands/tablecmds.c:4558 commands/trigger.c:121
#: commands/trigger.c:813 rewrite/rewriteDefine.c:259
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
@@ -6127,7 +6127,7 @@
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "Gültige Werte sind zwischen »%f« und »%f«."
-#: access/common/tupdesc.c:547 parser/parse_relation.c:1193
+#: access/common/tupdesc.c:547 parser/parse_relation.c:1200
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "Spalte »%s« kann nicht als SETOF deklariert werden"
@@ -6198,7 +6198,7 @@
#: access/heap/heapam.c:1086 access/heap/heapam.c:1114
#: access/heap/heapam.c:1144 commands/tablecmds.c:1986
-#: commands/tablecmds.c:6208 commands/tablecmds.c:7586 catalog/aclchk.c:923
+#: commands/tablecmds.c:6235 commands/tablecmds.c:7613 catalog/aclchk.c:923
#, c-format
msgid "\"%s\" is a composite type"
msgstr "»%s« ist ein zusammengesetzter Typ"
@@ -7557,7 +7557,7 @@
msgstr "doppelter Schlüsselwert verletzt Unique-Constraint »%s«"
#: access/index/indexam.c:149 commands/tablecmds.c:212
-#: commands/tablecmds.c:2183 commands/indexcmds.c:1352 commands/comment.c:502
+#: commands/tablecmds.c:2183 commands/indexcmds.c:1315 commands/comment.c:502
#, c-format
msgid "\"%s\" is not an index"
msgstr "»%s« ist kein Index"
@@ -7611,14 +7611,14 @@
msgid "could not obtain lock on relation with OID %u"
msgstr "konnte Sperre für Relation mit OID %u nicht setzen"
-#: commands/lockcmds.c:113 catalog/namespace.c:270 parser/parse_relation.c:863
+#: commands/lockcmds.c:113 catalog/namespace.c:270 parser/parse_relation.c:870
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "Relation »%s.%s« existiert nicht"
#: commands/lockcmds.c:140 commands/tablecmds.c:194 commands/tablecmds.c:1041
-#: commands/tablecmds.c:3156 commands/indexcmds.c:175
-#: commands/indexcmds.c:1386 commands/comment.c:516 commands/trigger.c:115
+#: commands/tablecmds.c:3159 commands/indexcmds.c:172
+#: commands/indexcmds.c:1349 commands/comment.c:516 commands/trigger.c:115
#: commands/trigger.c:807 catalog/toasting.c:94
#, c-format
msgid "\"%s\" is not a table"
@@ -7793,7 +7793,7 @@
msgstr "Sequenz »%s« existiert nicht, wird übersprungen"
#: commands/tablecmds.c:200 commands/tablecmds.c:1970
-#: commands/tablecmds.c:2191 commands/tablecmds.c:7545 commands/sequence.c:950
+#: commands/tablecmds.c:2191 commands/tablecmds.c:7572 commands/sequence.c:950
#: commands/comment.c:509 catalog/aclchk.c:931
#, c-format
msgid "\"%s\" is not a sequence"
@@ -7814,7 +7814,7 @@
msgstr "Sicht »%s« existiert nicht, wird übersprungen"
#: commands/tablecmds.c:206 commands/tablecmds.c:1976
-#: commands/tablecmds.c:2199 commands/tablecmds.c:7553 commands/view.c:162
+#: commands/tablecmds.c:2199 commands/tablecmds.c:7580 commands/view.c:162
#: commands/comment.c:523
#, c-format
msgid "\"%s\" is not a view"
@@ -7877,7 +7877,7 @@
msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren"
#: commands/tablecmds.c:1168 commands/tablecmds.c:1501
-#: commands/tablecmds.c:3522 catalog/heap.c:362
+#: commands/tablecmds.c:3525 catalog/heap.c:362
#, c-format
msgid "tables can have at most %d columns"
msgstr "Tabellen können höchstens %d Spalten haben"
@@ -7894,12 +7894,12 @@
msgid "inherited relation \"%s\" is not a table"
msgstr "geerbte Relation »%s« ist keine Tabelle"
-#: commands/tablecmds.c:1221 commands/tablecmds.c:6958
+#: commands/tablecmds.c:1221 commands/tablecmds.c:6985
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "von temporärer Relation »%s« kann nicht geerbt werden"
-#: commands/tablecmds.c:1238 commands/tablecmds.c:6986
+#: commands/tablecmds.c:1238 commands/tablecmds.c:7013
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "von der Relation »%s« würde mehrmals geerbt werden"
@@ -7978,13 +7978,13 @@
msgid "cannot rename inherited column \"%s\""
msgstr "kann vererbte Spalte »%s« nicht umbenennen"
-#: commands/tablecmds.c:1867 commands/tablecmds.c:3510
+#: commands/tablecmds.c:1867 commands/tablecmds.c:3513
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "Spalte »%s« von Relation »%s« existiert bereits"
-#: commands/tablecmds.c:1988 commands/tablecmds.c:6210
-#: commands/tablecmds.c:7588
+#: commands/tablecmds.c:1988 commands/tablecmds.c:6237
+#: commands/tablecmds.c:7615
msgid "Use ALTER TYPE instead."
msgstr "Verwenden Sie stattdessen ALTER TYPE."
@@ -8010,166 +8010,166 @@
"%s mit Relation »%s« nicht möglich, weil es anstehende Trigger-Ereignisse "
"dafür gibt"
-#: commands/tablecmds.c:2717
+#: commands/tablecmds.c:2720
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "Systemrelation »%s« kann nicht neu geschrieben werden"
-#: commands/tablecmds.c:2727
+#: commands/tablecmds.c:2730
msgid "cannot rewrite temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht neu schreiben"
-#: commands/tablecmds.c:3053
+#: commands/tablecmds.c:3056
#, c-format
msgid "column \"%s\" contains null values"
msgstr "Spalte »%s« enthält NULL-Werte"
-#: commands/tablecmds.c:3067
+#: commands/tablecmds.c:3070
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "Check-Constraint »%s« wird von irgendeiner Zeile verletzt"
-#: commands/tablecmds.c:3150 rewrite/rewriteDefine.c:253
+#: commands/tablecmds.c:3153 rewrite/rewriteDefine.c:253
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "»%s« ist keine Tabelle oder Sicht"
-#: commands/tablecmds.c:3186 commands/tablecmds.c:3938
+#: commands/tablecmds.c:3189 commands/tablecmds.c:3943
#, c-format
msgid "\"%s\" is not a table or index"
msgstr "»%s« ist keine Tabelle und kein Index"
-#: commands/tablecmds.c:3341
+#: commands/tablecmds.c:3344
#, c-format
msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
msgstr ""
"kann Tabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp verwendet"
-#: commands/tablecmds.c:3348
+#: commands/tablecmds.c:3351
#, c-format
msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it"
msgstr "kann Typ »%s« nicht ändern, weil Spalte »%s.%s« ihn verwendet"
-#: commands/tablecmds.c:3419
+#: commands/tablecmds.c:3422
msgid "column must be added to child tables too"
msgstr "Spalte muss ebenso in den abgeleiteten Tabellen hinzugefügt werden"
-#: commands/tablecmds.c:3464 commands/tablecmds.c:7142
+#: commands/tablecmds.c:3467 commands/tablecmds.c:7169
#, 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:3471
+#: commands/tablecmds.c:3474
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "abgeleitete Tabelle »%s« hat eine widersprüchliche Spalte »%s«"
-#: commands/tablecmds.c:3483
+#: commands/tablecmds.c:3486
#, c-format
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr ""
"Definition von Spalte »%s« für abgeleitete Tabelle »%s« wird zusammengeführt"
-#: commands/tablecmds.c:3758 commands/tablecmds.c:3850
-#: commands/tablecmds.c:3895 commands/tablecmds.c:3991
-#: commands/tablecmds.c:4052 commands/tablecmds.c:5525
+#: commands/tablecmds.c:3761 commands/tablecmds.c:3855
+#: commands/tablecmds.c:3900 commands/tablecmds.c:3996
+#: commands/tablecmds.c:4057 commands/tablecmds.c:5547
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "Systemspalte »%s« kann nicht geändert werden"
-#: commands/tablecmds.c:3794
+#: commands/tablecmds.c:3799
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "Spalte »%s« ist in einem Primärschlüssel"
-#: commands/tablecmds.c:3965
+#: commands/tablecmds.c:3970
#, c-format
msgid "statistics target %d is too low"
msgstr "Statistikziel %d ist zu niedrig"
-#: commands/tablecmds.c:3973
+#: commands/tablecmds.c:3978
#, c-format
msgid "lowering statistics target to %d"
msgstr "setze Statistikziel auf %d herab"
-#: commands/tablecmds.c:4033
+#: commands/tablecmds.c:4038
#, c-format
msgid "invalid storage type \"%s\""
msgstr "ungültiger Storage-Typ »%s«"
-#: commands/tablecmds.c:4064
+#: commands/tablecmds.c:4069
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN"
-#: commands/tablecmds.c:4119
+#: commands/tablecmds.c:4124
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "Systemspalte »%s« kann nicht gelöscht werden"
-#: commands/tablecmds.c:4126
+#: commands/tablecmds.c:4131
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "geerbte Spalte »%s« kann nicht gelöscht werden"
-#: commands/tablecmds.c:4356 catalog/pg_constraint.c:613 catalog/heap.c:2060
+#: commands/tablecmds.c:4361 catalog/pg_constraint.c:613 catalog/heap.c:2060
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "Constraint »%s« existiert bereits für Relation »%s«"
-#: commands/tablecmds.c:4467
+#: commands/tablecmds.c:4487
msgid "constraint must be added to child tables too"
msgstr "Constraint muss ebenso in den abgeleiteten Tabellen hinzugefügt werden"
-#: commands/tablecmds.c:4532 commands/sequence.c:1331
+#: commands/tablecmds.c:4552 commands/sequence.c:1331
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle"
-#: commands/tablecmds.c:4554
+#: commands/tablecmds.c:4574
msgid "cannot reference temporary table from permanent table constraint"
msgstr ""
"temporäre Tabelle kann nicht in permanentem Tabellen-Constraint benutzt "
"werden"
-#: commands/tablecmds.c:4561
+#: commands/tablecmds.c:4581
msgid "cannot reference permanent table from temporary table constraint"
msgstr ""
"permanente Tabelle kann nicht in temporären Tabellen-Constraint benutzt "
"werden"
-#: commands/tablecmds.c:4621
+#: commands/tablecmds.c:4641
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:4712
+#: commands/tablecmds.c:4732
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "Fremdschlüssel-Constraint »%s« kann nicht implementiert werden"
-#: commands/tablecmds.c:4715
+#: commands/tablecmds.c:4735
#, 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:4808
+#: commands/tablecmds.c:4828
#, 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:4813
+#: commands/tablecmds.c:4833
#, 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:4886
+#: commands/tablecmds.c:4906
#, 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:5020
+#: commands/tablecmds.c:5042
#, c-format
msgid ""
"there is no unique constraint matching given keys for referenced table \"%s\""
@@ -8177,188 +8177,188 @@
"in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Unique Constraint, "
"der auf die angegebenen Schlüssel passt"
-#: commands/tablecmds.c:5354
+#: commands/tablecmds.c:5376
#, 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:5378 commands/tablecmds.c:5481
+#: commands/tablecmds.c:5400 commands/tablecmds.c:5503
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "Constraint »%s« von Relation »%s« existiert nicht"
-#: commands/tablecmds.c:5532
+#: commands/tablecmds.c:5554
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "kann vererbte Spalte »%s« nicht ändern"
-#: commands/tablecmds.c:5568
+#: commands/tablecmds.c:5590
msgid "transform expression must not return a set"
msgstr "Umwandlungsausdruck kann keine Ergebnismenge zurückgeben"
-#: commands/tablecmds.c:5574
+#: commands/tablecmds.c:5596
msgid "cannot use subquery in transform expression"
msgstr "Unteranfragen können in Umwandlungsausdrücken nicht verwendet werden"
-#: commands/tablecmds.c:5578
+#: commands/tablecmds.c:5600
msgid "cannot use aggregate function in transform expression"
msgstr ""
"Aggregatfunktionen können in Umwandlungsausdrücken nicht verwendet werden"
-#: commands/tablecmds.c:5582
+#: commands/tablecmds.c:5604
msgid "cannot use window function in transform expression"
msgstr ""
"Fensterfunktionen können in Umwandlungsausdrücken nicht verwendet werden"
-#: commands/tablecmds.c:5600
+#: commands/tablecmds.c:5622
#, c-format
msgid "column \"%s\" cannot be cast to type %s"
msgstr "Spalte »%s« kann nicht in Typ %s umgewandelt werden"
-#: commands/tablecmds.c:5626
+#: commands/tablecmds.c:5648
#, 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:5665
+#: commands/tablecmds.c:5687
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "Typ der Spalte »%s« kann nicht zweimal geändert werden"
-#: commands/tablecmds.c:5699
+#: commands/tablecmds.c:5721
#, c-format
msgid "default for column \"%s\" cannot be cast to type %s"
msgstr "Vorgabewert der Spalte »%s« kann nicht in Typ %s umgewandelt werden"
-#: commands/tablecmds.c:5825
+#: commands/tablecmds.c:5847
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:5826
+#: commands/tablecmds.c:5848
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s hängt von Spalte »%s« ab"
-#: commands/tablecmds.c:6178
+#: commands/tablecmds.c:6205
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "kann Eigentümer des Index »%s« nicht ändern"
-#: commands/tablecmds.c:6180
+#: commands/tablecmds.c:6207
msgid "Change the ownership of the index's table, instead."
msgstr "Ändern Sie stattdessen den Eigentümer der Tabelle des Index."
-#: commands/tablecmds.c:6196
+#: commands/tablecmds.c:6223
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "kann Eigentümer der Sequenz »%s« nicht ändern"
-#: commands/tablecmds.c:6198 commands/tablecmds.c:7578
+#: commands/tablecmds.c:6225 commands/tablecmds.c:7605
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "Sequenz »%s« ist mit Tabelle »%s« verknüpft."
-#: commands/tablecmds.c:6219 commands/tablecmds.c:7596
+#: commands/tablecmds.c:6246 commands/tablecmds.c:7623
#, c-format
msgid "\"%s\" is not a table, view, or sequence"
msgstr "»%s« ist keine Tabelle, Sicht oder Sequenz"
-#: commands/tablecmds.c:6504 commands/cluster.c:169
+#: commands/tablecmds.c:6531 commands/cluster.c:169
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "Index »%s« für Tabelle »%s« existiert nicht"
-#: commands/tablecmds.c:6551
+#: commands/tablecmds.c:6578
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig"
-#: commands/tablecmds.c:6605
+#: commands/tablecmds.c:6632
#, c-format
msgid "\"%s\" is not a table, index, or TOAST table"
msgstr "»%s« ist weder Tabelle, Index noch TOAST-Tabelle"
-#: commands/tablecmds.c:6717
+#: commands/tablecmds.c:6744
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "Systemrelation »%s« kann nicht verschoben werden"
-#: commands/tablecmds.c:6724 executor/execMain.c:2948 catalog/index.c:589
+#: commands/tablecmds.c:6751 executor/execMain.c:2948 catalog/index.c:589
#: catalog/heap.c:940
msgid "only shared relations can be placed in pg_global tablespace"
msgstr ""
"nur geteilte Relationen können in den Tablespace »pg_global« gelegt werden"
-#: commands/tablecmds.c:6733
+#: commands/tablecmds.c:6760
msgid "cannot move temporary tables of other sessions"
msgstr "temporäre Tabellen anderer Sitzungen können nicht verschoben werden"
-#: commands/tablecmds.c:7013
+#: commands/tablecmds.c:7040
msgid "circular inheritance not allowed"
msgstr "zirkuläre Vererbung ist nicht erlaubt"
-#: commands/tablecmds.c:7014
+#: commands/tablecmds.c:7041
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "»%s« ist schon von »%s« abgeleitet."
-#: commands/tablecmds.c:7022
+#: commands/tablecmds.c:7049
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
msgstr "Tabelle »%s« ohne OIDs kann nicht von Tabelle »%s« mit OIDs erben"
-#: commands/tablecmds.c:7149
+#: commands/tablecmds.c:7176
#, 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:7165
+#: commands/tablecmds.c:7192
#, c-format
msgid "child table is missing column \"%s\""
msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle"
-#: commands/tablecmds.c:7244
+#: commands/tablecmds.c:7271
#, 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:7268
+#: commands/tablecmds.c:7295
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle"
-#: commands/tablecmds.c:7349
+#: commands/tablecmds.c:7376
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«"
-#: commands/tablecmds.c:7577
+#: commands/tablecmds.c:7604
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:7606
+#: commands/tablecmds.c:7633
#, c-format
msgid "relation \"%s\" is already in schema \"%s\""
msgstr "Relation »%s« ist bereits in Schema »%s«"
-#: commands/tablecmds.c:7614 commands/functioncmds.c:1880
+#: commands/tablecmds.c:7641 commands/functioncmds.c:1880
#: commands/typecmds.c:2761
msgid "cannot move objects into or out of temporary schemas"
msgstr "Objekte können nicht in oder aus temporären Schemas verschoben werden"
-#: commands/tablecmds.c:7620 commands/functioncmds.c:1886
+#: commands/tablecmds.c:7647 commands/functioncmds.c:1886
#: commands/typecmds.c:2767
msgid "cannot move objects into or out of TOAST schema"
msgstr "Objekte können nicht in oder aus TOAST-Schemas verschoben werden"
-#: commands/tablecmds.c:7671
+#: commands/tablecmds.c:7698
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "Relation »%s« existiert bereits in Schema »%s«"
@@ -9548,24 +9548,24 @@
msgid "There are %d prepared transaction(s) using the database."
msgstr "%d vorbereitete Transaktion(en) verwenden die Datenbank."
-#: commands/indexcmds.c:150
+#: commands/indexcmds.c:147
msgid "must specify at least one column"
msgstr "mindestens eine Spalte muss angegeben werden"
-#: commands/indexcmds.c:154
+#: commands/indexcmds.c:151
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "Index kann nicht mehr als %d Spalten enthalten"
-#: commands/indexcmds.c:184
+#: commands/indexcmds.c:181
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "kann keine Indexe für temporäre Tabellen anderer Sitzungen erzeugen"
-#: commands/indexcmds.c:277
+#: commands/indexcmds.c:274
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "ersetze Zugriffsmethode »gist« für obsolete Methode »rtree«"
-#: commands/indexcmds.c:287 commands/opclasscmds.c:290
+#: commands/indexcmds.c:284 commands/opclasscmds.c:290
#: commands/opclasscmds.c:682 commands/opclasscmds.c:785
#: commands/opclasscmds.c:1517 commands/opclasscmds.c:1580
#: commands/opclasscmds.c:1748 commands/opclasscmds.c:1848
@@ -9575,77 +9575,77 @@
msgid "access method \"%s\" does not exist"
msgstr "Zugriffsmethode »%s« existiert nicht"
-#: commands/indexcmds.c:296
+#: commands/indexcmds.c:293
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "Zugriffsmethode »%s« unterstützt keine Unique Indexe"
-#: commands/indexcmds.c:301
+#: commands/indexcmds.c:298
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "Zugriffsmethode »%s« unterstützt keine mehrspaltigen Indexe"
-#: commands/indexcmds.c:334 parser/parse_utilcmd.c:1057
+#: commands/indexcmds.c:331 parser/parse_utilcmd.c:1057
#: parser/parse_utilcmd.c:1141
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "mehrere Primärschlüssel für Tabelle »%s« nicht erlaubt"
-#: commands/indexcmds.c:351
+#: commands/indexcmds.c:348
msgid "primary keys cannot be expressions"
msgstr "Primärschlüssel können keine Ausdrücke sein"
-#: commands/indexcmds.c:381 commands/indexcmds.c:858
+#: commands/indexcmds.c:378 commands/indexcmds.c:821
#: parser/parse_utilcmd.c:1256
#, 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:436
+#: commands/indexcmds.c:433
#, c-format
msgid "%s %s will create implicit index \"%s\" for table \"%s\""
msgstr "%s %s erstellt implizit einen Index »%s« für Tabelle »%s«"
-#: commands/indexcmds.c:799
+#: commands/indexcmds.c:762
msgid "cannot use subquery in index predicate"
msgstr "Unteranfragen können nicht im Indexprädikat verwendet werden"
-#: commands/indexcmds.c:803
+#: commands/indexcmds.c:766
msgid "cannot use aggregate in index predicate"
msgstr "Aggregatfunktionen können nicht im Indexprädikat verwendet werden"
-#: commands/indexcmds.c:812
+#: commands/indexcmds.c:775
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "Funktionen im Indexprädikat müssen als IMMUTABLE markiert sein"
-#: commands/indexcmds.c:897
+#: commands/indexcmds.c:860
msgid "cannot use subquery in index expression"
msgstr "Unteranfragen können nicht in Indexausdrücken verwendet werden"
-#: commands/indexcmds.c:901
+#: commands/indexcmds.c:864
msgid "cannot use aggregate function in index expression"
msgstr "Aggregatfunktionen können nicht in Indexausdrücken verwendet werden"
-#: commands/indexcmds.c:911
+#: commands/indexcmds.c:874
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein"
-#: commands/indexcmds.c:948
+#: commands/indexcmds.c:911
#, 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:953
+#: commands/indexcmds.c:916
#, 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:1009
+#: commands/indexcmds.c:972
#, 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:1011
+#: commands/indexcmds.c:974
msgid ""
"You must specify an operator class for the index or define a default "
"operator class for the data type."
@@ -9653,7 +9653,7 @@
"Sie müssen für den Index eine Operatorklasse angeben oder eine "
"Standardoperatorklasse für den Datentyp definieren."
-#: commands/indexcmds.c:1041 commands/indexcmds.c:1051
+#: commands/indexcmds.c:1004 commands/indexcmds.c:1014
#: commands/opclasscmds.c:1529 commands/opclasscmds.c:1533
#: commands/opclasscmds.c:1770 commands/opclasscmds.c:1781
#: commands/opclasscmds.c:1969 commands/opclasscmds.c:1980
@@ -9662,33 +9662,33 @@
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«"
-#: commands/indexcmds.c:1064
+#: commands/indexcmds.c:1027
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht"
-#: commands/indexcmds.c:1154
+#: commands/indexcmds.c:1117
#, 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:1398
+#: commands/indexcmds.c:1361
#, c-format
msgid "shared table \"%s\" can only be reindexed in stand-alone mode"
msgstr ""
"Cluster-globale Tabelle »%s« kann nur im Einzelbenutzermodus reindiziert "
"werden"
-#: commands/indexcmds.c:1405
+#: commands/indexcmds.c:1368
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "Tabelle »%s« hat keine Indexe"
-#: commands/indexcmds.c:1433
+#: commands/indexcmds.c:1396
msgid "can only reindex the currently open database"
msgstr "aktuell geöffnete Datenbank kann nicht reindiziert werden"
-#: commands/indexcmds.c:1524
+#: commands/indexcmds.c:1487
#, c-format
msgid "table \"%s\" was reindexed"
msgstr "Tabelle »%s« wurde neu indiziert"
@@ -10545,17 +10545,17 @@
msgid "could not serialize access due to concurrent update"
msgstr "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung"
-#: commands/trigger.c:3567 catalog/namespace.c:229 catalog/namespace.c:303
+#: commands/trigger.c:3579 catalog/namespace.c:229 catalog/namespace.c:303
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "Verweise auf andere Datenbanken sind nicht implementiert: »%s.%s.%s«"
-#: commands/trigger.c:3661
+#: commands/trigger.c:3673
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "Constraint »%s« ist nicht verschiebbar"
-#: commands/trigger.c:3687
+#: commands/trigger.c:3699
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "Constraint »%s« existiert nicht"
@@ -10986,8 +10986,8 @@
msgid "could not find array type for data type %s"
msgstr "konnte Arraytyp für Datentyp %s nicht finden"
-#: executor/nodeSubplan.c:301 executor/nodeSubplan.c:340
-#: executor/nodeSubplan.c:973
+#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341
+#: executor/nodeSubplan.c:978
msgid "more than one row returned by a subquery used as an expression"
msgstr "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile"
@@ -11203,11 +11203,11 @@
msgid "cannot open %s query as cursor"
msgstr "%s kann nicht als Cursor geöffnet werden"
-#: executor/spi.c:1186 parser/analyze.c:1988
+#: executor/spi.c:1186 parser/analyze.c:1992
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt"
-#: executor/spi.c:1187 parser/analyze.c:1989
+#: executor/spi.c:1187 parser/analyze.c:1993
msgid "Scrollable cursors must be READ ONLY."
msgstr "Scrollbare Cursor müssen READ ONLY sein."
@@ -11399,7 +11399,7 @@
msgid "ROW() column has type %s instead of type %s"
msgstr "ROW()-Spalte hat Typ %s statt Typ %s"
-#: optimizer/plan/initsplan.c:589
+#: optimizer/plan/initsplan.c:592
msgid ""
"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer "
"join"
@@ -11407,8 +11407,8 @@
"SELECT FOR UPDATE/SHARE kann nicht auf die nullbare Seite eines äußeren "
"Verbundes angewendet werden"
-#: optimizer/plan/planner.c:846 parser/analyze.c:1209 parser/analyze.c:1403
-#: parser/analyze.c:2049
+#: optimizer/plan/planner.c:846 parser/analyze.c:1210 parser/analyze.c:1407
+#: parser/analyze.c:2053
msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "SELECT FOR UPDATE/SHARE ist nicht in UNION/INTERSECT/EXCEPT erlaubt"
@@ -11547,44 +11547,49 @@
msgid "could not listen on %s socket: %m"
msgstr "konnte nicht auf %s-Socket hören: %m"
-#: libpq/pqcomm.c:532
+#: libpq/pqcomm.c:482
+#, c-format
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
+msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)"
+
+#: libpq/pqcomm.c:540
#, c-format
msgid "group \"%s\" does not exist"
msgstr "Gruppe »%s« existiert nicht"
-#: libpq/pqcomm.c:542
+#: libpq/pqcomm.c:550
#, c-format
msgid "could not set group of file \"%s\": %m"
msgstr "konnte Gruppe von Datei »%s« nicht setzen: %m"
-#: libpq/pqcomm.c:553
+#: libpq/pqcomm.c:561
#, c-format
msgid "could not set permissions of file \"%s\": %m"
msgstr "konnte Zugriffsrechte von Datei »%s« nicht setzen: %m"
-#: libpq/pqcomm.c:583
+#: libpq/pqcomm.c:591
#, c-format
msgid "could not accept new connection: %m"
msgstr "konnte neue Verbindung nicht akzeptieren: %m"
-#: libpq/pqcomm.c:769
+#: libpq/pqcomm.c:777
#, c-format
msgid "could not receive data from client: %m"
msgstr "konnte Daten vom Client nicht empfangen: %m"
-#: libpq/pqcomm.c:956
+#: libpq/pqcomm.c:964
msgid "unexpected EOF within message length word"
msgstr "unerwartetes EOF im Message-Längenwort"
-#: libpq/pqcomm.c:967
+#: libpq/pqcomm.c:975
msgid "invalid message length"
msgstr "ungültige Message-Länge"
-#: libpq/pqcomm.c:989 libpq/pqcomm.c:999
+#: libpq/pqcomm.c:997 libpq/pqcomm.c:1007
msgid "incomplete message from client"
msgstr "unvollständige Message vom Client"
-#: libpq/pqcomm.c:1108
+#: libpq/pqcomm.c:1116
#, c-format
msgid "could not send data to client: %m"
msgstr "konnte Daten nicht an den Client senden: %m"
@@ -12968,11 +12973,11 @@
msgid "shared indexes cannot be created after initdb"
msgstr "Cluster-globale Indexe können nicht nach initdb erzeugt werden"
-#: catalog/index.c:2305
+#: catalog/index.c:2378
msgid "cannot reindex temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren"
-#: catalog/index.c:2327
+#: catalog/index.c:2400
#, c-format
msgid "shared index \"%s\" can only be reindexed in stand-alone mode"
msgstr ""
@@ -13155,7 +13160,7 @@
"kann Objekte, die %s gehören, nicht löschen, weil sie vom Datenbanksystem "
"benötigt werden"
-#: catalog/pg_shdepend.c:1295
+#: catalog/pg_shdepend.c:1299
#, c-format
msgid ""
"cannot reassign ownership of objects owned by %s because they are required "
@@ -14308,7 +14313,7 @@
msgid "%s: could not determine user name (GetUserName failed)\n"
msgstr "%s: konnte Benutzername nicht ermitteln (GetUserName fehlgeschlagen)\n"
-#: parser/parse_coerce.c:283 parser/analyze.c:2272 parser/parse_expr.c:647
+#: parser/parse_coerce.c:283 parser/analyze.c:2276 parser/parse_expr.c:647
#: parser/parse_expr.c:654
#, c-format
msgid "there is no parameter $%d"
@@ -14734,61 +14739,61 @@
msgstr ""
"Unteranfrage verwendet nicht gruppierte Spalte »%s.%s« aus äußerer Anfrage"
-#: parser/analyze.c:459
+#: parser/analyze.c:460
msgid "INSERT ... SELECT cannot specify INTO"
msgstr "INSERT ... SELECT kann INTO nicht verwenden"
-#: parser/analyze.c:561 parser/analyze.c:984
+#: parser/analyze.c:562 parser/analyze.c:985
msgid "VALUES lists must all be the same length"
msgstr "VALUES-Listen müssen alle die gleiche Länge haben"
-#: parser/analyze.c:582 parser/analyze.c:1090
+#: parser/analyze.c:583 parser/analyze.c:1091
msgid "VALUES must not contain table references"
msgstr "VALUES darf keine Tabellenverweise enthalten"
-#: parser/analyze.c:596 parser/analyze.c:1104
+#: parser/analyze.c:597 parser/analyze.c:1105
msgid "VALUES must not contain OLD or NEW references"
msgstr "VALUES darf keine Verweise auf OLD oder NEW enthalten"
-#: parser/analyze.c:597 parser/analyze.c:1105
+#: parser/analyze.c:598 parser/analyze.c:1106
msgid "Use SELECT ... UNION ALL ... instead."
msgstr "Verwenden Sie stattdessen SELECT ... UNION ALL ... ."
-#: parser/analyze.c:707 parser/analyze.c:1117
+#: parser/analyze.c:708 parser/analyze.c:1118
msgid "cannot use aggregate function in VALUES"
msgstr "Aggregatfunktionen können nicht in VALUES verwendet werden"
-#: parser/analyze.c:713 parser/analyze.c:1123
+#: parser/analyze.c:714 parser/analyze.c:1124
msgid "cannot use window function in VALUES"
msgstr "Fensterfunktionen können nicht in VALUES verwendet werden"
-#: parser/analyze.c:745
+#: parser/analyze.c:746
msgid "INSERT has more expressions than target columns"
msgstr "INSERT hat mehr Ausdrücke als Zielspalten"
-#: parser/analyze.c:753
+#: parser/analyze.c:754
msgid "INSERT has more target columns than expressions"
msgstr "INSERT hat mehr Zielspalten als Ausdrücke"
-#: parser/analyze.c:1000
+#: parser/analyze.c:1001
msgid "DEFAULT can only appear in a VALUES list within INSERT"
msgstr "DEFAULT kann nur in VALUES-Liste innerhalb von INSERT auftreten"
-#: parser/analyze.c:1071 parser/analyze.c:2184
+#: parser/analyze.c:1072 parser/analyze.c:2188
msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
msgstr "SELECT FOR UPDATE/SHARE kann nicht auf VALUES angewendet werden"
-#: parser/analyze.c:1327
+#: parser/analyze.c:1328
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "ungültige ORDER-BY-Klausel mit UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1328
+#: parser/analyze.c:1329
msgid "Only result column names can be used, not expressions or functions."
msgstr ""
"Es können nur Ergebnisspaltennamen verwendet werden, keine Ausdrücke oder "
"Funktionen."
-#: parser/analyze.c:1329
+#: parser/analyze.c:1330
msgid ""
"Add the expression/function to every SELECT, or move the UNION into a FROM "
"clause."
@@ -14796,11 +14801,11 @@
"Fügen Sie den Ausdrück/die Funktion jedem SELECT hinzu oder verlegen Sie die "
"UNION in eine FROM-Klausel."
-#: parser/analyze.c:1395
+#: parser/analyze.c:1399
msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
msgstr "INTO ist nur im ersten SELECT von UNION/INTERSECT/EXCEPT erlaubt"
-#: parser/analyze.c:1455
+#: parser/analyze.c:1459
msgid ""
"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of "
"same query level"
@@ -14808,101 +14813,101 @@
"Teilanweisung von UNION/INTERSECT/EXCEPT kann nicht auf andere Relationen "
"auf der selben Anfrageebene verweisen"
-#: parser/analyze.c:1540
+#: parser/analyze.c:1544
#, c-format
msgid "each %s query must have the same number of columns"
msgstr "jede %s-Anfrage muss die gleiche Anzahl Spalten haben"
-#: parser/analyze.c:1732
+#: parser/analyze.c:1736
msgid "CREATE TABLE AS specifies too many column names"
msgstr "CREATE TABLE AS gibt zu viele Spaltennamen an"
-#: parser/analyze.c:1782
+#: parser/analyze.c:1786
msgid "cannot use aggregate function in UPDATE"
msgstr "Aggregatfunktionen können nicht in UPDATE verwendet werden"
-#: parser/analyze.c:1788
+#: parser/analyze.c:1792
msgid "cannot use window function in UPDATE"
msgstr "Fensterfunktionen können nicht in UPDATE verwendet werden"
-#: parser/analyze.c:1895
+#: parser/analyze.c:1899
msgid "cannot use aggregate function in RETURNING"
msgstr "Aggregatfunktionen können nicht in RETURNING verwendet werden"
-#: parser/analyze.c:1901
+#: parser/analyze.c:1905
msgid "cannot use window function in RETURNING"
msgstr "Fensterfunktionen können nicht in RETURNING verwendet werden"
-#: parser/analyze.c:1920
+#: parser/analyze.c:1924
msgid "RETURNING cannot contain references to other relations"
msgstr "RETURNING kann keine Verweise auf andere Relationen enthalten"
-#: parser/analyze.c:1959
+#: parser/analyze.c:1963
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "SCROLL und NO SCROLL können nicht beide angegeben werden"
-#: parser/analyze.c:1973
+#: parser/analyze.c:1977
msgid "DECLARE CURSOR cannot specify INTO"
msgstr "DECLARE CURSOR kann nicht INTO verwenden"
-#: parser/analyze.c:1981
+#: parser/analyze.c:1985
msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE wird nicht unterstützt"
-#: parser/analyze.c:1982
+#: parser/analyze.c:1986
msgid "Holdable cursors must be READ ONLY."
msgstr "Haltbare Cursor müssen READ ONLY sein."
-#: parser/analyze.c:1995
+#: parser/analyze.c:1999
msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt"
-#: parser/analyze.c:1996
+#: parser/analyze.c:2000
msgid "Insensitive cursors must be READ ONLY."
msgstr "Insensitive Cursor müssen READ ONLY sein."
-#: parser/analyze.c:2053
+#: parser/analyze.c:2057
msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause"
msgstr "SELECT FOR UPDATE/SHARE ist nicht mit DISTINCT-Klausel erlaubt"
-#: parser/analyze.c:2057
+#: parser/analyze.c:2061
msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause"
msgstr "SELECT FOR UPDATE/SHARE ist nicht mit GROUP-BY-Klausel erlaubt"
-#: parser/analyze.c:2061
+#: parser/analyze.c:2065
msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause"
msgstr "SELECT FOR UPDATE/SHARE ist nicht mit HAVING-Klausel erlaubt"
-#: parser/analyze.c:2065
+#: parser/analyze.c:2069
msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions"
msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Aggregatfunktionen erlaubt"
-#: parser/analyze.c:2069
+#: parser/analyze.c:2073
msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions"
msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Fensterfunktionen erlaubt"
-#: parser/analyze.c:2137
+#: parser/analyze.c:2141
msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names"
msgstr "SELECT FOR UPDATE/SHARE muss unqualifizierte Relationsnamen angeben"
-#: parser/analyze.c:2166
+#: parser/analyze.c:2170
msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join"
msgstr "SELECT FOR UPDATE/SHARE kann nicht auf einen Verbund angewendet werden"
-#: parser/analyze.c:2172
+#: parser/analyze.c:2176
msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD"
msgstr "SELECT FOR UPDATE/SHARE kann nicht auf NEW oder OLD angewendet werden"
-#: parser/analyze.c:2178
+#: parser/analyze.c:2182
msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function"
msgstr "SELECT FOR UPDATE/SHARE kann nicht auf eine Funktion angewendet werden"
-#: parser/analyze.c:2190
+#: parser/analyze.c:2194
msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query"
msgstr ""
"SELECT FOR UPDATE/SHARE kann nicht auf eine WITH-Anfrage angewendet werden"
-#: parser/analyze.c:2204
+#: parser/analyze.c:2208
#, c-format
msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause"
msgstr "Relation »%s« in FOR UPDATE/SHARE nicht in der FROM-Klausel gefunden"
@@ -15240,23 +15245,23 @@
msgid "table name \"%s\" specified more than once"
msgstr "Tabellenname »%s« mehrmals angegeben"
-#: parser/parse_relation.c:472 parser/parse_relation.c:546
+#: parser/parse_relation.c:472 parser/parse_relation.c:553
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "Spaltenverweis »%s« ist nicht eindeutig"
-#: parser/parse_relation.c:782 parser/parse_relation.c:1071
-#: parser/parse_relation.c:1431
+#: parser/parse_relation.c:789 parser/parse_relation.c:1078
+#: parser/parse_relation.c:1438
#, c-format
msgid "table \"%s\" has %d columns available but %d columns specified"
msgstr "Tabelle »%s« hat %d Spalten, aber %d Spalten wurden angegeben"
-#: parser/parse_relation.c:812
+#: parser/parse_relation.c:819
#, c-format
msgid "too many column aliases specified for function %s"
msgstr "zu viele Spaltenaliasnamen für Funktion %s angegeben"
-#: parser/parse_relation.c:878
+#: parser/parse_relation.c:885
#, c-format
msgid ""
"There is a WITH item named \"%s\", but it cannot be referenced from this "
@@ -15265,59 +15270,59 @@
"Es gibt ein WITH-Element namens »%s«, aber darauf kann aus diesem Teil der "
"Anfrage kein Bezug genommen werden."
-#: parser/parse_relation.c:880
+#: parser/parse_relation.c:887
msgid ""
"Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
msgstr ""
"Verwenden Sie WITH RECURSIVE oder sortieren Sie die WITH-Ausdrücke um, um "
"Vorwärtsreferenzen zu entfernen."
-#: parser/parse_relation.c:1150
+#: parser/parse_relation.c:1157
msgid ""
"a column definition list is only allowed for functions returning \"record\""
msgstr ""
"eine Spaltendefinitionsliste ist nur erlaubt bei Funktionen, die »record« "
"zurückgeben"
-#: parser/parse_relation.c:1158
+#: parser/parse_relation.c:1165
msgid "a column definition list is required for functions returning \"record\""
msgstr ""
"eine Spaltendefinitionsliste ist erforderlich bei Funktionen, die »record« "
"zurückgeben"
-#: parser/parse_relation.c:1205
+#: parser/parse_relation.c:1212
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
msgstr "Funktion »%s« in FROM hat nicht unterstützten Rückgabetyp %s"
-#: parser/parse_relation.c:1277
+#: parser/parse_relation.c:1284
#, c-format
msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
msgstr ""
"VALUES-Liste »%s« hat %d Spalten verfügbar, aber %d Spalten wurden angegeben"
-#: parser/parse_relation.c:1333
+#: parser/parse_relation.c:1340
#, c-format
msgid "joins can have at most %d columns"
msgstr "Verbunde können höchstens %d Spalten haben"
-#: parser/parse_relation.c:2103
+#: parser/parse_relation.c:2110
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "Spalte %d von Relation »%s« existiert nicht"
-#: parser/parse_relation.c:2465
+#: parser/parse_relation.c:2472
#, c-format
msgid "invalid reference to FROM-clause entry for table \"%s\""
msgstr "ungültiger Verweis auf FROM-Klausel-Eintrag für Tabelle »%s«"
-#: parser/parse_relation.c:2468 parser/parse_relation.c:2488
+#: parser/parse_relation.c:2475 parser/parse_relation.c:2495
#, c-format
msgid "Perhaps you meant to reference the table alias \"%s\"."
msgstr ""
"Vielleicht wurde beabsichtigt, auf den Tabellenalias »%s« zu verweisen."
-#: parser/parse_relation.c:2470 parser/parse_relation.c:2491
+#: parser/parse_relation.c:2477 parser/parse_relation.c:2498
#, c-format
msgid ""
"There is an entry for table \"%s\", but it cannot be referenced from this "
@@ -15326,12 +15331,12 @@
"Es gibt einen Eintrag für Tabelle »%s«, aber auf ihn kann aus diesem Teil "
"der Anfrage kein Bezug genommen werden."
-#: parser/parse_relation.c:2476
+#: parser/parse_relation.c:2483
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s«"
-#: parser/parse_relation.c:2485
+#: parser/parse_relation.c:2492
#, c-format
msgid "adding missing FROM-clause entry for table \"%s\""
msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s« wird hinzugefügt"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/po/fr.po
^
|
@@ -8,8 +8,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-09-02 23:31+0000\n"
-"PO-Revision-Date: 2012-09-03 22:51+0100\n"
+"POT-Creation-Date: 2012-12-02 13:41+0000\n"
+"PO-Revision-Date: 2012-12-02 15:37+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: French <guillaume@lelarge.info>\n"
"Language: fr\n"
@@ -646,7 +646,7 @@
#: postmaster/postmaster.c:4438
#: utils/hash/dynahash.c:363
#: utils/hash/dynahash.c:435
-#: utils/hash/dynahash.c:929
+#: utils/hash/dynahash.c:950
#: utils/misc/guc.c:2757
#: utils/misc/guc.c:2770
#: utils/misc/guc.c:2783
@@ -942,16 +942,16 @@
msgid "cached plan must not change result type"
msgstr "le plan en cache ne doit pas modifier le type en résultat"
-#: utils/cache/relcache.c:3859
+#: utils/cache/relcache.c:3876
#, c-format
msgid "could not create relation-cache initialization file \"%s\": %m"
msgstr "n'a pas pu créer le fichier d'initialisation relation-cache « %s » : %m"
-#: utils/cache/relcache.c:3861
+#: utils/cache/relcache.c:3878
msgid "Continuing anyway, but there's something wrong."
msgstr "Continue malgré tout, mais quelque chose s'est mal passé."
-#: utils/cache/relcache.c:4063
+#: utils/cache/relcache.c:4080
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "n'a pas pu supprimer le fichier cache « %s » : %m"
@@ -1013,7 +1013,7 @@
msgid "record type has not been registered"
msgstr "le type d'enregistrement n'a pas été enregistré"
-#: utils/hash/dynahash.c:925
+#: utils/hash/dynahash.c:946
#: storage/ipc/shmem.c:190
#: storage/ipc/shmem.c:359
#: storage/lmgr/proc.c:186
@@ -3647,20 +3647,18 @@
#: utils/adt/int.c:613
#: utils/adt/int.c:642
#: utils/adt/int.c:663
-#: utils/adt/int.c:683
-#: utils/adt/int.c:705
-#: utils/adt/int.c:734
-#: utils/adt/int.c:748
-#: utils/adt/int.c:763
-#: utils/adt/int.c:902
-#: utils/adt/int.c:923
-#: utils/adt/int.c:950
-#: utils/adt/int.c:990
-#: utils/adt/int.c:1011
-#: utils/adt/int.c:1038
-#: utils/adt/int.c:1069
-#: utils/adt/int.c:1132
-#: utils/adt/int8.c:1222
+#: utils/adt/int.c:694
+#: utils/adt/int.c:727
+#: utils/adt/int.c:749
+#: utils/adt/int.c:897
+#: utils/adt/int.c:918
+#: utils/adt/int.c:945
+#: utils/adt/int.c:985
+#: utils/adt/int.c:1006
+#: utils/adt/int.c:1033
+#: utils/adt/int.c:1066
+#: utils/adt/int.c:1149
+#: utils/adt/int8.c:1258
#: utils/adt/float.c:1100
#: utils/adt/float.c:1159
#: utils/adt/float.c:2716
@@ -3744,13 +3742,13 @@
msgstr "données int2vector invalide"
#: utils/adt/int.c:339
-#: utils/adt/int.c:779
-#: utils/adt/int.c:808
-#: utils/adt/int.c:829
-#: utils/adt/int.c:849
-#: utils/adt/int.c:881
-#: utils/adt/int.c:1147
-#: utils/adt/int8.c:1247
+#: utils/adt/int.c:765
+#: utils/adt/int.c:794
+#: utils/adt/int.c:815
+#: utils/adt/int.c:835
+#: utils/adt/int.c:869
+#: utils/adt/int.c:1164
+#: utils/adt/int8.c:1283
#: utils/adt/float.c:1118
#: utils/adt/float.c:1176
#: utils/adt/numeric.c:2136
@@ -3758,20 +3756,20 @@
msgid "smallint out of range"
msgstr "smallint en dehors des limites"
-#: utils/adt/int.c:720
-#: utils/adt/int.c:865
-#: utils/adt/int.c:964
-#: utils/adt/int.c:1053
-#: utils/adt/int.c:1083
-#: utils/adt/int.c:1107
+#: utils/adt/int.c:709
+#: utils/adt/int.c:851
+#: utils/adt/int.c:959
+#: utils/adt/int.c:1048
+#: utils/adt/int.c:1087
+#: utils/adt/int.c:1115
#: utils/adt/timestamp.c:2865
#: utils/adt/geo_ops.c:3967
-#: utils/adt/int8.c:605
-#: utils/adt/int8.c:656
-#: utils/adt/int8.c:839
-#: utils/adt/int8.c:938
-#: utils/adt/int8.c:1027
-#: utils/adt/int8.c:1126
+#: utils/adt/int8.c:606
+#: utils/adt/int8.c:666
+#: utils/adt/int8.c:857
+#: utils/adt/int8.c:965
+#: utils/adt/int8.c:1054
+#: utils/adt/int8.c:1162
#: utils/adt/float.c:763
#: utils/adt/float.c:827
#: utils/adt/float.c:2475
@@ -3786,10 +3784,10 @@
msgid "division by zero"
msgstr "division par zéro"
-#: utils/adt/int.c:1335
+#: utils/adt/int.c:1352
#: utils/adt/timestamp.c:4701
#: utils/adt/timestamp.c:4782
-#: utils/adt/int8.c:1384
+#: utils/adt/int8.c:1420
msgid "step size cannot equal zero"
msgstr "la taille du pas ne peut pas valoir zéro"
@@ -4190,33 +4188,33 @@
#: utils/adt/int8.c:506
#: utils/adt/int8.c:535
#: utils/adt/int8.c:556
-#: utils/adt/int8.c:589
-#: utils/adt/int8.c:621
-#: utils/adt/int8.c:639
-#: utils/adt/int8.c:690
-#: utils/adt/int8.c:707
-#: utils/adt/int8.c:776
-#: utils/adt/int8.c:797
-#: utils/adt/int8.c:824
-#: utils/adt/int8.c:855
-#: utils/adt/int8.c:876
-#: utils/adt/int8.c:897
+#: utils/adt/int8.c:590
+#: utils/adt/int8.c:624
+#: utils/adt/int8.c:649
+#: utils/adt/int8.c:708
+#: utils/adt/int8.c:725
+#: utils/adt/int8.c:794
+#: utils/adt/int8.c:815
+#: utils/adt/int8.c:842
+#: utils/adt/int8.c:875
+#: utils/adt/int8.c:903
#: utils/adt/int8.c:924
-#: utils/adt/int8.c:964
-#: utils/adt/int8.c:985
+#: utils/adt/int8.c:951
+#: utils/adt/int8.c:991
#: utils/adt/int8.c:1012
-#: utils/adt/int8.c:1043
-#: utils/adt/int8.c:1064
-#: utils/adt/int8.c:1085
-#: utils/adt/int8.c:1112
-#: utils/adt/int8.c:1285
-#: utils/adt/int8.c:1324
+#: utils/adt/int8.c:1039
+#: utils/adt/int8.c:1072
+#: utils/adt/int8.c:1100
+#: utils/adt/int8.c:1121
+#: utils/adt/int8.c:1148
+#: utils/adt/int8.c:1321
+#: utils/adt/int8.c:1360
#: utils/adt/varbit.c:1476
#: utils/adt/numeric.c:2088
msgid "bigint out of range"
msgstr "bigint en dehors des limites"
-#: utils/adt/int8.c:1341
+#: utils/adt/int8.c:1377
msgid "OID out of range"
msgstr "OID en dehors des limites"
@@ -4632,10 +4630,10 @@
#: utils/adt/dbsize.c:246
#: utils/adt/acl.c:3695
#: commands/tablecmds.c:412
-#: commands/tablecmds.c:6540
+#: commands/tablecmds.c:6567
#: commands/dbcommands.c:431
#: commands/dbcommands.c:1043
-#: commands/indexcmds.c:213
+#: commands/indexcmds.c:210
#: commands/comment.c:665
#: commands/tablespace.c:415
#: commands/tablespace.c:770
@@ -4683,7 +4681,7 @@
#. translator: first %s is inet or cidr
#: utils/adt/network.c:107
-#: utils/adt/datetime.c:3558
+#: utils/adt/datetime.c:3561
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "syntaxe en entrée invalide pour le type %s : « %s »"
@@ -4789,23 +4787,23 @@
#: utils/adt/ruleutils.c:1361
#: utils/adt/acl.c:2303
-#: commands/tablecmds.c:3749
-#: commands/tablecmds.c:3841
-#: commands/tablecmds.c:3888
-#: commands/tablecmds.c:3984
-#: commands/tablecmds.c:4045
-#: commands/tablecmds.c:4109
-#: commands/tablecmds.c:5516
-#: commands/tablecmds.c:5655
+#: commands/tablecmds.c:3752
+#: commands/tablecmds.c:3846
+#: commands/tablecmds.c:3893
+#: commands/tablecmds.c:3989
+#: commands/tablecmds.c:4050
+#: commands/tablecmds.c:4114
+#: commands/tablecmds.c:5538
+#: commands/tablecmds.c:5677
#: commands/analyze.c:271
#: commands/sequence.c:1349
#: commands/copy.c:3417
#: commands/comment.c:579
#: catalog/aclchk.c:672
-#: parser/analyze.c:1833
+#: parser/analyze.c:1837
#: parser/parse_target.c:804
-#: parser/parse_relation.c:2061
-#: parser/parse_relation.c:2116
+#: parser/parse_relation.c:2068
+#: parser/parse_relation.c:2123
#: parser/parse_type.c:117
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
@@ -4825,9 +4823,9 @@
msgid "rule \"%s\" has unsupported event type %d"
msgstr "la règle « %s » a un type d'événement %d non supporté"
-#: utils/adt/ruleutils.c:5308
-#: utils/adt/ruleutils.c:5345
-#: utils/adt/ruleutils.c:5379
+#: utils/adt/ruleutils.c:5316
+#: utils/adt/ruleutils.c:5353
+#: utils/adt/ruleutils.c:5387
#: utils/adt/regproc.c:641
#: utils/adt/regproc.c:1501
msgid "too many arguments"
@@ -4978,7 +4976,7 @@
msgstr "mauvais type d'élément"
#: utils/adt/arrayfuncs.c:1345
-#: utils/adt/rowtypes.c:551
+#: utils/adt/rowtypes.c:566
#: libpq/pqformat.c:611
#: libpq/pqformat.c:629
#: libpq/pqformat.c:650
@@ -5037,14 +5035,14 @@
#: utils/adt/arrayfuncs.c:3068
#: utils/adt/arrayfuncs.c:3469
-#: utils/adt/rowtypes.c:1133
+#: utils/adt/rowtypes.c:1161
#: parser/parse_oper.c:259
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "n'a pas pu identifier un opérateur d'égalité pour le type %s"
#: utils/adt/arrayfuncs.c:3269
-#: utils/adt/rowtypes.c:907
+#: utils/adt/rowtypes.c:935
#: executor/execQual.c:4879
#, c-format
msgid "could not identify a comparison function for type %s"
@@ -5229,7 +5227,7 @@
#: utils/adt/tsvector_op.c:1371
#: commands/tablecmds.c:1838
#: commands/copy.c:3422
-#: commands/indexcmds.c:863
+#: commands/indexcmds.c:826
#: parser/parse_expr.c:472
#, c-format
msgid "column \"%s\" does not exist"
@@ -5240,22 +5238,22 @@
msgid "column \"%s\" is not of a character type"
msgstr "la colonne « %s » n'est pas de type caractère"
-#: utils/adt/datetime.c:3531
-#: utils/adt/datetime.c:3538
+#: utils/adt/datetime.c:3534
+#: utils/adt/datetime.c:3541
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "valeur du champ date/time en dehors des limites : « %s »"
-#: utils/adt/datetime.c:3540
+#: utils/adt/datetime.c:3543
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Peut-être avez-vous besoin d'un paramètrage « datestyle » différent."
-#: utils/adt/datetime.c:3545
+#: utils/adt/datetime.c:3548
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "valeur du champ interval en dehors des limites : « %s »"
-#: utils/adt/datetime.c:3551
+#: utils/adt/datetime.c:3554
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "déplacement du fuseau horaire en dehors des limites : « %s »"
@@ -5323,67 +5321,67 @@
msgid "invalid input syntax for uuid: \"%s\""
msgstr "syntaxe invalide en entrée pour l'uuid : « %s »"
-#: utils/adt/rowtypes.c:98
-#: utils/adt/rowtypes.c:467
+#: utils/adt/rowtypes.c:99
+#: utils/adt/rowtypes.c:482
msgid "input of anonymous composite types is not implemented"
msgstr "l'ajout de colonnes ayant un type composé n'est pas implémenté"
-#: utils/adt/rowtypes.c:145
-#: utils/adt/rowtypes.c:173
-#: utils/adt/rowtypes.c:196
-#: utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:256
-#: utils/adt/rowtypes.c:264
+#: utils/adt/rowtypes.c:146
+#: utils/adt/rowtypes.c:174
+#: utils/adt/rowtypes.c:197
+#: utils/adt/rowtypes.c:205
+#: utils/adt/rowtypes.c:257
+#: utils/adt/rowtypes.c:265
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "enregistrement litéral invalide : « %s »"
-#: utils/adt/rowtypes.c:146
+#: utils/adt/rowtypes.c:147
msgid "Missing left parenthesis."
msgstr "Parenthèse gauche manquante"
-#: utils/adt/rowtypes.c:174
+#: utils/adt/rowtypes.c:175
msgid "Too few columns."
msgstr "Pas assez de colonnes."
-#: utils/adt/rowtypes.c:198
-#: utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:199
+#: utils/adt/rowtypes.c:207
msgid "Unexpected end of input."
msgstr "Fin de l'entrée inattendue."
-#: utils/adt/rowtypes.c:257
+#: utils/adt/rowtypes.c:258
msgid "Too many columns."
msgstr "Trop de colonnes."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:266
msgid "Junk after right parenthesis."
msgstr "Problème après la parenthèse droite."
-#: utils/adt/rowtypes.c:516
+#: utils/adt/rowtypes.c:531
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "mauvais nombre de colonnes : %d, alors que %d attendu"
-#: utils/adt/rowtypes.c:543
+#: utils/adt/rowtypes.c:558
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "mauvais type de données : %u, alors que %u attendu"
-#: utils/adt/rowtypes.c:604
+#: utils/adt/rowtypes.c:619
#, c-format
msgid "improper binary format in record column %d"
msgstr "format binaire invalide dans l'enregistrement de la colonne %d"
-#: utils/adt/rowtypes.c:890
-#: utils/adt/rowtypes.c:1116
+#: utils/adt/rowtypes.c:918
+#: utils/adt/rowtypes.c:1144
#, c-format
msgid "cannot compare dissimilar column types %s and %s at record column %d"
msgstr ""
"ne peut pas comparer les types de colonnes non similaires %s et %s pour la\n"
"colonne %d de l'enregistrement"
-#: utils/adt/rowtypes.c:968
-#: utils/adt/rowtypes.c:1179
+#: utils/adt/rowtypes.c:996
+#: utils/adt/rowtypes.c:1207
msgid "cannot compare record types with different numbers of columns"
msgstr ""
"ne peut pas comparer les types d'enregistrement avec des numéros différents\n"
@@ -5844,8 +5842,8 @@
#: utils/adt/regproc.c:818
#: commands/lockcmds.c:118
#: catalog/namespace.c:275
-#: parser/parse_relation.c:876
-#: parser/parse_relation.c:884
+#: parser/parse_relation.c:883
+#: parser/parse_relation.c:891
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "la relation « %s » n'existe pas"
@@ -6284,7 +6282,7 @@
#: tcop/postgres.c:1247
#: commands/prepare.c:122
-#: parser/analyze.c:2278
+#: parser/analyze.c:2282
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "n'a pas pu déterminer le type de données du paramètre $%d"
@@ -6474,9 +6472,9 @@
#: commands/tablecmds.c:744
#: commands/tablecmds.c:1054
#: commands/tablecmds.c:1785
-#: commands/tablecmds.c:3168
-#: commands/tablecmds.c:3197
-#: commands/tablecmds.c:4538
+#: commands/tablecmds.c:3171
+#: commands/tablecmds.c:3200
+#: commands/tablecmds.c:4558
#: commands/trigger.c:121
#: commands/trigger.c:813
#: rewrite/rewriteDefine.c:259
@@ -6587,7 +6585,7 @@
msgstr "Les valeurs valides sont entre « %f » et « %f »."
#: access/common/tupdesc.c:547
-#: parser/parse_relation.c:1193
+#: parser/parse_relation.c:1200
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "la colonne « %s » ne peut pas être déclarée SETOF"
@@ -6670,8 +6668,8 @@
#: access/heap/heapam.c:1114
#: access/heap/heapam.c:1144
#: commands/tablecmds.c:1986
-#: commands/tablecmds.c:6208
-#: commands/tablecmds.c:7586
+#: commands/tablecmds.c:6235
+#: commands/tablecmds.c:7613
#: catalog/aclchk.c:923
#, c-format
msgid "\"%s\" is a composite type"
@@ -8084,7 +8082,7 @@
#: access/index/indexam.c:149
#: commands/tablecmds.c:212
#: commands/tablecmds.c:2183
-#: commands/indexcmds.c:1352
+#: commands/indexcmds.c:1315
#: commands/comment.c:502
#, c-format
msgid "\"%s\" is not an index"
@@ -8141,7 +8139,7 @@
#: commands/lockcmds.c:113
#: catalog/namespace.c:270
-#: parser/parse_relation.c:863
+#: parser/parse_relation.c:870
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "la relation « %s.%s » n'existe pas"
@@ -8149,9 +8147,9 @@
#: commands/lockcmds.c:140
#: commands/tablecmds.c:194
#: commands/tablecmds.c:1041
-#: commands/tablecmds.c:3156
-#: commands/indexcmds.c:175
-#: commands/indexcmds.c:1386
+#: commands/tablecmds.c:3159
+#: commands/indexcmds.c:172
+#: commands/indexcmds.c:1349
#: commands/comment.c:516
#: commands/trigger.c:115
#: commands/trigger.c:807
@@ -8344,7 +8342,7 @@
#: commands/tablecmds.c:200
#: commands/tablecmds.c:1970
#: commands/tablecmds.c:2191
-#: commands/tablecmds.c:7545
+#: commands/tablecmds.c:7572
#: commands/sequence.c:950
#: commands/comment.c:509
#: catalog/aclchk.c:931
@@ -8369,7 +8367,7 @@
#: commands/tablecmds.c:206
#: commands/tablecmds.c:1976
#: commands/tablecmds.c:2199
-#: commands/tablecmds.c:7553
+#: commands/tablecmds.c:7580
#: commands/view.c:162
#: commands/comment.c:523
#, c-format
@@ -8435,7 +8433,7 @@
#: commands/tablecmds.c:1168
#: commands/tablecmds.c:1501
-#: commands/tablecmds.c:3522
+#: commands/tablecmds.c:3525
#: catalog/heap.c:362
#, c-format
msgid "tables can have at most %d columns"
@@ -8457,13 +8455,13 @@
msgstr "la relation héritée « %s » n'est pas une table"
#: commands/tablecmds.c:1221
-#: commands/tablecmds.c:6958
+#: commands/tablecmds.c:6985
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "ine peut pas hériter à partir d'une relation temporaire « %s »"
#: commands/tablecmds.c:1238
-#: commands/tablecmds.c:6986
+#: commands/tablecmds.c:7013
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "la relation « %s » serait héritée plus d'une fois"
@@ -8544,14 +8542,14 @@
msgstr "ne peut pas renommer la colonne héritée « %s »"
#: commands/tablecmds.c:1867
-#: commands/tablecmds.c:3510
+#: commands/tablecmds.c:3513
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "la colonne « %s » de la relation « %s » existe déjà"
#: commands/tablecmds.c:1988
-#: commands/tablecmds.c:6210
-#: commands/tablecmds.c:7588
+#: commands/tablecmds.c:6237
+#: commands/tablecmds.c:7615
msgid "Use ALTER TYPE instead."
msgstr "Utilisez ALTER TYPE à la place."
@@ -8576,362 +8574,362 @@
msgid "cannot %s \"%s\" because it has pending trigger events"
msgstr "ne peut pas exécuter %s « %s » car il reste des événements sur les triggers"
-#: commands/tablecmds.c:2717
+#: commands/tablecmds.c:2720
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "ne peut pas ré-écrire la relation système « %s »"
-#: commands/tablecmds.c:2727
+#: commands/tablecmds.c:2730
msgid "cannot rewrite temporary tables of other sessions"
msgstr "ne peut pas ré-écrire les tables temporaires des autres sessions"
-#: commands/tablecmds.c:3053
+#: commands/tablecmds.c:3056
#, c-format
msgid "column \"%s\" contains null values"
msgstr "la colonne « %s » contient des valeurs NULL"
-#: commands/tablecmds.c:3067
+#: commands/tablecmds.c:3070
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "la contrainte de vérification « %s » est rompue par une ligne"
-#: commands/tablecmds.c:3150
+#: commands/tablecmds.c:3153
#: rewrite/rewriteDefine.c:253
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "« %s » n'est pas une table ou une vue"
-#: commands/tablecmds.c:3186
-#: commands/tablecmds.c:3938
+#: commands/tablecmds.c:3189
+#: commands/tablecmds.c:3943
#, c-format
msgid "\"%s\" is not a table or index"
msgstr "« %s » n'est pas une table ou un index"
-#: commands/tablecmds.c:3341
+#: commands/tablecmds.c:3344
#, c-format
msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
msgstr ""
"ne peut pas modifier la table « %s » car la colonne « %s ».« %s » utilise\n"
"son type de ligne"
-#: commands/tablecmds.c:3348
+#: commands/tablecmds.c:3351
#, c-format
msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it"
msgstr "ne peux pas modifier le type « %s » car la colonne « %s ».« %s » l'utilise"
-#: commands/tablecmds.c:3419
+#: commands/tablecmds.c:3422
msgid "column must be added to child tables too"
msgstr "la colonne doit aussi être ajoutée aux tables filles"
-#: commands/tablecmds.c:3464
-#: commands/tablecmds.c:7142
+#: commands/tablecmds.c:3467
+#: commands/tablecmds.c:7169
#, c-format
msgid "child table \"%s\" has different type for column \"%s\""
msgstr "la table fille « %s » a un type différent pour la colonne « %s »"
-#: commands/tablecmds.c:3471
+#: commands/tablecmds.c:3474
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "la table fille « %s » a une colonne conflictuelle, « %s »"
-#: commands/tablecmds.c:3483
+#: commands/tablecmds.c:3486
#, c-format
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr "assemblage de la définition de la colonne « %s » pour le fils « %s »"
-#: commands/tablecmds.c:3758
-#: commands/tablecmds.c:3850
-#: commands/tablecmds.c:3895
-#: commands/tablecmds.c:3991
-#: commands/tablecmds.c:4052
-#: commands/tablecmds.c:5525
+#: commands/tablecmds.c:3761
+#: commands/tablecmds.c:3855
+#: commands/tablecmds.c:3900
+#: commands/tablecmds.c:3996
+#: commands/tablecmds.c:4057
+#: commands/tablecmds.c:5547
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "n'a pas pu modifier la colonne système « %s »"
-#: commands/tablecmds.c:3794
+#: commands/tablecmds.c:3799
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "la colonne « %s » est dans une clé primaire"
-#: commands/tablecmds.c:3965
+#: commands/tablecmds.c:3970
#, c-format
msgid "statistics target %d is too low"
msgstr "la cible statistique %d est trop basse"
-#: commands/tablecmds.c:3973
+#: commands/tablecmds.c:3978
#, c-format
msgid "lowering statistics target to %d"
msgstr "abaissement de la cible statistique à %d"
-#: commands/tablecmds.c:4033
+#: commands/tablecmds.c:4038
#, c-format
msgid "invalid storage type \"%s\""
msgstr "type « %s » de stockage invalide"
-#: commands/tablecmds.c:4064
+#: commands/tablecmds.c:4069
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr ""
"le type de données %s de la colonne peut seulement avoir un stockage texte\n"
"(PLAIN)"
-#: commands/tablecmds.c:4119
+#: commands/tablecmds.c:4124
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "ne peut pas supprimer la colonne système « %s »"
-#: commands/tablecmds.c:4126
+#: commands/tablecmds.c:4131
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "ne peut pas supprimer la colonne héritée « %s »"
-#: commands/tablecmds.c:4356
+#: commands/tablecmds.c:4361
#: catalog/pg_constraint.c:613
#: catalog/heap.c:2060
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "la contrainte « %s » de la relation « %s » existe déjà"
-#: commands/tablecmds.c:4467
+#: commands/tablecmds.c:4487
msgid "constraint must be added to child tables too"
msgstr "la contrainte doit aussi être ajoutée aux tables filles"
-#: commands/tablecmds.c:4532
+#: commands/tablecmds.c:4552
#: commands/sequence.c:1331
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "la relation référencée « %s » n'est pas une table"
-#: commands/tablecmds.c:4554
+#: commands/tablecmds.c:4574
msgid "cannot reference temporary table from permanent table constraint"
msgstr ""
"ne peut pas référencer une table temporaire à partir d'une contrainte de\n"
"table permanente"
-#: commands/tablecmds.c:4561
+#: commands/tablecmds.c:4581
msgid "cannot reference permanent table from temporary table constraint"
msgstr ""
"ne peut pas référencer une table permanente à partir de la contrainte de\n"
"table temporaire"
-#: commands/tablecmds.c:4621
+#: commands/tablecmds.c:4641
msgid "number of referencing and referenced columns for foreign key disagree"
msgstr "nombre de colonnes de référence et référencées pour la clé étrangère en désaccord"
-#: commands/tablecmds.c:4712
+#: commands/tablecmds.c:4732
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "la contrainte de clé étrangère « %s » ne peut pas être implémentée"
-#: commands/tablecmds.c:4715
+#: commands/tablecmds.c:4735
#, c-format
msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
msgstr "Les colonnes clés « %s » et « %s » sont de types incompatibles : %s et %s."
-#: commands/tablecmds.c:4808
+#: commands/tablecmds.c:4828
#, c-format
msgid "column \"%s\" referenced in foreign key constraint does not exist"
msgstr "la colonne « %s » référencée dans la contrainte de clé étrangère n'existe pas"
-#: commands/tablecmds.c:4813
+#: commands/tablecmds.c:4833
#, c-format
msgid "cannot have more than %d keys in a foreign key"
msgstr "ne peut pas avoir plus de %d clés dans une clé étrangère"
-#: commands/tablecmds.c:4886
+#: commands/tablecmds.c:4906
#, c-format
msgid "there is no primary key for referenced table \"%s\""
msgstr "il n'existe pas de clé étrangère pour la table « %s » référencée"
-#: commands/tablecmds.c:5020
+#: commands/tablecmds.c:5042
#, c-format
msgid "there is no unique constraint matching given keys for referenced table \"%s\""
msgstr ""
"il n'existe aucune contrainte unique correspondant aux clés données pour la\n"
"table « %s » référencée"
-#: commands/tablecmds.c:5354
+#: commands/tablecmds.c:5376
#, c-format
msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
msgstr "ne peut pas supprimer la contrainte héritée « %s » de la relation « %s »"
-#: commands/tablecmds.c:5378
-#: commands/tablecmds.c:5481
+#: commands/tablecmds.c:5400
+#: commands/tablecmds.c:5503
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "la contrainte « %s » de la relation « %s » n'existe pas"
-#: commands/tablecmds.c:5532
+#: commands/tablecmds.c:5554
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "ne peut pas modifier la colonne héritée « %s »"
-#: commands/tablecmds.c:5568
+#: commands/tablecmds.c:5590
msgid "transform expression must not return a set"
msgstr "l'expression de transformation ne doit pas renvoyer un ensemble"
-#: commands/tablecmds.c:5574
+#: commands/tablecmds.c:5596
msgid "cannot use subquery in transform expression"
msgstr "ne peut pas utiliser une sous-requête dans l'expression de transformation"
-#: commands/tablecmds.c:5578
+#: commands/tablecmds.c:5600
msgid "cannot use aggregate function in transform expression"
msgstr "ne peut pas utiliser la fonction d'agrégat dans l'expression de la transformation"
-#: commands/tablecmds.c:5582
+#: commands/tablecmds.c:5604
msgid "cannot use window function in transform expression"
msgstr "ne peut pas utiliser la fonction window dans l'expression de la transformation"
-#: commands/tablecmds.c:5600
+#: commands/tablecmds.c:5622
#, c-format
msgid "column \"%s\" cannot be cast to type %s"
msgstr "la colonne « %s » ne peut pas être convertie vers le type %s"
-#: commands/tablecmds.c:5626
+#: commands/tablecmds.c:5648
#, c-format
msgid "type of inherited column \"%s\" must be changed in child tables too"
msgstr "le type de colonne héritée « %s » doit aussi être renommée pour les tables filles"
-#: commands/tablecmds.c:5665
+#: commands/tablecmds.c:5687
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "ne peut pas modifier la colonne « %s » deux fois"
-#: commands/tablecmds.c:5699
+#: commands/tablecmds.c:5721
#, c-format
msgid "default for column \"%s\" cannot be cast to type %s"
msgstr ""
"la valeur par défaut de la colonne « %s » ne peut pas être convertie vers le\n"
"type %s"
-#: commands/tablecmds.c:5825
+#: commands/tablecmds.c:5847
msgid "cannot alter type of a column used by a view or rule"
msgstr "ne peut pas modifier le type d'une colonne utilisée dans une vue ou une règle"
-#: commands/tablecmds.c:5826
+#: commands/tablecmds.c:5848
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s dépend de la colonne « %s »"
-#: commands/tablecmds.c:6178
+#: commands/tablecmds.c:6205
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "ne peut pas modifier le propriétaire de l'index « %s »"
-#: commands/tablecmds.c:6180
+#: commands/tablecmds.c:6207
msgid "Change the ownership of the index's table, instead."
msgstr "Modifier à la place le propriétaire de la table concernée par l'index."
-#: commands/tablecmds.c:6196
+#: commands/tablecmds.c:6223
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "ne peut pas modifier le propriétaire de la séquence « %s »"
-#: commands/tablecmds.c:6198
-#: commands/tablecmds.c:7578
+#: commands/tablecmds.c:6225
+#: commands/tablecmds.c:7605
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "La séquence « %s » est liée à la table « %s »."
-#: commands/tablecmds.c:6219
-#: commands/tablecmds.c:7596
+#: commands/tablecmds.c:6246
+#: commands/tablecmds.c:7623
#, c-format
msgid "\"%s\" is not a table, view, or sequence"
msgstr "« %s » n'est pas une table, une vue ou une séquence"
-#: commands/tablecmds.c:6504
+#: commands/tablecmds.c:6531
#: commands/cluster.c:169
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "l'index « %s » pour la table « %s » n'existe pas"
-#: commands/tablecmds.c:6551
+#: commands/tablecmds.c:6578
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "ne peut pas avoir de nombreuses sous-commandes SET TABLESPACE"
-#: commands/tablecmds.c:6605
+#: commands/tablecmds.c:6632
#, c-format
msgid "\"%s\" is not a table, index, or TOAST table"
msgstr "« %s » n'est pas une table, un index ou une table TOAST"
-#: commands/tablecmds.c:6717
+#: commands/tablecmds.c:6744
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "ne peut pas déplacer la colonne système « %s »"
-#: commands/tablecmds.c:6724
+#: commands/tablecmds.c:6751
#: executor/execMain.c:2948
#: catalog/index.c:589
#: catalog/heap.c:940
msgid "only shared relations can be placed in pg_global tablespace"
msgstr "seules les relations partagées peuvent être placées dans le tablespace pg_global"
-#: commands/tablecmds.c:6733
+#: commands/tablecmds.c:6760
msgid "cannot move temporary tables of other sessions"
msgstr "ne peut pas déplacer les tables temporaires d'autres sessions"
-#: commands/tablecmds.c:7013
+#: commands/tablecmds.c:7040
msgid "circular inheritance not allowed"
msgstr "héritage circulaire interdit"
-#: commands/tablecmds.c:7014
+#: commands/tablecmds.c:7041
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "« %s » est déjà un enfant de « %s »."
-#: commands/tablecmds.c:7022
+#: commands/tablecmds.c:7049
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
msgstr "la table « %s » qui n'a pas d'OID ne peut pas hériter de la table « %s » qui en a"
-#: commands/tablecmds.c:7149
+#: commands/tablecmds.c:7176
#, c-format
msgid "column \"%s\" in child table must be marked NOT NULL"
msgstr "la colonne « %s » de la table enfant doit être marquée comme NOT NULL"
-#: commands/tablecmds.c:7165
+#: commands/tablecmds.c:7192
#, c-format
msgid "child table is missing column \"%s\""
msgstr "la colonne « %s » manque à la table enfant"
-#: commands/tablecmds.c:7244
+#: commands/tablecmds.c:7271
#, c-format
msgid "child table \"%s\" has different definition for check constraint \"%s\""
msgstr "la table fille « %s » a un type différent pour la contrainte de vérification « %s »"
-#: commands/tablecmds.c:7268
+#: commands/tablecmds.c:7295
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "la contrainte « %s » manque à la table enfant"
-#: commands/tablecmds.c:7349
+#: commands/tablecmds.c:7376
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "la relation « %s » n'est pas un parent de la relation « %s »"
-#: commands/tablecmds.c:7577
+#: commands/tablecmds.c:7604
msgid "cannot move an owned sequence into another schema"
msgstr "ne peut pas déplacer une séquence OWNED BY dans un autre schéma"
-#: commands/tablecmds.c:7606
+#: commands/tablecmds.c:7633
#, c-format
msgid "relation \"%s\" is already in schema \"%s\""
msgstr "la relation « %s » existe déjà dans le schéma « %s »"
-#: commands/tablecmds.c:7614
+#: commands/tablecmds.c:7641
#: commands/functioncmds.c:1880
#: commands/typecmds.c:2761
msgid "cannot move objects into or out of temporary schemas"
msgstr "ne peut pas déplacer les objets dans ou à partir des schémas temporaires"
-#: commands/tablecmds.c:7620
+#: commands/tablecmds.c:7647
#: commands/functioncmds.c:1886
#: commands/typecmds.c:2767
msgid "cannot move objects into or out of TOAST schema"
msgstr "ne peut pas déplacer les objets dans ou à partir des schémas TOAST"
-#: commands/tablecmds.c:7671
+#: commands/tablecmds.c:7698
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "la relation « %s » existe déjà dans le schéma « %s »"
@@ -10157,24 +10155,24 @@
msgid "There are %d prepared transaction(s) using the database."
msgstr "%d transaction(s) préparée(s) utilisent la base de données"
-#: commands/indexcmds.c:150
+#: commands/indexcmds.c:147
msgid "must specify at least one column"
msgstr "doit spécifier au moins une colonne"
-#: commands/indexcmds.c:154
+#: commands/indexcmds.c:151
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "ne peut pas utiliser plus de %d colonnes dans un index"
-#: commands/indexcmds.c:184
+#: commands/indexcmds.c:181
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "ne peut pas créer les index sur les tables temporaires des autres sessions"
-#: commands/indexcmds.c:277
+#: commands/indexcmds.c:274
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "substitution de la méthode d'accès obsolète « rtree » par « gist » "
-#: commands/indexcmds.c:287
+#: commands/indexcmds.c:284
#: commands/opclasscmds.c:290
#: commands/opclasscmds.c:682
#: commands/opclasscmds.c:785
@@ -10190,90 +10188,90 @@
msgid "access method \"%s\" does not exist"
msgstr "la méthode d'accès « %s » n'existe pas"
-#: commands/indexcmds.c:296
+#: commands/indexcmds.c:293
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "la méthode d'accès « %s » ne supporte pas les index uniques"
-#: commands/indexcmds.c:301
+#: commands/indexcmds.c:298
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "la méthode d'accès « %s » ne supporte pas les index multi-colonnes"
-#: commands/indexcmds.c:334
+#: commands/indexcmds.c:331
#: parser/parse_utilcmd.c:1057
#: parser/parse_utilcmd.c:1141
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "les clés primaires multiples ne sont pas autorisées pour la table « %s »"
-#: commands/indexcmds.c:351
+#: commands/indexcmds.c:348
msgid "primary keys cannot be expressions"
msgstr "les clés primaires ne peuvent pas être des expressions"
-#: commands/indexcmds.c:381
-#: commands/indexcmds.c:858
+#: commands/indexcmds.c:378
+#: commands/indexcmds.c:821
#: parser/parse_utilcmd.c:1256
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "la colonne « %s » nommée dans la clé n'existe pas"
-#: commands/indexcmds.c:436
+#: commands/indexcmds.c:433
#, c-format
msgid "%s %s will create implicit index \"%s\" for table \"%s\""
msgstr "%s %s créera un index implicite « %s » pour la table « %s »"
-#: commands/indexcmds.c:799
+#: commands/indexcmds.c:762
msgid "cannot use subquery in index predicate"
msgstr "ne peut pas utiliser une sous-requête dans un prédicat d'index"
-#: commands/indexcmds.c:803
+#: commands/indexcmds.c:766
msgid "cannot use aggregate in index predicate"
msgstr "ne peut pas utiliser un agrégat dans un prédicat d'index"
-#: commands/indexcmds.c:812
+#: commands/indexcmds.c:775
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "les fonctions dans un prédicat d'index doivent être marquées comme IMMUTABLE"
-#: commands/indexcmds.c:897
+#: commands/indexcmds.c:860
msgid "cannot use subquery in index expression"
msgstr "ne peut pas utiliser la sous-requête dans l'expression de l'index"
-#: commands/indexcmds.c:901
+#: commands/indexcmds.c:864
msgid "cannot use aggregate function in index expression"
msgstr "ne peut pas utiliser la fonction d'agrégat dans l'expression de l'index"
-#: commands/indexcmds.c:911
+#: commands/indexcmds.c:874
msgid "functions in index expression must be marked IMMUTABLE"
msgstr ""
"les fonctions dans l'expression de l'index doivent être marquées comme\n"
"IMMUTABLE"
-#: commands/indexcmds.c:948
+#: commands/indexcmds.c:911
#, c-format
msgid "access method \"%s\" does not support ASC/DESC options"
msgstr "la méthode d'accès « %s » ne supporte pas les options ASC/DESC"
-#: commands/indexcmds.c:953
+#: commands/indexcmds.c:916
#, c-format
msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
msgstr "la méthode d'accès « %s » ne supporte pas les options NULLS FIRST/LAST"
-#: commands/indexcmds.c:1009
+#: commands/indexcmds.c:972
#, c-format
msgid "data type %s has no default operator class for access method \"%s\""
msgstr ""
"le type de données %s n'a pas de classe d'opérateurs par défaut pour la\n"
"méthode d'accès « %s »"
-#: commands/indexcmds.c:1011
+#: commands/indexcmds.c:974
msgid "You must specify an operator class for the index or define a default operator class for the data type."
msgstr ""
"Vous devez spécifier une classe d'opérateur pour l'index ou définir une\n"
"classe d'opérateur par défaut pour le type de données."
-#: commands/indexcmds.c:1041
-#: commands/indexcmds.c:1051
+#: commands/indexcmds.c:1004
+#: commands/indexcmds.c:1014
#: commands/opclasscmds.c:1529
#: commands/opclasscmds.c:1533
#: commands/opclasscmds.c:1770
@@ -10286,33 +10284,33 @@
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »"
-#: commands/indexcmds.c:1064
+#: commands/indexcmds.c:1027
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "la classe d'opérateur « %s » n'accepte pas le type de données %s"
-#: commands/indexcmds.c:1154
+#: commands/indexcmds.c:1117
#, c-format
msgid "there are multiple default operator classes for data type %s"
msgstr ""
"il existe de nombreuses classes d'opérateur par défaut pour le type de\n"
"données %s"
-#: commands/indexcmds.c:1398
+#: commands/indexcmds.c:1361
#, c-format
msgid "shared table \"%s\" can only be reindexed in stand-alone mode"
msgstr "la table partagée « %s » peut seulement être réindexé en mode autonome"
-#: commands/indexcmds.c:1405
+#: commands/indexcmds.c:1368
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "la table « %s » n'a pas d'index"
-#: commands/indexcmds.c:1433
+#: commands/indexcmds.c:1396
msgid "can only reindex the currently open database"
msgstr "peut seulement réindexer la base de données en cours"
-#: commands/indexcmds.c:1524
+#: commands/indexcmds.c:1487
#, c-format
msgid "table \"%s\" was reindexed"
msgstr "la table « %s » a été réindexée"
@@ -11216,19 +11214,19 @@
msgid "could not serialize access due to concurrent update"
msgstr "n'a pas pu sérialiser un accès à cause d'une mise à jour en parallèle"
-#: commands/trigger.c:3567
+#: commands/trigger.c:3579
#: catalog/namespace.c:229
#: catalog/namespace.c:303
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "les références entre bases de données ne sont pas implémentées : « %s.%s.%s »"
-#: commands/trigger.c:3661
+#: commands/trigger.c:3673
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "la contrainte « %s » n'est pas DEFERRABLE"
-#: commands/trigger.c:3687
+#: commands/trigger.c:3699
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "la contrainte « %s » n'existe pas"
@@ -11713,9 +11711,9 @@
msgid "could not find array type for data type %s"
msgstr "n'a pas pu trouver le type array pour le type de données %s"
-#: executor/nodeSubplan.c:301
-#: executor/nodeSubplan.c:340
-#: executor/nodeSubplan.c:973
+#: executor/nodeSubplan.c:302
+#: executor/nodeSubplan.c:341
+#: executor/nodeSubplan.c:978
msgid "more than one row returned by a subquery used as an expression"
msgstr "plus d'une ligne renvoyée par une sous-requête utilisée comme une expression"
@@ -11939,12 +11937,12 @@
msgstr "ne peut pas ouvrir la requête %s comme curseur"
#: executor/spi.c:1186
-#: parser/analyze.c:1988
+#: parser/analyze.c:1992
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas supporté"
#: executor/spi.c:1187
-#: parser/analyze.c:1989
+#: parser/analyze.c:1993
msgid "Scrollable cursors must be READ ONLY."
msgstr "Les curseurs déplaçables doivent être en lecture seule (READ ONLY)."
@@ -12143,50 +12141,50 @@
msgid "ROW() column has type %s instead of type %s"
msgstr "une colonne ROW() a le type %s au lieu du type %s"
-#: optimizer/plan/initsplan.c:589
+#: optimizer/plan/initsplan.c:592
msgid "SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer join"
msgstr ""
"SELECT FOR UPDATE/SHARE ne peut être appliqué sur le côté possiblement NULL\n"
"d'une jointure externe"
-#: optimizer/plan/planner.c:845
-#: parser/analyze.c:1209
-#: parser/analyze.c:1403
-#: parser/analyze.c:2049
+#: optimizer/plan/planner.c:846
+#: parser/analyze.c:1210
+#: parser/analyze.c:1407
+#: parser/analyze.c:2053
msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec UNION/INTERSECT/EXCEPT"
-#: optimizer/plan/planner.c:1043
+#: optimizer/plan/planner.c:1044
msgid "could not implement GROUP BY"
msgstr "n'a pas pu implanté GROUP BY"
-#: optimizer/plan/planner.c:1044
-#: optimizer/plan/planner.c:1475
-#: optimizer/prep/prepunion.c:768
+#: optimizer/plan/planner.c:1045
+#: optimizer/plan/planner.c:1476
+#: optimizer/prep/prepunion.c:778
msgid "Some of the datatypes only support hashing, while others only support sorting."
msgstr ""
"Certains des types de données supportent seulement le hachage,\n"
"alors que les autres supportent seulement le tri."
-#: optimizer/plan/planner.c:1474
+#: optimizer/plan/planner.c:1475
msgid "could not implement DISTINCT"
msgstr "n'a pas pu implanté DISTINCT"
-#: optimizer/plan/planner.c:2522
+#: optimizer/plan/planner.c:2523
msgid "could not implement window PARTITION BY"
msgstr "n'a pas pu implanter PARTITION BY de window"
-#: optimizer/plan/planner.c:2523
+#: optimizer/plan/planner.c:2524
msgid "Window partitioning columns must be of sortable datatypes."
msgstr ""
"Les colonnes de partitionnement de window doivent être d'un type de données\n"
"triables."
-#: optimizer/plan/planner.c:2527
+#: optimizer/plan/planner.c:2528
msgid "could not implement window ORDER BY"
msgstr "n'a pas pu implanter ORDER BY dans le window"
-#: optimizer/plan/planner.c:2528
+#: optimizer/plan/planner.c:2529
msgid "Window ordering columns must be of sortable datatypes."
msgstr "Les colonnes de tri de la window doivent être d'un type de données triable."
@@ -12194,16 +12192,16 @@
msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé dans les sous-requêtes"
-#: optimizer/prep/prepunion.c:373
+#: optimizer/prep/prepunion.c:383
msgid "could not implement recursive UNION"
msgstr "n'a pas pu implanté le UNION récursif"
-#: optimizer/prep/prepunion.c:374
+#: optimizer/prep/prepunion.c:384
msgid "All column datatypes must be hashable."
msgstr "Tous les types de données colonnes doivent être hachables."
#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:767
+#: optimizer/prep/prepunion.c:777
#, c-format
msgid "could not implement %s"
msgstr "n'a pas pu implanté %s"
@@ -12285,45 +12283,50 @@
msgid "could not listen on %s socket: %m"
msgstr "n'a pas pu écouter sur le socket %s : %m"
-#: libpq/pqcomm.c:532
+#: libpq/pqcomm.c:482
+#, c-format
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
+msgstr "Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)"
+
+#: libpq/pqcomm.c:540
#, c-format
msgid "group \"%s\" does not exist"
msgstr "le groupe « %s » n'existe pas"
-#: libpq/pqcomm.c:542
+#: libpq/pqcomm.c:550
#, c-format
msgid "could not set group of file \"%s\": %m"
msgstr "n'a pas pu initialiser le groupe du fichier « %s » : %m"
-#: libpq/pqcomm.c:553
+#: libpq/pqcomm.c:561
#, c-format
msgid "could not set permissions of file \"%s\": %m"
msgstr "n'a pas pu initialiser les droits du fichier « %s » : %m"
-#: libpq/pqcomm.c:583
+#: libpq/pqcomm.c:591
#, c-format
msgid "could not accept new connection: %m"
msgstr "n'a pas pu accepter la nouvelle connexion : %m"
-#: libpq/pqcomm.c:769
+#: libpq/pqcomm.c:777
#, c-format
msgid "could not receive data from client: %m"
msgstr "n'a pas pu recevoir les données du client : %m"
-#: libpq/pqcomm.c:956
+#: libpq/pqcomm.c:964
msgid "unexpected EOF within message length word"
msgstr "fin de fichier (EOF) inattendue à l'intérieur de la longueur du message"
-#: libpq/pqcomm.c:967
+#: libpq/pqcomm.c:975
msgid "invalid message length"
msgstr "longueur du message invalide"
-#: libpq/pqcomm.c:989
-#: libpq/pqcomm.c:999
+#: libpq/pqcomm.c:997
+#: libpq/pqcomm.c:1007
msgid "incomplete message from client"
msgstr "message incomplet du client"
-#: libpq/pqcomm.c:1108
+#: libpq/pqcomm.c:1116
#, c-format
msgid "could not send data to client: %m"
msgstr "n'a pas pu envoyer les données au client : %m"
@@ -13729,11 +13732,11 @@
msgid "shared indexes cannot be created after initdb"
msgstr "les index partagés ne peuvent pas être créés après initdb"
-#: catalog/index.c:2305
+#: catalog/index.c:2378
msgid "cannot reindex temporary tables of other sessions"
msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions"
-#: catalog/index.c:2327
+#: catalog/index.c:2400
#, c-format
msgid "shared index \"%s\" can only be reindexed in stand-alone mode"
msgstr "un index partagé « %s » peut seulement être réindexé en mode autonome"
@@ -13924,7 +13927,7 @@
"n'a pas pu supprimer les objets appartenant à %s car ils sont nécessaires au\n"
"système de bases de données"
-#: catalog/pg_shdepend.c:1295
+#: catalog/pg_shdepend.c:1299
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr ""
@@ -15087,7 +15090,7 @@
msgstr "%s : n'a pas pu déterminer le nom de l'utilisateur (GetUserName a échoué)\n"
#: parser/parse_coerce.c:283
-#: parser/analyze.c:2272
+#: parser/analyze.c:2276
#: parser/parse_expr.c:647
#: parser/parse_expr.c:654
#, c-format
@@ -15519,177 +15522,177 @@
"la sous-requête utilise une colonne « %s.%s » non groupée dans la requête\n"
"externe"
-#: parser/analyze.c:459
+#: parser/analyze.c:460
msgid "INSERT ... SELECT cannot specify INTO"
msgstr "INSERT ... SELECT ne peut pas avoir INTO"
-#: parser/analyze.c:561
-#: parser/analyze.c:984
+#: parser/analyze.c:562
+#: parser/analyze.c:985
msgid "VALUES lists must all be the same length"
msgstr "les listes VALUES doivent toutes être de la même longueur"
-#: parser/analyze.c:582
-#: parser/analyze.c:1090
+#: parser/analyze.c:583
+#: parser/analyze.c:1091
msgid "VALUES must not contain table references"
msgstr "VALUES ne doit pas contenir de références de table"
-#: parser/analyze.c:596
-#: parser/analyze.c:1104
+#: parser/analyze.c:597
+#: parser/analyze.c:1105
msgid "VALUES must not contain OLD or NEW references"
msgstr "VALUES ne doit pas contenir des références à OLD et NEW"
-#: parser/analyze.c:597
-#: parser/analyze.c:1105
+#: parser/analyze.c:598
+#: parser/analyze.c:1106
msgid "Use SELECT ... UNION ALL ... instead."
msgstr "Utilisez à la place SELECT ... UNION ALL ..."
-#: parser/analyze.c:707
-#: parser/analyze.c:1117
+#: parser/analyze.c:708
+#: parser/analyze.c:1118
msgid "cannot use aggregate function in VALUES"
msgstr "ne peut pas utiliser la fonction d'agrégat dans un VALUES"
-#: parser/analyze.c:713
-#: parser/analyze.c:1123
+#: parser/analyze.c:714
+#: parser/analyze.c:1124
msgid "cannot use window function in VALUES"
msgstr "ne peut pas utiliser la fonction window dans un VALUES"
-#: parser/analyze.c:745
+#: parser/analyze.c:746
msgid "INSERT has more expressions than target columns"
msgstr "INSERT a plus d'expressions que les colonnes cibles"
-#: parser/analyze.c:753
+#: parser/analyze.c:754
msgid "INSERT has more target columns than expressions"
msgstr "INSERT a plus de colonnes cibles que d'expressions"
-#: parser/analyze.c:1000
+#: parser/analyze.c:1001
msgid "DEFAULT can only appear in a VALUES list within INSERT"
msgstr "DEFAULT peut seulement apparaître dans la liste VALUES comprise dans un INSERT"
-#: parser/analyze.c:1071
-#: parser/analyze.c:2184
+#: parser/analyze.c:1072
+#: parser/analyze.c:2188
msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
msgstr "SELECT FOR UPDATE/SHARE ne peut pas être appliqué à VALUES"
-#: parser/analyze.c:1327
+#: parser/analyze.c:1328
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "clause UNION/INTERSECT/EXCEPT ORDER BY invalide"
-#: parser/analyze.c:1328
+#: parser/analyze.c:1329
msgid "Only result column names can be used, not expressions or functions."
msgstr ""
"Seuls les noms de colonnes résultats peuvent être utilisés, pas les\n"
"expressions et les fonctions."
-#: parser/analyze.c:1329
+#: parser/analyze.c:1330
msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
msgstr "Ajouter l'expression/fonction à chaque SELECT, ou déplacer l'UNION dans une clause FROM."
-#: parser/analyze.c:1395
+#: parser/analyze.c:1399
msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
msgstr "INTO est autorisé uniquement sur le premier SELECT d'un UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1455
+#: parser/analyze.c:1459
msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
msgstr ""
"L'instruction membre UNION/INTERSECT/EXCEPT ne peut pas faire référence à\n"
"d'autres relations que celles de la requête de même niveau"
-#: parser/analyze.c:1540
+#: parser/analyze.c:1544
#, c-format
msgid "each %s query must have the same number of columns"
msgstr "chaque requête %s doit avoir le même nombre de colonnes"
-#: parser/analyze.c:1732
+#: parser/analyze.c:1736
msgid "CREATE TABLE AS specifies too many column names"
msgstr "CREATE TABLE AS spécifie trop de noms de colonnes"
-#: parser/analyze.c:1782
+#: parser/analyze.c:1786
msgid "cannot use aggregate function in UPDATE"
msgstr "ne peut pas utiliser une fonction d'agrégat dans un UPDATE"
-#: parser/analyze.c:1788
+#: parser/analyze.c:1792
msgid "cannot use window function in UPDATE"
msgstr "ne peut pas utiliser une fonction window dans un UPDATE"
-#: parser/analyze.c:1895
+#: parser/analyze.c:1899
msgid "cannot use aggregate function in RETURNING"
msgstr "ne peut pas utiliser une fonction d'agrégat dans RETURNING"
-#: parser/analyze.c:1901
+#: parser/analyze.c:1905
msgid "cannot use window function in RETURNING"
msgstr "ne peut pas utiliser une fonction window dans RETURNING"
-#: parser/analyze.c:1920
+#: parser/analyze.c:1924
msgid "RETURNING cannot contain references to other relations"
msgstr "RETURNING ne doit pas contenir de références à d'autres relations"
-#: parser/analyze.c:1959
+#: parser/analyze.c:1963
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "ne peut pas spécifier à la fois SCROLL et NO SCROLL"
-#: parser/analyze.c:1973
+#: parser/analyze.c:1977
msgid "DECLARE CURSOR cannot specify INTO"
msgstr "DECLARE CURSOR ne peut pas spécifier INTO"
-#: parser/analyze.c:1981
+#: parser/analyze.c:1985
msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE n'est pas supporté"
-#: parser/analyze.c:1982
+#: parser/analyze.c:1986
msgid "Holdable cursors must be READ ONLY."
msgstr "Les curseurs détenables doivent être en lecture seule (READ ONLY)."
-#: parser/analyze.c:1995
+#: parser/analyze.c:1999
msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE n'est pas supporté"
-#: parser/analyze.c:1996
+#: parser/analyze.c:2000
msgid "Insensitive cursors must be READ ONLY."
msgstr "Les curseurs insensibles doivent être en lecture seule (READ ONLY)."
-#: parser/analyze.c:2053
+#: parser/analyze.c:2057
msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause DISTINCT"
-#: parser/analyze.c:2057
+#: parser/analyze.c:2061
msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause GROUP BY"
-#: parser/analyze.c:2061
+#: parser/analyze.c:2065
msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause HAVING"
-#: parser/analyze.c:2065
+#: parser/analyze.c:2069
msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions d'agrégats"
-#: parser/analyze.c:2069
+#: parser/analyze.c:2073
msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions"
msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions window"
-#: parser/analyze.c:2137
+#: parser/analyze.c:2141
msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names"
msgstr "SELECT FOR UPDATE/SHARE doit indiqué les noms de relation non qualifiés"
-#: parser/analyze.c:2166
+#: parser/analyze.c:2170
msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join"
msgstr "SELECT FOR UPDATE/SHARE ne peut pas être appliqué à une jointure"
-#: parser/analyze.c:2172
+#: parser/analyze.c:2176
msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD"
msgstr "SELECT FOR UPDATE/SHARE ne peut pas être appliqué à NEW et OLD"
-#: parser/analyze.c:2178
+#: parser/analyze.c:2182
msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function"
msgstr "SELECT FOR UPDATE/SHARE ne peut pas être appliqué à une fonction"
-#: parser/analyze.c:2190
+#: parser/analyze.c:2194
msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query"
msgstr ""
"SELECT FOR UPDATE/SHARE ne peut pas être appliqué à une requête\n"
"WITH"
-#: parser/analyze.c:2204
+#: parser/analyze.c:2208
#, c-format
msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause"
msgstr "la relation « %s » d'une clause FOR UPDATE/SHARE introuvable dans la clause FROM"
@@ -16034,95 +16037,95 @@
msgstr "le nom de la table « %s » est spécifié plus d'une fois"
#: parser/parse_relation.c:472
-#: parser/parse_relation.c:546
+#: parser/parse_relation.c:553
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "la référence à la colonne « %s » est ambigu"
-#: parser/parse_relation.c:782
-#: parser/parse_relation.c:1071
-#: parser/parse_relation.c:1431
+#: parser/parse_relation.c:789
+#: parser/parse_relation.c:1078
+#: parser/parse_relation.c:1438
#, c-format
msgid "table \"%s\" has %d columns available but %d columns specified"
msgstr "la table « %s » a %d colonnes disponibles mais %d colonnes spécifiées"
-#: parser/parse_relation.c:812
+#: parser/parse_relation.c:819
#, c-format
msgid "too many column aliases specified for function %s"
msgstr "trop d'alias de colonnes spécifiées pour la fonction %s"
-#: parser/parse_relation.c:878
+#: parser/parse_relation.c:885
#, c-format
msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
msgstr ""
"Il existe un élément WITH nommé « %s » mais il ne peut pas être\n"
"référencée de cette partie de la requête."
-#: parser/parse_relation.c:880
+#: parser/parse_relation.c:887
msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
msgstr ""
"Utilisez WITH RECURSIVE ou ré-ordonnez les éléments WITH pour supprimer\n"
"les références en avant."
-#: parser/parse_relation.c:1150
+#: parser/parse_relation.c:1157
msgid "a column definition list is only allowed for functions returning \"record\""
msgstr ""
"une liste de définition de colonnes est uniquement autorisée pour les fonctions\n"
"renvoyant un « record »"
-#: parser/parse_relation.c:1158
+#: parser/parse_relation.c:1165
msgid "a column definition list is required for functions returning \"record\""
msgstr ""
"une liste de définition de colonnes est requise pour les fonctions renvoyant\n"
"un « record »"
-#: parser/parse_relation.c:1205
+#: parser/parse_relation.c:1212
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
msgstr "la fonction « %s » dans la clause FROM a un type de retour %s non supporté"
-#: parser/parse_relation.c:1277
+#: parser/parse_relation.c:1284
#, c-format
msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
msgstr ""
"les listes « %s » de VALUES ont %d colonnes disponibles mais %d colonnes\n"
"spécifiées"
-#: parser/parse_relation.c:1333
+#: parser/parse_relation.c:1340
#, c-format
msgid "joins can have at most %d columns"
msgstr "les jointures peuvent avoir au plus %d colonnes"
-#: parser/parse_relation.c:2103
+#: parser/parse_relation.c:2110
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "la colonne %d de la relation « %s » n'existe pas"
-#: parser/parse_relation.c:2465
+#: parser/parse_relation.c:2472
#, c-format
msgid "invalid reference to FROM-clause entry for table \"%s\""
msgstr "référence invalide d'une entrée de la clause FROM pour la table « %s »"
-#: parser/parse_relation.c:2468
-#: parser/parse_relation.c:2488
+#: parser/parse_relation.c:2475
+#: parser/parse_relation.c:2495
#, c-format
msgid "Perhaps you meant to reference the table alias \"%s\"."
msgstr "Peut-être que vous souhaitiez référencer l'alias de la table « %s »."
-#: parser/parse_relation.c:2470
-#: parser/parse_relation.c:2491
+#: parser/parse_relation.c:2477
+#: parser/parse_relation.c:2498
#, c-format
msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
msgstr ""
"Il existe une entrée pour la table « %s » mais elle ne peut pas être\n"
"référencée de cette partie de la requête."
-#: parser/parse_relation.c:2476
+#: parser/parse_relation.c:2483
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "entrée manquante de la clause FROM pour la table « %s »"
-#: parser/parse_relation.c:2485
+#: parser/parse_relation.c:2492
#, c-format
msgid "adding missing FROM-clause entry for table \"%s\""
msgstr "ajout d'une entrée manquante dans FROM (table « %s »)"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/po/ru.po
^
|
@@ -26,8 +26,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-08-03 22:41+0000\n"
-"PO-Revision-Date: 2012-08-06 16:52+0400\n"
+"POT-Creation-Date: 2012-09-29 22:42+0000\n"
+"PO-Revision-Date: 2012-10-02 10:45+0400\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgtranslation-translators@pgfoundry.org>\n"
"Language: ru\n"
@@ -2458,8 +2458,8 @@
msgstr "неверное значение для параметра \"%s\": \"%s\""
#: utils/misc/guc.c:4809 utils/misc/guc.c:5077 utils/fmgr/dfmgr.c:381
-#: utils/adt/xml.c:1365 utils/adt/xml.c:1366 utils/adt/xml.c:1372
-#: utils/adt/xml.c:1443 tcop/postgres.c:4099 commands/tablecmds.c:621
+#: utils/adt/xml.c:1393 utils/adt/xml.c:1394 utils/adt/xml.c:1400
+#: utils/adt/xml.c:1471 tcop/postgres.c:4099 commands/tablecmds.c:621
#: commands/user.c:930 commands/user.c:931 commands/trigger.c:578
#: commands/trigger.c:594 commands/trigger.c:606 nodes/print.c:85
#: storage/lmgr/proc.c:939 storage/lmgr/deadlock.c:950
@@ -2970,7 +2970,7 @@
#: utils/error/elog.c:2466
#, c-format
msgid " at character %d"
-msgstr " в символе %d"
+msgstr " (символ %d)"
#: utils/error/elog.c:2116 utils/error/elog.c:2123
msgid "DETAIL: "
@@ -3257,7 +3257,7 @@
msgid "invalid destination encoding name \"%s\""
msgstr "неверное имя кодировки результата: \"%s\""
-#: utils/mb/mbutils.c:477 utils/adt/xml.c:156
+#: utils/mb/mbutils.c:477 utils/adt/xml.c:159
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "неверное имя кодировки: \"%s\""
@@ -3338,92 +3338,92 @@
msgid "argument of nth_value must be greater than zero"
msgstr "аргумент nth_value должен быть больше нуля"
-#: utils/adt/xml.c:135
+#: utils/adt/xml.c:138
msgid "unsupported XML feature"
msgstr "XML-функции не поддерживаются"
-#: utils/adt/xml.c:136
+#: utils/adt/xml.c:139
msgid "This functionality requires the server to be built with libxml support."
msgstr "Для этой функциональности в сервере не хватает поддержки libxml."
-#: utils/adt/xml.c:137
+#: utils/adt/xml.c:140
msgid "You need to rebuild PostgreSQL using --with-libxml."
msgstr "Необходимо перекомпилировать PostgreSQL с ключом --with-libxml."
-#: utils/adt/xml.c:402 utils/adt/xml.c:407
+#: utils/adt/xml.c:405 utils/adt/xml.c:410
msgid "invalid XML comment"
msgstr "ошибка в XML-комментарии"
-#: utils/adt/xml.c:536
+#: utils/adt/xml.c:539
msgid "not an XML document"
msgstr "не XML-документ"
-#: utils/adt/xml.c:689 utils/adt/xml.c:712
+#: utils/adt/xml.c:692 utils/adt/xml.c:715
msgid "invalid XML processing instruction"
msgstr "неправильная XML-инструкция обработки (PI)"
-#: utils/adt/xml.c:690
+#: utils/adt/xml.c:693
#, c-format
msgid "XML processing instruction target name cannot be \"%s\"."
msgstr "назначением XML-инструкции обработки (PI) не может быть \"%s\"."
-#: utils/adt/xml.c:713
+#: utils/adt/xml.c:716
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "XML-инструкция обработки (PI) не может содержать \"?>\"."
-#: utils/adt/xml.c:792
+#: utils/adt/xml.c:795
msgid "xmlvalidate is not implemented"
msgstr "функция xmlvalidate не реализована"
-#: utils/adt/xml.c:877
+#: utils/adt/xml.c:880
msgid "could not initialize XML library"
msgstr "не удалось инициализировать библиотеку XML"
-#: utils/adt/xml.c:878
+#: utils/adt/xml.c:881
#, c-format
msgid ""
"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
msgstr "другой тип char в libxml2: sizeof(char)=%u, sizeof(xmlChar)=%u."
-#: utils/adt/xml.c:1419
+#: utils/adt/xml.c:1447
msgid "Invalid character value."
msgstr "Неверный символ."
-#: utils/adt/xml.c:1422
+#: utils/adt/xml.c:1450
msgid "Space required."
msgstr "Требуется пробел."
-#: utils/adt/xml.c:1425
+#: utils/adt/xml.c:1453
msgid "standalone accepts only 'yes' or 'no'."
msgstr "значениями атрибута standalone могут быть только 'yes' и 'no'."
-#: utils/adt/xml.c:1428
+#: utils/adt/xml.c:1456
msgid "Malformed declaration: missing version."
msgstr "Ошибочное объявление: не указана версия."
-#: utils/adt/xml.c:1431
+#: utils/adt/xml.c:1459
msgid "Missing encoding in text declaration."
msgstr "В объявлении не указана кодировка."
-#: utils/adt/xml.c:1434
+#: utils/adt/xml.c:1462
msgid "Parsing XML declaration: '?>' expected."
msgstr "Ошибка при разборе XML-объявления: ожидается '?>'."
-#: utils/adt/xml.c:1437
+#: utils/adt/xml.c:1465
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "нераспознанный код ошибки libxml: %d."
-#: utils/adt/xml.c:1692
+#: utils/adt/xml.c:1720
msgid "date out of range"
msgstr "дата вне диапазона"
-#: utils/adt/xml.c:1693
+#: utils/adt/xml.c:1721
msgid "XML does not support infinite date values."
msgstr "XML не поддерживает бесконечность в датах."
-#: utils/adt/xml.c:1715 utils/adt/xml.c:1722 utils/adt/xml.c:1742
-#: utils/adt/xml.c:1749 utils/adt/timestamp.c:226 utils/adt/timestamp.c:264
+#: utils/adt/xml.c:1743 utils/adt/xml.c:1750 utils/adt/xml.c:1770
+#: utils/adt/xml.c:1777 utils/adt/timestamp.c:226 utils/adt/timestamp.c:264
#: utils/adt/timestamp.c:486 utils/adt/timestamp.c:526
#: utils/adt/timestamp.c:2525 utils/adt/timestamp.c:2546
#: utils/adt/timestamp.c:2559 utils/adt/timestamp.c:2568
@@ -3447,38 +3447,38 @@
msgid "timestamp out of range"
msgstr "timestamp вне диапазона"
-#: utils/adt/xml.c:1716 utils/adt/xml.c:1743
+#: utils/adt/xml.c:1744 utils/adt/xml.c:1771
msgid "XML does not support infinite timestamp values."
msgstr "XML не поддерживает бесконечность в timestamp."
-#: utils/adt/xml.c:2033 utils/adt/xml.c:2197 commands/portalcmds.c:168
+#: utils/adt/xml.c:2061 utils/adt/xml.c:2225 commands/portalcmds.c:168
#: commands/portalcmds.c:222 executor/execCurrent.c:66
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "курсор \"%s\" не существует"
-#: utils/adt/xml.c:2112
+#: utils/adt/xml.c:2140
msgid "invalid query"
msgstr "неверный запрос"
-#: utils/adt/xml.c:3345
+#: utils/adt/xml.c:3373
msgid "invalid array for XML namespace mapping"
msgstr "неправильный массив с сопоставлениями пространств имён XML"
-#: utils/adt/xml.c:3346
+#: utils/adt/xml.c:3374
msgid ""
"The array must be two-dimensional with length of the second axis equal to 2."
msgstr "Массив должен быть двухмерным и содержать 2 элемента по второй оси."
-#: utils/adt/xml.c:3370
+#: utils/adt/xml.c:3398
msgid "empty XPath expression"
msgstr "пустое выражение XPath"
-#: utils/adt/xml.c:3418
+#: utils/adt/xml.c:3446
msgid "neither namespace name nor URI may be null"
msgstr "ни префикс, ни URI пространства имён не может быть null"
-#: utils/adt/xml.c:3425
+#: utils/adt/xml.c:3453
#, c-format
msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
msgstr ""
@@ -6130,7 +6130,7 @@
msgstr "Значения, не умещающиеся в страницу буфера, нельзя проиндексировать."
#: access/hash/hashutil.c:169 access/nbtree/nbtpage.c:432
-#: access/gist/gistutil.c:596
+#: access/gist/gistutil.c:644
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "в индексе \"%s\" неожиданно оказалась нулевая страница в блоке %u"
@@ -6138,12 +6138,12 @@
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
#: access/nbtree/nbtpage.c:435 access/nbtree/nbtpage.c:446
-#: access/gist/gistutil.c:599 access/gist/gistutil.c:610
+#: access/gist/gistutil.c:647 access/gist/gistutil.c:658
msgid "Please REINDEX it."
msgstr "Пожалуйста, выполните REINDEX для него."
#: access/hash/hashutil.c:180 access/hash/hashutil.c:192
-#: access/nbtree/nbtpage.c:443 access/gist/gistutil.c:607
+#: access/nbtree/nbtpage.c:443 access/gist/gistutil.c:655
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "индекс \"%s\" содержит испорченную страницу в блоке %u"
@@ -7587,7 +7587,7 @@
msgstr ""
"При воспроизведении после сбоя обнаружены неполностью добавленные данные."
-#: access/gist/gistutil.c:409
+#: access/gist/gistutil.c:428
#, c-format
msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery"
msgstr ""
@@ -11405,17 +11405,17 @@
"SELECT FOR UPDATE/SHARE не может применяться к NULL-содержащей стороне "
"внешнего соединения"
-#: optimizer/plan/planner.c:845 parser/analyze.c:1209 parser/analyze.c:1403
+#: optimizer/plan/planner.c:846 parser/analyze.c:1209 parser/analyze.c:1403
#: parser/analyze.c:2049
msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "SELECT FOR UPDATE/SHARE не допускается с UNION/INTERSECT/EXCEPT"
-#: optimizer/plan/planner.c:1043
+#: optimizer/plan/planner.c:1044
msgid "could not implement GROUP BY"
msgstr "не удалось реализовать GROUP BY"
-#: optimizer/plan/planner.c:1044 optimizer/plan/planner.c:1475
-#: optimizer/prep/prepunion.c:768
+#: optimizer/plan/planner.c:1045 optimizer/plan/planner.c:1476
+#: optimizer/prep/prepunion.c:778
msgid ""
"Some of the datatypes only support hashing, while others only support "
"sorting."
@@ -11423,23 +11423,23 @@
"Одни типы данных поддерживают только хэширование, а другие - только "
"сортировку."
-#: optimizer/plan/planner.c:1474
+#: optimizer/plan/planner.c:1475
msgid "could not implement DISTINCT"
msgstr "не удалось реализовать DISTINCT"
-#: optimizer/plan/planner.c:2522
+#: optimizer/plan/planner.c:2523
msgid "could not implement window PARTITION BY"
msgstr "не удалось реализовать PARTITION BY для окна"
-#: optimizer/plan/planner.c:2523
+#: optimizer/plan/planner.c:2524
msgid "Window partitioning columns must be of sortable datatypes."
msgstr "Колонки, разбивающие окна, должны иметь сортируемые типы данных."
-#: optimizer/plan/planner.c:2527
+#: optimizer/plan/planner.c:2528
msgid "could not implement window ORDER BY"
msgstr "не удалось реализовать ORDER BY для окна"
-#: optimizer/plan/planner.c:2528
+#: optimizer/plan/planner.c:2529
msgid "Window ordering columns must be of sortable datatypes."
msgstr "Колонки, сортирующие окна, должны иметь сортируемые типы данных."
@@ -11447,16 +11447,16 @@
msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries"
msgstr "SELECT FOR UPDATE/SHARE в подзапросах не допускается"
-#: optimizer/prep/prepunion.c:373
+#: optimizer/prep/prepunion.c:383
msgid "could not implement recursive UNION"
msgstr "не удалось реализовать рекурсивный UNION"
-#: optimizer/prep/prepunion.c:374
+#: optimizer/prep/prepunion.c:384
msgid "All column datatypes must be hashable."
msgstr "Все колонки должны иметь хэшируемые типы данных."
#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:767
+#: optimizer/prep/prepunion.c:777
#, c-format
msgid "could not implement %s"
msgstr "не удалось реализовать %s"
@@ -12536,8 +12536,8 @@
#: storage/lmgr/proc.c:927
#, c-format
-msgid "Process %d waits for %s on %s"
-msgstr "Процесс %d ожидает в режиме %s блокировку %s"
+msgid "Process %d waits for %s on %s."
+msgstr "Процесс %d ожидает в режиме %s блокировку %s."
#: storage/lmgr/proc.c:937
#, c-format
@@ -14538,15 +14538,15 @@
#: gram.y:9414 gram.y:9429
msgid "frame start cannot be UNBOUNDED FOLLOWING"
-msgstr "началом кадра не может быть UNBOUNDED FOLLOWING"
+msgstr "началом рамки не может быть UNBOUNDED FOLLOWING"
#: gram.y:9419 gram.y:9434
msgid "frame start at CURRENT ROW is not implemented"
-msgstr "начало кадра в CURRENT ROW не реализовано"
+msgstr "начало рамки в CURRENT ROW не реализовано"
#: gram.y:9439
msgid "frame end cannot be UNBOUNDED PRECEDING"
-msgstr "концом кадра не может быть UNBOUNDED PRECEDING"
+msgstr "концом рамки не может быть UNBOUNDED PRECEDING"
#: gram.y:10559
msgid "OLD used in query that is not in a rule"
@@ -15050,7 +15050,7 @@
#: parser/parse_clause.c:1663
#, c-format
msgid "cannot override frame clause of window \"%s\""
-msgstr "переопределить описание кадра для окна \"%s\" нельзя"
+msgstr "переопределить описание рамки для окна \"%s\" нельзя"
#: parser/parse_clause.c:1719
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/adt/datetime.c
^
|
@@ -2168,9 +2168,12 @@
while (*str != '\0' && nf < MAXDATEFIELDS)
{
/* skip field separators */
- while (!isalnum((unsigned char) *str))
+ while (*str != '\0' && !isalnum((unsigned char) *str))
str++;
+ if (*str == '\0')
+ return DTERR_BAD_FORMAT; /* end of string after separator */
+
field[nf] = str;
if (isdigit((unsigned char) *str))
{
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/adt/int.c
^
|
@@ -671,18 +671,6 @@
int32 arg2 = PG_GETARG_INT32(1);
int32 result;
-#ifdef WIN32
-
- /*
- * Win32 doesn't throw a catchable exception for SELECT -2147483648 *
- * (-1); -- INT_MIN
- */
- if (arg2 == -1 && arg1 == INT_MIN)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("integer out of range")));
-#endif
-
result = arg1 * arg2;
/*
@@ -699,7 +687,8 @@
if (!(arg1 >= (int32) SHRT_MIN && arg1 <= (int32) SHRT_MAX &&
arg2 >= (int32) SHRT_MIN && arg2 <= (int32) SHRT_MAX) &&
arg2 != 0 &&
- (result / arg2 != arg1 || (arg2 == -1 && arg1 < 0 && result < 0)))
+ ((arg2 == -1 && arg1 < 0 && result < 0) ||
+ result / arg2 != arg1))
ereport(ERROR,
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
errmsg("integer out of range")));
@@ -722,30 +711,27 @@
PG_RETURN_NULL();
}
-#ifdef WIN32
-
/*
- * Win32 doesn't throw a catchable exception for SELECT -2147483648 /
- * (-1); -- INT_MIN
+ * INT_MIN / -1 is problematic, since the result can't be represented on a
+ * two's-complement machine. Some machines produce INT_MIN, some produce
+ * zero, some throw an exception. We can dodge the problem by recognizing
+ * that division by -1 is the same as negation.
*/
- if (arg2 == -1 && arg1 == INT_MIN)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("integer out of range")));
-#endif
+ if (arg2 == -1)
+ {
+ result = -arg1;
+ /* overflow check (needed for INT_MIN) */
+ if (arg1 != 0 && SAMESIGN(result, arg1))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("integer out of range")));
+ PG_RETURN_INT32(result);
+ }
+
+ /* No overflow is possible */
result = arg1 / arg2;
- /*
- * Overflow check. The only possible overflow case is for arg1 = INT_MIN,
- * arg2 = -1, where the correct result is -INT_MIN, which can't be
- * represented on a two's-complement machine. Most machines produce
- * INT_MIN but it seems some produce zero.
- */
- if (arg2 == -1 && arg1 < 0 && result <= 0)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("integer out of range")));
PG_RETURN_INT32(result);
}
@@ -867,18 +853,27 @@
PG_RETURN_NULL();
}
- result = arg1 / arg2;
-
/*
- * Overflow check. The only possible overflow case is for arg1 =
- * SHRT_MIN, arg2 = -1, where the correct result is -SHRT_MIN, which can't
- * be represented on a two's-complement machine. Most machines produce
- * SHRT_MIN but it seems some produce zero.
+ * SHRT_MIN / -1 is problematic, since the result can't be represented on
+ * a two's-complement machine. Some machines produce SHRT_MIN, some
+ * produce zero, some throw an exception. We can dodge the problem by
+ * recognizing that division by -1 is the same as negation.
*/
- if (arg2 == -1 && arg1 < 0 && result <= 0)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("smallint out of range")));
+ if (arg2 == -1)
+ {
+ result = -arg1;
+ /* overflow check (needed for SHRT_MIN) */
+ if (arg1 != 0 && SAMESIGN(result, arg1))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("smallint out of range")));
+ PG_RETURN_INT16(result);
+ }
+
+ /* No overflow is possible */
+
+ result = arg1 / arg2;
+
PG_RETURN_INT16(result);
}
@@ -1055,18 +1050,27 @@
PG_RETURN_NULL();
}
- result = arg1 / arg2;
-
/*
- * Overflow check. The only possible overflow case is for arg1 = INT_MIN,
- * arg2 = -1, where the correct result is -INT_MIN, which can't be
- * represented on a two's-complement machine. Most machines produce
- * INT_MIN but it seems some produce zero.
+ * INT_MIN / -1 is problematic, since the result can't be represented on a
+ * two's-complement machine. Some machines produce INT_MIN, some produce
+ * zero, some throw an exception. We can dodge the problem by recognizing
+ * that division by -1 is the same as negation.
*/
- if (arg2 == -1 && arg1 < 0 && result <= 0)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("integer out of range")));
+ if (arg2 == -1)
+ {
+ result = -arg1;
+ /* overflow check (needed for INT_MIN) */
+ if (arg1 != 0 && SAMESIGN(result, arg1))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("integer out of range")));
+ PG_RETURN_INT32(result);
+ }
+
+ /* No overflow is possible */
+
+ result = arg1 / arg2;
+
PG_RETURN_INT32(result);
}
@@ -1085,8 +1089,12 @@
PG_RETURN_NULL();
}
- /* SELECT ((-2147483648)::int4) % (-1); causes a floating point exception */
- if (arg1 == INT_MIN && arg2 == -1)
+ /*
+ * Some machines throw a floating-point exception for INT_MIN % -1, which
+ * is a bit silly since the correct answer is perfectly well-defined,
+ * namely zero.
+ */
+ if (arg2 == -1)
PG_RETURN_INT32(0);
/* No overflow is possible */
@@ -1109,6 +1117,15 @@
PG_RETURN_NULL();
}
+ /*
+ * Some machines throw a floating-point exception for INT_MIN % -1, which
+ * is a bit silly since the correct answer is perfectly well-defined,
+ * namely zero. (It's not clear this ever happens when dealing with
+ * int16, but we might as well have the test for safety.)
+ */
+ if (arg2 == -1)
+ PG_RETURN_INT16(0);
+
/* No overflow is possible */
PG_RETURN_INT16(arg1 % arg2);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/adt/int8.c
^
|
@@ -583,7 +583,8 @@
#endif
{
if (arg2 != 0 &&
- (result / arg2 != arg1 || (arg2 == -1 && arg1 < 0 && result < 0)))
+ ((arg2 == -1 && arg1 < 0 && result < 0) ||
+ result / arg2 != arg1))
ereport(ERROR,
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
errmsg("bigint out of range")));
@@ -607,18 +608,27 @@
PG_RETURN_NULL();
}
- result = arg1 / arg2;
-
/*
- * Overflow check. The only possible overflow case is for arg1 =
- * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which
- * can't be represented on a two's-complement machine. Most machines
- * produce INT64_MIN but it seems some produce zero.
+ * INT64_MIN / -1 is problematic, since the result can't be represented on
+ * a two's-complement machine. Some machines produce INT64_MIN, some
+ * produce zero, some throw an exception. We can dodge the problem by
+ * recognizing that division by -1 is the same as negation.
*/
- if (arg2 == -1 && arg1 < 0 && result <= 0)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("bigint out of range")));
+ if (arg2 == -1)
+ {
+ result = -arg1;
+ /* overflow check (needed for INT64_MIN) */
+ if (arg1 != 0 && SAMESIGN(result, arg1))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("bigint out of range")));
+ PG_RETURN_INT64(result);
+ }
+
+ /* No overflow is possible */
+
+ result = arg1 / arg2;
+
PG_RETURN_INT64(result);
}
@@ -658,6 +668,14 @@
PG_RETURN_NULL();
}
+ /*
+ * Some machines throw a floating-point exception for INT64_MIN % -1,
+ * which is a bit silly since the correct answer is perfectly
+ * well-defined, namely zero.
+ */
+ if (arg2 == -1)
+ PG_RETURN_INT64(0);
+
/* No overflow is possible */
PG_RETURN_INT64(arg1 % arg2);
@@ -841,18 +859,27 @@
PG_RETURN_NULL();
}
- result = arg1 / arg2;
-
/*
- * Overflow check. The only possible overflow case is for arg1 =
- * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which
- * can't be represented on a two's-complement machine. Most machines
- * produce INT64_MIN but it seems some produce zero.
+ * INT64_MIN / -1 is problematic, since the result can't be represented on
+ * a two's-complement machine. Some machines produce INT64_MIN, some
+ * produce zero, some throw an exception. We can dodge the problem by
+ * recognizing that division by -1 is the same as negation.
*/
- if (arg2 == -1 && arg1 < 0 && result <= 0)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("bigint out of range")));
+ if (arg2 == -1)
+ {
+ result = -arg1;
+ /* overflow check (needed for INT64_MIN) */
+ if (arg1 != 0 && SAMESIGN(result, arg1))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("bigint out of range")));
+ PG_RETURN_INT64(result);
+ }
+
+ /* No overflow is possible */
+
+ result = arg1 / arg2;
+
PG_RETURN_INT64(result);
}
@@ -1029,18 +1056,27 @@
PG_RETURN_NULL();
}
- result = arg1 / arg2;
-
/*
- * Overflow check. The only possible overflow case is for arg1 =
- * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which
- * can't be represented on a two's-complement machine. Most machines
- * produce INT64_MIN but it seems some produce zero.
+ * INT64_MIN / -1 is problematic, since the result can't be represented on
+ * a two's-complement machine. Some machines produce INT64_MIN, some
+ * produce zero, some throw an exception. We can dodge the problem by
+ * recognizing that division by -1 is the same as negation.
*/
- if (arg2 == -1 && arg1 < 0 && result <= 0)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("bigint out of range")));
+ if (arg2 == -1)
+ {
+ result = -arg1;
+ /* overflow check (needed for INT64_MIN) */
+ if (arg1 != 0 && SAMESIGN(result, arg1))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("bigint out of range")));
+ PG_RETURN_INT64(result);
+ }
+
+ /* No overflow is possible */
+
+ result = arg1 / arg2;
+
PG_RETURN_INT64(result);
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/adt/rowtypes.c
^
|
@@ -31,6 +31,7 @@
Oid column_type;
Oid typiofunc;
Oid typioparam;
+ bool typisvarlena;
FmgrInfo proc;
} ColumnIOData;
@@ -357,6 +358,7 @@
{
ColumnIOData *column_info = &my_extra->columns[i];
Oid column_type = tupdesc->attrs[i]->atttypid;
+ Datum attr;
char *value;
char *tmp;
bool nq;
@@ -380,17 +382,24 @@
*/
if (column_info->column_type != column_type)
{
- bool typIsVarlena;
-
getTypeOutputInfo(column_type,
&column_info->typiofunc,
- &typIsVarlena);
+ &column_info->typisvarlena);
fmgr_info_cxt(column_info->typiofunc, &column_info->proc,
fcinfo->flinfo->fn_mcxt);
column_info->column_type = column_type;
}
- value = OutputFunctionCall(&column_info->proc, values[i]);
+ /*
+ * If we have a toasted datum, forcibly detoast it here to avoid
+ * memory leakage inside the type's output routine.
+ */
+ if (column_info->typisvarlena)
+ attr = PointerGetDatum(PG_DETOAST_DATUM(values[i]));
+ else
+ attr = values[i];
+
+ value = OutputFunctionCall(&column_info->proc, attr);
/* Detect whether we need double quotes for this value */
nq = (value[0] == '\0'); /* force quotes for empty string */
@@ -409,17 +418,23 @@
/* And emit the string */
if (nq)
- appendStringInfoChar(&buf, '"');
+ appendStringInfoCharMacro(&buf, '"');
for (tmp = value; *tmp; tmp++)
{
char ch = *tmp;
if (ch == '"' || ch == '\\')
- appendStringInfoChar(&buf, ch);
- appendStringInfoChar(&buf, ch);
+ appendStringInfoCharMacro(&buf, ch);
+ appendStringInfoCharMacro(&buf, ch);
}
if (nq)
- appendStringInfoChar(&buf, '"');
+ appendStringInfoCharMacro(&buf, '"');
+
+ pfree(value);
+
+ /* Clean up detoasted copy, if any */
+ if (DatumGetPointer(attr) != DatumGetPointer(values[i]))
+ pfree(DatumGetPointer(attr));
}
appendStringInfoChar(&buf, ')');
@@ -707,6 +722,7 @@
{
ColumnIOData *column_info = &my_extra->columns[i];
Oid column_type = tupdesc->attrs[i]->atttypid;
+ Datum attr;
bytea *outputbytes;
/* Ignore dropped columns in datatype */
@@ -727,23 +743,35 @@
*/
if (column_info->column_type != column_type)
{
- bool typIsVarlena;
-
getTypeBinaryOutputInfo(column_type,
&column_info->typiofunc,
- &typIsVarlena);
+ &column_info->typisvarlena);
fmgr_info_cxt(column_info->typiofunc, &column_info->proc,
fcinfo->flinfo->fn_mcxt);
column_info->column_type = column_type;
}
- outputbytes = SendFunctionCall(&column_info->proc, values[i]);
+ /*
+ * If we have a toasted datum, forcibly detoast it here to avoid
+ * memory leakage inside the type's output routine.
+ */
+ if (column_info->typisvarlena)
+ attr = PointerGetDatum(PG_DETOAST_DATUM(values[i]));
+ else
+ attr = values[i];
+
+ outputbytes = SendFunctionCall(&column_info->proc, attr);
/* We assume the result will not have been toasted */
pq_sendint(&buf, VARSIZE(outputbytes) - VARHDRSZ, 4);
pq_sendbytes(&buf, VARDATA(outputbytes),
VARSIZE(outputbytes) - VARHDRSZ);
+
pfree(outputbytes);
+
+ /* Clean up detoasted copy, if any */
+ if (DatumGetPointer(attr) != DatumGetPointer(values[i]))
+ pfree(DatumGetPointer(attr));
}
pfree(values);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/adt/ruleutils.c
^
|
@@ -3018,8 +3018,8 @@
List *strippedexprs;
/*
- * If it's an INSERT ... SELECT or VALUES (...), (...), ... there will be
- * a single RTE for the SELECT or VALUES.
+ * If it's an INSERT ... SELECT or multi-row VALUES, there will be a
+ * single RTE for the SELECT or VALUES. Plain VALUES has neither.
*/
foreach(l, query->rtable)
{
@@ -3053,7 +3053,7 @@
context->indentLevel += PRETTYINDENT_STD;
appendStringInfoChar(buf, ' ');
}
- appendStringInfo(buf, "INSERT INTO %s (",
+ appendStringInfo(buf, "INSERT INTO %s ",
generate_relation_name(rte->relid, NIL));
/*
@@ -3070,6 +3070,8 @@
values_cell = NULL;
strippedexprs = NIL;
sep = "";
+ if (query->targetList)
+ appendStringInfoChar(buf, '(');
foreach(l, query->targetList)
{
TargetEntry *tle = (TargetEntry *) lfirst(l);
@@ -3106,7 +3108,8 @@
context, true));
}
}
- appendStringInfo(buf, ") ");
+ if (query->targetList)
+ appendStringInfo(buf, ") ");
if (select_rte)
{
@@ -3121,7 +3124,7 @@
/* Add the multi-VALUES expression lists */
get_values_def(values_rte->values_lists, context);
}
- else
+ else if (strippedexprs)
{
/* A WITH clause is possible here */
get_with_clause(query, context);
@@ -3131,6 +3134,11 @@
get_rule_expr((Node *) strippedexprs, context, false);
appendStringInfoChar(buf, ')');
}
+ else
+ {
+ /* No expressions, so it must be DEFAULT VALUES */
+ appendStringInfo(buf, "DEFAULT VALUES");
+ }
/* Add RETURNING if present */
if (query->returningList)
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/cache/relcache.c
^
|
@@ -1704,9 +1704,20 @@
RelationGetRelid(relation));
index = (Form_pg_index) GETSTRUCT(tuple);
+ /*
+ * Basically, let's just copy all the bool fields. There are one or
+ * two of these that can't actually change in the current code, but
+ * it's not worth it to track exactly which ones they are. None of
+ * the array fields are allowed to change, though.
+ */
+ relation->rd_index->indisunique = index->indisunique;
+ relation->rd_index->indisprimary = index->indisprimary;
+ relation->rd_index->indisclustered = index->indisclustered;
relation->rd_index->indisvalid = index->indisvalid;
relation->rd_index->indcheckxmin = index->indcheckxmin;
relation->rd_index->indisready = index->indisready;
+
+ /* Copy xmin too, as that is needed to make sense of indcheckxmin */
HeapTupleHeaderSetXmin(relation->rd_indextuple->t_data,
HeapTupleHeaderGetXmin(tuple->t_data));
@@ -3085,7 +3096,8 @@
result = insert_ordered_oid(result, index->indexrelid);
/* Check to see if it is a unique, non-partial btree index on OID */
- if (index->indnatts == 1 &&
+ if (IndexIsValid(index) &&
+ index->indnatts == 1 &&
index->indisunique &&
index->indkey.values[0] == ObjectIdAttributeNumber &&
index->indclass.values[0] == OID_BTREE_OPS_OID &&
@@ -3392,6 +3404,11 @@
/*
* For each index, add referenced attributes to indexattrs.
+ *
+ * Note: we consider all indexes returned by RelationGetIndexList, even if
+ * they are not indisready or indisvalid. This is important because an
+ * index for which CREATE INDEX CONCURRENTLY has just started must be
+ * included in HOT-safety decisions (see README.HOT).
*/
indexattrs = NULL;
foreach(l, indexoidlist)
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/hash/dynahash.c
^
|
@@ -818,6 +818,27 @@
#endif
/*
+ * If inserting, check if it is time to split a bucket.
+ *
+ * NOTE: failure to expand table is not a fatal error, it just means we
+ * have to run at higher fill factor than we wanted. However, if we're
+ * using the palloc allocator then it will throw error anyway on
+ * out-of-memory, so we must do this before modifying the table.
+ */
+ if (action == HASH_ENTER || action == HASH_ENTER_NULL)
+ {
+ /*
+ * Can't split if running in partitioned mode, nor if frozen, nor if
+ * table is the subject of any active hash_seq_search scans. Strange
+ * order of these tests is to try to check cheaper conditions first.
+ */
+ if (!IS_PARTITIONED(hctl) && !hashp->frozen &&
+ hctl->nentries / (long) (hctl->max_bucket + 1) >= hctl->ffactor &&
+ !has_seq_scans(hashp))
+ (void) expand_table(hashp);
+ }
+
+ /*
* Do the initial lookup
*/
bucket = calc_bucket(hctl, hashvalue);
@@ -937,24 +958,12 @@
currBucket->hashvalue = hashvalue;
hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize);
- /* caller is expected to fill the data field on return */
-
/*
- * Check if it is time to split a bucket. Can't split if running
- * in partitioned mode, nor if table is the subject of any active
- * hash_seq_search scans. Strange order of these tests is to try
- * to check cheaper conditions first.
+ * Caller is expected to fill the data field on return. DO NOT
+ * insert any code that could possibly throw error here, as doing
+ * so would leave the table entry incomplete and hence corrupt the
+ * caller's data structure.
*/
- if (!IS_PARTITIONED(hctl) &&
- hctl->nentries / (long) (hctl->max_bucket + 1) >= hctl->ffactor &&
- !has_seq_scans(hashp))
- {
- /*
- * NOTE: failure to expand table is not a fatal error, it just
- * means we have to run at higher fill factor than we wanted.
- */
- expand_table(hashp);
- }
return (void *) ELEMENTKEY(currBucket);
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/backend/utils/misc/guc.c
^
|
@@ -1239,7 +1239,7 @@
GUC_UNIT_S
},
&XLogArchiveTimeout,
- 0, 0, INT_MAX, NULL, NULL
+ 0, 0, INT_MAX / 2, NULL, NULL
},
{
{"post_auth_delay", PGC_BACKEND, DEVELOPER_OPTIONS,
@@ -1248,7 +1248,7 @@
GUC_NOT_IN_SAMPLE | GUC_UNIT_S
},
&PostAuthDelay,
- 0, 0, INT_MAX, NULL, NULL
+ 0, 0, INT_MAX / 1000000, NULL, NULL
},
{
{"default_statistics_target", PGC_USERSET, QUERY_TUNING_OTHER,
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/initdb/initdb.c
^
|
@@ -368,6 +368,7 @@
int maxlength = 0,
linelen = 0;
int nlines = 0;
+ int n;
char **result;
char *buffer;
int c;
@@ -408,16 +409,13 @@
/* now reprocess the file and store the lines */
rewind(infile);
- nlines = 0;
- while (fgets(buffer, maxlength + 1, infile) != NULL)
- {
- result[nlines] = xstrdup(buffer);
- nlines++;
- }
+ n = 0;
+ while (fgets(buffer, maxlength + 1, infile) != NULL && n < nlines)
+ result[n++] = xstrdup(buffer);
fclose(infile);
free(buffer);
- result[nlines] = NULL;
+ result[n] = NULL;
return result;
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/pg_ctl/pg_ctl.c
^
|
@@ -20,6 +20,7 @@
#include "postgres_fe.h"
#include "libpq-fe.h"
+#include <fcntl.h>
#include <locale.h>
#include <signal.h>
#include <sys/types.h>
@@ -294,50 +295,84 @@
static char **
readfile(const char *path)
{
- FILE *infile;
- int maxlength = 1,
- linelen = 0;
- int nlines = 0;
+ int fd;
+ int nlines;
char **result;
char *buffer;
- int c;
+ char *linebegin;
+ int i;
+ int n;
+ int len;
+ struct stat statbuf;
- if ((infile = fopen(path, "r")) == NULL)
+ /*
+ * Slurp the file into memory.
+ *
+ * The file can change concurrently, so we read the whole file into memory
+ * with a single read() call. That's not guaranteed to get an atomic
+ * snapshot, but in practice, for a small file, it's close enough for the
+ * current use.
+ */
+ fd = open(path, O_RDONLY | PG_BINARY, 0);
+ if (fd < 0)
+ return NULL;
+ if (fstat(fd, &statbuf) < 0)
+ {
+ close(fd);
return NULL;
+ }
+ if (statbuf.st_size == 0)
+ {
+ /* empty file */
+ close(fd);
+ result = (char **) pg_malloc(sizeof(char *));
+ *result = NULL;
+ return result;
+ }
+ buffer = pg_malloc(statbuf.st_size + 1);
- /* pass over the file twice - the first time to size the result */
+ len = read(fd, buffer, statbuf.st_size + 1);
+ close(fd);
+ if (len != statbuf.st_size)
+ {
+ /* oops, the file size changed between fstat and read */
+ free(buffer);
+ return NULL;
+ }
- while ((c = fgetc(infile)) != EOF)
+ /*
+ * Count newlines. We expect there to be a newline after each full line,
+ * including one at the end of file. If there isn't a newline at the end,
+ * any characters after the last newline will be ignored.
+ */
+ nlines = 0;
+ for (i = 0; i < len; i++)
{
- linelen++;
- if (c == '\n')
- {
+ if (buffer[i] == '\n')
nlines++;
- if (linelen > maxlength)
- maxlength = linelen;
- linelen = 0;
- }
}
- /* handle last line without a terminating newline (yuck) */
- if (linelen)
- nlines++;
- if (linelen > maxlength)
- maxlength = linelen;
-
- /* set up the result and the line buffer */
+ /* set up the result buffer */
result = (char **) pg_malloc((nlines + 1) * sizeof(char *));
- buffer = (char *) pg_malloc(maxlength + 1);
- /* now reprocess the file and store the lines */
- rewind(infile);
- nlines = 0;
- while (fgets(buffer, maxlength + 1, infile) != NULL)
- result[nlines++] = xstrdup(buffer);
+ /* now split the buffer into lines */
+ linebegin = buffer;
+ n = 0;
+ for (i = 0; i < len; i++)
+ {
+ if (buffer[i] == '\n')
+ {
+ int slen = &buffer[i] - linebegin + 1;
+ char *linebuf = pg_malloc(slen + 1);
+ memcpy(linebuf, linebegin, slen);
+ linebuf[slen] = '\0';
+ result[n++] = linebuf;
+ linebegin = &buffer[i + 1];
+ }
+ }
+ result[n] = NULL;
- fclose(infile);
free(buffer);
- result[nlines] = NULL;
return result;
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/pg_dump/pg_backup_tar.c
^
|
@@ -645,56 +645,46 @@
{
lclContext *ctx = (lclContext *) AH->formatData;
lclTocEntry *tctx = (lclTocEntry *) te->formatData;
- char *tmpCopy;
- size_t i,
- pos1,
- pos2;
+ int pos1;
if (!tctx->filename)
return;
+ /*
+ * If we're writing the special restore.sql script, emit a suitable
+ * command to include each table's data from the corresponding file.
+ *
+ * In the COPY case this is a bit klugy because the regular COPY command
+ * was already printed before we get control.
+ */
if (ctx->isSpecialScript)
{
- if (!te->copyStmt)
- return;
-
- /* Abort the default COPY */
- ahprintf(AH, "\\.\n");
-
- /* Get a copy of the COPY statement and clean it up */
- tmpCopy = strdup(te->copyStmt);
- for (i = 0; i < strlen(tmpCopy); i++)
- tmpCopy[i] = pg_tolower((unsigned char) tmpCopy[i]);
-
- /*
- * This is very nasty; we don't know if the archive used WITH OIDS, so
- * we search the string for it in a paranoid sort of way.
- */
- if (strncmp(tmpCopy, "copy ", 5) != 0)
- die_horribly(AH, modulename,
- "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n", tmpCopy);
-
- pos1 = 5;
- for (pos1 = 5; pos1 < strlen(tmpCopy); pos1++)
- if (tmpCopy[pos1] != ' ')
- break;
-
- if (tmpCopy[pos1] == '"')
- pos1 += 2;
-
- pos1 += strlen(te->tag);
-
- for (pos2 = pos1; pos2 < strlen(tmpCopy); pos2++)
- if (strncmp(&tmpCopy[pos2], "from stdin", 10) == 0)
- break;
+ if (te->copyStmt)
+ {
+ /* Abort the COPY FROM stdin */
+ ahprintf(AH, "\\.\n");
- if (pos2 >= strlen(tmpCopy))
- die_horribly(AH, modulename,
- "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n",
- tmpCopy, (unsigned long) pos1);
+ /*
+ * The COPY statement should look like "COPY ... FROM stdin;\n",
+ * see dumpTableData().
+ */
+ pos1 = (int) strlen(te->copyStmt) - 13;
+ if (pos1 < 6 || strncmp(te->copyStmt, "COPY ", 5) != 0 ||
+ strcmp(te->copyStmt + pos1, " FROM stdin;\n") != 0)
+ die_horribly(AH, modulename,
+ "unexpected COPY statement syntax: \"%s\"\n",
+ te->copyStmt);
- ahwrite(tmpCopy, 1, pos2, AH); /* 'copy "table" [with oids]' */
- ahprintf(AH, " from '$$PATH$$/%s' %s", tctx->filename, &tmpCopy[pos2 + 10]);
+ /* Emit all but the FROM part ... */
+ ahwrite(te->copyStmt, 1, pos1, AH);
+ /* ... and insert modified FROM */
+ ahprintf(AH, " FROM '$$PATH$$/%s';\n\n", tctx->filename);
+ }
+ else
+ {
+ /* --inserts mode, no worries, just include the data file */
+ ahprintf(AH, "\\i $$PATH$$/%s\n\n", tctx->filename);
+ }
return;
}
@@ -840,18 +830,14 @@
* if the files have been extracted.
*/
th = tarOpen(AH, "restore.sql", 'w');
- tarPrintf(AH, th, "create temporary table pgdump_restore_path(p text);\n");
+
tarPrintf(AH, th, "--\n"
"-- NOTE:\n"
"--\n"
"-- File paths need to be edited. Search for $$PATH$$ and\n"
"-- replace it with the path to the directory containing\n"
"-- the extracted data files.\n"
- "--\n"
- "-- Edit the following to match the path where the\n"
- "-- tar archive has been extracted.\n"
"--\n");
- tarPrintf(AH, th, "insert into pgdump_restore_path values('/tmp');\n\n");
AH->CustomOutPtr = _scriptOut;
@@ -873,8 +859,12 @@
tarClose(AH, th);
- /* Add a block of NULLs since it's de-rigeur. */
- for (i = 0; i < 512; i++)
+ ctx->isSpecialScript = 0;
+
+ /*
+ * EOF marker for tar files is two blocks of NULLs.
+ */
+ for (i = 0; i < 512 * 2; i++)
{
if (fputc(0, ctx->tarFH) == EOF)
die_horribly(AH, modulename,
@@ -1025,11 +1015,16 @@
int i,
sum;
- sum = 0;
+ /*
+ * Per POSIX, the checksum is the simple sum of all bytes in the header,
+ * treating the bytes as unsigned, and treating the checksum field (at
+ * offset 148) as though it contained 8 spaces.
+ */
+ sum = 8 * ' '; /* presumed value for checksum field */
for (i = 0; i < 512; i++)
if (i < 148 || i >= 156)
sum += 0xFF & header[i];
- return sum + 256; /* Assume 8 blanks in checksum field */
+ return sum;
}
bool
@@ -1043,11 +1038,15 @@
if (sum != chk)
return false;
- /* POSIX format */
- if (strncmp(&header[257], "ustar00", 7) == 0)
+ /* POSIX tar format */
+ if (memcmp(&header[257], "ustar\0", 6) == 0 &&
+ memcmp(&header[263], "00", 2) == 0)
+ return true;
+ /* GNU tar format */
+ if (memcmp(&header[257], "ustar \0", 8) == 0)
return true;
- /* older format */
- if (strncmp(&header[257], "ustar ", 7) == 0)
+ /* not-quite-POSIX format written by pre-9.3 pg_dump */
+ if (memcmp(&header[257], "ustar00\0", 8) == 0)
return true;
return false;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/pg_dump/po/de.po
^
|
@@ -1,5 +1,5 @@
# German message translation file for pg_dump and friends
-# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2010.
+# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2012.
#
# Use these quotes: »%s«
#
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2011-09-16 09:19+0000\n"
-"PO-Revision-Date: 2012-05-03 22:10+0300\n"
+"POT-Creation-Date: 2012-12-01 23:14+0000\n"
+"PO-Revision-Date: 2012-12-02 00:57-0500\n"
"Last-Translator: Peter Eisentraut <peter_e@gmx.net>\n"
"Language-Team: German <peter_e@gmx.net>\n"
"Language: de\n"
@@ -17,80 +17,80 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: pg_dump.c:431 pg_restore.c:268 pg_dumpall.c:289
+#: pg_dump.c:427 pg_restore.c:268 pg_dumpall.c:289
#, c-format
msgid "%s: invalid -X option -- %s\n"
msgstr "%s: ungültige »-X«-Option -- %s\n"
-#: pg_dump.c:433 pg_dump.c:455 pg_dump.c:464 pg_restore.c:270 pg_restore.c:293
+#: pg_dump.c:429 pg_dump.c:451 pg_dump.c:460 pg_restore.c:270 pg_restore.c:293
#: pg_restore.c:310 pg_dumpall.c:291 pg_dumpall.c:311 pg_dumpall.c:336
#: pg_dumpall.c:346 pg_dumpall.c:355 pg_dumpall.c:364 pg_dumpall.c:400
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n"
-#: pg_dump.c:462 pg_dumpall.c:334
+#: pg_dump.c:458 pg_dumpall.c:334
#, c-format
msgid "%s: too many command-line arguments (first is \"%s\")\n"
msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n"
-#: pg_dump.c:479
+#: pg_dump.c:475
msgid "options -s/--schema-only and -a/--data-only cannot be used together\n"
msgstr ""
"Optionen -s/--schema-only und -a/--data-only können nicht zusammen verwendet "
"werden\n"
-#: pg_dump.c:485
+#: pg_dump.c:481
msgid "options -c/--clean and -a/--data-only cannot be used together\n"
msgstr ""
"Optionen -c/--clean und -a/--data-only können nicht zusammen verwendet "
"werden\n"
-#: pg_dump.c:491
+#: pg_dump.c:487
msgid ""
"options --inserts/--column-inserts and -o/--oids cannot be used together\n"
msgstr ""
"Optionen --inserts/--column-inserts und -o/--oids können nicht zusammen "
"verwendet werden\n"
-#: pg_dump.c:492
+#: pg_dump.c:488
msgid "(The INSERT command cannot set OIDs.)\n"
msgstr "(Die INSERT-Anweisung kann OIDs nicht setzen.)\n"
-#: pg_dump.c:522
+#: pg_dump.c:518
#, c-format
msgid "invalid output format \"%s\" specified\n"
msgstr "ungültiges Ausgabeformat »%s« angegeben\n"
-#: pg_dump.c:528
+#: pg_dump.c:524
#, c-format
msgid "could not open output file \"%s\" for writing\n"
msgstr "konnte Ausgabedatei »%s« nicht zum Schreiben öffnen\n"
-#: pg_dump.c:538 pg_backup_db.c:38
+#: pg_dump.c:534 pg_backup_db.c:38
#, c-format
msgid "could not parse version string \"%s\"\n"
msgstr "konnte Versionszeichenkette »%s« nicht entziffern\n"
-#: pg_dump.c:561
+#: pg_dump.c:557
#, c-format
msgid "invalid client encoding \"%s\" specified\n"
msgstr "ungültige Clientkodierung »%s« angegeben\n"
-#: pg_dump.c:636
+#: pg_dump.c:632
#, c-format
msgid "last built-in OID is %u\n"
msgstr "letzte eingebaute OID ist %u\n"
-#: pg_dump.c:646
+#: pg_dump.c:642
msgid "No matching schemas were found\n"
msgstr "Keine passenden Schemas gefunden\n"
-#: pg_dump.c:661
+#: pg_dump.c:657
msgid "No matching tables were found\n"
msgstr "Keine passenden Tabellen gefunden\n"
-#: pg_dump.c:790
+#: pg_dump.c:786
#, c-format
msgid ""
"%s dumps a database as a text file or to other formats.\n"
@@ -99,17 +99,17 @@
"%s gibt eine Datenbank als Textdatei oder in anderen Formaten aus.\n"
"\n"
-#: pg_dump.c:791 pg_restore.c:399 pg_dumpall.c:526
+#: pg_dump.c:787 pg_restore.c:399 pg_dumpall.c:526
#, c-format
msgid "Usage:\n"
msgstr "Aufruf:\n"
-#: pg_dump.c:792
+#: pg_dump.c:788
#, c-format
msgid " %s [OPTION]... [DBNAME]\n"
msgstr " %s [OPTION]... [DBNAME]\n"
-#: pg_dump.c:794 pg_restore.c:402 pg_dumpall.c:529
+#: pg_dump.c:790 pg_restore.c:402 pg_dumpall.c:529
#, c-format
msgid ""
"\n"
@@ -118,49 +118,49 @@
"\n"
"Allgemeine Optionen:\n"
-#: pg_dump.c:795 pg_dumpall.c:530
+#: pg_dump.c:791 pg_dumpall.c:530
#, c-format
msgid " -f, --file=FILENAME output file name\n"
msgstr " -f, --file=DATEINAME Name der Ausgabedatei\n"
-#: pg_dump.c:796
+#: pg_dump.c:792
#, c-format
msgid ""
" -F, --format=c|t|p output file format (custom, tar, plain text)\n"
msgstr ""
" -F, --format=c|t|p Ausgabeformat (custom, tar, plain text)\n"
-#: pg_dump.c:797
+#: pg_dump.c:793
#, c-format
msgid " -v, --verbose verbose mode\n"
msgstr " -v, --verbose »Verbose«-Modus\n"
-#: pg_dump.c:798
+#: pg_dump.c:794
#, c-format
msgid ""
" -Z, --compress=0-9 compression level for compressed formats\n"
msgstr ""
" -Z, --compress=0-9 Komprimierungsniveau für komprimierte Formate\n"
-#: pg_dump.c:799 pg_dumpall.c:531
+#: pg_dump.c:795 pg_dumpall.c:531
#, c-format
msgid ""
" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n"
msgstr ""
" --lock-wait-timeout=ZEIT Abbruch nach ZEIT Warten auf Tabellensperre\n"
-#: pg_dump.c:800 pg_dumpall.c:532
+#: pg_dump.c:796 pg_dumpall.c:532
#, c-format
msgid " --help show this help, then exit\n"
msgstr " --help diese Hilfe anzeigen, dann beenden\n"
-#: pg_dump.c:801 pg_dumpall.c:533
+#: pg_dump.c:797 pg_dumpall.c:533
#, c-format
msgid " --version output version information, then exit\n"
msgstr ""
" --version Versionsinformationen anzeigen, dann beenden\n"
-#: pg_dump.c:803 pg_dumpall.c:534
+#: pg_dump.c:799 pg_dumpall.c:534
#, c-format
msgid ""
"\n"
@@ -169,17 +169,17 @@
"\n"
"Optionen die den Inhalt der Ausgabe kontrollieren:\n"
-#: pg_dump.c:804 pg_dumpall.c:535
+#: pg_dump.c:800 pg_dumpall.c:535
#, c-format
msgid " -a, --data-only dump only the data, not the schema\n"
msgstr " -a, --data-only nur Daten ausgeben, nicht das Schema\n"
-#: pg_dump.c:805
+#: pg_dump.c:801
#, c-format
msgid " -b, --blobs include large objects in dump\n"
msgstr " -b, --blobs Large Objects mit ausgeben\n"
-#: pg_dump.c:806
+#: pg_dump.c:802
#, c-format
msgid ""
" -c, --clean clean (drop) database objects before "
@@ -188,7 +188,7 @@
" -c, --clean Datenbankobjekte vor der Wiedererstellung "
"löschen\n"
-#: pg_dump.c:807
+#: pg_dump.c:803
#, c-format
msgid ""
" -C, --create include commands to create database in dump\n"
@@ -196,30 +196,30 @@
" -C, --create Anweisungen zum Erstellen der Datenbank in\n"
" Ausgabe einfügen\n"
-#: pg_dump.c:808
+#: pg_dump.c:804
#, c-format
msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n"
msgstr " -E, --encoding=KODIERUNG Daten mit Kodierung KODIERUNG ausgeben\n"
-#: pg_dump.c:809
+#: pg_dump.c:805
#, c-format
msgid " -n, --schema=SCHEMA dump the named schema(s) only\n"
msgstr ""
" -n, --schema=SCHEMA nur das/die angegebene(n) Schema(s) ausgeben\n"
-#: pg_dump.c:810
+#: pg_dump.c:806
#, c-format
msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n"
msgstr ""
" -N, --exclude-schema=SCHEMA das/die angegebene(n) Schema(s) NICHT "
"ausgeben\n"
-#: pg_dump.c:811 pg_dumpall.c:538
+#: pg_dump.c:807 pg_dumpall.c:538
#, c-format
msgid " -o, --oids include OIDs in dump\n"
msgstr " -o, --oids OIDs mit ausgeben\n"
-#: pg_dump.c:812
+#: pg_dump.c:808
#, c-format
msgid ""
" -O, --no-owner skip restoration of object ownership in\n"
@@ -229,44 +229,44 @@
"im\n"
" »plain text«-Format auslassen\n"
-#: pg_dump.c:814 pg_dumpall.c:541
+#: pg_dump.c:810 pg_dumpall.c:541
#, c-format
msgid " -s, --schema-only dump only the schema, no data\n"
msgstr ""
" -s, --schema-only nur das Schema, nicht die Daten, ausgeben\n"
-#: pg_dump.c:815
+#: pg_dump.c:811
#, c-format
msgid ""
" -S, --superuser=NAME superuser user name to use in plain-text "
"format\n"
msgstr " -S, --superuser=NAME Superusername für »plain text«-Format\n"
-#: pg_dump.c:816
+#: pg_dump.c:812
#, c-format
msgid " -t, --table=TABLE dump the named table(s) only\n"
msgstr ""
" -t, --table=TABELLE nur die angegebene(n) Tabelle(n) ausgeben\n"
-#: pg_dump.c:817
+#: pg_dump.c:813
#, c-format
msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n"
msgstr ""
" -T, --exclude-table=TABELLE die angegebene(n) Tabelle(n) NICHT ausgeben\n"
-#: pg_dump.c:818 pg_dumpall.c:544
+#: pg_dump.c:814 pg_dumpall.c:544
#, c-format
msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n"
msgstr ""
" -x, --no-privileges Zugriffsrechte (grant/revoke) nicht ausgeben\n"
-#: pg_dump.c:819 pg_dumpall.c:545
+#: pg_dump.c:815 pg_dumpall.c:545
#, c-format
msgid " --binary-upgrade for use by upgrade utilities only\n"
msgstr ""
" --binary-upgrade wird nur von Upgrade-Programmen verwendet\n"
-#: pg_dump.c:820 pg_dumpall.c:546
+#: pg_dump.c:816 pg_dumpall.c:546
#, c-format
msgid ""
" --inserts dump data as INSERT commands, rather than "
@@ -275,7 +275,7 @@
" --inserts Daten als INSERT-Anweisungen statt COPY "
"ausgeben\n"
-#: pg_dump.c:821 pg_dumpall.c:547
+#: pg_dump.c:817 pg_dumpall.c:547
#, c-format
msgid ""
" --column-inserts dump data as INSERT commands with column "
@@ -284,7 +284,7 @@
" --column-inserts Daten als INSERT-Anweisungen mit Spaltennamen\n"
" ausgeben\n"
-#: pg_dump.c:822 pg_dumpall.c:548
+#: pg_dump.c:818 pg_dumpall.c:548
#, c-format
msgid ""
" --disable-dollar-quoting disable dollar quoting, use SQL standard "
@@ -294,7 +294,7 @@
"Quoting\n"
" verwenden\n"
-#: pg_dump.c:823 pg_dumpall.c:549
+#: pg_dump.c:819 pg_dumpall.c:549
#, c-format
msgid ""
" --disable-triggers disable triggers during data-only restore\n"
@@ -302,17 +302,17 @@
" --disable-triggers Trigger abschalten während der Datenwieder-\n"
" herstellung\n"
-#: pg_dump.c:824 pg_dumpall.c:550
+#: pg_dump.c:820 pg_dumpall.c:550
#, c-format
msgid " --no-tablespaces do not dump tablespace assignments\n"
msgstr " --no-tablespaces Tablespace-Zuordnungen nicht ausgeben\n"
-#: pg_dump.c:825 pg_dumpall.c:551
+#: pg_dump.c:821 pg_dumpall.c:551
#, c-format
msgid " --role=ROLENAME do SET ROLE before dump\n"
msgstr " --role=ROLLENNAME vor der Ausgabe SET ROLE ausführen\n"
-#: pg_dump.c:826 pg_dumpall.c:552
+#: pg_dump.c:822 pg_dumpall.c:552
#, c-format
msgid ""
" --use-set-session-authorization\n"
@@ -326,7 +326,7 @@
"zu\n"
" setzen\n"
-#: pg_dump.c:830 pg_restore.c:441 pg_dumpall.c:556
+#: pg_dump.c:826 pg_restore.c:441 pg_dumpall.c:556
#, c-format
msgid ""
"\n"
@@ -335,29 +335,29 @@
"\n"
"Verbindungsoptionen:\n"
-#: pg_dump.c:831 pg_restore.c:442 pg_dumpall.c:557
+#: pg_dump.c:827 pg_restore.c:442 pg_dumpall.c:557
#, c-format
msgid " -h, --host=HOSTNAME database server host or socket directory\n"
msgstr ""
" -h, --host=HOSTNAME Name des Datenbankservers oder Socket-"
"Verzeichnis\n"
-#: pg_dump.c:832 pg_restore.c:443 pg_dumpall.c:559
+#: pg_dump.c:828 pg_restore.c:443 pg_dumpall.c:559
#, c-format
msgid " -p, --port=PORT database server port number\n"
msgstr " -p, --port=PORT Portnummer des Datenbankservers\n"
-#: pg_dump.c:833 pg_restore.c:444 pg_dumpall.c:560
+#: pg_dump.c:829 pg_restore.c:444 pg_dumpall.c:560
#, c-format
msgid " -U, --username=NAME connect as specified database user\n"
msgstr " -U, --username=NAME Datenbankbenutzername\n"
-#: pg_dump.c:834 pg_restore.c:445 pg_dumpall.c:561
+#: pg_dump.c:830 pg_restore.c:445 pg_dumpall.c:561
#, c-format
msgid " -w, --no-password never prompt for password\n"
msgstr " -w, --no-password niemals nach Passwort fragen\n"
-#: pg_dump.c:835 pg_restore.c:446 pg_dumpall.c:562
+#: pg_dump.c:831 pg_restore.c:446 pg_dumpall.c:562
#, c-format
msgid ""
" -W, --password force password prompt (should happen "
@@ -366,7 +366,7 @@
" -W, --password nach Passwort fragen (sollte automatisch "
"geschehen)\n"
-#: pg_dump.c:837
+#: pg_dump.c:833
#, c-format
msgid ""
"\n"
@@ -379,146 +379,148 @@
"PGDATABASE verwendet.\n"
"\n"
-#: pg_dump.c:839 pg_restore.c:449 pg_dumpall.c:566
+#: pg_dump.c:835 pg_restore.c:449 pg_dumpall.c:566
#, c-format
msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
msgstr "Berichten Sie Fehler an <pgsql-bugs@postgresql.org>.\n"
-#: pg_dump.c:847 pg_backup_archiver.c:1408
+#: pg_dump.c:843 pg_backup_archiver.c:1409
msgid "*** aborted because of error\n"
msgstr "*** abgebrochen wegen Fehler\n"
-#: pg_dump.c:868
+#: pg_dump.c:864
msgid "server version must be at least 7.3 to use schema selection switches\n"
msgstr ""
"Serverversion muss mindestens 7.3 sein um Schemas auswählen zu können\n"
-#: pg_dump.c:1089
+#: pg_dump.c:1099
#, c-format
msgid "dumping contents of table %s\n"
msgstr "gebe Inhalt der Tabelle %s aus\n"
-#: pg_dump.c:1192
+#: pg_dump.c:1202
#, c-format
msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n"
-msgstr "Ausgabe des Inhalts der Tabelle »%s« fehlgeschlagen: PQgetCopyData() fehlgeschlagen.\n"
+msgstr ""
+"Ausgabe des Inhalts der Tabelle »%s« fehlgeschlagen: PQgetCopyData() "
+"fehlgeschlagen.\n"
-#: pg_dump.c:1193 pg_dump.c:11609
+#: pg_dump.c:1203 pg_dump.c:11692
#, c-format
msgid "Error message from server: %s"
msgstr "Fehlermeldung vom Server: %s"
-#: pg_dump.c:1194 pg_dump.c:11610
+#: pg_dump.c:1204 pg_dump.c:11693
#, c-format
msgid "The command was: %s\n"
msgstr "Die Anweisung war: %s\n"
-#: pg_dump.c:1600
+#: pg_dump.c:1618
msgid "saving database definition\n"
msgstr "sichere Datenbankdefinition\n"
-#: pg_dump.c:1682
+#: pg_dump.c:1700
#, c-format
msgid "missing pg_database entry for database \"%s\"\n"
msgstr "fehlender pg_database-Eintrag für Datenbank »%s«\n"
-#: pg_dump.c:1689
+#: pg_dump.c:1707
#, c-format
msgid ""
"query returned more than one (%d) pg_database entry for database \"%s\"\n"
msgstr ""
"Anfrage ergab mehr als einen (%d) pg_database-Eintrag für Datenbank »%s«\n"
-#: pg_dump.c:1790
+#: pg_dump.c:1808
msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n"
msgstr "dumpDatabase(): konnte pg_largeobject.relfrozenxid nicht finden\n"
-#: pg_dump.c:1867
+#: pg_dump.c:1885
#, c-format
msgid "saving encoding = %s\n"
msgstr "sichere Kodierung = %s\n"
-#: pg_dump.c:1894
+#: pg_dump.c:1912
#, c-format
msgid "saving standard_conforming_strings = %s\n"
msgstr "sichere standard_conforming_strings = %s\n"
-#: pg_dump.c:1956
+#: pg_dump.c:1974
msgid "saving large objects\n"
msgstr "sichere Large Objects\n"
-#: pg_dump.c:1992
+#: pg_dump.c:2010
#, c-format
msgid "dumpBlobs(): could not open large object: %s"
msgstr "dumpBlobs(): konnte Large Object nicht öffnen: %s"
-#: pg_dump.c:2005
+#: pg_dump.c:2023
#, c-format
msgid "dumpBlobs(): error reading large object: %s"
msgstr "dumpBlobs(): Fehler beim Lesen von Large Object: %s"
-#: pg_dump.c:2042
+#: pg_dump.c:2060
msgid "saving large object comments\n"
msgstr "sichere Kommentare für Large Objects\n"
-#: pg_dump.c:2212
+#: pg_dump.c:2229
#, c-format
msgid "WARNING: owner of schema \"%s\" appears to be invalid\n"
msgstr "WARNUNG: Eigentümer des Schemas »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:2247
+#: pg_dump.c:2273
#, c-format
msgid "schema with OID %u does not exist\n"
msgstr "Schema mit OID %u existiert nicht\n"
-#: pg_dump.c:2504
+#: pg_dump.c:2521
#, c-format
msgid "WARNING: owner of data type \"%s\" appears to be invalid\n"
msgstr "WARNUNG: Eigentümer des Datentypen »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:2608
+#: pg_dump.c:2625
#, c-format
msgid "WARNING: owner of operator \"%s\" appears to be invalid\n"
msgstr "WARNUNG: Eigentümer des Operatoren »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:2782
+#: pg_dump.c:2799
#, c-format
msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n"
msgstr "WARNUNG: Eigentümer der Operatorklasse »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:2869
+#: pg_dump.c:2886
#, c-format
msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n"
msgstr ""
"WARNUNG: Eigentümer der Operatorfamilie »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:2994
+#: pg_dump.c:3011
#, c-format
msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n"
msgstr ""
"WARNUNG: Eigentümer der Aggregatfunktion »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:3149
+#: pg_dump.c:3166
#, c-format
msgid "WARNING: owner of function \"%s\" appears to be invalid\n"
msgstr "WARNUNG: Eigentümer der Funktion »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:3555
+#: pg_dump.c:3572
#, c-format
msgid "WARNING: owner of table \"%s\" appears to be invalid\n"
msgstr "WARNUNG: Eigentümer der Tabelle »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:3695
+#: pg_dump.c:3717
#, c-format
msgid "reading indexes for table \"%s\"\n"
msgstr "lese Indexe von Tabelle »%s«\n"
-#: pg_dump.c:3965
+#: pg_dump.c:3987
#, c-format
msgid "reading foreign key constraints for table \"%s\"\n"
msgstr "lese Fremdschlüssel-Constraints von Tabelle »%s«\n"
-#: pg_dump.c:4193
+#: pg_dump.c:4215
#, c-format
msgid ""
"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not "
@@ -527,12 +529,12 @@
"Sanity-Check fehlgeschlagen, Elterntabelle %u von pg_rewrite-Eintrag OID %u "
"nicht gefunden\n"
-#: pg_dump.c:4276
+#: pg_dump.c:4298
#, c-format
msgid "reading triggers for table \"%s\"\n"
msgstr "lese Trigger von Tabelle »%s«\n"
-#: pg_dump.c:4401
+#: pg_dump.c:4423
#, c-format
msgid ""
"query produced null referenced table name for foreign key trigger \"%s\" on "
@@ -541,96 +543,96 @@
"Anfrage ergab NULL als Name der Tabelle auf die sich Fremdschlüssel-Trigger "
"»%s« von Tabelle »%s« bezieht (OID der Tabelle: %u)\n"
-#: pg_dump.c:4751
+#: pg_dump.c:4773
#, c-format
msgid "finding the columns and types of table \"%s\"\n"
msgstr "finde Spalten und Typen von Tabelle »%s«\n"
-#: pg_dump.c:4849
+#: pg_dump.c:4872
#, c-format
msgid "invalid column numbering in table \"%s\"\n"
msgstr "ungültige Spaltennummerierung in Tabelle »%s«\n"
-#: pg_dump.c:4884
+#: pg_dump.c:4905
#, c-format
msgid "finding default expressions of table \"%s\"\n"
msgstr "finde DEFAULT-Ausdrucke von Tabelle »%s«\n"
-#: pg_dump.c:4969
+#: pg_dump.c:4958
#, c-format
msgid "invalid adnum value %d for table \"%s\"\n"
msgstr "ungültiger adnum-Wert %d für Tabelle »%s«\n"
-#: pg_dump.c:4987
+#: pg_dump.c:5031
#, c-format
msgid "finding check constraints for table \"%s\"\n"
msgstr "finde Check-Constraints für Tabelle »%s«\n"
-#: pg_dump.c:5067
+#: pg_dump.c:5111
#, c-format
msgid "expected %d check constraint on table \"%s\" but found %d\n"
msgid_plural "expected %d check constraints on table \"%s\" but found %d\n"
msgstr[0] "%d Check-Constraint für Tabelle %s erwartet, aber %d gefunden\n"
msgstr[1] "%d Check-Constraints für Tabelle %s erwartet, aber %d gefunden\n"
-#: pg_dump.c:5071
+#: pg_dump.c:5115
msgid "(The system catalogs might be corrupted.)\n"
msgstr "(Die Systemkataloge sind wahrscheinlich verfälscht.)\n"
-#: pg_dump.c:6150
+#: pg_dump.c:6216
#, c-format
msgid "no label definitions found for enum ID %u\n"
msgstr "keine Label-Definitionen für Enum ID %u gefunden\n"
-#: pg_dump.c:6409 pg_dump.c:6608 pg_dump.c:7260 pg_dump.c:7798 pg_dump.c:8048
-#: pg_dump.c:8154 pg_dump.c:8539 pg_dump.c:8715 pg_dump.c:8912 pg_dump.c:9139
-#: pg_dump.c:9294 pg_dump.c:9481 pg_dump.c:11415
+#: pg_dump.c:6475 pg_dump.c:6674 pg_dump.c:7326 pg_dump.c:7864 pg_dump.c:8114
+#: pg_dump.c:8220 pg_dump.c:8605 pg_dump.c:8781 pg_dump.c:8978 pg_dump.c:9205
+#: pg_dump.c:9360 pg_dump.c:9547 pg_dump.c:11498
#, c-format
msgid "query returned %d row instead of one: %s\n"
msgid_plural "query returned %d rows instead of one: %s\n"
msgstr[0] "Anfrage ergab %d Zeile anstatt einer: %s\n"
msgstr[1] "Anfrage ergab %d Zeilen anstatt einer: %s\n"
-#: pg_dump.c:6730
+#: pg_dump.c:6796
#, c-format
msgid "query returned no rows: %s\n"
msgstr "Anfrage ergab keine Zeilen: %s\n"
-#: pg_dump.c:7028
+#: pg_dump.c:7094
msgid "WARNING: bogus value in proargmodes array\n"
msgstr "WARNUNG: unsinniger Wert in proargmodes-Array\n"
-#: pg_dump.c:7340
+#: pg_dump.c:7406
msgid "WARNING: could not parse proallargtypes array\n"
msgstr "WARNUNG: konnte proallargtypes-Array nicht interpretieren\n"
-#: pg_dump.c:7356
+#: pg_dump.c:7422
msgid "WARNING: could not parse proargmodes array\n"
msgstr "WARNUNG: konnte proargmodes-Array nicht interpretieren\n"
-#: pg_dump.c:7370
+#: pg_dump.c:7436
msgid "WARNING: could not parse proargnames array\n"
msgstr "WARNUNG: konnte proargnames-Array nicht interpretieren\n"
-#: pg_dump.c:7381
+#: pg_dump.c:7447
msgid "WARNING: could not parse proconfig array\n"
msgstr "WARNUNG: konnte proconfig-Array nicht interpretieren\n"
-#: pg_dump.c:7437
+#: pg_dump.c:7503
#, c-format
msgid "unrecognized provolatile value for function \"%s\"\n"
msgstr "ungültiger provolatile-Wert für Funktion »%s«\n"
-#: pg_dump.c:7640
+#: pg_dump.c:7706
msgid "WARNING: bogus value in pg_cast.castmethod field\n"
msgstr "WARNUNG: unsinniger Wert in Feld pg_cast.castmethod\n"
-#: pg_dump.c:8017
+#: pg_dump.c:8083
#, c-format
msgid "WARNING: could not find operator with OID %s\n"
msgstr "WARNUNG: konnte Operator mit OID %s nicht finden\n"
-#: pg_dump.c:8938
+#: pg_dump.c:9004
#, c-format
msgid ""
"WARNING: aggregate function %s could not be dumped correctly for this "
@@ -639,19 +641,19 @@
"WARNUNG: Aggregatfunktion %s konnte für diese Datenbankversion nicht korrekt "
"ausgegeben werden - ignoriert\n"
-#: pg_dump.c:9667
+#: pg_dump.c:9733
#, c-format
msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n"
msgstr ""
"konnte ACL-Zeichenkette (%s) für Objekt »%s« (%s) nicht interpretieren\n"
-#: pg_dump.c:9805
+#: pg_dump.c:9871
#, c-format
msgid "query to obtain definition of view \"%s\" returned no data\n"
msgstr ""
"Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte keine Daten\n"
-#: pg_dump.c:9808
+#: pg_dump.c:9874
#, c-format
msgid ""
"query to obtain definition of view \"%s\" returned more than one definition\n"
@@ -659,43 +661,43 @@
"Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte mehr als eine "
"Definition\n"
-#: pg_dump.c:9817
+#: pg_dump.c:9883
#, c-format
msgid "definition of view \"%s\" appears to be empty (length zero)\n"
msgstr "Definition der Sicht »%s« scheint leer zu sein (Länge null)\n"
-#: pg_dump.c:10257
+#: pg_dump.c:10340
#, c-format
msgid "invalid column number %d for table \"%s\"\n"
msgstr "ungültige Spaltennummer %d in Tabelle »%s«\n"
-#: pg_dump.c:10360
+#: pg_dump.c:10443
#, c-format
msgid "missing index for constraint \"%s\"\n"
msgstr "fehlender Index für Constraint »%s«\n"
-#: pg_dump.c:10529
+#: pg_dump.c:10612
#, c-format
msgid "unrecognized constraint type: %c\n"
msgstr "unbekannter Constraint-Typ: %c\n"
-#: pg_dump.c:10592
+#: pg_dump.c:10675
msgid "missing pg_database entry for this database\n"
msgstr "fehlender pg_database-Eintrag für diese Datenbank\n"
-#: pg_dump.c:10597
+#: pg_dump.c:10680
msgid "found more than one pg_database entry for this database\n"
msgstr "mehr als einen pg_database-Eintrag für diese Datenbank gefunden\n"
-#: pg_dump.c:10629
+#: pg_dump.c:10712
msgid "could not find entry for pg_indexes in pg_class\n"
msgstr "konnte Eintrag für pg_indexes in pg_class nicht finden\n"
-#: pg_dump.c:10634
+#: pg_dump.c:10717
msgid "found more than one entry for pg_indexes in pg_class\n"
msgstr "mehr als ein Eintrag für pg_indexes in pg_class gefunden\n"
-#: pg_dump.c:10705
+#: pg_dump.c:10788
#, c-format
msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n"
msgid_plural ""
@@ -703,18 +705,18 @@
msgstr[0] "Anfrage nach Daten der Sequenz %s ergab %d Zeile (erwartete 1)\n"
msgstr[1] "Anfrage nach Daten der Sequenz %s ergab %d Zeilen (erwartete 1)\n"
-#: pg_dump.c:10716
+#: pg_dump.c:10799
#, c-format
msgid "query to get data of sequence \"%s\" returned name \"%s\"\n"
msgstr "Anfrage nach Daten der Sequenz %s ergab Name »%s«\n"
-#: pg_dump.c:10993
+#: pg_dump.c:11076
#, c-format
msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n"
msgstr ""
"fehlerhafte Argumentzeichenkette (%s) für Trigger »%s« von Tabelle »%s«\n"
-#: pg_dump.c:11131
+#: pg_dump.c:11214
#, c-format
msgid ""
"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows "
@@ -723,146 +725,146 @@
"Anfrage nach Regel »%s« der Tabelle »%s« fehlgeschlagen: falsche Anzahl "
"Zeilen zurückgegeben\n"
-#: pg_dump.c:11226
+#: pg_dump.c:11309
msgid "reading dependency data\n"
msgstr "lese Abhängigkeitsdaten\n"
-#: pg_dump.c:11604
+#: pg_dump.c:11687
msgid "SQL command failed\n"
msgstr "SQL-Anweisung schlug fehl\n"
-#: common.c:113
+#: common.c:114
msgid "reading schemas\n"
msgstr "lese Schemas\n"
-#: common.c:123
+#: common.c:125
msgid "reading user-defined tables\n"
msgstr "lese benutzerdefinierte Tabellen\n"
-#: common.c:128
+#: common.c:133
msgid "reading user-defined functions\n"
msgstr "lese benutzerdefinierte Funktionen\n"
-#: common.c:134
+#: common.c:139
msgid "reading user-defined types\n"
msgstr "lese benutzerdefinierte Typen\n"
-#: common.c:140
+#: common.c:145
msgid "reading procedural languages\n"
msgstr "lese prozedurale Sprachen\n"
-#: common.c:144
+#: common.c:149
msgid "reading user-defined aggregate functions\n"
msgstr "lese benutzerdefinierte Aggregatfunktionen\n"
-#: common.c:148
+#: common.c:153
msgid "reading user-defined operators\n"
msgstr "lese benutzerdefinierte Operatoren\n"
-#: common.c:153
+#: common.c:158
msgid "reading user-defined operator classes\n"
msgstr "lese benutzerdefinierte Operatorklassen\n"
-#: common.c:157
+#: common.c:162
msgid "reading user-defined text search parsers\n"
msgstr "lese benutzerdefinierte Textsuche-Parser\n"
-#: common.c:161
+#: common.c:166
msgid "reading user-defined text search templates\n"
msgstr "lese benutzerdefinierte Textsuche-Templates\n"
-#: common.c:165
+#: common.c:170
msgid "reading user-defined text search dictionaries\n"
msgstr "lese benutzerdefinierte Textsuchewörterbücher\n"
-#: common.c:169
+#: common.c:174
msgid "reading user-defined text search configurations\n"
msgstr "lese benutzerdefinierte Textsuchekonfigurationen\n"
-#: common.c:173
+#: common.c:178
msgid "reading user-defined foreign-data wrappers\n"
msgstr "lese benutzerdefinierte Fremddaten-Wrapper\n"
-#: common.c:177
+#: common.c:182
msgid "reading user-defined foreign servers\n"
msgstr "lese benutzerdefinierte Fremdserver\n"
-#: common.c:181
+#: common.c:186
msgid "reading user-defined operator families\n"
msgstr "lese benutzerdefinierte Operatorfamilien\n"
-#: common.c:185
+#: common.c:190
msgid "reading user-defined conversions\n"
msgstr "lese benutzerdefinierte Konversionen\n"
-#: common.c:189
+#: common.c:194
msgid "reading table inheritance information\n"
msgstr "lese Tabellenvererbungsinformationen\n"
-#: common.c:193
+#: common.c:198
msgid "reading rewrite rules\n"
msgstr "lese Umschreiberegeln\n"
-#: common.c:197
+#: common.c:202
msgid "reading type casts\n"
msgstr "lese Typumwandlungen\n"
-#: common.c:202
+#: common.c:207
msgid "finding inheritance relationships\n"
msgstr "lese Vererbungsbeziehungen\n"
-#: common.c:206
+#: common.c:211
msgid "reading column info for interesting tables\n"
msgstr "lese Spalteninfo für interessante Tabellen\n"
-#: common.c:210
+#: common.c:215
msgid "flagging inherited columns in subtables\n"
msgstr "markiere vererbte Spalten in abgeleiteten Tabellen\n"
-#: common.c:214
+#: common.c:219
msgid "reading indexes\n"
msgstr "lese Indexe\n"
-#: common.c:218
+#: common.c:223
msgid "reading constraints\n"
msgstr "lese Constraints\n"
-#: common.c:222
+#: common.c:227
msgid "reading triggers\n"
msgstr "lese Trigger\n"
-#: common.c:802
+#: common.c:761
#, c-format
msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n"
msgstr ""
"Sanity-Check fehlgeschlagen, Eltern-OID %u von Tabelle »%s« (OID %u) nicht "
"gefunden\n"
-#: common.c:844
+#: common.c:803
#, c-format
msgid "could not parse numeric array \"%s\": too many numbers\n"
msgstr "konnte numerisches Array »%s« nicht parsen: zu viele Zahlen\n"
-#: common.c:859
+#: common.c:818
#, c-format
msgid "could not parse numeric array \"%s\": invalid character in number\n"
msgstr ""
"konnte numerisches Array »%s« nicht parsen: ungültiges Zeichen in Zahl\n"
-#: common.c:972
+#: common.c:931
msgid "cannot duplicate null pointer\n"
msgstr "kann NULL-Zeiger nicht duplizieren\n"
-#: common.c:975 common.c:986 common.c:997 common.c:1008
-#: pg_backup_archiver.c:735 pg_backup_archiver.c:1114
-#: pg_backup_archiver.c:1241 pg_backup_archiver.c:1712
-#: pg_backup_archiver.c:1869 pg_backup_archiver.c:1910
-#: pg_backup_archiver.c:3956 pg_backup_custom.c:144 pg_backup_custom.c:149
+#: common.c:934 common.c:945 common.c:956 common.c:967
+#: pg_backup_archiver.c:736 pg_backup_archiver.c:1115
+#: pg_backup_archiver.c:1242 pg_backup_archiver.c:1713
+#: pg_backup_archiver.c:1870 pg_backup_archiver.c:1911
+#: pg_backup_archiver.c:4010 pg_backup_custom.c:144 pg_backup_custom.c:149
#: pg_backup_custom.c:155 pg_backup_custom.c:170 pg_backup_custom.c:570
#: pg_backup_custom.c:1118 pg_backup_custom.c:1127 pg_backup_db.c:145
-#: pg_backup_db.c:179 pg_backup_db.c:223 pg_backup_db.c:248 pg_backup_db.c:353
+#: pg_backup_db.c:179 pg_backup_db.c:223 pg_backup_db.c:248 pg_backup_db.c:441
#: pg_backup_files.c:114 pg_backup_null.c:72 pg_backup_tar.c:171
-#: pg_backup_tar.c:1012
+#: pg_backup_tar.c:1002
msgid "out of memory\n"
msgstr "Speicher aufgebraucht\n"
@@ -870,33 +872,33 @@
msgid "archiver"
msgstr "Archivierer"
-#: pg_backup_archiver.c:188 pg_backup_archiver.c:1209
+#: pg_backup_archiver.c:189 pg_backup_archiver.c:1210
#, c-format
msgid "could not close output file: %s\n"
msgstr "konnte Ausgabedatei nicht schließen: %s\n"
-#: pg_backup_archiver.c:214
+#: pg_backup_archiver.c:215
msgid "-C and -c are incompatible options\n"
msgstr "-C und -c sind inkompatible Optionen\n"
-#: pg_backup_archiver.c:221
+#: pg_backup_archiver.c:222
msgid "-C and -1 are incompatible options\n"
msgstr "-C und -1 sind inkompatible Optionen\n"
-#: pg_backup_archiver.c:231
+#: pg_backup_archiver.c:232
msgid "parallel restore is not supported with this archive file format\n"
msgstr ""
"parallele Wiederherstellung wird von diesem Archivdateiformat nicht "
"unterstützt\n"
-#: pg_backup_archiver.c:235
+#: pg_backup_archiver.c:236
msgid ""
"parallel restore is not supported with archives made by pre-8.0 pg_dump\n"
msgstr ""
"parallele Wiederherstellung wird mit Archiven, die mit pg_dump vor 8.0 "
"erstellt worden sind, nicht unterstützt\n"
-#: pg_backup_archiver.c:254
+#: pg_backup_archiver.c:255
msgid ""
"cannot restore from compressed archive (compression not supported in this "
"installation)\n"
@@ -904,71 +906,71 @@
"kann komprimiertes Archiv nicht wiederherstellen (Komprimierung in dieser "
"Installation nicht unterstützt)\n"
-#: pg_backup_archiver.c:264
+#: pg_backup_archiver.c:265
msgid "connecting to database for restore\n"
msgstr "verbinde mit der Datenbank zur Wiederherstellung\n"
-#: pg_backup_archiver.c:266
+#: pg_backup_archiver.c:267
msgid "direct database connections are not supported in pre-1.3 archives\n"
msgstr ""
"direkte Datenbankverbindungen sind in Archiven vor Version 1.3 nicht "
"unterstützt\n"
-#: pg_backup_archiver.c:308
+#: pg_backup_archiver.c:309
msgid "implied data-only restore\n"
msgstr "implizit werden nur Daten wiederhergestellt\n"
-#: pg_backup_archiver.c:351
+#: pg_backup_archiver.c:352
#, c-format
msgid "dropping %s %s\n"
msgstr "entferne %s %s\n"
-#: pg_backup_archiver.c:402
+#: pg_backup_archiver.c:403
#, c-format
msgid "setting owner and privileges for %s %s\n"
msgstr "setze Eigentümer und Privilegien für %s %s\n"
-#: pg_backup_archiver.c:460 pg_backup_archiver.c:462
+#: pg_backup_archiver.c:461 pg_backup_archiver.c:463
#, c-format
msgid "warning from original dump file: %s\n"
msgstr "Warnung aus der ursprünglichen Ausgabedatei: %s\n"
-#: pg_backup_archiver.c:469
+#: pg_backup_archiver.c:470
#, c-format
msgid "creating %s %s\n"
msgstr "erstelle %s %s\n"
-#: pg_backup_archiver.c:513
+#: pg_backup_archiver.c:514
#, c-format
msgid "connecting to new database \"%s\"\n"
msgstr "verbinde mit neuer Datenbank »%s«\n"
-#: pg_backup_archiver.c:541
+#: pg_backup_archiver.c:542
#, c-format
msgid "restoring %s\n"
msgstr "Wiederherstellung von %s\n"
-#: pg_backup_archiver.c:555
+#: pg_backup_archiver.c:556
#, c-format
msgid "restoring data for table \"%s\"\n"
msgstr "Wiederherstellung der Daten von Tabelle »%s«\n"
-#: pg_backup_archiver.c:617
+#: pg_backup_archiver.c:618
#, c-format
msgid "executing %s %s\n"
msgstr "führe %s %s aus\n"
-#: pg_backup_archiver.c:650
+#: pg_backup_archiver.c:651
#, c-format
msgid "disabling triggers for %s\n"
msgstr "schalte Trigger für %s aus\n"
-#: pg_backup_archiver.c:676
+#: pg_backup_archiver.c:677
#, c-format
msgid "enabling triggers for %s\n"
msgstr "schalte Trigger für %s ein\n"
-#: pg_backup_archiver.c:706
+#: pg_backup_archiver.c:707
msgid ""
"internal error -- WriteData cannot be called outside the context of a "
"DataDumper routine\n"
@@ -976,202 +978,202 @@
"interner Fehler -- WriteData kann nicht außerhalb des Kontexts einer "
"DataDumper-Routine aufgerufen werden\n"
-#: pg_backup_archiver.c:859
+#: pg_backup_archiver.c:860
msgid "large-object output not supported in chosen format\n"
msgstr "Large-Object-Ausgabe im gewählten Format nicht unterstützt\n"
-#: pg_backup_archiver.c:913
+#: pg_backup_archiver.c:914
#, c-format
msgid "restored %d large object\n"
msgid_plural "restored %d large objects\n"
msgstr[0] "%d Large Object wiederhergestellt\n"
msgstr[1] "%d Large Objects wiederhergestellt\n"
-#: pg_backup_archiver.c:933
+#: pg_backup_archiver.c:934 pg_backup_tar.c:720
#, c-format
msgid "restoring large object with OID %u\n"
-msgstr "Wiederherstellung von Large Object mir OID %u\n"
+msgstr "Wiederherstellung von Large Object mit OID %u\n"
-#: pg_backup_archiver.c:939
+#: pg_backup_archiver.c:940
#, c-format
msgid "could not create large object %u\n"
msgstr "konnte Large Object %u nicht erstellen\n"
-#: pg_backup_archiver.c:944
+#: pg_backup_archiver.c:945
msgid "could not open large object\n"
msgstr "konnte Large Object nicht öffnen\n"
-#: pg_backup_archiver.c:995
+#: pg_backup_archiver.c:996
#, c-format
msgid "could not open TOC file \"%s\": %s\n"
msgstr "konnte Inhaltsverzeichnisdatei »%s« nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1036
+#: pg_backup_archiver.c:1037
#, c-format
msgid "WARNING: line ignored: %s\n"
msgstr "WARNUNG: Zeile ignoriert: %s\n"
-#: pg_backup_archiver.c:1043
+#: pg_backup_archiver.c:1044
#, c-format
msgid "could not find entry for ID %d\n"
msgstr "konnte Eintrag für ID %d nicht finden\n"
-#: pg_backup_archiver.c:1064 pg_backup_files.c:172 pg_backup_files.c:457
+#: pg_backup_archiver.c:1065 pg_backup_files.c:172 pg_backup_files.c:457
#, c-format
msgid "could not close TOC file: %s\n"
msgstr "konnte Inhaltsverzeichnisdatei nicht finden: %s\n"
-#: pg_backup_archiver.c:1188 pg_backup_custom.c:181 pg_backup_files.c:130
+#: pg_backup_archiver.c:1189 pg_backup_custom.c:181 pg_backup_files.c:130
#: pg_backup_files.c:262
#, c-format
msgid "could not open output file \"%s\": %s\n"
msgstr "konnte Ausgabedatei »%s« nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1191 pg_backup_custom.c:188 pg_backup_files.c:137
+#: pg_backup_archiver.c:1192 pg_backup_custom.c:188 pg_backup_files.c:137
#, c-format
msgid "could not open output file: %s\n"
msgstr "konnte Ausgabedatei nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1284
+#: pg_backup_archiver.c:1285
#, c-format
msgid "wrote %lu byte of large object data (result = %lu)\n"
msgid_plural "wrote %lu bytes of large object data (result = %lu)\n"
msgstr[0] "%lu Byte Large-Object-Daten geschrieben (Ergebnis = %lu)\n"
msgstr[1] "%lu Bytes Large-Object-Daten geschrieben (Ergebnis = %lu)\n"
-#: pg_backup_archiver.c:1290
+#: pg_backup_archiver.c:1291
#, c-format
msgid "could not write to large object (result: %lu, expected: %lu)\n"
msgstr "konnte Large Object nicht schreiben (Ergebis: %lu, erwartet: %lu)\n"
-#: pg_backup_archiver.c:1348 pg_backup_archiver.c:1371 pg_backup_custom.c:781
+#: pg_backup_archiver.c:1349 pg_backup_archiver.c:1372 pg_backup_custom.c:781
#: pg_backup_custom.c:1040 pg_backup_custom.c:1054 pg_backup_files.c:432
-#: pg_backup_tar.c:587 pg_backup_tar.c:1090 pg_backup_tar.c:1385
+#: pg_backup_tar.c:587 pg_backup_tar.c:1089 pg_backup_tar.c:1384
#, c-format
msgid "could not write to output file: %s\n"
msgstr "konnte nicht in Ausgabedatei schreiben: %s\n"
-#: pg_backup_archiver.c:1356
+#: pg_backup_archiver.c:1357
msgid "could not write to custom output routine\n"
msgstr "konnte nicht zur Custom-Ausgaberoutine schreiben\n"
-#: pg_backup_archiver.c:1454
+#: pg_backup_archiver.c:1455
msgid "Error while INITIALIZING:\n"
msgstr "Fehler in Phase INITIALIZING:\n"
-#: pg_backup_archiver.c:1459
+#: pg_backup_archiver.c:1460
msgid "Error while PROCESSING TOC:\n"
msgstr "Fehler in Phase PROCESSING TOC:\n"
-#: pg_backup_archiver.c:1464
+#: pg_backup_archiver.c:1465
msgid "Error while FINALIZING:\n"
msgstr "Fehler in Phase FINALIZING:\n"
-#: pg_backup_archiver.c:1469
+#: pg_backup_archiver.c:1470
#, c-format
msgid "Error from TOC entry %d; %u %u %s %s %s\n"
msgstr "Fehler in Inhaltsverzeichniseintrag %d; %u %u %s %s %s\n"
-#: pg_backup_archiver.c:1605
+#: pg_backup_archiver.c:1606
#, c-format
msgid "unexpected data offset flag %d\n"
msgstr "unerwartete Datenoffsetmarkierung %d\n"
-#: pg_backup_archiver.c:1618
+#: pg_backup_archiver.c:1619
msgid "file offset in dump file is too large\n"
msgstr "Dateioffset in Dumpdatei ist zu groß\n"
-#: pg_backup_archiver.c:1715 pg_backup_archiver.c:2974 pg_backup_custom.c:757
-#: pg_backup_files.c:419 pg_backup_tar.c:786
+#: pg_backup_archiver.c:1716 pg_backup_archiver.c:3028 pg_backup_custom.c:757
+#: pg_backup_files.c:419 pg_backup_tar.c:776
msgid "unexpected end of file\n"
msgstr "unerwartetes Dateiende\n"
-#: pg_backup_archiver.c:1732
+#: pg_backup_archiver.c:1733
msgid "attempting to ascertain archive format\n"
msgstr "versuche Archivformat zu ermitteln\n"
-#: pg_backup_archiver.c:1748 pg_backup_custom.c:200 pg_backup_custom.c:893
+#: pg_backup_archiver.c:1749 pg_backup_custom.c:200 pg_backup_custom.c:893
#: pg_backup_files.c:155 pg_backup_files.c:307
#, c-format
msgid "could not open input file \"%s\": %s\n"
msgstr "konnte Eingabedatei »%s« nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1755 pg_backup_custom.c:207 pg_backup_files.c:162
+#: pg_backup_archiver.c:1756 pg_backup_custom.c:207 pg_backup_files.c:162
#, c-format
msgid "could not open input file: %s\n"
msgstr "konnte Eingabedatei nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1764
+#: pg_backup_archiver.c:1765
#, c-format
msgid "could not read input file: %s\n"
msgstr "konnte Eingabedatei nicht lesen: %s\n"
-#: pg_backup_archiver.c:1766
+#: pg_backup_archiver.c:1767
#, c-format
msgid "input file is too short (read %lu, expected 5)\n"
msgstr "Eingabedatei ist zu kurz (gelesen: %lu, erwartet: 5)\n"
-#: pg_backup_archiver.c:1824
+#: pg_backup_archiver.c:1825
msgid "input file does not appear to be a valid archive (too short?)\n"
msgstr "Eingabedatei scheint kein gültiges Archiv zu sein (zu kurz?)\n"
-#: pg_backup_archiver.c:1827
+#: pg_backup_archiver.c:1828
msgid "input file does not appear to be a valid archive\n"
msgstr "Eingabedatei scheint kein gültiges Archiv zu sein\n"
-#: pg_backup_archiver.c:1847
+#: pg_backup_archiver.c:1848
#, c-format
msgid "could not close input file: %s\n"
msgstr "konnte Eingabedatei nicht schließen: %s\n"
-#: pg_backup_archiver.c:1864
+#: pg_backup_archiver.c:1865
#, c-format
msgid "allocating AH for %s, format %d\n"
msgstr "erstelle AH für %s, Format %d\n"
-#: pg_backup_archiver.c:1964
+#: pg_backup_archiver.c:1967
#, c-format
msgid "unrecognized file format \"%d\"\n"
msgstr "nicht erkanntes Dateiformat »%d«\n"
-#: pg_backup_archiver.c:2086
+#: pg_backup_archiver.c:2089
#, c-format
msgid "entry ID %d out of range -- perhaps a corrupt TOC\n"
msgstr ""
"ID %d des Eintrags außerhalb des gültigen Bereichs -- vielleicht ein "
"verfälschtes Inhaltsverzeichnis\n"
-#: pg_backup_archiver.c:2200
+#: pg_backup_archiver.c:2203
#, c-format
msgid "read TOC entry %d (ID %d) for %s %s\n"
msgstr "Inhaltsverzeichniseintrag %d (ID %d) von %s %s gelesen\n"
-#: pg_backup_archiver.c:2234
+#: pg_backup_archiver.c:2237
#, c-format
msgid "unrecognized encoding \"%s\"\n"
msgstr "nicht erkannte Kodierung »%s«\n"
-#: pg_backup_archiver.c:2239
+#: pg_backup_archiver.c:2242
#, c-format
msgid "invalid ENCODING item: %s\n"
msgstr "ungültiger ENCODING-Eintrag: %s\n"
-#: pg_backup_archiver.c:2257
+#: pg_backup_archiver.c:2260
#, c-format
msgid "invalid STDSTRINGS item: %s\n"
msgstr "ungültiger STDSTRINGS-Eintrag: %s\n"
-#: pg_backup_archiver.c:2425
+#: pg_backup_archiver.c:2428
#, c-format
msgid "could not set session user to \"%s\": %s"
msgstr "konnte Sitzungsbenutzer nicht auf »%s« setzen: %s"
-#: pg_backup_archiver.c:2756 pg_backup_archiver.c:2905
+#: pg_backup_archiver.c:2759 pg_backup_archiver.c:2938
#, c-format
msgid "WARNING: don't know how to set owner for object type %s\n"
msgstr "WARNUNG: kann Eigentümer für Objekttyp %s nicht setzen\n"
-#: pg_backup_archiver.c:2937
+#: pg_backup_archiver.c:2991
msgid ""
"WARNING: requested compression not available in this installation -- archive "
"will be uncompressed\n"
@@ -1179,21 +1181,21 @@
"WARNUNG: Komprimierung ist in dieser Installation nicht verfügbar -- Archiv "
"wird nicht komprimiert\n"
-#: pg_backup_archiver.c:2977
+#: pg_backup_archiver.c:3031
msgid "did not find magic string in file header\n"
msgstr "magische Zeichenkette im Dateikopf nicht gefunden\n"
-#: pg_backup_archiver.c:2990
+#: pg_backup_archiver.c:3044
#, c-format
msgid "unsupported version (%d.%d) in file header\n"
msgstr "nicht unterstützte Version (%d.%d) im Dateikopf\n"
-#: pg_backup_archiver.c:2995
+#: pg_backup_archiver.c:3049
#, c-format
msgid "sanity check on integer size (%lu) failed\n"
msgstr "Prüfung der Integer-Größe (%lu) fehlgeschlagen\n"
-#: pg_backup_archiver.c:2999
+#: pg_backup_archiver.c:3053
msgid ""
"WARNING: archive was made on a machine with larger integers, some operations "
"might fail\n"
@@ -1201,14 +1203,14 @@
"WARNUNG: Archiv wurde auf einer Maschine mit größeren Integers erstellt; "
"einige Operationen könnten fehlschlagen\n"
-#: pg_backup_archiver.c:3009
+#: pg_backup_archiver.c:3063
#, c-format
msgid "expected format (%d) differs from format found in file (%d)\n"
msgstr ""
"erwartetes Format (%d) ist nicht das gleiche wie das in der Datei gefundene "
"(%d)\n"
-#: pg_backup_archiver.c:3025
+#: pg_backup_archiver.c:3079
msgid ""
"WARNING: archive is compressed, but this installation does not support "
"compression -- no data will be available\n"
@@ -1216,90 +1218,90 @@
"WARNUNG: Archiv ist komprimiert, aber diese Installation unterstützt keine "
"Komprimierung -- keine Daten verfügbar\n"
-#: pg_backup_archiver.c:3043
+#: pg_backup_archiver.c:3097
msgid "WARNING: invalid creation date in header\n"
msgstr "WARNUNG: ungültiges Erstellungsdatum im Kopf\n"
-#: pg_backup_archiver.c:3140
+#: pg_backup_archiver.c:3194
msgid "entering restore_toc_entries_parallel\n"
msgstr "Eintritt in restore_toc_entries_parallel\n"
-#: pg_backup_archiver.c:3167
+#: pg_backup_archiver.c:3221
#, c-format
msgid "processing item %d %s %s\n"
msgstr "verarbeite Element %d %s %s\n"
-#: pg_backup_archiver.c:3204
+#: pg_backup_archiver.c:3258
msgid "entering main parallel loop\n"
msgstr "Eintritt in Hauptparallelschleife\n"
-#: pg_backup_archiver.c:3218
+#: pg_backup_archiver.c:3272
#, c-format
msgid "skipping item %d %s %s\n"
msgstr "Element %d %s %s wird übersprungen\n"
-#: pg_backup_archiver.c:3234
+#: pg_backup_archiver.c:3288
#, c-format
msgid "launching item %d %s %s\n"
msgstr "starte Element %d %s %s\n"
-#: pg_backup_archiver.c:3270
+#: pg_backup_archiver.c:3324
#, c-format
msgid "worker process crashed: status %d\n"
msgstr "Arbeitsprozess abgestürzt: Status %d\n"
-#: pg_backup_archiver.c:3275
+#: pg_backup_archiver.c:3329
msgid "finished main parallel loop\n"
msgstr "Hauptparallelschleife beendet\n"
-#: pg_backup_archiver.c:3295
+#: pg_backup_archiver.c:3349
#, c-format
msgid "processing missed item %d %s %s\n"
msgstr "verarbeite verpasstes Element %d %s %s\n"
-#: pg_backup_archiver.c:3322
+#: pg_backup_archiver.c:3376
msgid "parallel_restore should not return\n"
msgstr "parallel_restore sollte nicht zurückkehren\n"
-#: pg_backup_archiver.c:3328
+#: pg_backup_archiver.c:3382
#, c-format
msgid "could not create worker process: %s\n"
msgstr "konnte Arbeitsprozess nicht erzeugen: %s\n"
-#: pg_backup_archiver.c:3336
+#: pg_backup_archiver.c:3390
#, c-format
msgid "could not create worker thread: %s\n"
msgstr "konnte Arbeitsthread nicht erzeugen: %s\n"
-#: pg_backup_archiver.c:3542
+#: pg_backup_archiver.c:3596
msgid "no item ready\n"
msgstr "kein Element bereit\n"
-#: pg_backup_archiver.c:3636
+#: pg_backup_archiver.c:3690
msgid "could not find slot of finished worker\n"
msgstr "konnte Slot des beendeten Arbeitsprozesses nicht finden\n"
-#: pg_backup_archiver.c:3638
+#: pg_backup_archiver.c:3692
#, c-format
msgid "finished item %d %s %s\n"
msgstr "Element %d %s %s abgeschlossen\n"
-#: pg_backup_archiver.c:3651
+#: pg_backup_archiver.c:3705
#, c-format
msgid "worker process failed: exit code %d\n"
msgstr "Arbeitsprozess fehlgeschlagen: Code %d\n"
-#: pg_backup_archiver.c:3800
+#: pg_backup_archiver.c:3854
#, c-format
msgid "transferring dependency %d -> %d to %d\n"
msgstr "übertrage Abhängigkeit %d -> %d an %d\n"
-#: pg_backup_archiver.c:3873
+#: pg_backup_archiver.c:3927
#, c-format
msgid "reducing dependencies for %d\n"
msgstr "reduziere Abhängigkeiten für %d\n"
-#: pg_backup_archiver.c:3922
+#: pg_backup_archiver.c:3976
#, c-format
msgid "table \"%s\" could not be created, will not restore its data\n"
msgstr ""
@@ -1405,11 +1407,14 @@
#: pg_backup_custom.c:875
msgid "parallel restore from stdin is not supported\n"
-msgstr "parallele Wiederherstellung aus der Standardeingabe wird nicht unterstützt\n"
+msgstr ""
+"parallele Wiederherstellung aus der Standardeingabe wird nicht unterstützt\n"
#: pg_backup_custom.c:877
msgid "parallel restore from non-seekable file is not supported\n"
-msgstr "parallele Wiederherstellung aus einer Datei, die kein Suchen ermöglicht, wird nicht unterstützt\n"
+msgstr ""
+"parallele Wiederherstellung aus einer Datei, die kein Suchen ermöglicht, "
+"wird nicht unterstützt\n"
#: pg_backup_custom.c:882
#, c-format
@@ -1496,25 +1501,25 @@
msgid "%s"
msgstr "%s"
-#: pg_backup_db.c:337
+#: pg_backup_db.c:364 pg_backup_db.c:435 pg_backup_db.c:444
+msgid "could not execute query"
+msgstr "konnte Anfrage nicht ausführen"
+
+#: pg_backup_db.c:415
#, c-format
msgid "error returned by PQputCopyData: %s"
msgstr "Fehler in PQputCopyData: %s"
-#: pg_backup_db.c:347 pg_backup_db.c:356
-msgid "could not execute query"
-msgstr "konnte Anfrage nicht ausführen"
-
-#: pg_backup_db.c:375
+#: pg_backup_db.c:463
#, c-format
msgid "error returned by PQputCopyEnd: %s"
msgstr "Fehler in PQputCopyEnd: %s"
-#: pg_backup_db.c:392
+#: pg_backup_db.c:480
msgid "could not start database transaction"
msgstr "konnte Datenbanktransaktion nicht starten"
-#: pg_backup_db.c:398
+#: pg_backup_db.c:486
msgid "could not commit database transaction"
msgstr "konnte Datenbanktransaktion nicht beenden"
@@ -1560,7 +1565,7 @@
msgid "could not open large object TOC for output: %s\n"
msgstr "konnte Large-Object-Inhaltsverzeichnis nicht zur Ausgabe öffnen: %s\n"
-#: pg_backup_files.c:510 pg_backup_tar.c:936
+#: pg_backup_files.c:510 pg_backup_tar.c:926
#, c-format
msgid "invalid OID for large object (%u)\n"
msgstr "Large Object hat ungültige Oid (%u)\n"
@@ -1634,68 +1639,53 @@
#: pg_backup_tar.c:675
#, c-format
-msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
-msgstr ""
-"fehlerhafte COPY-Anweisung -- Zeichenkette »copy« in »%s« nicht gefunden\n"
+msgid "unexpected COPY statement syntax: \"%s\"\n"
+msgstr "unerwartete Syntax der COPY-Anweisung: »%s«\n"
-#: pg_backup_tar.c:693
-#, c-format
-msgid ""
-"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" "
-"starting at position %lu\n"
-msgstr ""
-"fehlerhafte COPY-Anweisung -- Zeichenkette »from stdin« in »%s« ab Position "
-"%lu nicht gefunden\n"
-
-#: pg_backup_tar.c:730
-#, c-format
-msgid "restoring large object OID %u\n"
-msgstr "Wiederherstellung von Large Object OID %u\n"
-
-#: pg_backup_tar.c:881
+#: pg_backup_tar.c:871
msgid "could not write null block at end of tar archive\n"
msgstr "konnte Nullblock am Ende des Tar-Archivs nicht schreiben\n"
-#: pg_backup_tar.c:1081
+#: pg_backup_tar.c:1080
msgid "archive member too large for tar format\n"
msgstr "Archivmitglied zu groß für Tar-Format\n"
-#: pg_backup_tar.c:1096
+#: pg_backup_tar.c:1095
#, c-format
msgid "could not close temporary file: %s\n"
msgstr "konnte temporäre Datei nicht schließen: %s\n"
-#: pg_backup_tar.c:1106
+#: pg_backup_tar.c:1105
#, c-format
msgid "actual file length (%s) does not match expected (%s)\n"
msgstr ""
"tatsächliche Dateilänge (%s) stimmt nicht mit erwarteter Länge (%s) überein\n"
-#: pg_backup_tar.c:1114
+#: pg_backup_tar.c:1113
msgid "could not output padding at end of tar member\n"
msgstr "konnte Tar-Mitglied am Ende nicht auffüllen\n"
-#: pg_backup_tar.c:1143
+#: pg_backup_tar.c:1142
#, c-format
msgid "moving from position %s to next member at file position %s\n"
msgstr "bewege Position von %s auf nächstes Mitglied bei Position %s\n"
-#: pg_backup_tar.c:1154
+#: pg_backup_tar.c:1153
#, c-format
msgid "now at file position %s\n"
msgstr "jetzt bei Dateiposition %s\n"
-#: pg_backup_tar.c:1163 pg_backup_tar.c:1194
+#: pg_backup_tar.c:1162 pg_backup_tar.c:1193
#, c-format
msgid "could not find header for file %s in tar archive\n"
msgstr "konnte Kopf für Datei %s im Tar-Archiv nicht finden\n"
-#: pg_backup_tar.c:1178
+#: pg_backup_tar.c:1177
#, c-format
msgid "skipping tar member %s\n"
msgstr "Tar-Mitglied %s übersprungen\n"
-#: pg_backup_tar.c:1182
+#: pg_backup_tar.c:1181
#, c-format
msgid ""
"dumping data out of order is not supported in this archive format: %s is "
@@ -1704,25 +1694,25 @@
"Ausgabe der Daten in anderer Reihenfolge wird in diesem Archivformat nicht "
"unterstützt: %s wird benötigt, aber es kommt vor %s in der Archivdatei.\n"
-#: pg_backup_tar.c:1229
+#: pg_backup_tar.c:1228
#, c-format
msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n"
msgstr ""
"tatsächliche Dateiposition stimmt nicht mit erwarteter überein (%s und %s)\n"
-#: pg_backup_tar.c:1244
+#: pg_backup_tar.c:1243
#, c-format
msgid "incomplete tar header found (%lu byte)\n"
msgid_plural "incomplete tar header found (%lu bytes)\n"
msgstr[0] "unvollständiger Tar-Dateikopf gefunden (%lu Byte)\n"
msgstr[1] "unvollständiger Tar-Dateikopf gefunden (%lu Bytes)\n"
-#: pg_backup_tar.c:1282
+#: pg_backup_tar.c:1281
#, c-format
msgid "TOC Entry %s at %s (length %lu, checksum %d)\n"
msgstr "Inhaltsverzeichniseintrag %s bei %s (Länge %lu, Prüfsumme %d)\n"
-#: pg_backup_tar.c:1292
+#: pg_backup_tar.c:1291
#, c-format
msgid ""
"corrupt tar header found in %s (expected %d, computed %d) file position %s\n"
@@ -2056,7 +2046,9 @@
msgid ""
"%s extracts a PostgreSQL database cluster into an SQL script file.\n"
"\n"
-msgstr "%s gibt einen PostgreSQL-Datenbankcluster in eine SQL-Skriptdatei aus.\n\n"
+msgstr ""
+"%s gibt einen PostgreSQL-Datenbankcluster in eine SQL-Skriptdatei aus.\n"
+"\n"
#: pg_dumpall.c:527
#, c-format
@@ -2222,27 +2214,27 @@
msgid "could not read symbolic link \"%s\""
msgstr "konnte symbolische Verknüpfung »%s« nicht lesen"
-#: ../../port/exec.c:586
+#: ../../port/exec.c:595
#, c-format
msgid "child process exited with exit code %d"
msgstr "Kindprozess hat mit Code %d beendet"
-#: ../../port/exec.c:590
+#: ../../port/exec.c:599
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "Kindprozess wurde durch Ausnahme 0x%X beendet"
-#: ../../port/exec.c:599
+#: ../../port/exec.c:608
#, c-format
msgid "child process was terminated by signal %s"
msgstr "Kindprozess wurde von Signal %s beendet"
-#: ../../port/exec.c:602
+#: ../../port/exec.c:611
#, c-format
msgid "child process was terminated by signal %d"
msgstr "Kindprozess wurde von Signal %d beendet"
-#: ../../port/exec.c:606
+#: ../../port/exec.c:615
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "Kindprozess hat mit unbekanntem Status %d beendet"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/pg_dump/po/fr.po
^
|
@@ -9,8 +9,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2011-09-05 19:18+0000\n"
-"PO-Revision-Date: 2011-09-05 23:04+0100\n"
+"POT-Creation-Date: 2012-12-02 13:44+0000\n"
+"PO-Revision-Date: 2012-12-02 15:36+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: PostgreSQLfr <pgsql-fr-generale@postgresql.org>\n"
"Language: \n"
@@ -19,16 +19,16 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: pg_dump.c:431
+#: pg_dump.c:427
#: pg_restore.c:268
#: pg_dumpall.c:289
#, c-format
msgid "%s: invalid -X option -- %s\n"
msgstr "%s : option -X invalide -- %s\n"
-#: pg_dump.c:433
-#: pg_dump.c:455
-#: pg_dump.c:464
+#: pg_dump.c:429
+#: pg_dump.c:451
+#: pg_dump.c:460
#: pg_restore.c:270
#: pg_restore.c:293
#: pg_restore.c:310
@@ -43,69 +43,69 @@
msgid "Try \"%s --help\" for more information.\n"
msgstr "Essayer « %s --help » pour plus d'informations.\n"
-#: pg_dump.c:462
+#: pg_dump.c:458
#: pg_dumpall.c:334
#, c-format
msgid "%s: too many command-line arguments (first is \"%s\")\n"
msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n"
-#: pg_dump.c:479
+#: pg_dump.c:475
msgid "options -s/--schema-only and -a/--data-only cannot be used together\n"
msgstr ""
"les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas être\n"
"utilisées conjointement\n"
-#: pg_dump.c:485
+#: pg_dump.c:481
msgid "options -c/--clean and -a/--data-only cannot be used together\n"
msgstr ""
"les options « -c/--clean » et « -a/--data-only » ne peuvent pas être\n"
"utilisées conjointement\n"
-#: pg_dump.c:491
+#: pg_dump.c:487
msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n"
msgstr ""
"les options « --inserts/--column-inserts » et « -o/--oids » ne\n"
"peuvent pas être utilisées conjointement\n"
-#: pg_dump.c:492
+#: pg_dump.c:488
msgid "(The INSERT command cannot set OIDs.)\n"
msgstr "(La commande INSERT ne peut pas positionner les OID.)\n"
-#: pg_dump.c:522
+#: pg_dump.c:518
#, c-format
msgid "invalid output format \"%s\" specified\n"
msgstr "format de sortie « %s » invalide\n"
-#: pg_dump.c:528
+#: pg_dump.c:524
#, c-format
msgid "could not open output file \"%s\" for writing\n"
msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » en écriture\n"
-#: pg_dump.c:538
+#: pg_dump.c:534
#: pg_backup_db.c:38
#, c-format
msgid "could not parse version string \"%s\"\n"
msgstr "n'a pas pu analyser la chaîne de version « %s »\n"
-#: pg_dump.c:561
+#: pg_dump.c:557
#, c-format
msgid "invalid client encoding \"%s\" specified\n"
msgstr "encodage client indiqué (« %s ») invalide\n"
-#: pg_dump.c:636
+#: pg_dump.c:632
#, c-format
msgid "last built-in OID is %u\n"
msgstr "le dernier OID interne est %u\n"
-#: pg_dump.c:646
+#: pg_dump.c:642
msgid "No matching schemas were found\n"
msgstr "Aucun schéma correspondant n'a été trouvé\n"
-#: pg_dump.c:661
+#: pg_dump.c:657
msgid "No matching tables were found\n"
msgstr "Aucune table correspondante n'a été trouvée\n"
-#: pg_dump.c:790
+#: pg_dump.c:786
#, c-format
msgid ""
"%s dumps a database as a text file or to other formats.\n"
@@ -115,19 +115,19 @@
"formats.\n"
"\n"
-#: pg_dump.c:791
+#: pg_dump.c:787
#: pg_restore.c:399
#: pg_dumpall.c:526
#, c-format
msgid "Usage:\n"
msgstr "Usage :\n"
-#: pg_dump.c:792
+#: pg_dump.c:788
#, c-format
msgid " %s [OPTION]... [DBNAME]\n"
msgstr " %s [OPTION]... [NOMBASE]\n"
-#: pg_dump.c:794
+#: pg_dump.c:790
#: pg_restore.c:402
#: pg_dumpall.c:529
#, c-format
@@ -138,32 +138,32 @@
"\n"
"Options générales :\n"
-#: pg_dump.c:795
+#: pg_dump.c:791
#: pg_dumpall.c:530
#, c-format
msgid " -f, --file=FILENAME output file name\n"
msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n"
-#: pg_dump.c:796
+#: pg_dump.c:792
#, c-format
msgid " -F, --format=c|t|p output file format (custom, tar, plain text)\n"
msgstr ""
" -F, --format=c|t|p format du fichier de sortie (personnalisé,\n"
" tar, texte)\n"
-#: pg_dump.c:797
+#: pg_dump.c:793
#, c-format
msgid " -v, --verbose verbose mode\n"
msgstr " -v, --verbose mode verbeux\n"
-#: pg_dump.c:798
+#: pg_dump.c:794
#, c-format
msgid " -Z, --compress=0-9 compression level for compressed formats\n"
msgstr ""
" -Z, --compress=0-9 niveau de compression pour les formats\n"
" compressés\n"
-#: pg_dump.c:799
+#: pg_dump.c:795
#: pg_dumpall.c:531
#, c-format
msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n"
@@ -171,19 +171,19 @@
" --lock-wait-timeout=DÉLAI échec après l'attente du DÉLAI pour un verrou\n"
" de table\n"
-#: pg_dump.c:800
+#: pg_dump.c:796
#: pg_dumpall.c:532
#, c-format
msgid " --help show this help, then exit\n"
msgstr " --help affiche cette aide puis quitte\n"
-#: pg_dump.c:801
+#: pg_dump.c:797
#: pg_dumpall.c:533
#, c-format
msgid " --version output version information, then exit\n"
msgstr " --version affiche la version puis quitte\n"
-#: pg_dump.c:803
+#: pg_dump.c:799
#: pg_dumpall.c:534
#, c-format
msgid ""
@@ -193,7 +193,7 @@
"\n"
"Options contrôlant le contenu en sortie :\n"
-#: pg_dump.c:804
+#: pg_dump.c:800
#: pg_dumpall.c:535
#, c-format
msgid " -a, --data-only dump only the data, not the schema\n"
@@ -201,51 +201,51 @@
" -a, --data-only sauvegarde uniquement les données, pas le\n"
" schéma\n"
-#: pg_dump.c:805
+#: pg_dump.c:801
#, c-format
msgid " -b, --blobs include large objects in dump\n"
msgstr ""
" -b, --blobs inclut les « Large Objects » dans la\n"
" sauvegarde\n"
-#: pg_dump.c:806
+#: pg_dump.c:802
#, c-format
msgid " -c, --clean clean (drop) database objects before recreating\n"
msgstr ""
" -c, --clean nettoie/supprime les objets des bases de données\n"
" avant de les créer\n"
-#: pg_dump.c:807
+#: pg_dump.c:803
#, c-format
msgid " -C, --create include commands to create database in dump\n"
msgstr ""
" -C, --create inclut les commandes de création de la base\n"
" dans la sauvegarde\n"
-#: pg_dump.c:808
+#: pg_dump.c:804
#, c-format
msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n"
msgstr ""
" -E, --encoding=ENCODAGE sauvegarde les données dans l'encodage\n"
" ENCODAGE\n"
-#: pg_dump.c:809
+#: pg_dump.c:805
#, c-format
msgid " -n, --schema=SCHEMA dump the named schema(s) only\n"
msgstr " -n, --schema=SCHÉMA sauvegarde uniquement le schéma indiqué\n"
-#: pg_dump.c:810
+#: pg_dump.c:806
#, c-format
msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n"
msgstr " -N, --exclude-schema=SCHÉMA ne sauvegarde pas le schéma indiqué\n"
-#: pg_dump.c:811
+#: pg_dump.c:807
#: pg_dumpall.c:538
#, c-format
msgid " -o, --oids include OIDs in dump\n"
msgstr " -o, --oids inclut les OID dans la sauvegarde\n"
-#: pg_dump.c:812
+#: pg_dump.c:808
#, c-format
msgid ""
" -O, --no-owner skip restoration of object ownership in\n"
@@ -254,7 +254,7 @@
" -O, --no-owner ne sauvegarde pas les propriétaires des\n"
" objets lors de l'utilisation du format texte\n"
-#: pg_dump.c:814
+#: pg_dump.c:810
#: pg_dumpall.c:541
#, c-format
msgid " -s, --schema-only dump only the schema, no data\n"
@@ -262,30 +262,30 @@
" -s, --schema-only sauvegarde uniquement la structure, pas les\n"
" données\n"
-#: pg_dump.c:815
+#: pg_dump.c:811
#, c-format
msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n"
msgstr ""
" -S, --superuser=NOM indique le nom du super-utilisateur à utiliser\n"
" avec le format texte\n"
-#: pg_dump.c:816
+#: pg_dump.c:812
#, c-format
msgid " -t, --table=TABLE dump the named table(s) only\n"
msgstr " -t, --table=TABLE sauvegarde uniquement la table indiquée\n"
-#: pg_dump.c:817
+#: pg_dump.c:813
#, c-format
msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n"
msgstr " -T, --exclude-table=TABLE ne sauvegarde pas la table indiquée\n"
-#: pg_dump.c:818
+#: pg_dump.c:814
#: pg_dumpall.c:544
#, c-format
msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n"
msgstr " -x, --no-privileges ne sauvegarde pas les droits sur les objets\n"
-#: pg_dump.c:819
+#: pg_dump.c:815
#: pg_dumpall.c:545
#, c-format
msgid " --binary-upgrade for use by upgrade utilities only\n"
@@ -293,7 +293,7 @@
" --binary-upgrade à n'utiliser que par les outils de mise à\n"
" jour seulement\n"
-#: pg_dump.c:820
+#: pg_dump.c:816
#: pg_dumpall.c:546
#, c-format
msgid " --inserts dump data as INSERT commands, rather than COPY\n"
@@ -301,7 +301,7 @@
" -d, --inserts sauvegarde les données avec des instructions\n"
" INSERT plutôt que COPY\n"
-#: pg_dump.c:821
+#: pg_dump.c:817
#: pg_dumpall.c:547
#, c-format
msgid " --column-inserts dump data as INSERT commands with column names\n"
@@ -309,7 +309,7 @@
" -D, --column-inserts sauvegarde les données avec des commandes\n"
" INSERT précisant les noms des colonnes\n"
-#: pg_dump.c:822
+#: pg_dump.c:818
#: pg_dumpall.c:548
#, c-format
msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n"
@@ -318,7 +318,7 @@
" dollar dans le but de respecter le standard\n"
" SQL en matière de guillemets\n"
-#: pg_dump.c:823
+#: pg_dump.c:819
#: pg_dumpall.c:549
#, c-format
msgid " --disable-triggers disable triggers during data-only restore\n"
@@ -326,19 +326,19 @@
" --disable-triggers désactive les triggers en mode de\n"
" restauration des données seulement\n"
-#: pg_dump.c:824
+#: pg_dump.c:820
#: pg_dumpall.c:550
#, c-format
msgid " --no-tablespaces do not dump tablespace assignments\n"
msgstr " --no-tablespaces ne sauvegarde pas les affectations de tablespaces\n"
-#: pg_dump.c:825
+#: pg_dump.c:821
#: pg_dumpall.c:551
#, c-format
msgid " --role=ROLENAME do SET ROLE before dump\n"
msgstr " --role=NOMROLE exécute SET ROLE avant la sauvegarde\n"
-#: pg_dump.c:826
+#: pg_dump.c:822
#: pg_dumpall.c:552
#, c-format
msgid ""
@@ -351,7 +351,7 @@
" au lieu des commandes ALTER OWNER pour les\n"
" modifier les propriétaires\n"
-#: pg_dump.c:830
+#: pg_dump.c:826
#: pg_restore.c:441
#: pg_dumpall.c:556
#, c-format
@@ -362,7 +362,7 @@
"\n"
"Options de connexion :\n"
-#: pg_dump.c:831
+#: pg_dump.c:827
#: pg_restore.c:442
#: pg_dumpall.c:557
#, c-format
@@ -371,7 +371,7 @@
" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n"
" répertoire des sockets\n"
-#: pg_dump.c:832
+#: pg_dump.c:828
#: pg_restore.c:443
#: pg_dumpall.c:559
#, c-format
@@ -380,21 +380,21 @@
" -p, --port=PORT numéro de port du serveur de bases de\n"
" données\n"
-#: pg_dump.c:833
+#: pg_dump.c:829
#: pg_restore.c:444
#: pg_dumpall.c:560
#, c-format
msgid " -U, --username=NAME connect as specified database user\n"
msgstr " -U, --username=NOM se connecter avec cet utilisateur\n"
-#: pg_dump.c:834
+#: pg_dump.c:830
#: pg_restore.c:445
#: pg_dumpall.c:561
#, c-format
msgid " -w, --no-password never prompt for password\n"
msgstr " -w, --no-password ne demande jamais le mot de passe\n"
-#: pg_dump.c:835
+#: pg_dump.c:831
#: pg_restore.c:446
#: pg_dumpall.c:562
#, c-format
@@ -403,7 +403,7 @@
" -W, --password force la demande du mot de passe (par\n"
" défaut)\n"
-#: pg_dump.c:837
+#: pg_dump.c:833
#, c-format
msgid ""
"\n"
@@ -416,202 +416,202 @@
"d'environnement PGDATABASE est alors utilisée.\n"
"\n"
-#: pg_dump.c:839
+#: pg_dump.c:835
#: pg_restore.c:449
#: pg_dumpall.c:566
#, c-format
msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
msgstr "Rapporter les bogues à <pgsql-bugs@postgresql.org>.\n"
-#: pg_dump.c:847
-#: pg_backup_archiver.c:1408
+#: pg_dump.c:843
+#: pg_backup_archiver.c:1409
msgid "*** aborted because of error\n"
msgstr "*** interrompu du fait d'erreurs\n"
-#: pg_dump.c:868
+#: pg_dump.c:864
msgid "server version must be at least 7.3 to use schema selection switches\n"
msgstr ""
"le serveur doit être de version 7.3 ou supérieure pour utiliser les options\n"
"de sélection du schéma\n"
-#: pg_dump.c:1089
+#: pg_dump.c:1099
#, c-format
msgid "dumping contents of table %s\n"
msgstr "sauvegarde du contenu de la table %s\n"
-#: pg_dump.c:1192
+#: pg_dump.c:1202
#, c-format
msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n"
msgstr ""
"La sauvegarde du contenu de la table « %s » a échoué : échec de\n"
"PQgetCopyData().\n"
-#: pg_dump.c:1193
-#: pg_dump.c:11609
+#: pg_dump.c:1203
+#: pg_dump.c:11692
#, c-format
msgid "Error message from server: %s"
msgstr "Message d'erreur du serveur : %s"
-#: pg_dump.c:1194
-#: pg_dump.c:11610
+#: pg_dump.c:1204
+#: pg_dump.c:11693
#, c-format
msgid "The command was: %s\n"
msgstr "La commande était : %s\n"
-#: pg_dump.c:1600
+#: pg_dump.c:1618
msgid "saving database definition\n"
msgstr "sauvegarde de la définition de la base de données\n"
-#: pg_dump.c:1682
+#: pg_dump.c:1700
#, c-format
msgid "missing pg_database entry for database \"%s\"\n"
msgstr "entrée manquante dans pg_database pour la base de données « %s »\n"
-#: pg_dump.c:1689
+#: pg_dump.c:1707
#, c-format
msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n"
msgstr ""
"la requête a renvoyé plusieurs (%d) entrées pg_database pour la base de\n"
"données « %s »\n"
-#: pg_dump.c:1790
+#: pg_dump.c:1808
msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n"
msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject.relfrozenxid\n"
-#: pg_dump.c:1867
+#: pg_dump.c:1885
#, c-format
msgid "saving encoding = %s\n"
msgstr "encodage de la sauvegarde = %s\n"
-#: pg_dump.c:1894
+#: pg_dump.c:1912
#, c-format
msgid "saving standard_conforming_strings = %s\n"
msgstr "standard_conforming_strings de la sauvegarde = %s\n"
-#: pg_dump.c:1956
+#: pg_dump.c:1974
msgid "saving large objects\n"
msgstr "sauvegarde des « Large Objects »\n"
-#: pg_dump.c:1992
+#: pg_dump.c:2010
#, c-format
msgid "dumpBlobs(): could not open large object: %s"
msgstr "dumpBlobs() : n'a pas pu ouvrir le « Large Object » : %s"
-#: pg_dump.c:2005
+#: pg_dump.c:2023
#, c-format
msgid "dumpBlobs(): error reading large object: %s"
msgstr "dumpBlobs() : n'a pas pu lire le « Large Object » : %s"
-#: pg_dump.c:2042
+#: pg_dump.c:2060
msgid "saving large object comments\n"
msgstr "sauvegarde des commentaires des « Large Objects »\n"
-#: pg_dump.c:2212
+#: pg_dump.c:2229
#, c-format
msgid "WARNING: owner of schema \"%s\" appears to be invalid\n"
msgstr "ATTENTION : le propriétaire du schéma « %s » semble être invalide\n"
-#: pg_dump.c:2247
+#: pg_dump.c:2273
#, c-format
msgid "schema with OID %u does not exist\n"
msgstr "le schéma d'OID %u n'existe pas\n"
-#: pg_dump.c:2504
+#: pg_dump.c:2521
#, c-format
msgid "WARNING: owner of data type \"%s\" appears to be invalid\n"
msgstr "ATTENTION : le propriétaire du type de données « %s » semble être invalide\n"
-#: pg_dump.c:2608
+#: pg_dump.c:2625
#, c-format
msgid "WARNING: owner of operator \"%s\" appears to be invalid\n"
msgstr "ATTENTION : le propriétaire de l'opérateur « %s » semble être invalide\n"
-#: pg_dump.c:2782
+#: pg_dump.c:2799
#, c-format
msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n"
msgstr ""
"ATTENTION : le propriétaire de la classe d'opérateur « %s » semble être\n"
"invalide\n"
-#: pg_dump.c:2869
+#: pg_dump.c:2886
#, c-format
msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n"
msgstr ""
"ATTENTION : le propriétaire de la famille d'opérateur « %s » semble être\n"
"invalide\n"
-#: pg_dump.c:2994
+#: pg_dump.c:3011
#, c-format
msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n"
msgstr ""
"ATTENTION : le propriétaire de la fonction d'aggrégat « %s » semble être\n"
"invalide\n"
-#: pg_dump.c:3149
+#: pg_dump.c:3166
#, c-format
msgid "WARNING: owner of function \"%s\" appears to be invalid\n"
msgstr "ATTENTION : le propriétaire de la fonction « %s » semble être invalide\n"
-#: pg_dump.c:3555
+#: pg_dump.c:3572
#, c-format
msgid "WARNING: owner of table \"%s\" appears to be invalid\n"
msgstr "ATTENTION : le propriétaire de la table « %s » semble être invalide\n"
-#: pg_dump.c:3695
+#: pg_dump.c:3717
#, c-format
msgid "reading indexes for table \"%s\"\n"
msgstr "lecture des index de la table « %s »\n"
-#: pg_dump.c:3965
+#: pg_dump.c:3987
#, c-format
msgid "reading foreign key constraints for table \"%s\"\n"
msgstr "lecture des contraintes de clés étrangères pour la table « %s »\n"
-#: pg_dump.c:4193
+#: pg_dump.c:4215
#, c-format
msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n"
msgstr ""
"vérification échouée, OID %u de la table parent de l'OID %u de l'entrée de\n"
"pg_rewrite introuvable\n"
-#: pg_dump.c:4276
+#: pg_dump.c:4298
#, c-format
msgid "reading triggers for table \"%s\"\n"
msgstr "lecture des triggers pour la table « %s »\n"
-#: pg_dump.c:4401
+#: pg_dump.c:4423
#, c-format
msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n"
msgstr ""
"la requête a produit une réference de nom de table null pour le trigger de\n"
"clé étrangère « %s » sur la table « %s » (OID de la table : %u)\n"
-#: pg_dump.c:4751
+#: pg_dump.c:4773
#, c-format
msgid "finding the columns and types of table \"%s\"\n"
msgstr "recherche des colonnes et types de la table « %s »\n"
-#: pg_dump.c:4849
+#: pg_dump.c:4872
#, c-format
msgid "invalid column numbering in table \"%s\"\n"
msgstr "numérotation des colonnes invalide pour la table « %s »\n"
-#: pg_dump.c:4884
+#: pg_dump.c:4905
#, c-format
msgid "finding default expressions of table \"%s\"\n"
msgstr "recherche des expressions par défaut de la table « %s »\n"
-#: pg_dump.c:4969
+#: pg_dump.c:4958
#, c-format
msgid "invalid adnum value %d for table \"%s\"\n"
msgstr "valeur adnum %d invalide pour la table « %s »\n"
-#: pg_dump.c:4987
+#: pg_dump.c:5031
#, c-format
msgid "finding check constraints for table \"%s\"\n"
msgstr "recherche des contraintes de vérification pour la table « %s »\n"
-#: pg_dump.c:5067
+#: pg_dump.c:5111
#, c-format
msgid "expected %d check constraint on table \"%s\" but found %d\n"
msgid_plural "expected %d check constraints on table \"%s\" but found %d\n"
@@ -622,136 +622,136 @@
"%d contraintes de vérification attendues pour la table « %s » mais %d\n"
"trouvées\n"
-#: pg_dump.c:5071
+#: pg_dump.c:5115
msgid "(The system catalogs might be corrupted.)\n"
msgstr "(Les catalogues système sont peut-être corrompus.)\n"
-#: pg_dump.c:6150
+#: pg_dump.c:6216
#, c-format
msgid "no label definitions found for enum ID %u\n"
msgstr "aucune définition de label trouvée pour l'ID enum %u\n"
-#: pg_dump.c:6409
-#: pg_dump.c:6608
-#: pg_dump.c:7260
-#: pg_dump.c:7798
-#: pg_dump.c:8048
-#: pg_dump.c:8154
-#: pg_dump.c:8539
-#: pg_dump.c:8715
-#: pg_dump.c:8912
-#: pg_dump.c:9139
-#: pg_dump.c:9294
-#: pg_dump.c:9481
-#: pg_dump.c:11415
+#: pg_dump.c:6475
+#: pg_dump.c:6674
+#: pg_dump.c:7326
+#: pg_dump.c:7864
+#: pg_dump.c:8114
+#: pg_dump.c:8220
+#: pg_dump.c:8605
+#: pg_dump.c:8781
+#: pg_dump.c:8978
+#: pg_dump.c:9205
+#: pg_dump.c:9360
+#: pg_dump.c:9547
+#: pg_dump.c:11498
#, c-format
msgid "query returned %d row instead of one: %s\n"
msgid_plural "query returned %d rows instead of one: %s\n"
msgstr[0] "la requête a renvoyé %d ligne au lieu d'une seule : %s\n"
msgstr[1] "la requête a renvoyé %d lignes au lieu d'une seule : %s\n"
-#: pg_dump.c:6730
+#: pg_dump.c:6796
#, c-format
msgid "query returned no rows: %s\n"
msgstr "la requête n'a renvoyé aucune ligne : %s\n"
-#: pg_dump.c:7028
+#: pg_dump.c:7094
msgid "WARNING: bogus value in proargmodes array\n"
msgstr "ATTENTION : valeur erronée dans le tableau proargmodes\n"
-#: pg_dump.c:7340
+#: pg_dump.c:7406
msgid "WARNING: could not parse proallargtypes array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proallargtypes\n"
-#: pg_dump.c:7356
+#: pg_dump.c:7422
msgid "WARNING: could not parse proargmodes array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proargmodes\n"
-#: pg_dump.c:7370
+#: pg_dump.c:7436
msgid "WARNING: could not parse proargnames array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proargnames\n"
-#: pg_dump.c:7381
+#: pg_dump.c:7447
msgid "WARNING: could not parse proconfig array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proconfig\n"
-#: pg_dump.c:7437
+#: pg_dump.c:7503
#, c-format
msgid "unrecognized provolatile value for function \"%s\"\n"
msgstr "valeur provolatile non reconnue pour la fonction « %s »\n"
-#: pg_dump.c:7640
+#: pg_dump.c:7706
msgid "WARNING: bogus value in pg_cast.castmethod field\n"
msgstr "ATTENTION : valeur erronée dans pg_cast.castmethod\n"
-#: pg_dump.c:8017
+#: pg_dump.c:8083
#, c-format
msgid "WARNING: could not find operator with OID %s\n"
msgstr "ATTENTION : n'a pas pu trouver l'opérateur d'OID %s\n"
-#: pg_dump.c:8938
+#: pg_dump.c:9004
#, c-format
msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n"
msgstr ""
"ATTENTION : la fonction d'aggrégat %s n'a pas pu être sauvegardée\n"
" correctement avec cette version de la base de données ; ignorée\n"
-#: pg_dump.c:9667
+#: pg_dump.c:9733
#, c-format
msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n"
msgstr "n'a pas pu analyser la liste ACL (%s) de l'objet « %s » (%s)\n"
-#: pg_dump.c:9805
+#: pg_dump.c:9871
#, c-format
msgid "query to obtain definition of view \"%s\" returned no data\n"
msgstr ""
"la requête permettant d'obtenir la définition de la vue « %s » n'a renvoyé\n"
"aucune donnée\n"
-#: pg_dump.c:9808
+#: pg_dump.c:9874
#, c-format
msgid "query to obtain definition of view \"%s\" returned more than one definition\n"
msgstr ""
"la requête permettant d'obtenir la définition de la vue « %s » a renvoyé\n"
" plusieurs définitions\n"
-#: pg_dump.c:9817
+#: pg_dump.c:9883
#, c-format
msgid "definition of view \"%s\" appears to be empty (length zero)\n"
msgstr "la définition de la vue « %s » semble être vide (longueur nulle)\n"
-#: pg_dump.c:10257
+#: pg_dump.c:10340
#, c-format
msgid "invalid column number %d for table \"%s\"\n"
msgstr "numéro de colonne %d invalide pour la table « %s »\n"
-#: pg_dump.c:10360
+#: pg_dump.c:10443
#, c-format
msgid "missing index for constraint \"%s\"\n"
msgstr "index manquant pour la contrainte « %s »\n"
-#: pg_dump.c:10529
+#: pg_dump.c:10612
#, c-format
msgid "unrecognized constraint type: %c\n"
msgstr "type de contrainte inconnu : %c\n"
-#: pg_dump.c:10592
+#: pg_dump.c:10675
msgid "missing pg_database entry for this database\n"
msgstr "entrée pg_database manquante pour cette base de données\n"
-#: pg_dump.c:10597
+#: pg_dump.c:10680
msgid "found more than one pg_database entry for this database\n"
msgstr "a trouvé plusieurs entrées dans pg_database pour cette base de données\n"
-#: pg_dump.c:10629
+#: pg_dump.c:10712
msgid "could not find entry for pg_indexes in pg_class\n"
msgstr "n'a pas pu trouver l'entrée de pg_indexes dans pg_class\n"
-#: pg_dump.c:10634
+#: pg_dump.c:10717
msgid "found more than one entry for pg_indexes in pg_class\n"
msgstr "a trouvé plusieurs entrées pour pg_indexes dans la table pg_class\n"
-#: pg_dump.c:10705
+#: pg_dump.c:10788
#, c-format
msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n"
msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n"
@@ -762,165 +762,165 @@
"la requête permettant d'obtenir les données de la séquence « %s » a renvoyé\n"
"%d lignes (une seule attendue)\n"
-#: pg_dump.c:10716
+#: pg_dump.c:10799
#, c-format
msgid "query to get data of sequence \"%s\" returned name \"%s\"\n"
msgstr ""
"la requête permettant d'obtenir les données de la séquence « %s » a renvoyé\n"
"le nom « %s »\n"
-#: pg_dump.c:10993
+#: pg_dump.c:11076
#, c-format
msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n"
msgstr "chaîne argument invalide (%s) pour le trigger « %s » sur la table « %s »\n"
-#: pg_dump.c:11131
+#: pg_dump.c:11214
#, c-format
msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n"
msgstr ""
"la requête permettant d'obtenir la règle « %s » associée à la table « %s »\n"
"a échoué : mauvais nombre de lignes renvoyées\n"
-#: pg_dump.c:11226
+#: pg_dump.c:11309
msgid "reading dependency data\n"
msgstr "lecture des données de dépendance\n"
-#: pg_dump.c:11604
+#: pg_dump.c:11687
msgid "SQL command failed\n"
msgstr "la commande SQL a échoué\n"
-#: common.c:113
+#: common.c:114
msgid "reading schemas\n"
msgstr "lecture des schémas\n"
-#: common.c:123
+#: common.c:125
msgid "reading user-defined tables\n"
msgstr "lecture des tables utilisateur\n"
-#: common.c:128
+#: common.c:133
msgid "reading user-defined functions\n"
msgstr "lecture des fonctions utilisateur\n"
-#: common.c:134
+#: common.c:139
msgid "reading user-defined types\n"
msgstr "lecture des types utilisateur\n"
-#: common.c:140
+#: common.c:145
msgid "reading procedural languages\n"
msgstr "lecture des langages procéduraux\n"
-#: common.c:144
+#: common.c:149
msgid "reading user-defined aggregate functions\n"
msgstr "lecture des fonctions d'aggrégats utilisateur\n"
-#: common.c:148
+#: common.c:153
msgid "reading user-defined operators\n"
msgstr "lecture des opérateurs utilisateur\n"
-#: common.c:153
+#: common.c:158
msgid "reading user-defined operator classes\n"
msgstr "lecture des classes d'opérateurs utilisateur\n"
-#: common.c:157
+#: common.c:162
msgid "reading user-defined text search parsers\n"
msgstr "lecture des analyseurs utilisateur pour la recherche plein texte\n"
-#: common.c:161
+#: common.c:166
msgid "reading user-defined text search templates\n"
msgstr "lecture des modèles utilisateur pour la recherche plein texte\n"
-#: common.c:165
+#: common.c:170
msgid "reading user-defined text search dictionaries\n"
msgstr "lecture des dictionnaires utilisateur pour la recherche plein texte\n"
-#: common.c:169
+#: common.c:174
msgid "reading user-defined text search configurations\n"
msgstr "lecture des configurations utilisateur pour la recherche plein texte\n"
-#: common.c:173
+#: common.c:178
msgid "reading user-defined foreign-data wrappers\n"
msgstr "lecture des wrappers de données distantes utilisateur\n"
-#: common.c:177
+#: common.c:182
msgid "reading user-defined foreign servers\n"
msgstr "lecture des serveurs distants utilisateur\n"
-#: common.c:181
+#: common.c:186
msgid "reading user-defined operator families\n"
msgstr "lecture des familles d'opérateurs utilisateur\n"
-#: common.c:185
+#: common.c:190
msgid "reading user-defined conversions\n"
msgstr "lecture des conversions utilisateur\n"
-#: common.c:189
+#: common.c:194
msgid "reading table inheritance information\n"
msgstr "lecture des informations d'héritage des tables\n"
-#: common.c:193
+#: common.c:198
msgid "reading rewrite rules\n"
msgstr "lecture des règles de réécriture\n"
-#: common.c:197
+#: common.c:202
msgid "reading type casts\n"
msgstr "lecture des transtypages\n"
-#: common.c:202
+#: common.c:207
msgid "finding inheritance relationships\n"
msgstr "recherche des relations d'héritage\n"
-#: common.c:206
+#: common.c:211
msgid "reading column info for interesting tables\n"
msgstr "lecture des informations de colonnes des tables intéressantes\n"
-#: common.c:210
+#: common.c:215
msgid "flagging inherited columns in subtables\n"
msgstr "marquage des colonnes héritées dans les sous-tables\n"
-#: common.c:214
+#: common.c:219
msgid "reading indexes\n"
msgstr "lecture des index\n"
-#: common.c:218
+#: common.c:223
msgid "reading constraints\n"
msgstr "lecture des contraintes\n"
-#: common.c:222
+#: common.c:227
msgid "reading triggers\n"
msgstr "lecture des déclencheurs\n"
-#: common.c:802
+#: common.c:761
#, c-format
msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n"
msgstr "vérification échouée, OID %u parent de la table « %s » (OID %u) introuvable\n"
-#: common.c:844
+#: common.c:803
#, c-format
msgid "could not parse numeric array \"%s\": too many numbers\n"
msgstr "n'a pas pu analyser le tableau numérique « %s » : trop de nombres\n"
-#: common.c:859
+#: common.c:818
#, c-format
msgid "could not parse numeric array \"%s\": invalid character in number\n"
msgstr ""
"n'a pas pu analyser le tableau numérique « %s » : caractère invalide dans\n"
"le nombre\n"
-#: common.c:972
+#: common.c:931
msgid "cannot duplicate null pointer\n"
msgstr "ne peut pas dupliquer un pointeur nul\n"
-#: common.c:975
-#: common.c:986
-#: common.c:997
-#: common.c:1008
-#: pg_backup_archiver.c:735
-#: pg_backup_archiver.c:1114
-#: pg_backup_archiver.c:1241
-#: pg_backup_archiver.c:1712
-#: pg_backup_archiver.c:1869
-#: pg_backup_archiver.c:1910
-#: pg_backup_archiver.c:3956
+#: common.c:934
+#: common.c:945
+#: common.c:956
+#: common.c:967
+#: pg_backup_archiver.c:736
+#: pg_backup_archiver.c:1115
+#: pg_backup_archiver.c:1242
+#: pg_backup_archiver.c:1713
+#: pg_backup_archiver.c:1870
+#: pg_backup_archiver.c:1911
+#: pg_backup_archiver.c:4010
#: pg_backup_custom.c:144
#: pg_backup_custom.c:149
#: pg_backup_custom.c:155
@@ -932,11 +932,11 @@
#: pg_backup_db.c:179
#: pg_backup_db.c:223
#: pg_backup_db.c:248
-#: pg_backup_db.c:353
+#: pg_backup_db.c:441
#: pg_backup_files.c:114
#: pg_backup_null.c:72
#: pg_backup_tar.c:171
-#: pg_backup_tar.c:1012
+#: pg_backup_tar.c:1002
msgid "out of memory\n"
msgstr "mémoire épuisée\n"
@@ -944,157 +944,158 @@
msgid "archiver"
msgstr "archiveur"
-#: pg_backup_archiver.c:188
-#: pg_backup_archiver.c:1209
+#: pg_backup_archiver.c:189
+#: pg_backup_archiver.c:1210
#, c-format
msgid "could not close output file: %s\n"
msgstr "n'a pas pu fermer le fichier de sortie : %s\n"
-#: pg_backup_archiver.c:214
+#: pg_backup_archiver.c:215
msgid "-C and -c are incompatible options\n"
msgstr "-C et -c sont des options incompatibles\n"
-#: pg_backup_archiver.c:221
+#: pg_backup_archiver.c:222
msgid "-C and -1 are incompatible options\n"
msgstr "-C et -1 sont des options incompatibles\n"
-#: pg_backup_archiver.c:231
+#: pg_backup_archiver.c:232
msgid "parallel restore is not supported with this archive file format\n"
msgstr ""
"la restauration parallèle n'est pas supportée avec ce format de fichier\n"
"d'archive\n"
-#: pg_backup_archiver.c:235
+#: pg_backup_archiver.c:236
msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n"
msgstr ""
"la restauration parallèle n'est pas supportée avec les archives réalisées\n"
"par un pg_dump antérieur à la 8.0 d'archive\n"
-#: pg_backup_archiver.c:254
+#: pg_backup_archiver.c:255
msgid "cannot restore from compressed archive (compression not supported in this installation)\n"
msgstr ""
"ne peut pas restaurer à partir de l'archive compressée (compression non\n"
"disponible dans cette installation)\n"
-#: pg_backup_archiver.c:264
+#: pg_backup_archiver.c:265
msgid "connecting to database for restore\n"
msgstr "connexion à la base de données pour la restauration\n"
-#: pg_backup_archiver.c:266
+#: pg_backup_archiver.c:267
msgid "direct database connections are not supported in pre-1.3 archives\n"
msgstr ""
"les connexions directes à la base de données ne sont pas supportées dans\n"
"les archives pre-1.3\n"
-#: pg_backup_archiver.c:308
+#: pg_backup_archiver.c:309
msgid "implied data-only restore\n"
msgstr "a impliqué une restauration des données uniquement\n"
-#: pg_backup_archiver.c:351
+#: pg_backup_archiver.c:352
#, c-format
msgid "dropping %s %s\n"
msgstr "suppression de %s %s\n"
-#: pg_backup_archiver.c:402
+#: pg_backup_archiver.c:403
#, c-format
msgid "setting owner and privileges for %s %s\n"
msgstr "réglage du propriétaire et des droits pour %s %s\n"
-#: pg_backup_archiver.c:460
-#: pg_backup_archiver.c:462
+#: pg_backup_archiver.c:461
+#: pg_backup_archiver.c:463
#, c-format
msgid "warning from original dump file: %s\n"
msgstr "message d'avertissement du fichier de sauvegarde original : %s\n"
-#: pg_backup_archiver.c:469
+#: pg_backup_archiver.c:470
#, c-format
msgid "creating %s %s\n"
msgstr "création de %s %s\n"
-#: pg_backup_archiver.c:513
+#: pg_backup_archiver.c:514
#, c-format
msgid "connecting to new database \"%s\"\n"
msgstr "connexion à la nouvelle base de données « %s »\n"
-#: pg_backup_archiver.c:541
+#: pg_backup_archiver.c:542
#, c-format
msgid "restoring %s\n"
msgstr "restauration de %s\n"
-#: pg_backup_archiver.c:555
+#: pg_backup_archiver.c:556
#, c-format
msgid "restoring data for table \"%s\"\n"
msgstr "restauration des données de la table « %s »\n"
-#: pg_backup_archiver.c:617
+#: pg_backup_archiver.c:618
#, c-format
msgid "executing %s %s\n"
msgstr "exécution de %s %s\n"
-#: pg_backup_archiver.c:650
+#: pg_backup_archiver.c:651
#, c-format
msgid "disabling triggers for %s\n"
msgstr "désactivation des déclencheurs pour %s\n"
-#: pg_backup_archiver.c:676
+#: pg_backup_archiver.c:677
#, c-format
msgid "enabling triggers for %s\n"
msgstr "activation des triggers pour %s\n"
-#: pg_backup_archiver.c:706
+#: pg_backup_archiver.c:707
msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n"
msgstr ""
"erreur interne -- WriteData ne peut pas être appelé en dehors du contexte\n"
"de la routine DataDumper\n"
-#: pg_backup_archiver.c:859
+#: pg_backup_archiver.c:860
msgid "large-object output not supported in chosen format\n"
msgstr "la sauvegarde des « Large Objects » n'est pas supportée dans le format choisi\n"
-#: pg_backup_archiver.c:913
+#: pg_backup_archiver.c:914
#, c-format
msgid "restored %d large object\n"
msgid_plural "restored %d large objects\n"
msgstr[0] "restauration de %d « Large Object »\n"
msgstr[1] "restauration de %d « Large Objects »\n"
-#: pg_backup_archiver.c:933
+#: pg_backup_archiver.c:934
+#: pg_backup_tar.c:720
#, c-format
msgid "restoring large object with OID %u\n"
msgstr "restauration du « Large Object » d'OID %u\n"
-#: pg_backup_archiver.c:939
+#: pg_backup_archiver.c:940
#, c-format
msgid "could not create large object %u\n"
msgstr "n'a pas pu créer le « Large Object » %u\n"
-#: pg_backup_archiver.c:944
+#: pg_backup_archiver.c:945
msgid "could not open large object\n"
msgstr "n'a pas pu ouvrir le « Large Object »\n"
-#: pg_backup_archiver.c:995
+#: pg_backup_archiver.c:996
#, c-format
msgid "could not open TOC file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier TOC « %s » : %s\n"
-#: pg_backup_archiver.c:1036
+#: pg_backup_archiver.c:1037
#, c-format
msgid "WARNING: line ignored: %s\n"
msgstr "ATTENTION : ligne ignorée : %s\n"
-#: pg_backup_archiver.c:1043
+#: pg_backup_archiver.c:1044
#, c-format
msgid "could not find entry for ID %d\n"
msgstr "n'a pas pu trouver l'entrée pour l'ID %d\n"
-#: pg_backup_archiver.c:1064
+#: pg_backup_archiver.c:1065
#: pg_backup_files.c:172
#: pg_backup_files.c:457
#, c-format
msgid "could not close TOC file: %s\n"
msgstr "n'a pas pu fermer le fichier TOC : %s\n"
-#: pg_backup_archiver.c:1188
+#: pg_backup_archiver.c:1189
#: pg_backup_custom.c:181
#: pg_backup_files.c:130
#: pg_backup_files.c:262
@@ -1102,81 +1103,81 @@
msgid "could not open output file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n"
-#: pg_backup_archiver.c:1191
+#: pg_backup_archiver.c:1192
#: pg_backup_custom.c:188
#: pg_backup_files.c:137
#, c-format
msgid "could not open output file: %s\n"
msgstr "n'a pas pu ouvrir le fichier de sauvegarde : %s\n"
-#: pg_backup_archiver.c:1284
+#: pg_backup_archiver.c:1285
#, c-format
msgid "wrote %lu byte of large object data (result = %lu)\n"
msgid_plural "wrote %lu bytes of large object data (result = %lu)\n"
msgstr[0] "a écrit %lu octet de données d'un « Large Object » (résultat = %lu)\n"
msgstr[1] "a écrit %lu octets de données d'un « Large Object » (résultat = %lu)\n"
-#: pg_backup_archiver.c:1290
+#: pg_backup_archiver.c:1291
#, c-format
msgid "could not write to large object (result: %lu, expected: %lu)\n"
msgstr "n'a pas pu écrire le « Large Object » (résultat : %lu, attendu : %lu)\n"
-#: pg_backup_archiver.c:1348
-#: pg_backup_archiver.c:1371
+#: pg_backup_archiver.c:1349
+#: pg_backup_archiver.c:1372
#: pg_backup_custom.c:781
#: pg_backup_custom.c:1040
#: pg_backup_custom.c:1054
#: pg_backup_files.c:432
#: pg_backup_tar.c:587
-#: pg_backup_tar.c:1090
-#: pg_backup_tar.c:1385
+#: pg_backup_tar.c:1089
+#: pg_backup_tar.c:1384
#, c-format
msgid "could not write to output file: %s\n"
msgstr "n'a pas pu écrire dans le fichier de sauvegarde : %s\n"
-#: pg_backup_archiver.c:1356
+#: pg_backup_archiver.c:1357
msgid "could not write to custom output routine\n"
msgstr "n'a pas pu écrire vers la routine de sauvegarde personnalisée\n"
-#: pg_backup_archiver.c:1454
+#: pg_backup_archiver.c:1455
msgid "Error while INITIALIZING:\n"
msgstr "Erreur pendant l'initialisation (« INITIALIZING ») :\n"
-#: pg_backup_archiver.c:1459
+#: pg_backup_archiver.c:1460
msgid "Error while PROCESSING TOC:\n"
msgstr "Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :\n"
-#: pg_backup_archiver.c:1464
+#: pg_backup_archiver.c:1465
msgid "Error while FINALIZING:\n"
msgstr "Erreur pendant la finalisation (« FINALIZING ») :\n"
-#: pg_backup_archiver.c:1469
+#: pg_backup_archiver.c:1470
#, c-format
msgid "Error from TOC entry %d; %u %u %s %s %s\n"
msgstr "Erreur à partir de l'entrée TOC %d ; %u %u %s %s %s\n"
-#: pg_backup_archiver.c:1605
+#: pg_backup_archiver.c:1606
#, c-format
msgid "unexpected data offset flag %d\n"
msgstr "drapeau de décalage de données inattendu %d\n"
-#: pg_backup_archiver.c:1618
+#: pg_backup_archiver.c:1619
msgid "file offset in dump file is too large\n"
msgstr "le décalage dans le fichier de sauvegarde est trop important\n"
-#: pg_backup_archiver.c:1715
-#: pg_backup_archiver.c:2974
+#: pg_backup_archiver.c:1716
+#: pg_backup_archiver.c:3028
#: pg_backup_custom.c:757
#: pg_backup_files.c:419
-#: pg_backup_tar.c:786
+#: pg_backup_tar.c:776
msgid "unexpected end of file\n"
msgstr "fin de fichier inattendu\n"
-#: pg_backup_archiver.c:1732
+#: pg_backup_archiver.c:1733
msgid "attempting to ascertain archive format\n"
msgstr "tentative d'identification du format de l'archive\n"
-#: pg_backup_archiver.c:1748
+#: pg_backup_archiver.c:1749
#: pg_backup_custom.c:200
#: pg_backup_custom.c:893
#: pg_backup_files.c:155
@@ -1185,203 +1186,203 @@
msgid "could not open input file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier en entrée « %s » : %s\n"
-#: pg_backup_archiver.c:1755
+#: pg_backup_archiver.c:1756
#: pg_backup_custom.c:207
#: pg_backup_files.c:162
#, c-format
msgid "could not open input file: %s\n"
msgstr "n'a pas pu ouvrir le fichier en entrée : %s\n"
-#: pg_backup_archiver.c:1764
+#: pg_backup_archiver.c:1765
#, c-format
msgid "could not read input file: %s\n"
msgstr "n'a pas pu lire le fichier en entrée : %s\n"
-#: pg_backup_archiver.c:1766
+#: pg_backup_archiver.c:1767
#, c-format
msgid "input file is too short (read %lu, expected 5)\n"
msgstr "le fichier en entrée est trop petit (%lu lus, 5 attendus)\n"
-#: pg_backup_archiver.c:1824
+#: pg_backup_archiver.c:1825
msgid "input file does not appear to be a valid archive (too short?)\n"
msgstr "le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n"
-#: pg_backup_archiver.c:1827
+#: pg_backup_archiver.c:1828
msgid "input file does not appear to be a valid archive\n"
msgstr "le fichier en entrée ne semble pas être une archive valide\n"
-#: pg_backup_archiver.c:1847
+#: pg_backup_archiver.c:1848
#, c-format
msgid "could not close input file: %s\n"
msgstr "n'a pas pu fermer le fichier en entrée : %s\n"
-#: pg_backup_archiver.c:1864
+#: pg_backup_archiver.c:1865
#, c-format
msgid "allocating AH for %s, format %d\n"
msgstr "allocation d'AH pour %s, format %d\n"
-#: pg_backup_archiver.c:1964
+#: pg_backup_archiver.c:1967
#, c-format
msgid "unrecognized file format \"%d\"\n"
msgstr "format de fichier « %d » non reconnu\n"
-#: pg_backup_archiver.c:2086
+#: pg_backup_archiver.c:2089
#, c-format
msgid "entry ID %d out of range -- perhaps a corrupt TOC\n"
msgstr "ID %d de l'entrée en dehors de la plage -- peut-être un TOC corrompu\n"
-#: pg_backup_archiver.c:2200
+#: pg_backup_archiver.c:2203
#, c-format
msgid "read TOC entry %d (ID %d) for %s %s\n"
msgstr "lecture de l'entrée %d de la TOC (ID %d) pour %s %s\n"
-#: pg_backup_archiver.c:2234
+#: pg_backup_archiver.c:2237
#, c-format
msgid "unrecognized encoding \"%s\"\n"
msgstr "encodage « %s » non reconnu\n"
-#: pg_backup_archiver.c:2239
+#: pg_backup_archiver.c:2242
#, c-format
msgid "invalid ENCODING item: %s\n"
msgstr "élément ENCODING invalide : %s\n"
-#: pg_backup_archiver.c:2257
+#: pg_backup_archiver.c:2260
#, c-format
msgid "invalid STDSTRINGS item: %s\n"
msgstr "élément STDSTRINGS invalide : %s\n"
-#: pg_backup_archiver.c:2425
+#: pg_backup_archiver.c:2428
#, c-format
msgid "could not set session user to \"%s\": %s"
msgstr "n'a pas pu initialiser la session utilisateur à « %s »: %s"
-#: pg_backup_archiver.c:2756
-#: pg_backup_archiver.c:2905
+#: pg_backup_archiver.c:2759
+#: pg_backup_archiver.c:2938
#, c-format
msgid "WARNING: don't know how to set owner for object type %s\n"
msgstr "ATTENTION : ne sait pas comment initialiser le propriétaire du type d'objet %s\n"
-#: pg_backup_archiver.c:2937
+#: pg_backup_archiver.c:2991
msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n"
msgstr ""
"ATTENTION : la compression requise n'est pas disponible avec cette\n"
"installation -- l'archive ne sera pas compressée\n"
-#: pg_backup_archiver.c:2977
+#: pg_backup_archiver.c:3031
msgid "did not find magic string in file header\n"
msgstr "n'a pas trouver la chaîne magique dans le fichier d'en-tête\n"
-#: pg_backup_archiver.c:2990
+#: pg_backup_archiver.c:3044
#, c-format
msgid "unsupported version (%d.%d) in file header\n"
msgstr "version non supportée (%d.%d) dans le fichier d'en-tête\n"
-#: pg_backup_archiver.c:2995
+#: pg_backup_archiver.c:3049
#, c-format
msgid "sanity check on integer size (%lu) failed\n"
msgstr "échec de la vérification sur la taille de l'entier (%lu)\n"
-#: pg_backup_archiver.c:2999
+#: pg_backup_archiver.c:3053
msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n"
msgstr ""
"ATTENTION : l'archive a été créée sur une machine disposant d'entiers plus\n"
"larges, certaines opérations peuvent échouer\n"
-#: pg_backup_archiver.c:3009
+#: pg_backup_archiver.c:3063
#, c-format
msgid "expected format (%d) differs from format found in file (%d)\n"
msgstr "le format attendu (%d) diffère du format du fichier (%d)\n"
-#: pg_backup_archiver.c:3025
+#: pg_backup_archiver.c:3079
msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n"
msgstr ""
"ATTENTION : l'archive est compressée mais cette installation ne supporte\n"
"pas la compression -- aucune donnée ne sera disponible\n"
-#: pg_backup_archiver.c:3043
+#: pg_backup_archiver.c:3097
msgid "WARNING: invalid creation date in header\n"
msgstr "ATTENTION : date de création invalide dans l'en-tête\n"
-#: pg_backup_archiver.c:3140
+#: pg_backup_archiver.c:3194
msgid "entering restore_toc_entries_parallel\n"
msgstr "entrée dans restore_toc_entries_parallel\n"
-#: pg_backup_archiver.c:3167
+#: pg_backup_archiver.c:3221
#, c-format
msgid "processing item %d %s %s\n"
msgstr "traitement de l'élément %d %s %s\n"
-#: pg_backup_archiver.c:3204
+#: pg_backup_archiver.c:3258
msgid "entering main parallel loop\n"
msgstr "entrée dans la boucle parallèle principale\n"
-#: pg_backup_archiver.c:3218
+#: pg_backup_archiver.c:3272
#, c-format
msgid "skipping item %d %s %s\n"
msgstr "omission de l'élément %d %s %s\n"
-#: pg_backup_archiver.c:3234
+#: pg_backup_archiver.c:3288
#, c-format
msgid "launching item %d %s %s\n"
msgstr "élément de lancement %d %s %s\n"
-#: pg_backup_archiver.c:3270
+#: pg_backup_archiver.c:3324
#, c-format
msgid "worker process crashed: status %d\n"
msgstr "crash du processus worker : statut %d\n"
-#: pg_backup_archiver.c:3275
+#: pg_backup_archiver.c:3329
msgid "finished main parallel loop\n"
msgstr "fin de la boucle parallèle principale\n"
-#: pg_backup_archiver.c:3295
+#: pg_backup_archiver.c:3349
#, c-format
msgid "processing missed item %d %s %s\n"
msgstr "traitement de l'élément manquant %d %s %s\n"
-#: pg_backup_archiver.c:3322
+#: pg_backup_archiver.c:3376
msgid "parallel_restore should not return\n"
msgstr "parallel_restore ne devrait pas retourner\n"
-#: pg_backup_archiver.c:3328
+#: pg_backup_archiver.c:3382
#, c-format
msgid "could not create worker process: %s\n"
msgstr "n'a pas pu créer le processus de travail : %s\n"
-#: pg_backup_archiver.c:3336
+#: pg_backup_archiver.c:3390
#, c-format
msgid "could not create worker thread: %s\n"
msgstr "n'a pas pu créer le fil de travail: %s\n"
-#: pg_backup_archiver.c:3542
+#: pg_backup_archiver.c:3596
msgid "no item ready\n"
msgstr "aucun élément prêt\n"
-#: pg_backup_archiver.c:3636
+#: pg_backup_archiver.c:3690
msgid "could not find slot of finished worker\n"
msgstr "n'a pas pu trouver l'emplacement du worker qui vient de terminer\n"
-#: pg_backup_archiver.c:3638
+#: pg_backup_archiver.c:3692
#, c-format
msgid "finished item %d %s %s\n"
msgstr "élément terminé %d %s %s\n"
-#: pg_backup_archiver.c:3651
+#: pg_backup_archiver.c:3705
#, c-format
msgid "worker process failed: exit code %d\n"
msgstr "échec du processus de travail : code de sortie %d\n"
-#: pg_backup_archiver.c:3800
+#: pg_backup_archiver.c:3854
#, c-format
msgid "transferring dependency %d -> %d to %d\n"
msgstr "transfert de la dépendance %d -> %d vers %d\n"
-#: pg_backup_archiver.c:3873
+#: pg_backup_archiver.c:3927
#, c-format
msgid "reducing dependencies for %d\n"
msgstr "réduction des dépendances pour %d\n"
-#: pg_backup_archiver.c:3922
+#: pg_backup_archiver.c:3976
#, c-format
msgid "table \"%s\" could not be created, will not restore its data\n"
msgstr "la table « %s » n'a pas pu être créée, ses données ne seront pas restaurées\n"
@@ -1582,26 +1583,27 @@
msgid "%s"
msgstr "%s"
-#: pg_backup_db.c:337
+#: pg_backup_db.c:364
+#: pg_backup_db.c:435
+#: pg_backup_db.c:444
+msgid "could not execute query"
+msgstr "n'a pas pu exécuter la requête"
+
+#: pg_backup_db.c:415
#, c-format
msgid "error returned by PQputCopyData: %s"
msgstr "erreur renvoyée par PQputCopyData : %s"
-#: pg_backup_db.c:347
-#: pg_backup_db.c:356
-msgid "could not execute query"
-msgstr "n'a pas pu exécuter la requête"
-
-#: pg_backup_db.c:375
+#: pg_backup_db.c:463
#, c-format
msgid "error returned by PQputCopyEnd: %s"
msgstr "erreur renvoyée par PQputCopyEnd : %s"
-#: pg_backup_db.c:392
+#: pg_backup_db.c:480
msgid "could not start database transaction"
msgstr "n'a pas pu démarrer la transaction de la base de données"
-#: pg_backup_db.c:398
+#: pg_backup_db.c:486
msgid "could not commit database transaction"
msgstr "n'a pas pu valider la transaction de la base de données"
@@ -1649,7 +1651,7 @@
msgstr "n'a pas pu ouvrir la TOC du « Large Object » en sortie : %s\n"
#: pg_backup_files.c:510
-#: pg_backup_tar.c:936
+#: pg_backup_tar.c:926
#, c-format
msgid "invalid OID for large object (%u)\n"
msgstr "OID invalide pour le « Large Object » (%u)\n"
@@ -1723,93 +1725,81 @@
#: pg_backup_tar.c:675
#, c-format
-msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
-msgstr "instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne « %s »\n"
+msgid "unexpected COPY statement syntax: \"%s\"\n"
+msgstr "syntaxe inattendue de l'instruction COPY : « %s »\n"
-#: pg_backup_tar.c:693
-#, c-format
-msgid "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n"
-msgstr ""
-"instruction COPY invalide -- n'a pas pu trouver « from stdin » dans la\n"
-"chaîne « %s » à partir de la position %lu\n"
-
-#: pg_backup_tar.c:730
-#, c-format
-msgid "restoring large object OID %u\n"
-msgstr "restauration du « Large Object » d'OID %u\n"
-
-#: pg_backup_tar.c:881
+#: pg_backup_tar.c:871
msgid "could not write null block at end of tar archive\n"
msgstr "n'a pas pu écrire le bloc nul à la fin de l'archive tar\n"
-#: pg_backup_tar.c:1081
+#: pg_backup_tar.c:1080
msgid "archive member too large for tar format\n"
msgstr "membre de l'archive trop volumineux pour le format tar\n"
-#: pg_backup_tar.c:1096
+#: pg_backup_tar.c:1095
#, c-format
msgid "could not close temporary file: %s\n"
msgstr "n'a pas pu ouvrir le fichier temporaire : %s\n"
-#: pg_backup_tar.c:1106
+#: pg_backup_tar.c:1105
#, c-format
msgid "actual file length (%s) does not match expected (%s)\n"
msgstr ""
"la longueur réelle du fichier (%s) ne correspond pas à ce qui était attendu\n"
"(%s)\n"
-#: pg_backup_tar.c:1114
+#: pg_backup_tar.c:1113
msgid "could not output padding at end of tar member\n"
msgstr "n'a pas pu remplir la fin du membre de tar\n"
-#: pg_backup_tar.c:1143
+#: pg_backup_tar.c:1142
#, c-format
msgid "moving from position %s to next member at file position %s\n"
msgstr "déplacement de la position %s vers le prochain membre à la position %s du fichier\n"
-#: pg_backup_tar.c:1154
+#: pg_backup_tar.c:1153
#, c-format
msgid "now at file position %s\n"
msgstr "maintenant en position %s du fichier\n"
-#: pg_backup_tar.c:1163
-#: pg_backup_tar.c:1194
+#: pg_backup_tar.c:1162
+#: pg_backup_tar.c:1193
#, c-format
msgid "could not find header for file %s in tar archive\n"
msgstr "n'a pas pu trouver l'en-tête du fichier %s dans l'archive tar\n"
-#: pg_backup_tar.c:1178
+#: pg_backup_tar.c:1177
#, c-format
msgid "skipping tar member %s\n"
msgstr "omission du membre %s du tar\n"
-#: pg_backup_tar.c:1182
+#: pg_backup_tar.c:1181
#, c-format
msgid "dumping data out of order is not supported in this archive format: %s is required, but comes before %s in the archive file.\n"
msgstr ""
"l'extraction désordonnée de données n'est pas supportée avec ce format\n"
"d'archive : %s est requis mais vient avant %s dans le fichier d'archive.\n"
-#: pg_backup_tar.c:1229
+#: pg_backup_tar.c:1228
#, c-format
msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n"
msgstr ""
"pas de correspondance entre la position réelle et celle prévue du fichier\n"
"(%s vs. %s)\n"
-#: pg_backup_tar.c:1244
+#: pg_backup_tar.c:1243
#, c-format
msgid "incomplete tar header found (%lu byte)\n"
msgid_plural "incomplete tar header found (%lu bytes)\n"
msgstr[0] "en-tête incomplet du fichier tar (%lu octet)\n"
msgstr[1] "en-tête incomplet du fichier tar (%lu octets)\n"
-#: pg_backup_tar.c:1282
+#: pg_backup_tar.c:1281
#, c-format
msgid "TOC Entry %s at %s (length %lu, checksum %d)\n"
msgstr "entrée TOC %s à %s (longueur %lu, somme de contrôle %d)\n"
-#: pg_backup_tar.c:1292
+#: pg_backup_tar.c:1291
#, c-format
msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n"
msgstr ""
@@ -2296,31 +2286,46 @@
msgid "could not read symbolic link \"%s\""
msgstr "n'a pas pu lire le lien symbolique « %s »"
-#: ../../port/exec.c:586
+#: ../../port/exec.c:595
#, c-format
msgid "child process exited with exit code %d"
msgstr "le processus fils a quitté avec le code de sortie %d"
-#: ../../port/exec.c:590
+#: ../../port/exec.c:599
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "le processus fils a été terminé par l'exception 0x%X"
-#: ../../port/exec.c:599
+#: ../../port/exec.c:608
#, c-format
msgid "child process was terminated by signal %s"
msgstr "le processus fils a été terminé par le signal %s"
-#: ../../port/exec.c:602
+#: ../../port/exec.c:611
#, c-format
msgid "child process was terminated by signal %d"
msgstr "le processus fils a été terminé par le signal %d"
-#: ../../port/exec.c:606
+#: ../../port/exec.c:615
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "le processus fils a quitté avec un statut %d non reconnu"
+#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
+#~ msgstr ""
+#~ "instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne « "
+#~ "%s »\n"
+
+#~ msgid ""
+#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" "
+#~ "starting at position %lu\n"
+#~ msgstr ""
+#~ "instruction COPY invalide -- n'a pas pu trouver « from stdin » dans la\n"
+#~ "chaîne « %s » à partir de la position %lu\n"
+
+#~ msgid "restoring large object OID %u\n"
+#~ msgstr "restauration du « Large Object » d'OID %u\n"
+
#~ msgid "cannot reopen stdin\n"
#~ msgstr "ne peut pas rouvrir stdin\n"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/pg_dump/po/ru.po
^
|
@@ -26,8 +26,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-07-10 22:45+0000\n"
-"PO-Revision-Date: 2012-04-03 08:51+0400\n"
+"POT-Creation-Date: 2012-09-29 22:46+0000\n"
+"PO-Revision-Date: 2012-10-02 10:42+0400\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgtranslation-translators@pgfoundry.org>\n"
"Language: ru\n"
@@ -877,7 +877,7 @@
#: pg_backup_custom.c:1118 pg_backup_custom.c:1127 pg_backup_db.c:145
#: pg_backup_db.c:179 pg_backup_db.c:223 pg_backup_db.c:248 pg_backup_db.c:441
#: pg_backup_files.c:114 pg_backup_null.c:72 pg_backup_tar.c:171
-#: pg_backup_tar.c:1012
+#: pg_backup_tar.c:1002
msgid "out of memory\n"
msgstr "нехватка памяти\n"
@@ -1002,7 +1002,7 @@
msgstr[1] "восстановлено %d больших объекта\n"
msgstr[2] "восстановлено %d больших объектов\n"
-#: pg_backup_archiver.c:934 pg_backup_tar.c:730
+#: pg_backup_archiver.c:934 pg_backup_tar.c:720
#, c-format
msgid "restoring large object with OID %u\n"
msgstr "восстановление большого объекта с OID %u\n"
@@ -1062,7 +1062,7 @@
#: pg_backup_archiver.c:1349 pg_backup_archiver.c:1372 pg_backup_custom.c:781
#: pg_backup_custom.c:1040 pg_backup_custom.c:1054 pg_backup_files.c:432
-#: pg_backup_tar.c:587 pg_backup_tar.c:1090 pg_backup_tar.c:1385
+#: pg_backup_tar.c:587 pg_backup_tar.c:1089 pg_backup_tar.c:1384
#, c-format
msgid "could not write to output file: %s\n"
msgstr "не удалось записать в выходной файл: %s\n"
@@ -1098,7 +1098,7 @@
msgstr "слишком большое смещение в файле вывода\n"
#: pg_backup_archiver.c:1716 pg_backup_archiver.c:3028 pg_backup_custom.c:757
-#: pg_backup_files.c:419 pg_backup_tar.c:786
+#: pg_backup_files.c:419 pg_backup_tar.c:776
msgid "unexpected end of file\n"
msgstr "неожиданный конец файла\n"
@@ -1564,7 +1564,7 @@
msgid "could not open large object TOC for output: %s\n"
msgstr "не удалось открыть для записи файл оглавления больших объектов: %s\n"
-#: pg_backup_files.c:510 pg_backup_tar.c:936
+#: pg_backup_files.c:510 pg_backup_tar.c:926
#, c-format
msgid "invalid OID for large object (%u)\n"
msgstr "неверный OID для большого объекта (%u)\n"
@@ -1638,61 +1638,52 @@
#: pg_backup_tar.c:675
#, c-format
-msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
-msgstr "неверный оператор COPY -- слово \"copy\" не найдено в строке \"%s\"\n"
+msgid "unexpected COPY statement syntax: \"%s\"\n"
+msgstr "недопустимый синтаксис оператора COPY: \"%s\"\n"
-#: pg_backup_tar.c:693
-#, c-format
-msgid ""
-"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" "
-"starting at position %lu\n"
-msgstr ""
-"неверный оператор COPY -- указание \"from stdin\" не найдено в строке \"%s"
-"\", начиная с позиции %lu\n"
-
-#: pg_backup_tar.c:881
+#: pg_backup_tar.c:871
msgid "could not write null block at end of tar archive\n"
msgstr "не удалось записать нулевой блок в конец tar-архива\n"
-#: pg_backup_tar.c:1081
+#: pg_backup_tar.c:1080
msgid "archive member too large for tar format\n"
msgstr "компонент архива слишком велик для формата tar\n"
-#: pg_backup_tar.c:1096
+#: pg_backup_tar.c:1095
#, c-format
msgid "could not close temporary file: %s\n"
msgstr "не удалось закрыть временный файл: %s\n"
-#: pg_backup_tar.c:1106
+#: pg_backup_tar.c:1105
#, c-format
msgid "actual file length (%s) does not match expected (%s)\n"
msgstr "действительная длина файла (%s) не равна ожидаемой (%s)\n"
-#: pg_backup_tar.c:1114
+#: pg_backup_tar.c:1113
msgid "could not output padding at end of tar member\n"
msgstr "не удалось записать выравнивание для компонента tar\n"
-#: pg_backup_tar.c:1143
+#: pg_backup_tar.c:1142
#, c-format
msgid "moving from position %s to next member at file position %s\n"
msgstr "переход от позиции %s к следующему компоненту в позиции %s\n"
-#: pg_backup_tar.c:1154
+#: pg_backup_tar.c:1153
#, c-format
msgid "now at file position %s\n"
msgstr "текущая позиция в файле %s\n"
-#: pg_backup_tar.c:1163 pg_backup_tar.c:1194
+#: pg_backup_tar.c:1162 pg_backup_tar.c:1193
#, c-format
msgid "could not find header for file %s in tar archive\n"
msgstr "в архиве tar не найден заголовок для файла %s\n"
-#: pg_backup_tar.c:1178
+#: pg_backup_tar.c:1177
#, c-format
msgid "skipping tar member %s\n"
msgstr "пропускается компонент tar %s\n"
-#: pg_backup_tar.c:1182
+#: pg_backup_tar.c:1181
#, c-format
msgid ""
"dumping data out of order is not supported in this archive format: %s is "
@@ -1701,12 +1692,12 @@
"непоследовательная обработка данных для данного формата архива не "
"поддерживается: требуется компонент %s, но в файле архива прежде идёт %s.\n"
-#: pg_backup_tar.c:1229
+#: pg_backup_tar.c:1228
#, c-format
msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n"
msgstr "реальная позиция в файле отличается от предсказанной (%s и %s)\n"
-#: pg_backup_tar.c:1244
+#: pg_backup_tar.c:1243
#, c-format
msgid "incomplete tar header found (%lu byte)\n"
msgid_plural "incomplete tar header found (%lu bytes)\n"
@@ -1714,12 +1705,12 @@
msgstr[1] "найден неполный tar-заголовок (размер %lu байта)\n"
msgstr[2] "найден неполный tar-заголовок (размер %lu байтов)\n"
-#: pg_backup_tar.c:1282
+#: pg_backup_tar.c:1281
#, c-format
msgid "TOC Entry %s at %s (length %lu, checksum %d)\n"
msgstr "Запись оглавления %s в %s (длина: %lu, контр. сумма: %d)\n"
-#: pg_backup_tar.c:1292
+#: pg_backup_tar.c:1291
#, c-format
msgid ""
"corrupt tar header found in %s (expected %d, computed %d) file position %s\n"
@@ -2205,30 +2196,41 @@
msgid "could not read symbolic link \"%s\""
msgstr "не удалось прочитать символическую ссылку \"%s\""
-#: ../../port/exec.c:586
+#: ../../port/exec.c:595
#, c-format
msgid "child process exited with exit code %d"
msgstr "дочерний процесс завершился с кодом возврата %d"
-#: ../../port/exec.c:590
+#: ../../port/exec.c:599
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "дочерний процесс прерван исключением 0x%X"
-#: ../../port/exec.c:599
+#: ../../port/exec.c:608
#, c-format
msgid "child process was terminated by signal %s"
msgstr "дочерний процесс завершён по сигналу %s"
-#: ../../port/exec.c:602
+#: ../../port/exec.c:611
#, c-format
msgid "child process was terminated by signal %d"
msgstr "дочерний процесс завершён по сигналу %d"
-#: ../../port/exec.c:606
+#: ../../port/exec.c:615
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "дочерний процесс завершился с нераспознанным состоянием %d"
+#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
+#~ msgstr ""
+#~ "неверный оператор COPY -- слово \"copy\" не найдено в строке \"%s\"\n"
+
+#~ msgid ""
+#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" "
+#~ "starting at position %lu\n"
+#~ msgstr ""
+#~ "неверный оператор COPY -- указание \"from stdin\" не найдено в строке \"%s"
+#~ "\", начиная с позиции %lu\n"
+
#~ msgid "restoring large object OID %u\n"
#~ msgstr "восстановление большого объекта с OID %u\n"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/pg_resetxlog/pg_resetxlog.c
^
|
@@ -95,7 +95,6 @@
char *endptr3;
char *DataDir;
int fd;
- char path[MAXPGPATH];
set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_resetxlog"));
@@ -270,13 +269,12 @@
* Check for a postmaster lock file --- if there is one, refuse to
* proceed, on grounds we might be interfering with a live installation.
*/
- snprintf(path, MAXPGPATH, "%s/postmaster.pid", DataDir);
-
- if ((fd = open(path, O_RDONLY, 0)) < 0)
+ if ((fd = open("postmaster.pid", O_RDONLY, 0)) < 0)
{
if (errno != ENOENT)
{
- fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"), progname, path, strerror(errno));
+ fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"),
+ progname, "postmaster.pid", strerror(errno));
exit(1);
}
}
@@ -284,7 +282,7 @@
{
fprintf(stderr, _("%s: lock file \"%s\" exists\n"
"Is a server running? If not, delete the lock file and try again.\n"),
- progname, path);
+ progname, "postmaster.pid");
exit(1);
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/psql/po/fr.po
^
|
@@ -9,8 +9,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-02-20 07:02+0000\n"
-"PO-Revision-Date: 2012-02-20 22:20+0100\n"
+"POT-Creation-Date: 2012-12-02 13:43+0000\n"
+"PO-Revision-Date: 2012-12-02 15:38+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: French <guillaume@lelarge.info>\n"
"Language: fr\n"
@@ -3854,12 +3854,12 @@
#: sql_help.h:306
msgid ""
-"DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n"
+"DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" [ USING usinglist ]\n"
" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
msgstr ""
-"DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n"
+"DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" [ USING liste_using ]\n"
" [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n"
" [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]"
@@ -4314,14 +4314,14 @@
#: sql_help.h:466
msgid ""
-"LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
+"LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
"\n"
"where lockmode is one of:\n"
"\n"
" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
" | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE"
msgstr ""
-"LOCK [ TABLE ] [ ONLY ] nom [, ...] [ IN mode_verrouillage MODE ] [ NOWAIT ]\n"
+"LOCK [ TABLE ] [ ONLY ] nom [ * ] [, ...] [ IN mode_verrouillage MODE ] [ NOWAIT ]\n"
"\n"
"avec mode_verrouillage parmi :\n"
"\n"
@@ -4778,10 +4778,10 @@
#: sql_help.h:562
msgid ""
-"TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n"
+"TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]\n"
" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
msgstr ""
-"TRUNCATE [ TABLE ] [ ONLY ] nom [, ... ]\n"
+"TRUNCATE [ TABLE ] [ ONLY ] nom [ * ] [, ... ]\n"
" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
#: sql_help.h:565
@@ -4798,14 +4798,14 @@
#: sql_help.h:570
msgid ""
-"UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+"UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" SET { column = { expression | DEFAULT } |\n"
" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n"
" [ FROM fromlist ]\n"
" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
msgstr ""
-"UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+"UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" SET { colonne = { expression | DEFAULT } |\n"
" ( colonne [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n"
" [ FROM liste_from ]\n"
@@ -4875,27 +4875,27 @@
msgid "could not read symbolic link \"%s\""
msgstr "n'a pas pu lire le lien symbolique « %s »"
-#: ../../port/exec.c:586
+#: ../../port/exec.c:595
#, c-format
msgid "child process exited with exit code %d"
msgstr "le processus fils a quitté avec le code de sortie %d"
-#: ../../port/exec.c:590
+#: ../../port/exec.c:599
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "le processus fils a été terminé par l'exception 0x%X"
-#: ../../port/exec.c:599
+#: ../../port/exec.c:608
#, c-format
msgid "child process was terminated by signal %s"
msgstr "le processus fils a été terminé par le signal %s"
-#: ../../port/exec.c:602
+#: ../../port/exec.c:611
#, c-format
msgid "child process was terminated by signal %d"
msgstr "le processus fils a été terminé par le signal %d"
-#: ../../port/exec.c:606
+#: ../../port/exec.c:615
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "le processus fils a quitté avec un statut %d non reconnu"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/psql/po/pt_BR.po
^
|
@@ -1,13 +1,13 @@
# Brazilian Portuguese message translation file for psql
# Copyright (C) 2009 PostgreSQL Global Development Group
# This file is distributed under the same license as the PostgreSQL package.
-# Euler Taveira de Oliveira <euler@timbira.com>, 2003-2011.
+# Euler Taveira de Oliveira <euler@timbira.com>, 2003-2012.
#
msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2011-11-30 15:50-0300\n"
+"POT-Creation-Date: 2012-09-20 11:34-0300\n"
"PO-Revision-Date: 2005-11-02 10:30-0300\n"
"Last-Translator: Euler Taveira de Oliveira <euler@timbira.com>\n"
"Language-Team: Brazilian Portuguese <pgbr-dev@listas.postgresql.org.br>\n"
@@ -3751,12 +3751,12 @@
#: sql_help.h:306
msgid ""
-"DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n"
+"DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" [ USING usinglist ]\n"
" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
msgstr ""
-"DELETE FROM [ ONLY ] tabela [ [ AS ] aliás ]\n"
+"DELETE FROM [ ONLY ] tabela [ * ] [ [ AS ] aliás ]\n"
" [ USING lista_util ]\n"
" [ WHERE condição | WHERE CURRENT OF nome_cursor ]\n"
" [ RETURNING * | expressão_saída [ [ AS ] nome_saída ] [, ...] ]"
@@ -4232,14 +4232,14 @@
#: sql_help.h:466
msgid ""
-"LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
+"LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
"\n"
"where lockmode is one of:\n"
"\n"
" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
" | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE"
msgstr ""
-"LOCK [ TABLE ] [ ONLY ] nome [, ...] [ IN modo_bloqueio MODE ] [ NOWAIT ]\n"
+"LOCK [ TABLE ] [ ONLY ] nome [ * ] [, ...] [ IN modo_bloqueio MODE ] [ NOWAIT ]\n"
"\n"
"onde modo_bloqueio é um dos:\n"
"\n"
@@ -4711,10 +4711,10 @@
#: sql_help.h:562
msgid ""
-"TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n"
+"TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]\n"
" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
msgstr ""
-"TRUNCATE [ TABLE ] [ ONLY ] nome [, ...]\n"
+"TRUNCATE [ TABLE ] [ ONLY ] nome [ * ] [, ...]\n"
" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
#: sql_help.h:565
@@ -4731,7 +4731,7 @@
#: sql_help.h:570
msgid ""
-"UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+"UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" SET { column = { expression | DEFAULT } |\n"
" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } "
"[, ...]\n"
@@ -4739,7 +4739,7 @@
" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
msgstr ""
-"UPDATE [ ONLY ] tabela [ [ AS ] aliás ]\n"
+"UPDATE [ ONLY ] tabela [ * ] [ [ AS ] aliás ]\n"
" SET { coluna = { expressão | DEFAULT } |\n"
" ( coluna [, ...] ) = ( { expressão | DEFAULT } [, ...] ) } "
"[, ...]\n"
@@ -4810,27 +4810,27 @@
msgid "could not read symbolic link \"%s\""
msgstr "não pôde ler link simbólico \"%s\""
-#: ../../port/exec.c:586
+#: ../../port/exec.c:595
#, c-format
msgid "child process exited with exit code %d"
msgstr "processo filho terminou com código de saída %d"
-#: ../../port/exec.c:590
+#: ../../port/exec.c:599
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "processo filho foi terminado pela exceção 0x%X"
-#: ../../port/exec.c:599
+#: ../../port/exec.c:608
#, c-format
msgid "child process was terminated by signal %s"
msgstr "processo filho foi terminado pelo sinal %s"
-#: ../../port/exec.c:602
+#: ../../port/exec.c:611
#, c-format
msgid "child process was terminated by signal %d"
msgstr "processo filho foi terminado pelo sinal %d"
-#: ../../port/exec.c:606
+#: ../../port/exec.c:615
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "processo filho terminou com status desconhecido %d"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/psql/po/ru.po
^
|
@@ -24,8 +24,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-07-10 22:44+0000\n"
-"PO-Revision-Date: 2012-04-02 22:12+0400\n"
+"POT-Creation-Date: 2012-09-29 22:44+0000\n"
+"PO-Revision-Date: 2012-10-02 10:50+0400\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgtranslation-translators@pgfoundry.org>\n"
"Language: ru\n"
@@ -437,7 +437,8 @@
"The server (version %d.%d) does not support savepoints for "
"ON_ERROR_ROLLBACK.\n"
msgstr ""
-"Сервер (версия %d.%d) не поддерживает точки останова для ON_ERROR_ROLLBACK.\n"
+"Сервер (версия %d.%d) не поддерживает точки сохранения для "
+"ON_ERROR_ROLLBACK.\n"
#: copy.c:120
msgid "\\copy: arguments required\n"
@@ -3774,12 +3775,12 @@
#: sql_help.h:306
msgid ""
-"DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n"
+"DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" [ USING usinglist ]\n"
" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
msgstr ""
-"DELETE FROM [ ONLY ] таблица [ [ AS ] псевдоним ]\n"
+"DELETE FROM [ ONLY ] таблица [ * ] [ [ AS ] псевдоним ]\n"
" [ USING список_USING ]\n"
" [ WHERE условие | WHERE CURRENT OF имя_курсора ]\n"
" [ RETURNING * | выражение_результата [ [ AS ] имя_результата ] [, ...] ]"
@@ -4257,15 +4258,15 @@
#: sql_help.h:466
msgid ""
-"LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
+"LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
"\n"
"where lockmode is one of:\n"
"\n"
" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
" | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE"
msgstr ""
-"LOCK [ TABLE ] [ ONLY ] имя [, ...] [ IN режим_блокировки MODE ] [ NOWAIT ]\n"
-"\n"
+"LOCK [ TABLE ] [ ONLY ] имя [ * ] [, ...] [ IN режим_блокировки MODE ] "
+"[ NOWAIT ]\n"
"где допустимый режим_блокировки:\n"
"\n"
" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
@@ -4734,10 +4735,10 @@
#: sql_help.h:562
msgid ""
-"TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n"
+"TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]\n"
" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
msgstr ""
-"TRUNCATE [ TABLE ] [ ONLY ] имя [, ... ]\n"
+"TRUNCATE [ TABLE ] [ ONLY ] имя [ * ] [, ... ]\n"
" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
#: sql_help.h:565
@@ -4754,7 +4755,7 @@
#: sql_help.h:570
msgid ""
-"UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+"UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" SET { column = { expression | DEFAULT } |\n"
" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } "
"[, ...]\n"
@@ -4762,7 +4763,7 @@
" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
msgstr ""
-"UPDATE [ ONLY ] таблица [ [ AS ] псевдоним ]\n"
+"UPDATE [ ONLY ] таблица [ * ] [ [ AS ] псевдоним ]\n"
" SET { колонка = { выражение | DEFAULT } |\n"
" ( колонка [, ...] ) = ( { выражение | DEFAULT } [, ...] ) } "
"[, ...]\n"
@@ -4833,27 +4834,27 @@
msgid "could not read symbolic link \"%s\""
msgstr "не удалось прочитать символическую ссылку \"%s\""
-#: ../../port/exec.c:586
+#: ../../port/exec.c:595
#, c-format
msgid "child process exited with exit code %d"
msgstr "дочерний процесс завершился с кодом возврата %d"
-#: ../../port/exec.c:590
+#: ../../port/exec.c:599
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "дочерний процесс прерван исключением 0x%X"
-#: ../../port/exec.c:599
+#: ../../port/exec.c:608
#, c-format
msgid "child process was terminated by signal %s"
msgstr "дочерний процесс завершён по сигналу %s"
-#: ../../port/exec.c:602
+#: ../../port/exec.c:611
#, c-format
msgid "child process was terminated by signal %d"
msgstr "дочерний процесс завершён по сигналу %d"
-#: ../../port/exec.c:606
+#: ../../port/exec.c:615
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "дочерний процесс завершился с нераспознанным состоянием %d"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/psql/psqlscan.c
^
|
@@ -7206,7 +7206,7 @@
/* first byte should always be okay... */
newtxt[i] = txt[i];
i++;
- while (--thislen > 0)
+ while (--thislen > 0 && i < len)
newtxt[i++] = (char) 0xFF;
}
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/bin/psql/psqlscan.l
^
|
@@ -1702,7 +1702,7 @@
/* first byte should always be okay... */
newtxt[i] = txt[i];
i++;
- while (--thislen > 0)
+ while (--thislen > 0 && i < len)
newtxt[i++] = (char) 0xFF;
}
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/catalog/index.h
^
|
@@ -27,6 +27,13 @@
bool tupleIsAlive,
void *state);
+/* Action code for index_set_state_flags */
+typedef enum
+{
+ INDEX_CREATE_SET_READY,
+ INDEX_CREATE_SET_VALID
+} IndexStateFlagsAction;
+
extern Oid index_create(Oid heapRelationId,
const char *indexRelationName,
@@ -70,6 +77,8 @@
extern void validate_index(Oid heapId, Oid indexId, Snapshot snapshot);
+extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action);
+
extern void reindex_index(Oid indexId);
extern bool reindex_relation(Oid relid, bool toast_too);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/catalog/pg_index.h
^
|
@@ -86,4 +86,12 @@
#define INDOPTION_DESC 0x0001 /* values are in reverse order */
#define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */
+/*
+ * Use of these macros is recommended over direct examination of the state
+ * flag columns where possible; this allows source code compatibility with
+ * 9.2 and up.
+ */
+#define IndexIsValid(indexForm) ((indexForm)->indisvalid)
+#define IndexIsReady(indexForm) ((indexForm)->indisready)
+
#endif /* PG_INDEX_H */
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/libpq/pqcomm.h
^
|
@@ -74,6 +74,19 @@
(port))
/*
+ * The maximum workable length of a socket path is what will fit into
+ * struct sockaddr_un. This is usually only 100 or so bytes :-(.
+ *
+ * For consistency, always pass a MAXPGPATH-sized buffer to UNIXSOCK_PATH(),
+ * then complain if the resulting string is >= UNIXSOCK_PATH_BUFLEN bytes.
+ * (Because the standard API for getaddrinfo doesn't allow it to complain in
+ * a useful way when the socket pathname is too long, we have to test for
+ * this explicitly, instead of just letting the subroutine return an error.)
+ */
+#define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path)
+
+
+/*
* These manipulate the frontend/backend protocol version number.
*
* The major number should be incremented for incompatible changes. The minor
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/nodes/parsenodes.h
^
|
@@ -1131,7 +1131,9 @@
AT_EnableReplicaRule, /* ENABLE REPLICA RULE name */
AT_DisableRule, /* DISABLE RULE name */
AT_AddInherit, /* INHERIT parent */
- AT_DropInherit /* NO INHERIT parent */
+ AT_DropInherit, /* NO INHERIT parent */
+ /* this will be in a more natural position in 9.3: */
+ AT_ReAddConstraint /* internal to commands/tablecmds.c */
} AlterTableType;
typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/nodes/relation.h
^
|
@@ -539,6 +539,7 @@
Expr *em_expr; /* the expression represented */
Relids em_relids; /* all relids appearing in em_expr */
+ Relids em_nullable_relids; /* nullable by lower outer joins */
bool em_is_const; /* expression is pseudoconstant? */
bool em_is_child; /* derived version for a child relation? */
Oid em_datatype; /* the "nominal type" used by the opfamily */
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/optimizer/planmain.h
^
|
@@ -94,12 +94,14 @@
Expr *item1,
Expr *item2,
Relids qualscope,
+ Relids nullable_relids,
bool below_outer_join,
bool both_const);
extern RestrictInfo *build_implied_join_equality(Oid opno,
Expr *item1,
Expr *item2,
- Relids qualscope);
+ Relids qualscope,
+ Relids nullable_relids);
/*
* prototypes for plan/setrefs.c
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/include/pg_config.h.win32
^
|
@@ -563,16 +563,16 @@
#define PACKAGE_NAME "PostgreSQL"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "PostgreSQL 8.4.14"
+#define PACKAGE_STRING "PostgreSQL 8.4.15"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "8.4.14"
+#define PACKAGE_VERSION "8.4.15"
/* PostgreSQL version as a string */
-#define PG_VERSION "8.4.14"
+#define PG_VERSION "8.4.15"
/* PostgreSQL version as a number */
-#define PG_VERSION_NUM 80414
+#define PG_VERSION_NUM 80415
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "postgresql"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/ecpg/preproc/variable.c
^
|
@@ -100,7 +100,11 @@
}
break;
case '-':
- return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
+ if (members->type->type == ECPGt_array)
+ return (find_struct_member(name, ++end, members->type->u.element->u.members, brace_level));
+ else
+ return (find_struct_member(name, ++end, members->type->u.members, brace_level));
+ break;
break;
case '.':
if (members->type->type == ECPGt_array)
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/libpq/fe-connect.c
^
|
@@ -790,7 +790,7 @@
connectDBStart(PGconn *conn)
{
int portnum;
- char portstr[128];
+ char portstr[MAXPGPATH];
struct addrinfo *addrs = NULL;
struct addrinfo hint;
const char *node;
@@ -842,6 +842,15 @@
node = NULL;
hint.ai_family = AF_UNIX;
UNIXSOCK_PATH(portstr, portnum, conn->pgunixsocket);
+ if (strlen(portstr) >= UNIXSOCK_PATH_BUFLEN)
+ {
+ appendPQExpBuffer(&conn->errorMessage,
+ libpq_gettext("Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n"),
+ portstr,
+ (int) (UNIXSOCK_PATH_BUFLEN - 1));
+ conn->options_valid = false;
+ goto connect_errReturn;
+ }
#else
/* Without Unix sockets, default to localhost instead */
node = "localhost";
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/libpq/fe-lobj.c
^
|
@@ -571,10 +571,16 @@
if (nbytes < 0)
{
+ /* We must do lo_close before setting the errorMessage */
+ int save_errno = errno;
+
+ (void) lo_close(conn, lobj);
+ (void) close(fd);
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("could not read from file \"%s\": %s\n"),
- filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
- lobjOid = InvalidOid;
+ filename,
+ pqStrerror(save_errno, sebuf, sizeof(sebuf)));
+ return InvalidOid;
}
(void) close(fd);
@@ -619,11 +625,15 @@
*/
fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, 0666);
if (fd < 0)
- { /* error */
+ {
+ /* We must do lo_close before setting the errorMessage */
+ int save_errno = errno;
+
+ (void) lo_close(conn, lobj);
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("could not open file \"%s\": %s\n"),
- filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
- (void) lo_close(conn, lobj);
+ filename,
+ pqStrerror(save_errno, sebuf, sizeof(sebuf)));
return -1;
}
@@ -635,11 +645,15 @@
tmp = write(fd, buf, nbytes);
if (tmp != nbytes)
{
- printfPQExpBuffer(&conn->errorMessage,
- libpq_gettext("could not write to file \"%s\": %s\n"),
- filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
+ /* We must do lo_close before setting the errorMessage */
+ int save_errno = errno;
+
(void) lo_close(conn, lobj);
(void) close(fd);
+ printfPQExpBuffer(&conn->errorMessage,
+ libpq_gettext("could not write to file \"%s\": %s\n"),
+ filename,
+ pqStrerror(save_errno, sebuf, sizeof(sebuf)));
return -1;
}
}
@@ -657,7 +671,8 @@
result = -1;
}
- if (close(fd))
+ /* if we already failed, don't overwrite that msg with a close error */
+ if (close(fd) && result >= 0)
{
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("could not write to file \"%s\": %s\n"),
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/libpq/libpq-dist.rc
^
|
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 8,4,14,12263
- PRODUCTVERSION 8,4,14,12263
+ FILEVERSION 8,4,15,12338
+ PRODUCTVERSION 8,4,15,12338
FILEFLAGSMASK 0x3fL
FILEFLAGS 0
FILEOS VOS__WINDOWS32
@@ -15,13 +15,13 @@
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "PostgreSQL Access Library\0"
- VALUE "FileVersion", "8.4.14\0"
+ VALUE "FileVersion", "8.4.15\0"
VALUE "InternalName", "libpq\0"
VALUE "LegalCopyright", "Copyright (C) 2012\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "libpq.dll\0"
VALUE "ProductName", "PostgreSQL\0"
- VALUE "ProductVersion", "8.4.14\0"
+ VALUE "ProductVersion", "8.4.15\0"
END
END
BLOCK "VarFileInfo"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/libpq/libpq.rc.in
^
|
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 8,4,14,0
- PRODUCTVERSION 8,4,14,0
+ FILEVERSION 8,4,15,0
+ PRODUCTVERSION 8,4,15,0
FILEFLAGSMASK 0x3fL
FILEFLAGS 0
FILEOS VOS__WINDOWS32
@@ -15,13 +15,13 @@
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "PostgreSQL Access Library\0"
- VALUE "FileVersion", "8.4.14\0"
+ VALUE "FileVersion", "8.4.15\0"
VALUE "InternalName", "libpq\0"
VALUE "LegalCopyright", "Copyright (C) 2012\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "libpq.dll\0"
VALUE "ProductName", "PostgreSQL\0"
- VALUE "ProductVersion", "8.4.14\0"
+ VALUE "ProductVersion", "8.4.15\0"
END
END
BLOCK "VarFileInfo"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/libpq/po/de.po
^
|
@@ -1,5 +1,5 @@
# German message translation file for libpq
-# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2009.
+# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2012.
#
# Use these quotes: »%s«
#
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-04-18 15:30+0000\n"
-"PO-Revision-Date: 2012-07-13 23:34+0300\n"
+"POT-Creation-Date: 2012-12-01 23:10+0000\n"
+"PO-Revision-Date: 2012-12-02 00:59-0500\n"
"Last-Translator: Peter Eisentraut <peter_e@gmx.net>\n"
"Language-Team: German <peter_e@gmx.net>\n"
"Language: de\n"
@@ -53,10 +53,10 @@
msgid "SSPI continuation error"
msgstr "SSPI-Fortsetzungsfehler"
-#: fe-auth.c:556 fe-auth.c:630 fe-auth.c:665 fe-auth.c:764 fe-connect.c:1342
-#: fe-connect.c:2630 fe-connect.c:2848 fe-connect.c:3219 fe-connect.c:3228
-#: fe-connect.c:3365 fe-connect.c:3411 fe-connect.c:3429 fe-exec.c:3091
-#: fe-lobj.c:696 fe-protocol2.c:1027 fe-protocol3.c:1421 fe-secure.c:708
+#: fe-auth.c:556 fe-auth.c:630 fe-auth.c:665 fe-auth.c:764 fe-connect.c:1351
+#: fe-connect.c:2639 fe-connect.c:2857 fe-connect.c:3228 fe-connect.c:3237
+#: fe-connect.c:3374 fe-connect.c:3420 fe-connect.c:3438 fe-exec.c:3091
+#: fe-lobj.c:711 fe-protocol2.c:1027 fe-protocol3.c:1421 fe-secure.c:708
msgid "out of memory\n"
msgstr "Speicher aufgebraucht\n"
@@ -132,180 +132,187 @@
"\tLäuft der Server auf dem Host »%s« und akzeptiert er\n"
"\tTCP/IP-Verbindungen auf Port %s?\n"
-#: fe-connect.c:858
+#: fe-connect.c:848
+#, c-format
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n"
+msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)\n"
+
+#: fe-connect.c:867
#, c-format
msgid "could not translate host name \"%s\" to address: %s\n"
msgstr "konnte Hostname »%s« nicht in Adresse übersetzen: %s\n"
-#: fe-connect.c:862
+#: fe-connect.c:871
#, c-format
msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n"
msgstr "konnte Unix-Domain-Socket-Pfad »%s« nicht in Adresse übersetzen: %s\n"
-#: fe-connect.c:1069
+#: fe-connect.c:1078
msgid "invalid connection state, probably indicative of memory corruption\n"
msgstr "ungültiger Verbindungszustand, möglicherweise ein Speicherproblem\n"
-#: fe-connect.c:1112
+#: fe-connect.c:1121
#, c-format
msgid "could not create socket: %s\n"
msgstr "konnte Socket nicht erzeugen: %s\n"
-#: fe-connect.c:1135
+#: fe-connect.c:1144
#, c-format
msgid "could not set socket to non-blocking mode: %s\n"
msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %s\n"
-#: fe-connect.c:1147
+#: fe-connect.c:1156
#, c-format
msgid "could not set socket to close-on-exec mode: %s\n"
msgstr "konnte Socket nicht auf »Close on exec«-Modus umstellen: %s\n"
-#: fe-connect.c:1234
+#: fe-connect.c:1243
#, c-format
msgid "could not get socket error status: %s\n"
msgstr "konnte Socket-Fehlerstatus nicht ermitteln: %s\n"
-#: fe-connect.c:1272
+#: fe-connect.c:1281
#, c-format
msgid "could not get client address from socket: %s\n"
msgstr "konnte Client-Adresse vom Socket nicht ermitteln: %s\n"
-#: fe-connect.c:1316
+#: fe-connect.c:1325
#, c-format
msgid "could not send SSL negotiation packet: %s\n"
msgstr "konnte Paket zur SSL-Verhandlung nicht senden: %s\n"
-#: fe-connect.c:1355
+#: fe-connect.c:1364
#, c-format
msgid "could not send startup packet: %s\n"
msgstr "konnte Startpaket nicht senden: %s\n"
-#: fe-connect.c:1425
+#: fe-connect.c:1434
msgid "server does not support SSL, but SSL was required\n"
msgstr "Server unterstützt kein SSL, aber SSL wurde verlangt\n"
-#: fe-connect.c:1451
+#: fe-connect.c:1460
#, c-format
msgid "received invalid response to SSL negotiation: %c\n"
msgstr "ungültige Antwort auf SSL-Verhandlungspaket empfangen: %c\n"
-#: fe-connect.c:1530 fe-connect.c:1563
+#: fe-connect.c:1539 fe-connect.c:1572
#, c-format
msgid "expected authentication request from server, but received %c\n"
msgstr ""
"Authentifizierungsanfrage wurde vom Server erwartet, aber %c wurde "
"empfangen\n"
-#: fe-connect.c:1742
+#: fe-connect.c:1751
#, c-format
msgid "out of memory allocating GSSAPI buffer (%i)"
msgstr "Speicher aufgebraucht beim Anlegen des GSSAPI-Puffers (%i)"
-#: fe-connect.c:1827
+#: fe-connect.c:1836
msgid "unexpected message from server during startup\n"
msgstr "unerwartete Nachricht vom Server beim Start\n"
-#: fe-connect.c:1895
+#: fe-connect.c:1904
#, c-format
msgid "invalid connection state %c, probably indicative of memory corruption\n"
msgstr "ungültiger Verbindungszustand %c, möglicherweise ein Speicherproblem\n"
-#: fe-connect.c:2238 fe-connect.c:2298
+#: fe-connect.c:2247 fe-connect.c:2307
#, c-format
msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n"
msgstr "PGEventProc »%s« während PGEVT_CONNRESET-Ereignis fehlgeschlagen\n"
-#: fe-connect.c:2643
+#: fe-connect.c:2652
#, c-format
msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n"
msgstr "ungÜltige LDAP-URL »%s«: Schema muss ldap:// sein\n"
-#: fe-connect.c:2658
+#: fe-connect.c:2667
#, c-format
msgid "invalid LDAP URL \"%s\": missing distinguished name\n"
msgstr "ungültige LDAP-URL »%s«: Distinguished Name fehlt\n"
-#: fe-connect.c:2669 fe-connect.c:2722
+#: fe-connect.c:2678 fe-connect.c:2731
#, c-format
msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n"
msgstr "ungültige LDAP-URL »%s«: muss genau ein Attribut haben\n"
-#: fe-connect.c:2679 fe-connect.c:2736
+#: fe-connect.c:2688 fe-connect.c:2745
#, c-format
msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n"
msgstr "ungültige LDAP-URL »%s«: Suchbereich fehlt (base/one/sub)\n"
-#: fe-connect.c:2690
+#: fe-connect.c:2699
#, c-format
msgid "invalid LDAP URL \"%s\": no filter\n"
msgstr "ungültige LDAP-URL »%s«: kein Filter\n"
-#: fe-connect.c:2711
+#: fe-connect.c:2720
#, c-format
msgid "invalid LDAP URL \"%s\": invalid port number\n"
msgstr "ungültige LDAP-URL »%s«: ungültige Portnummer\n"
-#: fe-connect.c:2745
+#: fe-connect.c:2754
msgid "could not create LDAP structure\n"
msgstr "konnte LDAP-Struktur nicht erzeugen\n"
-#: fe-connect.c:2787
+#: fe-connect.c:2796
#, c-format
msgid "lookup on LDAP server failed: %s\n"
msgstr "Suche auf LDAP-Server fehlgeschlagen: %s\n"
-#: fe-connect.c:2798
+#: fe-connect.c:2807
msgid "more than one entry found on LDAP lookup\n"
msgstr "LDAP-Suche ergab mehr als einen Eintrag\n"
-#: fe-connect.c:2799 fe-connect.c:2811
+#: fe-connect.c:2808 fe-connect.c:2820
msgid "no entry found on LDAP lookup\n"
msgstr "kein Eintrag gefunden bei LDAP-Suche\n"
-#: fe-connect.c:2822 fe-connect.c:2835
+#: fe-connect.c:2831 fe-connect.c:2844
msgid "attribute has no values on LDAP lookup\n"
msgstr "Attribut hat keine Werte bei LDAP-Suche\n"
-#: fe-connect.c:2887 fe-connect.c:2906 fe-connect.c:3267
+#: fe-connect.c:2896 fe-connect.c:2915 fe-connect.c:3276
#, c-format
msgid "missing \"=\" after \"%s\" in connection info string\n"
msgstr "fehlendes »=« nach »%s« in der Zeichenkette der Verbindungsdaten\n"
-#: fe-connect.c:2970 fe-connect.c:3349
+#: fe-connect.c:2979 fe-connect.c:3358
#, c-format
msgid "invalid connection option \"%s\"\n"
msgstr "ungültige Verbindungsoption »%s«\n"
-#: fe-connect.c:2986 fe-connect.c:3316
+#: fe-connect.c:2995 fe-connect.c:3325
msgid "unterminated quoted string in connection info string\n"
-msgstr "fehlendes schließendes Anführungszeichen (\") in der Zeichenkette der Verbindungsdaten\n"
+msgstr ""
+"fehlendes schließendes Anführungszeichen (\") in der Zeichenkette der "
+"Verbindungsdaten\n"
-#: fe-connect.c:3029
+#: fe-connect.c:3038
#, c-format
msgid "ERROR: service file \"%s\" not found\n"
msgstr "FEHLER: Servicedatei »%s« nicht gefunden\n"
-#: fe-connect.c:3042
+#: fe-connect.c:3051
#, c-format
msgid "ERROR: line %d too long in service file \"%s\"\n"
msgstr "FEHLER: Zeile %d zu lang in Servicedatei »%s«\n"
-#: fe-connect.c:3114 fe-connect.c:3141
+#: fe-connect.c:3123 fe-connect.c:3150
#, c-format
msgid "ERROR: syntax error in service file \"%s\", line %d\n"
msgstr "FEHLER: Syntaxfehler in Servicedatei »%s«, Zeile %d\n"
-#: fe-connect.c:3597
+#: fe-connect.c:3606
msgid "connection pointer is NULL\n"
msgstr "Verbindung ist ein NULL-Zeiger\n"
-#: fe-connect.c:3880
+#: fe-connect.c:3889
#, c-format
msgid "WARNING: password file \"%s\" is not a plain file\n"
msgstr "WARNUNG: Passwortdatei »%s« ist keine normale Datei\n"
-#: fe-connect.c:3889
+#: fe-connect.c:3898
#, c-format
msgid ""
"WARNING: password file \"%s\" has group or world access; permissions should "
@@ -409,55 +416,55 @@
msgid "cannot determine OID of function lo_create\n"
msgstr "kann OID der Funktion lo_create nicht ermitteln\n"
-#: fe-lobj.c:525 fe-lobj.c:624
+#: fe-lobj.c:525 fe-lobj.c:634
#, c-format
msgid "could not open file \"%s\": %s\n"
msgstr "konnte Datei »%s« nicht öffnen: %s\n"
-#: fe-lobj.c:575
+#: fe-lobj.c:580
#, c-format
msgid "could not read from file \"%s\": %s\n"
msgstr "konnte nicht aus Datei »%s« nicht lesen: %s\n"
-#: fe-lobj.c:639 fe-lobj.c:663
+#: fe-lobj.c:654 fe-lobj.c:678
#, c-format
msgid "could not write to file \"%s\": %s\n"
msgstr "konnte nicht in Datei »%s« schreiben: %s\n"
-#: fe-lobj.c:744
+#: fe-lobj.c:759
msgid "query to initialize large object functions did not return data\n"
msgstr ""
"Abfrage zur Initialisierung der Large-Object-Funktionen ergab keine Daten\n"
-#: fe-lobj.c:785
+#: fe-lobj.c:800
msgid "cannot determine OID of function lo_open\n"
msgstr "kann OID der Funktion lo_open nicht ermitteln\n"
-#: fe-lobj.c:792
+#: fe-lobj.c:807
msgid "cannot determine OID of function lo_close\n"
msgstr "kann OID der Funktion lo_close nicht ermitteln\n"
-#: fe-lobj.c:799
+#: fe-lobj.c:814
msgid "cannot determine OID of function lo_creat\n"
msgstr "kann OID der Funktion lo_creat nicht ermitteln\n"
-#: fe-lobj.c:806
+#: fe-lobj.c:821
msgid "cannot determine OID of function lo_unlink\n"
msgstr "kann OID der Funktion lo_unlink nicht ermitteln\n"
-#: fe-lobj.c:813
+#: fe-lobj.c:828
msgid "cannot determine OID of function lo_lseek\n"
msgstr "kann OID der Funktion lo_lseek nicht ermitteln\n"
-#: fe-lobj.c:820
+#: fe-lobj.c:835
msgid "cannot determine OID of function lo_tell\n"
msgstr "kann OID der Funktion lo_tell nicht ermitteln\n"
-#: fe-lobj.c:827
+#: fe-lobj.c:842
msgid "cannot determine OID of function loread\n"
msgstr "kann OID der Funktion loread nicht ermitteln\n"
-#: fe-lobj.c:834
+#: fe-lobj.c:849
msgid "cannot determine OID of function lowrite\n"
msgstr "kann OID der Funktion lowrite nicht ermitteln\n"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/interfaces/libpq/po/fr.po
^
|
@@ -11,8 +11,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2012-05-29 04:30+0000\n"
-"PO-Revision-Date: 2012-05-29 20:02+0100\n"
+"POT-Creation-Date: 2012-12-02 13:40+0000\n"
+"PO-Revision-Date: 2012-12-02 15:36+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: PostgreSQLfr <pgsql-fr-generale@postgresql.org>\n"
"Language: \n"
@@ -62,16 +62,16 @@
#: fe-auth.c:630
#: fe-auth.c:665
#: fe-auth.c:764
-#: fe-connect.c:1342
-#: fe-connect.c:2630
-#: fe-connect.c:2848
-#: fe-connect.c:3219
+#: fe-connect.c:1351
+#: fe-connect.c:2639
+#: fe-connect.c:2857
#: fe-connect.c:3228
-#: fe-connect.c:3365
-#: fe-connect.c:3411
-#: fe-connect.c:3429
+#: fe-connect.c:3237
+#: fe-connect.c:3374
+#: fe-connect.c:3420
+#: fe-connect.c:3438
#: fe-exec.c:3091
-#: fe-lobj.c:696
+#: fe-lobj.c:711
#: fe-protocol2.c:1027
#: fe-protocol3.c:1421
#: fe-secure.c:708
@@ -148,195 +148,200 @@
"\tLe serveur est-il actif sur l'hôte « %s » et accepte-t-il les connexions\n"
"\tTCP/IP sur le port %s ?\n"
-#: fe-connect.c:858
+#: fe-connect.c:848
+#, c-format
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n"
+msgstr "Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)\n"
+
+#: fe-connect.c:867
#, c-format
msgid "could not translate host name \"%s\" to address: %s\n"
msgstr "n'a pas pu traduire le nom d'hôte « %s » en adresse : %s\n"
-#: fe-connect.c:862
+#: fe-connect.c:871
#, c-format
msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n"
msgstr ""
"n'a pas pu traduire le chemin de la socket du domaine Unix « %s » en adresse :\n"
"%s\n"
-#: fe-connect.c:1069
+#: fe-connect.c:1078
msgid "invalid connection state, probably indicative of memory corruption\n"
msgstr "état de connexion invalide, indique probablement une corruption de mémoire\n"
-#: fe-connect.c:1112
+#: fe-connect.c:1121
#, c-format
msgid "could not create socket: %s\n"
msgstr "n'a pas pu créer la socket : %s\n"
-#: fe-connect.c:1135
+#: fe-connect.c:1144
#, c-format
msgid "could not set socket to non-blocking mode: %s\n"
msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %s\n"
-#: fe-connect.c:1147
+#: fe-connect.c:1156
#, c-format
msgid "could not set socket to close-on-exec mode: %s\n"
msgstr "n'a pas pu paramétrer la socket en mode close-on-exec : %s\n"
-#: fe-connect.c:1234
+#: fe-connect.c:1243
#, c-format
msgid "could not get socket error status: %s\n"
msgstr "n'a pas pu déterminer le statut d'erreur de la socket : %s\n"
-#: fe-connect.c:1272
+#: fe-connect.c:1281
#, c-format
msgid "could not get client address from socket: %s\n"
msgstr "n'a pas pu obtenir l'adresse du client depuis la socket : %s\n"
-#: fe-connect.c:1316
+#: fe-connect.c:1325
#, c-format
msgid "could not send SSL negotiation packet: %s\n"
msgstr "n'a pas pu transmettre le paquet de négociation SSL : %s\n"
-#: fe-connect.c:1355
+#: fe-connect.c:1364
#, c-format
msgid "could not send startup packet: %s\n"
msgstr "n'a pas pu transmettre le paquet de démarrage : %s\n"
-#: fe-connect.c:1425
+#: fe-connect.c:1434
msgid "server does not support SSL, but SSL was required\n"
msgstr "le serveur ne supporte pas SSL alors que SSL était réclamé\n"
-#: fe-connect.c:1451
+#: fe-connect.c:1460
#, c-format
msgid "received invalid response to SSL negotiation: %c\n"
msgstr "a reçu une réponse invalide à la négociation SSL : %c\n"
-#: fe-connect.c:1530
-#: fe-connect.c:1563
+#: fe-connect.c:1539
+#: fe-connect.c:1572
#, c-format
msgid "expected authentication request from server, but received %c\n"
msgstr ""
"attendait une requête d'authentification en provenance du serveur, mais a\n"
" reçu %c\n"
-#: fe-connect.c:1742
+#: fe-connect.c:1751
#, c-format
msgid "out of memory allocating GSSAPI buffer (%i)"
msgstr "mémoire épuisée lors de l'allocation du tampon GSSAPI (%i)"
-#: fe-connect.c:1827
+#: fe-connect.c:1836
msgid "unexpected message from server during startup\n"
msgstr "message inattendu du serveur lors du démarrage\n"
-#: fe-connect.c:1895
+#: fe-connect.c:1904
#, c-format
msgid "invalid connection state %c, probably indicative of memory corruption\n"
msgstr ""
"état de connexion invalide (%c), indique probablement une corruption de\n"
" mémoire\n"
-#: fe-connect.c:2238
-#: fe-connect.c:2298
+#: fe-connect.c:2247
+#: fe-connect.c:2307
#, c-format
msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n"
msgstr "échec de PGEventProc « %s » lors de l'événement PGEVT_CONNRESET\n"
-#: fe-connect.c:2643
+#: fe-connect.c:2652
#, c-format
msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n"
msgstr "URL LDAP « %s » invalide : le schéma doit être ldap://\n"
-#: fe-connect.c:2658
+#: fe-connect.c:2667
#, c-format
msgid "invalid LDAP URL \"%s\": missing distinguished name\n"
msgstr "URL LDAP « %s » invalide : le « distinguished name » manque\n"
-#: fe-connect.c:2669
-#: fe-connect.c:2722
+#: fe-connect.c:2678
+#: fe-connect.c:2731
#, c-format
msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n"
msgstr "URL LDAP « %s » invalide : doit avoir exactement un attribut\n"
-#: fe-connect.c:2679
-#: fe-connect.c:2736
+#: fe-connect.c:2688
+#: fe-connect.c:2745
#, c-format
msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n"
msgstr "URL LDAP « %s » invalide : doit avoir une échelle de recherche (base/un/sous)\n"
-#: fe-connect.c:2690
+#: fe-connect.c:2699
#, c-format
msgid "invalid LDAP URL \"%s\": no filter\n"
msgstr "URL LDAP « %s » invalide : aucun filtre\n"
-#: fe-connect.c:2711
+#: fe-connect.c:2720
#, c-format
msgid "invalid LDAP URL \"%s\": invalid port number\n"
msgstr "URL LDAP « %s » invalide : numéro de port invalide\n"
-#: fe-connect.c:2745
+#: fe-connect.c:2754
msgid "could not create LDAP structure\n"
msgstr "n'a pas pu créer la structure LDAP\n"
-#: fe-connect.c:2787
+#: fe-connect.c:2796
#, c-format
msgid "lookup on LDAP server failed: %s\n"
msgstr "échec de la recherche sur le serveur LDAP : %s\n"
-#: fe-connect.c:2798
+#: fe-connect.c:2807
msgid "more than one entry found on LDAP lookup\n"
msgstr "plusieurs entrées trouvées pendant la recherche LDAP\n"
-#: fe-connect.c:2799
-#: fe-connect.c:2811
+#: fe-connect.c:2808
+#: fe-connect.c:2820
msgid "no entry found on LDAP lookup\n"
msgstr "aucune entrée trouvée pendant la recherche LDAP\n"
-#: fe-connect.c:2822
-#: fe-connect.c:2835
+#: fe-connect.c:2831
+#: fe-connect.c:2844
msgid "attribute has no values on LDAP lookup\n"
msgstr "l'attribut n'a pas de valeur après la recherche LDAP\n"
-#: fe-connect.c:2887
-#: fe-connect.c:2906
-#: fe-connect.c:3267
+#: fe-connect.c:2896
+#: fe-connect.c:2915
+#: fe-connect.c:3276
#, c-format
msgid "missing \"=\" after \"%s\" in connection info string\n"
msgstr "« = » manquant après « %s » dans la chaîne des paramètres de connexion\n"
-#: fe-connect.c:2970
-#: fe-connect.c:3349
+#: fe-connect.c:2979
+#: fe-connect.c:3358
#, c-format
msgid "invalid connection option \"%s\"\n"
msgstr "option de connexion « %s » invalide\n"
-#: fe-connect.c:2986
-#: fe-connect.c:3316
+#: fe-connect.c:2995
+#: fe-connect.c:3325
msgid "unterminated quoted string in connection info string\n"
msgstr "guillemets non refermés dans la chaîne des paramètres de connexion\n"
-#: fe-connect.c:3029
+#: fe-connect.c:3038
#, c-format
msgid "ERROR: service file \"%s\" not found\n"
msgstr "ERREUR : fichier de service « %s » introuvable\n"
-#: fe-connect.c:3042
+#: fe-connect.c:3051
#, c-format
msgid "ERROR: line %d too long in service file \"%s\"\n"
msgstr "ERREUR : ligne %d trop longue dans le fichier service « %s »\n"
-#: fe-connect.c:3114
-#: fe-connect.c:3141
+#: fe-connect.c:3123
+#: fe-connect.c:3150
#, c-format
msgid "ERROR: syntax error in service file \"%s\", line %d\n"
msgstr "ERREUR : erreur de syntaxe dans le fichier service « %s », ligne %d\n"
-#: fe-connect.c:3597
+#: fe-connect.c:3606
msgid "connection pointer is NULL\n"
msgstr "le pointeur de connexion est NULL\n"
-#: fe-connect.c:3880
+#: fe-connect.c:3889
#, c-format
msgid "WARNING: password file \"%s\" is not a plain file\n"
msgstr "ATTENTION : le fichier de mots de passe « %s » n'est pas un fichier texte\n"
-#: fe-connect.c:3889
+#: fe-connect.c:3898
#, c-format
msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n"
msgstr ""
@@ -450,57 +455,57 @@
msgstr "ne peut pas déterminer l'OID de la fonction lo_create\n"
#: fe-lobj.c:525
-#: fe-lobj.c:624
+#: fe-lobj.c:634
#, c-format
msgid "could not open file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier « %s » : %s\n"
-#: fe-lobj.c:575
+#: fe-lobj.c:580
#, c-format
msgid "could not read from file \"%s\": %s\n"
msgstr "n'a pas pu lire le fichier « %s » : %s\n"
-#: fe-lobj.c:639
-#: fe-lobj.c:663
+#: fe-lobj.c:654
+#: fe-lobj.c:678
#, c-format
msgid "could not write to file \"%s\": %s\n"
msgstr "n'a pas pu écrire dans le fichier « %s » : %s\n"
-#: fe-lobj.c:744
+#: fe-lobj.c:759
msgid "query to initialize large object functions did not return data\n"
msgstr ""
"la requête d'initialisation des fonctions pour « Larges Objects » ne renvoie\n"
"pas de données\n"
-#: fe-lobj.c:785
+#: fe-lobj.c:800
msgid "cannot determine OID of function lo_open\n"
msgstr "ne peut pas déterminer l'OID de la fonction lo_open\n"
-#: fe-lobj.c:792
+#: fe-lobj.c:807
msgid "cannot determine OID of function lo_close\n"
msgstr "ne peut pas déterminer l'OID de la fonction lo_close\n"
-#: fe-lobj.c:799
+#: fe-lobj.c:814
msgid "cannot determine OID of function lo_creat\n"
msgstr "ne peut pas déterminer l'OID de la fonction lo_creat\n"
-#: fe-lobj.c:806
+#: fe-lobj.c:821
msgid "cannot determine OID of function lo_unlink\n"
msgstr "ne peut pas déterminer l'OID de la fonction lo_unlink\n"
-#: fe-lobj.c:813
+#: fe-lobj.c:828
msgid "cannot determine OID of function lo_lseek\n"
msgstr "ne peut pas déterminer l'OID de la fonction lo_lseek\n"
-#: fe-lobj.c:820
+#: fe-lobj.c:835
msgid "cannot determine OID of function lo_tell\n"
msgstr "ne peut pas déterminer l'OID de la fonction lo_tell\n"
-#: fe-lobj.c:827
+#: fe-lobj.c:842
msgid "cannot determine OID of function loread\n"
msgstr "ne peut pas déterminer l'OID de la fonction loread\n"
-#: fe-lobj.c:834
+#: fe-lobj.c:849
msgid "cannot determine OID of function lowrite\n"
msgstr "ne peut pas déterminer l'OID de la fonction lowrite\n"
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/makefiles/Makefile.aix
^
|
@@ -27,12 +27,13 @@
POSTGRES_IMP= postgres.imp
ifdef PGXS
-BE_DLLLIBS= -Wl,-bI:$(bindir)/postgres/$(POSTGRES_IMP)
+BE_DLLLIBS= -Wl,-bI:$(pkglibdir)/$(POSTGRES_IMP)
else
BE_DLLLIBS= -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP)
endif
-MKLDEXPORT=$(top_srcdir)/src/backend/port/aix/mkldexport.sh
+MKLDEXPORT_DIR=src/backend/port/aix
+MKLDEXPORT=$(top_srcdir)/$(MKLDEXPORT_DIR)/mkldexport.sh
%.exp: %.o
$(MKLDEXPORT) $^ >$@
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/port/win32ver.rc
^
|
@@ -2,8 +2,8 @@
#include "pg_config.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 8,4,14,0
- PRODUCTVERSION 8,4,14,0
+ FILEVERSION 8,4,15,0
+ PRODUCTVERSION 8,4,15,0
FILEFLAGSMASK 0x17L
FILEFLAGS 0x0L
FILEOS VOS_NT_WINDOWS32
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/examples/testlo.c
^
|
@@ -251,7 +251,7 @@
printf("exporting large object to file \"%s\" ...\n", out_filename);
/* exportFile(conn, lobjOid, out_filename); */
- if (!lo_export(conn, lobjOid, out_filename))
+ if (lo_export(conn, lobjOid, out_filename) < 0)
fprintf(stderr, "%s\n", PQerrorMessage(conn));
}
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/alter_table.out
^
|
@@ -1456,6 +1456,27 @@
(3 rows)
drop table another;
+-- ALTER TYPE with a check constraint and a child table (bug before Nov 2012)
+CREATE TABLE test_inh_check (a float check (a > 10.2));
+CREATE TABLE test_inh_check_child() INHERITS(test_inh_check);
+ALTER TABLE test_inh_check ALTER COLUMN a TYPE numeric;
+\d test_inh_check
+Table "public.test_inh_check"
+ Column | Type | Modifiers
+--------+---------+-----------
+ a | numeric |
+Check constraints:
+ "test_inh_check_a_check" CHECK (a::double precision > 10.2::double precision)
+
+\d test_inh_check_child
+Table "public.test_inh_check_child"
+ Column | Type | Modifiers
+--------+---------+-----------
+ a | numeric |
+Check constraints:
+ "test_inh_check_a_check" CHECK (a::double precision > 10.2::double precision)
+Inherits: test_inh_check
+
-- disallow recursive containment of row types
create temp table recur1 (f1 int);
alter table recur1 add column f2 recur1; -- fails
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/int2.out
^
|
@@ -244,3 +244,14 @@
| -32767 | -16383
(5 rows)
+-- check sane handling of INT16_MIN overflow cases
+SELECT (-32768)::int2 * (-1)::int2;
+ERROR: smallint out of range
+SELECT (-32768)::int2 / (-1)::int2;
+ERROR: smallint out of range
+SELECT (-32768)::int2 % (-1)::int2;
+ ?column?
+----------
+ 0
+(1 row)
+
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/int4.out
^
|
@@ -331,3 +331,24 @@
2
(1 row)
+-- check sane handling of INT_MIN overflow cases
+SELECT (-2147483648)::int4 * (-1)::int4;
+ERROR: integer out of range
+SELECT (-2147483648)::int4 / (-1)::int4;
+ERROR: integer out of range
+SELECT (-2147483648)::int4 % (-1)::int4;
+ ?column?
+----------
+ 0
+(1 row)
+
+SELECT (-2147483648)::int4 * (-1)::int2;
+ERROR: integer out of range
+SELECT (-2147483648)::int4 / (-1)::int2;
+ERROR: integer out of range
+SELECT (-2147483648)::int4 % (-1)::int2;
+ ?column?
+----------
+ 0
+(1 row)
+
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/int8-exp-three-digits.out
^
|
@@ -802,3 +802,34 @@
4567890123456799
(6 rows)
+-- check sane handling of INT64_MIN overflow cases
+SELECT (-9223372036854775808)::int8 * (-1)::int8;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 / (-1)::int8;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 % (-1)::int8;
+ ?column?
+----------
+ 0
+(1 row)
+
+SELECT (-9223372036854775808)::int8 * (-1)::int4;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 / (-1)::int4;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 % (-1)::int4;
+ ?column?
+----------
+ 0
+(1 row)
+
+SELECT (-9223372036854775808)::int8 * (-1)::int2;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 / (-1)::int2;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 % (-1)::int2;
+ ?column?
+----------
+ 0
+(1 row)
+
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/int8.out
^
|
@@ -802,3 +802,34 @@
4567890123456799
(6 rows)
+-- check sane handling of INT64_MIN overflow cases
+SELECT (-9223372036854775808)::int8 * (-1)::int8;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 / (-1)::int8;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 % (-1)::int8;
+ ?column?
+----------
+ 0
+(1 row)
+
+SELECT (-9223372036854775808)::int8 * (-1)::int4;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 / (-1)::int4;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 % (-1)::int4;
+ ?column?
+----------
+ 0
+(1 row)
+
+SELECT (-9223372036854775808)::int8 * (-1)::int2;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 / (-1)::int2;
+ERROR: bigint out of range
+SELECT (-9223372036854775808)::int8 % (-1)::int2;
+ ?column?
+----------
+ 0
+(1 row)
+
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/join.out
^
|
@@ -2129,6 +2129,7 @@
-- regression test: check for bug with propagation of implied equality
-- to outside an IN
--
+analyze tenk1; -- ensure we get consistent plans here
select count(*) from tenk1 a where unique1 in
(select unique1 from tenk1 b join tenk1 c using (unique1)
where b.unique2 = 42);
@@ -2576,3 +2577,21 @@
-2147483647 |
(10 rows)
+--
+-- test handling of potential equivalence clauses above outer joins
+--
+select q1, unique2, thousand, hundred
+ from int8_tbl a left join tenk1 b on q1 = unique2
+ where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123);
+ q1 | unique2 | thousand | hundred
+----+---------+----------+---------
+(0 rows)
+
+select f1, unique2, case when unique2 is null then f1 else 0 end
+ from int4_tbl a left join tenk1 b on f1 = unique2
+ where (case when unique2 is null then f1 else 0 end) = 0;
+ f1 | unique2 | case
+----+---------+------
+ 0 | 0 | 0
+(1 row)
+
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/rules.out
^
|
@@ -1452,6 +1452,28 @@
HINT: You can drop view fooview instead.
drop view fooview;
--
+-- test conversion of table to view (needed to load some pg_dump files)
+--
+create table fooview (x int, y text);
+select xmin, * from fooview;
+ xmin | x | y
+------+---+---
+(0 rows)
+
+create rule "_RETURN" as on select to fooview do instead
+ select 1 as x, 'aaa'::text as y;
+select * from fooview;
+ x | y
+---+-----
+ 1 | aaa
+(1 row)
+
+select xmin, * from fooview; -- fail, views don't have such a column
+ERROR: column "xmin" does not exist
+LINE 1: select xmin, * from fooview;
+ ^
+drop view fooview;
+--
-- check for planner problems with complex inherited UPDATES
--
create table id (id serial primary key, name text);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/expected/subselect.out
^
|
@@ -547,6 +547,23 @@
(0 rows)
--
+-- Test case for cross-type partial matching in hashed subplan (bug #7597)
+--
+create temp table outer_7597 (f1 int4, f2 int4);
+insert into outer_7597 values (0, 0);
+insert into outer_7597 values (1, 0);
+insert into outer_7597 values (0, null);
+insert into outer_7597 values (1, null);
+create temp table inner_7597(c1 int8, c2 int8);
+insert into inner_7597 values(0, null);
+select * from outer_7597 where (f1, f2) not in (select * from inner_7597);
+ f1 | f2
+----+----
+ 1 | 0
+ 1 |
+(2 rows)
+
+--
-- Test case for premature memory release during hashing of subplan output
--
select '1'::text in (select '1'::name union all select '1'::name);
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/pg_regress.c
^
|
@@ -777,6 +777,19 @@
}
/*
+ * GNU make stores some flags in the MAKEFLAGS environment variable to
+ * pass arguments to its own children. If we are invoked by make,
+ * that causes the make invoked by us to think its part of the make
+ * task invoking us, and so it tries to communicate with the toplevel
+ * make. Which fails.
+ *
+ * Unset the variable to protect against such problems. We also reset
+ * MAKELEVEL to be certain the child doesn't notice the make above us.
+ */
+ unsetenv("MAKEFLAGS");
+ unsetenv("MAKELEVEL");
+
+ /*
* Adjust path variables to point into the temp-install tree
*/
tmp = malloc(strlen(temp_install) + 32 + strlen(bindir));
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/alter_table.sql
^
|
@@ -1081,6 +1081,13 @@
drop table another;
+-- ALTER TYPE with a check constraint and a child table (bug before Nov 2012)
+CREATE TABLE test_inh_check (a float check (a > 10.2));
+CREATE TABLE test_inh_check_child() INHERITS(test_inh_check);
+ALTER TABLE test_inh_check ALTER COLUMN a TYPE numeric;
+\d test_inh_check
+\d test_inh_check_child
+
-- disallow recursive containment of row types
create temp table recur1 (f1 int);
alter table recur1 add column f2 recur1; -- fails
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/int2.sql
^
|
@@ -86,3 +86,7 @@
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i;
+-- check sane handling of INT16_MIN overflow cases
+SELECT (-32768)::int2 * (-1)::int2;
+SELECT (-32768)::int2 / (-1)::int2;
+SELECT (-32768)::int2 % (-1)::int2;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/int4.sql
^
|
@@ -125,3 +125,11 @@
SELECT 2 + 2 / 2 AS three;
SELECT (2 + 2) / 2 AS two;
+
+-- check sane handling of INT_MIN overflow cases
+SELECT (-2147483648)::int4 * (-1)::int4;
+SELECT (-2147483648)::int4 / (-1)::int4;
+SELECT (-2147483648)::int4 % (-1)::int4;
+SELECT (-2147483648)::int4 * (-1)::int2;
+SELECT (-2147483648)::int4 / (-1)::int2;
+SELECT (-2147483648)::int4 % (-1)::int2;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/int8.sql
^
|
@@ -190,3 +190,14 @@
SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8);
SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 0);
SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 2);
+
+-- check sane handling of INT64_MIN overflow cases
+SELECT (-9223372036854775808)::int8 * (-1)::int8;
+SELECT (-9223372036854775808)::int8 / (-1)::int8;
+SELECT (-9223372036854775808)::int8 % (-1)::int8;
+SELECT (-9223372036854775808)::int8 * (-1)::int4;
+SELECT (-9223372036854775808)::int8 / (-1)::int4;
+SELECT (-9223372036854775808)::int8 % (-1)::int4;
+SELECT (-9223372036854775808)::int8 * (-1)::int2;
+SELECT (-9223372036854775808)::int8 / (-1)::int2;
+SELECT (-9223372036854775808)::int8 % (-1)::int2;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/join.sql
^
|
@@ -330,6 +330,8 @@
-- regression test: check for bug with propagation of implied equality
-- to outside an IN
--
+analyze tenk1; -- ensure we get consistent plans here
+
select count(*) from tenk1 a where unique1 in
(select unique1 from tenk1 b join tenk1 c using (unique1)
where b.unique2 = 42);
@@ -637,3 +639,15 @@
--
select * from int4_tbl a full join int4_tbl b on true;
select * from int4_tbl a full join int4_tbl b on false;
+
+--
+-- test handling of potential equivalence clauses above outer joins
+--
+
+select q1, unique2, thousand, hundred
+ from int8_tbl a left join tenk1 b on q1 = unique2
+ where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123);
+
+select f1, unique2, case when unique2 is null then f1 else 0 end
+ from int4_tbl a left join tenk1 b on f1 = unique2
+ where (case when unique2 is null then f1 else 0 end) = 0;
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/rules.sql
^
|
@@ -860,6 +860,21 @@
drop view fooview;
--
+-- test conversion of table to view (needed to load some pg_dump files)
+--
+
+create table fooview (x int, y text);
+select xmin, * from fooview;
+
+create rule "_RETURN" as on select to fooview do instead
+ select 1 as x, 'aaa'::text as y;
+
+select * from fooview;
+select xmin, * from fooview; -- fail, views don't have such a column
+
+drop view fooview;
+
+--
-- check for planner problems with complex inherited UPDATES
--
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/test/regress/sql/subselect.sql
^
|
@@ -346,6 +346,21 @@
int4_tbl i4 on dummy = i4.f1;
--
+-- Test case for cross-type partial matching in hashed subplan (bug #7597)
+--
+
+create temp table outer_7597 (f1 int4, f2 int4);
+insert into outer_7597 values (0, 0);
+insert into outer_7597 values (1, 0);
+insert into outer_7597 values (0, null);
+insert into outer_7597 values (1, null);
+
+create temp table inner_7597(c1 int8, c2 int8);
+insert into inner_7597 values(0, null);
+
+select * from outer_7597 where (f1, f2) not in (select * from inner_7597);
+
+--
-- Test case for premature memory release during hashing of subplan output
--
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/timezone/data/africa
^
|
@@ -4,7 +4,7 @@
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
# From Paul Eggert (2006-03-22):
#
@@ -424,6 +424,20 @@
# Libya
+# From Even Scharning (2012-11-10):
+# Libya set their time one hour back at 02:00 on Saturday November 10.
+# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/
+# Here is an official source [in Arabic]: http://ls.ly/fb6Yc
+#
+# Steffen Thorsen forwarded a translation (2012-11-10) in
+# http://mm.icann.org/pipermail/tz/2012-November/018451.html
+#
+# From Tim Parenti (2012-11-11):
+# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.
+# The DST rules planned for 2013 and onward roughly mirror those of Europe
+# (either two days before them or five days after them, so as to fall on
+# lastFri instead of lastSun).
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Libya 1951 only - Oct 14 2:00 1:00 S
Rule Libya 1952 only - Jan 1 0:00 0 -
@@ -438,17 +452,21 @@
Rule Libya 1986 only - Oct 3 0:00 0 -
Rule Libya 1987 1989 - Apr 1 0:00 1:00 S
Rule Libya 1987 1989 - Oct 1 0:00 0 -
+Rule Libya 1997 only - Apr 4 0:00 1:00 S
+Rule Libya 1997 only - Oct 4 0:00 0 -
+Rule Libya 2013 max - Mar lastFri 1:00 1:00 S
+Rule Libya 2013 max - Oct lastFri 2:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Tripoli 0:52:44 - LMT 1920
1:00 Libya CE%sT 1959
2:00 - EET 1982
1:00 Libya CE%sT 1990 May 4
-# The following entries are from Shanks & Pottenger;
+# The 1996 and 1997 entries are from Shanks & Pottenger;
# the IATA SSIM data contain some obvious errors.
2:00 - EET 1996 Sep 30
- 1:00 - CET 1997 Apr 4
- 1:00 1:00 CEST 1997 Oct 4
- 2:00 - EET
+ 1:00 Libya CE%sT 1997 Oct 4
+ 2:00 - EET 2012 Nov 10 2:00
+ 1:00 Libya CE%sT
# Madagascar
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/timezone/data/asia
^
|
@@ -4,7 +4,7 @@
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
# From Paul Eggert (2006-03-22):
#
@@ -1170,15 +1170,15 @@
#
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
-# From Paul Eggert (2005-02-22):
+# From Paul Eggert (2012-10-26):
# I used Ephraim Silverberg's dst-israel.el program
# <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)
# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
-# to generate the transitions in this list.
+# to generate the transitions from 2005 through 2012.
# (I replaced "lastFri" with "Fri>=26" by hand.)
-# The spring transitions below all correspond to the following Rule:
+# The spring transitions all correspond to the following Rule:
#
-# Rule Zion 2005 max - Mar Fri>=26 2:00 1:00 D
+# Rule Zion 2005 2012 - Mar Fri>=26 2:00 1:00 D
#
# but older zic implementations (e.g., Solaris 8) do not support
# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
@@ -1195,39 +1195,39 @@
Rule Zion 2010 only - Sep 12 2:00 0 S
Rule Zion 2011 only - Apr 1 2:00 1:00 D
Rule Zion 2011 only - Oct 2 2:00 0 S
-Rule Zion 2012 2015 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
Rule Zion 2012 only - Sep 23 2:00 0 S
-Rule Zion 2013 only - Sep 8 2:00 0 S
-Rule Zion 2014 only - Sep 28 2:00 0 S
-Rule Zion 2015 only - Sep 20 2:00 0 S
-Rule Zion 2016 only - Apr 1 2:00 1:00 D
-Rule Zion 2016 only - Oct 9 2:00 0 S
-Rule Zion 2017 2021 - Mar Fri>=26 2:00 1:00 D
-Rule Zion 2017 only - Sep 24 2:00 0 S
-Rule Zion 2018 only - Sep 16 2:00 0 S
-Rule Zion 2019 only - Oct 6 2:00 0 S
-Rule Zion 2020 only - Sep 27 2:00 0 S
-Rule Zion 2021 only - Sep 12 2:00 0 S
-Rule Zion 2022 only - Apr 1 2:00 1:00 D
-Rule Zion 2022 only - Oct 2 2:00 0 S
-Rule Zion 2023 2032 - Mar Fri>=26 2:00 1:00 D
-Rule Zion 2023 only - Sep 24 2:00 0 S
-Rule Zion 2024 only - Oct 6 2:00 0 S
-Rule Zion 2025 only - Sep 28 2:00 0 S
-Rule Zion 2026 only - Sep 20 2:00 0 S
-Rule Zion 2027 only - Oct 10 2:00 0 S
-Rule Zion 2028 only - Sep 24 2:00 0 S
-Rule Zion 2029 only - Sep 16 2:00 0 S
-Rule Zion 2030 only - Oct 6 2:00 0 S
-Rule Zion 2031 only - Sep 21 2:00 0 S
-Rule Zion 2032 only - Sep 12 2:00 0 S
-Rule Zion 2033 only - Apr 1 2:00 1:00 D
-Rule Zion 2033 only - Oct 2 2:00 0 S
-Rule Zion 2034 2037 - Mar Fri>=26 2:00 1:00 D
-Rule Zion 2034 only - Sep 17 2:00 0 S
-Rule Zion 2035 only - Oct 7 2:00 0 S
-Rule Zion 2036 only - Sep 28 2:00 0 S
-Rule Zion 2037 only - Sep 13 2:00 0 S
+
+# From Ephraim Silverberg (2012-10-18):
+# Yesterday, the Interior Ministry Committee, after more than a year
+# past, approved sending the proposed June 2011 changes to the Time
+# Decree Law back to the Knesset for second and third (final) votes
+# before the upcoming elections on Jan. 22, 2013. Hence, although the
+# changes are not yet law, they are expected to be so before February 2013.
+#
+# As of 2013, DST starts at 02:00 on the Friday before the last Sunday in March.
+# DST ends at 02:00 on the first Sunday after October 1, unless it occurs on the
+# second day of the Jewish Rosh Hashana holiday, in which case DST ends a day
+# later (i.e. at 02:00 the first Monday after October 2).
+# [Rosh Hashana holidays are factored in until 2100.]
+
+# From Ephraim Silverberg (2012-11-05):
+# The Knesset passed today (in second and final readings) the amendment to the
+# Time Decree Law making the changes ... law.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
+Rule Zion 2013 2026 - Oct Sun>=2 2:00 0 S
+Rule Zion 2027 only - Oct Mon>=3 2:00 0 S
+Rule Zion 2028 max - Oct Sun>=2 2:00 0 S
+# The following rules are commented out for now, as they break older
+# versions of zic that support only signed 32-bit timestamps, i.e.,
+# through 2038-01-19 03:14:07 UTC.
+#Rule Zion 2028 2053 - Oct Sun>=2 2:00 0 S
+#Rule Zion 2054 only - Oct Mon>=3 2:00 0 S
+#Rule Zion 2055 2080 - Oct Sun>=2 2:00 0 S
+#Rule Zion 2081 only - Oct Mon>=3 2:00 0 S
+#Rule Zion 2082 max - Oct Sun>=2 2:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Jerusalem 2:20:56 - LMT 1880
@@ -1362,6 +1362,16 @@
# From Arthur David Olson (2009-04-06):
# We still have Jordan switching to DST on Thursdays in 2000 and 2001.
+# From Steffen Thorsen (2012-10-25):
+# Yesterday the government in Jordan announced that they will not
+# switch back to standard time this winter, so the will stay on DST
+# until about the same time next year (at least).
+# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950
+#
+# From Paul Eggert (2012-10-25):
+# For now, assume this is just a one-year measure. If it becomes
+# permanent, we should move Jordan from EET to AST effective tomorrow.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
@@ -1390,7 +1400,8 @@
Rule Jordan 2003 only - Oct 24 0:00s 0 -
Rule Jordan 2004 only - Oct 15 0:00s 0 -
Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
-Rule Jordan 2006 max - Oct lastFri 0:00s 0 -
+Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
+Rule Jordan 2013 max - Oct lastFri 0:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Amman 2:23:44 - LMT 1931
2:00 Jordan EE%sT
@@ -2041,8 +2052,7 @@
# occurred before our cutoff date of 1970.
# However, as we get more information, we may need to add entries
# for parts of the West Bank as they transitioned from Israel's rules
-# to Palestine's rules. If you have more info about this, please
-# send it to tz@elsie.nci.nih.gov for incorporation into future editions.
+# to Palestine's rules.
# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
# forwarded by Ephraim Silverberg:
@@ -2293,6 +2303,8 @@
# From Arthur David Olson (2011-09-20):
# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
+# From Paul Eggert (2012-10-12):
+# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
@@ -2303,7 +2315,7 @@
2:00 Palestine EE%sT 2011 Apr 2 12:01
2:00 1:00 EEST 2011 Aug 1
2:00 - EET 2012 Mar 30
- 2:00 1:00 EEST 2012 Sep 28
+ 2:00 1:00 EEST 2012 Sep 21 1:00
2:00 - EET
Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
@@ -2318,7 +2330,7 @@
2:00 - EET 2011 Aug 30
2:00 1:00 EEST 2011 Sep 30 3:00
2:00 - EET 2012 Mar 30
- 2:00 1:00 EEST 2012 Sep 28 3:00
+ 2:00 1:00 EEST 2012 Sep 21 1:00
2:00 - EET
# Paracel Is
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/timezone/data/australasia
^
|
@@ -628,6 +628,23 @@
# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
# seasons, there is not yet any indication that this trend will continue on
# a regular basis. For now, we have explicitly listed the transitions below.
+#
+# From Nicky (2012-09-10):
+# Daylight Saving Time commences on Sunday 30th September 2012 and
+# ends on Sunday 7th of April 2013.
+#
+# Please find link below for more information.
+# http://www.mcil.gov.ws/mcil_publications.html
+#
+# That publication also includes dates for Summer of 2013/4 as well
+# which give the impression of a pattern in selecting dates for the
+# future, so for now, we will guess this will continue.
+
+# Western Samoa
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule WS 2012 max - Sep lastSun 3:00 1 D
+Rule WS 2012 max - Apr Sun>=1 4:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
-11:26:56 - LMT 1911
-11:30 - SAMT 1950 # Samoa Time
@@ -635,8 +652,8 @@
-11:00 1:00 WSDT 2011 Apr 2 4:00
-11:00 - WST 2011 Sep 24 3:00
-11:00 1:00 WSDT 2011 Dec 30
- 13:00 1:00 WSDT 2012 Apr 1 4:00
- 13:00 - WST
+ 13:00 1:00 WSDT 2012 Apr Sun>=1 4:00
+ 13:00 WS WS%sT
# Solomon Is
# excludes Bougainville, for which see Papua New Guinea
@@ -763,7 +780,7 @@
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
# From Paul Eggert (2006-03-22):
# A good source for time zone historical data outside the U.S. is
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/timezone/data/europe
^
|
@@ -4,7 +4,7 @@
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
# From Paul Eggert (2006-03-22):
# A good source for time zone historical data outside the U.S. is
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/timezone/data/northamerica
^
|
@@ -6,7 +6,7 @@
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
# From Paul Eggert (1999-03-22):
# A reliable and entertaining source about time zones is
@@ -2797,6 +2797,13 @@
# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
# </a>
+# From Steffen Thorsen (2012-11-03):
+# Radio Reloj and many other sources report that Cuba is changing back
+# to standard time on 2012-11-04:
+# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre
+# From Paul Eggert (2012-11-03):
+# For now, assume the future rule is first Sunday in November.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
Rule Cuba 1928 only - Oct 10 0:00 0 S
@@ -2834,7 +2841,7 @@
Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
Rule Cuba 2011 only - Nov 13 0:00s 0 S
Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
-Rule Cuba 2012 max - Oct lastSun 0:00s 0 S
+Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
[-]
[+]
|
Changed |
postgresql-8.4.15.tar.bz2/src/timezone/data/southamerica
^
|
@@ -4,7 +4,7 @@
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
# From Paul Eggert (2006-03-22):
# A good source for time zone historical data outside the U.S. is
@@ -829,6 +829,15 @@
# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
# </a>
+# From Kelley Cook (2012-10-16):
+# The governor of state of Bahia in Brazil announced on Thursday that
+# due to public pressure, he is reversing the DST policy they implemented
+# last year and will not be going to Summer Time on October 21st....
+# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia
+
+# From Rodrigo Severo (2012-10-16):
+# Tocantins state will have DST.
+# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
@@ -1048,7 +1057,8 @@
-3:00 Brazil BR%sT 1990 Sep 17
-3:00 - BRT 1995 Sep 14
-3:00 Brazil BR%sT 2003 Sep 24
- -3:00 - BRT
+ -3:00 - BRT 2012 Oct 21
+ -3:00 Brazil BR%sT
#
# Alagoas (AL), Sergipe (SE)
Zone America/Maceio -2:22:52 - LMT 1914
@@ -1067,7 +1077,8 @@
Zone America/Bahia -2:34:04 - LMT 1914
-3:00 Brazil BR%sT 2003 Sep 24
-3:00 - BRT 2011 Oct 16
- -3:00 Brazil BR%sT
+ -3:00 Brazil BR%sT 2012 Oct 21
+ -3:00 - BRT
#
# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
|