OSDN Git Service

pg-rex/syncrep.git
12 years agopgindent run of recent SSI changes. Also, remove an unnecessary #include.
Heikki Linnakangas [Thu, 16 Jun 2011 13:16:34 +0000 (16:16 +0300)]
pgindent run of recent SSI changes. Also, remove an unnecessary #include.

Kevin Grittner

12 years agoRespect Hot Standby controls while recycling btree index pages.
Simon Riggs [Thu, 16 Jun 2011 09:19:10 +0000 (10:19 +0100)]
Respect Hot Standby controls while recycling btree index pages.
Btree pages were recycled after VACUUM deletes all records on a
page and then a subsequent VACUUM occurs after the RecentXmin
horizon is reached. Using RecentXmin meant that we did not respond
correctly to the user controls provide to avoid Hot Standby
conflicts and so spurious conflicts could be generated in some
workload combinations. We now reuse pages only when we reach
RecentGlobalXmin, which can be much later in the presence of long
running queries and is also controlled by vacuum_defer_cleanup_age
and hot_standby_feedback.

Noah Misch and Simon Riggs

12 years agoUse single quotes in preference to double quotes for protecting pathnames.
Tom Lane [Thu, 16 Jun 2011 01:45:23 +0000 (21:45 -0400)]
Use single quotes in preference to double quotes for protecting pathnames.

Per recommendation from Peter.  Neither choice is bulletproof, but this
is the existing style and it does help prevent unexpected environment
variable substitution.

12 years agoRework parsing of ConstraintAttributeSpec to improve NOT VALID handling.
Tom Lane [Wed, 15 Jun 2011 23:05:11 +0000 (19:05 -0400)]
Rework parsing of ConstraintAttributeSpec to improve NOT VALID handling.

The initial commit of the ALTER TABLE ADD FOREIGN KEY NOT VALID feature
failed to support labeling such constraints as deferrable.  The best fix
for this seems to be to fold NOT VALID into ConstraintAttributeSpec.
That's a bit more general than the documented syntax, but it allows
better-targeted syntax error messages.

In addition, do some mostly-but-not-entirely-cosmetic code review for
the whole NOT VALID patch.

12 years agoIn pg_upgrade, clean up code layout in validateDirectoryOption().
Bruce Momjian [Wed, 15 Jun 2011 21:23:02 +0000 (17:23 -0400)]
In pg_upgrade, clean up code layout in validateDirectoryOption().

12 years agoFix failure to account for memory used by tuplestore_putvalues().
Tom Lane [Wed, 15 Jun 2011 18:05:22 +0000 (14:05 -0400)]
Fix failure to account for memory used by tuplestore_putvalues().

This oversight could result in a tuplestore using much more than the
intended amount of memory.  It would only happen in a code path that loaded
a tuplestore via tuplestore_putvalues(), and many of those won't emit huge
amounts of data; but cases such as holdable cursors and plpgsql's RETURN
NEXT command could have the problem.  The fix ensures that the tuplestore
will switch to write-to-disk mode when it overruns work_mem.

The potential overrun was finite, because we would still count the space
used by the tuple pointer array, so the tuplestore code would eventually
flip into write-to-disk mode anyway.  When storing wide tuples we would
go far past the expected work_mem usage before that happened; but this
may account for the lack of prior reports.

Back-patch to 8.4, where tuplestore_putvalues was introduced.

Per bug #6061 from Yann Delorme.

12 years agoFix oversights in pg_basebackup's -z (compression) option.
Tom Lane [Wed, 15 Jun 2011 17:15:05 +0000 (13:15 -0400)]
Fix oversights in pg_basebackup's -z (compression) option.

The short-form -z switch didn't work, for lack of telling getopt_long
about it; and even if specified long-form, it failed to do anything,
because the various tests elsewhere in the file would take
Z_DEFAULT_COMPRESSION (which is -1) as meaning "don't compress".

Per bug #6060 from Shigehiro Honda, though I editorialized on his patch
a bit.

12 years agoThe rolled-back flag on serializable xacts was pointless and redundant with
Heikki Linnakangas [Wed, 15 Jun 2011 10:35:28 +0000 (13:35 +0300)]
The rolled-back flag on serializable xacts was pointless and redundant with
the marked-for-death flag. It was only set for a fleeting moment while a
transaction was being cleaned up at rollback. All the places that checked
for the rolled-back flag should also check the marked-for-death flag, as
both flags mean that the transaction will roll back. I also renamed the
marked-for-death into "doomed", which is a lot shorter name.

12 years agoMake non-MVCC snapshots exempt from predicate locking. Scans with non-MVCC
Heikki Linnakangas [Wed, 15 Jun 2011 08:43:05 +0000 (11:43 +0300)]
Make non-MVCC snapshots exempt from predicate locking. Scans with non-MVCC
snapshots, like in REINDEX, are basically non-transactional operations. The
DDL operation itself might participate in SSI, but there's separate
functions for that.

Kevin Grittner and Dan Ports, with some changes by me.

12 years agoAllow psql \d tab completion to complete all relation kinds
Peter Eisentraut [Tue, 14 Jun 2011 20:45:00 +0000 (23:45 +0300)]
Allow psql \d tab completion to complete all relation kinds

This matches what \d actually accepts.

12 years agoDocument that psql's \d also works with composite types
Peter Eisentraut [Tue, 14 Jun 2011 20:44:01 +0000 (23:44 +0300)]
Document that psql's \d also works with composite types

This has always been true, it was just never documented.

