]> granicus.if.org Git - postgresql/log
postgresql
13 years agoIn pg_upgrade, avoid dumping orphaned temporary tables. This makes the
Bruce Momjian [Tue, 16 Aug 2011 02:39:37 +0000 (22:39 -0400)]
In pg_upgrade, avoid dumping orphaned temporary tables.  This makes the
pg_upgrade schema matching pattern match pg_dump/pg_dumpall.

Fix for 9.0, 9.1, and 9.2.

13 years agoAdjust regression tests for error message change
Peter Eisentraut [Mon, 15 Aug 2011 14:27:10 +0000 (17:27 +0300)]
Adjust regression tests for error message change

13 years agoAdd "Reason code" prefix to internal SSI error messages
Peter Eisentraut [Mon, 15 Aug 2011 12:20:16 +0000 (15:20 +0300)]
Add "Reason code" prefix to internal SSI error messages

This makes it clearer that the error message is perhaps not supposed
to be understood by users, and it also makes it somewhat clearer that
it was not accidentally omitted from translation.

Idea from Heikki Linnakangas, except that we don't mark "Reason code"
for translation at this point, because that would make the
implementation too cumbersome.

13 years agoFix unsafe order of operations in foreign-table DDL commands.
Tom Lane [Sun, 14 Aug 2011 19:40:29 +0000 (15:40 -0400)]
Fix unsafe order of operations in foreign-table DDL commands.

When updating or deleting a system catalog tuple, it's necessary to acquire
RowExclusiveLock on the catalog before looking up the tuple; otherwise a
concurrent VACUUM FULL on the catalog might move the tuple to a different
TID before we can apply the update.  Coding patterns that find the tuple
via a table scan aren't at risk here, but when obtaining the tuple from a
catalog cache, correct ordering is important; and several routines in
foreigncmds.c got it wrong.  Noted while running the regression tests in
parallel with VACUUM FULL of assorted system catalogs.

For consistency I moved all the heap_open calls to the starts of their
functions, including a couple for which there was no actual bug.

Back-patch to 8.4 where foreigncmds.c was added.

13 years agoMessage style improvements
Peter Eisentraut [Sun, 14 Aug 2011 18:03:08 +0000 (21:03 +0300)]
Message style improvements

13 years agoFix typo
Peter Eisentraut [Sun, 14 Aug 2011 07:40:50 +0000 (10:40 +0300)]
Fix typo

13 years agoFix incorrect timeout handling during initial authentication transaction.
Tom Lane [Sat, 13 Aug 2011 21:52:24 +0000 (17:52 -0400)]
Fix incorrect timeout handling during initial authentication transaction.

The statement start timestamp was not set before initiating the transaction
that is used to look up client authentication information in pg_authid.
In consequence, enable_sig_alarm computed a wrong value (far in the past)
for statement_fin_time.  That didn't have any immediate effect, because the
timeout alarm was set without reference to statement_fin_time; but if we
subsequently blocked on a lock for a short time, CheckStatementTimeout
would consult the bogus value when we cancelled the lock timeout wait,
and then conclude we'd timed out, leading to immediate failure of the
connection attempt.  Thus an innocent "vacuum full pg_authid" would cause
failures of concurrent connection attempts.  Noted while testing other,
more serious consequences of vacuum full on system catalogs.

We should set the statement timestamp before StartTransactionCommand(),
so that the transaction start timestamp is also valid.  I'm not sure if
there are any non-cosmetic effects of it not being valid, but the xact
timestamp is at least sent to the statistics machinery.

Back-patch to 9.0.  Before that, the client authentication timeout was done
outside any transaction and did not depend on this state to be valid.

13 years agoAdd major features list and introductory text for 9.1 release notes.
Bruce Momjian [Thu, 11 Aug 2011 20:36:58 +0000 (16:36 -0400)]
Add major features list and introductory text for 9.1 release notes.

Backpatch to 9.1, obviously.

13 years agoUnbreak legacy syntax "COMMENT ON RULE x IS y", with no relation name.
Robert Haas [Thu, 11 Aug 2011 15:23:51 +0000 (11:23 -0400)]
Unbreak legacy syntax "COMMENT ON RULE x IS y", with no relation name.

check_object_ownership() isn't happy about the null relation pointer.
We could fix it there, but this seems more future-proof.

13 years agoBack-patch assorted latch-related fixes.
Tom Lane [Wed, 10 Aug 2011 16:20:45 +0000 (12:20 -0400)]
Back-patch assorted latch-related fixes.

Fix a whole bunch of signal handlers that had been hacked to do things that
might change errno, without adding the necessary save/restore logic for
errno.  Also make some minor fixes in unix_latch.c, and clean up bizarre
and unsafe scheme for disowning the process's latch.  While at it, rename
the PGPROC latch field to procLatch for consistency with 9.2.

Issues noted while reviewing a patch by Peter Geoghegan.

13 years agoMeasure WaitLatch's timeout parameter in milliseconds, not microseconds.
Tom Lane [Tue, 9 Aug 2011 22:52:35 +0000 (18:52 -0400)]
Measure WaitLatch's timeout parameter in milliseconds, not microseconds.

The original definition had the problem that timeouts exceeding about 2100
seconds couldn't be specified on 32-bit machines.  Milliseconds seem like
sufficient resolution, and finer grain than that would be fantasy anyway
on many platforms.

Back-patch to 9.1 so that this aspect of the latch API won't change between
9.1 and later releases.

Peter Geoghegan

13 years agoDocumentation improvement and minor code cleanups for the latch facility.
Tom Lane [Tue, 9 Aug 2011 19:30:51 +0000 (15:30 -0400)]
Documentation improvement and minor code cleanups for the latch facility.

