]> granicus.if.org Git - postgresql/log
postgresql
11 years agoFix handling of OID wraparound while in standalone mode.
Tom Lane [Mon, 13 May 2013 19:40:16 +0000 (15:40 -0400)]
Fix handling of OID wraparound while in standalone mode.

If OID wraparound should occur while in standalone mode (unlikely but
possible), we want to advance the counter to FirstNormalObjectId not
FirstBootstrapObjectId.  Otherwise, user objects might be created with OIDs
in the system-reserved range.  That isn't immediately harmful but it poses
a risk of conflicts during future pg_upgrade operations.

Noted by Andres Freund.  Back-patch to all supported branches, since all of
them are supported sources for pg_upgrade operations.

11 years agoFix handling of strict non-set functions with NULLs in set-valued inputs.
Tom Lane [Sun, 12 May 2013 17:08:12 +0000 (13:08 -0400)]
Fix handling of strict non-set functions with NULLs in set-valued inputs.

In a construct like "select plain_function(set_returning_function(...))",
the plain function is applied to each output row of the SRF successively.
If some of the SRF outputs are NULL, and the plain function is strict,
you'd expect to get NULL results for such rows ... but what actually
happened was that such rows were omitted entirely from the result set.
This was due to confusion of this case with what should happen for nested
set-returning functions; a strict SRF is indeed supposed to yield an empty
set for null input.  Per bug #8150 from Erwin Brandstetter.

Although this has been broken forever, we're not back-patching because
of the possibility that some apps out there expect the incorrect behavior.
This change should be listed as a possible incompatibility in the 9.3
release notes.

11 years agopgbench: Fix order of options in --help output
Peter Eisentraut [Sun, 12 May 2013 01:57:54 +0000 (21:57 -0400)]
pgbench: Fix order of options in --help output

11 years agopg_xlogdump: Improve --help output
Peter Eisentraut [Sun, 12 May 2013 01:55:37 +0000 (21:55 -0400)]
pg_xlogdump: Improve --help output

11 years agoFix to_number() to correctly ignore thousands separator when it's '.'.
Tom Lane [Sat, 11 May 2013 20:35:03 +0000 (16:35 -0400)]
Fix to_number() to correctly ignore thousands separator when it's '.'.

The existing code in NUM_numpart_from_char has hard-wired logic to treat
'.' as decimal point, even when we're using a locale-aware format string
and the locale says that '.' is the thousands separator.  This results in
clearly wrong answers in FM mode (where we must be able to identify the
decimal point location), as per bug report from Patryk Kordylewski.

Since the initialization code in NUM_prepare_locale already sets up
Np->decimal as either the locale decimal-point string or "." depending
on which decimal-point format code was used, there's really no need to
have any extra logic at all in NUM_numpart_from_char: we only need to
test for a match to Np->decimal.

(Note: AFAICS there's nothing in here that explicitly checks for thousands
separators --- rather, any unmatched character is silently skipped over.
That's pretty bogus IMO but it's not the issue being complained of.)

This is a longstanding bug, but it's possible that some existing apps
are depending on '.' being recognized as decimal point even when using
a D format code.  Hence, no back-patch.  We should probably list this
as a potential incompatibility in the 9.3 release notes.

11 years agoFix buildfarm incompatibility in updated pg_upgrade test script.
Tom Lane [Sat, 11 May 2013 20:14:19 +0000 (16:14 -0400)]
Fix buildfarm incompatibility in updated pg_upgrade test script.

Looks like some versions of the buildfarm script try to set the port via
--port in $EXTRA_REGRESS_OPTS.  Override that ...

11 years agoMake pg_upgrade's test script attempt to select a non-conflicting port.
Tom Lane [Sat, 11 May 2013 18:22:18 +0000 (14:22 -0400)]
Make pg_upgrade's test script attempt to select a non-conflicting port.

Previously, the port number used in this test script was hard-wired at
pg_upgrade's default of 50432; which is not so great because parallel build
runs might conflict.  Commit 3d53173e20d151341f894f79d556768c845ba3e4
removed this setting for the postmasters started by the script proper
(not by pg_upgrade), which didn't do anything to fix that problem and also
guaranteed a failure if there was a live postmaster at the build's default
port number.  Instead, select a non-conflicting temporary port number in
the same way that pg_regress.c does.  (Its method isn't entirely
bulletproof, but given the lack of complaints I'm not going to worry
about that today.)

In passing, unset MAKEFLAGS and MAKELEVEL to avoid problems with the
script's internal invocations of make, for the same reason pg_regress.c
does: it could cause problems in a parallel make.

11 years agoUpdate CREATE FUNCTION documentation about argument names.
Tom Lane [Sat, 11 May 2013 16:07:47 +0000 (12:07 -0400)]
Update CREATE FUNCTION documentation about argument names.

The 9.2 patch that added argument name support in SQL-language functions
missed updating a parenthetical comment about that in the CREATE FUNCTION
reference page.  Noted by Erwin Brandstetter.

11 years agoGuard against input_rows == 0 in estimate_num_groups().
Tom Lane [Fri, 10 May 2013 21:15:30 +0000 (17:15 -0400)]
Guard against input_rows == 0 in estimate_num_groups().

This case doesn't normally happen, because the planner usually clamps
all row estimates to at least one row; but I found that it can arise
when dealing with relations excluded by constraints.  Without a defense,
estimate_num_groups() can return zero, which leads to divisions by zero
inside the planner as well as assertion failures in the executor.

