Simon Riggs [Tue, 6 Oct 2009 11:50:13 +0000 (12:50 +0100)]
 
Apply 0017-Revert-changes-to-subtrans.c-and-slru.c.-Instead-cal.patch but with heavy modifications to fix a number of bugs and make associated changes. First, StartupSubtrans() positioned itself at oldestXid, so that when later running transactions complete they could find no page for them to update and crash. Second, ExtendClog() expected to be able to write WAL during recovery and so crashed after 32768 xids. This patch also extends the patch to cover the recently added support for starting Hot Standby from a shutdown checkpoint, which causes some refactoring. Various comments reworded, including allowing a lock overflow to cause a PENDING state, just as we do with subxid overflow. Another bug was also found, in that failing to make subtrans entries from the initial snapshot could lead to later abort records hanging because the topxid was not set. Code is now similar in all code paths. Sounds like a lot of changes, but mostly subtle changes rather than lengthy ones.
Simon Riggs [Tue, 6 Oct 2009 09:20:58 +0000 (10:20 +0100)]
 
Apply 0013-Remove-dead-memset-call.patch
Simon Riggs [Mon, 5 Oct 2009 21:13:59 +0000 (22:13 +0100)]
 
Minor comment change
Simon Riggs [Mon, 5 Oct 2009 19:33:05 +0000 (20:33 +0100)]
 
Put back code marked "do not remove" to avoid errors on commit and abort records that haven't previously notified recovery of their xids. Strangely this is the second time I've put that code back, hence the previous "do not remove" comment.
Simon Riggs [Mon, 5 Oct 2009 14:13:37 +0000 (15:13 +0100)]
 
Apply 0014-Make-locking-of-ShmemVariableCache-nextXid-in-multix.patch
Simon Riggs [Mon, 5 Oct 2009 14:09:47 +0000 (15:09 +0100)]
 
Apply 0010-Make-recoveryTargetMode-an-enum.patch
Simon Riggs [Mon, 5 Oct 2009 13:59:10 +0000 (14:59 +0100)]
 
Apply 0009-Use-ereport-rather-than-elog-for-user-facing-errors..patch. Prevents non-normal xids from being specified during recovery, which is still allowed for recovery_target_xid.
Simon Riggs [Mon, 5 Oct 2009 13:52:36 +0000 (14:52 +0100)]
 
Apply heikki1/0012-Don-t-hold-RecoveryInfoLock-over-lock-sleep.patch
Simon Riggs [Mon, 5 Oct 2009 13:49:52 +0000 (14:49 +0100)]
 
Apply 0010-Use-right-codes-for-conflictMode.-Whitespace-comment.patch
Simon Riggs [Mon, 5 Oct 2009 13:44:18 +0000 (14:44 +0100)]
 
Apply 0009-Simplify-RelationReleaseRecoveryLocks-to-manage-with.patch
Simon Riggs [Mon, 5 Oct 2009 13:31:07 +0000 (14:31 +0100)]
 
Apply 0008-Don-t-try-to-pin-and-lock-every-page-in-replay-of-b-.patch
All Good.
Simon Riggs [Mon, 5 Oct 2009 13:28:34 +0000 (14:28 +0100)]
 
Apply 0007-Need-to-pin-and-take-cleanup-lock-on-every-b-tree-le.patch with some docs changes.
All code changes approved, especially the neat tweak to improve performance in btree vacuum.
Simon Riggs [Mon, 5 Oct 2009 13:17:20 +0000 (14:17 +0100)]
 
Make some changes to code and comments in KnownAssignedXids functions. Based upon changes in 0006-Fix-comments-in-known-assigned-xids-module-about-whe.patch, but one XXX comment replaced by a code change. The comment change to say that KnownAssignedXidsRemove needs only a share lock is wrong and has not been applied.
Simon Riggs [Mon, 5 Oct 2009 13:03:07 +0000 (14:03 +0100)]
 
Apply Heikki's 0003-Simplify-unreported-xid-tracking.patch which re-writes his re-write of how that works, so that it fixes a bug in the way the previous version worked.
Simon Riggs [Mon, 5 Oct 2009 12:50:57 +0000 (13:50 +0100)]
 