12 years agoIn pg_upgrade, document that link mode has to have data directories on
Bruce Momjian [Tue, 14 Jun 2011 20:46:52 +0000 (16:46 -0400)]
In pg_upgrade, document that link mode has to have data directories on
the same file system, and that authentication should lock out normal
users.

Per suggestsion from #postgresql irc channel.

Backpatch to 9.1.

12 years agoFix assorted issues with build and install paths containing spaces.
Tom Lane [Tue, 14 Jun 2011 16:00:37 +0000 (12:00 -0400)]
Fix assorted issues with build and install paths containing spaces.

Apparently there is no buildfarm critter exercising this case after all,
because it fails in several places.  With this patch, build, install,
check-world, and installcheck-world pass for me on OS X.

12 years agoRemove unused variable
Peter Eisentraut [Tue, 14 Jun 2011 20:00:43 +0000 (23:00 +0300)]
Remove unused variable

The variable became obsolete in commit
68739ba856c52e6721d6cffec21f1bf0327a9a7b, but only gcc 4.6 shows the
warning.

12 years agoAdd comment that attributes.is_nullable was removed from SQL standard
Peter Eisentraut [Tue, 14 Jun 2011 19:53:02 +0000 (22:53 +0300)]
Add comment that attributes.is_nullable was removed from SQL standard

We don't have to remove the column if no one is bothered, but it's
useful to comment on it in case someone looks for it in newer
standards versions.

12 years agoIn pg_upgrade, check there are no prepared transactions.
Bruce Momjian [Tue, 14 Jun 2011 18:53:35 +0000 (14:53 -0400)]
In pg_upgrade, check there are no prepared transactions.

12 years agoFix grammatical mistake introduced by previous commit
Alvaro Herrera [Tue, 14 Jun 2011 17:48:23 +0000 (13:48 -0400)]
Fix grammatical mistake introduced by previous commit

Per note from Tom

12 years agoMention DROP TABLE as well as ALTER TABLE NO INHERIT
Alvaro Herrera [Tue, 14 Jun 2011 15:20:52 +0000 (11:20 -0400)]
Mention DROP TABLE as well as ALTER TABLE NO INHERIT

... when talking about how good they are in replacement of bulk DELETE
in partitioned setups.

The original wording was a bit confusing.

Per an observation from David Wheeler.

12 years agoImprove accuracy of ON_ERROR_STOP documentation.
Robert Haas [Tue, 14 Jun 2011 15:05:54 +0000 (11:05 -0400)]
Improve accuracy of ON_ERROR_STOP documentation.

Per a gripe from Tom Lane.

12 years agoOops, forgot to change the order of entries in 2PC callback arrays when I
Heikki Linnakangas [Tue, 14 Jun 2011 12:16:36 +0000 (15:16 +0300)]
Oops, forgot to change the order of entries in 2PC callback arrays when I
renumbered the resource managers. This should fix the buildfarm..

12 years agoRenumber 2PC resource managers so that compared to 9.0, predicate lock rmgr
Heikki Linnakangas [Tue, 14 Jun 2011 09:32:45 +0000 (12:32 +0300)]
Renumber 2PC resource managers so that compared to 9.0, predicate lock rmgr
is added to the end, and existing resource managers keep their old ids.
We're not going to guarantee on-disk compatibility for 2PC state files over
major releases, but it seems better to avoid changing the ids them anyway.
It will help anyone who might want to write external tools to inspect the
state files to work with files from different versions, if nothing else.
Per complaint from Tom Lane.

12 years agoMove parse2.pl to parse.pl
Peter Eisentraut [Tue, 14 Jun 2011 04:34:00 +0000 (07:34 +0300)]
Move parse2.pl to parse.pl

We have a SCM, so we don't need to keep old versions of files around.

12 years agoDocument that bits to the right of the CIDR mask "should" be zero, not
Bruce Momjian [Tue, 14 Jun 2011 00:54:45 +0000 (20:54 -0400)]
Document that bits to the right of the CIDR mask "should" be zero, not
"must".

12 years agoFix aboriginal copy-paste mistake in error message
Alvaro Herrera [Mon, 13 Jun 2011 21:50:30 +0000 (17:50 -0400)]
Fix aboriginal copy-paste mistake in error message

Spotted by Jaime Casanova

12 years agoExpand warnings on locks acquired by CREATE INDEX CONCURRENTLY
Alvaro Herrera [Mon, 13 Jun 2011 21:12:26 +0000 (17:12 -0400)]
Expand warnings on locks acquired by CREATE INDEX CONCURRENTLY

The previous wording wasn't explicit enough, which could misled readers
into thinking that the locks acquired are more restricted in nature than
they really are.  The resulting optimism can be damaging to morale when
confronted with reality, as has been observed in the field.

Greg Smith

12 years agoRemove parentheses from mention of current_schemas function.
Robert Haas [Mon, 13 Jun 2011 17:02:54 +0000 (13:02 -0400)]
Remove parentheses from mention of current_schemas function.

This is more consistent with what we do elsewhere, and hopefully avoids
creating the perception that current_schemas takes no arguments.

As suggested by Brendan Jurd

12 years agoClarify that NATURAL without matching columns is like CROSS JOIN.
Robert Haas [Mon, 13 Jun 2011 16:59:04 +0000 (12:59 -0400)]
Clarify that NATURAL without matching columns is like CROSS JOIN.

As suggested by Grzegorz Szpetkowski.

12 years agoAdd doc cross-reference to search_path discussion of current_schemas().
Robert Haas [Mon, 13 Jun 2011 16:37:49 +0000 (12:37 -0400)]
Add doc cross-reference to search_path discussion of current_schemas().

Brendan Jurd