An alternative fix would be to change set_dummy_rel_pathlist() to make
the size estimate for a dummy relation 1 row instead of 0, but that seemed
pretty ugly; and probably someday we'll want to drop the convention that
the minimum rowcount estimate is 1 row.

Back-patch to 8.4, as the problem can be demonstrated that far back.

11 years agoFix pgp_pub_decrypt() so it works for secret keys with passwords.
Tom Lane [Fri, 10 May 2013 17:06:48 +0000 (13:06 -0400)]
Fix pgp_pub_decrypt() so it works for secret keys with passwords.

Per report from Keith Fiske.

Marko Kreen

11 years agoFix management of fn_extra caching during repeated GiST index scans.
Tom Lane [Fri, 10 May 2013 03:08:19 +0000 (23:08 -0400)]
Fix management of fn_extra caching during repeated GiST index scans.

Commit d22a09dc70f9830fa78c1cd1a3a453e4e473d354 introduced official support
for GiST consistentFns that want to cache data using the FmgrInfo fn_extra
pointer: the idea was to preserve the cached values across gistrescan(),
whereas formerly they'd been leaked.  However, there was an oversight in
that, namely that multiple scan keys might reference the same column's
consistentFn; the code would result in propagating the same cache value
into multiple scan keys, resulting in crashes or wrong answers.  Use a
separate array instead to ensure that each scan key keeps its own state.

Per bug #8143 from Joel Roller.  Back-patch to 9.2 where the bug was
introduced.

11 years agoUpdate key words table for 9.3
Peter Eisentraut [Fri, 10 May 2013 02:26:04 +0000 (22:26 -0400)]
Update key words table for 9.3

11 years agoRemove make_keywords
Peter Eisentraut [Fri, 10 May 2013 02:21:43 +0000 (22:21 -0400)]
Remove make_keywords

It is not used anymore.

11 years agoUse pg_dump's --quote-all-identifiers option in pg_upgrade.
Tom Lane [Thu, 9 May 2013 21:34:34 +0000 (17:34 -0400)]
Use pg_dump's --quote-all-identifiers option in pg_upgrade.

This helps guard against changes in the set of reserved keywords from
one version to another.  In theory it should only be an issue if we
de-reserve a keyword in a newer release, since that can create the type
of problem shown in bug #8128.

Back-patch to 9.1 where the --quote-all-identifiers option was added.

11 years agopg_upgrade docs: give tips on automation
Bruce Momjian [Thu, 9 May 2013 20:05:26 +0000 (16:05 -0400)]
pg_upgrade docs:  give tips on automation

Document that post-upgrade steps are likely to be the same for all
clusters with the same DDL/schemas;  this should help automated
upgrades.

11 years agoUpdate collate.linux.utf8.out for ruleutils.c line-wrapping changes.
Tom Lane [Thu, 9 May 2013 02:47:33 +0000 (22:47 -0400)]
Update collate.linux.utf8.out for ruleutils.c line-wrapping changes.

Missed in commit 62e666400dddf605b9b6d9a7ac2918711b5c5629.

11 years agoBetter fix for permissions tests in excluded subqueries.
Tom Lane [Wed, 8 May 2013 20:59:09 +0000 (16:59 -0400)]
Better fix for permissions tests in excluded subqueries.

This reverts the code changes in 50c137487c96e629e0e5372bb3d1b5f1a2f71a88,
which turned out to induce crashes and not completely fix the problem
anyway.  That commit only considered single subqueries that were excluded
by constraint-exclusion logic, but actually the problem also exists for
subqueries that are appendrel members (ie part of a UNION ALL list).  In
such cases we can't add a dummy subpath to the appendrel's AppendPath list
without defeating the logic that recognizes when an appendrel is completely
excluded.  Instead, fix the problem by having setrefs.c scan the rangetable
an extra time looking for subqueries that didn't get into the plan tree.
(This approach depends on the 9.2 change that made set_subquery_pathlist
generate dummy paths for excluded single subqueries, so that the exclusion
behavior is the same for single subqueries and appendrel members.)

Note: it turns out that the appendrel form of the missed-permissions-checks
bug exists as far back as 8.4.  However, since the practical effect of that
bug seems pretty minimal, consensus is to not attempt to fix it in the back
branches, at least not yet.  Possibly we could back-port this patch once
it's gotten a reasonable amount of testing in HEAD.  For the moment I'm
just going to revert the previous patch in 9.2.

11 years agoThe data structure used in unaccent is a trie, not suffix tree.
Heikki Linnakangas [Wed, 8 May 2013 17:57:42 +0000 (20:57 +0300)]
The data structure used in unaccent is a trie, not suffix tree.

Fix the term used in variable and struct names, and comments.

Alexander Korotkov

11 years agoFix walsender failure at promotion.
Heikki Linnakangas [Wed, 8 May 2013 17:10:17 +0000 (20:10 +0300)]
Fix walsender failure at promotion.

If a standby server has a cascading standby server connected to it, it's
possible that WAL has already been sent up to the next WAL page boundary,
splitting a WAL record in the middle, when the first standby server is
promoted. Don't throw an assertion failure or error in walsender if that
happens.