Add refactor patch 0013-Use-plain-old-XLogNeedsFlush-instead-of-the-new-DBCo.patch
Simon Riggs [Mon, 5 Oct 2009 12:43:01 +0000 (13:43 +0100)]
 
Apply Heikki's changes to replace RecordKnownAssignedTransactionIds() back to the way it was in November 2008. Hey ho.
Patch 0014-Call-RecordKnownAssignedTransactionIds-once-just-bef.patch
Simon Riggs [Mon, 5 Oct 2009 11:16:11 +0000 (12:16 +0100)]
 
Apply changes from Heikki's 0005-Make-sure-we-hold-ProcArrayLock-while-we-set-recover.patch
Simon Riggs [Mon, 5 Oct 2009 11:08:11 +0000 (12:08 +0100)]
 
Apply changes from Heikki's 0004-Fix-off-by-one-error-in-GetConflictingVirtualXIDs.-W.patch
Simon Riggs [Mon, 5 Oct 2009 11:02:59 +0000 (12:02 +0100)]
 
Apply changes from Heikki's 0003-Advance-ShmemVariableCache-nextXid-before-marking-xi.patch.
Simon Riggs [Mon, 5 Oct 2009 10:57:34 +0000 (11:57 +0100)]
 
Apply changes from Heikki's 001-Remove-now-unnecessary-extern-declaration.patch 28-Sep
Simon Riggs [Mon, 5 Oct 2009 10:54:37 +0000 (11:54 +0100)]
 
Apply changes from Heikki's patch 0015-merge-initLatestRunningXactData.. etc.
Reworks 2 boolean variables into a 3-state variable. In a seperate change, that patch also included API changes to two other functions, one for streamlining, one because of an unused variable.
Also update ProcArrayInitRecoveryInfo() so that it reflects these changes.
Simon Riggs [Mon, 5 Oct 2009 10:23:05 +0000 (11:23 +0100)]
 
Apply remaining minor docs changes from Heikki's patch 0016-Oops-check...
Simon Riggs [Mon, 5 Oct 2009 10:18:03 +0000 (11:18 +0100)]
 
Apply changes from Heikki's patch 0002-Comment-whitespace.. etc
Which contained some code changes as well, all very minor, all approved.
Simon Riggs [Mon, 5 Oct 2009 10:04:52 +0000 (11:04 +0100)]
 
Apply changes from Heikki's patch 001-Remove-some-dead-code... etc
Minor comment editing by me
Simon Riggs [Mon, 5 Oct 2009 08:12:44 +0000 (09:12 +0100)]
 
Small doc change. max_standby_delay = -1 during archive recovery
Simon Riggs [Fri, 2 Oct 2009 20:28:14 +0000 (21:28 +0100)]
 
Resolve a race condition on update of ShmemVariableCache->latestCompletedXid,
plus use XidGenLock during xact_redo_abort() as in xact_redo_commit().
Some changes direct from Heikki, others address code review comments from Heikki.
Simon Riggs [Fri, 2 Oct 2009 19:57:01 +0000 (20:57 +0100)]
 
First cut at being able to use shutdown checkpoints as valid starting places for Hot Standby.
Simon Riggs [Fri, 2 Oct 2009 13:07:49 +0000 (14:07 +0100)]
 
Revert all recent changes about shutdown checkpoints and GetRunningTransactionData() and put item back on todo list, for now.
Simon Riggs [Fri, 2 Oct 2009 09:50:32 +0000 (10:50 +0100)]
 
Re-arrange placement of GetRunningTransactionData() so that
it occurs in same place always, whatever mode we are in. Call now occurs after we get REDO pointer for checkpoint yet before we checkpoint and write the checkpoint WAL record.
Simon Riggs [Fri, 2 Oct 2009 07:33:44 +0000 (08:33 +0100)]
 
Add in extra GetRunningTransactionData after shutdown checkpoint.
Simon Riggs [Thu, 1 Oct 2009 16:39:28 +0000 (17:39 +0100)]
 