Improve the documentation around weak-memory-ordering risks, and do a pass
of general editorialization on the comments in the latch code.  Make the
Windows latch code more like the Unix latch code where feasible; in
particular provide the same Assert checks in both implementations.
Fix poorly-placed WaitLatch call in syncrep.c.

This patch resolves, for the moment, concerns around weak-memory-ordering
bugs in latch-related code: we have documented the restrictions and checked
that existing calls meet them.  In 9.2 I hope that we will install suitable
memory barrier instructions in SetLatch/ResetLatch, so that their callers
don't need to be quite so careful.

13 years agoFix nested PlaceHolderVar expressions that appear only in targetlists.
Tom Lane [Tue, 9 Aug 2011 04:48:58 +0000 (00:48 -0400)]
Fix nested PlaceHolderVar expressions that appear only in targetlists.

A PlaceHolderVar's expression might contain another, lower-level
PlaceHolderVar.  If the outer PlaceHolderVar is used, the inner one
certainly will be also, and so we have to make sure that both of them get
into the placeholder_list with correct ph_may_need values during the
initial pre-scan of the query (before deconstruct_jointree starts).
We did this correctly for PlaceHolderVars appearing in the query quals,
but overlooked the issue for those appearing in the top-level targetlist;
with the result that nested placeholders referenced only in the targetlist
did not work correctly, as illustrated in bug #6154.

While at it, add some error checking to find_placeholder_info to ensure
that we don't try to create new placeholders after it's too late to do so;
they have to all be created before deconstruct_jointree starts.

Back-patch to 8.4 where the PlaceHolderVar mechanism was introduced.

13 years agoAdd "Compatibility" section to ALTER EXTENSION reference page
Peter Eisentraut [Sun, 7 Aug 2011 19:15:38 +0000 (22:15 +0300)]
Add "Compatibility" section to ALTER EXTENSION reference page

Almost all other pages have one; this one must have been forgotten.

13 years agoRemove whitespace from end of lines
Peter Eisentraut [Sun, 7 Aug 2011 13:11:55 +0000 (16:11 +0300)]
Remove whitespace from end of lines

13 years agoRename "Example" sections to "Examples" in dblink chapter
Peter Eisentraut [Sun, 7 Aug 2011 12:51:04 +0000 (15:51 +0300)]
Rename "Example" sections to "Examples" in dblink chapter

For consistency with other man pages.

13 years agoFix a whitespace issue with the man pages
Peter Eisentraut [Sun, 7 Aug 2011 07:49:45 +0000 (10:49 +0300)]
Fix a whitespace issue with the man pages

There is what may actually be a mistake in our markup.  The problem is
in a situation like

<para>
 <command>FOO</command> is ...

there is strictly speaking a line break before "FOO".  In the HTML
output, this does not appear to be a problem, but in the man page
output, this shows up, so you get double blank lines at odd places.

So far, we have attempted to work around this with an XSL hack, but
that causes other problems, such as creating run-ins in places like

<acronym>SQL</acronym> <command>COPY</command>

So fix the problem properly by removing the extra whitespace.  I only
fixed the problems that affect the man page output, not all the
places.

13 years agoClean up ill-advised attempt to invent a private set of Node tags.
Tom Lane [Sat, 6 Aug 2011 18:53:59 +0000 (14:53 -0400)]
Clean up ill-advised attempt to invent a private set of Node tags.

Somebody thought it'd be cute to invent a set of Node tag numbers that were
defined independently of, and indeed conflicting with, the main tag-number
list.  While this accidentally failed to fail so far, it would certainly
lead to trouble as soon as anyone wanted to, say, apply copyObject to these
node types.  Clang was already complaining about the use of makeNode on
these tags, and I think quite rightly so.  Fix by pushing these node
definitions into the mainstream, including putting replnodes.h where it
belongs.

13 years agoFix thinko in documentation of local_preload_libraries.
Tom Lane [Sat, 6 Aug 2011 01:18:02 +0000 (21:18 -0400)]
Fix thinko in documentation of local_preload_libraries.

Somebody added a cross-reference to shared_preload_libraries, but wrote the
wrong variable name when they did it (and didn't bother to make it a link
either).

Spotted by Christoph Anton Mitterer.

13 years agoReduce PG_SYSLOG_LIMIT to 900 bytes.
Tom Lane [Sat, 6 Aug 2011 01:02:31 +0000 (21:02 -0400)]
Reduce PG_SYSLOG_LIMIT to 900 bytes.

The previous limit of 1024 was set on the assumption that all modern syslog
implementations have line length limits of 2KB or so.  However, this is
false, as at least Solaris and sysklogd truncate at only 1KB.  900 seems
to leave enough room for the max likely length of the tacked-on prefixes,
so let's go with that.

As with the previous change, it doesn't seem wise to back-patch this into
already-released branches; but it should be OK to sneak it into 9.1.

Noah Misch

13 years agoFix markup for recent wal_level clarification.
Bruce Momjian [Thu, 4 Aug 2011 19:02:02 +0000 (15:02 -0400)]
Fix markup for recent wal_level clarification.

Backpatch to 9.1 and 9.0.

13 years agoIn documentaiton, clarify which commands have reduced WAL volume for
Bruce Momjian [Thu, 4 Aug 2011 16:06:53 +0000 (12:06 -0400)]
In documentaiton, clarify which commands have reduced WAL volume for
wal_level = minimum.

Backpatch to 9.1 and 9.0.

13 years agoMove CheckRecoveryConflictDeadlock() call to a safer place.
Tom Lane [Tue, 2 Aug 2011 19:16:37 +0000 (15:16 -0400)]
Move CheckRecoveryConflictDeadlock() call to a safer place.