Also, fix a variant of the same bug in pg_receivexlog: if it had already
received WAL on previous timeline up to a segment boundary, when the
upstream standby server is promoted so that the timeline switch record falls
on the previous segment, pg_receivexlog would miss the segment containing
the timeline switch. To fix that, have walsender send the position of the
timeline switch at end-of-streaming, in addition to the next timeline's ID.
It was previously assumed that the switch happened exactly where the
streaming stopped.

Note: this is an incompatible change in the streaming protocol. You might
get an error if you try to stream over timeline switches, if the client is
running 9.3beta1 and the server is more recent. It should be fine after a
reconnect, however.

Reported by Fujii Masao.

11 years agoUse the term "radix tree" instead of "suffix tree" for SP-GiST text opclass.
Heikki Linnakangas [Wed, 8 May 2013 11:29:28 +0000 (14:29 +0300)]
Use the term "radix tree" instead of "suffix tree" for SP-GiST text opclass.

What we have implemented is a radix tree (or a radix trie or a patricia
trie), but the docs and code comments incorrectly called it a "suffix tree".

Alexander Korotkov

11 years agodoc: Add IDs to link targets used by phpPgAdmin
Peter Eisentraut [Wed, 8 May 2013 01:23:21 +0000 (21:23 -0400)]
doc: Add IDs to link targets used by phpPgAdmin

Karl O. Pinc

11 years agoStress that backup_label file is critical in the docs.
Heikki Linnakangas [Tue, 7 May 2013 13:55:04 +0000 (16:55 +0300)]
Stress that backup_label file is critical in the docs.

It is surprisingly common mistake to leave out backup_label file from a base
backup. Say more explicitly that it must be included.

Jeff Janes, with minor rewording by me.

11 years agoStamp 9.3beta1. REL9_3_BETA1
Tom Lane [Mon, 6 May 2013 20:57:06 +0000 (16:57 -0400)]
Stamp 9.3beta1.

11 years agoDesultory copy-editing of the 9.3 release notes.
Tom Lane [Mon, 6 May 2013 20:02:37 +0000 (16:02 -0400)]
Desultory copy-editing of the 9.3 release notes.

I had time for a quick review of the notes, so here are some fixes.

11 years agoMove materialized views' is-populated status into their pg_class entries.
Tom Lane [Mon, 6 May 2013 17:26:51 +0000 (13:26 -0400)]
Move materialized views' is-populated status into their pg_class entries.

Previously this state was represented by whether the view's disk file had
zero or nonzero size, which is problematic for numerous reasons, since it's
breaking a fundamental assumption about heap storage.  This was done to
allow unlogged matviews to revert to unpopulated status after a crash
despite our lack of any ability to update catalog entries post-crash.
However, this poses enough risk of future problems that it seems better to
not support unlogged matviews until we can find another way.  Accordingly,
revert that choice as well as a number of existing kluges forced by it
in favor of creating a pg_class.relispopulated flag column.

11 years agoBack out some recent translation updates.
Tom Lane [Mon, 6 May 2013 16:28:13 +0000 (12:28 -0400)]
Back out some recent translation updates.