TransactionIdIsInProgress() must check KnownAssignedXids.
Simon Riggs [Thu, 1 Oct 2009 15:37:59 +0000 (16:37 +0100)]
 
When we ExpireOldKnownAssignedTransactionIds() we must also remove any locks that may have been held by those stale transactions. We now call RelationReleaseOldRecoveryLocks() to ensure locks are cleared up.
Simon Riggs [Thu, 1 Oct 2009 15:18:07 +0000 (16:18 +0100)]
 
Document recommendation to set max_standby_delay = 0 during archive recovery.
Simon Riggs [Thu, 1 Oct 2009 15:17:09 +0000 (16:17 +0100)]
 
Remove any changes to StartupMultiXact(). MultiXact is never accessed at this point in startup sequence, so locking changes are not required for Hot Standby patch.
Simon Riggs [Thu, 1 Oct 2009 15:11:51 +0000 (16:11 +0100)]
 
Do GetRunningTransactionData() immediately prior to a shutdown checkpoint.
Simon Riggs [Thu, 1 Oct 2009 15:04:23 +0000 (16:04 +0100)]
 
Remove special handling of very long standby delays.
Simon Riggs [Sat, 26 Sep 2009 09:42:46 +0000 (10:42 +0100)]
 
Minor code correction on query cancel
Simon Riggs [Sat, 26 Sep 2009 09:37:54 +0000 (10:37 +0100)]
 
Further changes to ensure cancelation correct
Simon Riggs [Fri, 25 Sep 2009 20:19:06 +0000 (21:19 +0100)]
 
CONFLICT_MODE_ERROR_IF_NOT_IDLE must be treated as CONFLICT_MODE_ERROR if we still have a snapshot registered. Right now that equates to CONFLICT_MODE_FATAL though that may change in the future.
Simon Riggs [Fri, 25 Sep 2009 20:06:46 +0000 (21:06 +0100)]
 
Prevent LOCK TABLE during recovery and update docs accordingly.
Simon Riggs [Fri, 25 Sep 2009 18:23:14 +0000 (19:23 +0100)]
 
Corrected logic in XidInMVCCSnapshot()
Simon Riggs [Fri, 25 Sep 2009 12:51:00 +0000 (13:51 +0100)]
 
Updated log message and docs caveat about delayed start of hot standby queries.
Simon Riggs [Fri, 25 Sep 2009 12:21:07 +0000 (13:21 +0100)]
 
Docs changes, mostly typos and grammar correction. Many from Heikki 21 Sep
Simon Riggs [Fri, 25 Sep 2009 11:58:33 +0000 (12:58 +0100)]
 
Remove some unused code from older version of HS per Heikki, 21 Sep
Simon Riggs [Fri, 25 Sep 2009 11:47:15 +0000 (12:47 +0100)]
 
Clarify Hot Standby processing for GIN and GIST indexes by more descriptive comments.
Simon Riggs [Fri, 25 Sep 2009 11:35:33 +0000 (12:35 +0100)]
 
Revoke changes to WAL_DEBUG per Jeff Janes. Separate patch to implement similar changes later.
Simon Riggs [Fri, 25 Sep 2009 11:30:39 +0000 (12:30 +0100)]
 
Hot Standby patch 0.2.1 as submitted Sept 15
Tom Lane [Wed, 23 Sep 2009 15:41:51 +0000 (15:41 +0000)]
 
Improve example for DO, per Petr Jelinek.
Peter Eisentraut [Tue, 22 Sep 2009 23:52:53 +0000 (23:52 +0000)]
 
Unicode escapes in E'...' strings
Author: Marko Kreen <markokr@gmail.com>
Tom Lane [Tue, 22 Sep 2009 23:43:43 +0000 (23:43 +0000)]
 
Implement the DO statement to support execution of PL code without having
to create a function for it.
Procedural languages now have an additional entry point, namely a function
to execute an inline code block.  This seemed a better design than trying
to hide the transient-ness of the code from the PL.  As of this patch, only
plpgsql has an inline handler, but probably people will soon write handlers
for the other standard PLs.
In passing, remove the long-dead LANCOMPILER option of CREATE LANGUAGE.
Petr Jelinek
Tom Lane [Tue, 22 Sep 2009 15:46:35 +0000 (15:46 +0000)]
 
