]> granicus.if.org Git - postgresql/log
postgresql
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

13 years agoGrab predicate locks on matching tuples in a lossy bitmap heap scan.
Heikki Linnakangas [Wed, 29 Jun 2011 18:40:27 +0000 (21:40 +0300)]
Grab predicate locks on matching tuples in a lossy bitmap heap scan.
Non-lossy case was already handled correctly.

Kevin Grittner

13 years agoProtect pg_stat_reset_shared() against NULL input
Magnus Hagander [Wed, 29 Jun 2011 17:35:11 +0000 (19:35 +0200)]
Protect pg_stat_reset_shared() against NULL input

Per bug #6082, reported by Steve Haslam

13 years agoReduce impact of btree page reuse on Hot Standby by fixing off-by-1 error.
Simon Riggs [Mon, 27 Jun 2011 21:15:07 +0000 (22:15 +0100)]
Reduce impact of btree page reuse on Hot Standby by fixing off-by-1 error.
WAL records of type XLOG_BTREE_REUSE_PAGE were generated using a
latestRemovedXid one higher than actually needed because xid used was
page opaque->btpo.xact rather than an actually removed xid.
Noticed on an otherwise quiet system by Noah Misch.

Noah Misch and Simon Riggs

13 years agoMention that SSPI authentication can use GSSAPI on non-Windows systems.
Robert Haas [Mon, 27 Jun 2011 14:38:45 +0000 (10:38 -0400)]
Mention that SSPI authentication can use GSSAPI on non-Windows systems.

As noted by Christian Ullrich.

13 years agoAsync dblink functions require a named connection, and therefore should
Joe Conway [Sat, 25 Jun 2011 22:40:49 +0000 (15:40 -0700)]
Async dblink functions require a named connection, and therefore should
use DBLINK_GET_NAMED_CONN rather than DBLINK_GET_CONN.
Problem found by Peter Eisentraut and patch by Fujii Masao.

13 years agoDocumentation improvements for pg_locks with respect to SSI.
Robert Haas [Fri, 24 Jun 2011 20:06:57 +0000 (16:06 -0400)]
Documentation improvements for pg_locks with respect to SSI.

Explain that querying pg_locks does not simultaneously lock both the
normal lock manager and the predicate lock manager.

Per discussion with Kevin Grittner.

13 years agoIn pg_upgrade docs, clarify that link mode uses "hard" links.
Bruce Momjian [Thu, 23 Jun 2011 23:57:45 +0000 (19:57 -0400)]
In pg_upgrade docs, clarify that link mode uses "hard" links.

Backpatch to 9.1 and 9.0.

13 years agoUndo overly enthusiastic de-const-ification.
Tom Lane [Thu, 23 Jun 2011 03:03:11 +0000 (23:03 -0400)]
Undo overly enthusiastic de-const-ification.

s/const//g wasn't exactly what I was suggesting here ... parameter
declarations of the form "const structtype *param" are good and useful,
so put those occurrences back.  Likewise, avoid casting away the const
in a "const void *" parameter.

13 years agoIn pg_upgrade, check that the binary and data directories are the same
Bruce Momjian [Thu, 23 Jun 2011 00:48:35 +0000 (20:48 -0400)]
In pg_upgrade, check that the binary and data directories are the same
major version.

Backpatch to 9.1.

Dan McGee

13 years agoAdjust pg_upgrade check for pg_upgrade_support to happen after the
Bruce Momjian [Wed, 22 Jun 2011 21:47:24 +0000 (17:47 -0400)]
Adjust pg_upgrade check for pg_upgrade_support to happen after the
binary directory has been validated.

Backpatch to 9.1.

Dan McGee

13 years agoFix pg_upgrade status message capitalization mistake.
Bruce Momjian [Wed, 22 Jun 2011 18:49:04 +0000 (14:49 -0400)]
Fix pg_upgrade status message capitalization mistake.

Backpatch to 9.1 and 9.0.

Dan McGee

13 years agoAdd missing -I switch for VPATH builds.
Tom Lane [Wed, 22 Jun 2011 17:20:03 +0000 (13:20 -0400)]
Add missing -I switch for VPATH builds.

Per bug #6073 from Hartmut Raschick.

13 years agoFix symlink for errcodes.h so it works in VPATH builds from tarballs.
Tom Lane [Wed, 22 Jun 2011 17:08:08 +0000 (13:08 -0400)]
Fix symlink for errcodes.h so it works in VPATH builds from tarballs.

backend/Makefile was treating errcodes.h as a header always generated
during build, but actually it's a header provided in tarballs.  Hence,
must use the absolute-symlink recipe, not the relative-symlink one.
Per bug #6072 from Hartmut Raschick.

13 years agoRemove pointless const qualifiers from function arguments in the SSI code.
Heikki Linnakangas [Wed, 22 Jun 2011 09:18:39 +0000 (12:18 +0300)]
Remove pointless const qualifiers from function arguments in the SSI code.
As Tom Lane pointed out, "const Relation foo" doesn't guarantee that you
can't modify the data the "foo" pointer points to. It just means that you
can't change the pointer to point to something else within the function,
which is not very useful.

