OSDN Git Service

pg-rex/syncrep.git
13 years agoMessage style cleanup
Peter Eisentraut [Wed, 4 May 2011 17:56:52 +0000 (20:56 +0300)]
Message style cleanup

13 years agoFix alignment of --help output
Peter Eisentraut [Wed, 4 May 2011 17:29:40 +0000 (20:29 +0300)]
Fix alignment of --help output

Tabs replaced by spaces.

13 years agoLink some tables into the surrounding text by their id
Peter Eisentraut [Wed, 4 May 2011 17:24:07 +0000 (20:24 +0300)]
Link some tables into the surrounding text by their id

13 years agoUpdate obsolete mention of Sequoia, now known as Tungsten
Alvaro Herrera [Tue, 3 May 2011 14:35:17 +0000 (11:35 -0300)]
Update obsolete mention of Sequoia, now known as Tungsten

Per http://joomla.aws.continuent.com/community/lab-projects/sequoia

Greg Smith

13 years agoImprove description of read/write traffic scalability
Alvaro Herrera [Tue, 3 May 2011 14:34:27 +0000 (11:34 -0300)]
Improve description of read/write traffic scalability

Greg Smith, after a suggestion of James Bruce

13 years agoAdd ID attribute to some sect2's missing it
Alvaro Herrera [Mon, 2 May 2011 22:13:49 +0000 (19:13 -0300)]
Add ID attribute to some sect2's missing it

David Fetter

13 years agoFix pull_up_sublinks' failure to handle nested pull-up opportunities.
Tom Lane [Mon, 2 May 2011 19:56:36 +0000 (15:56 -0400)]
Fix pull_up_sublinks' failure to handle nested pull-up opportunities.

After finding an EXISTS or ANY sub-select that can be converted to a
semi-join or anti-join, we should recurse into the body of the sub-select.
This allows cases such as EXISTS-within-EXISTS to be optimized properly.
The original coding would leave the lower sub-select as a SubLink, which
is no better and often worse than what we can do with a join.  Per example
from Wayne Conrad.

Back-patch to 8.4.  There is a related issue in older versions' handling
of pull_up_IN_clauses, but they're lame enough anyway about the whole area
that it seems not worth the extra work to try to fix.

13 years agoUpdate some ALTER USER cross-references to ALTER ROLE
Alvaro Herrera [Mon, 2 May 2011 16:40:24 +0000 (13:40 -0300)]
Update some ALTER USER cross-references to ALTER ROLE

Greg Smith

13 years agoSmall cleanup of spacing in verbatim DocBook elements
Peter Eisentraut [Mon, 2 May 2011 16:19:48 +0000 (19:19 +0300)]
Small cleanup of spacing in verbatim DocBook elements

13 years agoImprove aset.c's space management in contexts with small maxBlockSize.
Tom Lane [Mon, 2 May 2011 16:08:08 +0000 (12:08 -0400)]
Improve aset.c's space management in contexts with small maxBlockSize.

The previous coding would allow requests up to half of maxBlockSize to be
treated as "chunks", but when that actually did happen, we'd waste nearly
half of the space in the malloc block containing the chunk, if no smaller
requests came along to fill it.  Avoid this scenario by limiting the
maximum size of a chunk to 1/8th maxBlockSize, so that we can waste no more
than 1/8th of the allocated space.  This will not change the behavior at
all for the default context size parameters (with large maxBlockSize),
but it will change the behavior when using ALLOCSET_SMALL_MAXSIZE.

In particular, there's no longer a need for spell.c to be overly concerned
about the request size parameters it uses, so remove a rather unhelpful
comment about that.

Merlin Moncure, per an idea of Tom Lane's

13 years agoCatch errors in for loop in makefile
Peter Eisentraut [Sun, 1 May 2011 21:43:06 +0000 (00:43 +0300)]
Catch errors in for loop in makefile

Add "|| exit" so that the rule aborts when a command fails.

13 years agoRewrite installation makefile rules without for loops
Peter Eisentraut [Sun, 1 May 2011 21:37:07 +0000 (00:37 +0300)]
Rewrite installation makefile rules without for loops

install-sh can install multiple files at once, so for loops are not
necessary.  This was already changed for the rest of the code some
time ago, but pgxs.mk was apparently forgotten, and the obsolete
coding style has now been copied to the PLs as well.

This also fixes the problem that the for loops in question did not
catch errors.

13 years agoMake CLUSTER lock the old table's toast table before copying data.
Tom Lane [Sun, 1 May 2011 21:57:33 +0000 (17:57 -0400)]
Make CLUSTER lock the old table's toast table before copying data.

We must lock out autovacuuming of the old toast table before computing the
OldestXmin horizon we will use.  Otherwise, autovacuum could start on the
toast table later, compute a later OldestXmin horizon, and remove as DEAD
toast tuples that we still need (because we think their parent tuples are
only RECENTLY_DEAD).  Per further thought about bug #5998.

13 years agoLowercase status labels in pg_stat_replication view.
Bruce Momjian [Sat, 30 Apr 2011 02:20:14 +0000 (22:20 -0400)]
Lowercase status labels in pg_stat_replication view.

13 years agoRemove special case for xmin == xmax in HeapTupleSatisfiesVacuum().
Tom Lane [Fri, 29 Apr 2011 20:29:42 +0000 (16:29 -0400)]
Remove special case for xmin == xmax in HeapTupleSatisfiesVacuum().