Fix crash if a DROP is attempted on an internally-dependent object.
Introduced in 8.4 rewrite of dependency.c.
Per bug #5072 from Amit Khandekar.
Peter Eisentraut [Mon, 21 Sep 2009 22:22:07 +0000 (22:22 +0000)]
 
Surrogate pair support for U& string and identifier syntax
This is mainly to make the functionality consistent with the proposed \u
escape syntax.
Bruce Momjian [Mon, 21 Sep 2009 20:20:56 +0000 (20:20 +0000)]
 
fsync test files
Prevent creation of 16GB files during fsync testing; only create 16MB
files;  backpatch to 8.4.X.
Tom Lane [Mon, 21 Sep 2009 20:10:21 +0000 (20:10 +0000)]
 
Define a new, more extensible syntax for COPY options.
This is intentionally similar to the recently revised syntax for EXPLAIN
options, ie, (name value, ...).  The old syntax is still supported for
backwards compatibility, but we intend that any options added in future
will be provided only in the new syntax.
Robert Haas, Emmanuel Cecchet
Tom Lane [Sun, 20 Sep 2009 01:53:32 +0000 (01:53 +0000)]
 
Allow plpgsql IN parameters to be assigned to.  Since the parameters are just
preinitialized local variables, this does not affect the function's semantics
as seen by callers; allowing assignment simply avoids the need to create more
local variables in some cases.  In any case we were being rather inconsistent
since only scalar parameters were getting marked constant.
No documentation change, since parameters were never documented as being
marked constant anyway.
Steve Prentice
Tom Lane [Sat, 19 Sep 2009 21:51:21 +0000 (21:51 +0000)]
 
Remove a couple hundred lines of ugly and tedious-to-maintain code by not
trying to parse COPY options exactly in psql's \copy support.  Instead,
just send the options as-is and let the backend sort it out.
Emmanuel Cecchet
Tom Lane [Sat, 19 Sep 2009 18:50:18 +0000 (18:50 +0000)]
 
sql_help.c needs to be cvsignore'd.
Tom Lane [Sat, 19 Sep 2009 17:48:09 +0000 (17:48 +0000)]
 
Rename new subroutine, per discussion with Robert Haas.
Peter Eisentraut [Sat, 19 Sep 2009 10:23:27 +0000 (10:23 +0000)]
 
Make the placeholder naming in the synopses of the SQL help more consistent
Andrew Dunstan [Sat, 19 Sep 2009 05:56:50 +0000 (05:56 +0000)]
 
Fix MSVC build breakage from psql help changes. Per Josh Williams.
Tom Lane [Fri, 18 Sep 2009 20:01:13 +0000 (20:01 +0000)]
 
A bit more wordsmithing on the COPY CSV NULL business.
Tom Lane [Fri, 18 Sep 2009 17:24:51 +0000 (17:24 +0000)]
 
Marginal code cleanup in joinpath.c: factor out clause variable-membership
tests into a small common subroutine, and eliminate an unnecessary difference
in the order in which conditions are tested.  Per a comment from Robert Haas.
Teodor Sigaev [Fri, 18 Sep 2009 14:01:56 +0000 (14:01 +0000)]
 
Fix incorrect arguments for gist_box_penalty call. The bug could be observed
only for secondary page split (i.e. for non-first columns of index)
 Patch by Paul Ramsey <pramsey@opengeo.org>
Michael Meskes [Fri, 18 Sep 2009 13:13:32 +0000 (13:13 +0000)]
 
Added patch by Bernd Helmle <bernd.helmle@credativ.de> that adds a low level
function that returns the current transaction status.
Peter Eisentraut [Fri, 18 Sep 2009 05:00:42 +0000 (05:00 +0000)]
 
