OSDN Git Service

pg-rex/syncrep.git
12 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.

12 years agoMake the visibility map crash-safe.
Robert Haas [Wed, 22 Jun 2011 03:04:40 +0000 (23:04 -0400)]
Make the visibility map crash-safe.

This involves two main changes from the previous behavior.  First,
when we set a bit in the visibility map, emit a new WAL record of type
XLOG_HEAP2_VISIBLE.  Replay sets the page-level PD_ALL_VISIBLE bit and
the visibility map bit.  Second, when inserting, updating, or deleting
a tuple, we can no longer get away with clearing the visibility map
bit after releasing the lock on the corresponding heap page, because
an intervening crash might leave the visibility map bit set and the
page-level bit clear.  Making this work requires a bit of interface
refactoring.

In passing, a few minor but related cleanups: change the test in
visibilitymap_set and visibilitymap_clear to throw an error if the
wrong page (or no page) is pinned, rather than silently doing nothing;
this case should never occur.  Also, remove duplicate definitions of
InvalidXLogRecPtr.

Patch by me, review by Noah Misch.

12 years agoAdd some regression tests for serial pseudotypes.
Robert Haas [Wed, 22 Jun 2011 02:57:08 +0000 (22:57 -0400)]
Add some regression tests for serial pseudotypes.

Josh Kupershmidt

12 years agoAdd smallserial pseudotype.
Robert Haas [Wed, 22 Jun 2011 02:52:52 +0000 (22:52 -0400)]
Add smallserial pseudotype.

This is just like serial and bigserial, except it generates an int2
column rather than int4 or int8.

Mike Pultz, reviewed by Brar Piening and Josh Kupershmidt

12 years agoMake deadlock_timeout PGC_SUSET rather than PGC_SIGHUP.
Robert Haas [Wed, 22 Jun 2011 02:32:30 +0000 (22:32 -0400)]
Make deadlock_timeout PGC_SUSET rather than PGC_SIGHUP.

This allows deadlock_timeout to be reduced for transactions that are
particularly likely to be involved in a deadlock, thus detecting it
more quickly.  It is also potentially useful as a poor-man's deadlock
priority mechanism: a transaction with a high deadlock_timeout is less
likely to be chosen as the victim than one with a low
deadlock_timeout.  Since that could be used to game the system, we
make this PGC_SUSET rather than PGC_USERSET.

At some point, it might be worth thinking about a more explicit
priority mechanism, since using this is far from fool-proof.  But
let's see whether there's enough use case to justify the additional
work before we go down that route.

Noah Misch, reviewed by Shigeru Hanada

12 years agoAdd notion of a "transform function" that can simplify function calls.
Robert Haas [Wed, 22 Jun 2011 02:15:24 +0000 (22:15 -0400)]
Add notion of a "transform function" that can simplify function calls.

Initially, we use this only to eliminate calls to the varchar()
function in cases where the length is not being reduced and, therefore,
the function call is equivalent to a RelabelType operation.  The most
significant effect of this is that we can avoid a table rewrite when
changing a varchar(X) column to a varchar(Y) column, where Y > X.

Noah Misch, reviewed by me and Alexey Klyukin

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

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

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

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

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

12 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

12 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

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

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

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

12 years agoRemove extra copying of TupleDescs for heap_create_with_catalog
Alvaro Herrera [Fri, 17 Jun 2011 13:43:32 +0000 (09:43 -0400)]
Remove extra copying of TupleDescs for heap_create_with_catalog

Some callers were creating copies of tuple descriptors to pass to that
function, stating in code comments that it was necessary because it
modified the passed descriptor.  Code inspection reveals this not to be
true, and indeed not all callers are passing copies in the first place.
So remove the extra ones and the misleading comments about this behavior
as well.

12 years agoFixed string in German translation that causes segfault.
Michael Meskes [Mon, 20 Jun 2011 11:53:15 +0000 (13:53 +0200)]
Fixed string in German translation that causes segfault.

Applied patch by Christoph Berg <cb@df7cb.de> to replace placeholder "%s" by
correct string.

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

12 years agoAdd REL9_1_STABLE to the set of branches tracked by git_changelog.
Tom Lane [Sun, 19 Jun 2011 18:16:41 +0000 (14:16 -0400)]
Add REL9_1_STABLE to the set of branches tracked by git_changelog.