This kluge was inserted in a spot apparently chosen at random: the lock
manager's state is not yet fully set up for the wait, and in particular
LockWaitCancel hasn't been armed by setting lockAwaited, so the ProcLock
will not get cleaned up if the ereport is thrown.  This seems to not cause
any observable problem in trivial test cases, because LockReleaseAll will
silently clean up the debris; but I was able to cause failures with tests
involving subtransactions.

Fixes breakage induced by commit c85c941470efc44494fd7a5f426ee85fc65c268c.
Back-patch to all affected branches.

13 years agoFix incorrect initialization of ProcGlobal->startupBufferPinWaitBufId.
Tom Lane [Tue, 2 Aug 2011 17:24:00 +0000 (13:24 -0400)]
Fix incorrect initialization of ProcGlobal->startupBufferPinWaitBufId.

It was initialized in the wrong place and to the wrong value.  With bad
luck this could result in incorrect query-cancellation failures in hot
standby sessions, should a HS backend be holding pin on buffer number 1
while trying to acquire a lock.

13 years agoAvoid integer overflow when LIMIT + OFFSET >= 2^63.
Heikki Linnakangas [Tue, 2 Aug 2011 07:47:17 +0000 (10:47 +0300)]
Avoid integer overflow when LIMIT + OFFSET >= 2^63.

This fixes bug #6139 reported by Hitoshi Harada.

13 years agoAdd host name resolution information to pg_hba.conf error messages
Peter Eisentraut [Sun, 31 Jul 2011 15:03:43 +0000 (18:03 +0300)]
Add host name resolution information to pg_hba.conf error messages

This is to be able to analyze issues with host names in pg_hba.conf.

13 years agoFix pg_update to properly test for the data directory's existence on
Bruce Momjian [Sat, 30 Jul 2011 05:50:19 +0000 (01:50 -0400)]
Fix pg_update to properly test for the data directory's existence on
Win32.

Backpatch to 9.1.

13 years agoFix pg_restore's direct-to-database mode for standard_conforming_strings.
Tom Lane [Thu, 28 Jul 2011 18:07:04 +0000 (14:07 -0400)]
Fix pg_restore's direct-to-database mode for standard_conforming_strings.

pg_backup_db.c contained a mini SQL lexer with which it tried to identify
boundaries between SQL commands, but that code was not designed to cope
with standard_conforming_strings, and would get the wrong answer if a
backslash immediately precedes a closing single quote in such a string,
as per report from Julian Mehnle.  The bug only affects direct-to-database
restores from archive files made with standard_conforming_strings = on.

Rather than complicating the code some more to try to fix that, let's just
rip it all out.  The only reason it was needed was to cope with COPY data
embedded into ordinary archive entries, which was a layout that was used
only for about the first three weeks of the archive format's existence,
and never in any production release of pg_dump.  Instead, just rely on the
archive file layout to tell us whether we're printing COPY data or not.

This bug represents a data corruption hazard in all releases in which
standard_conforming_strings can be turned on, ie 8.2 and later, so
back-patch to all supported branches.

13 years agoMinor message style adjustment
Peter Eisentraut [Wed, 27 Jul 2011 20:54:46 +0000 (23:54 +0300)]
Minor message style adjustment

13 years agoFix typo.
Robert Haas [Wed, 27 Jul 2011 15:20:07 +0000 (11:20 -0400)]
Fix typo.

Noted by Josh Kupershmidt.

13 years agoAdd missing newlines at end of error messages
Peter Eisentraut [Tue, 26 Jul 2011 20:27:40 +0000 (23:27 +0300)]
Add missing newlines at end of error messages

13 years agoClarify which relkinds accept column comments.
Robert Haas [Tue, 26 Jul 2011 13:34:55 +0000 (09:34 -0400)]
Clarify which relkinds accept column comments.

Per discussion with Josh Kupershmidt.

13 years agoDon't build replacement getpeereid function on mingw.
Andrew Dunstan [Tue, 26 Jul 2011 03:46:52 +0000 (23:46 -0400)]
Don't build replacement getpeereid function on mingw.

Windows doesn't have Unix sockets, so it's not needed, and moreover causes compile warnings.

13 years agoImprovements to SQL/MED documentation.
Robert Haas [Mon, 25 Jul 2011 13:37:06 +0000 (09:37 -0400)]
Improvements to SQL/MED documentation.

Laurenz Albe, somewhat modified by me.

13 years agoFix previous patch so it also works if not USE_SSL (mea culpa).
Tom Lane [Mon, 25 Jul 2011 03:29:10 +0000 (23:29 -0400)]
Fix previous patch so it also works if not USE_SSL (mea culpa).

On balance, the need to cover this case changes my mind in favor of pushing
all error-message generation duties into the two fe-secure.c routines.
So do it that way.

13 years agoImprove libpq's error reporting for SSL failures.
Tom Lane [Sun, 24 Jul 2011 20:29:13 +0000 (16:29 -0400)]
Improve libpq's error reporting for SSL failures.

In many cases, pqsecure_read/pqsecure_write set up useful error messages,
which were then overwritten with useless ones by their callers.  Fix this
by defining the responsibility to set an error message to be entirely that
of the lower-level function when using SSL.

Back-patch to 8.3; the code is too different in 8.2 to be worth the
trouble.

13 years agoUse OpenSSL's SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag.
Tom Lane [Sun, 24 Jul 2011 19:17:56 +0000 (15:17 -0400)]
Use OpenSSL's SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag.

This disables an entirely unnecessary "sanity check" that causes failures
in nonblocking mode, because OpenSSL complains if we move or compact the
write buffer.  The only actual requirement is that we not modify pending
data once we've attempted to send it, which we don't.  Per testing and
research by Martin Pihlak, though this fix is a lot simpler than his patch.