Easier to translate psql help
Instead of requiring translators to translate the entire SQL command
synopses, change create_help.pl to only require them to translate the
placeholders, and paste those into the synopsis using a printf mechanism.
Make some small updates to the markup to make it easier to parse.
Note: This causes msgmerge of gettext 0.17 to segfault.  You will need
the patch from https://savannah.gnu.org/bugs/?27474 to make it work.
msgmerge usually only runs on babel.postgresql.org, however.
Bruce Momjian [Thu, 17 Sep 2009 21:49:15 +0000 (21:49 +0000)]
 
CSV NULL Documentation
Update docs to clearly explain NULL value matching behavior, per Andrew.
Backpatch to 8.4.X.
Peter Eisentraut [Thu, 17 Sep 2009 21:15:18 +0000 (21:15 +0000)]
 
Improve wording of error message when a postgresql.conf setting is
ignored because it can only be set at server start.  In particular,
hiding the main reason in the detail message was suboptimal.
Bruce Momjian [Thu, 17 Sep 2009 21:13:01 +0000 (21:13 +0000)]
 
CVS NULL Documentation
Clearify documentation of CVS's output of NULL values, per suggestion
from Magnus.
Backpatch to 8.4.X.
Peter Eisentraut [Thu, 17 Sep 2009 20:54:03 +0000 (20:54 +0000)]
 
When reloading postgresql.conf, log what parameters actually changed
Tom Lane [Thu, 17 Sep 2009 20:49:29 +0000 (20:49 +0000)]
 
Implement "join removal" for cases where the inner side of a left join
is unique and is not referenced above the join.  In this case the inner
side doesn't affect the query result and can be thrown away entirely.
Although perhaps nobody would ever write such a thing by hand, it's
a reasonably common case in machine-generated SQL.
The current implementation only recognizes the case where the inner side
is a simple relation with a unique index matching the query conditions.
This is enough for the use-cases that have been shown so far, but we
might want to try to handle other cases later.
Robert Haas, somewhat rewritten by Tom
Peter Eisentraut [Wed, 16 Sep 2009 06:06:12 +0000 (06:06 +0000)]
 
errcontext support in PL/Perl
Author: Alexey Klyukin <alexk@commandprompt.com>
Tom Lane [Tue, 15 Sep 2009 20:31:30 +0000 (20:31 +0000)]
 
Fix two distinct errors in creation of GIN_INSERT_LISTPAGE xlog records.
In practice these mistakes were always masked when full_page_writes was on,
because XLogInsert would always choose to log the full page, and then
ginRedoInsertListPage wouldn't try to do anything.  But with full_page_writes
off a WAL replay failure was certain.
The GIN_INSERT_LISTPAGE record type could probably be eliminated entirely
in favor of using XLOG_HEAP_NEWPAGE, but I refrained from doing that now
since it would have required a significantly more invasive patch.
In passing do a little bit of code cleanup, including making the accounting
for free space on GIN list pages more precise.  (This wasn't a bug as the
errors were always in the conservative direction.)
Per report from Simon.  Back-patch to 8.4 which contains the identical code.
Michael Meskes [Tue, 15 Sep 2009 08:44:57 +0000 (08:44 +0000)]
 
Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to add missing ";" to rule in pgc.l.
Tom Lane [Tue, 15 Sep 2009 02:31:15 +0000 (02:31 +0000)]
 
Fix possible buffer overrun and/or unportable behavior in pg_md5_encrypt()
if salt_len == 0.  This seems to be mostly academic, since nearly all calling
code paths guarantee nonempty salt; the only case that doesn't is
PQencryptPassword where the caller could mistakenly pass an empty username.
So, fix it but don't bother backpatching.  Per ljb.
Peter Eisentraut [Mon, 14 Sep 2009 13:23:48 +0000 (13:23 +0000)]
 
Print builds don't actually depend on html target (anymore).
Tom Lane [Sun, 13 Sep 2009 22:18:22 +0000 (22:18 +0000)]
 
Write psql's ~/.psql_history file using history_truncate_file() and
append_history(), if libreadline is new enough to have those functions
(they seem to be present at least since 4.2; but libedit may not have them).
This gives significantly saner behavior when two or more sessions overlap in
their use of the history file; although having two sessions exit at just the
same time is still perilous to your history.  The behavior of \s remains
unchanged, ie, overwrite whatever was there.
Per bug #5052 from Marek Wójtowicz.
Peter Eisentraut [Sun, 13 Sep 2009 22:07:06 +0000 (22:07 +0000)]
 