VACUUM was willing to remove a committed-dead tuple immediately if it was
deleted by the same transaction that inserted it.  The idea is that such a
tuple could never have been visible to any other transaction, so we don't
need to keep it around to satisfy MVCC snapshots.  However, there was
already an exception for tuples that are part of an update chain, and this
exception created a problem: we might remove TOAST tuples (which are never
part of an update chain) while their parent tuple stayed around (if it was
part of an update chain).  This didn't pose a problem for most things,
since the parent tuple is indeed dead: no snapshot will ever consider it
visible.  But MVCC-safe CLUSTER had a problem, since it will try to copy
RECENTLY_DEAD tuples to the new table.  It then has to copy their TOAST
data too, and would fail if VACUUM had already removed the toast tuples.

Easiest fix is to get rid of the special case for xmin == xmax.  This may
delay reclaiming dead space for a little bit in some cases, but it's by far
the most reliable way to fix the issue.

Per bug #5998 from Mark Reid.  Back-patch to 8.3, which is the oldest
version with MVCC-safe CLUSTER.

13 years agoRewrite pg_size_pretty() to avoid compiler bug.
Tom Lane [Fri, 29 Apr 2011 05:44:50 +0000 (01:44 -0400)]
Rewrite pg_size_pretty() to avoid compiler bug.

Convert it to use successive shifts right instead of increasing a divisor.
This is probably a tad more efficient than the original coding, and it's
nicer-looking than the previous patch because we don't need a special case
to avoid overflow in the last branch.  But the real reason to do it is to
avoid a Solaris compiler bug, as per results from buildfarm member moa.

13 years agoUse non-literal format for possibly non-standard strftime formats.
Andrew Dunstan [Thu, 28 Apr 2011 23:58:49 +0000 (19:58 -0400)]
Use non-literal format for possibly non-standard strftime formats.

Per recent -hackers discussion. The formats in question are %G and %V,
and cause warnings on MinGW at least. We assume the ecpg application
knows what it's doing if it passes these formats to the library.

13 years agoAdd some casts to try to silence most of the remaining format warnings on MinGW-W64.
Andrew Dunstan [Thu, 28 Apr 2011 19:05:58 +0000 (15:05 -0400)]
Add some casts to try to silence most of the remaining format warnings on MinGW-W64.

13 years agoUse a macro variable PG_PRINTF_ATTRIBUTE for the style used for checking printf type...
Andrew Dunstan [Thu, 28 Apr 2011 14:56:14 +0000 (10:56 -0400)]
Use a macro variable PG_PRINTF_ATTRIBUTE for the style used for checking printf type functions.

The style is set to "printf" for backwards compatibility everywhere except
on Windows, where it is set to "gnu_printf", which eliminates hundreds of
false error messages from modern versions of gcc arising from  %m and %ll{d,u}
formats.

13 years agoThe arguments to pg_ctl kill are not optional - remove brackets in the docs.
Heikki Linnakangas [Thu, 28 Apr 2011 09:51:02 +0000 (12:51 +0300)]
The arguments to pg_ctl kill are not optional - remove brackets in the docs.

Fujii Masao

13 years agoTag 9.1beta1.
Tom Lane [Wed, 27 Apr 2011 21:17:22 +0000 (17:17 -0400)]
Tag 9.1beta1.

13 years agoMake a quick copy-editing pass over the 9.1 release notes.
Tom Lane [Wed, 27 Apr 2011 20:51:46 +0000 (16:51 -0400)]
Make a quick copy-editing pass over the 9.1 release notes.

Also remove the material about this being an alpha release.

The notes still need a lot of work, but they're more or less presentable
as a beta version now.

13 years agoFix binary upgrade of altered typed tables
Peter Eisentraut [Wed, 27 Apr 2011 19:08:22 +0000 (22:08 +0300)]
Fix binary upgrade of altered typed tables

Instead of dumping them as CREATE TABLE ... OF, dump them as normal
tables with the usual special processing for dropped columns, and then
attach them to the type afterward, using ALTER TABLE ... OF.  This is
analogous to the existing handling of inherited tables.

13 years agoRevert "Force use of "%I64d" format for 64 bit ints on MinGW."
Andrew Dunstan [Wed, 27 Apr 2011 18:55:18 +0000 (14:55 -0400)]
Revert "Force use of "%I64d" format for 64 bit ints on MinGW."

This reverts commit 52d01c2f52c462d29ae0fdfa44c3cae129148a6d.

the UINT64_FORMAT bit broke the b uildfarm, so I'm reverting the whole thing pending further investigation.

13 years agotimeline is not needed in BaseBackup()
Magnus Hagander [Wed, 27 Apr 2011 18:39:20 +0000 (20:39 +0200)]
timeline is not needed in BaseBackup()

This code was accidentally part of the patch, it's only
needed for the code that's for 9.2. Not needing the timeline
also removes the need to call IDENTIFY_SYSTEM.

Noted by Peter E.

13 years agoAdd comments about the need to avoid uninitialized bits in datatype values.
Tom Lane [Wed, 27 Apr 2011 18:05:58 +0000 (14:05 -0400)]
Add comments about the need to avoid uninitialized bits in datatype values.

There was already one recommendation in the documentation about writing
C functions to ensure padding bytes are zeroes, but make it stronger.

Also fix an example that was still using direct assignment to a varlena
length word, which no longer works since the varvarlena changes.

13 years agoFix array- and path-creating functions to ensure padding bytes are zeroes.
Tom Lane [Wed, 27 Apr 2011 17:58:36 +0000 (13:58 -0400)]
Fix array- and path-creating functions to ensure padding bytes are zeroes.