13 years agoPerformance tuning advice for SSI.
Robert Haas [Wed, 22 Jun 2011 01:54:36 +0000 (21:54 -0400)]
Performance tuning advice for SSI.

Kevin Grittner, with additional wordsmithing by me.

13 years agoMinor editing for README-SSI.
Tom Lane [Tue, 21 Jun 2011 22:00:09 +0000 (18:00 -0400)]
Minor editing for README-SSI.

Fix some grammatical issues, try to clarify a couple of proofs, make the
terminology more consistent.

13 years agoMessage style and spelling improvements
Peter Eisentraut [Tue, 21 Jun 2011 21:33:20 +0000 (00:33 +0300)]
Message style and spelling improvements

13 years agoApply upstream fix for blowfish signed-character bug (CVE-2011-2483).
Tom Lane [Tue, 21 Jun 2011 18:41:05 +0000 (14:41 -0400)]
Apply upstream fix for blowfish signed-character bug (CVE-2011-2483).

A password containing a character with the high bit set was misprocessed
on machines where char is signed (which is most).  This could cause the
preceding one to three characters to fail to affect the hashed result,
thus weakening the password.  The result was also unportable, and failed
to match some other blowfish implementations such as OpenBSD's.

Since the fix changes the output for such passwords, upstream chose
to provide a compatibility hack: password salts beginning with $2x$
(instead of the usual $2a$ for blowfish) are intentionally processed
"wrong" to give the same hash as before.  Stored password hashes can
thus be modified if necessary to still match, though it'd be better
to change any affected passwords.

In passing, sync a couple other upstream changes that marginally improve
performance and/or tighten error checking.

Back-patch to all supported branches.  Since this issue is already
public, no reason not to commit the fix ASAP.

13 years agoAdjust the alternative expected output file for prepared_xacts test case,
Heikki Linnakangas [Tue, 21 Jun 2011 14:07:10 +0000 (17:07 +0300)]
Adjust the alternative expected output file for prepared_xacts test case,
used when max_prepared_transactions=0, for the recent changes in the test
case.

13 years agoFix bug in PreCommit_CheckForSerializationFailure. A transaction that has
Heikki Linnakangas [Tue, 21 Jun 2011 11:32:11 +0000 (14:32 +0300)]
Fix bug in PreCommit_CheckForSerializationFailure. A transaction that has
already been marked as PREPARED cannot be killed. Kill the current
transaction instead.

One of the prepared_xacts regression tests actually hits this bug. I
removed the anomaly from the duplicate-gids test so that it fails in the
intended way, and added a new test to check serialization failures with
a prepared transaction.

Dan Ports

13 years agoFix bug introduced by recent SSI patch to merge ROLLED_BACK and
Heikki Linnakangas [Tue, 21 Jun 2011 11:12:40 +0000 (14:12 +0300)]
Fix bug introduced by recent SSI patch to merge ROLLED_BACK and
MARKED_FOR_DEATH flags into one. We still need the ROLLED_BACK flag to
mark transactions that are in the process of being rolled back. To be
precise, ROLLED_BACK now means that a transaction has already been
discounted from the count of transactions with the oldest xmin, but not
yet removed from the list of active transactions.

Dan Ports

13 years agoFix missed use of "cp -i" in an example, per Fujii Masao.
Tom Lane [Mon, 20 Jun 2011 20:27:36 +0000 (16:27 -0400)]
Fix missed use of "cp -i" in an example, per Fujii Masao.

Also be more careful about markup: use &amp; not just &.

13 years agoFix thinko in previous patch for optimizing EXISTS-within-EXISTS.
Tom Lane [Mon, 20 Jun 2011 18:33:20 +0000 (14:33 -0400)]
Fix thinko in previous patch for optimizing EXISTS-within-EXISTS.

When recursing after an optimization in pull_up_sublinks_qual_recurse, the
available_rels value passed down must include only the relations that are
in the righthand side of the new SEMI or ANTI join; it's incorrect to pull
up a sub-select that refers to other relations, as seen in the added test
case.  Per report from BangarRaju Vadapalli.