I put the same change into the backend, although it's less clear whether
it's necessary there.  We do use nonblock mode in some situations in
streaming replication, so seems best to keep the same behavior in the
backend as in libpq.

Back-patch to all supported releases.

13 years agoIn pg_upgrade on Windows, check if the directory is writable by actually
Bruce Momjian [Sun, 24 Jul 2011 05:43:01 +0000 (01:43 -0400)]
In pg_upgrade on Windows, check if the directory is writable by actually
creating and removing a file because access() doesn't work on that
platform.

Backpatch to 9.1 where this check was added.

13 years agoUnbreak Windows builds broken by EDITOR_LINENUMBER_ARG change.
Andrew Dunstan [Sat, 23 Jul 2011 23:33:04 +0000 (19:33 -0400)]
Unbreak Windows builds broken by EDITOR_LINENUMBER_ARG change.

13 years agoChange EDITOR_LINENUMBER_SWITCH to an environment variable
Peter Eisentraut [Sat, 23 Jul 2011 21:25:29 +0000 (00:25 +0300)]
Change EDITOR_LINENUMBER_SWITCH to an environment variable

Also change "switch" to "arg" because "switch" is a bit of a sloppy
term.  So the environment variable is called
PSQL_EDITOR_LINENUMBER_ARG.  Set "+" as hardcoded default value on
Unix (since "vi" is the hardcoded default editor), so many users won't
have to configure this at all.  Move the documentation around a bit to
centralize the editor configuration under environment variables,
rather than repeating bits of it under every backslash command that
invokes an editor.

13 years agoRethink behavior of CREATE OR REPLACE during CREATE EXTENSION.
Tom Lane [Sat, 23 Jul 2011 20:59:49 +0000 (16:59 -0400)]
Rethink behavior of CREATE OR REPLACE during CREATE EXTENSION.

The original implementation simply did nothing when replacing an existing
object during CREATE EXTENSION.  The folly of this was exposed by a report
from Marc Munro: if the existing object belongs to another extension, we
are left in an inconsistent state.  We should insist that the object does
not belong to another extension, and then add it to the current extension
if not already a member.

13 years agoUnbreak unlogged tables.
Robert Haas [Fri, 22 Jul 2011 20:15:43 +0000 (16:15 -0400)]
Unbreak unlogged tables.

I broke this in commit 5da79169d3e9f0fab47da03318c44075b3f824c5, which
was obviously insufficiently well tested.  Add some regression tests
in the hope of making future slip-ups more likely to be noticed.

13 years agoFix PQsetvalue() to avoid possible crash when adding a new tuple.
Tom Lane [Thu, 21 Jul 2011 16:24:14 +0000 (12:24 -0400)]
Fix PQsetvalue() to avoid possible crash when adding a new tuple.

PQsetvalue unnecessarily duplicated the logic in pqAddTuple, and didn't
duplicate it exactly either --- pqAddTuple does not care what is in the
tuple-pointer array positions beyond the last valid entry, whereas the
code in PQsetvalue assumed such positions would contain NULL.  This led
to possible crashes if PQsetvalue was applied to a PGresult that had
previously been enlarged with pqAddTuple, for instance one built from a
server query.  Fix by relying on pqAddTuple instead of duplicating logic,
and not assuming anything about the contents of res->tuples[res->ntups].

Back-patch to 8.4, where PQsetvalue was introduced.

Andrew Chernow

13 years agoIn pg_upgrade, fix the -l/log option to work on Windows.
Bruce Momjian [Wed, 20 Jul 2011 22:31:07 +0000 (18:31 -0400)]
In pg_upgrade, fix the -l/log option to work on Windows.

Also, double-quote the log file name in all places, to allow (on all
platforms) log file names with spaces.

Back patch to 9.0 and 9.1.

13 years agoImprove sepgsql and SECURITY LABEL documentation.
Robert Haas [Wed, 20 Jul 2011 13:22:57 +0000 (09:22 -0400)]
Improve sepgsql and SECURITY LABEL documentation.

KaiGai Kohei, based on feedback from Yeb Havinga, with some
corrections by me.

13 years agoMinor improvement to pg_seclabel documentation.
Robert Haas [Wed, 20 Jul 2011 13:12:42 +0000 (09:12 -0400)]
Minor improvement to pg_seclabel documentation.

This is a bit more consistent with the way pg_description is
documented, and also include a useful cross-link.

13 years agoFix typo
Peter Eisentraut [Tue, 19 Jul 2011 05:02:34 +0000 (08:02 +0300)]
Fix typo

13 years agoChange debug message from ereport to elog
Peter Eisentraut [Tue, 19 Jul 2011 04:50:10 +0000 (07:50 +0300)]
Change debug message from ereport to elog

13 years agoAdapted expected result for latest change to ecpglib.
Michael Meskes [Mon, 18 Jul 2011 16:56:15 +0000 (18:56 +0200)]
Adapted expected result for latest change to ecpglib.

13 years agoMade ecpglib write double with a precision of 15 digits.
Michael Meskes [Mon, 18 Jul 2011 14:25:27 +0000 (16:25 +0200)]
Made ecpglib write double with a precision of 15 digits.

Patch originally by Akira Kurosawa <kurosawa-akira@mxc.nes.nec.co.jp>.

13 years agoRemove claim that the project is not represented in the SQL working group
Peter Eisentraut [Mon, 18 Jul 2011 04:30:00 +0000 (07:30 +0300)]
Remove claim that the project is not represented in the SQL working group

We have a few people involved there now.

13 years agoNote that information_schema.sql_languages was removed in SQL:2008
Peter Eisentraut [Mon, 18 Jul 2011 04:26:30 +0000 (07:26 +0300)]
Note that information_schema.sql_languages was removed in SQL:2008