Fix Unicode support in PL/Python
Check calls of PyUnicode_AsEncodedString() for NULL return, probably
because the encoding name is not known.  Add special treatment for
SQL_ASCII, which Python definitely does not know.
Since using SQL_ASCII produces errors in the regression tests when
non-ASCII characters are involved, we have to put back various regression
test result variants.
Peter Eisentraut [Sun, 13 Sep 2009 19:52:29 +0000 (19:52 +0000)]
 
Document that autovacuum_max_workers can only be set at server start
per Joshua Tolley
Heikki Linnakangas [Sun, 13 Sep 2009 18:32:08 +0000 (18:32 +0000)]
 
Don't error out if recycling or removing an old WAL segment fails at the end
of checkpoint. Although the checkpoint has been written to WAL at that point
already, so that all data is safe, and we'll retry removing the WAL segment at
the next checkpoint, if such a failure persists we won't be able to remove any
other old WAL segments either and will eventually run out of disk space. It's
better to treat the failure as non-fatal, and move on to clean any other WAL
segment and continue with any other end-of-checkpoint cleanup.
We don't normally expect any such failures, but on Windows it can happen with
some anti-virus or backup software that lock files without FILE_SHARE_DELETE
flag.
Also, the loop in pgrename() to retry when the file is locked was broken. If a
file is locked on Windows, you get ERROR_SHARE_VIOLATION, not
ERROR_ACCESS_DENIED, at least on modern versions. Fix that, although I left
the check for ERROR_ACCESS_DENIED in there as well (presumably it was correct
in some environment), and added ERROR_LOCK_VIOLATION to be consistent with
similar checks in pgwin32_open(). Reduce the timeout on the loop from 30s to
10s, on the grounds that since it's been broken, we've effectively had a
timeout of 0s and no-one has complained, so a smaller timeout is actually
closer to the old behavior. A longer timeout would mean that if recycling a
WAL file fails because it's locked for some reason, InstallXLogFileSegment()
will hold ControlFileLock for longer, potentially blocking other backends, so
a long timeout isn't totally harmless.
While we're at it, set errno correctly in pgrename().
Backpatch to 8.2, which is the oldest version supported on Windows. The xlog.c
changes would make sense on other platforms and thus on older versions as
well, but since there's no such locking issues on other platforms, it's not
worth it.
Joe Conway [Sat, 12 Sep 2009 23:20:52 +0000 (23:20 +0000)]
 
plug dblink resource leak
dblink generates orphaned connections when called with a connection string,
fail_on_error = true, and an ERROR occurs. Discovery and patch by
Tatsuhito Kasahara. Introduced in 8.4.
Peter Eisentraut [Sat, 12 Sep 2009 22:13:12 +0000 (22:13 +0000)]
 
Add Unicode support in PL/Python
PL/Python now accepts Unicode objects where it previously only accepted string
objects (for example, as return value).  Unicode objects are converted to the
PostgreSQL server encoding as necessary.
This change is also necessary for future Python 3 support, which treats all
strings as Unicode objects.
Since this removes the error conditions that the plpython_unicode test file
tested for, the alternative result files are no longer necessary.
Tom Lane [Sat, 12 Sep 2009 22:12:09 +0000 (22:12 +0000)]
 
Rewrite the planner's handling of materialized plan types so that there is
an explicit model of rescan costs being different from first-time costs.
The costing of Material nodes in particular now has some visible relationship
to the actual runtime behavior, where before it was essentially fantasy.
This also fixes up a couple of places where different materialized plan types
were treated differently for no very good reason (probably just oversights).
A couple of the regression tests are affected, because the planner now chooses
to put the other relation on the inside of a nestloop-with-materialize.
So far as I can see both changes are sane, and the planner is now more
consistently following the expectation that it should prefer to materialize
the smaller of two relations.
Per a recent discussion with Robert Haas.
Tom Lane [Sat, 12 Sep 2009 16:26:06 +0000 (16:26 +0000)]
 