12 years agoDocument GUC context for synchronous_standby_names/hot_standby_feedback.
Robert Haas [Mon, 13 Jun 2011 16:23:42 +0000 (12:23 -0400)]
Document GUC context for synchronous_standby_names/hot_standby_feedback.

Fujii Masao

12 years agoIn ALTER EXTENSION docs, document left_type/right_type.
Robert Haas [Mon, 13 Jun 2011 14:23:14 +0000 (10:23 -0400)]
In ALTER EXTENSION docs, document left_type/right_type.

Noted by Daniele Varrazzo.

12 years agoMarkup fix.
Robert Haas [Mon, 13 Jun 2011 14:14:02 +0000 (10:14 -0400)]
Markup fix.

Fujii Masao

12 years agoMore foreign table documentation improvements.
Robert Haas [Mon, 13 Jun 2011 12:28:41 +0000 (08:28 -0400)]
More foreign table documentation improvements.

Shigeru Hanada, with some additional wordsmithing by me

12 years agoRemove now-unnecessary casts.
Heikki Linnakangas [Sun, 12 Jun 2011 19:49:33 +0000 (22:49 +0300)]
Remove now-unnecessary casts.

Kevin Grittner

12 years agoCorrections to ALTER FOREIGN TABLE documentation.
Robert Haas [Sun, 12 Jun 2011 04:18:43 +0000 (00:18 -0400)]
Corrections to ALTER FOREIGN TABLE documentation.

Shigeru Hanada, with a minor grammar correction.

12 years agoCode cleanup for InitProcGlobal.
Robert Haas [Sun, 12 Jun 2011 04:07:04 +0000 (00:07 -0400)]
Code cleanup for InitProcGlobal.

The old code creates three separate arrays when only one is needed,
using two different shmem allocation functions for no obvious reason.
It also strangely splits up the initialization of AuxilaryProcs
between the top and bottom of the function to no evident purpose.

Review by Tom Lane.

12 years agoTab completion improvements for COMMENT.
Robert Haas [Sun, 12 Jun 2011 03:52:44 +0000 (23:52 -0400)]
Tab completion improvements for COMMENT.

These pertain to object types introduced in PostgreSQL 9.1, so back-patch.

Josh Kupershmidt, with some kibitzing by me.

12 years agoStamp HEAD as 9.2devel.
Tom Lane [Sat, 11 Jun 2011 21:46:49 +0000 (17:46 -0400)]
Stamp HEAD as 9.2devel.

12 years agoAdd C comment mentioning pg_stat_activity.procpid should have been
Bruce Momjian [Sat, 11 Jun 2011 14:00:28 +0000 (10:00 -0400)]
Add C comment mentioning pg_stat_activity.procpid should have been
called 'pid'.

12 years agoWork around gcc 4.6.0 bug that breaks WAL replay.
Tom Lane [Fri, 10 Jun 2011 21:03:03 +0000 (17:03 -0400)]
Work around gcc 4.6.0 bug that breaks WAL replay.

ReadRecord's habit of using both direct references to tmpRecPtr and
references to *RecPtr (which is pointing at tmpRecPtr) triggers an
optimization bug in gcc 4.6.0, which apparently has forgotten about
aliasing rules.  Avoid the compiler bug, and make the code more readable
to boot, by getting rid of the direct references.  Improve the comments
while at it.

Back-patch to all supported versions, in case they get built with 4.6.0.

Tom Lane, with some cosmetic suggestions from Alex Hunsaker

12 years agoFix locking while setting flags in MySerializableXact.
Heikki Linnakangas [Fri, 10 Jun 2011 20:15:05 +0000 (23:15 +0300)]
Fix locking while setting flags in MySerializableXact.

Even if a flag is modified only by the backend owning the transaction, it's
not safe to modify it without a lock. Another backend might be setting or
clearing a different flag in the flags field concurrently, and that
operation might be lost because setting or clearing a bit in a word is not
atomic.

Make did-write flag a simple backend-private boolean variable, because it
was only set or tested in the owning backend (except when committing a
prepared transaction, but it's not worthwhile to optimize for the case of a
read-only prepared transaction). This also eliminates the need to add
locking where that flag is set.

Also, set the did-write flag when doing DDL operations like DROP TABLE or
TRUNCATE -- that was missed earlier.

12 years agoAdd comment about pg_ctl stop
Alvaro Herrera [Fri, 10 Jun 2011 19:27:38 +0000 (15:27 -0400)]
Add comment about pg_ctl stop

12 years agoUse "transient" files for blind writes, take 2
Alvaro Herrera [Fri, 10 Jun 2011 17:43:02 +0000 (13:43 -0400)]
Use "transient" files for blind writes, take 2

"Blind writes" are a mechanism to push buffers down to disk when
evicting them; since they may belong to different databases than the one
a backend is connected to, the backend does not necessarily have a
relation to link them to, and thus no way to blow them away.  We were
keeping those files open indefinitely, which would cause a problem if
the underlying table was deleted, because the operating system would not
be able to reclaim the disk space used by those files.