13 years agoReplace errdetail("%s", ...) with errdetail_internal("%s", ...).
Tom Lane [Sat, 16 Jul 2011 18:21:24 +0000 (14:21 -0400)]
Replace errdetail("%s", ...) with errdetail_internal("%s", ...).

There may be some other places where we should use errdetail_internal,
but they'll have to be evaluated case-by-case.  This commit just hits
a bunch of places where invoking gettext is obviously a waste of cycles.

13 years agoUse errdetail_internal() for SSI transaction cancellation details.
Tom Lane [Sat, 16 Jul 2011 17:49:44 +0000 (13:49 -0400)]
Use errdetail_internal() for SSI transaction cancellation details.

Per discussion, these seem too technical to be worth translating.

Kevin Grittner

13 years agoAdd an errdetail_internal() ereport auxiliary routine.
Tom Lane [Sat, 16 Jul 2011 17:41:48 +0000 (13:41 -0400)]
Add an errdetail_internal() ereport auxiliary routine.

This function supports untranslated detail messages, in the same way that
errmsg_internal supports untranslated primary messages.  We've needed this
for some time IMO, but discussion of some cases in the SSI code provided
the impetus to actually add it.

Kevin Grittner, with minor adjustments by me

13 years agoFix SSPI login when multiple roundtrips are required
Magnus Hagander [Sat, 16 Jul 2011 17:58:53 +0000 (19:58 +0200)]
Fix SSPI login when multiple roundtrips are required

This fixes SSPI login failures showing "The function
requested is not supported", often showing up when connecting
to localhost. The reason was not properly updating the SSPI
handle when multiple roundtrips were required to complete the
authentication sequence.

Report and analysis by Ahmed Shinwari, patch by Magnus Hagander

13 years agoFix two ancient bugs in GiST code to re-find a parent after page split:
Heikki Linnakangas [Fri, 15 Jul 2011 07:54:56 +0000 (10:54 +0300)]
Fix two ancient bugs in GiST code to re-find a parent after page split:

First, when following a right-link, we incorrectly marked the current page
as the parent of the right sibling. In reality, the parent of the right page
is the same as the parent of the current page (or some page to the right of
it, gistFindCorrectParent() will sort that out).

Secondly, when we follow a right-link, we must prepend, not append, the right
page to our list of pages to visit. That's because we assume that once we
hit a leaf page in the list, all the rest are leaf pages too, and give up.

To hit these bugs, you need concurrent actions and several unlucky accidents.
Another backend must split the root page, while you're in process of
splitting a lower-level page. Furthermore, while you scan the internal nodes
to re-find the parent, another backend needs to again split some more internal
pages. Even then, the bugs don't necessarily manifest as user-visible errors
or index corruption.

While we're at it, make the error reporting a bit better if gistFindPath()
fails to re-find the parent. It used to be an assertion, but an elog() seems
more appropriate.

Backpatch to all supported branches.

13 years agoIn planner, don't assume that empty parent tables aren't really empty.
Tom Lane [Thu, 14 Jul 2011 21:30:57 +0000 (17:30 -0400)]
In planner, don't assume that empty parent tables aren't really empty.