Per recent discussion, it's important for all computed datums (not only the
results of input functions) to not contain any ill-defined (uninitialized)
bits.  Failing to ensure that can result in equal() reporting that
semantically indistinguishable Consts are not equal, which in turn leads to
bizarre and undesirable planner behavior, such as in a recent example from
David Johnston.  We might eventually try to fix this in a general manner by
allowing datatypes to define identity-testing functions, but for now the
path of least resistance is to expect datatypes to force all unused bits
into consistent states.

Per some testing by Noah Misch, array and path functions seem to be the
only ones presenting risks at the moment, so I looked through all the
functions in adt/array*.c and geo_ops.c and fixed them as necessary.  In
the array functions, the easiest/safest fix is to allocate result arrays
with palloc0 instead of palloc.  Possibly in future someone will want to
look into whether we can just zero the padding bytes, but that looks too
complex for a back-patchable fix.  In the path functions, we already had a
precedent in path_in for just zeroing the one known pad field, so duplicate
that code as needed.

Back-patch to all supported branches.

13 years agoRevert "Remove hard coded formats for INT64 and use configured settings instead."
Andrew Dunstan [Wed, 27 Apr 2011 15:28:14 +0000 (11:28 -0400)]
Revert "Remove hard coded formats for INT64 and use configured settings instead."

This reverts commit 9b1508af8971c1627cda5bb65f5e9eddb9a1a55e.

As requested by Tom.

13 years agoRemove hard coded formats for INT64 and use configured settings instead.
Andrew Dunstan [Wed, 27 Apr 2011 15:07:52 +0000 (11:07 -0400)]
Remove hard coded formats for INT64 and use configured settings instead.

13 years agoForce use of "%I64d" format for 64 bit ints on MinGW.
Andrew Dunstan [Wed, 27 Apr 2011 14:09:23 +0000 (10:09 -0400)]
Force use of "%I64d" format for 64 bit ints on MinGW.

Both this and "%lld" work, but the compiler's format checking doesn't
like "%lld", so we get all sorts of spurious warnings.

13 years agoUse an explicit format string to keep the compiler happy.
Andrew Dunstan [Wed, 27 Apr 2011 14:02:21 +0000 (10:02 -0400)]
Use an explicit format string to keep the compiler happy.

13 years agoDoc wording improvement for NUMERIC limit paragraph.
Bruce Momjian [Wed, 27 Apr 2011 04:06:37 +0000 (00:06 -0400)]
Doc wording improvement for NUMERIC limit paragraph.

13 years agoReword documentation for NUMERIC with no specified precision.
Bruce Momjian [Wed, 27 Apr 2011 03:43:15 +0000 (23:43 -0400)]
Reword documentation for NUMERIC with no specified precision.

13 years agoRephrase some not-supported error messages in pg_hba.conf processing.
Tom Lane [Tue, 26 Apr 2011 19:56:28 +0000 (15:56 -0400)]
Rephrase some not-supported error messages in pg_hba.conf processing.

In a couple of places we said "not supported on this platform" for cases
that aren't really platform-specific, but could depend on configuration
options such as --with-openssl.  Use "not supported by this build" instead,
as that doesn't convey the impression that you can't fix it without moving
to another OS; that's also more consistent with the wording used for an
identical error case in guc.c.

No back-patch, as the clarity gain is small enough to not be worth
burdening translators with back-branch changes.

13 years agoComplain if pg_hba.conf contains "hostssl" but SSL is disabled.
Tom Lane [Tue, 26 Apr 2011 19:40:11 +0000 (15:40 -0400)]
Complain if pg_hba.conf contains "hostssl" but SSL is disabled.

Most commenters agreed that this is more friendly than silently failing
to match the line during actual connection attempts.  Also, this will
prevent corner cases that might arise when trying to handle such a line
when the SSL code isn't turned on.  An example is that specifying
clientcert=1 in such a line would formerly result in a completely
misleading complaint that root.crt wasn't present, as seen in a recent
report from Marc-Andre Laverdiere.  While we could have instead fixed
that specific behavior, it seems likely that we'd have a continuing stream
of such bizarre behaviors if we keep on allowing hostssl lines when SSL is
disabled.

Back-patch to 8.4, where clientcert was introduced.  Earlier versions don't
have this specific issue, and the code is enough different to make this
patch not applicable without more work than it seems worth.

13 years agoClarify that a non-specified precision NUMERIC has a very high range.
Bruce Momjian [Tue, 26 Apr 2011 15:54:57 +0000 (11:54 -0400)]
Clarify that a non-specified precision NUMERIC has a very high range.

13 years agoNow that pg_upgrade uses -w in pg_ctl, remove loop that retried testing
Bruce Momjian [Tue, 26 Apr 2011 14:15:18 +0000 (10:15 -0400)]
Now that pg_upgrade uses -w in pg_ctl, remove loop that retried testing
the connection;  also restructure the libpq connection code.

This patch also removes the unused variable postmasterPID and fixes a
libpq structure leak that was in the testing loop.

13 years agoIn pg_upgrade, avoid one start/stop of the postmaster; use the -w
Bruce Momjian [Tue, 26 Apr 2011 00:17:48 +0000 (20:17 -0400)]
In pg_upgrade, avoid one start/stop of the postmaster;  use the -w
(wait) flag for pg_ctl start/stop;  remove the unused "quiet" flag in
the functions for starting/stopping the postmaster.

13 years agoRemove incorrect HINT for use of ALTER FOREIGN TABLE on the wrong relkind.
Tom Lane [Tue, 26 Apr 2011 00:13:53 +0000 (20:13 -0400)]
Remove incorrect HINT for use of ALTER FOREIGN TABLE on the wrong relkind.