12 years agoFix thinko in previous patch to always update pg_class.reltuples/relpages.
Tom Lane [Sun, 19 Jun 2011 18:00:48 +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.

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

12 years agoMake external_pid_file world readable
Peter Eisentraut [Sat, 18 Jun 2011 21:34:32 +0000 (00:34 +0300)]
Make external_pid_file world readable

12 years agoRemove redundant lib*dll.def rules from .gitignore
Magnus Hagander [Sat, 18 Jun 2011 16:26:35 +0000 (18:26 +0200)]
Remove redundant lib*dll.def rules from .gitignore

Since we now have a global rule in the root .gitignore,
there's no need to keep directory-specific ones as well.

Noted by Peter Eisentraut

12 years agoDon't use "cp -i" in the example WAL archive_command.
Tom Lane [Fri, 17 Jun 2011 23:13:03 +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.

12 years agoSet FLEXIBLE_ARRAY_MEMBER to empty for MSVC.
Andrew Dunstan [Fri, 17 Jun 2011 22:22:03 +0000 (18:22 -0400)]
Set FLEXIBLE_ARRAY_MEMBER to empty for MSVC.

Per gripe from Tom Lane. I have tested this with VC 2008, and assume
it will work with earlier versions.

12 years agoObtain table locks as soon as practical during pg_dump.
Tom Lane [Fri, 17 Jun 2011 22:19:02 +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.

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

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

12 years agoFix minor thinko in ProcGlobalShmemSize().
Robert Haas [Fri, 17 Jun 2011 13:12:19 +0000 (09:12 -0400)]
Fix minor thinko in ProcGlobalShmemSize().

There's no need to add space for startupBufferPinWaitBufId, because
it's part of the PROC_HDR object for which this function already
allocates space.

This has been wrong for a while, but the only consequence is that our
shared memory allocation is increased by 4 bytes, so no back-patch.

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

Per Josh Kupershmidt and Tom Lane.

12 years agoDefine FLEXIBLE_ARRAY_MEMBER for MSVC.
Andrew Dunstan [Fri, 17 Jun 2011 02:30:24 +0000 (22:30 -0400)]
Define FLEXIBLE_ARRAY_MEMBER for MSVC.

12 years agoIndex tuple data arrays using Anum_xxx symbolic constants instead of "i++".
Tom Lane [Thu, 16 Jun 2011 21:03:58 +0000 (17:03 -0400)]
Index tuple data arrays using Anum_xxx symbolic constants instead of "i++".

We had already converted most places to this style, but this patch gets the
last few that were still doing it the old way.  The main advantage is that
this exposes a greppable name for each target column, rather than having
to rely on comments (which a couple of places failed to provide anyhow).

Richard Hopkins, additional work by me to clean up update_attstats() too

12 years agoAvoid compiler warnings due to possibly unused variables
Peter Eisentraut [Thu, 16 Jun 2011 20:38:46 +0000 (23:38 +0300)]
Avoid compiler warnings due to possibly unused variables

gcc 4.6 complains about these because of the new option
-Wunused-but-set-variable which comes in with -Wall, so cast them to
void, which avoids the warning.

12 years agoStart using flexible array members
Peter Eisentraut [Thu, 16 Jun 2011 19:39:09 +0000 (22:39 +0300)]
Start using flexible array members

Flexible array members are a C99 feature that avoids "cheating" in the
declaration of variable-length arrays at the end of structs.  With
Autoconf support, this should be transparent for older compilers.

We start with one use in gist.h because gcc 4.6 started to raise a
warning there.  Over time, it can be expanded to other places in the
source, but they will likely need some review of sizeof and offsetof
usage.  The current change in gist.h appears to be safe in this
regard.

12 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

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

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

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

Kevin Grittner

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

Noah Misch and Simon Riggs

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

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

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

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

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

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

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

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

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

Back-patch to 8.4, where tuplestore_putvalues was introduced.

Per bug #6061 from Yann Delorme.

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

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

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

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

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

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

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

This matches what \d actually accepts.

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

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

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

Per suggestsion from #postgresql irc channel.

Backpatch to 9.1.

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

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

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

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

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

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

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

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

Per note from Tom

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

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

The original wording was a bit confusing.

Per an observation from David Wheeler.

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

Per a gripe from Tom Lane.

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

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

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

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

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

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

Spotted by Jaime Casanova

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

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

Greg Smith

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

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

As suggested by Brendan Jurd

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

As suggested by Grzegorz Szpetkowski.

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

Brendan Jurd

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

Fujii Masao

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

Noted by Daniele Varrazzo.

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

Fujii Masao

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

Shigeru Hanada, with some additional wordsmithing by me

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

Kevin Grittner

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

Shigeru Hanada, with a minor grammar correction.

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

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

Review by Tom Lane.

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

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

Josh Kupershmidt, with some kibitzing by me.

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

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

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

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

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

Tom Lane, with some cosmetic suggestions from Alex Hunsaker

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Also do some desultory copy-editing on the notes.

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

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

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

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

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

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

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

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

Kevin Grittner and me.

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

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

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

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

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

MauMau

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

Noted by Radosław Smogura

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

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

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

closes bug #5926

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

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

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

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

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

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

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

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

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

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

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

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