To fix, have bufmgr mark such files as transient to smgr; the lower
layer is allowed to close the file descriptor when the current
transaction ends.  We must be careful to have any other access of the
file to remove the transient markings, to prevent unnecessary expensive
system calls when evicting buffers belonging to our own database (which
files we're likely to require again soon.)

This commit fixes a bug in the previous one, which neglected to cleanly
handle the LRU ring that fd.c uses to manage open files, and caused an
unacceptable failure just before beta2 and was thus reverted.

12 years agoUse a constant sprintf format to silence compiler warning
Alvaro Herrera [Fri, 10 Jun 2011 17:37:06 +0000 (13:37 -0400)]
Use a constant sprintf format to silence compiler warning

12 years agoSmall comment fixes and enhancements.
Heikki Linnakangas [Fri, 10 Jun 2011 14:22:00 +0000 (17:22 +0300)]
Small comment fixes and enhancements.

12 years agoMention "pg_ctl stop" in pgindent README instructions.
Bruce Momjian [Fri, 10 Jun 2011 00:51:10 +0000 (20:51 -0400)]
Mention "pg_ctl stop" in pgindent README instructions.

12 years agoTag 9.1beta2.
Tom Lane [Thu, 9 Jun 2011 23:40:42 +0000 (19:40 -0400)]
Tag 9.1beta2.

12 years agoEcpg doc cleanups, as reported by Marc Cousin.
Bruce Momjian [Thu, 9 Jun 2011 22:47:37 +0000 (18:47 -0400)]
Ecpg doc cleanups, as reported by Marc Cousin.

12 years agoUpdate 9.1 release notes to reflect commits through today.
Tom Lane [Thu, 9 Jun 2011 22:44:05 +0000 (18:44 -0400)]
Update 9.1 release notes to reflect commits through today.

Also do some desultory copy-editing on the notes.

12 years agoRevert "Use "transient" files for blind writes"
Alvaro Herrera [Thu, 9 Jun 2011 20:41:44 +0000 (16:41 -0400)]
Revert "Use "transient" files for blind writes"

This reverts commit 54d9e8c6c19cbefa8fb42ed3442a0a5327590ed3, which
caused a failure on the buildfarm.  Not a good thing to have just before
a beta release.

12 years agoUse "transient" files for blind writes
Alvaro Herrera [Thu, 9 Jun 2011 17:41:12 +0000 (13:41 -0400)]
Use "transient" files for blind writes

"Blind writes" are a mechanism to push buffers down to disk when
evicting them; since they may belong to different databases than the one
a backend is connected to, the backend does not necessarily have a
relation to link them to, and thus no way to blow them away.  We were
keeping those files open indefinitely, which would cause a problem if
the underlying table was deleted, because the operating system would not
be able to reclaim the disk space used by those files.

To fix, have bufmgr mark such files as transient to smgr; the lower
layer is allowed to close the file descriptor when the current
transaction ends.  We must be careful to have any other access of the
file to remove the transient markings, to prevent unnecessary expensive
system calls when evicting buffers belonging to our own database (which
files we're likely to require again soon.)

12 years agoTranslation updates for 9.1beta2
Peter Eisentraut [Thu, 9 Jun 2011 20:01:31 +0000 (23:01 +0300)]
Translation updates for 9.1beta2

12 years agoFix the truncation logic of the OldSerXid SLRU mechanism. We can't pass
Heikki Linnakangas [Thu, 9 Jun 2011 17:30:59 +0000 (20:30 +0300)]
Fix the truncation logic of the OldSerXid SLRU mechanism. We can't pass
SimpleLruTruncate() a page number that's "in the future", because it will
issue a warning and refuse to truncate anything. Instead, we leave behind
the latest segment. If the slru is not needed before XID wrap-around, the
segment will appear as new again, and not be cleaned up until it gets old
enough again. That's a bit unpleasant, but better than not cleaning up
anything.

Also, fix broken calculation to check and warn if the span of the OldSerXid
SLRU is getting too large to fit in the 64k SLRU pages that we have
available. It was not XID wraparound aware.

Kevin Grittner and me.

12 years agoPgindent run before 9.1 beta2.
Bruce Momjian [Thu, 9 Jun 2011 18:32:50 +0000 (14:32 -0400)]
Pgindent run before 9.1 beta2.

12 years agoUpdate typedef list for upcoming pgindent run.
Bruce Momjian [Thu, 9 Jun 2011 18:01:49 +0000 (14:01 -0400)]
Update typedef list for upcoming pgindent run.

12 years agoUse the correct eventlog severity for error
Magnus Hagander [Thu, 9 Jun 2011 16:21:38 +0000 (18:21 +0200)]
Use the correct eventlog severity for error

12 years agoSupport silent mode for service registrations on win32
Magnus Hagander [Thu, 9 Jun 2011 16:18:45 +0000 (18:18 +0200)]
Support silent mode for service registrations on win32

Using -s when registering a service will now suppress
the application eventlog entries stating that the service
is starting and started.

MauMau

12 years agoAdd gitignore for mingw/cygwin build outputs
Magnus Hagander [Thu, 9 Jun 2011 16:11:47 +0000 (18:11 +0200)]
Add gitignore for mingw/cygwin build outputs

Noted by Radosław Smogura

12 years agoMark the SLRU page as dirty when setting an entry in pg_serial. In the
Heikki Linnakangas [Thu, 9 Jun 2011 09:10:14 +0000 (12:10 +0300)]
Mark the SLRU page as dirty when setting an entry in pg_serial. In the
passing, fix an incorrect comment.

12 years agoFix documentation of information_schema.element_types
Peter Eisentraut [Thu, 9 Jun 2011 04:24:14 +0000 (07:24 +0300)]
Fix documentation of information_schema.element_types

The documentation of the columns collection_type_identifier and
dtd_identifier was wrong.  This effectively reverts commits
8e1ccad51901e83916dae297cd9afa450957a36c and
57352df66d3a0885899d39c04c067e63c7c0ba30 and updates the name
array_type_identifier (the name in SQL:1999) to
collection_type_identifier.

closes bug #5926

12 years agoMake citext's equality and hashing functions collation-insensitive.
Tom Lane [Wed, 8 Jun 2011 19:24:27 +0000 (15:24 -0400)]
Make citext's equality and hashing functions collation-insensitive.

This is an ugly hack to get around the fact that significant parts of the
core backend assume they don't need to worry about passing collation to
equality and hashing functions.  That's true for the core string datatypes,
but citext should ideally have equality behavior that depends on the
specified collation's LC_CTYPE.  However, there's no chance of fixing the
core before 9.2, so we'll have to live with this compromise arrangement for
now.  Per bug #6053 from Regina Obe.

The code changes in this commit should be reverted in full once the core
code is up to speed, but be careful about reverting the docs changes:
I fixed a number of obsolete statements while at it.

12 years agoReorder pg_ctl promote after pg_ctl status
Peter Eisentraut [Wed, 8 Jun 2011 17:51:25 +0000 (20:51 +0300)]
Reorder pg_ctl promote after pg_ctl status

Since start/stop/restart/reload/status is a kind of standard command
set, it seems odd to insert the special-purpose "promote" in between
the closely related "restart" and "reload".  So put it after "status"
in code and documentation.

Put the documentation of the -U option in some sensible place.

Rewrite the synopsis sentence in help and documentation to make it
less of a growing mouthful.

12 years agoAllow domains over arrays to match ANYARRAY parameters again.
Tom Lane [Wed, 8 Jun 2011 16:52:12 +0000 (12:52 -0400)]
Allow domains over arrays to match ANYARRAY parameters again.

This use-case was broken in commit 529cb267a6843a6a8190c86b75d091771d99d6a9
of 2010-10-21, in which I commented "For the moment, we just forbid such
matching.  We might later wish to insert an automatic downcast to the
underlying array type, but such a change should also change matching of
domains to ANYELEMENT for consistency".  We still lack consensus about what
to do with ANYELEMENT; but not matching ANYARRAY is a clear loss of
functionality compared to prior releases, so let's go ahead and make that
happen.  Per complaint from Regina Obe and extensive subsequent discussion.

12 years agoMake DDL operations play nicely with Serializable Snapshot Isolation.
Heikki Linnakangas [Wed, 8 Jun 2011 10:47:21 +0000 (13:47 +0300)]
Make DDL operations play nicely with Serializable Snapshot Isolation.

Truncating or dropping a table is treated like deletion of all tuples, and
check for conflicts accordingly. If a table is clustered or rewritten by
ALTER TABLE, all predicate locks on the heap are promoted to relation-level
locks, because the tuple or page ids of any existing tuples will change and
won't be valid after rewriting the table. Arguably ALTER TABLE should be
treated like a mass-UPDATE of every row, but if you e.g change the datatype
of a column, you could also argue that it's just a change to the physical
layout, not a logical change. Reindexing promotes all locks on the index to
relation-level lock on the heap.

Kevin Grittner, with a lot of cosmetic changes by me.

12 years agoComplain politely about access temp/unlogged tables during recovery.
Robert Haas [Wed, 8 Jun 2011 02:12:44 +0000 (22:12 -0400)]
Complain politely about access temp/unlogged tables during recovery.

This has never been supported, but we previously let md.c issue the
complaint for us at whatever point we tried to examine the backing file.
Now we print a nicer error message.

Per bug #6041, reported by Emanuel, and extensive discussion with Tom
Lane over where to put the check.

12 years agoRevert psql bits to display NOT VALID for FKs
Alvaro Herrera [Wed, 8 Jun 2011 01:39:43 +0000 (21:39 -0400)]
Revert psql bits to display NOT VALID for FKs

These are superseded by pg_get_constraintdef's ability to display the
same when appropriate, which is a better place to do it anyway.

12 years agoMake ascii-art in comments pgindent-safe, and some other formatting changes.
Heikki Linnakangas [Tue, 7 Jun 2011 06:54:24 +0000 (09:54 +0300)]
Make ascii-art in comments pgindent-safe, and some other formatting changes.

Kevin Grittner

12 years agoFix rewriter to cope (more or less) with CTEs in the query being rewritten.
Tom Lane [Tue, 7 Jun 2011 04:08:31 +0000 (00:08 -0400)]
Fix rewriter to cope (more or less) with CTEs in the query being rewritten.

Since the original implementation of CTEs only allowed them in SELECT
queries, the rule rewriter did not expect to find any CTEs in statements
being rewritten by ON INSERT/UPDATE/DELETE rules.  We had dealt with this
to some extent but the code was still several bricks shy of a load, as
illustrated in bug #6051 from Jehan-Guillaume de Rorthais.

In particular, we have to be able to copy CTEs from the original query's
cteList into that of a rule action, in case the rule action references the
CTE (which it pretty much always will).  This also implies we were doing
things in the wrong order in RewriteQuery: we have to recursively rewrite
the CTE queries before expanding the main query, so that we have the
rewritten queries available to copy.

There are unpleasant limitations yet to resolve here, but at least we now
throw understandable FEATURE_NOT_SUPPORTED errors for them instead of just
failing with bizarre implementation-dependent errors.  In particular, we
can't handle propagating the same CTE into multiple post-rewrite queries
(because then the CTE would be evaluated multiple times), and we can't cope
with conflicts between CTE names in the original query and in the rule
actions.

12 years agoReset reindex-in-progress state before reverifying an exclusion constraint.
Tom Lane [Mon, 6 Jun 2011 02:30:04 +0000 (22:30 -0400)]
Reset reindex-in-progress state before reverifying an exclusion constraint.

This avoids an Assert failure when we try to use ordinary index fetches
while checking for exclusion conflicts.  Per report from Noah Misch.

No need for back-patch because the Assert wasn't there before 9.1.

12 years agoAllow building with perl 5.14.
Andrew Dunstan [Sat, 4 Jun 2011 23:32:10 +0000 (19:32 -0400)]
Allow building with perl 5.14.

Patch from Alex Hunsaker.

12 years agoFix documentation reference to "above" example
Peter Eisentraut [Sat, 4 Jun 2011 20:12:27 +0000 (23:12 +0300)]
Fix documentation reference to "above" example

found by Thom Brown

12 years agoMore ECPG documentation fixes
Peter Eisentraut [Sat, 4 Jun 2011 19:29:26 +0000 (22:29 +0300)]
More ECPG documentation fixes

Marc Cousin

12 years agoECPG documentation fix
Peter Eisentraut [Sat, 4 Jun 2011 19:11:20 +0000 (22:11 +0300)]
ECPG documentation fix

Marc Cousin, Satoshi Nagayasu

12 years agoExpose the "*VALUES*" alias that we generate for a stand-alone VALUES list.
Tom Lane [Sat, 4 Jun 2011 19:48:17 +0000 (15:48 -0400)]
Expose the "*VALUES*" alias that we generate for a stand-alone VALUES list.

We were trying to make that strictly an internal implementation detail,
but it turns out that it's exposed anyway when dumping a view defined
like
CREATE VIEW test_view AS VALUES (1), (2), (3) ORDER BY 1;
This comes out as
CREATE VIEW ... ORDER BY "*VALUES*".column1;
which fails to parse when reloading the dump.

Hacking ruleutils.c to suppress the column qualification looks like it'd
be a risky business, so instead promote the RTE alias to full-fledged
usability.

Per bug #6049 from Dylan Adams.  Back-patch to all supported branches.

12 years agoFix pg_get_constraintdef to cope with NOT VALID constraints
Alvaro Herrera [Thu, 2 Jun 2011 16:39:53 +0000 (12:39 -0400)]
Fix pg_get_constraintdef to cope with NOT VALID constraints

This case was missed when NOT VALID constraints were first introduced in
commit 722bf7017bbe796decc79c1fde03e7a83dae9ada by Simon Riggs on
2011-02-08.  Among other things, it causes pg_dump to omit the NOT VALID
flag when dumping such constraints, which may cause them to fail to
load afterwards, if they contained values failing the constraint.

Per report from Thom Brown.

12 years agoFix failure to check whether a rowtype's component types are sortable.
Tom Lane [Fri, 3 Jun 2011 19:38:12 +0000 (15:38 -0400)]
Fix failure to check whether a rowtype's component types are sortable.

The existence of a btree opclass accepting composite types caused us to
assume that every composite type is sortable.  This isn't true of course;
we need to check if the column types are all sortable.  There was logic
for this for the case of array comparison (ie, check that the element
type is sortable), but we missed the point for rowtypes.  Per Teodor's
report of an ANALYZE failure for an unsortable composite type.

Rather than just add some more ad-hoc logic for this, I moved knowledge of
the issue into typcache.c.  The typcache will now only report out array_eq,
record_cmp, and friends as usable operators if the array or composite type
will work with those functions.

Unfortunately we don't have enough info to do this for anonymous RECORD
types; in that case, just assume it will work, and take the runtime failure
as before if it doesn't.

This patch might be a candidate for back-patching at some point, but
given the lack of complaints from the field, I'd rather just test it in
HEAD for now.

Note: most of the places touched in this patch will need further work
when we get around to supporting hashing of record types.

12 years agoTruncate id to <=44 characters
Peter Eisentraut [Fri, 3 Jun 2011 19:23:50 +0000 (22:23 +0300)]
Truncate id to <=44 characters

This is the original DocBook SGML limit, but apparently most
installations have changed it or ignore it, which is why few people
have run into this problem.

pointed out by Brendan Jurd

12 years agoSSI comment fixes and enhancements. Notably, document that the conflict-out
Heikki Linnakangas [Fri, 3 Jun 2011 09:45:42 +0000 (12:45 +0300)]
SSI comment fixes and enhancements. Notably, document that the conflict-out
flag actually means that the transaction has a conflict out to a transaction
that committed before the flagged transaction.

Kevin Grittner

12 years agoNeed to list getpeereid.c in .gitignore, too ...
Tom Lane [Fri, 3 Jun 2011 02:24:08 +0000 (22:24 -0400)]
Need to list getpeereid.c in .gitignore, too ...

12 years agoUse proper SGML doc entities rather than angle-brackets.
Bruce Momjian [Thu, 2 Jun 2011 23:32:41 +0000 (19:32 -0400)]
Use proper SGML doc entities rather than angle-brackets.

Marco Nenciarini

12 years agoHandle domains when checking for recursive inclusion of composite types.
Tom Lane [Thu, 2 Jun 2011 22:37:57 +0000 (18:37 -0400)]
Handle domains when checking for recursive inclusion of composite types.

We need this now because we allow domains over arrays, and we'll probably
allow domains over composites pretty soon, which makes the problem even
more obvious.

Although domains over arrays also exist in previous versions, this does not
need to be back-patched, because the coding used in older versions
successfully "looked through" domains over arrays.  The problem is exposed
by not treating a domain as having a typelem.

Problem identified by Noah Misch, though I did not use his patch, since
it would require additional work to handle domains over composites that
way.  This approach is more future-proof.

12 years agoLooks like we can't declare getpeereid on Windows anyway.
Tom Lane [Thu, 2 Jun 2011 21:27:30 +0000 (17:27 -0400)]
Looks like we can't declare getpeereid on Windows anyway.

... for lack of the uid_t and gid_t typedefs.  Per buildfarm.

12 years agolibpq needs its own copy of src/port/getpeereid.
Tom Lane [Thu, 2 Jun 2011 21:21:56 +0000 (17:21 -0400)]
libpq needs its own copy of src/port/getpeereid.

... on some platforms, anyway.  Per buildfarm.

12 years agoSort COMMENT synopsis and add more examples
Peter Eisentraut [Thu, 2 Jun 2011 21:17:45 +0000 (00:17 +0300)]
Sort COMMENT synopsis and add more examples

Josh Kupershmidt

12 years agoClean up after erroneous SELECT FOR UPDATE/SHARE on a sequence.
Tom Lane [Thu, 2 Jun 2011 19:30:56 +0000 (15:30 -0400)]
Clean up after erroneous SELECT FOR UPDATE/SHARE on a sequence.

My previous commit disallowed this operation, but did nothing about
cleaning up the damage if one had already been done.  With the operation
disallowed, it's okay to just forcibly clear xmax in a sequence's tuple,
since any value seen there could not represent a live transaction's lock.
So, any sequence-specific operation will repair the problem automatically,
whether or not the user has already seen "could not access status of
transaction" failures.

12 years agoFix vim-induced typo.
Robert Haas [Thu, 2 Jun 2011 19:08:47 +0000 (15:08 -0400)]
Fix vim-induced typo.

12 years agoDisallow SELECT FOR UPDATE/SHARE on sequences.
Tom Lane [Thu, 2 Jun 2011 18:46:15 +0000 (14:46 -0400)]
Disallow SELECT FOR UPDATE/SHARE on sequences.

We can't allow this because such an operation stores its transaction XID
into the sequence tuple's xmax.  Because VACUUM doesn't process sequences
(and we don't want it to start doing so), such an xmax value won't get
frozen, meaning it will eventually refer to nonexistent pg_clog storage,
and even wrap around completely.  Since the row lock is ignored by nextval
and setval, the usefulness of the operation is highly debatable anyway.
Per reports of trouble with pgpool 3.0, which had ill-advisedly started
using such commands as a form of locking.

In HEAD, also disallow SELECT FOR UPDATE/SHARE on toast tables.  Although
this does work safely given the current implementation, there seems no
good reason to allow it.  I refrained from changing that behavior in
back branches, however.

12 years agoTypo fix.
Tom Lane [Thu, 2 Jun 2011 17:36:48 +0000 (13:36 -0400)]
Typo fix.

12 years agoAvoid creating init fork for unlogged indexes when it already exists.
Robert Haas [Thu, 2 Jun 2011 17:28:52 +0000 (13:28 -0400)]
Avoid creating init fork for unlogged indexes when it already exists.

Report by Greg Sabino Mullane, diagnosis and preliminary patch by
Andres Freund, corrections by me.

12 years agoImplement getpeereid() as a src/port compatibility function.
Tom Lane [Thu, 2 Jun 2011 17:05:01 +0000 (13:05 -0400)]
Implement getpeereid() as a src/port compatibility function.

This unifies a bunch of ugly #ifdef's in one place.  Per discussion,
we only need this where HAVE_UNIX_SOCKETS, so no need to cover Windows.

Marko Kreen, some adjustment by Tom Lane

12 years agoAllow hash joins to be interrupted while searching hash table for match.
Tom Lane [Wed, 1 Jun 2011 21:01:59 +0000 (17:01 -0400)]
Allow hash joins to be interrupted while searching hash table for match.

Per experimentation with a recent example, in which unreasonable amounts
of time could elapse before the backend would respond to a query-cancel.

This might be something to back-patch, but the patch doesn't apply cleanly
because this code was rewritten for 9.1.  Given the lack of field
complaints I won't bother for now.

Cédric Villemain

12 years agoSome copy editing of the release notes
Peter Eisentraut [Wed, 1 Jun 2011 19:22:18 +0000 (22:22 +0300)]
Some copy editing of the release notes

12 years agoFurther improvements in pg_ctl's new wait-for-postmaster-start logic.
Tom Lane [Wed, 1 Jun 2011 17:09:07 +0000 (13:09 -0400)]
Further improvements in pg_ctl's new wait-for-postmaster-start logic.

Add a postmaster_is_alive() test to the wait loop, so that we stop waiting
if the postmaster dies without removing its pidfile.  Unfortunately this
only helps after the postmaster has created its pidfile, since until then
we don't know which PID to check.  But if it never does create the pidfile,
we can give up in a relatively short time, so this is a useful addition
in practice.  Per suggestion from Fujii Masao, though this doesn't look
very much like his patch.

In addition, improve pg_ctl's ability to cope with pre-existing pidfiles.
Such a file might or might not represent a live postmaster that is going to
block our postmaster from starting, but the previous code pre-judged the
situation and gave up waiting immediately.  Now, we will wait for up to 5
seconds to see if our postmaster overwrites such a file.  This issue
interacts with Fujii's patch because we would make the wrong conclusion
if we did the postmaster_is_alive() test with a pre-existing PID.

All of this could be improved if we rewrote start_postmaster() so that it
could report the child postmaster's PID, so that we'd know a-priori the
correct PID to test with postmaster_is_alive().  That looks like a bit too
much change for so late in the 9.1 development cycle, unfortunately.

12 years agoProtect GIST logic that assumes penalty values can't be negative.
Tom Lane [Tue, 31 May 2011 21:53:45 +0000 (17:53 -0400)]
Protect GIST logic that assumes penalty values can't be negative.

Apparently sane-looking penalty code might return small negative values,
for example because of roundoff error.  This will confuse places like
gistchoose().  Prevent problems by clamping negative penalty values to
zero.  (Just to be really sure, I also made it force NaNs to zero.)
Back-patch to all supported branches.

Alexander Korotkov

12 years agoRecode non-ASCII characters in source to UTF-8
Peter Eisentraut [Tue, 31 May 2011 20:10:05 +0000 (23:10 +0300)]
Recode non-ASCII characters in source to UTF-8

For consistency, have all non-ASCII characters from contributors'
names in the source be in UTF-8.  But remove some other more
gratuitous uses of non-ASCII characters.

12 years agoUse entities to encode non-ASCII characters in SGML documentation
Peter Eisentraut [Tue, 31 May 2011 19:32:31 +0000 (22:32 +0300)]
Use entities to encode non-ASCII characters in SGML documentation

This has already been the case for the most part; just some cases had
slipped through.

12 years agoReplace use of credential control messages with getsockopt(LOCAL_PEERCRED).
Tom Lane [Tue, 31 May 2011 20:10:46 +0000 (16:10 -0400)]
Replace use of credential control messages with getsockopt(LOCAL_PEERCRED).

It turns out the reason we hadn't found out about the portability issues
with our credential-control-message code is that almost no modern platforms
use that code at all; the ones that used to need it now offer getpeereid(),
which we choose first.  The last holdout was NetBSD, and they added
getpeereid() as of 5.0.  So far as I can tell, the only live platform on
which that code was being exercised was Debian/kFreeBSD, ie, FreeBSD kernel
with Linux userland --- since glibc doesn't provide getpeereid(), we fell
back to the control message code.  However, the FreeBSD kernel provides a
LOCAL_PEERCRED socket parameter that's functionally equivalent to Linux's
SO_PEERCRED.  That is both much simpler to use than control messages, and
superior because it doesn't require receiving a message from the other end
at just the right time.

Therefore, add code to use LOCAL_PEERCRED when necessary, and rip out all
the credential-control-message code in the backend.  (libpq still has such
code so that it can still talk to pre-9.1 servers ... but eventually we can
get rid of it there too.)  Clean up related autoconf probes, too.

This means that libpq's requirepeer parameter now works on exactly the same
platforms where the backend supports peer authentication, so adjust the
documentation accordingly.

12 years agoFix portability bugs in use of credentials control messages for peer auth.
Tom Lane [Mon, 30 May 2011 23:16:05 +0000 (19:16 -0400)]
Fix portability bugs in use of credentials control messages for peer auth.

Even though our existing code for handling credentials control messages has
been basically unchanged since 2001, it was fundamentally wrong: it did not
ensure proper alignment of the supplied buffer, and it was calculating
buffer sizes and message sizes incorrectly.  This led to failures on
platforms where alignment padding is relevant, for instance FreeBSD on
64-bit platforms, as seen in a recent Debian bug report passed on by
Martin Pitt (http://bugs.debian.org//cgi-bin/bugreport.cgi?bug=612888).

Rewrite to do the message-whacking using the macros specified in RFC 2292,
following a suggestion from Theo de Raadt in that thread.  Tested by me
on Debian/kFreeBSD-amd64; since OpenBSD and NetBSD document the identical
CMSG API, it should work there too.

Back-patch to all supported branches.

12 years agoFix VACUUM so that it always updates pg_class.reltuples/relpages.
Tom Lane [Mon, 30 May 2011 21:05:26 +0000 (17:05 -0400)]
Fix VACUUM so that it always updates pg_class.reltuples/relpages.

When we added the ability for vacuum to skip heap pages by consulting the
visibility map, we made it just not update the reltuples/relpages
statistics if it skipped any pages.  But this could leave us with extremely
out-of-date stats for a table that contains any unchanging areas,
especially for TOAST tables which never get processed by ANALYZE.  In
particular this could result in autovacuum making poor decisions about when
to process the table, as in recent report from Florian Helmberger.  And in
general it's a bad idea to not update the stats at all.  Instead, use the
previous values of reltuples/relpages as an estimate of the tuple density
in unvisited pages.  This approach results in a "moving average" estimate
of reltuples, which should converge to the correct value over multiple
VACUUM and ANALYZE cycles even when individual measurements aren't very
good.

This new method for updating reltuples is used by both VACUUM and ANALYZE,
with the result that we no longer need the grotty interconnections that
caused ANALYZE to not update the stats depending on what had happened
in the parent VACUUM command.

Also, fix the logic for skipping all-visible pages during VACUUM so that it
looks ahead rather than behind to decide what to do, as per a suggestion
from Greg Stark.  This eliminates useless scanning of all-visible pages at
the start of the relation or just after a not-all-visible page.  In
particular, the first few pages of the relation will not be invariably
included in the scanned pages, which seems to help in not overweighting
them in the reltuples estimate.

Back-patch to 8.4, where the visibility map was introduced.

12 years agoSuppress foreign data wrappers and foreign servers in partial dumps
Peter Eisentraut [Mon, 30 May 2011 20:34:34 +0000 (23:34 +0300)]
Suppress foreign data wrappers and foreign servers in partial dumps

This is consistent with the behavior of other global objects such as
languages and extensions.

Omitting foreign servers also omits the respective user mappings.

12 years agoDon't recommend upgrading to latest available Windows SDK
Magnus Hagander [Mon, 30 May 2011 18:46:14 +0000 (20:46 +0200)]
Don't recommend upgrading to latest available Windows SDK

We only support up to version 7.0, so don't recommend
upgrading past it. The rest of the documentation around this
was already updated, but one spot was missed.