[-]
[+]
|
Changed |
postgresql-pl.changes
|
|
[-]
[+]
|
Changed |
postgresql.changes
^
|
|
[-]
[+]
|
Changed |
postgresql-pl.spec
^
|
|
[-]
[+]
|
Changed |
postgresql.spec
^
|
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/HISTORY
^
|
@@ -17,6 +17,123 @@
review, so each item is truly a community effort.
__________________________________________________________________
+ 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.3.22.tar.bz2/INSTALL
^
|
@@ -168,7 +168,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.3.21, since this
+ to use the pg_dumpall command from PostgreSQL 8.3.22, 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.3.22.tar.bz2/configure
^
|
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for PostgreSQL 8.3.21.
+# Generated by GNU Autoconf 2.59 for PostgreSQL 8.3.22.
#
# Report bugs to <pgsql-bugs@postgresql.org>.
#
@@ -271,8 +271,8 @@
# Identity of this package.
PACKAGE_NAME='PostgreSQL'
PACKAGE_TARNAME='postgresql'
-PACKAGE_VERSION='8.3.21'
-PACKAGE_STRING='PostgreSQL 8.3.21'
+PACKAGE_VERSION='8.3.22'
+PACKAGE_STRING='PostgreSQL 8.3.22'
PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org'
ac_unique_file="src/backend/access/common/heaptuple.c"
@@ -791,7 +791,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.3.21 to adapt to many kinds of systems.
+\`configure' configures PostgreSQL 8.3.22 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -852,7 +852,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of PostgreSQL 8.3.21:";;
+ short | recursive ) echo "Configuration of PostgreSQL 8.3.22:";;
esac
cat <<\_ACEOF
@@ -1014,7 +1014,7 @@
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-PostgreSQL configure 8.3.21
+PostgreSQL configure 8.3.22
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1030,7 +1030,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.3.21, which was
+It was created by PostgreSQL $as_me 8.3.22, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -25741,7 +25741,7 @@
} >&5
cat >&5 <<_CSEOF
-This file was extended by PostgreSQL $as_me 8.3.21, which was
+This file was extended by PostgreSQL $as_me 8.3.22, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -25807,7 +25807,7 @@
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-PostgreSQL config.status 8.3.21
+PostgreSQL config.status 8.3.22
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/configure.in
^
|
@@ -17,7 +17,7 @@
dnl
m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
-AC_INIT([PostgreSQL], [8.3.21], [pgsql-bugs@postgresql.org])
+AC_INIT([PostgreSQL], [8.3.22], [pgsql-bugs@postgresql.org])
m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.59], [], [m4_fatal([Autoconf version 2.59 is required.
Untested combinations of 'autoconf' and PostgreSQL versions are not
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/contrib/pageinspect/btreefuncs.c
^
|
@@ -154,9 +154,9 @@
}
/* -----------------------------------------------
- * bt_page()
+ * bt_page_stats()
*
- * Usage: SELECT * FROM bt_page('t1_pkey', 1);
+ * Usage: SELECT * FROM bt_page_stats('t1_pkey', 1);
* -----------------------------------------------
*/
Datum
@@ -202,6 +202,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;
@@ -209,6 +210,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");
@@ -245,10 +249,6 @@
result = HeapTupleGetDatum(tuple);
- ReleaseBuffer(buffer);
-
- relation_close(rel, AccessShareLock);
-
PG_RETURN_DATUM(result);
}
@@ -320,6 +320,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
@@ -333,7 +334,7 @@
uargs->page = palloc(BLCKSZ);
memcpy(uargs->page, BufferGetPage(buffer), BLCKSZ);
- ReleaseBuffer(buffer);
+ UnlockReleaseBuffer(buffer);
relation_close(rel, AccessShareLock);
uargs->offset = FirstOffsetNumber;
@@ -464,6 +465,8 @@
errmsg("cannot access temporary tables of other sessions")));
buffer = ReadBuffer(rel, 0);
+ LockBuffer(buffer, BUFFER_LOCK_SHARE);
+
page = BufferGetPage(buffer);
metad = BTPageGetMeta(page);
@@ -490,8 +493,7 @@
result = HeapTupleGetDatum(tuple);
- ReleaseBuffer(buffer);
-
+ UnlockReleaseBuffer(buffer);
relation_close(rel, AccessShareLock);
PG_RETURN_DATUM(result);
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/doc/bug.template
^
|
@@ -27,7 +27,7 @@
Operating System (example: Linux 2.4.18) :
- PostgreSQL version (example: PostgreSQL 8.3.21): PostgreSQL 8.3.21
+ PostgreSQL version (example: PostgreSQL 8.3.22): PostgreSQL 8.3.22
Compiler used (example: gcc 3.3.5) :
|
|
Changed |
postgresql-8.3.22.tar.bz2/doc/man.tar.gz
^
|
|
Changed |
postgresql-8.3.22.tar.bz2/doc/postgres.tar.gz
^
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/doc/src/sgml/backup.sgml
^
|
@@ -1803,46 +1803,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_restartpoints</> option to print values to the server log.
- </para>
- </sect2>
</sect1>
<sect1 id="migration">
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/doc/src/sgml/func.sgml
^
|
@@ -7237,7 +7237,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.3.22.tar.bz2/doc/src/sgml/ref/create_database.sgml
^
|
@@ -44,14 +44,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
@@ -81,9 +73,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.3.22.tar.bz2/doc/src/sgml/ref/create_index.sgml
^
|
@@ -467,6 +467,18 @@
</programlisting>
</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>
To create an index with non-default sort ordering of nulls:
<programlisting>
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/doc/src/sgml/ref/create_schema.sgml
^
|
@@ -64,7 +64,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.
@@ -76,9 +77,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>
@@ -175,7 +177,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.3.22.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.3.22.tar.bz2/doc/src/sgml/runtime.sgml
^
|
@@ -264,10 +264,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>
@@ -293,7 +293,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.3.22.tar.bz2/src/backend/Makefile
^
|
@@ -183,6 +183,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
@@ -201,6 +202,7 @@
endif
ifeq ($(MAKE_EXPORTS), true)
$(mkinstalldirs) '$(DESTDIR)$(pkglibdir)'
+ $(mkinstalldirs) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)'
endif
@@ -210,6 +212,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.3.22.tar.bz2/src/backend/access/heap/README.HOT
^
|
@@ -404,6 +404,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.3.22.tar.bz2/src/backend/catalog/index.c
^
|
@@ -995,7 +995,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;
@@ -1397,8 +1397,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;
@@ -2209,6 +2221,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.
*/
@@ -2357,6 +2429,15 @@
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.3.22.tar.bz2/src/backend/catalog/pg_shdepend.c
^
|
@@ -1166,8 +1166,12 @@
InternalGrant istmt;
Form_pg_shdepend sdepForm = (Form_pg_shdepend) GETSTRUCT(tuple);
- /* 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.3.22.tar.bz2/src/backend/commands/cluster.c
^
|
@@ -431,7 +431,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\"",
@@ -473,6 +473,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)
@@ -533,6 +538,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.3.22.tar.bz2/src/backend/commands/indexcmds.c
^
|
@@ -131,9 +131,6 @@
LockRelId heaprelid;
LOCKTAG heaplocktag;
Snapshot snapshot;
- Relation pg_index;
- HeapTuple indexTuple;
- Form_pg_index indexForm;
/*
* count attributes in index
@@ -559,24 +556,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);
/*
* Commit this transaction to make the indisready update visible.
@@ -654,24 +634,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
@@ -679,7 +642,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.3.22.tar.bz2/src/backend/commands/tablecmds.c
^
|
@@ -3228,6 +3228,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 */
@@ -4226,7 +4228,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;
@@ -4242,7 +4244,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;
@@ -4330,10 +4332,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))
{
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/backend/commands/trigger.c
^
|
@@ -2144,6 +2144,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);
+
dp = (PageHeader) BufferGetPage(buffer);
lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid));
@@ -2153,6 +2163,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.3.22.tar.bz2/src/backend/commands/vacuum.c
^
|
@@ -3672,9 +3672,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,
@@ -3688,21 +3695,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.3.22.tar.bz2/src/backend/executor/execUtils.c
^
|
@@ -921,6 +921,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.3.22.tar.bz2/src/backend/executor/nodeSubplan.c
^
|
@@ -37,7 +37,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);
@@ -140,7 +141,7 @@
return BoolGetDatum(true);
}
if (node->havenullrows &&
- findPartialMatch(node->hashnulls, slot))
+ findPartialMatch(node->hashnulls, slot, node->cur_eq_funcs))
{
ExecClearTuple(slot);
*isNull = true;
@@ -173,14 +174,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;
@@ -560,9 +561,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;
@@ -575,7 +580,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.3.22.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.3.22.tar.bz2/src/backend/nodes/outfuncs.c
^
|
@@ -1427,6 +1427,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.3.22.tar.bz2/src/backend/optimizer/path/equivclass.c
^
|
@@ -27,7 +27,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);
@@ -97,7 +97,9 @@
Expr *item1;
Expr *item2;
Relids item1_relids,
- item2_relids;
+ item2_relids,
+ item1_nullable_relids,
+ item2_nullable_relids;
List *opfamilies;
EquivalenceClass *ec1,
*ec2;
@@ -139,6 +141,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
@@ -273,7 +281,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 */
@@ -283,7 +292,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 */
@@ -306,8 +316,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);
@@ -324,12 +336,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;
@@ -443,7 +456,7 @@
newec->ec_sortref = sortref;
newec->ec_merged = NULL;
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
@@ -588,7 +601,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);
@@ -596,7 +614,8 @@
if (cur_em->em_is_const)
{
const_em = cur_em;
- break;
+ if (IsA(cur_em->em_expr, Const))
+ break;
}
}
Assert(const_em != NULL);
@@ -621,7 +640,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);
}
@@ -676,7 +697,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);
}
@@ -1077,7 +1100,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;
@@ -1295,7 +1320,8 @@
left_type,
right_type,
inner_datatype;
- Relids inner_relids;
+ Relids inner_relids,
+ inner_nullable_relids;
ListCell *lc1;
Assert(is_opclause(rinfo->clause));
@@ -1321,6 +1347,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)
@@ -1375,7 +1403,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;
}
@@ -1408,7 +1437,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 */
@@ -1423,6 +1454,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)
{
@@ -1504,7 +1539,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;
}
@@ -1516,7 +1552,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;
}
@@ -1636,11 +1673,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.3.22.tar.bz2/src/backend/optimizer/plan/initsplan.c
^
|
@@ -49,9 +49,12 @@
bool below_outer_join,
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 void check_mergejoinable(RestrictInfo *restrictinfo);
static void check_hashjoinable(RestrictInfo *restrictinfo);
@@ -343,7 +346,7 @@
foreach(l, (List *) f->quals)
distribute_qual_to_rels(root, (Node *) lfirst(l),
false, below_outer_join,
- *qualscope, NULL, NULL);
+ *qualscope, NULL, NULL, NULL);
}
else if (IsA(jtnode, JoinExpr))
{
@@ -453,7 +456,8 @@
foreach(qual, (List *) j->quals)
distribute_qual_to_rels(root, (Node *) lfirst(qual),
false, below_outer_join,
- *qualscope, ojscope, nonnullable_rels);
+ *qualscope,
+ ojscope, nonnullable_rels, NULL);
/* Now we can add the OuterJoinInfo to oj_info_list */
if (ojinfo)
@@ -713,6 +717,8 @@
* 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
@@ -724,7 +730,8 @@
bool below_outer_join,
Relids qualscope,
Relids ojscope,
- Relids outerjoin_nonnullable)
+ Relids outerjoin_nonnullable,
+ Relids deduced_nullable_relids)
{
Relids relids;
bool is_pushed_down;
@@ -832,12 +839,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 ojinfo 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;
@@ -990,7 +998,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 */
}
@@ -1152,6 +1161,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->oj_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;
+}
+
+/*
* distribute_restrictinfo_to_rels
* Push a completed RestrictInfo into the proper restriction or join
* clause list(s).
@@ -1223,11 +1270,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.
*/
@@ -1237,6 +1293,7 @@
Expr *item1,
Expr *item2,
Relids qualscope,
+ Relids nullable_relids,
bool below_outer_join,
bool both_const)
{
@@ -1268,15 +1325,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,
- qualscope, NULL, NULL);
+ qualscope, NULL, NULL, nullable_relids);
}
/*
@@ -1284,12 +1338,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;
@@ -1304,9 +1363,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.
*/
@@ -1315,7 +1371,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.3.22.tar.bz2/src/backend/optimizer/util/plancat.c
^
|
@@ -159,9 +159,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.3.22.tar.bz2/src/backend/parser/analyze.c
^
|
@@ -25,6 +25,7 @@
#include "postgres.h"
#include "catalog/pg_type.h"
+#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "optimizer/clauses.h"
#include "optimizer/var.h"
@@ -1238,6 +1239,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.3.22.tar.bz2/src/backend/parser/parse_relation.c
^
|
@@ -383,11 +383,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)
{
result = (Node *) make_var(pstate, rte, attnum);
/* Require read access */
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/backend/po/de.po
^
|
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-17 19:49+0000\n"
-"PO-Revision-Date: 2012-09-18 21:32-0400\n"
+"POT-Creation-Date: 2012-12-01 23:17+0000\n"
+"PO-Revision-Date: 2012-12-02 00:39-0500\n"
"Last-Translator: Peter Eisentraut <peter_e@gmx.net>\n"
"Language-Team: German <peter_e@gmx.net>\n"
"Language: de\n"
@@ -552,7 +552,7 @@
#: postmaster/postmaster.c:2828 postmaster/postmaster.c:3547
#: postmaster/postmaster.c:3633 postmaster/postmaster.c:4190
#: utils/hash/dynahash.c:363 utils/hash/dynahash.c:435
-#: utils/hash/dynahash.c:929 utils/misc/guc.c:2538 utils/misc/guc.c:2551
+#: utils/hash/dynahash.c:950 utils/misc/guc.c:2538 utils/misc/guc.c:2551
#: utils/misc/guc.c:2564 utils/init/miscinit.c:211 utils/init/miscinit.c:232
#: utils/init/miscinit.c:242 utils/fmgr/dfmgr.c:221 utils/mb/mbutils.c:279
#: utils/mb/mbutils.c:543 utils/mmgr/aset.c:360 utils/mmgr/aset.c:539
@@ -792,17 +792,17 @@
msgid "cached plan must not change result type"
msgstr "gecachter Plan darf den Ergebnistyp nicht ändern"
-#: utils/cache/relcache.c:3849
+#: utils/cache/relcache.c:3866
#, 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:3851
+#: utils/cache/relcache.c:3868
msgid "Continuing anyway, but there's something wrong."
msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht."
-#: utils/cache/relcache.c:4053
+#: utils/cache/relcache.c:4070
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "konnte Cache-Datei »%s« nicht löschen: %m"
@@ -854,7 +854,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:185 storage/lmgr/proc.c:198 storage/lmgr/lock.c:583
#: storage/lmgr/lock.c:649 storage/lmgr/lock.c:2041 storage/lmgr/lock.c:2329
#: storage/lmgr/lock.c:2394
@@ -3425,13 +3425,13 @@
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
#: 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:747 utils/adt/int.c:762 utils/adt/int.c:900
-#: utils/adt/int.c:921 utils/adt/int.c:948 utils/adt/int.c:989
-#: utils/adt/int.c:1010 utils/adt/int.c:1037 utils/adt/int.c:1067
-#: utils/adt/int.c:1170 utils/adt/int8.c:1031 utils/adt/float.c:1105
-#: utils/adt/float.c:1164 utils/adt/float.c:2708 utils/adt/float.c:2724
-#: utils/adt/varbit.c:1392 utils/adt/numeric.c:1934 utils/adt/numeric.c:1943
+#: 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:986 utils/adt/int.c:1007 utils/adt/int.c:1034
+#: utils/adt/int.c:1067 utils/adt/int.c:1198 utils/adt/int8.c:1060
+#: utils/adt/float.c:1105 utils/adt/float.c:1164 utils/adt/float.c:2708
+#: utils/adt/float.c:2724 utils/adt/varbit.c:1392 utils/adt/numeric.c:1934
+#: utils/adt/numeric.c:1943
msgid "integer out of range"
msgstr "integer ist außerhalb des gültigen Bereichs"
@@ -3494,25 +3494,25 @@
msgid "invalid int2vector data"
msgstr "ungültige int2vector-Daten"
-#: utils/adt/int.c:339 utils/adt/int.c:778 utils/adt/int.c:807
-#: utils/adt/int.c:828 utils/adt/int.c:848 utils/adt/int.c:879
-#: utils/adt/int.c:1185 utils/adt/int8.c:1056 utils/adt/float.c:1123
+#: 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:1213 utils/adt/int8.c:1085 utils/adt/float.c:1123
#: utils/adt/float.c:1181 utils/adt/numeric.c:2035 utils/adt/numeric.c:2046
msgid "smallint out of range"
msgstr "smallint ist außerhalb des gültigen Bereichs"
-#: utils/adt/int.c:720 utils/adt/int.c:864 utils/adt/int.c:962
-#: utils/adt/int.c:1052 utils/adt/int.c:1081 utils/adt/int.c:1105
-#: utils/adt/int.c:1125 utils/adt/int.c:1145 utils/adt/timestamp.c:2900
-#: utils/adt/geo_ops.c:3967 utils/adt/int8.c:605 utils/adt/int8.c:655
-#: utils/adt/int8.c:836 utils/adt/int8.c:934 utils/adt/float.c:767
+#: utils/adt/int.c:709 utils/adt/int.c:851 utils/adt/int.c:959
+#: utils/adt/int.c:1049 utils/adt/int.c:1088 utils/adt/int.c:1116
+#: utils/adt/int.c:1145 utils/adt/int.c:1165 utils/adt/timestamp.c:2900
+#: utils/adt/geo_ops.c:3967 utils/adt/int8.c:606 utils/adt/int8.c:666
+#: utils/adt/int8.c:855 utils/adt/int8.c:963 utils/adt/float.c:767
#: utils/adt/float.c:832 utils/adt/float.c:2467 utils/adt/float.c:2530
#: utils/adt/cash.c:554 utils/adt/cash.c:605 utils/adt/cash.c:654
#: utils/adt/cash.c:706 utils/adt/cash.c:756 utils/adt/numeric.c:4075
msgid "division by zero"
msgstr "Division durch Null"
-#: utils/adt/int.c:1373 utils/adt/int8.c:1193
+#: utils/adt/int.c:1401 utils/adt/int8.c:1222
msgid "step size cannot equal zero"
msgstr "Schrittgröße kann nicht gleich null sein"
@@ -3861,16 +3861,16 @@
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:620 utils/adt/int8.c:638
-#: utils/adt/int8.c:688 utils/adt/int8.c:704 utils/adt/int8.c:773
-#: utils/adt/int8.c:794 utils/adt/int8.c:821 utils/adt/int8.c:851
-#: utils/adt/int8.c:872 utils/adt/int8.c:893 utils/adt/int8.c:920
-#: utils/adt/int8.c:1094 utils/adt/int8.c:1133 utils/adt/varbit.c:1476
+#: utils/adt/int8.c:590 utils/adt/int8.c:624 utils/adt/int8.c:649
+#: utils/adt/int8.c:707 utils/adt/int8.c:723 utils/adt/int8.c:792
+#: utils/adt/int8.c:813 utils/adt/int8.c:840 utils/adt/int8.c:873
+#: utils/adt/int8.c:901 utils/adt/int8.c:922 utils/adt/int8.c:949
+#: utils/adt/int8.c:1123 utils/adt/int8.c:1162 utils/adt/varbit.c:1476
#: utils/adt/numeric.c:1987
msgid "bigint out of range"
msgstr "bigint ist außerhalb des gültigen Bereichs"
-#: utils/adt/int8.c:1150
+#: utils/adt/int8.c:1179
msgid "OID out of range"
msgstr "OID ist außerhalb des gültigen Bereichs"
@@ -4172,7 +4172,7 @@
msgid "AM/PM hour must be between 1 and 12"
msgstr "AM/PM-Stunde muss zwischen 1 und 12 sein"
-#: utils/adt/formatting.c:3523 utils/adt/datetime.c:2163
+#: utils/adt/formatting.c:3523 utils/adt/datetime.c:2166
#, c-format
msgid "inconsistent use of year %04d and \"BC\""
msgstr "inkonsistente Verwendung von Jahr %04d und »BC«"
@@ -4307,8 +4307,8 @@
msgstr "Datenbank mit OID %u existiert nicht"
#: utils/adt/dbsize.c:246 utils/adt/acl.c:2582 commands/tablecmds.c:343
-#: commands/tablecmds.c:5665 commands/dbcommands.c:312
-#: commands/indexcmds.c:208 commands/comment.c:663 commands/tablespace.c:412
+#: commands/tablecmds.c:5669 commands/dbcommands.c:312
+#: commands/indexcmds.c:205 commands/comment.c:663 commands/tablespace.c:412
#: commands/tablespace.c:767 commands/tablespace.c:834
#: commands/tablespace.c:936 commands/tablespace.c:1069
#: executor/execMain.c:2728 catalog/aclchk.c:511
@@ -4347,7 +4347,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:3147
+#: utils/adt/network.c:107 utils/adt/datetime.c:3150
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "ungültige Eingabesyntax für Typ %s: »%s«"
@@ -4441,13 +4441,13 @@
msgstr "Wert für Domäne %s verletzt Check-Constraint »%s«"
#: utils/adt/ruleutils.c:1313 commands/tablecmds.c:3217
-#: commands/tablecmds.c:3309 commands/tablecmds.c:3356
-#: commands/tablecmds.c:3452 commands/tablecmds.c:3513
-#: commands/tablecmds.c:3579 commands/tablecmds.c:4728
-#: commands/tablecmds.c:4862 commands/analyze.c:259 commands/sequence.c:1284
-#: commands/copy.c:3372 commands/comment.c:577 parser/analyze.c:1569
-#: parser/parse_target.c:764 parser/parse_relation.c:1607
-#: parser/parse_relation.c:1662 parser/parse_type.c:116
+#: commands/tablecmds.c:3311 commands/tablecmds.c:3358
+#: commands/tablecmds.c:3454 commands/tablecmds.c:3515
+#: commands/tablecmds.c:3581 commands/tablecmds.c:4732
+#: commands/tablecmds.c:4866 commands/analyze.c:259 commands/sequence.c:1284
+#: commands/copy.c:3372 commands/comment.c:577 parser/analyze.c:1573
+#: parser/parse_target.c:764 parser/parse_relation.c:1614
+#: parser/parse_relation.c:1669 parser/parse_type.c:116
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "Spalte »%s« von Relation »%s« existiert nicht"
@@ -4457,7 +4457,7 @@
msgid "rule \"%s\" has unsupported event type %d"
msgstr "Regel »%s« hat nicht unterstützten Ereignistyp %d"
-#: utils/adt/ruleutils.c:4353 utils/adt/ruleutils.c:4381
+#: utils/adt/ruleutils.c:4361 utils/adt/ruleutils.c:4389
#: utils/adt/regproc.c:638 utils/adt/regproc.c:1498
msgid "too many arguments"
msgstr "zu viele Argumente"
@@ -4591,7 +4591,7 @@
msgid "wrong element type"
msgstr "falscher Elementtyp"
-#: utils/adt/arrayfuncs.c:1346 utils/adt/rowtypes.c:534 libpq/pqformat.c:611
+#: utils/adt/arrayfuncs.c:1346 utils/adt/rowtypes.c:549 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"
@@ -4800,7 +4800,7 @@
msgstr "Textsuchekonfigurationsname »%s« muss Schemaqualifikation haben"
#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1437 commands/copy.c:3377
-#: commands/indexcmds.c:778 parser/parse_expr.c:419
+#: commands/indexcmds.c:741 parser/parse_expr.c:419
#, c-format
msgid "column \"%s\" does not exist"
msgstr "Spalte »%s« existiert nicht"
@@ -4810,21 +4810,21 @@
msgid "column \"%s\" is not of character type"
msgstr "Spalte »%s« hat keinen Zeichenkettentyp"
-#: utils/adt/datetime.c:3120 utils/adt/datetime.c:3127
+#: utils/adt/datetime.c:3123 utils/adt/datetime.c:3130
#, 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:3129
+#: utils/adt/datetime.c:3132
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Möglicherweise benötigen Sie eine andere »datestyle«-Einstellung."
-#: utils/adt/datetime.c:3134
+#: utils/adt/datetime.c:3137
#, 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:3140
+#: utils/adt/datetime.c:3143
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs: »%s«"
@@ -4887,47 +4887,47 @@
msgid "invalid input syntax for uuid: \"%s\""
msgstr "ungültige Eingabesyntax für Typ uuid: »%s«"
-#: utils/adt/rowtypes.c:81 utils/adt/rowtypes.c:450
+#: utils/adt/rowtypes.c:82 utils/adt/rowtypes.c:465
msgid "input of anonymous composite types is not implemented"
msgstr "Eingabe anonymer zusammengesetzter Typen ist nicht implementiert"
-#: utils/adt/rowtypes.c:128 utils/adt/rowtypes.c:156 utils/adt/rowtypes.c:179
-#: utils/adt/rowtypes.c:187 utils/adt/rowtypes.c:239 utils/adt/rowtypes.c:247
+#: utils/adt/rowtypes.c:129 utils/adt/rowtypes.c:157 utils/adt/rowtypes.c:180
+#: utils/adt/rowtypes.c:188 utils/adt/rowtypes.c:240 utils/adt/rowtypes.c:248
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "fehlerhafte Record-Konstante: »%s«"
-#: utils/adt/rowtypes.c:129
+#: utils/adt/rowtypes.c:130
msgid "Missing left parenthesis."
msgstr "Linke Klammer fehlt."
-#: utils/adt/rowtypes.c:157
+#: utils/adt/rowtypes.c:158
msgid "Too few columns."
msgstr "Zu wenige Spalten."
-#: utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:189
+#: utils/adt/rowtypes.c:182 utils/adt/rowtypes.c:190
msgid "Unexpected end of input."
msgstr "Unerwartetes Ende der Eingabe."
-#: utils/adt/rowtypes.c:240
+#: utils/adt/rowtypes.c:241
msgid "Too many columns."
msgstr "Zu viele Spalten."
-#: utils/adt/rowtypes.c:248
+#: utils/adt/rowtypes.c:249
msgid "Junk after right parenthesis."
msgstr "Müll nach rechter Klammer."
-#: utils/adt/rowtypes.c:499
+#: utils/adt/rowtypes.c:514
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "falsche Anzahl der Spalten: %d, erwartet wurden %d"
-#: utils/adt/rowtypes.c:526
+#: utils/adt/rowtypes.c:541
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "falscher Datentyp: %u, erwartet wurde %u"
-#: utils/adt/rowtypes.c:587
+#: utils/adt/rowtypes.c:602
#, c-format
msgid "improper binary format in record column %d"
msgstr "falsches Binärformat in Record-Spalte %d"
@@ -5719,7 +5719,7 @@
msgid "cannot insert multiple commands into a prepared statement"
msgstr "kann nicht mehrere Befehle in vorbereitete Anweisung einfügen"
-#: tcop/postgres.c:1258 commands/prepare.c:121 parser/analyze.c:1958
+#: tcop/postgres.c:1258 commands/prepare.c:121 parser/analyze.c:1962
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "konnte Datentyp von Parameter $%d nicht ermitteln"
@@ -5925,8 +5925,8 @@
msgstr "Tabelle »%s« existiert nicht, wird übersprungen"
#: tcop/utility.c:79 commands/lockcmds.c:71 commands/tablecmds.c:659
-#: commands/tablecmds.c:2671 commands/indexcmds.c:170
-#: commands/indexcmds.c:1327 commands/comment.c:514 commands/trigger.c:107
+#: commands/tablecmds.c:2671 commands/indexcmds.c:167
+#: commands/indexcmds.c:1290 commands/comment.c:514 commands/trigger.c:107
#: commands/trigger.c:838 catalog/toasting.c:83
#, c-format
msgid "\"%s\" is not a table"
@@ -5986,8 +5986,8 @@
msgid "index \"%s\" does not exist, skipping"
msgstr "Index »%s« existiert nicht, wird übersprungen"
-#: tcop/utility.c:97 access/index/indexam.c:146 commands/indexcmds.c:1263
-#: commands/indexcmds.c:1293 commands/comment.c:500
+#: tcop/utility.c:97 access/index/indexam.c:146 commands/indexcmds.c:1226
+#: commands/indexcmds.c:1256 commands/comment.c:500
#, c-format
msgid "\"%s\" is not an index"
msgstr "»%s« ist kein Index"
@@ -6013,7 +6013,7 @@
#: tcop/utility.c:207 tcop/utility.c:244 commands/tablecmds.c:670
#: commands/tablecmds.c:1383 commands/tablecmds.c:1573
#: commands/tablecmds.c:2683 commands/tablecmds.c:2712
-#: commands/tablecmds.c:3915 commands/trigger.c:113 commands/trigger.c:844
+#: commands/tablecmds.c:3917 commands/trigger.c:113 commands/trigger.c:844
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "keine Berechtigung: »%s« ist ein Systemkatalog"
@@ -6063,7 +6063,7 @@
"fillfactor=%d ist außerhalb des gültigen Bereichs (sollte zwischen %d und "
"100 sein)"
-#: access/common/tupdesc.c:543 parser/parse_relation.c:902
+#: access/common/tupdesc.c:543 parser/parse_relation.c:909
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "Spalte »%s« kann nicht als SETOF deklariert werden"
@@ -6143,7 +6143,7 @@
msgstr "»%s« ist ein Index"
#: access/heap/heapam.c:1075 access/heap/heapam.c:1103
-#: commands/tablecmds.c:5406 commands/tablecmds.c:6518 catalog/aclchk.c:579
+#: commands/tablecmds.c:5410 commands/tablecmds.c:6522 catalog/aclchk.c:579
#, c-format
msgid "\"%s\" is a composite type"
msgstr "»%s« ist ein zusammengesetzter Typ"
@@ -7647,12 +7647,12 @@
msgid "inherited relation \"%s\" is not a table"
msgstr "geerbte Relation »%s« ist keine Tabelle"
-#: commands/tablecmds.c:837 commands/tablecmds.c:6025
+#: commands/tablecmds.c:837 commands/tablecmds.c:6029
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "von temporärer Relation »%s« kann nicht geerbt werden"
-#: commands/tablecmds.c:854 commands/tablecmds.c:6053
+#: commands/tablecmds.c:854 commands/tablecmds.c:6057
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "von der Relation »%s« würde mehrmals geerbt werden"
@@ -7782,7 +7782,7 @@
msgid "\"%s\" is not a table or view"
msgstr "»%s« ist keine Tabelle oder Sicht"
-#: commands/tablecmds.c:2701 commands/tablecmds.c:3406
+#: commands/tablecmds.c:2701 commands/tablecmds.c:3408
#, c-format
msgid "\"%s\" is not a table or index"
msgstr "»%s« ist keine Tabelle und kein Index"
@@ -7802,7 +7802,7 @@
msgid "column must be added to child tables too"
msgstr "Spalte muss ebenso in den abgeleiteten Tabellen hinzugefügt werden"
-#: commands/tablecmds.c:2982 commands/tablecmds.c:6184
+#: commands/tablecmds.c:2982 commands/tablecmds.c:6188
#, c-format
msgid "child table \"%s\" has different type for column \"%s\""
msgstr "abgeleitete Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«"
@@ -7812,102 +7812,102 @@
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr "verschmelze Definition von Spalte »%s« für abgeleitete Tabelle »%s«"
-#: commands/tablecmds.c:3226 commands/tablecmds.c:3318
-#: commands/tablecmds.c:3363 commands/tablecmds.c:3459
-#: commands/tablecmds.c:3520 commands/tablecmds.c:4737
+#: commands/tablecmds.c:3226 commands/tablecmds.c:3320
+#: commands/tablecmds.c:3365 commands/tablecmds.c:3461
+#: commands/tablecmds.c:3522 commands/tablecmds.c:4741
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "Systemspalte »%s« kann nicht geändert werden"
-#: commands/tablecmds.c:3262
+#: commands/tablecmds.c:3264
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "Spalte »%s« ist in einem Primärschlüssel"
-#: commands/tablecmds.c:3433
+#: commands/tablecmds.c:3435
#, c-format
msgid "statistics target %d is too low"
msgstr "Statistikziel %d ist zu niedrig"
-#: commands/tablecmds.c:3441
+#: commands/tablecmds.c:3443
#, c-format
msgid "lowering statistics target to %d"
msgstr "setze Statistikziel auf %d herab"
-#: commands/tablecmds.c:3501
+#: commands/tablecmds.c:3503
#, c-format
msgid "invalid storage type \"%s\""
msgstr "ungültiger Storage-Typ »%s«"
-#: commands/tablecmds.c:3532
+#: commands/tablecmds.c:3534
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN"
-#: commands/tablecmds.c:3589
+#: commands/tablecmds.c:3591
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "Systemspalte »%s« kann nicht gelöscht werden"
-#: commands/tablecmds.c:3596
+#: commands/tablecmds.c:3598
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "geerbte Spalte »%s« kann nicht gelöscht werden"
-#: commands/tablecmds.c:3836 catalog/pg_constraint.c:609 catalog/heap.c:1858
+#: commands/tablecmds.c:3838 catalog/pg_constraint.c:609 catalog/heap.c:1858
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "Constraint »%s« existiert bereits für Relation »%s«"
-#: commands/tablecmds.c:3903 commands/sequence.c:1266
+#: commands/tablecmds.c:3905 commands/sequence.c:1266
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle"
-#: commands/tablecmds.c:3937
+#: commands/tablecmds.c:3939
msgid "cannot reference temporary table from permanent table constraint"
msgstr ""
"temporäre Tabelle kann nicht in permanentem Tabellen-Constraint benutzt "
"werden"
-#: commands/tablecmds.c:3944
+#: commands/tablecmds.c:3946
msgid "cannot reference permanent table from temporary table constraint"
msgstr ""
"permanente Tabelle kann nicht in temporären Tabellen-Constraint benutzt "
"werden"
-#: commands/tablecmds.c:3998
+#: commands/tablecmds.c:4000
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:4089
+#: commands/tablecmds.c:4091
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "Fremdschlüssel-Constraint »%s« kann nicht implementiert werden"
-#: commands/tablecmds.c:4092
+#: commands/tablecmds.c:4094
#, 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:4183
+#: commands/tablecmds.c:4185
#, 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:4188
+#: commands/tablecmds.c:4190
#, 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:4261
+#: commands/tablecmds.c:4263
#, 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:4395
+#: commands/tablecmds.c:4399
#, c-format
msgid ""
"there is no unique constraint matching given keys for referenced table \"%s\""
@@ -7915,185 +7915,185 @@
"in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Unique Constraint, "
"der auf die angegebenen Schlüssel passt"
-#: commands/tablecmds.c:4693 commands/trigger.c:3469
+#: commands/tablecmds.c:4697 commands/trigger.c:3481
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "Constraint »%s« existiert nicht"
-#: commands/tablecmds.c:4698
+#: commands/tablecmds.c:4702
#, c-format
msgid "multiple constraints named \"%s\" were dropped"
msgstr "mehrere Constraints namens »%s« wurden gelöscht"
-#: commands/tablecmds.c:4744
+#: commands/tablecmds.c:4748
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "kann vererbte Spalte »%s« nicht ändern"
-#: commands/tablecmds.c:4780
+#: commands/tablecmds.c:4784
msgid "transform expression must not return a set"
msgstr "Umwandlungsausdruck kann keine Ergebnismenge zurückgeben"
-#: commands/tablecmds.c:4786
+#: commands/tablecmds.c:4790
msgid "cannot use subquery in transform expression"
msgstr "Unteranfragen können in Umwandlungsausdrücken nicht verwendet werden"
-#: commands/tablecmds.c:4790
+#: commands/tablecmds.c:4794
msgid "cannot use aggregate function in transform expression"
msgstr ""
"Aggregatfunktionen können in Umwandlungsausdrücken nicht verwendet werden"
-#: commands/tablecmds.c:4807
+#: commands/tablecmds.c:4811
#, c-format
msgid "column \"%s\" cannot be cast to type \"%s\""
msgstr "Spalte »%s« kann nicht in Typ »%s« umgewandelt werden"
-#: commands/tablecmds.c:4833
+#: commands/tablecmds.c:4837
#, 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:4872
+#: commands/tablecmds.c:4876
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "Typ der Spalte »%s« kann nicht zweimal geändert werden"
-#: commands/tablecmds.c:4905
+#: commands/tablecmds.c:4909
#, 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:5031
+#: commands/tablecmds.c:5035
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:5032
+#: commands/tablecmds.c:5036
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s hängt von Spalte »%s« ab"
-#: commands/tablecmds.c:5376
+#: commands/tablecmds.c:5380
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "kann Eigentümer des Index »%s« nicht ändern"
-#: commands/tablecmds.c:5378
+#: commands/tablecmds.c:5382
msgid "Change the ownership of the index's table, instead."
msgstr "Ändern Sie stattdessen den Eigentümer der Tabelle des Index."
-#: commands/tablecmds.c:5394
+#: commands/tablecmds.c:5398
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "kann Eigentümer der Sequenz »%s« nicht ändern"
-#: commands/tablecmds.c:5396 commands/tablecmds.c:6510
+#: commands/tablecmds.c:5400 commands/tablecmds.c:6514
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "Sequenz »%s« ist mit Tabelle »%s« verknüpft."
-#: commands/tablecmds.c:5408 commands/tablecmds.c:6520
+#: commands/tablecmds.c:5412 commands/tablecmds.c:6524
msgid "Use ALTER TYPE instead."
msgstr "Verwenden Sie stattdessen ALTER TYPE."
-#: commands/tablecmds.c:5417 commands/tablecmds.c:6528
+#: commands/tablecmds.c:5421 commands/tablecmds.c:6532
#, c-format
msgid "\"%s\" is not a table, view, or sequence"
msgstr "»%s« ist keine Tabelle, Sicht oder Sequenz"
-#: commands/tablecmds.c:5629 commands/cluster.c:163
+#: commands/tablecmds.c:5633 commands/cluster.c:163
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "Index »%s« für Tabelle »%s« existiert nicht"
-#: commands/tablecmds.c:5676
+#: commands/tablecmds.c:5680
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig"
-#: commands/tablecmds.c:5729
+#: commands/tablecmds.c:5733
#, c-format
msgid "\"%s\" is not a table, index, or TOAST table"
msgstr "»%s« ist weder Tabelle, Index noch TOAST-Tabelle"
-#: commands/tablecmds.c:5793
+#: commands/tablecmds.c:5797
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "Systemrelation »%s« kann nicht verschoben werden"
-#: commands/tablecmds.c:5800 executor/execMain.c:2754 catalog/index.c:562
+#: commands/tablecmds.c:5804 executor/execMain.c:2754 catalog/index.c:562
#: catalog/heap.c:891
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:5809
+#: commands/tablecmds.c:5813
msgid "cannot move temporary tables of other sessions"
msgstr "temporäre Tabellen anderer Sitzungen können nicht verschoben werden"
-#: commands/tablecmds.c:6077
+#: commands/tablecmds.c:6081
msgid "circular inheritance not allowed"
msgstr "zirkuläre Vererbung ist nicht erlaubt"
-#: commands/tablecmds.c:6078
+#: commands/tablecmds.c:6082
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "»%s« ist schon von »%s« abgeleitet."
-#: commands/tablecmds.c:6086
+#: commands/tablecmds.c:6090
#, 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:6191
+#: commands/tablecmds.c:6195
#, 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:6207
+#: commands/tablecmds.c:6211
#, c-format
msgid "child table is missing column \"%s\""
msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle"
-#: commands/tablecmds.c:6299
+#: commands/tablecmds.c:6303
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle"
-#: commands/tablecmds.c:6308
+#: commands/tablecmds.c:6312
#, c-format
msgid "constraint definition for check constraint \"%s\" does not match"
msgstr "Constraint-Definition für Check-Constraint »%s« stimmt nicht überein"
-#: commands/tablecmds.c:6389
+#: commands/tablecmds.c:6393
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«"
-#: commands/tablecmds.c:6509
+#: commands/tablecmds.c:6513
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:6538
+#: commands/tablecmds.c:6542
#, c-format
msgid "relation \"%s\" is already in schema \"%s\""
msgstr "Relation »%s« ist bereits in Schema »%s«"
-#: commands/tablecmds.c:6546 commands/functioncmds.c:1708
+#: commands/tablecmds.c:6550 commands/functioncmds.c:1708
#: commands/typecmds.c:2597
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:6552 commands/functioncmds.c:1714
+#: commands/tablecmds.c:6556 commands/functioncmds.c:1714
#: commands/typecmds.c:2603
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:6603
+#: commands/tablecmds.c:6607
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "Relation »%s« existiert bereits in Schema »%s«"
@@ -9113,24 +9113,24 @@
"einige nutzlose Dateien wurde möglicherweise im alten Datenbankverzeichnis "
"»%s« zurückgelassen"
-#: commands/indexcmds.c:145
+#: commands/indexcmds.c:142
msgid "must specify at least one column"
msgstr "mindestens eine Spalte muss angegeben werden"
-#: commands/indexcmds.c:149
+#: commands/indexcmds.c:146
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "Index kann nicht mehr als %d Spalten enthalten"
-#: commands/indexcmds.c:179
+#: commands/indexcmds.c:176
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:272
+#: commands/indexcmds.c:269
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "ersetze Zugriffsmethode »gist« für obsolete Methode »rtree«"
-#: commands/indexcmds.c:282 commands/opclasscmds.c:288
+#: commands/indexcmds.c:279 commands/opclasscmds.c:288
#: commands/opclasscmds.c:681 commands/opclasscmds.c:784
#: commands/opclasscmds.c:1518 commands/opclasscmds.c:1581
#: commands/opclasscmds.c:1749 commands/opclasscmds.c:1849
@@ -9140,77 +9140,77 @@
msgid "access method \"%s\" does not exist"
msgstr "Zugriffsmethode »%s« existiert nicht"
-#: commands/indexcmds.c:291
+#: commands/indexcmds.c:288
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "Zugriffsmethode »%s« unterstützt keine Unique Indexe"
-#: commands/indexcmds.c:296
+#: commands/indexcmds.c:293
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "Zugriffsmethode »%s« unterstützt keine mehrspaltigen Indexe"
-#: commands/indexcmds.c:329 parser/parse_utilcmd.c:1039
+#: commands/indexcmds.c:326 parser/parse_utilcmd.c:1039
#: parser/parse_utilcmd.c:1122
#, 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:346
+#: commands/indexcmds.c:343
msgid "primary keys cannot be expressions"
msgstr "Primärschlüssel können keine Ausdrücke sein"
-#: commands/indexcmds.c:376 commands/indexcmds.c:773
+#: commands/indexcmds.c:373 commands/indexcmds.c:736
#: parser/parse_utilcmd.c:1237
#, 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:431
+#: commands/indexcmds.c:428
#, 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:714
+#: commands/indexcmds.c:677
msgid "cannot use subquery in index predicate"
msgstr "Unteranfragen können nicht im Indexprädikat verwendet werden"
-#: commands/indexcmds.c:718
+#: commands/indexcmds.c:681
msgid "cannot use aggregate in index predicate"
msgstr "Aggregatfunktionen können nicht im Indexprädikat verwendet werden"
-#: commands/indexcmds.c:727
+#: commands/indexcmds.c:690
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "Funktionen im Indexprädikat müssen als IMMUTABLE markiert sein"
-#: commands/indexcmds.c:811
+#: commands/indexcmds.c:774
msgid "cannot use subquery in index expression"
msgstr "Unteranfragen können nicht in Indexausdrücken verwendet werden"
-#: commands/indexcmds.c:815
+#: commands/indexcmds.c:778
msgid "cannot use aggregate function in index expression"
msgstr "Aggregatfunktionen können nicht in Indexausdrücken verwendet werden"
-#: commands/indexcmds.c:825
+#: commands/indexcmds.c:788
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein"
-#: commands/indexcmds.c:862
+#: commands/indexcmds.c:825
#, 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:867
+#: commands/indexcmds.c:830
#, 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:923
+#: commands/indexcmds.c:886
#, 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:925
+#: commands/indexcmds.c:888
msgid ""
"You must specify an operator class for the index or define a default "
"operator class for the data type."
@@ -9218,7 +9218,7 @@
"Sie müssen für den Index eine Operatorklasse angeben oder eine "
"Standardoperatorklasse für den Datentyp definieren."
-#: commands/indexcmds.c:955 commands/indexcmds.c:965
+#: commands/indexcmds.c:918 commands/indexcmds.c:928
#: commands/opclasscmds.c:1530 commands/opclasscmds.c:1534
#: commands/opclasscmds.c:1771 commands/opclasscmds.c:1782
#: commands/opclasscmds.c:1970 commands/opclasscmds.c:1981
@@ -9227,33 +9227,33 @@
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«"
-#: commands/indexcmds.c:978
+#: commands/indexcmds.c:941
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht"
-#: commands/indexcmds.c:1068
+#: commands/indexcmds.c:1031
#, 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:1339
+#: commands/indexcmds.c:1302
#, 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:1346
+#: commands/indexcmds.c:1309
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "Tabelle »%s« hat keine Indexe"
-#: commands/indexcmds.c:1374
+#: commands/indexcmds.c:1337
msgid "can only reindex the currently open database"
msgstr "aktuell geöffnete Datenbank kann nicht reindiziert werden"
-#: commands/indexcmds.c:1463
+#: commands/indexcmds.c:1426
#, c-format
msgid "table \"%s\" was reindexed"
msgstr "Tabelle »%s« wurde neu indiziert"
@@ -9981,12 +9981,12 @@
msgid "could not serialize access due to concurrent update"
msgstr "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung"
-#: commands/trigger.c:3349 catalog/namespace.c:226 catalog/namespace.c:300
+#: commands/trigger.c:3361 catalog/namespace.c:226 catalog/namespace.c:300
#, 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:3443
+#: commands/trigger.c:3455
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "Constraint »%s« ist nicht verschiebbar"
@@ -10368,8 +10368,8 @@
msgid "invalid parameter list format: \"%s\""
msgstr "ungültiges Parameterlistenformat: »%s«"
-#: executor/nodeSubplan.c:290 executor/nodeSubplan.c:329
-#: executor/nodeSubplan.c:960
+#: executor/nodeSubplan.c:291 executor/nodeSubplan.c:330
+#: executor/nodeSubplan.c:965
msgid "more than one row returned by a subquery used as an expression"
msgstr "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile"
@@ -10586,11 +10586,11 @@
msgid "cannot open %s query as cursor"
msgstr "%s kann nicht als Cursor geöffnet werden"
-#: executor/spi.c:1040 parser/analyze.c:1692
+#: executor/spi.c:1040 parser/analyze.c:1696
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt"
-#: executor/spi.c:1041 parser/analyze.c:1693
+#: executor/spi.c:1041 parser/analyze.c:1697
msgid "Scrollable cursors must be READ ONLY."
msgstr "Scrollbare Cursor müssen READ ONLY sein."
@@ -10751,7 +10751,7 @@
msgid "ROW() column has type %s instead of type %s"
msgstr "ROW()-Spalte hat Typ %s statt Typ %s"
-#: optimizer/plan/initsplan.c:560
+#: optimizer/plan/initsplan.c:564
msgid ""
"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer "
"join"
@@ -10759,8 +10759,8 @@
"SELECT FOR UPDATE/SHARE kann nicht auf die nullbare Seite eines äußeren "
"Verbundes angewendet werden"
-#: optimizer/plan/planner.c:802 parser/analyze.c:1084 parser/analyze.c:1252
-#: parser/analyze.c:1753
+#: optimizer/plan/planner.c:802 parser/analyze.c:1085 parser/analyze.c:1256
+#: parser/analyze.c:1757
msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "SELECT FOR UPDATE/SHARE ist nicht in UNION/INTERSECT/EXCEPT erlaubt"
@@ -10857,44 +10857,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"
@@ -12173,11 +12178,11 @@
msgid "shared indexes cannot be created after initdb"
msgstr "Cluster-globale Indexe können nicht nach initdb erzeugt werden"
-#: catalog/index.c:2269
+#: catalog/index.c:2341
msgid "cannot reindex temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren"
-#: catalog/index.c:2291
+#: catalog/index.c:2363
#, c-format
msgid "shared index \"%s\" can only be reindexed in stand-alone mode"
msgstr ""
@@ -12326,7 +12331,7 @@
"kann Objekte, die %s gehören, nicht löschen, weil sie vom Datenbanksystem "
"benötigt werden"
-#: catalog/pg_shdepend.c:1277
+#: catalog/pg_shdepend.c:1281
#, c-format
msgid ""
"cannot reassign ownership of objects owned by %s because they are required "
@@ -13330,7 +13335,7 @@
msgid "%s: could not determine user name (GetUserName failed)\n"
msgstr "%s: konnte Benutzername nicht ermitteln (GetUserName fehlgeschlagen)\n"
-#: parser/parse_coerce.c:250 parser/analyze.c:1953 parser/parse_expr.c:561
+#: parser/parse_coerce.c:250 parser/analyze.c:1957 parser/parse_expr.c:561
#: parser/parse_expr.c:567
#, c-format
msgid "there is no parameter $%d"
@@ -13672,57 +13677,57 @@
msgstr ""
"Unteranfrage verwendet nicht gruppierte Spalte »%s.%s« aus äußerer Anfrage"
-#: parser/analyze.c:452
+#: parser/analyze.c:453
msgid "INSERT ... SELECT cannot specify INTO"
msgstr "INSERT ... SELECT kann INTO nicht verwenden"
-#: parser/analyze.c:540 parser/analyze.c:880
+#: parser/analyze.c:541 parser/analyze.c:881
msgid "VALUES lists must all be the same length"
msgstr "VALUES-Listen müssen alle die gleiche Länge haben"
-#: parser/analyze.c:559 parser/analyze.c:981
+#: parser/analyze.c:560 parser/analyze.c:982
msgid "VALUES must not contain table references"
msgstr "VALUES darf keine Tabellenverweise enthalten"
-#: parser/analyze.c:571 parser/analyze.c:993
+#: parser/analyze.c:572 parser/analyze.c:994
msgid "VALUES must not contain OLD or NEW references"
msgstr "VALUES darf keine Verweise auf OLD oder NEW enthalten"
-#: parser/analyze.c:572 parser/analyze.c:994
+#: parser/analyze.c:573 parser/analyze.c:995
msgid "Use SELECT ... UNION ALL ... instead."
msgstr "Verwenden Sie stattdessen SELECT ... UNION ALL ... ."
-#: parser/analyze.c:666 parser/analyze.c:1004
+#: parser/analyze.c:667 parser/analyze.c:1005
msgid "cannot use aggregate function in VALUES"
msgstr "Aggregatfunktionen können nicht in VALUES verwendet werden"
-#: parser/analyze.c:696
+#: parser/analyze.c:697
msgid "INSERT has more expressions than target columns"
msgstr "INSERT hat mehr Ausdrücke als Zielspalten"
-#: parser/analyze.c:701
+#: parser/analyze.c:702
msgid "INSERT has more target columns than expressions"
msgstr "INSERT hat mehr Zielspalten als Ausdrücke"
-#: parser/analyze.c:893
+#: parser/analyze.c:894
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:962 parser/analyze.c:1874
+#: parser/analyze.c:963 parser/analyze.c:1878
msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
msgstr "SELECT FOR UPDATE/SHARE kann nicht auf VALUES angewendet werden"
-#: parser/analyze.c:1192
+#: parser/analyze.c:1193
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "ungültige ORDER-BY-Klausel mit UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1193
+#: parser/analyze.c:1194
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:1194
+#: parser/analyze.c:1195
msgid ""
"Add the expression/function to every SELECT, or move the UNION into a FROM "
"clause."
@@ -13730,11 +13735,11 @@
"Fügen Sie den Ausdrück/die Funktion jedem SELECT hinzu oder verlegen Sie die "
"UNION in eine FROM-Klausel."
-#: parser/analyze.c:1247
+#: parser/analyze.c:1251
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:1303
+#: parser/analyze.c:1307
msgid ""
"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of "
"same query level"
@@ -13742,80 +13747,80 @@
"Teilanweisung von UNION/INTERSECT/EXCEPT kann nicht auf andere Relationen "
"auf der selben Anfrageebene verweisen"
-#: parser/analyze.c:1361
+#: parser/analyze.c:1365
#, 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:1478
+#: parser/analyze.c:1482
msgid "CREATE TABLE AS specifies too many column names"
msgstr "CREATE TABLE AS gibt zu viele Spaltennamen an"
-#: parser/analyze.c:1527
+#: parser/analyze.c:1531
msgid "cannot use aggregate function in UPDATE"
msgstr "Aggregatfunktionen können nicht in UPDATE verwendet werden"
-#: parser/analyze.c:1624
+#: parser/analyze.c:1628
msgid "cannot use aggregate function in RETURNING"
msgstr "Aggregatfunktionen können nicht in RETURNING verwendet werden"
-#: parser/analyze.c:1630
+#: parser/analyze.c:1634
msgid "RETURNING cannot contain references to other relations"
msgstr "RETURNING kann keine Verweise auf andere Relationen enthalten"
-#: parser/analyze.c:1666
+#: parser/analyze.c:1670
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "SCROLL und NO SCROLL können nicht beide angegeben werden"
-#: parser/analyze.c:1679
+#: parser/analyze.c:1683
msgid "DECLARE CURSOR cannot specify INTO"
msgstr "DECLARE CURSOR kann nicht INTO verwenden"
-#: parser/analyze.c:1685
+#: parser/analyze.c:1689
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:1686
+#: parser/analyze.c:1690
msgid "Holdable cursors must be READ ONLY."
msgstr "Haltbare Cursor müssen READ ONLY sein."
-#: parser/analyze.c:1699
+#: parser/analyze.c:1703
msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt"
-#: parser/analyze.c:1700
+#: parser/analyze.c:1704
msgid "Insensitive cursors must be READ ONLY."
msgstr "Insensitive Cursor müssen READ ONLY sein."
-#: parser/analyze.c:1757
+#: parser/analyze.c:1761
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:1761
+#: parser/analyze.c:1765
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:1765
+#: parser/analyze.c:1769
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:1769
+#: parser/analyze.c:1773
msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions"
msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Aggregatfunktionen erlaubt"
-#: parser/analyze.c:1859
+#: parser/analyze.c:1863
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:1864
+#: parser/analyze.c:1868
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:1869
+#: parser/analyze.c:1873
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:1887
+#: parser/analyze.c:1891
#, 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"
@@ -14104,67 +14109,67 @@
msgid "table name \"%s\" specified more than once"
msgstr "Tabellenname »%s« mehrmals angegeben"
-#: parser/parse_relation.c:361 parser/parse_relation.c:433
+#: parser/parse_relation.c:361 parser/parse_relation.c:440
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "Spaltenverweis »%s« ist nicht eindeutig"
-#: parser/parse_relation.c:552 parser/parse_relation.c:784
+#: parser/parse_relation.c:559 parser/parse_relation.c:791
#, 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:582
+#: parser/parse_relation.c:589
#, c-format
msgid "too many column aliases specified for function %s"
msgstr "zu viele Spaltenaliasnamen für Funktion %s angegeben"
-#: parser/parse_relation.c:861
+#: parser/parse_relation.c:868
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:868
+#: parser/parse_relation.c:875
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:913
+#: parser/parse_relation.c:920
#, 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:982
+#: parser/parse_relation.c:989
#, 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:1035
+#: parser/parse_relation.c:1042
#, c-format
msgid "joins can have at most %d columns"
msgstr "Verbunde können höchstens %d Spalten haben"
-#: parser/parse_relation.c:1649
+#: parser/parse_relation.c:1656
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "Spalte %d von Relation »%s« existiert nicht"
-#: parser/parse_relation.c:2001
+#: parser/parse_relation.c:2008
#, 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:2004 parser/parse_relation.c:2030
+#: parser/parse_relation.c:2011 parser/parse_relation.c:2037
#, 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:2006 parser/parse_relation.c:2033
+#: parser/parse_relation.c:2013 parser/parse_relation.c:2040
#, c-format
msgid ""
"There is an entry for table \"%s\", but it cannot be referenced from this "
@@ -14173,24 +14178,24 @@
"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:2013
+#: parser/parse_relation.c:2020
#, c-format
msgid "missing FROM-clause entry in subquery for table \"%s\""
msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s« in Unteranfrage"
-#: parser/parse_relation.c:2015
+#: parser/parse_relation.c:2022
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s«"
-#: parser/parse_relation.c:2025
+#: parser/parse_relation.c:2032
#, c-format
msgid "adding missing FROM-clause entry in subquery for table \"%s\""
msgstr ""
"fehlender Eintrag in FROM-Klausel für Tabelle »%s« in Unteranfrage wird "
"hinzugefügt"
-#: parser/parse_relation.c:2027
+#: parser/parse_relation.c:2034
#, 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.3.22.tar.bz2/src/backend/po/fr.po
^
|
@@ -8,8 +8,8 @@
msgstr ""
"Project-Id-Version: postgres-83-fr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-02 23:37+0000\n"
-"PO-Revision-Date: 2012-09-03 22:50+0100\n"
+"POT-Creation-Date: 2012-12-02 13:47+0000\n"
+"PO-Revision-Date: 2012-12-02 15:34+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: <pgsql-fr-generale@postgresql.org>\n"
"Language: \n"
@@ -601,7 +601,7 @@
#: postmaster/postmaster.c:4190
#: utils/hash/dynahash.c:363
#: utils/hash/dynahash.c:435
-#: utils/hash/dynahash.c:929
+#: utils/hash/dynahash.c:950
#: utils/misc/guc.c:2538
#: utils/misc/guc.c:2551
#: utils/misc/guc.c:2564
@@ -887,16 +887,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:3849
+#: utils/cache/relcache.c:3866
#, 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:3851
+#: utils/cache/relcache.c:3868
msgid "Continuing anyway, but there's something wrong."
msgstr "Continue malgré tout, mais quelque chose s'est mal passé."
-#: utils/cache/relcache.c:4053
+#: utils/cache/relcache.c:4070
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "n'a pas pu supprimer le fichier cache « %s » : %m"
@@ -958,7 +958,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:185
@@ -3519,20 +3519,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:747
-#: utils/adt/int.c:762
-#: utils/adt/int.c:900
-#: utils/adt/int.c:921
-#: utils/adt/int.c:948
-#: utils/adt/int.c:989
-#: utils/adt/int.c:1010
-#: utils/adt/int.c:1037
+#: 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:986
+#: utils/adt/int.c:1007
+#: utils/adt/int.c:1034
#: utils/adt/int.c:1067
-#: utils/adt/int.c:1170
-#: utils/adt/int8.c:1031
+#: utils/adt/int.c:1198
+#: utils/adt/int8.c:1060
#: utils/adt/float.c:1105
#: utils/adt/float.c:1164
#: utils/adt/float.c:2708
@@ -3610,13 +3608,13 @@
msgstr "données int2vector invalide"
#: utils/adt/int.c:339
-#: utils/adt/int.c:778
-#: utils/adt/int.c:807
-#: utils/adt/int.c:828
-#: utils/adt/int.c:848
-#: utils/adt/int.c:879
-#: utils/adt/int.c:1185
-#: utils/adt/int8.c:1056
+#: 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:1213
+#: utils/adt/int8.c:1085
#: utils/adt/float.c:1123
#: utils/adt/float.c:1181
#: utils/adt/numeric.c:2035
@@ -3624,20 +3622,20 @@
msgid "smallint out of range"
msgstr "smallint en dehors des limites"
-#: utils/adt/int.c:720
-#: utils/adt/int.c:864
-#: utils/adt/int.c:962
-#: utils/adt/int.c:1052
-#: utils/adt/int.c:1081
-#: utils/adt/int.c:1105
-#: utils/adt/int.c:1125
+#: utils/adt/int.c:709
+#: utils/adt/int.c:851
+#: utils/adt/int.c:959
+#: utils/adt/int.c:1049
+#: utils/adt/int.c:1088
+#: utils/adt/int.c:1116
#: utils/adt/int.c:1145
+#: utils/adt/int.c:1165
#: utils/adt/timestamp.c:2900
#: utils/adt/geo_ops.c:3967
-#: utils/adt/int8.c:605
-#: utils/adt/int8.c:655
-#: utils/adt/int8.c:836
-#: utils/adt/int8.c:934
+#: utils/adt/int8.c:606
+#: utils/adt/int8.c:666
+#: utils/adt/int8.c:855
+#: utils/adt/int8.c:963
#: utils/adt/float.c:767
#: utils/adt/float.c:832
#: utils/adt/float.c:2467
@@ -3651,8 +3649,8 @@
msgid "division by zero"
msgstr "division par zéro"
-#: utils/adt/int.c:1373
-#: utils/adt/int8.c:1193
+#: utils/adt/int.c:1401
+#: utils/adt/int8.c:1222
msgid "step size cannot equal zero"
msgstr "la taille du pas ne peut pas valoir zéro"
@@ -4052,26 +4050,26 @@
#: utils/adt/int8.c:506
#: utils/adt/int8.c:535
#: utils/adt/int8.c:556
-#: utils/adt/int8.c:589
-#: utils/adt/int8.c:620
-#: utils/adt/int8.c:638
-#: utils/adt/int8.c:688
-#: utils/adt/int8.c:704
-#: utils/adt/int8.c:773
-#: utils/adt/int8.c:794
-#: utils/adt/int8.c:821
-#: utils/adt/int8.c:851
-#: utils/adt/int8.c:872
-#: utils/adt/int8.c:893
-#: utils/adt/int8.c:920
-#: utils/adt/int8.c:1094
-#: utils/adt/int8.c:1133
+#: utils/adt/int8.c:590
+#: utils/adt/int8.c:624
+#: utils/adt/int8.c:649
+#: utils/adt/int8.c:707
+#: utils/adt/int8.c:723
+#: utils/adt/int8.c:792
+#: utils/adt/int8.c:813
+#: utils/adt/int8.c:840
+#: utils/adt/int8.c:873
+#: utils/adt/int8.c:901
+#: utils/adt/int8.c:922
+#: utils/adt/int8.c:949
+#: utils/adt/int8.c:1123
+#: utils/adt/int8.c:1162
#: utils/adt/varbit.c:1476
#: utils/adt/numeric.c:1987
msgid "bigint out of range"
msgstr "bigint en dehors des limites"
-#: utils/adt/int8.c:1150
+#: utils/adt/int8.c:1179
msgid "OID out of range"
msgstr "OID en dehors des limites"
@@ -4394,7 +4392,7 @@
msgstr "l'heure AM/PM doit être compris entre 1 et 12"
#: utils/adt/formatting.c:3523
-#: utils/adt/datetime.c:2163
+#: utils/adt/datetime.c:2166
#, c-format
msgid "inconsistent use of year %04d and \"BC\""
msgstr "utilisation non cohérente de l'année %04d et de « BC »"
@@ -4554,9 +4552,9 @@
#: utils/adt/dbsize.c:246
#: utils/adt/acl.c:2582
#: commands/tablecmds.c:343
-#: commands/tablecmds.c:5665
+#: commands/tablecmds.c:5669
#: commands/dbcommands.c:312
-#: commands/indexcmds.c:208
+#: commands/indexcmds.c:205
#: commands/comment.c:663
#: commands/tablespace.c:412
#: commands/tablespace.c:767
@@ -4604,7 +4602,7 @@
#. translator: first %s is inet or cidr
#: utils/adt/network.c:107
-#: utils/adt/datetime.c:3147
+#: utils/adt/datetime.c:3150
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "syntaxe en entrée invalide pour le type %s : « %s »"
@@ -4710,21 +4708,21 @@
#: utils/adt/ruleutils.c:1313
#: commands/tablecmds.c:3217
-#: commands/tablecmds.c:3309
-#: commands/tablecmds.c:3356
-#: commands/tablecmds.c:3452
-#: commands/tablecmds.c:3513
-#: commands/tablecmds.c:3579
-#: commands/tablecmds.c:4728
-#: commands/tablecmds.c:4862
+#: commands/tablecmds.c:3311
+#: commands/tablecmds.c:3358
+#: commands/tablecmds.c:3454
+#: commands/tablecmds.c:3515
+#: commands/tablecmds.c:3581
+#: commands/tablecmds.c:4732
+#: commands/tablecmds.c:4866
#: commands/analyze.c:259
#: commands/sequence.c:1284
#: commands/copy.c:3372
#: commands/comment.c:577
-#: parser/analyze.c:1569
+#: parser/analyze.c:1573
#: parser/parse_target.c:764
-#: parser/parse_relation.c:1607
-#: parser/parse_relation.c:1662
+#: parser/parse_relation.c:1614
+#: parser/parse_relation.c:1669
#: parser/parse_type.c:116
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
@@ -4735,8 +4733,8 @@
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:4353
-#: utils/adt/ruleutils.c:4381
+#: utils/adt/ruleutils.c:4361
+#: utils/adt/ruleutils.c:4389
#: utils/adt/regproc.c:638
#: utils/adt/regproc.c:1498
msgid "too many arguments"
@@ -4887,7 +4885,7 @@
msgstr "mauvais type d'élément"
#: utils/adt/arrayfuncs.c:1346
-#: utils/adt/rowtypes.c:534
+#: utils/adt/rowtypes.c:549
#: libpq/pqformat.c:611
#: libpq/pqformat.c:629
#: libpq/pqformat.c:650
@@ -5120,7 +5118,7 @@
#: utils/adt/tsvector_op.c:1417
#: commands/tablecmds.c:1437
#: commands/copy.c:3377
-#: commands/indexcmds.c:778
+#: commands/indexcmds.c:741
#: parser/parse_expr.c:419
#, c-format
msgid "column \"%s\" does not exist"
@@ -5131,22 +5129,22 @@
msgid "column \"%s\" is not of character type"
msgstr "la colonne « %s » n'est pas de type caractère"
-#: utils/adt/datetime.c:3120
-#: utils/adt/datetime.c:3127
+#: utils/adt/datetime.c:3123
+#: utils/adt/datetime.c:3130
#, 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:3129
+#: utils/adt/datetime.c:3132
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:3134
+#: utils/adt/datetime.c:3137
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "valeur du champ interval en dehors des limites : « %s »"
-#: utils/adt/datetime.c:3140
+#: utils/adt/datetime.c:3143
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "déplacement du fuseau horaire en dehors des limites : « %s »"
@@ -5214,53 +5212,53 @@
msgid "invalid input syntax for uuid: \"%s\""
msgstr "syntaxe invalide en entrée pour l'uuid : « %s »"
-#: utils/adt/rowtypes.c:81
-#: utils/adt/rowtypes.c:450
+#: utils/adt/rowtypes.c:82
+#: utils/adt/rowtypes.c:465
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:128
-#: utils/adt/rowtypes.c:156
-#: utils/adt/rowtypes.c:179
-#: utils/adt/rowtypes.c:187
-#: utils/adt/rowtypes.c:239
-#: utils/adt/rowtypes.c:247
+#: utils/adt/rowtypes.c:129
+#: utils/adt/rowtypes.c:157
+#: utils/adt/rowtypes.c:180
+#: utils/adt/rowtypes.c:188
+#: utils/adt/rowtypes.c:240
+#: utils/adt/rowtypes.c:248
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "enregistrement litéral invalide : « %s »"
-#: utils/adt/rowtypes.c:129
+#: utils/adt/rowtypes.c:130
msgid "Missing left parenthesis."
msgstr "Parenthèse gauche manquante"
-#: utils/adt/rowtypes.c:157
+#: utils/adt/rowtypes.c:158
msgid "Too few columns."
msgstr "Pas assez de colonnes."
-#: utils/adt/rowtypes.c:181
-#: utils/adt/rowtypes.c:189
+#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:190
msgid "Unexpected end of input."
msgstr "Fin de l'entrée inattendue."
-#: utils/adt/rowtypes.c:240
+#: utils/adt/rowtypes.c:241
msgid "Too many columns."
msgstr "Trop de colonnes."
-#: utils/adt/rowtypes.c:248
+#: utils/adt/rowtypes.c:249
msgid "Junk after right parenthesis."
msgstr "Problème après la parenthèse droite."
-#: utils/adt/rowtypes.c:499
+#: utils/adt/rowtypes.c:514
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "mauvais nombre de colonnes : %d, alors que %d attendu"
-#: utils/adt/rowtypes.c:526
+#: utils/adt/rowtypes.c:541
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "mauvais type de données : %u, alors que %u attendu"
-#: utils/adt/rowtypes.c:587
+#: utils/adt/rowtypes.c:602
#, c-format
msgid "improper binary format in record column %d"
msgstr "format binaire invalide dans l'enregistrement de la colonne %d"
@@ -6141,7 +6139,7 @@
#: tcop/postgres.c:1258
#: commands/prepare.c:121
-#: parser/analyze.c:1958
+#: parser/analyze.c:1962
#, 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"
@@ -6341,8 +6339,8 @@
#: commands/lockcmds.c:71
#: commands/tablecmds.c:659
#: commands/tablecmds.c:2671
-#: commands/indexcmds.c:170
-#: commands/indexcmds.c:1327
+#: commands/indexcmds.c:167
+#: commands/indexcmds.c:1290
#: commands/comment.c:514
#: commands/trigger.c:107
#: commands/trigger.c:838
@@ -6412,8 +6410,8 @@
#: tcop/utility.c:97
#: access/index/indexam.c:146
-#: commands/indexcmds.c:1263
-#: commands/indexcmds.c:1293
+#: commands/indexcmds.c:1226
+#: commands/indexcmds.c:1256
#: commands/comment.c:500
#, c-format
msgid "\"%s\" is not an index"
@@ -6446,7 +6444,7 @@
#: commands/tablecmds.c:1573
#: commands/tablecmds.c:2683
#: commands/tablecmds.c:2712
-#: commands/tablecmds.c:3915
+#: commands/tablecmds.c:3917
#: commands/trigger.c:113
#: commands/trigger.c:844
#, c-format
@@ -6499,7 +6497,7 @@
msgstr "le facteur de remplissage (%d) est en dehors des limites (il devrait être entre %d et 100)"
#: access/common/tupdesc.c:543
-#: parser/parse_relation.c:902
+#: parser/parse_relation.c:909
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "la colonne « %s » ne peut pas être déclarée SETOF"
@@ -6590,8 +6588,8 @@
#: access/heap/heapam.c:1075
#: access/heap/heapam.c:1103
-#: commands/tablecmds.c:5406
-#: commands/tablecmds.c:6518
+#: commands/tablecmds.c:5410
+#: commands/tablecmds.c:6522
#: catalog/aclchk.c:579
#, c-format
msgid "\"%s\" is a composite type"
@@ -8171,13 +8169,13 @@
msgstr "la relation héritée « %s » n'est pas une table"
#: commands/tablecmds.c:837
-#: commands/tablecmds.c:6025
+#: commands/tablecmds.c:6029
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "ine peut pas hériter à partir d'une relation temporaire « %s »"
#: commands/tablecmds.c:854
-#: commands/tablecmds.c:6053
+#: commands/tablecmds.c:6057
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "la relation « %s » serait héritée plus d'une fois"
@@ -8309,7 +8307,7 @@
msgstr "« %s » n'est pas une table ou une vue"
#: commands/tablecmds.c:2701
-#: commands/tablecmds.c:3406
+#: commands/tablecmds.c:3408
#, c-format
msgid "\"%s\" is not a table or index"
msgstr "« %s » n'est pas une table ou un index"
@@ -8331,7 +8329,7 @@
msgstr "la colonne doit aussi être ajoutée aux tables filles"
#: commands/tablecmds.c:2982
-#: commands/tablecmds.c:6184
+#: commands/tablecmds.c:6188
#, 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 »"
@@ -8342,297 +8340,297 @@
msgstr "assemblage de la définition de la colonne « %s » pour le fils « %s »"
#: commands/tablecmds.c:3226
-#: commands/tablecmds.c:3318
-#: commands/tablecmds.c:3363
-#: commands/tablecmds.c:3459
-#: commands/tablecmds.c:3520
-#: commands/tablecmds.c:4737
+#: commands/tablecmds.c:3320
+#: commands/tablecmds.c:3365
+#: commands/tablecmds.c:3461
+#: commands/tablecmds.c:3522
+#: commands/tablecmds.c:4741
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "n'a pas pu modifier la colonne système « %s »"
-#: commands/tablecmds.c:3262
+#: commands/tablecmds.c:3264
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "la colonne « %s » est dans une clé primaire"
-#: commands/tablecmds.c:3433
+#: commands/tablecmds.c:3435
#, c-format
msgid "statistics target %d is too low"
msgstr "la cible statistique %d est trop basse"
-#: commands/tablecmds.c:3441
+#: commands/tablecmds.c:3443
#, c-format
msgid "lowering statistics target to %d"
msgstr "abaissement de la cible statistique à %d"
-#: commands/tablecmds.c:3501
+#: commands/tablecmds.c:3503
#, c-format
msgid "invalid storage type \"%s\""
msgstr "type « %s » de stockage invalide"
-#: commands/tablecmds.c:3532
+#: commands/tablecmds.c:3534
#, 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:3589
+#: commands/tablecmds.c:3591
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "ne peut pas supprimer la colonne système « %s »"
-#: commands/tablecmds.c:3596
+#: commands/tablecmds.c:3598
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "ne peut pas supprimer la colonne héritée « %s »"
-#: commands/tablecmds.c:3836
+#: commands/tablecmds.c:3838
#: catalog/pg_constraint.c:609
#: catalog/heap.c:1858
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "la contrainte « %s » de la relation « %s » existe déjà"
-#: commands/tablecmds.c:3903
+#: commands/tablecmds.c:3905
#: commands/sequence.c:1266
#, 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:3937
+#: commands/tablecmds.c:3939
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:3944
+#: commands/tablecmds.c:3946
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:3998
+#: commands/tablecmds.c:4000
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:4089
+#: commands/tablecmds.c:4091
#, 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:4092
+#: commands/tablecmds.c:4094
#, 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:4183
+#: commands/tablecmds.c:4185
#, 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:4188
+#: commands/tablecmds.c:4190
#, 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:4261
+#: commands/tablecmds.c:4263
#, 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:4395
+#: commands/tablecmds.c:4399
#, 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:4693
-#: commands/trigger.c:3469
+#: commands/tablecmds.c:4697
+#: commands/trigger.c:3481
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "la contrainte « %s » n'existe pas"
-#: commands/tablecmds.c:4698
+#: commands/tablecmds.c:4702
#, c-format
msgid "multiple constraints named \"%s\" were dropped"
msgstr "les contraintes multiples nommées « %s » ont été supprimées"
-#: commands/tablecmds.c:4744
+#: commands/tablecmds.c:4748
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "ne peut pas modifier la colonne héritée « %s »"
-#: commands/tablecmds.c:4780
+#: commands/tablecmds.c:4784
msgid "transform expression must not return a set"
msgstr "l'expression de transformation ne doit pas renvoyer un ensemble"
-#: commands/tablecmds.c:4786
+#: commands/tablecmds.c:4790
msgid "cannot use subquery in transform expression"
msgstr "ne peut pas utiliser une sous-requête dans l'expression de transformation"
-#: commands/tablecmds.c:4790
+#: commands/tablecmds.c:4794
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:4807
+#: commands/tablecmds.c:4811
#, 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:4833
+#: commands/tablecmds.c:4837
#, 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:4872
+#: commands/tablecmds.c:4876
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "ne peut pas modifier la colonne « %s » deux fois"
-#: commands/tablecmds.c:4905
+#: commands/tablecmds.c:4909
#, 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:5031
+#: commands/tablecmds.c:5035
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:5032
+#: commands/tablecmds.c:5036
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s dépend de la colonne « %s »"
-#: commands/tablecmds.c:5376
+#: commands/tablecmds.c:5380
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "ne peut pas modifier le propriétaire de l'index « %s »"
-#: commands/tablecmds.c:5378
+#: commands/tablecmds.c:5382
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:5394
+#: commands/tablecmds.c:5398
#, 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:5396
-#: commands/tablecmds.c:6510
+#: commands/tablecmds.c:5400
+#: commands/tablecmds.c:6514
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "La séquence « %s » est liée à la table « %s »."
-#: commands/tablecmds.c:5408
-#: commands/tablecmds.c:6520
+#: commands/tablecmds.c:5412
+#: commands/tablecmds.c:6524
msgid "Use ALTER TYPE instead."
msgstr "Utilisez ALTER TYPE à la place."
-#: commands/tablecmds.c:5417
-#: commands/tablecmds.c:6528
+#: commands/tablecmds.c:5421
+#: commands/tablecmds.c:6532
#, 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:5629
+#: commands/tablecmds.c:5633
#: commands/cluster.c:163
#, 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:5676
+#: commands/tablecmds.c:5680
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "ne peut pas avoir de nombreuses sous-commandes SET TABLESPACE"
-#: commands/tablecmds.c:5729
+#: commands/tablecmds.c:5733
#, 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:5793
+#: commands/tablecmds.c:5797
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "ne peut pas déplacer la colonne système « %s »"
-#: commands/tablecmds.c:5800
+#: commands/tablecmds.c:5804
#: executor/execMain.c:2754
#: catalog/index.c:562
#: catalog/heap.c:891
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:5809
+#: commands/tablecmds.c:5813
msgid "cannot move temporary tables of other sessions"
msgstr "ne peut pas déplacer les tables temporaires d'autres sessions"
-#: commands/tablecmds.c:6077
+#: commands/tablecmds.c:6081
msgid "circular inheritance not allowed"
msgstr "héritage circulaire interdit"
-#: commands/tablecmds.c:6078
+#: commands/tablecmds.c:6082
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "« %s » est déjà un enfant de « %s »."
-#: commands/tablecmds.c:6086
+#: commands/tablecmds.c:6090
#, 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:6191
+#: commands/tablecmds.c:6195
#, 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:6207
+#: commands/tablecmds.c:6211
#, c-format
msgid "child table is missing column \"%s\""
msgstr "la colonne « %s » manque à la table enfant"
-#: commands/tablecmds.c:6299
+#: commands/tablecmds.c:6303
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "la contrainte « %s » manque à la table enfant"
-#: commands/tablecmds.c:6308
+#: commands/tablecmds.c:6312
#, c-format
msgid "constraint definition for check constraint \"%s\" does not match"
msgstr ""
"la définition de la contrainte « %s » pour la contrainte de vérification ne\n"
"correspond pas"
-#: commands/tablecmds.c:6389
+#: commands/tablecmds.c:6393
#, 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:6509
+#: commands/tablecmds.c:6513
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:6538
+#: commands/tablecmds.c:6542
#, 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:6546
+#: commands/tablecmds.c:6550
#: commands/functioncmds.c:1708
#: commands/typecmds.c:2597
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:6552
+#: commands/tablecmds.c:6556
#: commands/functioncmds.c:1714
#: commands/typecmds.c:2603
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:6603
+#: commands/tablecmds.c:6607
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "la relation « %s » existe déjà dans le schéma « %s »"
@@ -9702,24 +9700,24 @@
"certains fichiers inutiles pourraient se trouver dans l'ancien répertoire\n"
"de la base de données « %s »"
-#: commands/indexcmds.c:145
+#: commands/indexcmds.c:142
msgid "must specify at least one column"
msgstr "doit spécifier au moins une colonne"
-#: commands/indexcmds.c:149
+#: commands/indexcmds.c:146
#, 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:179
+#: commands/indexcmds.c:176
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:272
+#: commands/indexcmds.c:269
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:282
+#: commands/indexcmds.c:279
#: commands/opclasscmds.c:288
#: commands/opclasscmds.c:681
#: commands/opclasscmds.c:784
@@ -9735,90 +9733,90 @@
msgid "access method \"%s\" does not exist"
msgstr "la méthode d'accès « %s » n'existe pas"
-#: commands/indexcmds.c:291
+#: commands/indexcmds.c:288
#, 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:296
+#: commands/indexcmds.c:293
#, 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:329
+#: commands/indexcmds.c:326
#: parser/parse_utilcmd.c:1039
#: parser/parse_utilcmd.c:1122
#, 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:346
+#: commands/indexcmds.c:343
msgid "primary keys cannot be expressions"
msgstr "les clés primaires ne peuvent pas être des expressions"
-#: commands/indexcmds.c:376
-#: commands/indexcmds.c:773
+#: commands/indexcmds.c:373
+#: commands/indexcmds.c:736
#: parser/parse_utilcmd.c:1237
#, 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:431
+#: commands/indexcmds.c:428
#, 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:714
+#: commands/indexcmds.c:677
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:718
+#: commands/indexcmds.c:681
msgid "cannot use aggregate in index predicate"
msgstr "ne peut pas utiliser un agrégat dans un prédicat d'index"
-#: commands/indexcmds.c:727
+#: commands/indexcmds.c:690
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:811
+#: commands/indexcmds.c:774
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:815
+#: commands/indexcmds.c:778
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:825
+#: commands/indexcmds.c:788
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:862
+#: commands/indexcmds.c:825
#, 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:867
+#: commands/indexcmds.c:830
#, 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:923
+#: commands/indexcmds.c:886
#, 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:925
+#: commands/indexcmds.c:888
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:955
-#: commands/indexcmds.c:965
+#: commands/indexcmds.c:918
+#: commands/indexcmds.c:928
#: commands/opclasscmds.c:1530
#: commands/opclasscmds.c:1534
#: commands/opclasscmds.c:1771
@@ -9831,33 +9829,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:978
+#: commands/indexcmds.c:941
#, 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:1068
+#: commands/indexcmds.c:1031
#, 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:1339
+#: commands/indexcmds.c:1302
#, 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:1346
+#: commands/indexcmds.c:1309
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "la table « %s » n'a pas d'index"
-#: commands/indexcmds.c:1374
+#: commands/indexcmds.c:1337
msgid "can only reindex the currently open database"
msgstr "peut seulement réindexer la base de données en cours"
-#: commands/indexcmds.c:1463
+#: commands/indexcmds.c:1426
#, c-format
msgid "table \"%s\" was reindexed"
msgstr "la table « %s » a été réindexée"
@@ -10626,14 +10624,14 @@
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:3349
+#: commands/trigger.c:3361
#: catalog/namespace.c:226
#: catalog/namespace.c:300
#, 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:3443
+#: commands/trigger.c:3455
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "la contrainte « %s » n'est pas DEFERRABLE"
@@ -11055,9 +11053,9 @@
msgid "invalid parameter list format: \"%s\""
msgstr "format de liste de paramètres invalide : « %s »"
-#: executor/nodeSubplan.c:290
-#: executor/nodeSubplan.c:329
-#: executor/nodeSubplan.c:960
+#: executor/nodeSubplan.c:291
+#: executor/nodeSubplan.c:330
+#: executor/nodeSubplan.c:965
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"
@@ -11285,12 +11283,12 @@
msgstr "ne peut pas ouvrir la requête %s comme curseur"
#: executor/spi.c:1040
-#: parser/analyze.c:1692
+#: parser/analyze.c:1696
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas supporté"
#: executor/spi.c:1041
-#: parser/analyze.c:1693
+#: parser/analyze.c:1697
msgid "Scrollable cursors must be READ ONLY."
msgstr "Les curseurs déplaçables doivent être en lecture seule (READ ONLY)."
@@ -11457,16 +11455,16 @@
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:560
+#: optimizer/plan/initsplan.c:564
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:802
-#: parser/analyze.c:1084
-#: parser/analyze.c:1252
-#: parser/analyze.c:1753
+#: parser/analyze.c:1085
+#: parser/analyze.c:1256
+#: parser/analyze.c:1757
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"
@@ -11555,45 +11553,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"
@@ -12878,11 +12881,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:2269
+#: catalog/index.c:2341
msgid "cannot reindex temporary tables of other sessions"
msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions"
-#: catalog/index.c:2291
+#: catalog/index.c:2363
#, 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"
@@ -13033,7 +13036,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:1277
+#: catalog/pg_shdepend.c:1281
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr ""
@@ -14051,7 +14054,7 @@
msgstr "%s : n'a pas pu déterminer le nom de l'utilisateur (GetUserName a échoué)\n"
#: parser/parse_coerce.c:250
-#: parser/analyze.c:1953
+#: parser/analyze.c:1957
#: parser/parse_expr.c:561
#: parser/parse_expr.c:567
#, c-format
@@ -14398,150 +14401,150 @@
"la sous-requête utilise une colonne « %s.%s » non groupée dans la requête\n"
"externe"
-#: parser/analyze.c:452
+#: parser/analyze.c:453
msgid "INSERT ... SELECT cannot specify INTO"
msgstr "INSERT ... SELECT ne peut pas avoir INTO"
-#: parser/analyze.c:540
-#: parser/analyze.c:880
+#: parser/analyze.c:541
+#: parser/analyze.c:881
msgid "VALUES lists must all be the same length"
msgstr "les listes VALUES doivent toutes être de la même longueur"
-#: parser/analyze.c:559
-#: parser/analyze.c:981
+#: parser/analyze.c:560
+#: parser/analyze.c:982
msgid "VALUES must not contain table references"
msgstr "VALUES ne doit pas contenir de références de table"
-#: parser/analyze.c:571
-#: parser/analyze.c:993
+#: parser/analyze.c:572
+#: parser/analyze.c:994
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:572
-#: parser/analyze.c:994
+#: parser/analyze.c:573
+#: parser/analyze.c:995
msgid "Use SELECT ... UNION ALL ... instead."
msgstr "Utilisez à la place SELECT ... UNION ALL ..."
-#: parser/analyze.c:666
-#: parser/analyze.c:1004
+#: parser/analyze.c:667
+#: parser/analyze.c:1005
msgid "cannot use aggregate function in VALUES"
msgstr "ne peut pas utiliser la fonction d'agrégat dans un VALUES"
-#: parser/analyze.c:696
+#: parser/analyze.c:697
msgid "INSERT has more expressions than target columns"
msgstr "INSERT a plus d'expressions que les colonnes cibles"
-#: parser/analyze.c:701
+#: parser/analyze.c:702
msgid "INSERT has more target columns than expressions"
msgstr "INSERT a plus de colonnes cibles que d'expressions"
-#: parser/analyze.c:893
+#: parser/analyze.c:894
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:962
-#: parser/analyze.c:1874
+#: parser/analyze.c:963
+#: parser/analyze.c:1878
msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
msgstr "SELECT FOR UPDATE/SHARE ne peut pas être appliqué à VALUES"
-#: parser/analyze.c:1192
+#: parser/analyze.c:1193
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "clause UNION/INTERSECT/EXCEPT ORDER BY invalide"
-#: parser/analyze.c:1193
+#: parser/analyze.c:1194
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:1194
+#: parser/analyze.c:1195
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:1247
+#: parser/analyze.c:1251
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:1303
+#: parser/analyze.c:1307
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:1361
+#: parser/analyze.c:1365
#, 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:1478
+#: parser/analyze.c:1482
msgid "CREATE TABLE AS specifies too many column names"
msgstr "CREATE TABLE AS spécifie trop de noms de colonnes"
-#: parser/analyze.c:1527
+#: parser/analyze.c:1531
msgid "cannot use aggregate function in UPDATE"
msgstr "ne peut pas utiliser une fonction d'agrégat dans un UPDATE"
-#: parser/analyze.c:1624
+#: parser/analyze.c:1628
msgid "cannot use aggregate function in RETURNING"
msgstr "ne peut pas utiliser une fonction d'agrégat dans RETURNING"
-#: parser/analyze.c:1630
+#: parser/analyze.c:1634
msgid "RETURNING cannot contain references to other relations"
msgstr "RETURNING ne doit pas contenir de références à d'autres relations"
-#: parser/analyze.c:1666
+#: parser/analyze.c:1670
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "ne peut pas spécifier à la fois SCROLL et NO SCROLL"
-#: parser/analyze.c:1679
+#: parser/analyze.c:1683
msgid "DECLARE CURSOR cannot specify INTO"
msgstr "DECLARE CURSOR ne peut pas spécifier INTO"
-#: parser/analyze.c:1685
+#: parser/analyze.c:1689
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:1686
+#: parser/analyze.c:1690
msgid "Holdable cursors must be READ ONLY."
msgstr "Les curseurs détenables doivent être en lecture seule (READ ONLY)."
-#: parser/analyze.c:1699
+#: parser/analyze.c:1703
msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE n'est pas supporté"
-#: parser/analyze.c:1700
+#: parser/analyze.c:1704
msgid "Insensitive cursors must be READ ONLY."
msgstr "Les curseurs insensibles doivent être en lecture seule (READ ONLY)."
-#: parser/analyze.c:1757
+#: parser/analyze.c:1761
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:1761
+#: parser/analyze.c:1765
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:1765
+#: parser/analyze.c:1769
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:1769
+#: parser/analyze.c:1773
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:1859
+#: parser/analyze.c:1863
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:1864
+#: parser/analyze.c:1868
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:1869
+#: parser/analyze.c:1873
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:1887
+#: parser/analyze.c:1891
#, 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"
@@ -14837,91 +14840,91 @@
msgstr "le nom de la table « %s » est spécifié plus d'une fois"
#: parser/parse_relation.c:361
-#: parser/parse_relation.c:433
+#: parser/parse_relation.c:440
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "la référence à la colonne « %s » est ambigu"
-#: parser/parse_relation.c:552
-#: parser/parse_relation.c:784
+#: parser/parse_relation.c:559
+#: parser/parse_relation.c:791
#, 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:582
+#: parser/parse_relation.c:589
#, 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:861
+#: parser/parse_relation.c:868
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:868
+#: parser/parse_relation.c:875
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:913
+#: parser/parse_relation.c:920
#, 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:982
+#: parser/parse_relation.c:989
#, 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:1035
+#: parser/parse_relation.c:1042
#, c-format
msgid "joins can have at most %d columns"
msgstr "les jointures peuvent avoir au plus %d colonnes"
-#: parser/parse_relation.c:1649
+#: parser/parse_relation.c:1656
#, 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:2001
+#: parser/parse_relation.c:2008
#, 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:2004
-#: parser/parse_relation.c:2030
+#: parser/parse_relation.c:2011
+#: parser/parse_relation.c:2037
#, 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:2006
-#: parser/parse_relation.c:2033
+#: parser/parse_relation.c:2013
+#: parser/parse_relation.c:2040
#, 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:2013
+#: parser/parse_relation.c:2020
#, c-format
msgid "missing FROM-clause entry in subquery for table \"%s\""
msgstr "entrée manquante de la clause FROM dans la sous-requête de la table « %s »"
-#: parser/parse_relation.c:2015
+#: parser/parse_relation.c:2022
#, 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:2025
+#: parser/parse_relation.c:2032
#, c-format
msgid "adding missing FROM-clause entry in subquery for table \"%s\""
msgstr "entrée manquante de la clause FROM dans la sous-requête pour la table « %s »"
-#: parser/parse_relation.c:2027
+#: parser/parse_relation.c:2034
#, 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.3.22.tar.bz2/src/backend/po/ru.po
^
|
@@ -26,8 +26,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-07-31 19:48+0000\n"
-"PO-Revision-Date: 2012-08-06 15:56+0400\n"
+"POT-Creation-Date: 2012-09-29 22:48+0000\n"
+"PO-Revision-Date: 2012-10-02 10:06+0400\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgtranslation-translators@pgfoundry.org>\n"
"Language: ru\n"
@@ -2916,7 +2916,7 @@
#: utils/error/elog.c:2318
#, c-format
msgid " at character %d"
-msgstr " в символе %d"
+msgstr " (символ %d)"
#: utils/error/elog.c:1977
msgid "DETAIL: "
@@ -3174,7 +3174,7 @@
msgid "invalid destination encoding name \"%s\""
msgstr "неверное имя кодировки результата: \"%s\""
-#: utils/mb/mbutils.c:423 utils/adt/xml.c:160
+#: utils/mb/mbutils.c:423 utils/adt/xml.c:163
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "неверное имя кодировки: \"%s\""
@@ -3236,92 +3236,92 @@
msgid "materialize mode required, but it is not allowed in this context"
msgstr "требуется режим материализации, но он недопустим в этом контексте"
-#: 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:432 utils/adt/xml.c:437
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
msgid "invalid XML comment"
msgstr "ошибка в XML-комментарии"
-#: utils/adt/xml.c:568
+#: utils/adt/xml.c:571
msgid "not an XML document"
msgstr "не XML-документ"
-#: utils/adt/xml.c:724 utils/adt/xml.c:747
+#: utils/adt/xml.c:727 utils/adt/xml.c:750
msgid "invalid XML processing instruction"
msgstr "неправильная XML-инструкция обработки (PI)"
-#: utils/adt/xml.c:725
+#: utils/adt/xml.c:728
#, c-format
msgid "XML processing instruction target name cannot be \"%s\"."
msgstr "назначением XML-инструкции обработки (PI) не может быть \"%s\"."
-#: utils/adt/xml.c:748
+#: utils/adt/xml.c:751
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "XML-инструкция обработки (PI) не может содержать \"?>\"."
-#: utils/adt/xml.c:829
+#: utils/adt/xml.c:832
msgid "xmlvalidate is not implemented"
msgstr "функция xmlvalidate не реализована"
-#: utils/adt/xml.c:914
+#: utils/adt/xml.c:917
msgid "could not initialize XML library"
msgstr "не удалось инициализировать библиотеку XML"
-#: utils/adt/xml.c:915
+#: utils/adt/xml.c:918
#, 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:1409 utils/adt/xml.c:1410 utils/adt/xml.c:1416
-#: utils/adt/xml.c:1487 tcop/postgres.c:4116 commands/user.c:914
+#: utils/adt/xml.c:1437 utils/adt/xml.c:1438 utils/adt/xml.c:1444
+#: utils/adt/xml.c:1515 tcop/postgres.c:4116 commands/user.c:914
#: nodes/print.c:83 storage/lmgr/proc.c:927 storage/lmgr/deadlock.c:926
#: catalog/pg_shdepend.c:676
#, c-format
msgid "%s"
msgstr "%s"
-#: utils/adt/xml.c:1463
+#: utils/adt/xml.c:1491
msgid "Invalid character value."
msgstr "Неверный символ."
-#: utils/adt/xml.c:1466
+#: utils/adt/xml.c:1494
msgid "Space required."
msgstr "Требуется пробел."
-#: utils/adt/xml.c:1469
+#: utils/adt/xml.c:1497
msgid "standalone accepts only 'yes' or 'no'."
msgstr "значениями атрибута standalone могут быть только 'yes' и 'no'."
-#: utils/adt/xml.c:1472
+#: utils/adt/xml.c:1500
msgid "Malformed declaration: missing version."
msgstr "Ошибочное объявление: не указана версия."
-#: utils/adt/xml.c:1475
+#: utils/adt/xml.c:1503
msgid "Missing encoding in text declaration."
msgstr "В объявлении не указана кодировка."
-#: utils/adt/xml.c:1478
+#: utils/adt/xml.c:1506
msgid "Parsing XML declaration: '?>' expected."
msgstr "Ошибка при разборе XML-объявления: ожидается '?>'."
-#: utils/adt/xml.c:1481
+#: utils/adt/xml.c:1509
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "нераспознанный код ошибки libxml: %d."
-#: utils/adt/xml.c:1766 utils/adt/xml.c:1772 utils/adt/xml.c:1792
-#: utils/adt/xml.c:1798 utils/adt/timestamp.c:210 utils/adt/timestamp.c:248
+#: utils/adt/xml.c:1794 utils/adt/xml.c:1800 utils/adt/xml.c:1820
+#: utils/adt/xml.c:1826 utils/adt/timestamp.c:210 utils/adt/timestamp.c:248
#: utils/adt/timestamp.c:470 utils/adt/timestamp.c:510
#: utils/adt/timestamp.c:2560 utils/adt/timestamp.c:2581
#: utils/adt/timestamp.c:2594 utils/adt/timestamp.c:2603
@@ -3345,34 +3345,34 @@
msgid "timestamp out of range"
msgstr "timestamp вне диапазона"
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2246 commands/portalcmds.c:168
+#: utils/adt/xml.c:2110 utils/adt/xml.c:2274 commands/portalcmds.c:168
#: commands/portalcmds.c:222 executor/execCurrent.c:69
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "курсор \"%s\" не существует"
-#: utils/adt/xml.c:2161
+#: utils/adt/xml.c:2189
msgid "invalid query"
msgstr "неверный запрос"
-#: utils/adt/xml.c:3398
+#: utils/adt/xml.c:3426
msgid "invalid array for XML namespace mapping"
msgstr "неправильный массив с сопоставлениями пространств имён XML"
-#: utils/adt/xml.c:3399
+#: utils/adt/xml.c:3427
msgid ""
"The array must be two-dimensional with length of the second axis equal to 2."
msgstr "Массив должен быть двухмерным и содержать 2 элемента по второй оси."
-#: utils/adt/xml.c:3423
+#: utils/adt/xml.c:3451
msgid "empty XPath expression"
msgstr "пустое выражение XPath"
-#: utils/adt/xml.c:3540
+#: utils/adt/xml.c:3568
msgid "neither namespace name nor URI may be null"
msgstr "ни префикс, ни URI пространства имён не может быть null"
-#: utils/adt/xml.c:3547
+#: utils/adt/xml.c:3575
#, c-format
msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
msgstr ""
@@ -6073,7 +6073,7 @@
msgstr "Значения, не умещающиеся в страницу буфера, нельзя проиндексировать."
#: access/hash/hashutil.c:158 access/nbtree/nbtpage.c:429
-#: access/gist/gistutil.c:594
+#: access/gist/gistutil.c:642
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "в индексе \"%s\" неожиданно оказалась нулевая страница в блоке %u"
@@ -6081,12 +6081,12 @@
#: access/hash/hashutil.c:161 access/hash/hashutil.c:173
#: access/hash/hashutil.c:185 access/hash/hashutil.c:206
#: access/nbtree/nbtpage.c:432 access/nbtree/nbtpage.c:444
-#: access/gist/gistutil.c:597 access/gist/gistutil.c:609
+#: access/gist/gistutil.c:645 access/gist/gistutil.c:657
msgid "Please REINDEX it."
msgstr "Пожалуйста, выполните REINDEX для него."
#: access/hash/hashutil.c:170 access/hash/hashutil.c:182
-#: access/nbtree/nbtpage.c:441 access/gist/gistutil.c:606
+#: access/nbtree/nbtpage.c:441 access/gist/gistutil.c:654
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "индекс \"%s\" содержит испорченную страницу в блоке %u"
@@ -7453,7 +7453,7 @@
msgstr ""
"При воспроизведении после сбоя обнаружены неполностью добавленные данные."
-#: access/gist/gistutil.c:407
+#: access/gist/gistutil.c:426
#, c-format
msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery"
msgstr ""
@@ -11762,8 +11762,8 @@
#: storage/lmgr/proc.c:915
#, 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:925
#, c-format
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/backend/utils/adt/datetime.c
^
|
@@ -2061,9 +2061,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.3.22.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,29 +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.
- */
- 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);
}
@@ -866,17 +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.
+ * 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);
}
@@ -1054,17 +1051,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.
+ * 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);
}
@@ -1083,8 +1090,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 */
@@ -1107,6 +1118,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);
@@ -1147,6 +1167,14 @@
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.
+ */
+ if (arg2 == -1)
+ PG_RETURN_INT32(0);
+
/* No overflow is possible */
PG_RETURN_INT32(arg1 % arg2);
|
[-]
[+]
|
Changed |
postgresql-8.3.22.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,17 +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.
+ * 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);
}
@@ -657,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);
@@ -838,17 +857,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.
+ * 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.3.22.tar.bz2/src/backend/utils/adt/rowtypes.c
^
|
@@ -32,6 +32,7 @@
Oid column_type;
Oid typiofunc;
Oid typioparam;
+ bool typisvarlena;
FmgrInfo proc;
} ColumnIOData;
@@ -340,6 +341,7 @@
{
ColumnIOData *column_info = &my_extra->columns[i];
Oid column_type = tupdesc->attrs[i]->atttypid;
+ Datum attr;
char *value;
char *tmp;
bool nq;
@@ -363,17 +365,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 */
@@ -392,17 +401,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, ')');
@@ -690,6 +705,7 @@
{
ColumnIOData *column_info = &my_extra->columns[i];
Oid column_type = tupdesc->attrs[i]->atttypid;
+ Datum attr;
bytea *outputbytes;
/* Ignore dropped columns in datatype */
@@ -710,23 +726,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.3.22.tar.bz2/src/backend/utils/adt/ruleutils.c
^
|
@@ -2297,8 +2297,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)
{
@@ -2332,7 +2332,7 @@
context->indentLevel += PRETTYINDENT_STD;
appendStringInfoChar(buf, ' ');
}
- appendStringInfo(buf, "INSERT INTO %s (",
+ appendStringInfo(buf, "INSERT INTO %s ",
generate_relation_name(rte->relid));
/*
@@ -2349,6 +2349,8 @@
values_cell = NULL;
strippedexprs = NIL;
sep = "";
+ if (query->targetList)
+ appendStringInfoChar(buf, '(');
foreach(l, query->targetList)
{
TargetEntry *tle = (TargetEntry *) lfirst(l);
@@ -2385,7 +2387,8 @@
context, true));
}
}
- appendStringInfo(buf, ") ");
+ if (query->targetList)
+ appendStringInfo(buf, ") ");
if (select_rte)
{
@@ -2398,7 +2401,7 @@
/* Add the multi-VALUES expression lists */
get_values_def(values_rte->values_lists, context);
}
- else
+ else if (strippedexprs)
{
/* Add the single-VALUES expression list */
appendContextKeyword(context, "VALUES (",
@@ -2406,6 +2409,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.3.22.tar.bz2/src/backend/utils/cache/relcache.c
^
|
@@ -1700,9 +1700,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));
@@ -3077,7 +3088,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 &&
@@ -3384,6 +3396,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.3.22.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.3.22.tar.bz2/src/backend/utils/misc/guc.c
^
|
@@ -1110,7 +1110,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,
@@ -1119,7 +1119,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.3.22.tar.bz2/src/bin/initdb/initdb.c
^
|
@@ -375,6 +375,7 @@
int maxlength = 0,
linelen = 0;
int nlines = 0;
+ int n;
char **result;
char *buffer;
int c;
@@ -415,16 +416,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.3.22.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>
@@ -301,50 +302,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.3.22.tar.bz2/src/bin/pg_dump/pg_backup_tar.c
^
|
@@ -647,56 +647,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;
}
@@ -842,18 +832,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;
@@ -875,8 +861,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,
@@ -1027,11 +1017,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
@@ -1045,11 +1040,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.3.22.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 - 2009.
+# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2012.
#
# Use these quotes: »%s«
#
@@ -7,44 +7,45 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-15 19:17+0000\n"
-"PO-Revision-Date: 2012-05-03 22:17+0300\n"
+"POT-Creation-Date: 2012-12-01 23:18+0000\n"
+"PO-Revision-Date: 2012-12-02 00:50-0500\n"
"Last-Translator: Peter Eisentraut <peter_e@gmx.net>\n"
"Language-Team: German <peter_e@gmx.net>\n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: pg_dump.c:425 pg_restore.c:251 pg_dumpall.c:296
+#: pg_dump.c:421 pg_restore.c:251 pg_dumpall.c:296
#, c-format
msgid "%s: invalid -X option -- %s\n"
msgstr "%s: ungültige »-X«-Option -- %s\n"
-#: pg_dump.c:427 pg_dump.c:441 pg_dump.c:450 pg_restore.c:253 pg_restore.c:268
+#: pg_dump.c:423 pg_dump.c:437 pg_dump.c:446 pg_restore.c:253 pg_restore.c:268
#: pg_restore.c:285 pg_dumpall.c:298 pg_dumpall.c:307 pg_dumpall.c:324
#: pg_dumpall.c:334 pg_dumpall.c:343 pg_dumpall.c:352 pg_dumpall.c:388
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n"
-#: pg_dump.c:448 pg_dumpall.c:322
+#: pg_dump.c:444 pg_dumpall.c:322
#, 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:461
+#: pg_dump.c:457
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:467
+#: pg_dump.c:463
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:473
+#: pg_dump.c:469
msgid ""
"options -d/-D/--inserts/--column-inserts and -o/--oids cannot be used "
"together\n"
@@ -52,44 +53,44 @@
"Optionen -d/-D/--inserts/--column-inserts und -o/--oids können nicht "
"zusammen verwendet werden\n"
-#: pg_dump.c:474
+#: pg_dump.c:470
msgid "(The INSERT command cannot set OIDs.)\n"
msgstr "(Die INSERT-Anweisung kann OIDs nicht setzen.)\n"
-#: pg_dump.c:504
+#: pg_dump.c:500
#, c-format
msgid "invalid output format \"%s\" specified\n"
msgstr "ungültiges Ausgabeformat »%s« angegeben\n"
-#: pg_dump.c:510
+#: pg_dump.c:506
#, c-format
msgid "could not open output file \"%s\" for writing\n"
msgstr "konnte Ausgabedatei »%s« nicht zum Schreiben öffnen\n"
-#: pg_dump.c:521 pg_backup_db.c:45
+#: pg_dump.c:517 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:537
+#: pg_dump.c:533
#, c-format
msgid "invalid client encoding \"%s\" specified\n"
msgstr "ungültige Clientkodierung »%s« angegeben\n"
-#: pg_dump.c:592
+#: pg_dump.c:588
#, c-format
msgid "last built-in OID is %u\n"
msgstr "letzte eingebaute OID ist %u\n"
-#: pg_dump.c:602
+#: pg_dump.c:598
msgid "No matching schemas were found\n"
msgstr "Keine passenden Schemas gefunden\n"
-#: pg_dump.c:617
+#: pg_dump.c:613
msgid "No matching tables were found\n"
msgstr "Keine passenden Tabellen gefunden\n"
-#: pg_dump.c:736
+#: pg_dump.c:732
#, c-format
msgid ""
"%s dumps a database as a text file or to other formats.\n"
@@ -98,17 +99,17 @@
"%s gibt eine Datenbank als Textdatei oder in anderen Formaten aus.\n"
"\n"
-#: pg_dump.c:737 pg_restore.c:367 pg_dumpall.c:480
+#: pg_dump.c:733 pg_restore.c:367 pg_dumpall.c:480
#, c-format
msgid "Usage:\n"
msgstr "Aufruf:\n"
-#: pg_dump.c:738
+#: pg_dump.c:734
#, c-format
msgid " %s [OPTION]... [DBNAME]\n"
msgstr " %s [OPTION]... [DBNAME]\n"
-#: pg_dump.c:740 pg_restore.c:370 pg_dumpall.c:483
+#: pg_dump.c:736 pg_restore.c:370 pg_dumpall.c:483
#, c-format
msgid ""
"\n"
@@ -117,18 +118,18 @@
"\n"
"Allgemeine Optionen:\n"
-#: pg_dump.c:741 pg_restore.c:372 pg_dumpall.c:484
+#: pg_dump.c:737 pg_restore.c:372 pg_dumpall.c:484
#, c-format
msgid " -f, --file=FILENAME output file name\n"
msgstr " -f, --file=DATEINAME Name der Ausgabedatei\n"
-#: pg_dump.c:742
+#: pg_dump.c:738
#, 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:743
+#: pg_dump.c:739
#, c-format
msgid ""
" -i, --ignore-version proceed even when server version mismatches\n"
@@ -136,29 +137,29 @@
msgstr ""
" -i, --ignore-version trotz unpassender Serverversion fortsetzen\n"
-#: pg_dump.c:745 pg_restore.c:376
+#: pg_dump.c:741 pg_restore.c:376
#, c-format
msgid " -v, --verbose verbose mode\n"
msgstr " -v, --verbose »Verbose«-Modus\n"
-#: pg_dump.c:746
+#: pg_dump.c:742
#, 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:747 pg_restore.c:377 pg_dumpall.c:487
+#: pg_dump.c:743 pg_restore.c:377 pg_dumpall.c:487
#, c-format
msgid " --help show this help, then exit\n"
msgstr " --help diese Hilfe anzeigen, dann beenden\n"
-#: pg_dump.c:748 pg_restore.c:378 pg_dumpall.c:488
+#: pg_dump.c:744 pg_restore.c:378 pg_dumpall.c:488
#, c-format
msgid " --version output version information, then exit\n"
msgstr ""
" --version Versionsinformationen anzeigen, dann beenden\n"
-#: pg_dump.c:750 pg_dumpall.c:489
+#: pg_dump.c:746 pg_dumpall.c:489
#, c-format
msgid ""
"\n"
@@ -167,22 +168,22 @@
"\n"
"Optionen die den Inhalt der Ausgabe kontrollieren:\n"
-#: pg_dump.c:751
+#: pg_dump.c:747
#, 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:752
+#: pg_dump.c:748
#, c-format
msgid " -b, --blobs include large objects in dump\n"
msgstr " -b, --blobs Large Objects mit ausgeben\n"
-#: pg_dump.c:753
+#: pg_dump.c:749
#, c-format
msgid " -c, --clean clean (drop) schema prior to create\n"
msgstr " -c, --clean Schema vor der Erstellung löschen\n"
-#: pg_dump.c:754
+#: pg_dump.c:750
#, c-format
msgid ""
" -C, --create include commands to create database in dump\n"
@@ -190,7 +191,7 @@
" -C, --create Anweisungen zum Erstellen der Datenbank in\n"
" Ausgabe einfügen\n"
-#: pg_dump.c:755
+#: pg_dump.c:751
#, c-format
msgid ""
" -d, --inserts dump data as INSERT commands, rather than "
@@ -199,7 +200,7 @@
" -d, --inserts Daten als INSERT-Anweisungen statt COPY "
"ausgeben\n"
-#: pg_dump.c:756
+#: pg_dump.c:752
#, c-format
msgid ""
" -D, --column-inserts dump data as INSERT commands with column "
@@ -208,30 +209,30 @@
" -D, --column-inserts Daten als INSERT-Anweisungen mit Spaltennamen\n"
" ausgeben\n"
-#: pg_dump.c:757
+#: pg_dump.c:753
#, 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:758
+#: pg_dump.c:754
#, 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:759
+#: pg_dump.c:755
#, 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:760
+#: pg_dump.c:756
#, c-format
msgid " -o, --oids include OIDs in dump\n"
msgstr " -o, --oids OIDs mit ausgeben\n"
-#: pg_dump.c:761
+#: pg_dump.c:757
#, c-format
msgid ""
" -O, --no-owner skip restoration of object ownership\n"
@@ -240,13 +241,13 @@
" -O, --no-owner Wiederherstellung der Objekteigentümer im\n"
" »plain text«-Format auslassen\n"
-#: pg_dump.c:763
+#: pg_dump.c:759
#, 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:764
+#: pg_dump.c:760
#, c-format
msgid ""
" -S, --superuser=NAME specify the superuser user name to use in\n"
@@ -254,25 +255,25 @@
msgstr ""
" -S, --superuser=NAME Superusername für das »plain text«-Format\n"
-#: pg_dump.c:766
+#: pg_dump.c:762
#, 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:767
+#: pg_dump.c:763
#, 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:768
+#: pg_dump.c:764
#, 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:769
+#: pg_dump.c:765
#, c-format
msgid ""
" --disable-dollar-quoting disable dollar quoting, use SQL standard "
@@ -282,7 +283,7 @@
"Quoting\n"
" verwenden\n"
-#: pg_dump.c:770
+#: pg_dump.c:766
#, c-format
msgid ""
" --disable-triggers disable triggers during data-only restore\n"
@@ -290,7 +291,7 @@
" --disable-triggers Trigger abschalten während der Datenwieder-\n"
" herstellung\n"
-#: pg_dump.c:771
+#: pg_dump.c:767
#, c-format
msgid ""
" --use-set-session-authorization\n"
@@ -301,7 +302,7 @@
" SESSION AUTHORIZATION Befehle statt OWNER TO\n"
" verwenden\n"
-#: pg_dump.c:775 pg_restore.c:407 pg_dumpall.c:509
+#: pg_dump.c:771 pg_restore.c:407 pg_dumpall.c:509
#, c-format
msgid ""
"\n"
@@ -310,24 +311,24 @@
"\n"
"Verbindungsoptionen:\n"
-#: pg_dump.c:776 pg_restore.c:408 pg_dumpall.c:510
+#: pg_dump.c:772 pg_restore.c:408 pg_dumpall.c:510
#, 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:777 pg_restore.c:409 pg_dumpall.c:512
+#: pg_dump.c:773 pg_restore.c:409 pg_dumpall.c:512
#, c-format
msgid " -p, --port=PORT database server port number\n"
msgstr " -p, --port=PORT Portnummer des Datenbankservers\n"
-#: pg_dump.c:778 pg_restore.c:410 pg_dumpall.c:513
+#: pg_dump.c:774 pg_restore.c:410 pg_dumpall.c:513
#, c-format
msgid " -U, --username=NAME connect as specified database user\n"
msgstr " -U, --username=NAME Datenbankbenutzername\n"
-#: pg_dump.c:779 pg_restore.c:411 pg_dumpall.c:514
+#: pg_dump.c:775 pg_restore.c:411 pg_dumpall.c:514
#, c-format
msgid ""
" -W, --password force password prompt (should happen "
@@ -336,7 +337,7 @@
" -W, --password nach Passwort fragen (sollte automatisch "
"geschehen)\n"
-#: pg_dump.c:781
+#: pg_dump.c:777
#, c-format
msgid ""
"\n"
@@ -349,141 +350,144 @@
"PGDATABASE verwendet.\n"
"\n"
-#: pg_dump.c:783 pg_restore.c:415 pg_dumpall.c:517
+#: pg_dump.c:779 pg_restore.c:415 pg_dumpall.c:517
#, c-format
msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
msgstr "Berichten Sie Fehler an <pgsql-bugs@postgresql.org>.\n"
-#: pg_dump.c:791 pg_backup_archiver.c:1207
+#: pg_dump.c:787 pg_backup_archiver.c:1224
msgid "*** aborted because of error\n"
msgstr "*** abgebrochen wegen Fehler\n"
-#: pg_dump.c:812
+#: pg_dump.c:808
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:1022
+#: pg_dump.c:1043
#, c-format
msgid "dumping contents of table %s\n"
msgstr "gebe Inhalt der Tabelle %s aus\n"
-#: pg_dump.c:1125
+#: pg_dump.c:1146
#, 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:1126 pg_dump.c:10295
+#: pg_dump.c:1147 pg_dump.c:10381
#, c-format
msgid "Error message from server: %s"
msgstr "Fehlermeldung vom Server: %s"
-#: pg_dump.c:1127 pg_dump.c:10296
+#: pg_dump.c:1148 pg_dump.c:10382
#, c-format
msgid "The command was: %s\n"
msgstr "Die Anweisung war: %s\n"
-#: pg_dump.c:1403
+#: pg_dump.c:1432
msgid "saving database definition\n"
msgstr "sichere Datenbankdefinition\n"
-#: pg_dump.c:1465
+#: pg_dump.c:1494
#, c-format
msgid "missing pg_database entry for database \"%s\"\n"
msgstr "fehlender pg_database-Eintrag für Datenbank »%s«\n"
-#: pg_dump.c:1472
+#: pg_dump.c:1501
#, 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:1571
+#: pg_dump.c:1600
#, c-format
msgid "saving encoding = %s\n"
msgstr "sichere Kodierung = %s\n"
-#: pg_dump.c:1597
+#: pg_dump.c:1626
#, c-format
msgid "saving standard_conforming_strings = %s\n"
msgstr "sichere standard_conforming_strings = %s\n"
-#: pg_dump.c:1658
+#: pg_dump.c:1687
msgid "saving large objects\n"
msgstr "sichere Large Objects\n"
-#: pg_dump.c:1694
+#: pg_dump.c:1723
#, c-format
msgid "dumpBlobs(): could not open large object: %s"
msgstr "dumpBlobs(): konnte Large Object nicht öffnen: %s"
-#: pg_dump.c:1707
+#: pg_dump.c:1736
#, c-format
msgid "dumpBlobs(): error reading large object: %s"
msgstr "dumpBlobs(): Fehler beim Lesen von Large Object: %s"
-#: pg_dump.c:1744
+#: pg_dump.c:1773
msgid "saving large object comments\n"
msgstr "sichere Kommentare für Large Objects\n"
-#: pg_dump.c:1898
+#: pg_dump.c:1932
#, 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:1933
+#: pg_dump.c:1976
#, c-format
msgid "schema with OID %u does not exist\n"
msgstr "Schema mit OID %u existiert nicht\n"
-#: pg_dump.c:2200
+#: pg_dump.c:2224
#, 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:2304
+#: pg_dump.c:2328
#, 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:2478
+#: pg_dump.c:2502
#, 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:2565
+#: pg_dump.c:2589
#, 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"
+msgstr ""
+"WARNUNG: Eigentümer der Operatorfamilie »%s« scheint ungültig zu sein\n"
-#: pg_dump.c:2690
+#: pg_dump.c:2714
#, 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:2845
+#: pg_dump.c:2869
#, 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:3169
+#: pg_dump.c:3193
#, 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:3306
+#: pg_dump.c:3335
#, c-format
msgid "reading indexes for table \"%s\"\n"
msgstr "lese Indexe von Tabelle »%s«\n"
-#: pg_dump.c:3574
+#: pg_dump.c:3603
#, c-format
msgid "reading foreign key constraints for table \"%s\"\n"
msgstr "lese Fremdschlüssel-Constraints von Tabelle »%s«\n"
-#: pg_dump.c:3799
+#: pg_dump.c:3828
#, c-format
msgid ""
"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not "
@@ -492,17 +496,17 @@
"Sanity-Check fehlgeschlagen, Elterntabelle %u von pg_rewrite-Eintrag OID %u "
"nicht gefunden\n"
-#: pg_dump.c:3882
+#: pg_dump.c:3911
#, c-format
msgid "reading triggers for table \"%s\"\n"
msgstr "lese Trigger von Tabelle »%s«\n"
-#: pg_dump.c:3971
+#: pg_dump.c:4000
#, c-format
msgid "expected %d triggers on table \"%s\" but found %d\n"
msgstr "%d Trigger für Tabelle %s erwartet, aber %d gefunden\n"
-#: pg_dump.c:4018
+#: pg_dump.c:4047
#, c-format
msgid ""
"query produced null referenced table name for foreign key trigger \"%s\" on "
@@ -511,88 +515,88 @@
"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:4354
+#: pg_dump.c:4383
#, c-format
msgid "finding the columns and types of table \"%s\"\n"
msgstr "finde Spalten und Typen von Tabelle »%s«\n"
-#: pg_dump.c:4439
+#: pg_dump.c:4469
#, c-format
msgid "invalid column numbering in table \"%s\"\n"
msgstr "ungültige Spaltennummerierung in Tabelle »%s«\n"
-#: pg_dump.c:4472
+#: pg_dump.c:4500
#, c-format
msgid "finding default expressions of table \"%s\"\n"
msgstr "finde DEFAULT-Ausdrucke von Tabelle »%s«\n"
-#: pg_dump.c:4557
+#: pg_dump.c:4553
#, 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:4575
+#: pg_dump.c:4626
#, c-format
msgid "finding check constraints for table \"%s\"\n"
msgstr "finde Check-Constraints für Tabelle »%s«\n"
-#: pg_dump.c:4639
+#: pg_dump.c:4690
#, c-format
msgid "expected %d check constraints on table \"%s\" but found %d\n"
msgstr "%d Check-Constraints für Tabelle %s erwartet, aber %d gefunden\n"
-#: pg_dump.c:4641
+#: pg_dump.c:4692
msgid "(The system catalogs might be corrupted.)\n"
msgstr "(Die Systemkataloge sind wahrscheinlich verfälscht.)\n"
-#: pg_dump.c:5533
+#: pg_dump.c:5601
#, 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:5762 pg_dump.c:5947 pg_dump.c:6546 pg_dump.c:7039 pg_dump.c:7286
-#: pg_dump.c:7390 pg_dump.c:7728 pg_dump.c:7901 pg_dump.c:8095 pg_dump.c:8318
-#: pg_dump.c:8469 pg_dump.c:10103
+#: pg_dump.c:5830 pg_dump.c:6015 pg_dump.c:6614 pg_dump.c:7107 pg_dump.c:7354
+#: pg_dump.c:7458 pg_dump.c:7796 pg_dump.c:7969 pg_dump.c:8163 pg_dump.c:8386
+#: pg_dump.c:8537 pg_dump.c:10189
#, c-format
msgid "query returned %d rows instead of one: %s\n"
msgstr "Anfrage ergab %d Zeilen anstatt einer: %s\n"
-#: pg_dump.c:6066
+#: pg_dump.c:6134
#, c-format
msgid "query returned no rows: %s\n"
msgstr "Anfrage ergab keine Zeilen: %s\n"
-#: pg_dump.c:6343
+#: pg_dump.c:6411
msgid "WARNING: bogus value in proargmodes array\n"
msgstr "WARNUNG: unsinniger Wert in proargmodes-Array\n"
-#: pg_dump.c:6610
+#: pg_dump.c:6678
msgid "WARNING: could not parse proallargtypes array\n"
msgstr "WARNUNG: konnte proallargtypes-Array nicht interpretieren\n"
-#: pg_dump.c:6626
+#: pg_dump.c:6694
msgid "WARNING: could not parse proargmodes array\n"
msgstr "WARNUNG: konnte proargmodes-Array nicht interpretieren\n"
-#: pg_dump.c:6640
+#: pg_dump.c:6708
msgid "WARNING: could not parse proargnames array\n"
msgstr "WARNUNG: konnte proargnames-Array nicht interpretieren\n"
-#: pg_dump.c:6651
+#: pg_dump.c:6719
msgid "WARNING: could not parse proconfig array\n"
msgstr "WARNUNG: konnte proconfig-Array nicht interpretieren\n"
-#: pg_dump.c:6689
+#: pg_dump.c:6757
#, c-format
msgid "unrecognized provolatile value for function \"%s\"\n"
msgstr "ungültiger provolatile-Wert für Funktion »%s«\n"
-#: pg_dump.c:7255
+#: pg_dump.c:7323
#, 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:8119
+#: pg_dump.c:8187
#, c-format
msgid ""
"WARNING: aggregate function %s could not be dumped correctly for this "
@@ -601,19 +605,19 @@
"WARNUNG: Aggregatfunktion %s konnte für diese Datenbankversion nicht korrekt "
"ausgegeben werden - ignoriert\n"
-#: pg_dump.c:8594
+#: pg_dump.c:8662
#, 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:8689
+#: pg_dump.c:8757
#, 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:8692
+#: pg_dump.c:8760
#, c-format
msgid ""
"query to obtain definition of view \"%s\" returned more than one definition\n"
@@ -621,197 +625,197 @@
"Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte mehr als eine "
"Definition\n"
-#: pg_dump.c:8701
+#: pg_dump.c:8769
#, 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:8999
+#: pg_dump.c:9085
#, c-format
msgid "invalid column number %d for table \"%s\"\n"
msgstr "ungültige Spaltennummer %d in Tabelle »%s«\n"
-#: pg_dump.c:9101
+#: pg_dump.c:9187
#, c-format
msgid "missing index for constraint \"%s\"\n"
msgstr "fehlender Index für Constraint »%s«\n"
-#: pg_dump.c:9266
+#: pg_dump.c:9352
#, c-format
msgid "unrecognized constraint type: %c\n"
msgstr "unbekannter Constraint-Typ: %c\n"
-#: pg_dump.c:9329
+#: pg_dump.c:9415
msgid "missing pg_database entry for this database\n"
msgstr "fehlender pg_database-Eintrag für diese Datenbank\n"
-#: pg_dump.c:9334
+#: pg_dump.c:9420
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:9366
+#: pg_dump.c:9452
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:9371
+#: pg_dump.c:9457
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:9420
+#: pg_dump.c:9506
#, c-format
msgid "query to get data of sequence \"%s\" returned %d rows (expected 1)\n"
msgstr "Anfrage nach Daten der Sequenz %s ergab %d Zeilen (erwartete 1)\n"
-#: pg_dump.c:9429
+#: pg_dump.c:9515
#, 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:9683
+#: pg_dump.c:9769
#, 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:9820
+#: pg_dump.c:9906
#, c-format
msgid ""
"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows "
"returned\n"
msgstr ""
-"Anfrage nach Regel »%s« der Tabelle »%s« fehlgeschlagen: falsche Anzahl Zeilen "
-"zurückgegeben\n"
+"Anfrage nach Regel »%s« der Tabelle »%s« fehlgeschlagen: falsche Anzahl "
+"Zeilen zurückgegeben\n"
-#: pg_dump.c:9914
+#: pg_dump.c:10000
msgid "reading dependency data\n"
msgstr "lese Abhängigkeitsdaten\n"
-#: pg_dump.c:10290
+#: pg_dump.c:10376
msgid "SQL command failed\n"
msgstr "SQL-Anweisung schlug fehl\n"
-#: common.c:111
+#: common.c:112
msgid "reading schemas\n"
msgstr "lese Schemas\n"
-#: common.c:115
+#: common.c:123
+msgid "reading user-defined tables\n"
+msgstr "lese benutzerdefinierte Tabellen\n"
+
+#: common.c:131
msgid "reading user-defined functions\n"
msgstr "lese benutzerdefinierte Funktionen\n"
-#: common.c:121
+#: common.c:137
msgid "reading user-defined types\n"
msgstr "lese benutzerdefinierte Typen\n"
-#: common.c:127
+#: common.c:143
msgid "reading procedural languages\n"
msgstr "lese prozedurale Sprachen\n"
-#: common.c:131
+#: common.c:147
msgid "reading user-defined aggregate functions\n"
msgstr "lese benutzerdefinierte Aggregatfunktionen\n"
-#: common.c:135
+#: common.c:151
msgid "reading user-defined operators\n"
msgstr "lese benutzerdefinierte Operatoren\n"
-#: common.c:140
+#: common.c:156
msgid "reading user-defined operator classes\n"
msgstr "lese benutzerdefinierte Operatorklassen\n"
-#: common.c:144
+#: common.c:160
msgid "reading user-defined text search parsers\n"
msgstr "lese benutzerdefinierte Textsuche-Parser\n"
-#: common.c:148
+#: common.c:164
msgid "reading user-defined text search templates\n"
msgstr "lese benutzerdefinierte Textsuche-Templates\n"
-#: common.c:152
+#: common.c:168
msgid "reading user-defined text search dictionaries\n"
msgstr "lese benutzerdefinierte Textsuchewörterbücher\n"
-#: common.c:156
+#: common.c:172
msgid "reading user-defined text search configurations\n"
msgstr "lese benutzerdefinierte Textsuchekonfigurationen\n"
-#: common.c:160
+#: common.c:176
msgid "reading user-defined operator families\n"
msgstr "lese benutzerdefinierte Operatorfamilien\n"
-#: common.c:164
+#: common.c:180
msgid "reading user-defined conversions\n"
msgstr "lese benutzerdefinierte Konversionen\n"
-#: common.c:168
-msgid "reading user-defined tables\n"
-msgstr "lese benutzerdefinierte Tabellen\n"
-
-#: common.c:173
+#: common.c:184
msgid "reading table inheritance information\n"
msgstr "lese Tabellenvererbungsinformationen\n"
-#: common.c:177
+#: common.c:188
msgid "reading rewrite rules\n"
msgstr "lese Umschreiberegeln\n"
-#: common.c:181
+#: common.c:192
msgid "reading type casts\n"
msgstr "lese Typumwandlungen\n"
-#: common.c:186
+#: common.c:197
msgid "finding inheritance relationships\n"
msgstr "lese Vererbungsbeziehungen\n"
-#: common.c:190
+#: common.c:201
msgid "reading column info for interesting tables\n"
msgstr "lese Spalteninfo für interessante Tabellen\n"
-#: common.c:194
+#: common.c:205
msgid "flagging inherited columns in subtables\n"
msgstr "markiere vererbte Spalten in abgeleiteten Tabellen\n"
-#: common.c:198
+#: common.c:209
msgid "reading indexes\n"
msgstr "lese Indexe\n"
-#: common.c:202
+#: common.c:213
msgid "reading constraints\n"
msgstr "lese Constraints\n"
-#: common.c:206
+#: common.c:217
msgid "reading triggers\n"
msgstr "lese Trigger\n"
-#: common.c:824
+#: common.c:789
#, 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:866
+#: common.c:831
#, 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:881
+#: common.c:846
#, 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:994
+#: common.c:959
msgid "cannot duplicate null pointer\n"
msgstr "kann NULL-Zeiger nicht duplizieren\n"
-#: common.c:997 common.c:1008 common.c:1019 common.c:1030
-#: pg_backup_archiver.c:569 pg_backup_archiver.c:910 pg_backup_archiver.c:1041
-#: pg_backup_archiver.c:1099 pg_backup_archiver.c:1509
-#: pg_backup_archiver.c:1666 pg_backup_archiver.c:1707 pg_backup_custom.c:138
-#: pg_backup_custom.c:143 pg_backup_custom.c:149 pg_backup_custom.c:164
-#: pg_backup_custom.c:549 pg_backup_db.c:148 pg_backup_db.c:217
-#: pg_backup_files.c:111 pg_backup_null.c:68 pg_backup_null.c:106
-#: pg_backup_tar.c:168 pg_backup_tar.c:1014
+#: common.c:962 common.c:973 common.c:984 common.c:995
+#: pg_backup_archiver.c:572 pg_backup_archiver.c:932 pg_backup_archiver.c:1059
+#: pg_backup_archiver.c:1526 pg_backup_archiver.c:1683
+#: pg_backup_archiver.c:1724 pg_backup_custom.c:138 pg_backup_custom.c:143
+#: pg_backup_custom.c:149 pg_backup_custom.c:164 pg_backup_custom.c:549
+#: pg_backup_db.c:141 pg_backup_db.c:210 pg_backup_db.c:429
+#: pg_backup_files.c:111 pg_backup_null.c:69 pg_backup_tar.c:168
+#: pg_backup_tar.c:1004
msgid "out of memory\n"
msgstr "Speicher aufgebraucht\n"
@@ -819,61 +823,61 @@
msgid "archiver"
msgstr "Archivierer"
-#: pg_backup_archiver.c:122 pg_backup_archiver.c:1005
+#: pg_backup_archiver.c:124 pg_backup_archiver.c:1027
#, c-format
msgid "could not close output file: %s\n"
msgstr "konnte Ausgabedatei nicht schließen: %s\n"
-#: pg_backup_archiver.c:148
+#: pg_backup_archiver.c:150
msgid "-C and -c are incompatible options\n"
msgstr "-C und -c sind inkompatible Optionen\n"
-#: pg_backup_archiver.c:154
+#: pg_backup_archiver.c:156
msgid "-C and -1 are incompatible options\n"
msgstr "-C und -1 sind inkompatible Optionen\n"
-#: pg_backup_archiver.c:161
+#: pg_backup_archiver.c:163
msgid "connecting to database for restore\n"
msgstr "verbinde mit der Datenbank zur Wiederherstellung\n"
-#: pg_backup_archiver.c:163
+#: pg_backup_archiver.c:165
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:205
+#: pg_backup_archiver.c:207
msgid "implied data-only restore\n"
msgstr "implizit werden nur Daten wiederhergestellt\n"
-#: pg_backup_archiver.c:248
+#: pg_backup_archiver.c:250
#, c-format
msgid "dropping %s %s\n"
msgstr "entferne %s %s\n"
-#: pg_backup_archiver.c:288 pg_backup_archiver.c:290
+#: pg_backup_archiver.c:290 pg_backup_archiver.c:292
#, c-format
msgid "warning from original dump file: %s\n"
msgstr "Warnung aus der ursprünglichen Ausgabedatei: %s\n"
-#: pg_backup_archiver.c:297
+#: pg_backup_archiver.c:299
#, c-format
msgid "creating %s %s\n"
msgstr "erstelle %s %s\n"
-#: pg_backup_archiver.c:312
+#: pg_backup_archiver.c:314
#, c-format
msgid "table \"%s\" could not be created, will not restore its data\n"
msgstr ""
"Tabelle »%s« konnte nicht erzeugt werden, werde die Daten nicht "
"wiederherstellen\n"
-#: pg_backup_archiver.c:332
+#: pg_backup_archiver.c:334
#, c-format
msgid "connecting to new database \"%s\"\n"
msgstr "verbinde mit neuer Datenbank »%s«\n"
-#: pg_backup_archiver.c:356
+#: pg_backup_archiver.c:358
msgid ""
"cannot restore from compressed archive (compression not supported in this "
"installation)\n"
@@ -881,37 +885,37 @@
"kann komprimiertes Archiv nicht wiederherstellen (Komprimierung in dieser "
"Installation nicht unterstützt)\n"
-#: pg_backup_archiver.c:364
+#: pg_backup_archiver.c:366
#, c-format
msgid "restoring %s\n"
msgstr "Wiederherstellung von %s\n"
-#: pg_backup_archiver.c:378
+#: pg_backup_archiver.c:380
#, c-format
msgid "restoring data for table \"%s\"\n"
msgstr "Wiederherstellung der Daten von Tabelle »%s«\n"
-#: pg_backup_archiver.c:408
+#: pg_backup_archiver.c:411
#, c-format
msgid "executing %s %s\n"
msgstr "führe %s %s aus\n"
-#: pg_backup_archiver.c:426
+#: pg_backup_archiver.c:429
#, 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:485
+#: pg_backup_archiver.c:488
#, c-format
msgid "disabling triggers for %s\n"
msgstr "schalte Trigger für %s aus\n"
-#: pg_backup_archiver.c:511
+#: pg_backup_archiver.c:514
#, c-format
msgid "enabling triggers for %s\n"
msgstr "schalte Trigger für %s ein\n"
-#: pg_backup_archiver.c:541
+#: pg_backup_archiver.c:544
msgid ""
"internal error -- WriteData cannot be called outside the context of a "
"DataDumper routine\n"
@@ -919,26 +923,26 @@
"interner Fehler -- WriteData kann nicht außerhalb des Kontexts einer "
"DataDumper-Routine aufgerufen werden\n"
-#: pg_backup_archiver.c:684
+#: pg_backup_archiver.c:687
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:738
+#: pg_backup_archiver.c:741
#, c-format
msgid "restored %d large objects\n"
msgstr "%d Large Objects wiederhergestellt\n"
-#: pg_backup_archiver.c:755
+#: pg_backup_archiver.c:758 pg_backup_tar.c:722
#, 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:761
+#: pg_backup_archiver.c:764
#, c-format
msgid "could not create large object %u\n"
msgstr "konnte Large Object %u nicht erstellen\n"
-#: pg_backup_archiver.c:766
+#: pg_backup_archiver.c:769
msgid "could not open large object\n"
msgstr "konnte Large Object nicht öffnen\n"
@@ -947,180 +951,180 @@
msgid "could not open TOC file \"%s\": %s\n"
msgstr "konnte Inhaltsverzeichnisdatei »%s« nicht öffnen: %s\n"
-#: pg_backup_archiver.c:843
+#: pg_backup_archiver.c:865
#, c-format
msgid "WARNING: line ignored: %s\n"
msgstr "WARNUNG: Zeile ignoriert: %s\n"
-#: pg_backup_archiver.c:850
+#: pg_backup_archiver.c:872
#, 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:860 pg_backup_files.c:169 pg_backup_files.c:454
+#: pg_backup_archiver.c:882 pg_backup_files.c:169 pg_backup_files.c:454
#, c-format
msgid "could not close TOC file: %s\n"
msgstr "konnte Inhaltsverzeichnisdatei nicht finden: %s\n"
-#: pg_backup_archiver.c:984 pg_backup_custom.c:175 pg_backup_files.c:127
+#: pg_backup_archiver.c:1006 pg_backup_custom.c:175 pg_backup_files.c:127
#: pg_backup_files.c:259
#, c-format
msgid "could not open output file \"%s\": %s\n"
msgstr "konnte Ausgabedatei »%s« nicht öffnen: %s\n"
-#: pg_backup_archiver.c:987 pg_backup_custom.c:182 pg_backup_files.c:134
+#: pg_backup_archiver.c:1009 pg_backup_custom.c:182 pg_backup_files.c:134
#, c-format
msgid "could not open output file: %s\n"
msgstr "konnte Ausgabedatei nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1084
+#: pg_backup_archiver.c:1102
#, c-format
msgid "wrote %lu bytes of large object data (result = %lu)\n"
msgstr "%lu Bytes Large-Object-Daten geschrieben (Ergebnis = %lu)\n"
-#: pg_backup_archiver.c:1088
+#: pg_backup_archiver.c:1106
#, 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:1147 pg_backup_archiver.c:1170 pg_backup_custom.c:764
+#: pg_backup_archiver.c:1164 pg_backup_archiver.c:1187 pg_backup_custom.c:764
#: pg_backup_custom.c:956 pg_backup_custom.c:970 pg_backup_files.c:429
-#: pg_backup_tar.c:589 pg_backup_tar.c:1092 pg_backup_tar.c:1385
+#: pg_backup_tar.c:589 pg_backup_tar.c:1091 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:1155
+#: pg_backup_archiver.c:1172
msgid "could not write to custom output routine\n"
msgstr "konnte nicht zur Custom-Ausgaberoutine schreiben\n"
-#: pg_backup_archiver.c:1253
+#: pg_backup_archiver.c:1270
msgid "Error while INITIALIZING:\n"
msgstr "Fehler in Phase INITIALIZING:\n"
-#: pg_backup_archiver.c:1258
+#: pg_backup_archiver.c:1275
msgid "Error while PROCESSING TOC:\n"
msgstr "Fehler in Phase PROCESSING TOC:\n"
-#: pg_backup_archiver.c:1263
+#: pg_backup_archiver.c:1280
msgid "Error while FINALIZING:\n"
msgstr "Fehler in Phase FINALIZING:\n"
-#: pg_backup_archiver.c:1268
+#: pg_backup_archiver.c:1285
#, 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:1402
+#: pg_backup_archiver.c:1419
#, c-format
msgid "unexpected data offset flag %d\n"
msgstr "unerwartete Datenoffsetmarkierung %d\n"
-#: pg_backup_archiver.c:1415
+#: pg_backup_archiver.c:1432
msgid "file offset in dump file is too large\n"
msgstr "Dateioffset in Dumpdatei ist zu groß\n"
-#: pg_backup_archiver.c:1512 pg_backup_archiver.c:2724 pg_backup_custom.c:740
-#: pg_backup_files.c:416 pg_backup_tar.c:788
+#: pg_backup_archiver.c:1529 pg_backup_archiver.c:2791 pg_backup_custom.c:740
+#: pg_backup_files.c:416 pg_backup_tar.c:778
msgid "unexpected end of file\n"
msgstr "unerwartetes Dateiende\n"
-#: pg_backup_archiver.c:1529
+#: pg_backup_archiver.c:1546
msgid "attempting to ascertain archive format\n"
msgstr "versuche Archivformat zu ermitteln\n"
-#: pg_backup_archiver.c:1545 pg_backup_custom.c:194 pg_backup_files.c:152
+#: pg_backup_archiver.c:1562 pg_backup_custom.c:194 pg_backup_files.c:152
#: pg_backup_files.c:304
#, c-format
msgid "could not open input file \"%s\": %s\n"
msgstr "konnte Eingabedatei »%s« nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1552 pg_backup_custom.c:201 pg_backup_files.c:159
+#: pg_backup_archiver.c:1569 pg_backup_custom.c:201 pg_backup_files.c:159
#, c-format
msgid "could not open input file: %s\n"
msgstr "konnte Eingabedatei nicht öffnen: %s\n"
-#: pg_backup_archiver.c:1561
+#: pg_backup_archiver.c:1578
#, c-format
msgid "could not read input file: %s\n"
msgstr "konnte Eingabedatei nicht lesen: %s\n"
-#: pg_backup_archiver.c:1563
+#: pg_backup_archiver.c:1580
#, 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:1616
+#: pg_backup_archiver.c:1633
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:1619
+#: pg_backup_archiver.c:1636
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:1637
+#: pg_backup_archiver.c:1654
#, c-format
msgid "read %lu bytes into lookahead buffer\n"
msgstr "%lu Bytes in Puffer gelesen\n"
-#: pg_backup_archiver.c:1644
+#: pg_backup_archiver.c:1661
#, c-format
msgid "could not close input file: %s\n"
msgstr "konnte Eingabedatei nicht schließen: %s\n"
-#: pg_backup_archiver.c:1661
+#: pg_backup_archiver.c:1678
#, c-format
msgid "allocating AH for %s, format %d\n"
msgstr "erstelle AH für %s, Format %d\n"
-#: pg_backup_archiver.c:1739
+#: pg_backup_archiver.c:1755
#, c-format
msgid "archive format is %d\n"
msgstr "Archivformat ist %d\n"
-#: pg_backup_archiver.c:1766
+#: pg_backup_archiver.c:1782
#, c-format
msgid "unrecognized file format \"%d\"\n"
msgstr "nicht erkanntes Dateiformat »%d«\n"
-#: pg_backup_archiver.c:1889
+#: pg_backup_archiver.c:1905
#, 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:1974
+#: pg_backup_archiver.c:1990
#, 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:2008
+#: pg_backup_archiver.c:2024
#, c-format
msgid "unrecognized encoding \"%s\"\n"
msgstr "nicht erkannte Kodierung »%s«\n"
-#: pg_backup_archiver.c:2013
+#: pg_backup_archiver.c:2029
#, c-format
msgid "invalid ENCODING item: %s\n"
msgstr "ungültiger ENCODING-Eintrag: %s\n"
-#: pg_backup_archiver.c:2031
+#: pg_backup_archiver.c:2047
#, c-format
msgid "invalid STDSTRINGS item: %s\n"
msgstr "ungültiger STDSTRINGS-Eintrag: %s\n"
-#: pg_backup_archiver.c:2192
+#: pg_backup_archiver.c:2208
#, c-format
msgid "could not set session user to \"%s\": %s"
msgstr "konnte Sitzungsbenutzer nicht auf »%s« setzen: %s"
-#: pg_backup_archiver.c:2515 pg_backup_archiver.c:2660
+#: pg_backup_archiver.c:2531 pg_backup_archiver.c:2706
#, 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:2692
+#: pg_backup_archiver.c:2759
msgid ""
"WARNING: requested compression not available in this installation -- archive "
"will be uncompressed\n"
@@ -1128,21 +1132,21 @@
"WARNUNG: Komprimierung ist in dieser Installation nicht verfügbar -- Archiv "
"wird nicht komprimiert\n"
-#: pg_backup_archiver.c:2727
+#: pg_backup_archiver.c:2794
msgid "did not find magic string in file header\n"
msgstr "magische Zeichenkette im Dateikopf nicht gefunden\n"
-#: pg_backup_archiver.c:2741
+#: pg_backup_archiver.c:2808
#, 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:2746
+#: pg_backup_archiver.c:2813
#, 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:2750
+#: pg_backup_archiver.c:2817
msgid ""
"WARNING: archive was made on a machine with larger integers, some operations "
"might fail\n"
@@ -1150,14 +1154,14 @@
"WARNUNG: Archiv wurde auf einer Maschine mit größeren Integers erstellt; "
"einige Operationen könnten fehlschlagen\n"
-#: pg_backup_archiver.c:2760
+#: pg_backup_archiver.c:2827
#, 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:2776
+#: pg_backup_archiver.c:2843
msgid ""
"WARNING: archive is compressed, but this installation does not support "
"compression -- no data will be available\n"
@@ -1165,7 +1169,7 @@
"WARNUNG: Archiv ist komprimiert, aber diese Installation unterstützt keine "
"Komprimierung -- keine Daten verfügbar\n"
-#: pg_backup_archiver.c:2794
+#: pg_backup_archiver.c:2861
msgid "WARNING: invalid creation date in header\n"
msgstr "WARNUNG: ungültiges Erstellungsdatum im Kopf\n"
@@ -1173,7 +1177,7 @@
msgid "custom archiver"
msgstr "Custom-Archivierer"
-#: pg_backup_custom.c:399 pg_backup_null.c:147
+#: pg_backup_custom.c:399 pg_backup_null.c:148
msgid "invalid OID for large object\n"
msgstr "ungültige Oid für Large Object\n"
@@ -1199,8 +1203,8 @@
#, c-format
msgid "found unexpected block ID (%d) when reading data -- expected %d\n"
msgstr ""
-"unerwartete Block-ID (%d) beim Lesen der Daten gefunden -- erwartet wurde %"
-"d\n"
+"unerwartete Block-ID (%d) beim Lesen der Daten gefunden -- erwartet wurde "
+"%d\n"
#: pg_backup_custom.c:502
#, c-format
@@ -1262,22 +1266,22 @@
msgid "archiver (db)"
msgstr "Archivierer (DB)"
-#: pg_backup_db.c:61
+#: pg_backup_db.c:54
msgid "could not get server_version from libpq\n"
msgstr "konnte server_version nicht von libpq ermitteln\n"
-#: pg_backup_db.c:72 pg_dumpall.c:1392
+#: pg_backup_db.c:65 pg_dumpall.c:1392
#, c-format
msgid "server version: %s; %s version: %s\n"
msgstr "Version des Servers: %s; Version von %s: %s\n"
# XXX bessere Übersetzung von mismatch?
-#: pg_backup_db.c:75 pg_dumpall.c:1395
+#: pg_backup_db.c:68 pg_dumpall.c:1395
#, c-format
msgid "proceeding despite version mismatch\n"
msgstr "Fortsetzung trotz unterschiedlicher Versionen\n"
-#: pg_backup_db.c:77 pg_dumpall.c:1398
+#: pg_backup_db.c:70 pg_dumpall.c:1398
#, c-format
msgid ""
"aborting because of version mismatch (Use the -i option to proceed "
@@ -1286,62 +1290,62 @@
"Abbruch wegen unterschiedlicher Versionen (Verwenden Sie die Option -i um "
"trotzdem fortzusetzen.)\n"
-#: pg_backup_db.c:142
+#: pg_backup_db.c:135
#, c-format
msgid "connecting to database \"%s\" as user \"%s\"\n"
msgstr "verbinde mit Datenbank »%s« als Benutzer »%s«\n"
-#: pg_backup_db.c:146 pg_backup_db.c:175 pg_backup_db.c:215 pg_backup_db.c:242
+#: pg_backup_db.c:139 pg_backup_db.c:168 pg_backup_db.c:208 pg_backup_db.c:235
#: pg_dumpall.c:1320 pg_dumpall.c:1344
msgid "Password: "
msgstr "Passwort: "
-#: pg_backup_db.c:158
+#: pg_backup_db.c:151
msgid "failed to reconnect to database\n"
msgstr "konnte nicht wieder zur Datenbank verbinden\n"
-#: pg_backup_db.c:163
+#: pg_backup_db.c:156
#, c-format
msgid "could not reconnect to database: %s"
msgstr "konnte nicht wieder zur Datenbank verbinden: %s"
-#: pg_backup_db.c:211
+#: pg_backup_db.c:204
msgid "already connected to a database\n"
msgstr "bereits mit einer Datenbank verbunden\n"
-#: pg_backup_db.c:234
+#: pg_backup_db.c:227
msgid "failed to connect to database\n"
msgstr "Verbinden zur Datenbank schlug fehl\n"
-#: pg_backup_db.c:252
+#: pg_backup_db.c:245
#, c-format
msgid "connection to database \"%s\" failed: %s"
msgstr "Verbindung zur Datenbank »%s« fehlgeschlagen: %s"
-#: pg_backup_db.c:267
+#: pg_backup_db.c:260
#, c-format
msgid "%s"
msgstr "%s"
-#: pg_backup_db.c:379
+#: pg_backup_db.c:352 pg_backup_db.c:423 pg_backup_db.c:432
+msgid "could not execute query"
+msgstr "konnte Anfrage nicht ausführen"
+
+#: pg_backup_db.c:403
#, c-format
msgid "error returned by PQputCopyData: %s"
msgstr "Fehler in PQputCopyData: %s"
-#: pg_backup_db.c:389
+#: pg_backup_db.c:451
#, c-format
msgid "error returned by PQputCopyEnd: %s"
msgstr "Fehler in PQputCopyEnd: %s"
-#: pg_backup_db.c:436
-msgid "could not execute query"
-msgstr "konnte Anfrage nicht ausführen"
-
-#: pg_backup_db.c:634
+#: pg_backup_db.c:468
msgid "could not start database transaction"
msgstr "konnte Datenbanktransaktion nicht starten"
-#: pg_backup_db.c:640
+#: pg_backup_db.c:474
msgid "could not commit database transaction"
msgstr "konnte Datenbanktransaktion nicht beenden"
@@ -1387,7 +1391,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:507 pg_backup_tar.c:938
+#: pg_backup_files.c:507 pg_backup_tar.c:928
#, c-format
msgid "invalid OID for large object (%u)\n"
msgstr "Large Object hat ungültige Oid (%u)\n"
@@ -1401,7 +1405,7 @@
msgid "could not close large object file\n"
msgstr "konnte Large-Object-Datei nicht schließen\n"
-#: pg_backup_null.c:74
+#: pg_backup_null.c:75
msgid "this format cannot be read\n"
msgstr "dieses Format kann nicht gelesen werden\n"
@@ -1466,68 +1470,53 @@
#: pg_backup_tar.c:677
#, c-format
-msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
-msgstr ""
-"fehlerhafte COPY-Anweisung -- Zeichenkette »copy« in »%s« nicht gefunden\n"
-
-#: pg_backup_tar.c:695
-#, c-format
-msgid ""
-"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" "
-"starting at position %lu\n"
-msgstr ""
-"fehlerhafte COPY-Anweisung -- Zeichenkette »from stdin« in »%s« ab Position %"
-"lu nicht gefunden\n"
+msgid "unexpected COPY statement syntax: \"%s\"\n"
+msgstr "unerwartete Syntax der COPY-Anweisung: »%s«\n"
-#: pg_backup_tar.c:732
-#, c-format
-msgid "restoring large object OID %u\n"
-msgstr "Wiederherstellung von Large Object OID %u\n"
-
-#: pg_backup_tar.c:883
+#: pg_backup_tar.c:873
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:1083
+#: pg_backup_tar.c:1082
msgid "archive member too large for tar format\n"
msgstr "Archivmitglied zu groß für Tar-Format\n"
-#: pg_backup_tar.c:1098
+#: pg_backup_tar.c:1097
#, c-format
msgid "could not close temporary file: %s\n"
msgstr "konnte temporäre Datei nicht schließen: %s\n"
-#: pg_backup_tar.c:1108
+#: pg_backup_tar.c:1107
#, 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:1116
+#: pg_backup_tar.c:1115
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:1145
+#: pg_backup_tar.c:1144
#, 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:1156
+#: pg_backup_tar.c:1155
#, c-format
msgid "now at file position %s\n"
msgstr "jetzt bei Dateiposition %s\n"
-#: pg_backup_tar.c:1165 pg_backup_tar.c:1196
+#: pg_backup_tar.c:1164 pg_backup_tar.c:1195
#, c-format
msgid "could not find header for file %s in tar archive\n"
msgstr "konnte Kopf für Datei %s im Tar-Archiv nicht finden\n"
-#: pg_backup_tar.c:1180
+#: pg_backup_tar.c:1179
#, c-format
msgid "skipping tar member %s\n"
msgstr "Tar-Mitglied %s übersprungen\n"
-#: pg_backup_tar.c:1184
+#: pg_backup_tar.c:1183
#, c-format
msgid ""
"dumping data out of order is not supported in this archive format: %s is "
@@ -1536,23 +1525,23 @@
"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:1231
+#: pg_backup_tar.c:1230
#, 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:1246
+#: pg_backup_tar.c:1245
#, c-format
msgid "incomplete tar header found (%lu bytes)\n"
msgstr "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"
@@ -1655,7 +1644,8 @@
#: pg_restore.c:387
#, c-format
msgid " -n, --schema=NAME restore only objects in this schema\n"
-msgstr " -n, --schema=NAME nur Objekte in diesem Schema wiederherstellen\n"
+msgstr ""
+" -n, --schema=NAME nur Objekte in diesem Schema wiederherstellen\n"
#: pg_restore.c:388 pg_dumpall.c:496
#, c-format
@@ -1834,7 +1824,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:481
#, c-format
@@ -2043,27 +2035,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.3.22.tar.bz2/src/bin/pg_dump/po/fr.po
^
|
@@ -8,90 +8,103 @@
msgstr ""
"Project-Id-Version: pg_dump-83-fr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-23 11:36+0000\n"
-"PO-Revision-Date: 2008-03-28 22:30+0100\n"
+"POT-Creation-Date: 2012-12-02 13:48+0000\n"
+"PO-Revision-Date: 2012-12-02 15:33+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: <pgsql-fr-generale@postgresql.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.10.2\n"
-#: pg_dump.c:425 pg_restore.c:251 pg_dumpall.c:296
+#: pg_dump.c:421
+#: pg_restore.c:251
+#: pg_dumpall.c:296
#, c-format
msgid "%s: invalid -X option -- %s\n"
msgstr "%s : option -X invalide -- %s\n"
-#: pg_dump.c:427 pg_dump.c:441 pg_dump.c:450 pg_restore.c:253 pg_restore.c:268
-#: pg_restore.c:285 pg_dumpall.c:298 pg_dumpall.c:307 pg_dumpall.c:324
-#: pg_dumpall.c:334 pg_dumpall.c:343 pg_dumpall.c:352 pg_dumpall.c:388
+#: pg_dump.c:423
+#: pg_dump.c:437
+#: pg_dump.c:446
+#: pg_restore.c:253
+#: pg_restore.c:268
+#: pg_restore.c:285
+#: pg_dumpall.c:298
+#: pg_dumpall.c:307
+#: pg_dumpall.c:324
+#: pg_dumpall.c:334
+#: pg_dumpall.c:343
+#: pg_dumpall.c:352
+#: pg_dumpall.c:388
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Essayez « %s --help » pour plus d'informations.\n"
-#: pg_dump.c:448 pg_dumpall.c:322
+#: pg_dump.c:444
+#: pg_dumpall.c:322
#, 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:461
+#: pg_dump.c:457
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:467
+#: pg_dump.c:463
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:473
-msgid ""
-"options -d/-D/--inserts/--column-inserts and -o/--oids cannot be used "
-"together\n"
+#: pg_dump.c:469
+msgid "options -d/-D/--inserts/--column-inserts and -o/--oids cannot be used together\n"
msgstr ""
"Les options « -d/-D/--inserts/--column-inserts » et « -o/--oids » ne\n"
"peuvent pas être utilisées conjointement\n"
-#: pg_dump.c:474
+#: pg_dump.c:470
msgid "(The INSERT command cannot set OIDs.)\n"
msgstr "(La commande INSERT ne peut pas positionner les OID.)\n"
-#: pg_dump.c:504
+#: pg_dump.c:500
#, c-format
msgid "invalid output format \"%s\" specified\n"
msgstr "format de sortie « %s » invalide\n"
-#: pg_dump.c:510
+#: pg_dump.c:506
#, 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:521 pg_backup_db.c:45
+#: pg_dump.c:517
+#: 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:537
+#: pg_dump.c:533
#, c-format
msgid "invalid client encoding \"%s\" specified\n"
msgstr "encodage client indiqué (« %s ») invalide\n"
-#: pg_dump.c:592
+#: pg_dump.c:588
#, c-format
msgid "last built-in OID is %u\n"
msgstr "le dernier OID interne est %u\n"
-#: pg_dump.c:602
+#: pg_dump.c:598
msgid "No matching schemas were found\n"
msgstr "Aucun schéma correspondant n'a été trouvé\n"
-#: pg_dump.c:617
+#: pg_dump.c:613
msgid "No matching tables were found\n"
msgstr "Aucune table correspondante n'a été trouvée\n"
-#: pg_dump.c:736
+#: pg_dump.c:732
#, c-format
msgid ""
"%s dumps a database as a text file or to other formats.\n"
@@ -101,17 +114,21 @@
"formats.\n"
"\n"
-#: pg_dump.c:737 pg_restore.c:367 pg_dumpall.c:480
+#: pg_dump.c:733
+#: pg_restore.c:367
+#: pg_dumpall.c:480
#, c-format
msgid "Usage:\n"
msgstr "Usage :\n"
-#: pg_dump.c:738
+#: pg_dump.c:734
#, c-format
msgid " %s [OPTION]... [DBNAME]\n"
msgstr " %s [OPTION]... [NOMBASE]\n"
-#: pg_dump.c:740 pg_restore.c:370 pg_dumpall.c:483
+#: pg_dump.c:736
+#: pg_restore.c:370
+#: pg_dumpall.c:483
#, c-format
msgid ""
"\n"
@@ -120,20 +137,21 @@
"\n"
"Options générales :\n"
-#: pg_dump.c:741 pg_restore.c:372 pg_dumpall.c:484
+#: pg_dump.c:737
+#: pg_restore.c:372
+#: pg_dumpall.c:484
#, c-format
msgid " -f, --file=FILENAME output file name\n"
msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n"
-#: pg_dump.c:742
+#: pg_dump.c:738
#, c-format
-msgid ""
-" -F, --format=c|t|p output file format (custom, tar, plain text)\n"
+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:743
+#: pg_dump.c:739
#, c-format
msgid ""
" -i, --ignore-version proceed even when server version mismatches\n"
@@ -142,29 +160,35 @@
" -i, --ignore-version continue même si la version du serveur ne\n"
" correspond pas à la version de pg_dump\n"
-#: pg_dump.c:745 pg_restore.c:376
+#: pg_dump.c:741
+#: pg_restore.c:376
#, c-format
msgid " -v, --verbose verbose mode\n"
msgstr " -v, --verbose mode verbeux\n"
-#: pg_dump.c:746
+#: pg_dump.c:742
#, 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:747 pg_restore.c:377 pg_dumpall.c:487
+#: pg_dump.c:743
+#: pg_restore.c:377
+#: pg_dumpall.c:487
#, c-format
msgid " --help show this help, then exit\n"
msgstr " --help affiche cette aide puis quitte\n"
-#: pg_dump.c:748 pg_restore.c:378 pg_dumpall.c:488
+#: pg_dump.c:744
+#: pg_restore.c:378
+#: pg_dumpall.c:488
#, c-format
msgid " --version output version information, then exit\n"
msgstr " --version affiche la version puis quitte\n"
-#: pg_dump.c:750 pg_dumpall.c:489
+#: pg_dump.c:746
+#: pg_dumpall.c:489
#, c-format
msgid ""
"\n"
@@ -173,77 +197,71 @@
"\n"
"Options contrôlant le contenu en sortie :\n"
-#: pg_dump.c:751
+#: pg_dump.c:747
#, c-format
msgid " -a, --data-only dump only the data, not the schema\n"
msgstr ""
" -a, --data-only sauvegarde uniquement les données, pas le\n"
" schéma\n"
-#: pg_dump.c:752
+#: pg_dump.c:748
#, 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:753
+#: pg_dump.c:749
#, c-format
msgid " -c, --clean clean (drop) schema prior to create\n"
msgstr ""
" -c, --clean nettoie (supprime) le schéma avant de le\n"
" créer\n"
-#: pg_dump.c:754
+#: pg_dump.c:750
#, c-format
-msgid ""
-" -C, --create include commands to create database in dump\n"
+msgid " -C, --create include commands to create database in dump\n"
msgstr ""
" -C, --create inclut les commandes de création de la base\n"
" dans la sauvegarde\n"
-#: pg_dump.c:755
+#: pg_dump.c:751
#, c-format
-msgid ""
-" -d, --inserts dump data as INSERT commands, rather than "
-"COPY\n"
+msgid " -d, --inserts dump data as INSERT commands, rather than COPY\n"
msgstr ""
" -d, --inserts sauvegarde les données avec des instructions\n"
" INSERT plutôt que COPY\n"
-#: pg_dump.c:756
+#: pg_dump.c:752
#, c-format
-msgid ""
-" -D, --column-inserts dump data as INSERT commands with column "
-"names\n"
+msgid " -D, --column-inserts dump data as INSERT commands with column names\n"
msgstr ""
" -D, --column-inserts sauvegarde les données avec des commandes\n"
" INSERT précisant les noms des colonnes\n"
-#: pg_dump.c:757
+#: pg_dump.c:753
#, 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:758
+#: pg_dump.c:754
#, c-format
msgid " -n, --schema=SCHEMA dump the named schema(s) only\n"
-msgstr ""
-" -n, --schema=SCHÉMA sauvegarde uniquement le schéma indiqué\n"
+msgstr " -n, --schema=SCHÉMA sauvegarde uniquement le schéma indiqué\n"
-#: pg_dump.c:759
+#: pg_dump.c:755
#, 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:760
+#: pg_dump.c:756
#, c-format
msgid " -o, --oids include OIDs in dump\n"
msgstr " -o, --oids inclut les OID dans la sauvegarde\n"
-#: pg_dump.c:761
+#: pg_dump.c:757
#, c-format
msgid ""
" -O, --no-owner skip restoration of object ownership\n"
@@ -252,14 +270,14 @@
" -O, --no-owner ne sauvegarde pas les propriétaires des\n"
" objets lors de l'utilisation du format texte\n"
-#: pg_dump.c:763
+#: pg_dump.c:759
#, c-format
msgid " -s, --schema-only dump only the schema, no data\n"
msgstr ""
" -s, --schema-only sauvegarde uniquement la structure, pas les\n"
" données\n"
-#: pg_dump.c:764
+#: pg_dump.c:760
#, c-format
msgid ""
" -S, --superuser=NAME specify the superuser user name to use in\n"
@@ -268,42 +286,37 @@
" -S, --superuser=NOM indique le nom du super-utilisateur à\n"
" utiliser dans le format texte\n"
-#: pg_dump.c:766
+#: pg_dump.c:762
#, c-format
msgid " -t, --table=TABLE dump the named table(s) only\n"
-msgstr ""
-" -t, --table=TABLE sauvegarde uniquement la table indiquée\n"
+msgstr " -t, --table=TABLE sauvegarde uniquement la table indiquée\n"
-#: pg_dump.c:767
+#: pg_dump.c:763
#, 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:768
+#: pg_dump.c:764
#, 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"
+msgstr " -x, --no-privileges ne sauvegarde pas les droits sur les objets\n"
-#: pg_dump.c:769
+#: pg_dump.c:765
#, c-format
-msgid ""
-" --disable-dollar-quoting disable dollar quoting, use SQL standard "
-"quoting\n"
+msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n"
msgstr ""
" --disable-dollar-quoting désactive l'utilisation des guillemets\n"
" dollar dans le but de respecter le standard\n"
" SQL en matière de guillemets\n"
-#: pg_dump.c:770
+#: pg_dump.c:766
#, c-format
-msgid ""
-" --disable-triggers disable triggers during data-only restore\n"
+msgid " --disable-triggers disable triggers during data-only restore\n"
msgstr ""
" --disable-triggers désactive les triggers en mode de\n"
" restauration des données seulement\n"
-#: pg_dump.c:771
+#: pg_dump.c:767
#, c-format
msgid ""
" --use-set-session-authorization\n"
@@ -315,7 +328,9 @@
" au lieu des commandes ALTER OWNER pour les\n"
" modifier les propriétaires\n"
-#: pg_dump.c:775 pg_restore.c:407 pg_dumpall.c:509
+#: pg_dump.c:771
+#: pg_restore.c:407
+#: pg_dumpall.c:509
#, c-format
msgid ""
"\n"
@@ -324,35 +339,41 @@
"\n"
"Options de connexion :\n"
-#: pg_dump.c:776 pg_restore.c:408 pg_dumpall.c:510
+#: pg_dump.c:772
+#: pg_restore.c:408
+#: pg_dumpall.c:510
#, c-format
msgid " -h, --host=HOSTNAME database server host or socket directory\n"
msgstr ""
" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n"
" répertoire des sockets\n"
-#: pg_dump.c:777 pg_restore.c:409 pg_dumpall.c:512
+#: pg_dump.c:773
+#: pg_restore.c:409
+#: pg_dumpall.c:512
#, c-format
msgid " -p, --port=PORT database server port number\n"
msgstr ""
" -p, --port=PORT numéro de port du serveur de bases de\n"
" données\n"
-#: pg_dump.c:778 pg_restore.c:410 pg_dumpall.c:513
+#: pg_dump.c:774
+#: pg_restore.c:410
+#: pg_dumpall.c:513
#, 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:779 pg_restore.c:411 pg_dumpall.c:514
+#: pg_dump.c:775
+#: pg_restore.c:411
+#: pg_dumpall.c:514
#, c-format
-msgid ""
-" -W, --password force password prompt (should happen "
-"automatically)\n"
+msgid " -W, --password force password prompt (should happen automatically)\n"
msgstr ""
" -W, --password force la demande du mot de passe (par\n"
" défaut)\n"
-#: pg_dump.c:781
+#: pg_dump.c:777
#, c-format
msgid ""
"\n"
@@ -365,495 +386,500 @@
"d'environnement PGDATABASE est alors utilisée.\n"
"\n"
-#: pg_dump.c:783 pg_restore.c:415 pg_dumpall.c:517
+#: pg_dump.c:779
+#: pg_restore.c:415
+#: pg_dumpall.c:517
#, c-format
msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
msgstr "Rapportez les bogues à <pgsql-bugs@postgresql.org>.\n"
-#: pg_dump.c:791 pg_backup_archiver.c:1207
+#: pg_dump.c:787
+#: pg_backup_archiver.c:1224
msgid "*** aborted because of error\n"
msgstr "*** interrompu du fait d'erreurs\n"
-#: pg_dump.c:812
+#: pg_dump.c:808
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:1033
+#: pg_dump.c:1043
#, c-format
msgid "dumping contents of table %s\n"
msgstr "sauvegarde du contenu de la table %s\n"
-#: pg_dump.c:1136
+#: pg_dump.c:1146
#, 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:1137 pg_dump.c:10296
+#: pg_dump.c:1147
+#: pg_dump.c:10381
#, c-format
msgid "Error message from server: %s"
msgstr "Message d'erreur du serveur : %s"
-#: pg_dump.c:1138 pg_dump.c:10297
+#: pg_dump.c:1148
+#: pg_dump.c:10382
#, c-format
msgid "The command was: %s\n"
msgstr "La commande était : %s\n"
-#: pg_dump.c:1414
+#: pg_dump.c:1432
msgid "saving database definition\n"
msgstr "sauvegarde de la définition de la base de données\n"
-#: pg_dump.c:1476
+#: pg_dump.c:1494
#, 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:1483
+#: pg_dump.c:1501
#, c-format
-msgid ""
-"query returned more than one (%d) pg_database entry for database \"%s\"\n"
+msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n"
msgstr ""
"la requête a renvoyé plus d'une entrée pg_database (%d) pour la base de\n"
"données « %s »\n"
-#: pg_dump.c:1582
+#: pg_dump.c:1600
#, c-format
msgid "saving encoding = %s\n"
msgstr "sauvegarde de l'encodage = %s\n"
-#: pg_dump.c:1608
+#: pg_dump.c:1626
#, c-format
msgid "saving standard_conforming_strings = %s\n"
msgstr "sauvegarde de standard_conforming_strings = %s\n"
-#: pg_dump.c:1669
+#: pg_dump.c:1687
msgid "saving large objects\n"
msgstr "sauvegarde des « Large Objects »\n"
-#: pg_dump.c:1705
+#: pg_dump.c:1723
#, c-format
msgid "dumpBlobs(): could not open large object: %s"
msgstr "dumpBlobs() : n'a pas pu ouvrir le « Large Object » : %s"
-#: pg_dump.c:1718
+#: pg_dump.c:1736
#, c-format
msgid "dumpBlobs(): error reading large object: %s"
msgstr "dumpBlobs() : n'a pas pu lire le « Large Object » : %s"
-#: pg_dump.c:1755
+#: pg_dump.c:1773
msgid "saving large object comments\n"
msgstr "sauvegarde des commentaires des « Large Objects »\n"
-#: pg_dump.c:1909
+#: pg_dump.c:1932
#, 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:1944
+#: pg_dump.c:1976
#, 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:2201
+#: pg_dump.c:2224
#, 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"
+msgstr "ATTENTION : le propriétaire du type de données « %s » semble être invalide\n"
-#: pg_dump.c:2305
+#: pg_dump.c:2328
#, c-format
msgid "WARNING: owner of operator \"%s\" appears to be invalid\n"
-msgstr ""
-"ATTENTION : le propriétaire de l'opérateur « %s » semble être invalide\n"
+msgstr "ATTENTION : le propriétaire de l'opérateur « %s » semble être invalide\n"
-#: pg_dump.c:2479
+#: pg_dump.c:2502
#, 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:2566
+#: pg_dump.c:2589
#, 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:2691
+#: pg_dump.c:2714
#, 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:2846
+#: pg_dump.c:2869
#, c-format
msgid "WARNING: owner of function \"%s\" appears to be invalid\n"
-msgstr ""
-"ATTENTION : le propriétaire de la fonction « %s » semble être invalide\n"
+msgstr "ATTENTION : le propriétaire de la fonction « %s » semble être invalide\n"
-#: pg_dump.c:3170
+#: pg_dump.c:3193
#, 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:3307
+#: pg_dump.c:3335
#, c-format
msgid "reading indexes for table \"%s\"\n"
msgstr "lecture des index de la table « %s »\n"
-#: pg_dump.c:3575
+#: pg_dump.c:3603
#, 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:3800
+#: pg_dump.c:3828
#, 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 "
-"pg_rewrite introuvable\n"
+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 pg_rewrite introuvable\n"
-#: pg_dump.c:3883
+#: pg_dump.c:3911
#, c-format
msgid "reading triggers for table \"%s\"\n"
msgstr "lecture des triggers pour la table « %s »\n"
-#: pg_dump.c:3972
+#: pg_dump.c:4000
#, c-format
msgid "expected %d triggers on table \"%s\" but found %d\n"
msgstr "%d triggers attendus sur la table « %s » mais %d trouvés\n"
-#: pg_dump.c:4019
+#: pg_dump.c:4047
#, c-format
-msgid ""
-"query produced null referenced table name for foreign key trigger \"%s\" on "
-"table \"%s\" (OID of table: %u)\n"
+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:4355
+#: pg_dump.c:4383
#, 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:4440
+#: pg_dump.c:4469
#, c-format
msgid "invalid column numbering in table \"%s\"\n"
msgstr "numérotation des colonnes invalide pour la table « %s »\n"
-#: pg_dump.c:4473
+#: pg_dump.c:4500
#, 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:4558
+#: pg_dump.c:4553
#, c-format
msgid "invalid adnum value %d for table \"%s\"\n"
msgstr "valeur adnum %d invalide pour la table « %s »\n"
-#: pg_dump.c:4576
+#: pg_dump.c:4626
#, 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:4640
+#: pg_dump.c:4690
#, c-format
msgid "expected %d check constraints on table \"%s\" but found %d\n"
msgstr ""
"%d contraintes de vérification attendues pour la table « %s » mais %d\n"
"trouvées\n"
-#: pg_dump.c:4642
+#: pg_dump.c:4692
msgid "(The system catalogs might be corrupted.)\n"
msgstr "(Les catalogues système sont peut-être corrompus.)\n"
-#: pg_dump.c:5534
+#: pg_dump.c:5601
#, c-format
msgid "no label definitions found for enum ID %u\n"
msgstr "pas de définition des labels trouvée pour l'ID enum %u\n"
-#: pg_dump.c:5763 pg_dump.c:5948 pg_dump.c:6547 pg_dump.c:7040 pg_dump.c:7287
-#: pg_dump.c:7391 pg_dump.c:7729 pg_dump.c:7902 pg_dump.c:8096 pg_dump.c:8319
-#: pg_dump.c:8470 pg_dump.c:10104
+#: pg_dump.c:5830
+#: pg_dump.c:6015
+#: pg_dump.c:6614
+#: pg_dump.c:7107
+#: pg_dump.c:7354
+#: pg_dump.c:7458
+#: pg_dump.c:7796
+#: pg_dump.c:7969
+#: pg_dump.c:8163
+#: pg_dump.c:8386
+#: pg_dump.c:8537
+#: pg_dump.c:10189
#, c-format
msgid "query returned %d rows instead of one: %s\n"
msgstr "la requête a renvoyé %d lignes au lieu d'une seule : %s\n"
-#: pg_dump.c:6067
+#: pg_dump.c:6134
#, c-format
msgid "query returned no rows: %s\n"
msgstr "la requête n'a renvoyé aucune ligne : %s\n"
-#: pg_dump.c:6344
+#: pg_dump.c:6411
msgid "WARNING: bogus value in proargmodes array\n"
msgstr "ATTENTION : valeur boguée dans le tableau proargmodes\n"
-#: pg_dump.c:6611
+#: pg_dump.c:6678
msgid "WARNING: could not parse proallargtypes array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proallargtypes\n"
-#: pg_dump.c:6627
+#: pg_dump.c:6694
msgid "WARNING: could not parse proargmodes array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proargmodes\n"
-#: pg_dump.c:6641
+#: pg_dump.c:6708
msgid "WARNING: could not parse proargnames array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proargnames\n"
-#: pg_dump.c:6652
+#: pg_dump.c:6719
msgid "WARNING: could not parse proconfig array\n"
msgstr "ATTENTION : n'a pas pu analyser le tableau proconfig\n"
-#: pg_dump.c:6690
+#: pg_dump.c:6757
#, c-format
msgid "unrecognized provolatile value for function \"%s\"\n"
msgstr "valeur provolatile non reconnue pour la fonction « %s »\n"
-#: pg_dump.c:7256
+#: pg_dump.c:7323
#, 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:8120
+#: pg_dump.c:8187
#, c-format
-msgid ""
-"WARNING: aggregate function %s could not be dumped correctly for this "
-"database version; ignored\n"
+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:8595
+#: pg_dump.c:8662
#, 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:8690
+#: pg_dump.c:8757
#, 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:8693
+#: pg_dump.c:8760
#, c-format
-msgid ""
-"query to obtain definition of view \"%s\" returned more than one definition\n"
+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"
" plus d'une définition\n"
-#: pg_dump.c:8702
+#: pg_dump.c:8769
#, 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:9000
+#: pg_dump.c:9085
#, 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:9102
+#: pg_dump.c:9187
#, c-format
msgid "missing index for constraint \"%s\"\n"
msgstr "index manquant pour la contrainte « %s »\n"
-#: pg_dump.c:9267
+#: pg_dump.c:9352
#, c-format
msgid "unrecognized constraint type: %c\n"
msgstr "type de contrainte inconnu : %c\n"
-#: pg_dump.c:9330
+#: pg_dump.c:9415
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:9335
+#: pg_dump.c:9420
msgid "found more than one pg_database entry for this database\n"
-msgstr ""
-"a trouvé plus d'une entrée dans pg_database pour cette base de données\n"
+msgstr "a trouvé plus d'une entrée dans pg_database pour cette base de données\n"
-#: pg_dump.c:9367
+#: pg_dump.c:9452
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:9372
+#: pg_dump.c:9457
msgid "found more than one entry for pg_indexes in pg_class\n"
msgstr "a trouvé plus d'une entrée pour pg_indexes dans la table pg_class\n"
-#: pg_dump.c:9421
+#: pg_dump.c:9506
#, c-format
msgid "query to get data of sequence \"%s\" returned %d rows (expected 1)\n"
msgstr ""
"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:9430
+#: pg_dump.c:9515
#, 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:9684
+#: pg_dump.c:9769
#, c-format
msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n"
-msgstr ""
-"chaîne argument invalide (%s) pour le trigger « %s » sur la table « %s »\n"
+msgstr "chaîne argument invalide (%s) pour le trigger « %s » sur la table « %s »\n"
-#: pg_dump.c:9821
+#: pg_dump.c:9906
#, c-format
-msgid ""
-"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows "
-"returned\n"
+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:9915
+#: pg_dump.c:10000
msgid "reading dependency data\n"
msgstr "lecture des données de dépendance\n"
-#: pg_dump.c:10291
+#: pg_dump.c:10376
msgid "SQL command failed\n"
msgstr "la commande SQL a échoué\n"
-#: common.c:111
+#: common.c:112
msgid "reading schemas\n"
msgstr "lecture des schémas\n"
-#: common.c:115
+#: common.c:123
+msgid "reading user-defined tables\n"
+msgstr "lecture des tables utilisateur\n"
+
+#: common.c:131
msgid "reading user-defined functions\n"
msgstr "lecture des fonctions utilisateur\n"
-#: common.c:121
+#: common.c:137
msgid "reading user-defined types\n"
msgstr "lecture des types utilisateur\n"
-#: common.c:127
+#: common.c:143
msgid "reading procedural languages\n"
msgstr "lecture des langages procéduraux\n"
-#: common.c:131
+#: common.c:147
msgid "reading user-defined aggregate functions\n"
msgstr "lecture des fonctions d'aggrégats utilisateur\n"
-#: common.c:135
+#: common.c:151
msgid "reading user-defined operators\n"
msgstr "lecture des opérateurs utilisateur\n"
-#: common.c:140
+#: common.c:156
msgid "reading user-defined operator classes\n"
msgstr "lecture des classes d'opérateurs utilisateur\n"
-#: common.c:144
+#: common.c:160
msgid "reading user-defined text search parsers\n"
-msgstr ""
-"lecture des analyseurs définis par l'utilisateur pour la recherche plein "
-"texte\n"
+msgstr "lecture des analyseurs définis par l'utilisateur pour la recherche plein texte\n"
-#: common.c:148
+#: common.c:164
msgid "reading user-defined text search templates\n"
-msgstr ""
-"lecture des modèles définis par l'utilisateur pour la recherche plein texte\n"
+msgstr "lecture des modèles définis par l'utilisateur pour la recherche plein texte\n"
-#: common.c:152
+#: common.c:168
msgid "reading user-defined text search dictionaries\n"
-msgstr ""
-"lecture des dictionnaires définis par l'utilisateur pour la recherche plein "
-"texte\n"
+msgstr "lecture des dictionnaires définis par l'utilisateur pour la recherche plein texte\n"
-#: common.c:156
+#: common.c:172
msgid "reading user-defined text search configurations\n"
msgstr ""
"lecture des configurations définies par l'utilisateur pour la recherche\n"
"plein texte\n"
-#: common.c:160
+#: common.c:176
msgid "reading user-defined operator families\n"
msgstr "lecture des familles d'opérateurs utilisateur\n"
-#: common.c:164
+#: common.c:180
msgid "reading user-defined conversions\n"
msgstr "lecture des conversions utilisateur\n"
-#: common.c:168
-msgid "reading user-defined tables\n"
-msgstr "lecture des tables utilisateur\n"
-
-#: common.c:173
+#: common.c:184
msgid "reading table inheritance information\n"
msgstr "lecture des informations d'héritage des tables\n"
-#: common.c:177
+#: common.c:188
msgid "reading rewrite rules\n"
msgstr "lecture des règles de réécriture\n"
-#: common.c:181
+#: common.c:192
msgid "reading type casts\n"
msgstr "lecture des transtypages\n"
-#: common.c:186
+#: common.c:197
msgid "finding inheritance relationships\n"
msgstr "recherche des relations d'héritage\n"
-#: common.c:190
+#: common.c:201
msgid "reading column info for interesting tables\n"
msgstr "lecture des informations de colonnes des tables intéressantes\n"
-#: common.c:194
+#: common.c:205
msgid "flagging inherited columns in subtables\n"
msgstr "marquages des colonnes héritées dans les sous-tables\n"
-#: common.c:198
+#: common.c:209
msgid "reading indexes\n"
msgstr "lecture des index\n"
-#: common.c:202
+#: common.c:213
msgid "reading constraints\n"
msgstr "lecture des contraintes\n"
-#: common.c:206
+#: common.c:217
msgid "reading triggers\n"
msgstr "lecture des triggers\n"
-#: common.c:824
+#: common.c:789
#, 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"
+msgstr "vérification échouée, OID %u parent de la table « %s » (OID %u) introuvable\n"
-#: common.c:866
+#: common.c:831
#, 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:881
+#: common.c:846
#, 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:994
+#: common.c:959
msgid "cannot duplicate null pointer\n"
msgstr "ne peut pas dupliquer un pointeur nul\n"
-#: common.c:997 common.c:1008 common.c:1019 common.c:1030
-#: pg_backup_archiver.c:569 pg_backup_archiver.c:910 pg_backup_archiver.c:1041
-#: pg_backup_archiver.c:1099 pg_backup_archiver.c:1509
-#: pg_backup_archiver.c:1666 pg_backup_archiver.c:1707 pg_backup_custom.c:138
-#: pg_backup_custom.c:143 pg_backup_custom.c:149 pg_backup_custom.c:164
-#: pg_backup_custom.c:549 pg_backup_db.c:148 pg_backup_db.c:217
-#: pg_backup_files.c:111 pg_backup_null.c:68 pg_backup_null.c:106
-#: pg_backup_tar.c:168 pg_backup_tar.c:1014
+#: common.c:962
+#: common.c:973
+#: common.c:984
+#: common.c:995
+#: pg_backup_archiver.c:572
+#: pg_backup_archiver.c:932
+#: pg_backup_archiver.c:1059
+#: pg_backup_archiver.c:1526
+#: pg_backup_archiver.c:1683
+#: pg_backup_archiver.c:1724
+#: pg_backup_custom.c:138
+#: pg_backup_custom.c:143
+#: pg_backup_custom.c:149
+#: pg_backup_custom.c:164
+#: pg_backup_custom.c:549
+#: pg_backup_db.c:141
+#: pg_backup_db.c:210
+#: pg_backup_db.c:429
+#: pg_backup_files.c:111
+#: pg_backup_null.c:69
+#: pg_backup_tar.c:168
+#: pg_backup_tar.c:1004
msgid "out of memory\n"
msgstr "mémoire épuisée\n"
@@ -861,127 +887,123 @@
msgid "archiver"
msgstr "archiver"
-#: pg_backup_archiver.c:122 pg_backup_archiver.c:1005
+#: pg_backup_archiver.c:124
+#: pg_backup_archiver.c:1027
#, 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:148
+#: pg_backup_archiver.c:150
msgid "-C and -c are incompatible options\n"
msgstr "-C et -c sont des options incompatibles\n"
-#: pg_backup_archiver.c:154
+#: pg_backup_archiver.c:156
msgid "-C and -1 are incompatible options\n"
msgstr "-C et -1 sont des options incompatibles\n"
-#: pg_backup_archiver.c:161
+#: pg_backup_archiver.c:163
msgid "connecting to database for restore\n"
msgstr "connexion à la base de données pour la restauration\n"
-#: pg_backup_archiver.c:163
+#: pg_backup_archiver.c:165
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:205
+#: pg_backup_archiver.c:207
msgid "implied data-only restore\n"
msgstr "a impliqué une restauration des données uniquement\n"
-#: pg_backup_archiver.c:248
+#: pg_backup_archiver.c:250
#, c-format
msgid "dropping %s %s\n"
msgstr "suppression de %s %s\n"
-#: pg_backup_archiver.c:288 pg_backup_archiver.c:290
+#: pg_backup_archiver.c:290
+#: pg_backup_archiver.c:292
#, 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:297
+#: pg_backup_archiver.c:299
#, c-format
msgid "creating %s %s\n"
msgstr "création de %s %s\n"
-#: pg_backup_archiver.c:312
+#: pg_backup_archiver.c:314
#, 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"
+msgstr "la table « %s » n'a pas pu être créée, ses données ne seront pas restaurées\n"
-#: pg_backup_archiver.c:332
+#: pg_backup_archiver.c:334
#, c-format
msgid "connecting to new database \"%s\"\n"
msgstr "connexion à la nouvelle base de données « %s »\n"
-#: pg_backup_archiver.c:356
-msgid ""
-"cannot restore from compressed archive (compression not supported in this "
-"installation)\n"
+#: pg_backup_archiver.c:358
+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:364
+#: pg_backup_archiver.c:366
#, c-format
msgid "restoring %s\n"
msgstr "restauration de %s\n"
-#: pg_backup_archiver.c:378
+#: pg_backup_archiver.c:380
#, c-format
msgid "restoring data for table \"%s\"\n"
msgstr "restauration des données de la table « %s »\n"
-#: pg_backup_archiver.c:408
+#: pg_backup_archiver.c:411
#, c-format
msgid "executing %s %s\n"
msgstr "exécution de %s %s\n"
-#: pg_backup_archiver.c:426
+#: pg_backup_archiver.c:429
#, c-format
msgid "setting owner and privileges for %s %s\n"
msgstr "initialisation du propriétaire et des droits pour %s %s\n"
-#: pg_backup_archiver.c:485
+#: pg_backup_archiver.c:488
#, c-format
msgid "disabling triggers for %s\n"
msgstr "désactivation des triggers pour %s\n"
-#: pg_backup_archiver.c:511
+#: pg_backup_archiver.c:514
#, c-format
msgid "enabling triggers for %s\n"
msgstr "activation des triggers pour %s\n"
-#: pg_backup_archiver.c:541
-msgid ""
-"internal error -- WriteData cannot be called outside the context of a "
-"DataDumper routine\n"
+#: pg_backup_archiver.c:544
+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:684
+#: pg_backup_archiver.c:687
msgid "large-object output not supported in chosen format\n"
-msgstr ""
-"la sauvegarde des « Large Objects » n'est pas supportée pour le format "
-"choisi\n"
+msgstr "la sauvegarde des « Large Objects » n'est pas supportée pour le format choisi\n"
-#: pg_backup_archiver.c:738
+#: pg_backup_archiver.c:741
#, c-format
msgid "restored %d large objects\n"
msgstr "restauration de %d « Large Objects »\n"
-#: pg_backup_archiver.c:755
+#: pg_backup_archiver.c:758
+#: pg_backup_tar.c:722
#, c-format
msgid "restoring large object with OID %u\n"
msgstr "restauration du « Large Object » d'OID %u\n"
-#: pg_backup_archiver.c:761
+#: pg_backup_archiver.c:764
#, 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:766
+#: pg_backup_archiver.c:769
msgid "could not open large object\n"
msgstr "n'a pas pu ouvrir le « Large Object »\n"
@@ -990,224 +1012,235 @@
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:843
+#: pg_backup_archiver.c:865
#, c-format
msgid "WARNING: line ignored: %s\n"
msgstr "ATTENTION : ligne ignorée : %s\n"
-#: pg_backup_archiver.c:850
+#: pg_backup_archiver.c:872
#, 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:860 pg_backup_files.c:169 pg_backup_files.c:454
+#: pg_backup_archiver.c:882
+#: pg_backup_files.c:169
+#: pg_backup_files.c:454
#, 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:984 pg_backup_custom.c:175 pg_backup_files.c:127
+#: pg_backup_archiver.c:1006
+#: pg_backup_custom.c:175
+#: pg_backup_files.c:127
#: pg_backup_files.c:259
#, c-format
msgid "could not open output file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n"
-#: pg_backup_archiver.c:987 pg_backup_custom.c:182 pg_backup_files.c:134
+#: pg_backup_archiver.c:1009
+#: pg_backup_custom.c:182
+#: pg_backup_files.c:134
#, 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:1084
+#: pg_backup_archiver.c:1102
#, c-format
msgid "wrote %lu bytes of large object data (result = %lu)\n"
msgstr "a écrit %lu octets de données d'un « Large Object » (résultat = %lu)\n"
-#: pg_backup_archiver.c:1088
+#: pg_backup_archiver.c:1106
#, 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:1147 pg_backup_archiver.c:1170 pg_backup_custom.c:764
-#: pg_backup_custom.c:956 pg_backup_custom.c:970 pg_backup_files.c:429
-#: pg_backup_tar.c:589 pg_backup_tar.c:1092 pg_backup_tar.c:1385
+#: pg_backup_archiver.c:1164
+#: pg_backup_archiver.c:1187
+#: pg_backup_custom.c:764
+#: pg_backup_custom.c:956
+#: pg_backup_custom.c:970
+#: pg_backup_files.c:429
+#: pg_backup_tar.c:589
+#: pg_backup_tar.c:1091
+#: 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:1155
+#: pg_backup_archiver.c:1172
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:1253
+#: pg_backup_archiver.c:1270
msgid "Error while INITIALIZING:\n"
msgstr "Erreur pendant l'initialisation (« INITIALIZING ») :\n"
-#: pg_backup_archiver.c:1258
+#: pg_backup_archiver.c:1275
msgid "Error while PROCESSING TOC:\n"
msgstr "Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :\n"
-#: pg_backup_archiver.c:1263
+#: pg_backup_archiver.c:1280
msgid "Error while FINALIZING:\n"
msgstr "Erreur pendant la finalisation (« FINALIZING ») :\n"
-#: pg_backup_archiver.c:1268
+#: pg_backup_archiver.c:1285
#, 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:1402
+#: pg_backup_archiver.c:1419
#, c-format
msgid "unexpected data offset flag %d\n"
msgstr "drapeau de décalage de données inattendu %d\n"
-#: pg_backup_archiver.c:1415
+#: pg_backup_archiver.c:1432
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:1512 pg_backup_archiver.c:2724 pg_backup_custom.c:740
-#: pg_backup_files.c:416 pg_backup_tar.c:788
+#: pg_backup_archiver.c:1529
+#: pg_backup_archiver.c:2791
+#: pg_backup_custom.c:740
+#: pg_backup_files.c:416
+#: pg_backup_tar.c:778
msgid "unexpected end of file\n"
msgstr "fin de fichier inattendu\n"
-#: pg_backup_archiver.c:1529
+#: pg_backup_archiver.c:1546
msgid "attempting to ascertain archive format\n"
msgstr "tentative d'identification du format de l'archive\n"
-#: pg_backup_archiver.c:1545 pg_backup_custom.c:194 pg_backup_files.c:152
+#: pg_backup_archiver.c:1562
+#: pg_backup_custom.c:194
+#: pg_backup_files.c:152
#: pg_backup_files.c:304
#, c-format
msgid "could not open input file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier en entrée « %s » : %s\n"
-#: pg_backup_archiver.c:1552 pg_backup_custom.c:201 pg_backup_files.c:159
+#: pg_backup_archiver.c:1569
+#: pg_backup_custom.c:201
+#: pg_backup_files.c:159
#, 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:1561
+#: pg_backup_archiver.c:1578
#, 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:1563
+#: pg_backup_archiver.c:1580
#, 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:1616
+#: pg_backup_archiver.c:1633
msgid "input file does not appear to be a valid archive (too short?)\n"
-msgstr ""
-"le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n"
+msgstr "le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n"
-#: pg_backup_archiver.c:1619
+#: pg_backup_archiver.c:1636
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:1637
+#: pg_backup_archiver.c:1654
#, c-format
msgid "read %lu bytes into lookahead buffer\n"
msgstr "lecture de %lu octets dans le tampon prévisionnel\n"
-#: pg_backup_archiver.c:1644
+#: pg_backup_archiver.c:1661
#, 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:1661
+#: pg_backup_archiver.c:1678
#, c-format
msgid "allocating AH for %s, format %d\n"
msgstr "allocation d'AH pour %s, format %d\n"
-#: pg_backup_archiver.c:1739
+#: pg_backup_archiver.c:1755
#, c-format
msgid "archive format is %d\n"
msgstr "le format de l'archive est %d\n"
-#: pg_backup_archiver.c:1766
+#: pg_backup_archiver.c:1782
#, c-format
msgid "unrecognized file format \"%d\"\n"
msgstr "format de fichier « %d » non reconnu\n"
-#: pg_backup_archiver.c:1889
+#: pg_backup_archiver.c:1905
#, 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:1974
+#: pg_backup_archiver.c:1990
#, 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:2008
+#: pg_backup_archiver.c:2024
#, c-format
msgid "unrecognized encoding \"%s\"\n"
msgstr "encodage « %s » non reconnu\n"
-#: pg_backup_archiver.c:2013
+#: pg_backup_archiver.c:2029
#, c-format
msgid "invalid ENCODING item: %s\n"
msgstr "élément ENCODING invalide : %s\n"
-#: pg_backup_archiver.c:2031
+#: pg_backup_archiver.c:2047
#, c-format
msgid "invalid STDSTRINGS item: %s\n"
msgstr "élément STDSTRINGS invalide : %s\n"
-#: pg_backup_archiver.c:2192
+#: pg_backup_archiver.c:2208
#, 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:2515 pg_backup_archiver.c:2660
+#: pg_backup_archiver.c:2531
+#: pg_backup_archiver.c:2706
#, 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"
+msgstr "ATTENTION : ne sait pas comment initialiser le propriétaire du type d'objet %s\n"
-#: pg_backup_archiver.c:2692
-msgid ""
-"WARNING: requested compression not available in this installation -- archive "
-"will be uncompressed\n"
+#: pg_backup_archiver.c:2759
+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:2727
+#: pg_backup_archiver.c:2794
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:2741
+#: pg_backup_archiver.c:2808
#, 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:2746
+#: pg_backup_archiver.c:2813
#, 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:2750
-msgid ""
-"WARNING: archive was made on a machine with larger integers, some operations "
-"might fail\n"
+#: pg_backup_archiver.c:2817
+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:2760
+#: pg_backup_archiver.c:2827
#, 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:2776
-msgid ""
-"WARNING: archive is compressed, but this installation does not support "
-"compression -- no data will be available\n"
+#: pg_backup_archiver.c:2843
+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:2794
+#: pg_backup_archiver.c:2861
msgid "WARNING: invalid creation date in header\n"
msgstr "ATTENTION : date de création invalide dans l'en-tête\n"
@@ -1215,14 +1248,13 @@
msgid "custom archiver"
msgstr "programme d'archivage personnalisé"
-#: pg_backup_custom.c:399 pg_backup_null.c:147
+#: pg_backup_custom.c:399
+#: pg_backup_null.c:148
msgid "invalid OID for large object\n"
msgstr "OID invalide pour le « Large Object »\n"
#: pg_backup_custom.c:455
-msgid ""
-"dumping a specific TOC data block out of order is not supported without ID "
-"on this input stream (fseek required)\n"
+msgid "dumping a specific TOC data block out of order is not supported without ID on this input stream (fseek required)\n"
msgstr ""
"la sauvegarde d'un bloc de données spécifique du TOC dans le désordre n'est\n"
"pas supporté sans identifiant sur ce flux d'entrée (fseek requis)\n"
@@ -1242,30 +1274,32 @@
#: pg_backup_custom.c:488
#, c-format
msgid "found unexpected block ID (%d) when reading data -- expected %d\n"
-msgstr ""
-"ID de bloc inattendu (%d) lors de la lecture des données -- %d attendu\n"
+msgstr "ID de bloc inattendu (%d) lors de la lecture des données -- %d attendu\n"
#: pg_backup_custom.c:502
#, c-format
msgid "unrecognized data block type %d while restoring archive\n"
-msgstr ""
-"type de bloc de données %d non reconnu lors de la restauration de l'archive\n"
+msgstr "type de bloc de données %d non reconnu lors de la restauration de l'archive\n"
-#: pg_backup_custom.c:536 pg_backup_custom.c:906
+#: pg_backup_custom.c:536
+#: pg_backup_custom.c:906
#, c-format
msgid "could not initialize compression library: %s\n"
msgstr "n'a pas pu initialiser la bibliothèque de compression : %s\n"
-#: pg_backup_custom.c:560 pg_backup_custom.c:688
+#: pg_backup_custom.c:560
+#: pg_backup_custom.c:688
msgid "could not read from input file: end of file\n"
msgstr "n'a pas pu lire à partir du fichier en entrée : fin du fichier\n"
-#: pg_backup_custom.c:563 pg_backup_custom.c:691
+#: pg_backup_custom.c:563
+#: pg_backup_custom.c:691
#, c-format
msgid "could not read from input file: %s\n"
msgstr "n'a pas pu lire à partir du fichier en entrée : %s\n"
-#: pg_backup_custom.c:581 pg_backup_custom.c:611
+#: pg_backup_custom.c:581
+#: pg_backup_custom.c:611
#, c-format
msgid "could not uncompress data: %s\n"
msgstr "n'a pas pu décompresser les données : %s\n"
@@ -1287,8 +1321,7 @@
#: pg_backup_custom.c:856
msgid "WARNING: ftell mismatch with expected position -- ftell used\n"
-msgstr ""
-"ATTENTION : ftell ne correspond pas à la position attendue -- ftell utilisé\n"
+msgstr "ATTENTION : ftell ne correspond pas à la position attendue -- ftell utilisé\n"
#: pg_backup_custom.c:937
#, c-format
@@ -1304,85 +1337,92 @@
msgid "archiver (db)"
msgstr "programme d'archivage (db)"
-#: pg_backup_db.c:61
+#: pg_backup_db.c:54
msgid "could not get server_version from libpq\n"
msgstr "n'a pas pu obtenir server_version de libpq\n"
-#: pg_backup_db.c:72 pg_dumpall.c:1392
+#: pg_backup_db.c:65
+#: pg_dumpall.c:1392
#, c-format
msgid "server version: %s; %s version: %s\n"
msgstr "version du serveur : %s ; %s version : %s\n"
-#: pg_backup_db.c:75 pg_dumpall.c:1395
+#: pg_backup_db.c:68
+#: pg_dumpall.c:1395
#, c-format
msgid "proceeding despite version mismatch\n"
msgstr "traitement malgré la différence des versions\n"
-#: pg_backup_db.c:77 pg_dumpall.c:1398
+#: pg_backup_db.c:70
+#: pg_dumpall.c:1398
#, c-format
-msgid ""
-"aborting because of version mismatch (Use the -i option to proceed "
-"anyway.)\n"
+msgid "aborting because of version mismatch (Use the -i option to proceed anyway.)\n"
msgstr ""
"annulation du fait de la différence des versions (utilisez l'option -i pour\n"
"passer outre cette protection)\n"
-#: pg_backup_db.c:142
+#: pg_backup_db.c:135
#, c-format
msgid "connecting to database \"%s\" as user \"%s\"\n"
msgstr "connexion à la base de données « %s » en tant qu'utilisateur « %s »\n"
-#: pg_backup_db.c:146 pg_backup_db.c:175 pg_backup_db.c:215 pg_backup_db.c:242
-#: pg_dumpall.c:1320 pg_dumpall.c:1344
+#: pg_backup_db.c:139
+#: pg_backup_db.c:168
+#: pg_backup_db.c:208
+#: pg_backup_db.c:235
+#: pg_dumpall.c:1320
+#: pg_dumpall.c:1344
msgid "Password: "
msgstr "Mot de passe : "
-#: pg_backup_db.c:158
+#: pg_backup_db.c:151
msgid "failed to reconnect to database\n"
msgstr "la nouvelle connexion à la base de données a échoué\n"
-#: pg_backup_db.c:163
+#: pg_backup_db.c:156
#, c-format
msgid "could not reconnect to database: %s"
msgstr "n'a pas pu se connecter de nouveau à la base de données : %s"
-#: pg_backup_db.c:211
+#: pg_backup_db.c:204
msgid "already connected to a database\n"
msgstr "déjà connecté à une base de données\n"
-#: pg_backup_db.c:234
+#: pg_backup_db.c:227
msgid "failed to connect to database\n"
msgstr "n'a pas pu se connecter à la base de données\n"
-#: pg_backup_db.c:252
+#: pg_backup_db.c:245
#, c-format
msgid "connection to database \"%s\" failed: %s"
msgstr "la connexion à la base de données « %s » a échoué : %s"
-#: pg_backup_db.c:267
+#: pg_backup_db.c:260
#, c-format
msgid "%s"
msgstr "%s"
-#: pg_backup_db.c:379
+#: pg_backup_db.c:352
+#: pg_backup_db.c:423
+#: pg_backup_db.c:432
+msgid "could not execute query"
+msgstr "n'a pas pu exécuter la requête"
+
+#: pg_backup_db.c:403
#, c-format
msgid "error returned by PQputCopyData: %s"
msgstr "erreur renvoyée par PQputCopyData : %s"
-#: pg_backup_db.c:389
+#: pg_backup_db.c:451
#, c-format
msgid "error returned by PQputCopyEnd: %s"
msgstr "erreur renvoyée par PQputCopyEnd : %s"
-#: pg_backup_db.c:436
-msgid "could not execute query"
-msgstr "n'a pas pu exécuter la requête"
-
-#: pg_backup_db.c:634
+#: pg_backup_db.c:468
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:640
+#: pg_backup_db.c:474
msgid "could not commit database transaction"
msgstr "n'a pas pu valider la transaction de la base de données"
@@ -1414,7 +1454,8 @@
msgid "could not open large object TOC for input: %s\n"
msgstr "n'a pas pu ouvrir la TOC du « Large Object » en entrée : %s\n"
-#: pg_backup_files.c:389 pg_backup_files.c:558
+#: pg_backup_files.c:389
+#: pg_backup_files.c:558
#, c-format
msgid "could not close large object TOC file: %s\n"
msgstr "n'a pas pu fermer le fichier TOC du « Large Object » : %s\n"
@@ -1428,7 +1469,8 @@
msgid "could not open large object TOC for output: %s\n"
msgstr "n'a pas pu ouvrir la TOC du « Large Object » en sortie : %s\n"
-#: pg_backup_files.c:507 pg_backup_tar.c:938
+#: pg_backup_files.c:507
+#: pg_backup_tar.c:928
#, c-format
msgid "invalid OID for large object (%u)\n"
msgstr "OID invalide pour le « Large Object » (%u)\n"
@@ -1442,7 +1484,7 @@
msgid "could not close large object file\n"
msgstr "n'a pas pu fermer le fichier du « Large Object »\n"
-#: pg_backup_null.c:74
+#: pg_backup_null.c:75
msgid "this format cannot be read\n"
msgstr "ce format ne peut pas être lu\n"
@@ -1507,101 +1549,81 @@
#: pg_backup_tar.c:677
#, c-format
-msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n"
-msgstr ""
-"instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne « %s "
-"»\n"
-
-#: pg_backup_tar.c:695
-#, 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"
+msgid "unexpected COPY statement syntax: \"%s\"\n"
+msgstr "syntaxe inattendue de l'instruction COPY : « %s »\n"
-#: pg_backup_tar.c:732
-#, c-format
-msgid "restoring large object OID %u\n"
-msgstr "restauration du « Large Object » d'OID %u\n"
-
-#: pg_backup_tar.c:883
+#: pg_backup_tar.c:873
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:1083
+#: pg_backup_tar.c:1082
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:1098
+#: pg_backup_tar.c:1097
#, 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:1108
+#: pg_backup_tar.c:1107
#, c-format
msgid "actual file length (%s) does not match expected (%s)\n"
msgstr ""
"la longueur du fichier actuel (%s) ne correspond pas à ce qui était attendu\n"
"(%s)\n"
-#: pg_backup_tar.c:1116
+#: pg_backup_tar.c:1115
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:1145
+#: pg_backup_tar.c:1144
#, 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"
+msgstr "déplacement de la position %s vers le prochain membre à la position %s du fichier\n"
-#: pg_backup_tar.c:1156
+#: pg_backup_tar.c:1155
#, c-format
msgid "now at file position %s\n"
msgstr "maintenant en position %s du fichier\n"
-#: pg_backup_tar.c:1165 pg_backup_tar.c:1196
+#: pg_backup_tar.c:1164
+#: pg_backup_tar.c:1195
#, c-format
msgid "could not find header for file %s in tar archive\n"
msgstr "n'a pas pu trouver l'en-tête du fichier %s dans l'archive tar\n"
-#: pg_backup_tar.c:1180
+#: pg_backup_tar.c:1179
#, c-format
msgid "skipping tar member %s\n"
msgstr "omission du membre %s du tar\n"
-#: pg_backup_tar.c:1184
+#: pg_backup_tar.c:1183
#, 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"
+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 ""
"la sauvegarde des données désordonné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:1231
+#: pg_backup_tar.c:1230
#, c-format
msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n"
msgstr ""
"pas de correspondance entre la position actuelle et celle prévue du fichier\n"
"(%s vs. %s)\n"
-#: pg_backup_tar.c:1246
+#: pg_backup_tar.c:1245
#, c-format
msgid "incomplete tar header found (%lu bytes)\n"
msgstr "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"
+msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n"
msgstr ""
"en-tête corrompu du fichier tar dans %s (attendu %d, calculé %d) à la\n"
"position %s du fichier\n"
@@ -1609,8 +1631,7 @@
#: pg_restore.c:283
#, c-format
msgid "%s: cannot specify both -d and -f output\n"
-msgstr ""
-"%s : les sorties -d et -f ne peuvent pas être indiquées simultanément\n"
+msgstr "%s : les sorties -d et -f ne peuvent pas être indiquées simultanément\n"
#: pg_restore.c:318
#, c-format
@@ -1651,8 +1672,7 @@
#: pg_restore.c:374
#, c-format
-msgid ""
-" -i, --ignore-version proceed even when server version mismatches\n"
+msgid " -i, --ignore-version proceed even when server version mismatches\n"
msgstr ""
" -i, --ignore-version continuer même lorsque la version du serveur\n"
" ne correspond pas\n"
@@ -1708,10 +1728,10 @@
#: pg_restore.c:387
#, c-format
msgid " -n, --schema=NAME restore only objects in this schema\n"
-msgstr ""
-" -n, --schema=NOM restaurer uniquement les objets de ce schéma\n"
+msgstr " -n, --schema=NOM restaurer uniquement les objets de ce schéma\n"
-#: pg_restore.c:388 pg_dumpall.c:496
+#: pg_restore.c:388
+#: pg_dumpall.c:496
#, c-format
msgid " -O, --no-owner skip restoration of object ownership\n"
msgstr ""
@@ -1749,26 +1769,25 @@
#: pg_restore.c:395
#, c-format
msgid " -T, --trigger=NAME restore named trigger\n"
-msgstr ""
-" -T, --trigger=NOM restaurer le trigger (trigger) indiqué\n"
+msgstr " -T, --trigger=NOM restaurer le trigger (trigger) indiqué\n"
#: pg_restore.c:396
#, c-format
-msgid ""
-" -x, --no-privileges skip restoration of access privileges (grant/"
-"revoke)\n"
+msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n"
msgstr ""
" -x, --no-privileges omettre la restauration des droits d'accès\n"
" (grant/revoke)\n"
-#: pg_restore.c:397 pg_dumpall.c:504
+#: pg_restore.c:397
+#: pg_dumpall.c:504
#, c-format
msgid " --disable-triggers disable triggers during data-only restore\n"
msgstr ""
" --disable-triggers désactiver les triggers lors d'une\n"
" restauration des données seules\n"
-#: pg_restore.c:398 pg_dumpall.c:505
+#: pg_restore.c:398
+#: pg_dumpall.c:505
#, c-format
msgid ""
" --use-set-session-authorization\n"
@@ -1799,8 +1818,7 @@
#: pg_restore.c:412
#, c-format
msgid " -e, --exit-on-error exit on error, default is to continue\n"
-msgstr ""
-" -e, --exit-on-error quitter en cas d'erreur, continue par défaut\n"
+msgstr " -e, --exit-on-error quitter en cas d'erreur, continue par défaut\n"
#: pg_restore.c:414
#, c-format
@@ -1838,31 +1856,27 @@
#: pg_dumpall.c:332
#, c-format
-msgid ""
-"%s: options -g/--globals-only and -r/--roles-only cannot be used together\n"
+msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n"
msgstr ""
"%s : les options « -g/--globals-only » et « -r/--roles-only » ne peuvent pas\n"
"être utilisées conjointement\n"
#: pg_dumpall.c:341
#, c-format
-msgid ""
-"%s: options -g/--globals-only and -t/--tablespaces-only cannot be used "
-"together\n"
+msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n"
msgstr ""
"%s : les options « -g/--globals-only » et « -t/--tablespaces-only » ne\n"
"peuvent pas être utilisées conjointement\n"
#: pg_dumpall.c:350
#, c-format
-msgid ""
-"%s: options -r/--roles-only and -t/--tablespaces-only cannot be used "
-"together\n"
+msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n"
msgstr ""
"%s : les options « -r/--roles-only » et « -t/--tablespaces-only » ne peuvent\n"
"pas être utilisées conjointement\n"
-#: pg_dumpall.c:370 pg_dumpall.c:1333
+#: pg_dumpall.c:370
+#: pg_dumpall.c:1333
#, c-format
msgid "%s: could not connect to database \"%s\"\n"
msgstr "%s : n'a pas pu se connecter à la base de données « %s »\n"
@@ -1908,9 +1922,7 @@
#: pg_dumpall.c:490
#, c-format
msgid " -a, --data-only dump only the data, not the schema\n"
-msgstr ""
-" -a, --data-only sauvegarde uniquement les données, pas le "
-"schéma\n"
+msgstr " -a, --data-only sauvegarde uniquement les données, pas le schéma\n"
#: pg_dumpall.c:491
#, c-format
@@ -1921,19 +1933,16 @@
#: pg_dumpall.c:492
#, c-format
-msgid ""
-" -d, --inserts dump data as INSERT, rather than COPY, commands\n"
+msgid " -d, --inserts dump data as INSERT, rather than COPY, commands\n"
msgstr ""
" -d, --inserts sauvegarde les données avec des instructions\n"
" INSERT plutôt que COPY\n"
#: pg_dumpall.c:493
#, c-format
-msgid ""
-" -D, --column-inserts dump data as INSERT commands with column names\n"
+msgid " -D, --column-inserts dump data as INSERT commands with column names\n"
msgstr ""
-" -D, --column-inserts sauvegarde les données avec des commandes "
-"INSERT\n"
+" -D, --column-inserts sauvegarde les données avec des commandes INSERT\n"
" précisant les noms des colonnes\n"
#: pg_dumpall.c:494
@@ -1950,8 +1959,7 @@
#: pg_dumpall.c:497
#, c-format
-msgid ""
-" -r, --roles-only dump only roles, no databases or tablespaces\n"
+msgid " -r, --roles-only dump only roles, no databases or tablespaces\n"
msgstr ""
" -r, --roles-only sauvegarde uniquement les rôles, pas les bases\n"
" de données et les tablespaces\n"
@@ -1959,23 +1967,18 @@
#: pg_dumpall.c:498
#, c-format
msgid " -s, --schema-only dump only the schema, no data\n"
-msgstr ""
-" -s, --schema-only sauvegarde uniquement le schéma, pas les "
-"données\n"
+msgstr " -s, --schema-only sauvegarde uniquement le schéma, pas les données\n"
#: pg_dumpall.c:499
#, c-format
-msgid ""
-" -S, --superuser=NAME specify the superuser user name to use in the "
-"dump\n"
+msgid " -S, --superuser=NAME specify the superuser user name to use in the dump\n"
msgstr ""
" -S, --superuser=NOM indique le nom du super-utilisateur à utiliser\n"
" avec le format texte\n"
#: pg_dumpall.c:500
#, c-format
-msgid ""
-" -t, --tablespaces-only dump only tablespaces, no databases or roles\n"
+msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n"
msgstr ""
" -t, --tablespaces-only sauvegarde uniquement les tablespaces, pas les\n"
" bases de données et les rôles\n"
@@ -1983,8 +1986,7 @@
#: pg_dumpall.c:501
#, c-format
msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n"
-msgstr ""
-" -x, --no-privileges ne pas sauvegarde les droits (grant/revoke)\n"
+msgstr " -x, --no-privileges ne pas sauvegarde les droits (grant/revoke)\n"
#: pg_dumpall.c:502
#, c-format
@@ -2014,14 +2016,12 @@
#: pg_dumpall.c:874
#, c-format
msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n"
-msgstr ""
-"%s : n'a pas pu analyser la liste d'ACL (%s) pour le tablespace « %s »\n"
+msgstr "%s : n'a pas pu analyser la liste d'ACL (%s) pour le tablespace « %s »\n"
#: pg_dumpall.c:1038
#, c-format
msgid "%s: could not parse ACL list (%s) for database \"%s\"\n"
-msgstr ""
-"%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de données « %s »\n"
+msgstr "%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de données « %s »\n"
#: pg_dumpall.c:1195
#, c-format
@@ -2036,8 +2036,7 @@
#: pg_dumpall.c:1214
#, c-format
msgid "%s: could not re-open the output file \"%s\": %s\n"
-msgstr ""
-"%s : n'a pas pu ouvrir de nouveau le fichier de sauvegarde « %s » : %s\n"
+msgstr "%s : n'a pas pu ouvrir de nouveau le fichier de sauvegarde « %s » : %s\n"
#: pg_dumpall.c:1288
#, c-format
@@ -2064,22 +2063,27 @@
msgid "%s: could not parse version \"%s\"\n"
msgstr "%s : n'a pas pu analyser la version « %s »\n"
-#: pg_dumpall.c:1423 pg_dumpall.c:1449
+#: pg_dumpall.c:1423
+#: pg_dumpall.c:1449
#, c-format
msgid "%s: executing %s\n"
msgstr "%s : exécute %s\n"
-#: pg_dumpall.c:1429 pg_dumpall.c:1455
+#: pg_dumpall.c:1429
+#: pg_dumpall.c:1455
#, c-format
msgid "%s: query failed: %s"
msgstr "%s : échec de la requête : %s"
-#: pg_dumpall.c:1431 pg_dumpall.c:1457
+#: pg_dumpall.c:1431
+#: pg_dumpall.c:1457
#, c-format
msgid "%s: query was: %s\n"
msgstr "%s : la requête était : %s\n"
-#: ../../port/exec.c:195 ../../port/exec.c:309 ../../port/exec.c:352
+#: ../../port/exec.c:195
+#: ../../port/exec.c:309
+#: ../../port/exec.c:352
#, c-format
msgid "could not identify current directory: %s"
msgstr "n'a pas pu identifier le répertoire courant : %s"
@@ -2099,7 +2103,8 @@
msgid "could not find a \"%s\" to execute"
msgstr "n'a pas pu trouver un « %s » à exécuter"
-#: ../../port/exec.c:325 ../../port/exec.c:361
+#: ../../port/exec.c:325
+#: ../../port/exec.c:361
#, c-format
msgid "could not change directory to \"%s\""
msgstr "n'a pas pu accéder au répertoire « %s »"
@@ -2109,30 +2114,45 @@
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 "%s: no result from server\n"
#~ msgstr "%s : aucun résultat du serveur\n"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/bin/pg_dump/po/ru.po
^
|
@@ -26,8 +26,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-07-05 21:49+0000\n"
-"PO-Revision-Date: 2012-04-03 08:49+0400\n"
+"POT-Creation-Date: 2012-09-29 22:49+0000\n"
+"PO-Revision-Date: 2012-10-02 10:02+0400\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgtranslation-translators@pgfoundry.org>\n"
"Language: ru\n"
@@ -825,7 +825,7 @@
#: pg_backup_custom.c:149 pg_backup_custom.c:164 pg_backup_custom.c:549
#: pg_backup_db.c:141 pg_backup_db.c:210 pg_backup_db.c:429
#: pg_backup_files.c:111 pg_backup_null.c:69 pg_backup_tar.c:168
-#: pg_backup_tar.c:1014
+#: pg_backup_tar.c:1004
msgid "out of memory\n"
msgstr "нехватка памяти\n"
@@ -939,7 +939,7 @@
msgid "restored %d large objects\n"
msgstr "восстановлено больших объектов: %d\n"
-#: pg_backup_archiver.c:758 pg_backup_tar.c:732
+#: pg_backup_archiver.c:758 pg_backup_tar.c:722
#, c-format
msgid "restoring large object with OID %u\n"
msgstr "восстановление большого объекта с OID %u\n"
@@ -996,7 +996,7 @@
#: pg_backup_archiver.c:1164 pg_backup_archiver.c:1187 pg_backup_custom.c:764
#: pg_backup_custom.c:956 pg_backup_custom.c:970 pg_backup_files.c:429
-#: pg_backup_tar.c:589 pg_backup_tar.c:1092 pg_backup_tar.c:1385
+#: pg_backup_tar.c:589 pg_backup_tar.c:1091 pg_backup_tar.c:1384
#, c-format
msgid "could not write to output file: %s\n"
msgstr "не удалось записать в выходной файл: %s\n"
@@ -1032,7 +1032,7 @@
msgstr "слишком большое смещение в файле вывода\n"
#: pg_backup_archiver.c:1529 pg_backup_archiver.c:2791 pg_backup_custom.c:740
-#: pg_backup_files.c:416 pg_backup_tar.c:788
+#: pg_backup_files.c:416 pg_backup_tar.c:778
msgid "unexpected end of file\n"
msgstr "неожиданный конец файла\n"
@@ -1388,7 +1388,7 @@
msgid "could not open large object TOC for output: %s\n"
msgstr "не удалось открыть для записи файл оглавления больших объектов: %s\n"
-#: pg_backup_files.c:507 pg_backup_tar.c:938
+#: pg_backup_files.c:507 pg_backup_tar.c:928
#, c-format
msgid "invalid OID for large object (%u)\n"
msgstr "неверный OID для большого объекта (%u)\n"
@@ -1468,61 +1468,52 @@
#: pg_backup_tar.c:677
#, 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:695
-#, 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:883
+#: pg_backup_tar.c:873
msgid "could not write null block at end of tar archive\n"
msgstr "не удалось записать нулевой блок в конец tar-архива\n"
-#: pg_backup_tar.c:1083
+#: pg_backup_tar.c:1082
msgid "archive member too large for tar format\n"
msgstr "компонент архива слишком велик для формата tar\n"
-#: pg_backup_tar.c:1098
+#: pg_backup_tar.c:1097
#, c-format
msgid "could not close temporary file: %s\n"
msgstr "не удалось закрыть временный файл: %s\n"
-#: pg_backup_tar.c:1108
+#: pg_backup_tar.c:1107
#, c-format
msgid "actual file length (%s) does not match expected (%s)\n"
msgstr "действительная длина файла (%s) не равна ожидаемой (%s)\n"
-#: pg_backup_tar.c:1116
+#: pg_backup_tar.c:1115
msgid "could not output padding at end of tar member\n"
msgstr "не удалось записать выравнивание для компонента tar\n"
-#: pg_backup_tar.c:1145
+#: pg_backup_tar.c:1144
#, c-format
msgid "moving from position %s to next member at file position %s\n"
msgstr "переход от позиции %s к следующему компоненту в позиции %s\n"
-#: pg_backup_tar.c:1156
+#: pg_backup_tar.c:1155
#, c-format
msgid "now at file position %s\n"
msgstr "текущая позиция в файле %s\n"
-#: pg_backup_tar.c:1165 pg_backup_tar.c:1196
+#: pg_backup_tar.c:1164 pg_backup_tar.c:1195
#, c-format
msgid "could not find header for file %s in tar archive\n"
msgstr "в архиве tar не найден заголовок для файла %s\n"
-#: pg_backup_tar.c:1180
+#: pg_backup_tar.c:1179
#, c-format
msgid "skipping tar member %s\n"
msgstr "пропускается компонент tar %s\n"
-#: pg_backup_tar.c:1184
+#: pg_backup_tar.c:1183
#, c-format
msgid ""
"dumping data out of order is not supported in this archive format: %s is "
@@ -1531,22 +1522,22 @@
"непоследовательная обработка данных для данного формата архива не "
"поддерживается: требуется компонент %s, но в файле архива прежде идёт %s.\n"
-#: pg_backup_tar.c:1231
+#: pg_backup_tar.c:1230
#, c-format
msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n"
msgstr "реальная позиция в файле отличается от предсказанной (%s и %s)\n"
-#: pg_backup_tar.c:1246
+#: pg_backup_tar.c:1245
#, c-format
msgid "incomplete tar header found (%lu bytes)\n"
msgstr "найден неполный 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"
@@ -2038,30 +2029,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.3.22.tar.bz2/src/bin/pg_resetxlog/pg_resetxlog.c
^
|
@@ -87,7 +87,6 @@
char *endptr3;
char *DataDir;
int fd;
- char path[MAXPGPATH];
set_pglocale_pgservice(argv[0], "pg_resetxlog");
@@ -262,13 +261,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);
}
}
@@ -276,7 +274,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.3.22.tar.bz2/src/bin/psql/po/fr.po
^
|
@@ -9,8 +9,8 @@
msgstr ""
"Project-Id-Version: psql-83-fr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-08-02 11:27+0000\n"
-"PO-Revision-Date: 2011-08-16 18:59+0100\n"
+"POT-Creation-Date: 2012-12-02 13:48+0000\n"
+"PO-Revision-Date: 2012-12-02 15:35+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: <pgsql-fr-generale@postgresql.org>\n"
"Language: \n"
@@ -3440,12 +3440,12 @@
#: sql_help.h:282
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 ] [, ...] ]"
@@ -4266,14 +4266,14 @@
#: sql_help.h:530
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"
@@ -4341,27 +4341,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.3.22.tar.bz2/src/bin/psql/po/pt_BR.po
^
|
@@ -1,11 +1,11 @@
# "psql" translation to Brazilian Portuguese Language.
-# 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.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-08-20 13:01-0300\n"
+"POT-Creation-Date: 2012-09-20 11:29-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"
@@ -3341,12 +3341,12 @@
#: sql_help.h:282
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 ] [, ...] ]"
@@ -4195,7 +4195,7 @@
#: sql_help.h:530
msgid ""
-"UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+"UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" SET { column = { expression | DEFAULT } |\n"
" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } "
"[, ...]\n"
@@ -4203,7 +4203,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"
@@ -4272,27 +4272,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.3.22.tar.bz2/src/bin/psql/po/ru.po
^
|
@@ -24,8 +24,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-07-05 21:49+0000\n"
-"PO-Revision-Date: 2012-04-02 19:14+0400\n"
+"POT-Creation-Date: 2012-09-29 22:49+0000\n"
+"PO-Revision-Date: 2012-10-02 10:11+0400\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgtranslation-translators@pgfoundry.org>\n"
"Language: ru\n"
@@ -379,7 +379,7 @@
msgid ""
"The server version (%d) does not support savepoints for ON_ERROR_ROLLBACK.\n"
msgstr ""
-"Сервер (версия %d) не поддерживает точки останова для ON_ERROR_ROLLBACK.\n"
+"Сервер (версия %d) не поддерживает точки сохранения для ON_ERROR_ROLLBACK.\n"
#: copy.c:124
msgid "\\copy: arguments required\n"
@@ -3355,12 +3355,12 @@
#: sql_help.h:282
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 имя_результата ] [, ...] ]"
@@ -4209,7 +4209,7 @@
#: sql_help.h:530
msgid ""
-"UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+"UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]\n"
" SET { column = { expression | DEFAULT } |\n"
" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } "
"[, ...]\n"
@@ -4217,7 +4217,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"
@@ -4286,27 +4286,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.3.22.tar.bz2/src/bin/psql/psqlscan.c
^
|
@@ -5172,7 +5172,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.3.22.tar.bz2/src/bin/psql/psqlscan.l
^
|
@@ -1656,7 +1656,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.3.22.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.3.22.tar.bz2/src/include/catalog/pg_index.h
^
|
@@ -91,4 +91,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.3.22.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.3.22.tar.bz2/src/include/nodes/relation.h
^
|
@@ -509,6 +509,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.3.22.tar.bz2/src/include/optimizer/planmain.h
^
|
@@ -82,12 +82,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.3.22.tar.bz2/src/include/pg_config.h.win32
^
|
@@ -566,16 +566,16 @@
#define PACKAGE_NAME "PostgreSQL"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "PostgreSQL 8.3.21"
+#define PACKAGE_STRING "PostgreSQL 8.3.22"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "8.3.21"
+#define PACKAGE_VERSION "8.3.22"
/* PostgreSQL version as a string */
-#define PG_VERSION "8.3.21"
+#define PG_VERSION "8.3.22"
/* PostgreSQL version as a number */
-#define PG_VERSION_NUM 80321
+#define PG_VERSION_NUM 80322
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "postgresql"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.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.3.22.tar.bz2/src/interfaces/libpq/fe-connect.c
^
|
@@ -765,7 +765,7 @@
connectDBStart(PGconn *conn)
{
int portnum;
- char portstr[128];
+ char portstr[MAXPGPATH];
struct addrinfo *addrs = NULL;
struct addrinfo hint;
const char *node;
@@ -817,6 +817,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.3.22.tar.bz2/src/interfaces/libpq/fe-lobj.c
^
|
@@ -544,10 +544,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);
@@ -592,11 +598,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;
}
@@ -608,11 +618,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;
}
}
@@ -630,7 +644,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.3.22.tar.bz2/src/interfaces/libpq/libpq.rc
^
|
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 8,3,21,12263
- PRODUCTVERSION 8,3,21,12263
+ FILEVERSION 8,3,22,12338
+ PRODUCTVERSION 8,3,22,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.3.21\0"
+ VALUE "FileVersion", "8.3.22\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.3.21\0"
+ VALUE "ProductVersion", "8.3.22\0"
END
END
BLOCK "VarFileInfo"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/interfaces/libpq/libpq.rc.in
^
|
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 8,3,21,0
- PRODUCTVERSION 8,3,21,0
+ FILEVERSION 8,3,22,0
+ PRODUCTVERSION 8,3,22,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.3.21\0"
+ VALUE "FileVersion", "8.3.22\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.3.21\0"
+ VALUE "ProductVersion", "8.3.22\0"
END
END
BLOCK "VarFileInfo"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.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 - 2007.
+# Peter Eisentraut <peter_e@gmx.net>, 2001 - 2012.
#
# Use these quotes: »%s«
#
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: PostgreSQL 8.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-26 21:27+0000\n"
-"PO-Revision-Date: 2012-07-13 23:33+0300\n"
+"POT-Creation-Date: 2012-12-01 23:17+0000\n"
+"PO-Revision-Date: 2012-12-02 00:47-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:581 fe-auth.c:654 fe-auth.c:680 fe-auth.c:779 fe-connect.c:1307
-#: fe-connect.c:2520 fe-connect.c:2738 fe-connect.c:3077 fe-connect.c:3086
-#: fe-connect.c:3223 fe-connect.c:3269 fe-connect.c:3287 fe-exec.c:2754
-#: fe-lobj.c:669 fe-protocol2.c:1027 fe-protocol3.c:1415
+#: fe-auth.c:581 fe-auth.c:654 fe-auth.c:680 fe-auth.c:779 fe-connect.c:1316
+#: fe-connect.c:2536 fe-connect.c:2754 fe-connect.c:3093 fe-connect.c:3102
+#: fe-connect.c:3239 fe-connect.c:3285 fe-connect.c:3303 fe-exec.c:2754
+#: fe-lobj.c:684 fe-protocol2.c:1027 fe-protocol3.c:1415
msgid "out of memory\n"
msgstr "Speicher aufgebraucht\n"
@@ -124,175 +124,182 @@
"\tLäuft der Server auf dem Host »%s« und akzeptiert er\n"
"\tTCP/IP-Verbindungen auf Port %s?\n"
-#: fe-connect.c:833
+#: fe-connect.c:823
+#, 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:842
#, 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:837
+#: fe-connect.c:846
#, 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:1038
+#: fe-connect.c:1047
msgid "invalid connection state, probably indicative of memory corruption\n"
msgstr "ungültiger Verbindungszustand, möglicherweise ein Speicherproblem\n"
-#: fe-connect.c:1081
+#: fe-connect.c:1090
#, c-format
msgid "could not create socket: %s\n"
msgstr "konnte Socket nicht erzeugen: %s\n"
-#: fe-connect.c:1104
+#: fe-connect.c:1113
#, 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:1116
+#: fe-connect.c:1125
#, 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:1203
+#: fe-connect.c:1212
#, c-format
msgid "could not get socket error status: %s\n"
msgstr "konnte Socket-Fehlerstatus nicht ermitteln: %s\n"
-#: fe-connect.c:1241
+#: fe-connect.c:1250
#, 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:1285
+#: fe-connect.c:1294
#, c-format
msgid "could not send SSL negotiation packet: %s\n"
msgstr "konnte Paket zur SSL-Verhandlung nicht senden: %s\n"
-#: fe-connect.c:1320
+#: fe-connect.c:1329
#, c-format
msgid "could not send startup packet: %s\n"
msgstr "konnte Startpaket nicht senden: %s\n"
-#: fe-connect.c:1385 fe-connect.c:1402
+#: fe-connect.c:1397
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:1418
+#: fe-connect.c:1423
#, c-format
msgid "received invalid response to SSL negotiation: %c\n"
msgstr "ungültige Antwort auf SSL-Verhandlungspaket empfangen: %c\n"
-#: fe-connect.c:1494 fe-connect.c:1527
+#: fe-connect.c:1502 fe-connect.c:1535
#, 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:1706
+#: fe-connect.c:1722
#, c-format
msgid "out of memory allocating GSSAPI buffer (%i)"
msgstr "Speicher aufgebraucht beim Anlegen des GSSAPI-Puffers (%i)"
-#: fe-connect.c:1791
+#: fe-connect.c:1807
msgid "unexpected message from server during startup\n"
msgstr "unerwartete Nachricht vom Server beim Start\n"
-#: fe-connect.c:1859
+#: fe-connect.c:1875
#, 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:2533
+#: fe-connect.c:2549
#, 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:2548
+#: fe-connect.c:2564
#, c-format
msgid "invalid LDAP URL \"%s\": missing distinguished name\n"
msgstr "ungültige LDAP-URL »%s«: Distinguished Name fehlt\n"
-#: fe-connect.c:2559 fe-connect.c:2612
+#: fe-connect.c:2575 fe-connect.c:2628
#, 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:2569 fe-connect.c:2626
+#: fe-connect.c:2585 fe-connect.c:2642
#, 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:2580
+#: fe-connect.c:2596
#, c-format
msgid "invalid LDAP URL \"%s\": no filter\n"
msgstr "ungültige LDAP-URL »%s«: kein Filter\n"
-#: fe-connect.c:2601
+#: fe-connect.c:2617
#, c-format
msgid "invalid LDAP URL \"%s\": invalid port number\n"
msgstr "ungültige LDAP-URL »%s«: ungültige Portnummer\n"
-#: fe-connect.c:2635
+#: fe-connect.c:2651
msgid "could not create LDAP structure\n"
msgstr "konnte LDAP-Struktur nicht erzeugen\n"
-#: fe-connect.c:2677
+#: fe-connect.c:2693
#, c-format
msgid "lookup on LDAP server failed: %s\n"
msgstr "Suche auf LDAP-Server fehlgeschlagen: %s\n"
-#: fe-connect.c:2688
+#: fe-connect.c:2704
msgid "more than one entry found on LDAP lookup\n"
msgstr "LDAP-Suche ergab mehr als einen Eintrag\n"
-#: fe-connect.c:2689 fe-connect.c:2701
+#: fe-connect.c:2705 fe-connect.c:2717
msgid "no entry found on LDAP lookup\n"
msgstr "kein Eintrag gefunden bei LDAP-Suche\n"
-#: fe-connect.c:2712 fe-connect.c:2725
+#: fe-connect.c:2728 fe-connect.c:2741
msgid "attribute has no values on LDAP lookup\n"
msgstr "Attribut hat keine Werte bei LDAP-Suche\n"
-#: fe-connect.c:2777 fe-connect.c:2796 fe-connect.c:3125
+#: fe-connect.c:2793 fe-connect.c:2812 fe-connect.c:3141
#, c-format
msgid "missing \"=\" after \"%s\" in connection info string\n"
msgstr "fehlendes »=« nach »%s« in der Zeichenkette der Verbindungsdaten\n"
-#: fe-connect.c:2860 fe-connect.c:3207
+#: fe-connect.c:2876 fe-connect.c:3223
#, c-format
msgid "invalid connection option \"%s\"\n"
msgstr "ungültige Verbindungsoption »%s«\n"
-#: fe-connect.c:2876 fe-connect.c:3174
+#: fe-connect.c:2892 fe-connect.c:3190
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:2919
+#: fe-connect.c:2935
#, c-format
msgid "ERROR: service file \"%s\" not found\n"
msgstr "FEHLER: Servicedatei »%s« nicht gefunden\n"
-#: fe-connect.c:2932
+#: fe-connect.c:2948
#, 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:3004 fe-connect.c:3031
+#: fe-connect.c:3020 fe-connect.c:3047
#, 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:3455
+#: fe-connect.c:3471
msgid "connection pointer is NULL\n"
msgstr "Verbindung ist ein NULL-Zeiger\n"
-#: fe-connect.c:3739
+#: fe-connect.c:3755
#, 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:3748
+#: fe-connect.c:3764
#, c-format
msgid ""
"WARNING: password file \"%s\" has world or group read access; permission "
@@ -391,55 +398,55 @@
msgid "cannot determine OID of function lo_create\n"
msgstr "kann OID der Funktion lo_create nicht ermitteln\n"
-#: fe-lobj.c:502 fe-lobj.c:597
+#: fe-lobj.c:502 fe-lobj.c:607
#, c-format
msgid "could not open file \"%s\": %s\n"
msgstr "konnte Datei »%s« nicht öffnen: %s\n"
-#: fe-lobj.c:548
+#: fe-lobj.c:553
#, c-format
msgid "could not read from file \"%s\": %s\n"
msgstr "konnte nicht aus Datei »%s« nicht lesen: %s\n"
-#: fe-lobj.c:612 fe-lobj.c:636
+#: fe-lobj.c:627 fe-lobj.c:651
#, c-format
msgid "could not write to file \"%s\": %s\n"
msgstr "konnte nicht in Datei »%s« schreiben: %s\n"
-#: fe-lobj.c:717
+#: fe-lobj.c:732
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:758
+#: fe-lobj.c:773
msgid "cannot determine OID of function lo_open\n"
msgstr "kann OID der Funktion lo_open nicht ermitteln\n"
-#: fe-lobj.c:765
+#: fe-lobj.c:780
msgid "cannot determine OID of function lo_close\n"
msgstr "kann OID der Funktion lo_close nicht ermitteln\n"
-#: fe-lobj.c:772
+#: fe-lobj.c:787
msgid "cannot determine OID of function lo_creat\n"
msgstr "kann OID der Funktion lo_creat nicht ermitteln\n"
-#: fe-lobj.c:779
+#: fe-lobj.c:794
msgid "cannot determine OID of function lo_unlink\n"
msgstr "kann OID der Funktion lo_unlink nicht ermitteln\n"
-#: fe-lobj.c:786
+#: fe-lobj.c:801
msgid "cannot determine OID of function lo_lseek\n"
msgstr "kann OID der Funktion lo_lseek nicht ermitteln\n"
-#: fe-lobj.c:793
+#: fe-lobj.c:808
msgid "cannot determine OID of function lo_tell\n"
msgstr "kann OID der Funktion lo_tell nicht ermitteln\n"
-#: fe-lobj.c:800
+#: fe-lobj.c:815
msgid "cannot determine OID of function loread\n"
msgstr "kann OID der Funktion loread nicht ermitteln\n"
-#: fe-lobj.c:807
+#: fe-lobj.c:822
msgid "cannot determine OID of function lowrite\n"
msgstr "kann OID der Funktion lowrite nicht ermitteln\n"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/interfaces/libpq/po/fr.po
^
|
@@ -10,8 +10,8 @@
msgstr ""
"Project-Id-Version: libpq-83-fr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-08-02 11:27+0000\n"
-"PO-Revision-Date: 2011-08-16 19:00+0100\n"
+"POT-Creation-Date: 2012-12-02 13:47+0000\n"
+"PO-Revision-Date: 2012-12-02 15:32+0100\n"
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
"Language-Team: <pgsql-fr-generale@postgresql.org>\n"
"Language: \n"
@@ -61,16 +61,16 @@
#: fe-auth.c:654
#: fe-auth.c:680
#: fe-auth.c:779
-#: fe-connect.c:1307
-#: fe-connect.c:2520
-#: fe-connect.c:2738
-#: fe-connect.c:3077
-#: fe-connect.c:3086
-#: fe-connect.c:3223
-#: fe-connect.c:3269
-#: fe-connect.c:3287
+#: fe-connect.c:1316
+#: fe-connect.c:2536
+#: fe-connect.c:2754
+#: fe-connect.c:3093
+#: fe-connect.c:3102
+#: fe-connect.c:3239
+#: fe-connect.c:3285
+#: fe-connect.c:3303
#: fe-exec.c:2754
-#: fe-lobj.c:669
+#: fe-lobj.c:684
#: fe-protocol2.c:1027
#: fe-protocol3.c:1415
msgid "out of memory\n"
@@ -138,190 +138,194 @@
"\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:833
+#: fe-connect.c:823
+#, 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:842
#, 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:837
+#: fe-connect.c:846
#, 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:1038
+#: fe-connect.c:1047
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:1081
+#: fe-connect.c:1090
#, c-format
msgid "could not create socket: %s\n"
msgstr "n'a pas pu créer la socket : %s\n"
-#: fe-connect.c:1104
+#: fe-connect.c:1113
#, 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:1116
+#: fe-connect.c:1125
#, 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:1203
+#: fe-connect.c:1212
#, 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:1241
+#: fe-connect.c:1250
#, 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:1285
+#: fe-connect.c:1294
#, 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:1320
+#: fe-connect.c:1329
#, 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:1385
-#: fe-connect.c:1402
+#: fe-connect.c:1397
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:1418
+#: fe-connect.c:1423
#, 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:1494
-#: fe-connect.c:1527
+#: fe-connect.c:1502
+#: fe-connect.c:1535
#, 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:1706
+#: fe-connect.c:1722
#, 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:1791
+#: fe-connect.c:1807
msgid "unexpected message from server during startup\n"
msgstr "message inattendu du serveur lors du démarrage\n"
-#: fe-connect.c:1859
+#: fe-connect.c:1875
#, 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:2533
+#: fe-connect.c:2549
#, 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:2548
+#: fe-connect.c:2564
#, c-format
msgid "invalid LDAP URL \"%s\": missing distinguished name\n"
msgstr "URL LDAP « %s » invalide : le « distinguished name » manque\n"
-#: fe-connect.c:2559
-#: fe-connect.c:2612
+#: fe-connect.c:2575
+#: fe-connect.c:2628
#, 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:2569
-#: fe-connect.c:2626
+#: fe-connect.c:2585
+#: fe-connect.c:2642
#, 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:2580
+#: fe-connect.c:2596
#, c-format
msgid "invalid LDAP URL \"%s\": no filter\n"
msgstr "URL LDAP « %s » invalide : aucun filtre\n"
-#: fe-connect.c:2601
+#: fe-connect.c:2617
#, 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:2635
+#: fe-connect.c:2651
msgid "could not create LDAP structure\n"
msgstr "n'a pas pu créer la structure LDAP\n"
-#: fe-connect.c:2677
+#: fe-connect.c:2693
#, c-format
msgid "lookup on LDAP server failed: %s\n"
msgstr "échec de la recherche sur le serveur LDAP : %s\n"
-#: fe-connect.c:2688
+#: fe-connect.c:2704
msgid "more than one entry found on LDAP lookup\n"
msgstr "plus d'une entrée trouvée pendant la recherche LDAP\n"
-#: fe-connect.c:2689
-#: fe-connect.c:2701
+#: fe-connect.c:2705
+#: fe-connect.c:2717
msgid "no entry found on LDAP lookup\n"
msgstr "aucune entrée trouvée pendant la recherche LDAP\n"
-#: fe-connect.c:2712
-#: fe-connect.c:2725
+#: fe-connect.c:2728
+#: fe-connect.c:2741
msgid "attribute has no values on LDAP lookup\n"
msgstr "l'attribut n'a pas de valeurs après la recherche LDAP\n"
-#: fe-connect.c:2777
-#: fe-connect.c:2796
-#: fe-connect.c:3125
+#: fe-connect.c:2793
+#: fe-connect.c:2812
+#: fe-connect.c:3141
#, 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:2860
-#: fe-connect.c:3207
+#: fe-connect.c:2876
+#: fe-connect.c:3223
#, c-format
msgid "invalid connection option \"%s\"\n"
msgstr "option de connexion « %s » invalide\n"
-#: fe-connect.c:2876
-#: fe-connect.c:3174
+#: fe-connect.c:2892
+#: fe-connect.c:3190
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:2919
+#: fe-connect.c:2935
#, c-format
msgid "ERROR: service file \"%s\" not found\n"
msgstr "ERREUR : fichier de service « %s » introuvable\n"
-#: fe-connect.c:2932
+#: fe-connect.c:2948
#, 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:3004
-#: fe-connect.c:3031
+#: fe-connect.c:3020
+#: fe-connect.c:3047
#, 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:3455
+#: fe-connect.c:3471
msgid "connection pointer is NULL\n"
msgstr "le pointeur de connexion est NULL\n"
-#: fe-connect.c:3739
+#: fe-connect.c:3755
#, 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:3748
+#: fe-connect.c:3764
#, c-format
msgid "WARNING: password file \"%s\" has world or group read access; permission should be u=rw (0600)\n"
msgstr ""
@@ -429,57 +433,57 @@
msgstr "ne peut pas déterminer l'OID de la fonction lo_create\n"
#: fe-lobj.c:502
-#: fe-lobj.c:597
+#: fe-lobj.c:607
#, c-format
msgid "could not open file \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le fichier « %s » : %s\n"
-#: fe-lobj.c:548
+#: fe-lobj.c:553
#, 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:612
-#: fe-lobj.c:636
+#: fe-lobj.c:627
+#: fe-lobj.c:651
#, 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:717
+#: fe-lobj.c:732
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:758
+#: fe-lobj.c:773
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:765
+#: fe-lobj.c:780
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:772
+#: fe-lobj.c:787
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:779
+#: fe-lobj.c:794
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:786
+#: fe-lobj.c:801
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:793
+#: fe-lobj.c:808
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:800
+#: fe-lobj.c:815
msgid "cannot determine OID of function loread\n"
msgstr "ne peut pas déterminer l'OID de la fonction loread\n"
-#: fe-lobj.c:807
+#: fe-lobj.c:822
msgid "cannot determine OID of function lowrite\n"
msgstr "ne peut pas déterminer l'OID de la fonction lowrite\n"
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/makefiles/Makefile.aix
^
|
@@ -30,12 +30,13 @@
POSTGRES_IMP= postgres$(IMPSUFF)
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
%$(EXPSUFF): %.o
$(MKLDEXPORT) $*.o > $*$(EXPSUFF)
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/port/win32ver.rc
^
|
@@ -2,8 +2,8 @@
#include "pg_config.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 8,3,21,0
- PRODUCTVERSION 8,3,21,0
+ FILEVERSION 8,3,22,0
+ PRODUCTVERSION 8,3,22,0
FILEFLAGSMASK 0x17L
FILEFLAGS 0x0L
FILEOS VOS_NT_WINDOWS32
|
[-]
[+]
|
Changed |
postgresql-8.3.22.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.3.22.tar.bz2/src/test/regress/expected/int2.out
^
|
@@ -228,3 +228,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.3.22.tar.bz2/src/test/regress/expected/int4.out
^
|
@@ -315,3 +315,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.3.22.tar.bz2/src/test/regress/expected/int8-exp-three-digits.out
^
|
@@ -317,3 +317,24 @@
select '9223372036854775808'::int8;
ERROR: value "9223372036854775808" is out of range for type bigint
+-- 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)
+
|
[-]
[+]
|
Changed |
postgresql-8.3.22.tar.bz2/src/test/regress/expected/int8.out
^
|
@@ -317,3 +317,24 @@
select '9223372036854775808'::int8;
ERROR: value "9223372036854775808" is out of range for type bigint
+-- 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)
+
|
[-]
[+]
|
Changed |
postgresql-8.3.22.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);
@@ -2348,3 +2349,21 @@
(0 rows)
rollback;
+--
+-- 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.3.22.tar.bz2/src/test/regress/expected/join_1.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);
@@ -2348,3 +2349,21 @@
(0 rows)
rollback;
+--
+-- 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.3.22.tar.bz2/src/test/regress/expected/rules.out
^
|
@@ -1442,6 +1442,28 @@
ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey"
DETAIL: Key (id3a,id3b)=(1,13) is not present in table "rule_and_refint_t1".
--
+-- 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.3.22.tar.bz2/src/test/regress/expected/subselect.out
^
|
@@ -507,6 +507,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.3.22.tar.bz2/src/test/regress/pg_regress.c
^
|
@@ -768,6 +768,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.3.22.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.3.22.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.3.22.tar.bz2/src/test/regress/sql/int8.sql
^
|
@@ -69,3 +69,11 @@
select '-9223372036854775809'::int8;
select '9223372036854775807'::int8;
select '9223372036854775808'::int8;
+
+-- 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;
|
[-]
[+]
|
Changed |
postgresql-8.3.22.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);
@@ -512,3 +514,15 @@
select * from a left join b on i = x and i = y and x = i;
rollback;
+
+--
+-- 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.3.22.tar.bz2/src/test/regress/sql/rules.sql
^
|
@@ -852,6 +852,21 @@
insert into rule_and_refint_t3 values (1, 13, 11, 'row8');
--
+-- 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.3.22.tar.bz2/src/test/regress/sql/subselect.sql
^
|
@@ -330,6 +330,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.3.22.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.3.22.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.3.22.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.3.22.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.3.22.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.3.22.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),
|