Improve GRANT reference page's description of object ownership
privileges by mentioning the possibility of granting membership in
the owning role.
Tom Lane [Sat, 12 Sep 2009 15:51:52 +0000 (15:51 +0000)]
 
Install a hopefully-temporary workaround for Snow Leopard readdir() bug.
If Apple doesn't fix that reasonably soon, we'll have to consider
back-patching a workaround; but for now, just hack it in HEAD so that
we can get buildfarm reports on HEAD from OS X machines.
Per Jan Otto.
Peter Eisentraut [Sat, 12 Sep 2009 15:21:27 +0000 (15:21 +0000)]
 
Remove TODO file; it has been added to the main Todo list in the wiki.
Tom Lane [Sat, 12 Sep 2009 00:04:59 +0000 (00:04 +0000)]
 
Fix assertion failure when a SELECT DISTINCT ON expression is volatile.
In this case we generate two PathKey references to the expression (one for
DISTINCT and one for ORDER BY) and they really need to refer to the same
EquivalenceClass.  However get_eclass_for_sort_expr was being overly paranoid
and creating two different EC's.  Correct behavior is to use the SortGroupRef
index to decide whether two references to volatile expressions that are
equal() (ie textually equivalent) should be considered the same.
Backpatch to 8.4.  Possibly this should be changed in 8.3 as well, but
I'll refrain in the absence of evidence of a visible failure in that branch.
Per bug #5049.
Tom Lane [Fri, 11 Sep 2009 19:17:04 +0000 (19:17 +0000)]
 
Increase the maximum value of extra_float_digits to 3, and have pg_dump
use that value when the backend is new enough to allow it.  This responds
to bug report from Keh-Cheng Chu pointing out that although 2 extra digits
should be sufficient to dump and restore float8 exactly, it is possible to
need 3 extra digits for float4 values.
Peter Eisentraut [Fri, 11 Sep 2009 12:53:24 +0000 (12:53 +0000)]
 
Remove claim that this chapter discusses rules and triggers.
per Bruno Guimarães Carneiro
Alvaro Herrera [Thu, 10 Sep 2009 15:02:46 +0000 (15:02 +0000)]
 
Add note that the logging collector can block backends in high load situations.
Tatsuo Ishii [Thu, 10 Sep 2009 13:59:57 +0000 (13:59 +0000)]
 
pgbench has #defines for number of branches, tellers, and accounts.  There
are used to populate the tables with -i, but when running actual benchmark
it has values separately hard-coded in the query metacommands.  This patch
makes the metacommands obtain their values from the relevant #defines.
Patch provided by Jeff Janes.
Heikki Linnakangas [Thu, 10 Sep 2009 09:42:10 +0000 (09:42 +0000)]
 
On Windows, when a file is deleted and another process still has an open
file handle on it, the file goes into "pending deletion" state where it
still shows up in directory listing, but isn't accessible otherwise. That
confuses RemoveOldXLogFiles(), making it think that the file hasn't been
archived yet, while it actually was, and it was deleted along with the .done
file.
Fix that by renaming the file with ".deleted" extension before deleting it.
Also check the return value of rename() and unlink(), so that if the removal
fails for any reason (e.g another process is holding the file locked), we
don't delete the .done file until the WAL file is really gone.
Backpatch to 8.2, which is the oldest version supported on Windows.
Peter Eisentraut [Wed, 9 Sep 2009 19:00:09 +0000 (19:00 +0000)]
 
Fix/improve bytea and boolean support in PL/Python
Before, PL/Python converted data between SQL and Python by going
through a C string representation.  This broke for bytea in two ways:
- On input (function parameters), you would get a Python string that
  contains bytea's particular external representation with backslashes
  etc., instead of a sequence of bytes, which is what you would expect
  in a Python environment.  This problem is exacerbated by the new
  bytea output format.
- On output (function return value), null bytes in the Python string
  would cause truncation before the data gets stored into a bytea
  datum.