Per discussion, removing the hint seems better than correcting it because
the adjacent analogous cases in RenameRelation don't have any hints, and
nobody seems to have missed 'em.

Shigeru Hanada

13 years agoRefactor broken CREATE TABLE IF NOT EXISTS support.
Robert Haas [Mon, 25 Apr 2011 20:55:11 +0000 (16:55 -0400)]
Refactor broken CREATE TABLE IF NOT EXISTS support.

Per bug #5988, reported by Marko Tiikkaja, and further analyzed by Tom
Lane, the previous coding was broken in several respects: even if the
target table already existed, a subsequent CREATE TABLE IF NOT EXISTS
might try to add additional constraints or sequences-for-serial
specified in the new CREATE TABLE statement.

In passing, this also fixes a minor information leak: it's no longer
possible to figure out whether a schema to which you don't have CREATE
access contains a sequence named like "x_y_seq" by attempting to create a
table in that schema called "x" with a serial column called "y".

Some more refactoring of this code in the future might be warranted,
but that will need to wait for a later major release.

13 years agoRemove partial and undocumented GRANT .. FOREIGN TABLE support.
Robert Haas [Mon, 25 Apr 2011 20:34:57 +0000 (16:34 -0400)]
Remove partial and undocumented GRANT .. FOREIGN TABLE support.

Instead, foreign tables are treated just like views: permissions can
be granted using GRANT privilege ON [TABLE] foreign_table_name TO role,
and revoked similarly.  GRANT/REVOKE .. FOREIGN TABLE is no longer
supported, just as we don't support GRANT/REVOKE .. VIEW.  The set of
accepted permissions for foreign tables is now identical to the set for
regular tables, and views.

Per report from Thom Brown, and subsequent discussion.

13 years agoFix pg_size_pretty() to avoid overflow for inputs close to INT64_MAX.
Tom Lane [Mon, 25 Apr 2011 20:22:12 +0000 (16:22 -0400)]
Fix pg_size_pretty() to avoid overflow for inputs close to INT64_MAX.