There's a heuristic in estimate_rel_size() to clamp the minimum size
estimate for a table to 10 pages, unless we can see that vacuum or analyze
has been run (and set relpages to something nonzero, so this will always
happen for a table that's actually empty).  However, it would be better
not to do this for inheritance parent tables, which very commonly are
really empty and can be expected to stay that way.  Per discussion of a
recent pgsql-performance report from Anish Kejariwal.  Also prevent it
from happening for indexes (although this is more in the nature of
documentation, since CREATE INDEX normally initializes relpages to
something nonzero anyway).

Back-patch to 9.0, because the ability to collect statistics across a
whole inheritance tree has improved the planner's estimates to the point
where this relatively small error makes a significant difference.  In the
referenced report, merge or hash joins were incorrectly estimated as
cheaper than a nestloop with inner indexscan on the inherited table.
That was less likely before 9.0 because the lack of inherited stats would
have resulted in a default (and rather pessimistic) estimate of the cost
of a merge or hash join.

13 years agoSmall update on suggested startup file locations
Peter Eisentraut [Thu, 14 Jul 2011 16:07:39 +0000 (19:07 +0300)]
Small update on suggested startup file locations

Debian/Ubuntu don't have a /etc/rc.d/ directory, so add some
alternative names as suggestions.

13 years agoRemove README.mb.big5 and README.mb.jp
Peter Eisentraut [Thu, 14 Jul 2011 15:28:07 +0000 (18:28 +0300)]
Remove README.mb.big5 and README.mb.jp

They were wildly outdated.

13 years agoMark collation-related information schema columns as not implemented
Peter Eisentraut [Tue, 12 Jul 2011 22:30:35 +0000 (01:30 +0300)]
Mark collation-related information schema columns as not implemented
rather than not applicable.  They have already been implemented in
9.2.

13 years agoAvoid listing ungrouped Vars in the targetlist of Agg-underneath-Window.
Tom Lane [Tue, 12 Jul 2011 22:24:53 +0000 (18:24 -0400)]
Avoid listing ungrouped Vars in the targetlist of Agg-underneath-Window.

Regular aggregate functions in combination with, or within the arguments
of, window functions are OK per spec; they have the semantics that the
aggregate output rows are computed and then we run the window functions
over that row set.  (Thus, this combination is not really useful unless
there's a GROUP BY so that more than one aggregate output row is possible.)
The case without GROUP BY could fail, as recently reported by Jeff Davis,
because sloppy construction of the Agg node's targetlist resulted in extra
references to possibly-ungrouped Vars appearing outside the aggregate
function calls themselves.  See the added regression test case for an
example.

Fixing this requires modifying the API of flatten_tlist and its underlying
function pull_var_clause.  I chose to make pull_var_clause's API for
aggregates identical to what it was already doing for placeholders, since
the useful behaviors turn out to be the same (error, report node as-is, or
recurse into it).  I also tightened the error checking in this area a bit:
if it was ever valid to see an uplevel Var, Aggref, or PlaceHolderVar here,
that was a long time ago, so complain instead of ignoring them.

Backpatch into 9.1.  The failure exists in 8.4 and 9.0 as well, but seeing
that it only occurs in a basically-useless corner case, it doesn't seem
worth the risks of changing a function API in a minor release.  There might
be third-party code using pull_var_clause.

13 years agoFix another oversight in logging of changes in postgresql.conf settings.
Tom Lane [Fri, 8 Jul 2011 21:03:06 +0000 (17:03 -0400)]
Fix another oversight in logging of changes in postgresql.conf settings.

We were using GetConfigOption to collect the old value of each setting,
overlooking the possibility that it didn't exist yet.  This does happen
in the case of adding a new entry within a custom variable class, as
exhibited in bug #6097 from Maxim Boguk.

To fix, add a missing_ok parameter to GetConfigOption, but only in 9.1
and HEAD --- it seems possible that some third-party code is using that
function, so changing its API in a minor release would cause problems.
In 9.0, create a near-duplicate function instead.

13 years agoFix one overflow and one signedness error, caused by the patch to calculate
Heikki Linnakangas [Fri, 8 Jul 2011 14:28:27 +0000 (17:28 +0300)]
Fix one overflow and one signedness error, caused by the patch to calculate
OLDSERXID_MAX_PAGE based on BLCKSZ. MSVC compiler warned about these.

13 years agoAdd item about Clang support to 9.1 release notes
Peter Eisentraut [Fri, 8 Jul 2011 14:04:49 +0000 (17:04 +0300)]
Add item about Clang support to 9.1 release notes

13 years agoMessage style improvements
Peter Eisentraut [Fri, 8 Jul 2011 04:37:04 +0000 (07:37 +0300)]
Message style improvements

13 years agoTag 9.1beta3. REL9_1_BETA3
Tom Lane [Fri, 8 Jul 2011 00:12:33 +0000 (20:12 -0400)]
Tag 9.1beta3.

13 years agoUpdate examples for string-related functions.
Tom Lane [Thu, 7 Jul 2011 23:34:24 +0000 (19:34 -0400)]
Update examples for string-related functions.

In the example for decode(), show the bytea result in hex format,
since that's now the default.  Use an E'' string in the example for
quote_literal(), so that it works regardless of the
standard_conforming_strings setting.  On the functions-for-binary-strings
page, leave the examples as-is for readability, but add a note pointing out
that they are shown in escape format.  Per comments from Thom Brown.

Also, improve the description for encode() and decode() a tad.

Backpatch to 9.0, where bytea_output was introduced.

13 years agoUpdate 9.1 release notes to reflect commits through today.
Tom Lane [Thu, 7 Jul 2011 21:55:14 +0000 (17:55 -0400)]
Update 9.1 release notes to reflect commits through today.

13 years agoThere's a small window wherein a transaction is committed but not yet
Heikki Linnakangas [Thu, 7 Jul 2011 21:36:30 +0000 (00:36 +0300)]
There's a small window wherein a transaction is committed but not yet
on the finished list, and we shouldn't flag it as a potential conflict
if so. We can also skip adding a doomed transaction to the list of
possible conflicts because we know it won't commit.

Dan Ports and Kevin Grittner.

13 years agoSSI has a race condition, where the order of commit sequence numbers of
Heikki Linnakangas [Thu, 7 Jul 2011 19:35:09 +0000 (22:35 +0300)]
SSI has a race condition, where the order of commit sequence numbers of
transactions might not match the order the work done in those transactions
become visible to others. The logic in SSI, however, assumed that it does.
Fix that by having two sequence numbers for each serializable transaction,
one taken before a transaction becomes visible to others, and one after it.
This is easier than trying to make the the transition totally atomic, which
would require holding ProcArrayLock and SerializableXactHashLock at the same
time. By using prepareSeqNo instead of commitSeqNo in a few places where
commit sequence numbers are compared, we can make those comparisons err on
the safe side when we don't know for sure which committed first.

Per analysis by Kevin Grittner and Dan Ports, but this approach to fix it
is different from the original patch.

13 years agoFix use of unportable %m format
Peter Eisentraut [Thu, 7 Jul 2011 18:21:57 +0000 (21:21 +0300)]
Fix use of unportable %m format

13 years agoReclassify replication-related GUC variables as "master" and "standby".
Tom Lane [Thu, 7 Jul 2011 19:10:32 +0000 (15:10 -0400)]
Reclassify replication-related GUC variables as "master" and "standby".

Per discussion, this structure seems more understandable than what was
there before.  Make config.sgml and postgresql.conf.sample agree.

In passing do a bit of editorial work on the variable descriptions.

13 years agoAdjust OLDSERXID_MAX_PAGE based on BLCKSZ.
Robert Haas [Thu, 7 Jul 2011 19:05:21 +0000 (15:05 -0400)]
Adjust OLDSERXID_MAX_PAGE based on BLCKSZ.

The value when BLCKSZ = 8192 is unchanged, but with larger-than-normal
block sizes we might need to crank things back a bit, as we'll have
more entries per page than normal in that case.

Kevin Grittner

13 years agoFinish disabling reduced-lock-levels-for-DDL feature.
Tom Lane [Thu, 7 Jul 2011 17:14:46 +0000 (13:14 -0400)]
Finish disabling reduced-lock-levels-for-DDL feature.

Previous patch only covered the ALTER TABLE changes, not changes in other
commands; and it neglected to revert the documentation changes.

13 years agoFix a bug with SSI and prepared transactions:
Heikki Linnakangas [Thu, 7 Jul 2011 15:04:37 +0000 (18:04 +0300)]
Fix a bug with SSI and prepared transactions:

If there's a dangerous structure T0 ---> T1 ---> T2, and T2 commits first,
we need to abort something. If T2 commits before both conflicts appear,
then it should be caught by OnConflict_CheckForSerializationFailure. If
both conflicts appear before T2 commits, it should be caught by
PreCommit_CheckForSerializationFailure. But that is actually run when
T2 *prepares*. Fix that in OnConflict_CheckForSerializationFailure, by
treating a prepared T2 as if it committed already.

This is mostly a problem for prepared transactions, which are in prepared
state for some time, but also for regular transactions because they also go
through the prepared state in the SSI code for a short moment when they're
committed.

Kevin Grittner and Dan Ports

13 years agoRemove assumptions that not-equals operators cannot be in any opclass.
Tom Lane [Wed, 6 Jul 2011 18:53:16 +0000 (14:53 -0400)]
Remove assumptions that not-equals operators cannot be in any opclass.

get_op_btree_interpretation assumed this in order to save some duplication
of code, but it's not true in general anymore because we added <> support
to btree_gist.  (We still assume it for btree opclasses, though.)

Also, essentially the same logic was baked into predtest.c.  Get rid of
that duplication by generalizing get_op_btree_interpretation so that it
can be used by predtest.c.

Per bug report from Denis de Bernardy and investigation by Jeff Davis,
though I didn't use Jeff's patch exactly as-is.

Back-patch to 9.1; we do not support this usage before that.

13 years agoMake the file_fdw validator check that a filename option has been provided.
Tom Lane [Tue, 5 Jul 2011 22:46:03 +0000 (18:46 -0400)]
Make the file_fdw validator check that a filename option has been provided.

This was already a runtime failure condition, but it's better to check
at validation time if possible.  Lightly modified version of a patch
by Shigeru Hanada.

13 years agoCall FDW validator functions even when the options list is empty.
Tom Lane [Tue, 5 Jul 2011 22:21:12 +0000 (18:21 -0400)]
Call FDW validator functions even when the options list is empty.

This is useful since a validator might want to require certain options
to be provided.  The passed array is an empty text array in this case.

Per suggestion by Laurenz Albe, though this is not quite his patch.

13 years agoMessage style improvements of errmsg_internal() calls
Peter Eisentraut [Tue, 5 Jul 2011 19:56:55 +0000 (22:56 +0300)]
Message style improvements of errmsg_internal() calls

13 years agoRestructure foreign data wrapper chapter so it has more than one section.
Tom Lane [Tue, 5 Jul 2011 19:54:00 +0000 (15:54 -0400)]
Restructure foreign data wrapper chapter so it has more than one section.

As noted by Laurenz Albe, our SGML tools deal rather oddly with chapters
having just one <sect1>.  Perhaps the tooling could be fixed, but really
the design of this chapter's introduction is pretty bogus anyhow.  Split
it into a true introduction and a <sect1> about the FDW functions, so
that it reads better and dodges the lack-of-a-chapter-TOC problem.

13 years agoPostgres -> PostgreSQL in error message
Peter Eisentraut [Tue, 5 Jul 2011 19:32:12 +0000 (22:32 +0300)]
Postgres -> PostgreSQL in error message

13 years agoImprove documentation about foreign data wrapper validator functions.
Tom Lane [Tue, 5 Jul 2011 19:38:18 +0000 (15:38 -0400)]
Improve documentation about foreign data wrapper validator functions.

Modified version of a patch by Shigeru Hanada.

13 years agoFix psql's counting of script file line numbers during COPY.
Tom Lane [Tue, 5 Jul 2011 16:04:40 +0000 (12:04 -0400)]
Fix psql's counting of script file line numbers during COPY.

handleCopyIn incremented pset.lineno for each line of COPY data read from
a file.  This is correct when reading from the current script file (i.e.,
we are doing COPY FROM STDIN followed by in-line data), but it's wrong if
the data is coming from some other file.  Per bug #6083 from Steve Haslam.
Back-patch to all supported versions.

13 years agoFix typo in sslmode documentation
Magnus Hagander [Tue, 5 Jul 2011 07:45:19 +0000 (09:45 +0200)]
Fix typo in sslmode documentation

Per bug #6089, noted by Sidney Cadot

13 years agoMessage style tweaks
Peter Eisentraut [Mon, 4 Jul 2011 21:01:35 +0000 (00:01 +0300)]
Message style tweaks

13 years agoSmall documentation tweaks
Peter Eisentraut [Mon, 4 Jul 2011 21:00:14 +0000 (00:00 +0300)]
Small documentation tweaks

13 years agoClarify that you need ActiveState perl 5.8 *or later* to build on Windows.
Heikki Linnakangas [Mon, 4 Jul 2011 19:30:27 +0000 (22:30 +0300)]
Clarify that you need ActiveState perl 5.8 *or later* to build on Windows.

13 years agoBack-patch Fix bat file quoting of %ENV from commit 19b7fac8.
Andrew Dunstan [Mon, 4 Jul 2011 14:44:07 +0000 (10:44 -0400)]
Back-patch Fix bat file quoting of %ENV from commit 19b7fac8.

13 years agoAlter test results to comply with new ALTER TABLE behaviour.
Simon Riggs [Mon, 4 Jul 2011 10:11:03 +0000 (11:11 +0100)]
Alter test results to comply with new ALTER TABLE behaviour.

13 years agoReset ALTER TABLE lock levels to AccessExclusiveLock in all cases.
Simon Riggs [Mon, 4 Jul 2011 08:30:50 +0000 (09:30 +0100)]
Reset ALTER TABLE lock levels to AccessExclusiveLock in all cases.
Locks on inheritance parent remain at lower level, as they were before.
Remove entry from 9.1 release notes.

13 years agoFix omissions in documentation of the pg_roles view.
Tom Lane [Mon, 4 Jul 2011 02:12:20 +0000 (22:12 -0400)]
Fix omissions in documentation of the pg_roles view.

Somehow, column rolconfig got removed from the documentation of the
pg_roles view in the 9.0 cycle, although the column is actually still
there.  In 9.1, we'd also forgotten to document the rolreplication column.
Spotted by Sakamoto Masahiko.

13 years agoPut comments on the installable procedural languages.
Tom Lane [Sun, 3 Jul 2011 23:03:51 +0000 (19:03 -0400)]
Put comments on the installable procedural languages.

Per suggestion from Josh Kupershmidt.

13 years agoFix bugs in relpersistence handling during table creation.
Robert Haas [Sun, 3 Jul 2011 21:34:47 +0000 (17:34 -0400)]
Fix bugs in relpersistence handling during table creation.

Unlike the relistemp field which it replaced, relpersistence must be
set correctly quite early during the table creation process, as we
rely on it quite early on for a number of purposes, including security
checks.  Normally, this is set based on whether the user enters CREATE
TABLE, CREATE UNLOGGED TABLE, or CREATE TEMPORARY TABLE, but a
relation may also be made implicitly temporary by creating it in
pg_temp.  This patch fixes the handling of that case, and also
disables creation of unlogged tables in temporary tablespace (such
table indeed skip WAL-logging, but we reject an explicit
specification) and creation of relations in the temporary schemas of
other sessions (which is not very sensible, and didn't work right
anyway).

Report by Amit Khandekar.

13 years agoMake distprep and *clean build targets recurse into all subdirectories.
Tom Lane [Sun, 3 Jul 2011 17:55:02 +0000 (13:55 -0400)]
Make distprep and *clean build targets recurse into all subdirectories.

Certain subdirectories do not get built if corresponding options are not
selected at configure time.  However, "make distprep" should visit such
directories anyway, so that constructing derived files to be included in
the tarball happens without requiring all configure options to be given
in the tarball build script.  Likewise, it's better if cleanup actions
unconditionally visit all directories (for example, this ensures proper
cleanup if someone has done a manual make in such a subdirectory).

To handle this, set up a convention that subdirectories that are
conditionally included in SUBDIRS should be added to ALWAYS_SUBDIRS
instead when they are excluded.

Back-patch to 9.1, so that plpython's spiexceptions.h will get provided
in 9.1 tarballs.  There don't appear to be any instances where distprep
actions got missed in previous releases, and anyway this fix requires
gmake 3.80 so we don't want to apply it before 9.1.

13 years agoUnify spelling of "canceled", "canceling", "cancellation"
Peter Eisentraut [Wed, 29 Jun 2011 06:26:14 +0000 (09:26 +0300)]
Unify spelling of "canceled", "canceling", "cancellation"

We had previously (af26857a2775e7ceb0916155e931008c2116632f)
established the U.S. spellings as standard.

13 years agoAdd some strings that were not marked for translation
Peter Eisentraut [Mon, 27 Jun 2011 12:46:21 +0000 (15:46 +0300)]
Add some strings that were not marked for translation

13 years agoIn pg_upgrade 9.0 and 9.1, document suggestion of using a non-default
Bruce Momjian [Sat, 2 Jul 2011 03:09:13 +0000 (23:09 -0400)]
In pg_upgrade 9.0 and 9.1, document suggestion of using a non-default
port number to avoid unintended client connections.

13 years agoRestore correct btree preprocessing of "indexedcol IS NULL" conditions.
Tom Lane [Wed, 29 Jun 2011 23:46:58 +0000 (19:46 -0400)]
Restore correct btree preprocessing of "indexedcol IS NULL" conditions.

Such a condition is unsatisfiable in combination with any other type of
btree-indexable condition (since we assume btree operators are always
strict).  8.3 and 8.4 had an explicit test for this, which I removed in
commit 29c4ad98293e3c5cb3fcdd413a3f4904efff8762, mistakenly thinking that
the case would be subsumed by the more general handling of IS (NOT) NULL
added in that patch.  Put it back, and improve the comments about it, and
add a regression test case.

Per bug #6079 from Renat Nasyrov, and analysis by Dean Rasheed.

13 years agoMove the PredicateLockRelation() call from nodeSeqscan.c to heapam.c. It's
Heikki Linnakangas [Wed, 29 Jun 2011 18:43:53 +0000 (21:43 +0300)]
Move the PredicateLockRelation() call from nodeSeqscan.c to heapam.c. It's
more consistent that way, since all the other PredicateLock* calls are
made in various heapam.c and index AM functions. The call in nodeSeqscan.c
was unnecessarily aggressive anyway, there's no need to try to lock the
relation every time a tuple is fetched, it's enough to do it once.

This has the user-visible effect that if a seq scan is initialized in the
executor, but never executed, we now acquire the predicate lock on the heap
relation anyway. We could avoid that by taking the lock on the first
heap_getnext() call instead, but it doesn't seem worth the trouble given
that it feels more natural to do it in heap_beginscan().

Also, remove the retail PredicateLockTuple() calls from heap_getnext(). In
a seqscan, started with heap_begin(), we're holding a whole-relation
predicate lock on the heap so there's no need to lock the tuples
individually.

Kevin Grittner and me