While at it, rethink the idea of recursing below a NOT EXISTS.  That is
essentially the same situation as pulling up ANY/EXISTS sub-selects that
are in the ON clause of an outer join, and it has the same disadvantage:
we'd force the two joins to be evaluated according to the syntactic nesting
order, because the lower join will most likely not be able to commute with
the ANTI join.  That could result in having to form a rather large join
product, whereas the handling of a correlated subselect is not quite that
dumb.  So until we can handle those cases better, #ifdef NOT_USED that
case.  (I think it's okay to pull up in the EXISTS/ANY cases, because SEMI
joins aren't so inflexible about ordering.)

Back-patch to 8.4, same as for previous patch in this area.  Fortunately
that patch hadn't made it into any shipped releases yet.

13 years agoProduce HISTORY file consistently as ASCII
Peter Eisentraut [Sun, 19 Jun 2011 20:27:56 +0000 (23:27 +0300)]
Produce HISTORY file consistently as ASCII

The release notes may contain non-ASCII characters (for contributor
names), which lynx converts to the encoding determined by the current
locale.  The get output that is deterministic and easily readable by
everyone, we make lynx produce LATIN1 and then convert that to ASCII
with transliteration for the non-ASCII characters.

13 years agoFix thinko in previous patch to always update pg_class.reltuples/relpages.
Tom Lane [Sun, 19 Jun 2011 18:00:55 +0000 (14:00 -0400)]
Fix thinko in previous patch to always update pg_class.reltuples/relpages.

I mis-simplified the test where ANALYZE decided if it could get away
without doing anything: under the new regime, that's never allowed.  Per
bug #6068 from Jeff Janes.  Back-patch to 8.4, just like previous patch.

13 years agoCapitalization fixes
Peter Eisentraut [Sat, 18 Jun 2011 21:37:30 +0000 (00:37 +0300)]
Capitalization fixes

13 years agoDon't use "cp -i" in the example WAL archive_command.
Tom Lane [Fri, 17 Jun 2011 23:13:08 +0000 (19:13 -0400)]
Don't use "cp -i" in the example WAL archive_command.

This is a dangerous example to provide because on machines with GNU cp,
it will silently do the wrong thing and risk archive corruption.  Worse,
during the 9.0 cycle somebody "improved" the discussion by removing the
warning that used to be there about that, and instead leaving the
impression that the command would work as desired on most Unixen.
It doesn't.  Try to rectify the damage by providing an example that is safe
most everywhere, and then noting that you can try cp -i if you want but
you'd better test that.

In back-patching this to all supported branches, I also added an example
command for Windows, which wasn't provided before 9.0.

13 years agoObtain table locks as soon as practical during pg_dump.
Tom Lane [Fri, 17 Jun 2011 22:19:09 +0000 (18:19 -0400)]
Obtain table locks as soon as practical during pg_dump.

For some reason, when we (I) added table lock acquisition to pg_dump,
we didn't think about making it happen as soon as possible after the
start of the transaction.  What with subsequent additions, there was
actually quite a lot going on before we got around to that; which sort
of defeats the purpose.  Rearrange the order of calls in dumpSchema()
to close the risk window as much as we easily can.  Back-patch to all
supported branches.

13 years agoAdd overflow checks to int4 and int8 versions of generate_series().
Robert Haas [Fri, 17 Jun 2011 18:28:45 +0000 (14:28 -0400)]
Add overflow checks to int4 and int8 versions of generate_series().

The previous code went into an infinite loop after overflow.  In fact,
an overflow is not really an error; it just means that the current
value is the last one we need to return.  So, just arrange to stop
immediately when overflow is detected.

Back-patch all the way.

13 years agoFix crash in CREATE UNLOGGED TABLE.
Robert Haas [Fri, 17 Jun 2011 17:34:39 +0000 (13:34 -0400)]
Fix crash in CREATE UNLOGGED TABLE.

The code that created the init fork neglected to make sure that the
relation was open at the smgr level before attempting to invoke smgr.
This didn't happen every time; only when the relcache entry was rebuilt
along the way.

Per report from Garick Hamlin.

13 years agoFix typo.
Robert Haas [Fri, 17 Jun 2011 04:54:08 +0000 (00:54 -0400)]
Fix typo.

Per Josh Kupershmidt and Tom Lane.

13 years agoUpdate README-SSI. Add a section to describe the "dangerous structure" that
Heikki Linnakangas [Thu, 16 Jun 2011 18:12:56 +0000 (21:12 +0300)]
Update README-SSI. Add a section to describe the "dangerous structure" that
SSI is based on, as well as the optimizations about relative commit times
and read-only transactions. Plus a bunch of other misc fixes and
improvements.

Dan Ports

13 years agoFix typo
Alvaro Herrera [Thu, 16 Jun 2011 16:10:57 +0000 (12:10 -0400)]
Fix typo

13 years agoRemove another no-longer-needed inclusion of predicate.h.
Tom Lane [Thu, 16 Jun 2011 15:43:30 +0000 (11:43 -0400)]
Remove another no-longer-needed inclusion of predicate.h.

13 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

13 years agoRespect Hot Standby controls while recycling btree index pages.
Simon Riggs [Thu, 16 Jun 2011 09:17:59 +0000 (10:17 +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

13 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.

13 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.

13 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.

13 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.

13 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.

13 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.

13 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.

13 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.

13 years agoIn pg_upgrade, document that link mode has to have data directories on
Bruce Momjian [Tue, 14 Jun 2011 20:47:16 +0000 (16:47 -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.

13 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.

13 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.

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

Backpatch to 9.1.

13 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

13 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.

13 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.

13 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..

13 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.