Very old versions of msgfmt choke on these specific messages, for reasons
that are unclear at the moment.  Remove them so that we can ship a beta
release and not get complaints from testers (these messages will just go
untranslated, instead, and we're hardly at 100% coverage anyway).
Peter Eisentraut will look for a better fix later.

11 years agoDisallow unlogged materialized views.
Tom Lane [Mon, 6 May 2013 15:57:05 +0000 (11:57 -0400)]
Disallow unlogged materialized views.

The initial implementation of this feature was really unsupportable,
because it's relying on the physical size of an on-disk file to carry the
relation's populated/unpopulated state, which is at least a modularity
violation and could have serious long-term consequences.  We could say that
an unlogged matview goes to empty on crash, but not everybody likes that
definition, so let's just remove the feature for 9.3.  We can add it back
when we have a less klugy implementation.

I left the grammar and tab-completion support for CREATE UNLOGGED
MATERIALIZED VIEW in place, since it's harmless and allows delivering a
more specific error message about the unsupported feature.

I'm committing this separately to ease identification of what should be
reverted when/if we are able to re-enable the feature.

11 years ago9.3 release notes: use "restoration"
Bruce Momjian [Mon, 6 May 2013 14:57:23 +0000 (10:57 -0400)]
9.3 release notes:  use "restoration"

Andrew Dunstan

11 years ago9.3 release notes: Add cache of local locks
Bruce Momjian [Mon, 6 May 2013 14:56:27 +0000 (10:56 -0400)]
9.3 release notes: Add cache of local locks

Mention this also helps in the restoring of pg_dumps.

Jeff Janes

11 years ago9.3 release notes: update from Amit Kapila
Bruce Momjian [Mon, 6 May 2013 14:47:10 +0000 (10:47 -0400)]
9.3 release notes:  update from Amit Kapila

No need to mention wal_receiver_status_interval.

11 years agoExecute SET TRANSACTION SNAPSHOT during pg_dump
Simon Riggs [Mon, 6 May 2013 14:37:17 +0000 (15:37 +0100)]
Execute SET TRANSACTION SNAPSHOT during pg_dump
Previous coding set the SQL buffer but never executed

Bug noted by me during beta testing

11 years agoRevert idea of zer-padding padding session id in log_line_prefix
Bruce Momjian [Mon, 6 May 2013 12:59:39 +0000 (08:59 -0400)]
Revert idea of zer-padding padding session id in log_line_prefix

Removal of doc adjustment and release note mention as well.

11 years agoTranslation updates
Peter Eisentraut [Mon, 6 May 2013 02:34:23 +0000 (22:34 -0400)]
Translation updates

11 years agoImprove behavior of \watch with non-tuple-returning commands.
Tom Lane [Sat, 4 May 2013 20:41:22 +0000 (16:41 -0400)]
Improve behavior of \watch with non-tuple-returning commands.

Print the command tag if we get PGRES_COMMAND_OK, and throw an error for
other cases.  Per gripe from Michael Paquier.

In passing, add an fflush(), just to be real sure the output appears
before we sleep.

11 years agodocs: Improve log_line_prefix session_id query
Bruce Momjian [Sat, 4 May 2013 17:23:04 +0000 (13:23 -0400)]
docs:  Improve log_line_prefix session_id query

11 years agodocs: log_line_prefix session id fix
Bruce Momjian [Sat, 4 May 2013 17:15:54 +0000 (13:15 -0400)]
docs:  log_line_prefix session id fix

Restore 4-byte designation for docs.  Fix 9.3 doc query to properly pad
to four digits.

Backpatch to all active branches

Per suggestions from Ian Lawrence Barwick

11 years ago9.3 docs: wording fixes
Bruce Momjian [Sat, 4 May 2013 15:52:18 +0000 (11:52 -0400)]
9.3 docs:  wording fixes

From Erik Rijkers

11 years agodocs: fix log_line_prefix session id docs
Bruce Momjian [Sat, 4 May 2013 15:05:16 +0000 (11:05 -0400)]
docs:  fix log_line_prefix session id docs

Backpatch to 9.2.

Report from Ian Lawrence Barwick

11 years ago9.3 release notes: adjustments
Bruce Momjian [Sat, 4 May 2013 14:44:49 +0000 (10:44 -0400)]
9.3 release notes:  adjustments

Fixes from Peter Geoghegan, Ian Lawrence Barwick, Marti Raudsepp

11 years ago9.3 release notes: move compatibility items into their own section
Bruce Momjian [Sat, 4 May 2013 01:11:35 +0000 (21:11 -0400)]
9.3 release notes:  move compatibility items into their own section

11 years ago9.3 release notes: Add markup for pg_backup_start_time()
Bruce Momjian [Sat, 4 May 2013 00:55:03 +0000 (20:55 -0400)]
9.3 release notes:  Add markup for pg_backup_start_time()

11 years ago9.3 release notes: Add links to SGML sections
Bruce Momjian [Fri, 3 May 2013 23:40:23 +0000 (19:40 -0400)]
9.3 release notes:  Add links to SGML sections

11 years ago9.3 release notes: add markup for text
Bruce Momjian [Fri, 3 May 2013 18:48:12 +0000 (14:48 -0400)]
9.3 release notes:  add markup for text

Still need to add links for new features.

11 years agoImprove SPI documentation about null-flags arrays.
Tom Lane [Fri, 3 May 2013 18:39:28 +0000 (14:39 -0400)]
Improve SPI documentation about null-flags arrays.

Clarify the description of nulls[] arguments, and use the same wording
for all SPI functions with this type of argument.  Per gripe from Yuriy
Rusinov.

11 years ago9.3 release notes: update for current commits
Bruce Momjian [Fri, 3 May 2013 17:30:58 +0000 (13:30 -0400)]
9.3 release notes:  update for current commits

Also, remove broken link in release.sgml.

11 years ago9.3 release notes: suggested improvements from Jeff Janes and Josh Berkus
Bruce Momjian [Thu, 2 May 2013 23:14:20 +0000 (19:14 -0400)]
9.3 release notes:  suggested improvements from Jeff Janes and Josh Berkus

11 years agoPrevent (auto)vacuum from truncating first page of populated matview.
Kevin Grittner [Thu, 2 May 2013 22:33:03 +0000 (17:33 -0500)]
Prevent (auto)vacuum from truncating first page of populated matview.

Per report from Fujii Masao, with regression test using his example.

11 years agopg_test_fsync: update output to show usecs/op clearer
Bruce Momjian [Thu, 2 May 2013 14:27:06 +0000 (10:27 -0400)]
pg_test_fsync: update output to show usecs/op clearer

11 years agoUse correct length to convert json unicode escapes.
Andrew Dunstan [Wed, 1 May 2013 22:47:18 +0000 (18:47 -0400)]
Use correct length to convert json unicode escapes.

Bug reported on IRC - fix due to Andrew Gierth.

11 years agoFix permission tests for views/tables proven empty by constraint exclusion.
Tom Lane [Wed, 1 May 2013 22:26:50 +0000 (18:26 -0400)]
Fix permission tests for views/tables proven empty by constraint exclusion.

A view defined as "select <something> where false" had the curious property
that the system wouldn't check whether users had the privileges necessary
to select from it.  More generally, permissions checks could be skipped
for tables referenced in sub-selects or views that were proven empty by
constraint exclusion (although some quick testing suggests this seldom
happens in cases of practical interest).  This happened because the planner
failed to include rangetable entries for such tables in the finished plan.

This was noticed in connection with erroneous handling of materialized
views, but actually the issue is quite unrelated to matviews.  Therefore,
revert commit 200ba1667b3a8d7a9d559d2f05f83d209c9d8267 in favor of a more
direct test for the real problem.

Back-patch to 9.2 where the bug was introduced (by commit
7741dd6590073719688891898e85f0cb73453159).

11 years agoAdd regression test for bug fixed by recent refactoring.
Kevin Grittner [Tue, 30 Apr 2013 20:02:43 +0000 (15:02 -0500)]
Add regression test for bug fixed by recent refactoring.

Test case by Andres Freund for bug fixed by Tom Lane's refactoring
in commit 5194024d72f33fb209e10f9ab0ada7cc67df45b7

11 years agoFix pg_upgrade for 9.3 with data checksums.
Simon Riggs [Tue, 30 Apr 2013 14:49:24 +0000 (15:49 +0100)]
Fix pg_upgrade for 9.3 with data checksums.
Previous changes misconstrued pg_upgrade internals
causing build farm breakages.

11 years agoRevert previous temporary patch
Simon Riggs [Tue, 30 Apr 2013 14:32:10 +0000 (15:32 +0100)]
Revert previous temporary patch

11 years agoTemporarily silence pg_upgrade's checksums check
Simon Riggs [Tue, 30 Apr 2013 13:34:47 +0000 (14:34 +0100)]
Temporarily silence pg_upgrade's checksums check

11 years agoBump PG_CONTROL_VERSION to 937
Simon Riggs [Tue, 30 Apr 2013 12:27:47 +0000 (13:27 +0100)]
Bump PG_CONTROL_VERSION to 937

11 years agoRecord data_checksum_version in control file.
Simon Riggs [Tue, 30 Apr 2013 11:27:12 +0000 (12:27 +0100)]
Record data_checksum_version in control file.
The value is not used anywhere in code, but will
allow future changes to the checksum version
should that become necessary in the future.

11 years agoEnsure we MarkBufferDirty before visibilitymap_set()
Simon Riggs [Tue, 30 Apr 2013 07:15:49 +0000 (08:15 +0100)]
Ensure we MarkBufferDirty before visibilitymap_set()
logs the heap page and sets the LSN. Otherwise a
checkpoint could occur between those actions and
leave us in an inconsistent state.

Jeff Davis

11 years agoCompiler optimizations for page checksum code.
Simon Riggs [Tue, 30 Apr 2013 05:59:26 +0000 (06:59 +0100)]
Compiler optimizations for page checksum code.

Ants Aasma and Jeff Davis

11 years agopg_upgrade: Remove PGPORT handling from test suite
Peter Eisentraut [Tue, 30 Apr 2013 02:17:29 +0000 (22:17 -0400)]
pg_upgrade: Remove PGPORT handling from test suite

This code was left over from when pg_upgrade paid attention to PGPORT.
Now it would only affects the regression test run before the test run of
pg_upgrade.  You can still set PGPORT for that, but there is no reason
to have the test driver default it to 50432.

11 years agoRevert "pg_ctl: Add idempotent option"
Peter Eisentraut [Tue, 30 Apr 2013 01:55:12 +0000 (21:55 -0400)]
Revert "pg_ctl: Add idempotent option"

This reverts commit 87306184580c9c49717b00d48a2f9e717f21e0a8.  The
behavior in certain cases is still being debated, and it's too late to
solve this before beta.

11 years agoPostpone creation of pathkeys lists to fix bug #8049.
Tom Lane [Mon, 29 Apr 2013 18:49:01 +0000 (14:49 -0400)]
Postpone creation of pathkeys lists to fix bug #8049.

This patch gets rid of the concept of, and infrastructure for,
non-canonical PathKeys; we now only ever create canonical pathkey lists.

The need for non-canonical pathkeys came from the desire to have
grouping_planner initialize query_pathkeys and related pathkey lists before
calling query_planner.  However, since query_planner didn't actually *do*
anything with those lists before they'd been made canonical, we can get rid
of the whole mess by just not creating the lists at all until the point
where we formerly canonicalized them.

There are several ways in which we could implement that without making
query_planner itself deal with grouping/sorting features (which are
supposed to be the province of grouping_planner).  I chose to add a
callback function to query_planner's API; other alternatives would have
required adding more fields to PlannerInfo, which while not bad in itself
would create an ABI break for planner-related plugins in the 9.2 release
series.  This still breaks ABI for anything that calls query_planner
directly, but it seems somewhat unlikely that there are any such plugins.

I had originally conceived of this change as merely a step on the way to
fixing bug #8049 from Teun Hoogendoorn; but it turns out that this fixes
that bug all by itself, as per the added regression test.  The reason is
that now get_eclass_for_sort_expr is adding the ORDER BY expression at the
end of EquivalenceClass creation not the start, and so anything that is in
a multi-member EquivalenceClass has already been created with correct
em_nullable_relids.  I am suspicious that there are related scenarios in
which we still need to teach get_eclass_for_sort_expr to compute correct
nullable_relids, but am not eager to risk destabilizing either 9.2 or 9.3
to fix bugs that are only hypothetical.  So for the moment, do this and
stop here.

Back-patch to 9.2 but not to earlier branches, since they don't exhibit
this bug for lack of join-clause-movement logic that depends on
em_nullable_relids being correct.  (We might have to revisit that choice
if any related bugs turn up.)  In 9.2, don't change the signature of
make_pathkeys_for_sortclauses nor remove canonicalize_pathkeys, so as
not to risk more plugin breakage than we have to.

11 years agoEnsure ANALYZE phase is not skipped because of canceled truncate.
Kevin Grittner [Mon, 29 Apr 2013 18:05:26 +0000 (13:05 -0500)]
Ensure ANALYZE phase is not skipped because of canceled truncate.

Patch b19e4250b45e91c9cbdd18d35ea6391ab5961c8d attempted to
preserve existing behavior regarding statistics generation in the
case that a truncation attempt was canceled due to lock conflicts.
It failed to do this accurately in two regards: (1) autovacuum had
previously generated statistics if the truncate attempt failed to
initially get the lock rather than having started the attempt, and
(2) the VACUUM ANALYZE command had always generated statistics.

Both of these changes were unintended, and are reverted by this
patch.  On review, there seems to be consensus that the previous
failure to generate statistics when the truncate was terminated
was more an unfortunate consequence of how that effort was
previously terminated than a feature we want to keep; so this
patch generates statistics even when an autovacuum truncation
attempt terminates early.  Another unintended change which is kept
on the basis that it is an improvement is that when a VACUUM
command is truncating, it will the new heuristic for avoiding
blocking other processes, rather than keeping an
AccessExclusiveLock on the table for however long the truncation
takes.

Per multiple reports, with some renaming per patch by Jeff Janes.

Backpatch to 9.0, where problem was created.

11 years agoAttempt to fix error recovery in COPY BOTH mode.
Robert Haas [Mon, 29 Apr 2013 10:29:32 +0000 (06:29 -0400)]
Attempt to fix error recovery in COPY BOTH mode.

Previously, libpq and the backend had opposite ideas about whether
it was necessary for the client to send a CopyDone message after
receiving an ErrorResponse, making it impossible to cleanly exit
COPY BOTH mode.  Fix libpq so that works correctly, adopting the
backend's notion that an ErrorResponse kills the copy in both
directions.

Adjust receivelog.c to avoid a degradation in the quality of the
resulting error messages.  libpqwalreceiver.c is already doing
the right thing, so no adjustment needed there.

Add an explicit statement to the documentation explaining how
this part of the protocol is supposed to work, in the hopes of
avoiding future confusion in this area.

Since the consequences of all this confusion are very limited,
especially in the back-branches where no client ever attempts
to exit COPY BOTH mode without closing the connection entirely,
no back-patch.

11 years agoIntroduce new page checksum algorithm and module.
Simon Riggs [Mon, 29 Apr 2013 08:05:27 +0000 (09:05 +0100)]
Introduce new page checksum algorithm and module.
Isolate checksum calculation to its own module, so that bufpage
knows little if anything about the details of the calculation.

This implementation is a modified FNV-1a hash checksum, details
of which are given in the new checksum.c header comments.

Basic implementation only, so we fix the output value.

Later related commits will add version numbers to pg_control,
compiler optimization flags and memory barriers.

Ants Aasma, reviewed by Jeff Davis and Simon Riggs

11 years agoEditorialize a bit on new ProcessUtility() API.
Tom Lane [Sun, 28 Apr 2013 04:18:45 +0000 (00:18 -0400)]
Editorialize a bit on new ProcessUtility() API.

Choose a saner ordering of parameters (adding a new input param after
the output params seemed a bit random), update the function's header
comment to match reality (cmon folks, is this really that hard?),
get rid of useless and sloppily-defined distinction between
PROCESS_UTILITY_SUBCOMMAND and PROCESS_UTILITY_GENERATED.

11 years agoFix unsafe event-trigger coding in ProcessUtility().
Tom Lane [Sun, 28 Apr 2013 03:11:28 +0000 (23:11 -0400)]
Fix unsafe event-trigger coding in ProcessUtility().

We mustn't run any of the event-trigger support code when handling
utility statements like START TRANSACTION or ABORT, because that code
may need to refresh event-trigger cache data, which requires being
inside a valid transaction.  (This mistake explains the consistent
build failures exhibited by the CLOBBER_CACHE_ALWAYS buildfarm members,
as well as some irreproducible failures on other members.)

The least messy fix seems to be to break standard_ProcessUtility into two
functions, one that handles all the statements not supported by event
triggers, and one that contains the event-trigger support code and handles
the statements that are supported by event triggers.

This change also fixes several inconsistencies, such as four cases where
support had been installed for "ddl_event_start" but not "ddl_event_end"
triggers, plus the fact that InvokeDDLCommandEventTriggersIfSupported()
paid no mind to isCompleteQuery.

Dimitri Fontaine and Tom Lane

11 years agopg_dump: Improve message formatting
Peter Eisentraut [Sun, 28 Apr 2013 03:06:37 +0000 (23:06 -0400)]
pg_dump: Improve message formatting

11 years agoIncidental cleanup of matviews code.
Tom Lane [Sat, 27 Apr 2013 21:48:57 +0000 (17:48 -0400)]
Incidental cleanup of matviews code.

Move checking for unscannable matviews into ExecOpenScanRelation, which is
a better place for it first because the open relation is already available
(saving a relcache lookup cycle), and second because this eliminates the
problem of telling the difference between rangetable entries that will or
will not be scanned by the query.  In particular we can get rid of the
not-terribly-well-thought-out-or-implemented isResultRel field that the
initial matviews patch added to RangeTblEntry.

Also get rid of entirely unnecessary scannability check in the rewriter,
and a bogus decision about whether RefreshMatViewStmt requires a parse-time
snapshot.

catversion bump due to removal of a RangeTblEntry field, which changes
stored rules.

11 years agoImprove message about failed transaction log archiving
Peter Eisentraut [Sat, 27 Apr 2013 02:43:54 +0000 (22:43 -0400)]
Improve message about failed transaction log archiving

The old phrasing appeared to imply that the failure was terminal.
Improve that by indicating that archiving will be tried again later.

11 years agoUpdate config.guess and config.sub
Peter Eisentraut [Sat, 27 Apr 2013 02:13:03 +0000 (22:13 -0400)]
Update config.guess and config.sub

11 years agoFix collation assignment for aggregates with ORDER BY.
Tom Lane [Fri, 26 Apr 2013 19:48:24 +0000 (15:48 -0400)]
Fix collation assignment for aggregates with ORDER BY.

ORDER BY expressions were being treated the same as regular aggregate
arguments for purposes of collation determination, but really they should
not affect the aggregate's collation at all; only collations of the
aggregate's regular arguments should affect it.

In many cases this mistake would lead to incorrectly throwing a "collation
conflict" error; but in some cases the corrected code will silently assign
a different collation to the aggregate than before, for example
agg(foo ORDER BY bar COLLATE "x")
which will now use foo's collation rather than "x" for the aggregate.
Given this risk and the lack of field complaints about the issue, it
doesn't seem prudent to back-patch.

In passing, rearrange code in assign_collations_walker so that we don't
need multiple copies of the standard logic for computing collation of a
node with children.  (Previously, CaseExpr duplicated the standard logic,
and we would have needed a third copy for Aggref without this change.)

Andrew Gierth and David Fetter

11 years agoEnsure that user created rows in extension tables get dumped if the table is explicit...
Joe Conway [Fri, 26 Apr 2013 18:50:00 +0000 (11:50 -0700)]
Ensure that user created rows in extension tables get dumped if the table is explicitly requested, either with a -t/--table switch of the table itself, or by -n/--schema switch of the schema containing the extension table. Patch reviewed by Vibhor Kumar and Dimitri Fontaine.

Backpatched to 9.1 when the extension management facility was added.

11 years agolibpq: Fix a few bits that didn't get the memo about COPY BOTH.
Robert Haas [Fri, 26 Apr 2013 12:57:47 +0000 (08:57 -0400)]
libpq: Fix a few bits that didn't get the memo about COPY BOTH.

There's probably no real bug here at present, so not backpatching.
But it seems good to make these bits consistent with the rest of
libpq, so as to avoid future surprises.

Patch by me.  Review by Tom Lane.

11 years agoAvoid deadlock between concurrent CREATE INDEX CONCURRENTLY commands.
Tom Lane [Thu, 25 Apr 2013 20:58:05 +0000 (16:58 -0400)]
Avoid deadlock between concurrent CREATE INDEX CONCURRENTLY commands.

There was a high probability of two or more concurrent C.I.C. commands
deadlocking just before completion, because each would wait for the others
to release their reference snapshots.  Fix by releasing the snapshot
before waiting for other snapshots to go away.

Per report from Paul Hinze.  Back-patch to all active branches.

11 years agoFix typo in comment.
Heikki Linnakangas [Thu, 25 Apr 2013 11:03:10 +0000 (14:03 +0300)]
Fix typo in comment.

Peter Geoghegan

11 years agopg_basebackup: Add missing newlines at end of lines
Peter Eisentraut [Thu, 25 Apr 2013 02:51:10 +0000 (22:51 -0400)]
pg_basebackup: Add missing newlines at end of lines

11 years agoinitdb: Improve some messages
Peter Eisentraut [Thu, 25 Apr 2013 02:50:33 +0000 (22:50 -0400)]
initdb: Improve some messages

11 years agoPL/pgSQL doc: Add example for RETURN QUERY
Peter Eisentraut [Wed, 24 Apr 2013 02:46:36 +0000 (22:46 -0400)]
PL/pgSQL doc: Add example for RETURN QUERY

Erwin Brandstetter and Pavel StÄ›hule

11 years agoAdd missing #include.
Heikki Linnakangas [Wed, 24 Apr 2013 16:11:25 +0000 (19:11 +0300)]
Add missing #include.

On non-Windows systems, sys/time.h was pulled in by portability/instr_time.h,
which pulled in time.h. We certainly should include time.h directly, since
we're using time(2), but the indirect include masked the problem on most
platforms.

Andres Freund

11 years agoFix assertion failure for REFRESH MATERIALIZED VIEW in PL.
Kevin Grittner [Wed, 24 Apr 2013 13:39:06 +0000 (08:39 -0500)]
Fix assertion failure for REFRESH MATERIALIZED VIEW in PL.

This was due to incomplete implementation of rowcount reporting
for RMV, which was due to initial waffling on whether it should
be provided.  It seems unlikely to be a useful or universally
available  number as more sophisticated techniques for maintaining
matviews are added, so remove the partial support rather than
completing it.

Per report of Jeevan Chalke, but with a different fix

11 years agoMake fast promotion the default promotion mode.
Simon Riggs [Wed, 24 Apr 2013 11:21:18 +0000 (12:21 +0100)]
Make fast promotion the default promotion mode.
Continue to allow a request for synchronous
checkpoints as a mechanism in case of problems.

11 years ago9.3 release notes: adjustments per Alvaro
Bruce Momjian [Wed, 24 Apr 2013 03:21:09 +0000 (23:21 -0400)]
9.3 release notes:  adjustments per Alvaro

11 years ago9.3 release note updates from Dean Rasheed, Jov, Heikki Linnakangas,
Bruce Momjian [Tue, 23 Apr 2013 21:06:17 +0000 (17:06 -0400)]
9.3 release note updates from Dean Rasheed, Jov, Heikki Linnakangas,
Erikjan Rijkers

11 years agoRemove prototype for cube(text) function that doesn't exist anymore.
Heikki Linnakangas [Tue, 23 Apr 2013 10:48:14 +0000 (13:48 +0300)]
Remove prototype for cube(text) function that doesn't exist anymore.

Adrian Schreyer

11 years ago9.3 release notes: add diacritics
Bruce Momjian [Mon, 22 Apr 2013 21:17:00 +0000 (17:17 -0400)]
9.3 release notes: add diacritics

Alvaro Herrera

11 years ago9.3 release notes: adjustments per Alvaro and Robert
Bruce Momjian [Mon, 22 Apr 2013 20:05:06 +0000 (16:05 -0400)]
9.3 release notes:  adjustments per Alvaro and Robert

11 years agoMention in docs that you can create SP-GiST indexes on range types.
Heikki Linnakangas [Mon, 22 Apr 2013 18:51:14 +0000 (21:51 +0300)]
Mention in docs that you can create SP-GiST indexes on range types.

This is new in 9.3devel.

11 years ago9.3 release notes: apply fixes suggested by Alvaro
Bruce Momjian [Mon, 22 Apr 2013 18:33:28 +0000 (14:33 -0400)]
9.3 release notes:  apply fixes suggested by Alvaro

11 years ago9.3 release notes: update streaming replication speedups
Bruce Momjian [Mon, 22 Apr 2013 14:22:43 +0000 (10:22 -0400)]
9.3 release notes:  update streaming replication speedups

Andres Freund

11 years agodoc: Improve example formatting
Peter Eisentraut [Mon, 22 Apr 2013 02:21:29 +0000 (22:21 -0400)]
doc: Improve example formatting

Erwin Brandstetter

11 years agodoc: Fix syntax in example
Peter Eisentraut [Mon, 22 Apr 2013 02:16:12 +0000 (22:16 -0400)]
doc: Fix syntax in example

LANGUAGE 'plpgsql' no longer works.  The single quotes need to be
removed.

Erwin Brandstetter

11 years agoIn 9.3 release notes, split up items
Bruce Momjian [Mon, 22 Apr 2013 01:05:31 +0000 (21:05 -0400)]
In 9.3 release notes, split up items

Split log shipping speed improvement and fail-over speed improvement items.

Per request from Simon

11 years ago9.3 release note adjustments per request from Andres Freund
Bruce Momjian [Sun, 21 Apr 2013 14:08:58 +0000 (10:08 -0400)]
9.3 release note adjustments per request from Andres Freund

11 years agoRemove 9.3 item about fixing DROP INDEX CONCURRENTLY
Bruce Momjian [Sun, 21 Apr 2013 13:16:23 +0000 (09:16 -0400)]
Remove 9.3 item about fixing DROP INDEX CONCURRENTLY

Already fixed in back branch.

11 years ago9.3 release note fixes
Bruce Momjian [Sun, 21 Apr 2013 13:14:34 +0000 (09:14 -0400)]
9.3 release note fixes

Move commit_delay, fix Zoltan's name, and adjust range type histogram
text.

11 years agoAdjust 9.3 release notes per request from Simon
Bruce Momjian [Sun, 21 Apr 2013 13:05:16 +0000 (09:05 -0400)]
Adjust 9.3 release notes per request from Simon

11 years agoReorder 9.3 release note items
Bruce Momjian [Sun, 21 Apr 2013 04:57:18 +0000 (00:57 -0400)]
Reorder 9.3 release note items

Typo fix from David Fetter.

11 years agoMore 9.3 release note reorderings
Bruce Momjian [Sat, 20 Apr 2013 21:31:06 +0000 (17:31 -0400)]
More 9.3 release note reorderings

11 years agoFix Gilles Darold's name in 9.3 release notes.
Bruce Momjian [Sat, 20 Apr 2013 21:09:10 +0000 (17:09 -0400)]
Fix Gilles Darold's name in 9.3 release notes.

11 years agoFix longstanding race condition in plancache.c.
Tom Lane [Sat, 20 Apr 2013 20:59:21 +0000 (16:59 -0400)]
Fix longstanding race condition in plancache.c.

When creating or manipulating a cached plan for a transaction control
command (particularly ROLLBACK), we must not perform any catalog accesses,
since we might be in an aborted transaction.  However, plancache.c busily
saved or examined the search_path for every cached plan.  If we were
unlucky enough to do this at a moment where the path's expansion into
schema OIDs wasn't already cached, we'd do some catalog accesses; and with
some more bad luck such as an ill-timed signal arrival, that could lead to
crashes or Assert failures, as exhibited in bug #8095 from Nachiket Vaidya.
Fortunately, there's no real need to consider the search path for such
commands, so we can just skip the relevant steps when the subject statement
is a TransactionStmt.  This is somewhat related to bug #5269, though the
failure happens during initial cached-plan creation rather than
revalidation.

This bug has been there since the plan cache was invented, so back-patch
to all supported branches.