The expression that tried to round the value to the nearest TB could
overflow, leading to bogus output as reported in bug #5993 from Nicola
Cossu.  This isn't likely to ever happen in the intended usage of the
function (if it could, we'd be needing to use a wider datatype instead);
but it's not hard to give the expected output, so let's do so.

13 years agoSupport "make check" in contrib
Peter Eisentraut [Mon, 25 Apr 2011 19:21:37 +0000 (22:21 +0300)]
Support "make check" in contrib

Added a new option --extra-install to pg_regress to arrange installing
the respective contrib directory into the temporary installation.
This is currently not yet supported for Windows MSVC builds.

Updated the .gitignore files for contrib modules to ignore the
leftovers of a temp-install check run.

Changed the exit status of "make check" in a pgxs build (which still
does nothing) to 0 from 1.

Added "make check" in contrib to top-level "make check-world".

13 years agoUse terse mode to avoid variable order dependency output in foreign data regression...
Andrew Dunstan [Mon, 25 Apr 2011 18:43:26 +0000 (14:43 -0400)]
Use terse mode to avoid variable order dependency output in foreign data regression check.

Per Tom Lane's suggestion about my gripe about occasional errors noticed on the buildfarm.

13 years agoAssorted minor changes to silence Windows compiler warnings.
Andrew Dunstan [Mon, 25 Apr 2011 16:56:53 +0000 (12:56 -0400)]
Assorted minor changes to silence Windows compiler warnings.

Mostly to do with macro redefinitions or object signedness.

13 years agoPrevent perl header overriding our *snprintf macros, and give it a usable PERL_UNUSED...
Andrew Dunstan [Mon, 25 Apr 2011 16:46:59 +0000 (12:46 -0400)]
Prevent perl header overriding our *snprintf macros, and give it a usable PERL_UNUSED_DECL value.

This quiets compiler warnings about redefined macros and unused Perl__unused variables. The
redefinition of snprintf and vsnprintf is something we want to avoid anyway, if we've
gone to the bother of setting up the macros to point to our implementation.

13 years agoGive getopt() a prototype and modern style arg specs.
Andrew Dunstan [Mon, 25 Apr 2011 16:38:10 +0000 (12:38 -0400)]
Give getopt() a prototype and modern style arg specs.

Welcome to the 1990s.

13 years agoAdd postmaster/postgres undocumented -b option for binary upgrades.
Bruce Momjian [Mon, 25 Apr 2011 16:00:21 +0000 (12:00 -0400)]
Add postmaster/postgres undocumented -b option for binary upgrades.
This option turns off autovacuum, prevents non-super-user connections,
and enables oid setting hooks in the backend.  The code continues to use
the old autoavacuum disable settings for servers with earlier catalog
versions.

This includes a catalog version bump to identify servers that support
the -b option.

13 years agoAdd fast paths for cases when no serializable transactions are running.
Robert Haas [Mon, 25 Apr 2011 13:52:01 +0000 (09:52 -0400)]
Add fast paths for cases when no serializable transactions are running.

Dan Ports

13 years agoRegression tests for TOAST.
Robert Haas [Mon, 25 Apr 2011 13:46:53 +0000 (09:46 -0400)]
Regression tests for TOAST.

Kevin Grittner, per discussion of bug #5989

13 years agoFix SSI-related assertion failure.
Robert Haas [Mon, 25 Apr 2011 13:41:56 +0000 (09:41 -0400)]
Fix SSI-related assertion failure.

Bug #5899, reported by Marko Tiikkaja.

Heikki Linnakangas, reviewed by Kevin Grittner and Dan Ports.

13 years agoAdjust yywrap macro for non-reentrant scanners for MSVC.
Andrew Dunstan [Mon, 25 Apr 2011 13:10:59 +0000 (09:10 -0400)]
Adjust yywrap macro for non-reentrant scanners for MSVC.

The MSVC compiler complains if a macro is called with less arguments
than its definition provides for. flex generates a macro with one
argument for yywrap, but only supplies the argument for reentrant
scanners, so we remove the useless argument in the non-reentrant
case to silence the warning.

13 years agoIn libecpg do not set an sqlda field that is 'reserved for future use' unless
Michael Meskes [Mon, 25 Apr 2011 11:43:22 +0000 (13:43 +0200)]
In libecpg do not set an sqlda field that is 'reserved for future use' unless
we know what should be stored in there.

13 years agoNormalize whitespace in the arguments of <indexterm>
Peter Eisentraut [Sun, 24 Apr 2011 22:12:16 +0000 (01:12 +0300)]
Normalize whitespace in the arguments of <indexterm>

Strip leading and trailing whitespace and replace interior whitespace
by a single space.  This avoids problems with the index generator
producing duplicate index entries for terms that differ only in
whitespace.

Commit dca30da3433c40b5f92f1704c496cda052decef9 actually fixed all the
indexterm elements that would cause this problem at the moment, but in
case it sneaks in again, we're set.

13 years agoImprove cost estimation for aggregates and window functions.
Tom Lane [Sun, 24 Apr 2011 20:55:20 +0000 (16:55 -0400)]
Improve cost estimation for aggregates and window functions.

The previous coding failed to account properly for the costs of evaluating
the input expressions of aggregates and window functions, as seen in a
recent gripe from Claudio Freire.  (I said at the time that it wasn't
counting these costs at all; but on closer inspection, it was effectively
charging these costs once per output tuple.  That is completely wrong for
aggregates, and not exactly right for window functions either.)

There was also a hard-wired assumption that aggregates and window functions
had procost 1.0, which is now fixed to respect the actual cataloged costs.

The costing of WindowAgg is still pretty bogus, since it doesn't try to
estimate the effects of spilling data to disk, but that seems like a
separate issue.

13 years agoIn pg_upgrade, only compile copy_file() on non-Win32 systems.
Bruce Momjian [Sun, 24 Apr 2011 00:27:57 +0000 (20:27 -0400)]
In pg_upgrade, only compile copy_file() on non-Win32 systems.

Per report from Andrew Dunstan.

13 years agoImprove findoidjoins to cover more cases.
Tom Lane [Sat, 23 Apr 2011 23:33:04 +0000 (19:33 -0400)]
Improve findoidjoins to cover more cases.

Teach the program and script to deal with OID-array referencing columns,
which we now have several of.  Also, modify the recommended usage process
to specify that the program should be run against the regression database
rather than template1.  This lets it find numerous joins that cannot be
found in template1 because the relevant catalogs are entirely empty.

Together these changes add seventeen formerly-missed cases to the oidjoins
regression test.

13 years agoSilence a few compiler warnings from gcc on MinGW.
Andrew Dunstan [Sat, 23 Apr 2011 22:10:23 +0000 (18:10 -0400)]
Silence a few compiler warnings from gcc on MinGW.

Most of these cast DWORD to int or unsigned int for printf type handling.
This is safe even on 64 bit architectures because a DWORD is always 32 bits.

In one case a variable is initialised to keep the compiler happy.

13 years agoUpdate oidjoins regression test for 9.1 catalog schema additions.
Tom Lane [Sat, 23 Apr 2011 18:49:54 +0000 (14:49 -0400)]
Update oidjoins regression test for 9.1 catalog schema additions.

13 years agoHash indexes had better pass the index collation to support functions, too.
Tom Lane [Sat, 23 Apr 2011 18:13:09 +0000 (14:13 -0400)]
Hash indexes had better pass the index collation to support functions, too.

Per experimentation with contrib/citext, whose hash function assumes that
it'll be passed a collation.

13 years agoAdjust comments about collate.linux.utf8 regression test.
Tom Lane [Sat, 23 Apr 2011 16:51:47 +0000 (12:51 -0400)]
Adjust comments about collate.linux.utf8 regression test.

This test should now work in any database with UTF8 encoding, regardless
of the database's default locale.  The former restriction was really
"doesn't work if default locale is C", and that was because of not handling
mbstowcs/wcstombs correctly.

13 years agoFix char2wchar/wchar2char to support collations properly.
Tom Lane [Sat, 23 Apr 2011 16:35:41 +0000 (12:35 -0400)]
Fix char2wchar/wchar2char to support collations properly.

These functions should take a pg_locale_t, not a collation OID, and should
call mbstowcs_l/wcstombs_l where available.  Where those functions are not
available, temporarily select the correct locale with uselocale().

This change removes the bogus assumption that all locales selectable in
a given database have the same wide-character conversion method; in
particular, the collate.linux.utf8 regression test now passes with
LC_CTYPE=C, so long as the database encoding is UTF8.

I decided to move the char2wchar/wchar2char functions out of mbutils.c and
into pg_locale.c, because they work on wchar_t not pg_wchar_t and thus
don't really belong with the mbutils.c functions.  Keeping them where they
were would have required importing pg_locale_t into pg_wchar.h somehow,
which did not seem like a good plan.

13 years agoFix contrib/btree_gist to handle collations properly.
Tom Lane [Sat, 23 Apr 2011 00:19:58 +0000 (20:19 -0400)]
Fix contrib/btree_gist to handle collations properly.

Make use of the collation attached to the index column, instead of
hard-wiring DEFAULT_COLLATION_OID.  (Note: in theory this could require
reindexing btree_gist indexes on textual columns, but I rather doubt anyone
has one with a non-default declared collation as yet.)

13 years agoMake GIN and GIST pass the index collation to all their support functions.
Tom Lane [Sat, 23 Apr 2011 00:13:12 +0000 (20:13 -0400)]
Make GIN and GIST pass the index collation to all their support functions.

Experimentation with contrib/btree_gist shows that the majority of the GIST
support functions potentially need collation information.  Safest policy
seems to be to pass it to all of them, instead of making assumptions about
which ones could possibly need it.

13 years agoDe-kludge contrib/btree_gin for collations.
Tom Lane [Fri, 22 Apr 2011 22:22:38 +0000 (18:22 -0400)]
De-kludge contrib/btree_gin for collations.

Using DEFAULT_COLLATION_OID in the comparePartial functions was not only
a lame hack, but outright wrong, because the compare functions for
collation-aware types were already responding to the declared index
collation.  So comparePartial would have the wrong expectation about
the index's sort order, possibly leading to missing matches for prefix
searches.

13 years agoSmall update to emacs example configuration
Peter Eisentraut [Fri, 22 Apr 2011 21:44:45 +0000 (00:44 +0300)]
Small update to emacs example configuration

Since both tarballs and git now result in a "postgresql" directory
rather than a "pgsql" directory, adjust the example configuration to
look for the former.

13 years agoAdd fill-column setting to emacs example configurations
Peter Eisentraut [Fri, 22 Apr 2011 21:39:45 +0000 (00:39 +0300)]
Add fill-column setting to emacs example configurations

This matches the maximum line length that pgindent uses.

13 years agoMake a code-cleanup pass over the collations patch.
Tom Lane [Fri, 22 Apr 2011 21:43:18 +0000 (17:43 -0400)]
Make a code-cleanup pass over the collations patch.

This patch is almost entirely cosmetic --- mostly cleaning up a lot of
neglected comments, and fixing code layout problems in places where the
patch made lines too long and then pgindent did weird things with that.
I did find a bug-of-omission in equalTupleDescs().

13 years agoImprove doc wording for SQL syntax of LIMIT/OFFSET.
Bruce Momjian [Fri, 22 Apr 2011 02:25:35 +0000 (22:25 -0400)]
Improve doc wording for SQL syntax of LIMIT/OFFSET.

13 years agoAvoid possible divide-by-zero in gincostestimate.
Tom Lane [Thu, 21 Apr 2011 23:28:36 +0000 (19:28 -0400)]
Avoid possible divide-by-zero in gincostestimate.

Per report from Jeff Janes.

13 years agoAllow ALTER TYPE .. ADD ATTRIBUTE .. CASCADE to recurse to descendants.
Robert Haas [Thu, 21 Apr 2011 02:49:37 +0000 (22:49 -0400)]
Allow ALTER TYPE .. ADD ATTRIBUTE .. CASCADE to recurse to descendants.

Without this, adding an attribute to a typed table with an inheritance
child fails, which is surprising.

Noah Misch, with minor changes by me.

13 years agoFix use of incorrect constant RemoveRoleFromObjectACL.
Robert Haas [Thu, 21 Apr 2011 02:23:58 +0000 (22:23 -0400)]
Fix use of incorrect constant RemoveRoleFromObjectACL.

This could cause failures when DROP OWNED BY attempt to remove default
privileges on sequences.  Back-patching to 9.0.

Shigeru Hanada

13 years agoTypo fix.
Robert Haas [Thu, 21 Apr 2011 02:05:16 +0000 (22:05 -0400)]
Typo fix.

13 years agoAllow ALTER TABLE name {OF type | NOT OF}.
Robert Haas [Thu, 21 Apr 2011 01:35:15 +0000 (21:35 -0400)]
Allow ALTER TABLE name {OF type | NOT OF}.

This syntax allows a standalone table to be made into a typed table,
or a typed table to be made standalone.  This is possibly a mildly
useful feature in its own right, but the real motivation for this
change is that we need it to make pg_upgrade work with typed tables.
This doesn't actually fix that problem, but it's necessary
infrastructure.

Noah Misch

13 years agoFix bugs in indexing of in-doubt HOT-updated tuples.
Tom Lane [Thu, 21 Apr 2011 00:34:11 +0000 (20:34 -0400)]
Fix bugs in indexing of in-doubt HOT-updated tuples.

If we find a DELETE_IN_PROGRESS HOT-updated tuple, it is impossible to know
whether to index it or not except by waiting to see if the deleting
transaction commits.  If it doesn't, the tuple might again be LIVE, meaning
we have to index it.  So wait and recheck in that case.

Also, we must not rely on ii_BrokenHotChain to decide that it's possible to
omit tuples from the index.  That could result in omitting tuples that we
need, particularly in view of yesterday's fixes to not necessarily set
indcheckxmin (but it's broken even without that, as per my analysis today).
Since this is just an extremely marginal performance optimization, dropping
the test shouldn't hurt.

These cases are only expected to happen in system catalogs (they're
possible there due to early release of RowExclusiveLock in most
catalog-update code paths).  Since reindexing of a system catalog isn't a
particularly performance-critical operation anyway, there's no real need to
be concerned about possible performance degradation from these changes.

The worst aspects of this bug were introduced in 9.0 --- 8.x will always
wait out a DELETE_IN_PROGRESS tuple.  But I think dropping index entries
on the strength of ii_BrokenHotChain is dangerous even without that, so
back-patch removal of that optimization to 8.3 and 8.4.

13 years agoSet indcheckxmin true when REINDEX fixes an invalid or not-ready index.
Tom Lane [Wed, 20 Apr 2011 23:01:20 +0000 (19:01 -0400)]
Set indcheckxmin true when REINDEX fixes an invalid or not-ready index.

Per comment from Greg Stark, it's less clear that HOT chains don't conflict
with the index than it would be for a valid index.  So, let's preserve the
former behavior that indcheckxmin does get set when there are
potentially-broken HOT chains in this case.  This change does not cause any
pg_index update that wouldn't have happened anyway, so we're not
re-introducing the previous bug with pg_index updates, and surely the case
is not significant from a performance standpoint; so let's be as
conservative as possible.

13 years agoMake plan_cluster_use_sort cope with no IndexOptInfo for the target index.
Tom Lane [Wed, 20 Apr 2011 21:43:34 +0000 (17:43 -0400)]
Make plan_cluster_use_sort cope with no IndexOptInfo for the target index.

The original coding assumed that such a case represents caller error, but
actually get_relation_info will omit generating an IndexOptInfo for any
index it thinks is unsafe to use.  Therefore, handle this case by returning
"true" to indicate that a seqscan-and-sort is the preferred way to
implement the CLUSTER operation.  New bug in 9.1, no backpatch needed.
Per bug #5985 from Daniel Grace.

13 years agoFix PL/Python traceback for error in separate file
Peter Eisentraut [Wed, 20 Apr 2011 20:19:04 +0000 (23:19 +0300)]
Fix PL/Python traceback for error in separate file

It assumed that the lineno from the traceback always refers to the
PL/Python function.  If you created a PL/Python function that imports
some code, runs it, and that code raises an exception, PLy_traceback
would get utterly confused.

Now we look at the file name reported with the traceback and only
print the source line if it came from the PL/Python function.

Jan Urbański

13 years agoPg_upgrade C comment addition.
Bruce Momjian [Wed, 20 Apr 2011 09:44:45 +0000 (05:44 -0400)]
Pg_upgrade C comment addition.

Document why we do the missing new database check during the check
phase.

13 years agoQuotes in strings injected into bki file need to escaped. In particular,
Heikki Linnakangas [Wed, 20 Apr 2011 06:49:44 +0000 (09:49 +0300)]
Quotes in strings injected into bki file need to escaped. In particular,
"People's Republic of China" locale on Windows was causing initdb to fail.

This fixes bug #5818 reported by yulei. On master, this makes the mapping
of "People's Republic of China" to just "China" obsolete. In 9.0 and 8.4,
just fix the escaping. Earlier versions didn't have locale names in bki
file.

13 years agoThrow error for mismatched pg_upgrade clusters
Bruce Momjian [Wed, 20 Apr 2011 01:00:29 +0000 (21:00 -0400)]
Throw error for mismatched pg_upgrade clusters

If someone removes the 'postgres' database from the old cluster and the
new cluster has a 'postgres' database, the number of databases will not
match.  We actually could upgrade such a setup, but it would violate the
1-to-1 mapping of database counts, so we throw an error instead.

Previously they got an error during the upgrade, and not at the check
stage; PG 9.0.4 does the same.

13 years agoAdd C comment
Bruce Momjian [Tue, 19 Apr 2011 23:14:39 +0000 (19:14 -0400)]
Add C comment

Add C comment about why we throw an error if the pg_upgrade old/new
database counts don't match.

13 years agoAvoid changing an index's indcheckxmin horizon during REINDEX.
Tom Lane [Tue, 19 Apr 2011 22:50:56 +0000 (18:50 -0400)]
Avoid changing an index's indcheckxmin horizon during REINDEX.

There can never be a need to push the indcheckxmin horizon forward, since
any HOT chains that are actually broken with respect to the index must
pre-date its original creation.  So we can just avoid changing pg_index
altogether during a REINDEX operation.

This offers a cleaner solution than my previous patch for the problem
found a few days ago that we mustn't try to update pg_index while we are
reindexing it.  System catalog indexes will always be created with
indcheckxmin = false during initdb, and with this modified code we should
never try to change their pg_index entries.  This avoids special-casing
system catalogs as the former patch did, and should provide a performance
benefit for many cases where REINDEX formerly caused an index to be
considered unusable for a short time.

Back-patch to 8.3 to cover all versions containing HOT.  Note that this
patch changes the API for index_build(), but I believe it is unlikely that
any add-on code is calling that directly.

13 years agoRevert "Prevent incorrect updates of pg_index while reindexing pg_index itself."
Tom Lane [Tue, 19 Apr 2011 20:55:34 +0000 (16:55 -0400)]
Revert "Prevent incorrect updates of pg_index while reindexing pg_index itself."

This reverts commit 4b6106ccfea21e86943f881edcf3cfc03661a415 of 2011-04-15.
There's a better way to do it, which will follow shortly.

13 years agoRefix the unaccent regression test on MSVC properly
Peter Eisentraut [Tue, 19 Apr 2011 19:52:52 +0000 (22:52 +0300)]
Refix the unaccent regression test on MSVC properly

... for some value of "properly".  Instead of overriding REGRESS_OPTS,
set the variables ENCODING and NO_LOCALE, which is more expressive and
allows overriding by the user.  Fix vcregress.pl to handle that.

13 years agoTreat config.pl as optional in vcregress.pl
Peter Eisentraut [Tue, 19 Apr 2011 19:01:15 +0000 (22:01 +0300)]
Treat config.pl as optional in vcregress.pl

This is how build.pl treats it and how it's documented.

13 years agoFix typo
Peter Eisentraut [Tue, 19 Apr 2011 19:00:35 +0000 (22:00 +0300)]
Fix typo

13 years agoAdd gitignore entries for Windows MSVC builds
Peter Eisentraut [Tue, 19 Apr 2011 17:04:41 +0000 (20:04 +0300)]
Add gitignore entries for Windows MSVC builds

13 years agoAvoid unused variable warnings for certain configurations
Peter Eisentraut [Tue, 19 Apr 2011 17:01:51 +0000 (20:01 +0300)]
Avoid unused variable warnings for certain configurations

13 years agoRefrain from canonicalizing a client_encoding setting of "UNICODE".
Tom Lane [Tue, 19 Apr 2011 16:17:13 +0000 (12:17 -0400)]
Refrain from canonicalizing a client_encoding setting of "UNICODE".

While "UTF8" is the correct name for this encoding, existing JDBC drivers
expect that if they send "UNICODE" it will read back the same way; they
fail with an opaque "Protocol error" complaint if not.  This will be fixed
in the 9.1 drivers, but until older drivers are no longer in use in the
wild, we'd better leave "UNICODE" alone.  Continue to canonicalize all
other inputs.  Per report from Steve Singer and subsequent discussion.

13 years agoSilence compiler warning about casting HANDLE to long on WIN64.
Andrew Dunstan [Tue, 19 Apr 2011 15:21:00 +0000 (11:21 -0400)]
Silence compiler warning about casting HANDLE to long on WIN64.

13 years agoSilence compiler warning about unused variable on Windows.
Heikki Linnakangas [Tue, 19 Apr 2011 11:54:48 +0000 (14:54 +0300)]
Silence compiler warning about unused variable on Windows.

13 years agoFix handling of collations in multi-row VALUES constructs.
Tom Lane [Mon, 18 Apr 2011 19:31:52 +0000 (15:31 -0400)]
Fix handling of collations in multi-row VALUES constructs.

Per spec we ought to apply select_common_collation() across the expressions
in each column of the VALUES table.  The original coding was just taking
the first row and assuming it was representative.

This patch adds a field to struct RangeTblEntry to carry the resolved
collations, so initdb is forced for changes in stored rule representation.

13 years agoOnly allow typed tables to hang off composite types, not e.g. tables.
Robert Haas [Mon, 18 Apr 2011 14:13:34 +0000 (10:13 -0400)]
Only allow typed tables to hang off composite types, not e.g. tables.

This also ensures that we take a relation lock on the composite type when
creating a typed table, which is necessary to prevent the composite type
and the typed table from getting out of step in the face of concurrent
DDL.

Noah Misch, with some changes.

13 years agoAttempt to remedy buildfarm breakage caused by commit f536d4194.
Andrew Dunstan [Mon, 18 Apr 2011 13:27:30 +0000 (09:27 -0400)]
Attempt to remedy buildfarm breakage caused by commit f536d4194.

13 years agorecoveryStopsHere() must check the resource manager ID.
Robert Haas [Mon, 18 Apr 2011 12:27:19 +0000 (08:27 -0400)]
recoveryStopsHere() must check the resource manager ID.

Before commit c016ce728139be95bb0dc7c4e5640507334c2339, this wasn't
needed, but now that multiple resource manager IDs can percolate down
through here, we have to make sure we know which one we've got.
Otherwise, we can confuse (for example) an XLOG_XACT_COMMIT record
with an XLOG_CHECKPOINT_SHUTDOWN record.

Review by Jaime Casanova

13 years agoFix assorted infelicities in collation handling in psql's describe.c.
Tom Lane [Sun, 17 Apr 2011 22:09:22 +0000 (18:09 -0400)]
Fix assorted infelicities in collation handling in psql's describe.c.

In \d, be more careful to print collation only if it's not the default for
the column's data type.  Avoid assuming that the name "default" is magic.

Fix \d on a composite type so that it will print per-column collations.
It's no longer the case that a composite type cannot have modifiers.
(In consequence, the expected outputs for composite-type regression tests
change.)

Fix \dD so that it will print collation for a domain, again only if it's
not the same as the base type's collation.

13 years agoDocument COLLATE option in CREATE TYPE reference page.
Tom Lane [Sun, 17 Apr 2011 21:05:51 +0000 (17:05 -0400)]
Document COLLATE option in CREATE TYPE reference page.

Curiously, it was already documented in ALTER TYPE ADD ATTRIBUTE, but
not here.

13 years agoFix pg_dump to handle collations applied to columns of composite types.
Tom Lane [Sun, 17 Apr 2011 20:55:04 +0000 (16:55 -0400)]
Fix pg_dump to handle collations applied to columns of composite types.

CREATE TYPE and ALTER TYPE ADD ATTRIBUTE handle this, so I suppose it's
an intended feature, but pg_dump didn't know about it.

13 years agoAdd check for matching column collations in ALTER TABLE ... INHERIT.
Tom Lane [Sun, 17 Apr 2011 20:22:13 +0000 (16:22 -0400)]
Add check for matching column collations in ALTER TABLE ... INHERIT.

The other DDL operations that create an inheritance relationship were
checking for collation match already, but this one got missed.

Also fix comments that failed to mention collation checks.