This is now fixed by converting directly between the PostgreSQL datum
and the Python representation.
The required generalized infrastructure also allows for other
improvements in passing:
- When returning a boolean value, the SQL datum is now true if and
  only if Python considers the value that was passed out of the
  PL/Python function to be true.  Previously, this determination was
  left to the boolean data type input function.  So, now returning
  'foo' results in true, because Python considers it true, rather than
  false because PostgreSQL considers it false.
- On input, we can convert the integer and float types directly to
  their Python equivalents without having to go through an
  intermediate string representation.
original patch by Caleb Welton, with updates by myself
Tom Lane [Wed, 9 Sep 2009 03:32:52 +0000 (03:32 +0000)]
 
Fix bug with WITH RECURSIVE immediately inside WITH RECURSIVE.  99% of the
code was already okay with this, but the hack that obtained the output
column types of a recursive union in advance of doing real parse analysis
of the recursive union forgot to handle the case where there was an inner
WITH clause available to the non-recursive term.  Best fix seems to be to
refactor so that we don't need the "throwaway" parse analysis step at all.
Instead, teach the transformSetOperationStmt code to set up the CTE's output
column information after it's processed the non-recursive term normally.
Per report from David Fetter.
Tom Lane [Tue, 8 Sep 2009 18:15:55 +0000 (18:15 +0000)]
 
Remove any -arch switches given in ExtUtils::Embed's ldopts from our
perl_embed_ldflags setting.  On OS X it seems that ExtUtils::Embed is
trying to force a universal binary to be built, but you need to specify
that a lot further upstream if you want Postgres built that way; the only
result of including -arch in perl_embed_ldflags is some warnings at the
plperl.so link step.  Per my complaint and Jan Otto's suggestion.
Tom Lane [Tue, 8 Sep 2009 17:08:36 +0000 (17:08 +0000)]
 
Add a boolean GUC parameter "bonjour" to control whether a Bonjour-enabled
build actually attempts to advertise itself via Bonjour.  Formerly it always
did so, which meant that packagers had to decide for their users whether
this behavior was wanted or not.  The default is "off" to be on the safe
side, though this represents a change in the default behavior of a
Bonjour-enabled build.  Per discussion.
Tom Lane [Tue, 8 Sep 2009 16:08:26 +0000 (16:08 +0000)]
 
Replace use of the long-deprecated Bonjour API DNSServiceRegistrationCreate
with the not-so-deprecated DNSServiceRegister.  This patch shouldn't change
any user-visible behavior, it just gets rid of a deprecation warning in
--with-bonjour builds.  The new code will fail on OS X releases before 10.3,
but it seems unlikely that anyone will want to run Postgres 8.5 on 10.2.
Tom Lane [Tue, 8 Sep 2009 04:25:00 +0000 (04:25 +0000)]
 
Remove outside-the-scanner references to "yyleng".
It seems the flex developers have decided to change yyleng from int to size_t.
This has already happened in the latest release of OS X, and will start
happening elsewhere once the next release of flex appears.  Rather than trying
to divine how it's declared in any particular build, let's just remove the one
existing not-very-necessary external usage.
Back-patch to all supported branches; not so much because users in the field
are likely to care about building old branches with cutting-edge flex, as
to keep OSX-based buildfarm members from having problems with old branches.
Magnus Hagander [Mon, 7 Sep 2009 11:22:12 +0000 (11:22 +0000)]
 
Change our WIN32 API version to be 5.01 (Windows XP), to bring in the proper
IPV6 headers in newer SDKs.
Tom Lane [Sun, 6 Sep 2009 15:25:23 +0000 (15:25 +0000)]
 
Update the tznames reference files, and add IDT (Israel Daylight Time)
to the Default timezone abbreviation set.
Back-port the the current file set to all branches that contain tznames.
This includes adding SGT to the Default set in pre-8.4 releases.
Joachim Wieland
Tom Lane [Sat, 5 Sep 2009 23:58:01 +0000 (23:58 +0000)]
 
Add a note warning that COPY BINARY is very datatype-specific.
Per a complaint from Gordon Shannon.