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

11 years agoReorder some 9.3 release item entries
Bruce Momjian [Sat, 20 Apr 2013 20:50:56 +0000 (16:50 -0400)]
Reorder some 9.3 release item entries

More to go.

11 years agoPush 9.3 release SGML file
Bruce Momjian [Sat, 20 Apr 2013 20:32:32 +0000 (16:32 -0400)]
Push 9.3 release SGML file

Forgotten in previous commit.

11 years agoPublish draft 9.3 release notes
Bruce Momjian [Sat, 20 Apr 2013 20:29:58 +0000 (16:29 -0400)]
Publish draft 9.3 release notes

No links added yet.

11 years agodoc: Mention SATA alongside IDE for Linux
Peter Eisentraut [Sat, 20 Apr 2013 19:56:22 +0000 (15:56 -0400)]
doc: Mention SATA alongside IDE for Linux

suggested by Jov

11 years agoClean up references to SQL92
Peter Eisentraut [Sat, 20 Apr 2013 15:04:41 +0000 (11:04 -0400)]
Clean up references to SQL92

In most cases, these were just references to the SQL standard in
general.  In a few cases, a contrast was made between SQL92 and later
standards -- those have been kept unchanged.

11 years agoImprove error message when an FDW doesn't support WHERE CURRENT OF.
Tom Lane [Fri, 19 Apr 2013 20:14:56 +0000 (16:14 -0400)]
Improve error message when an FDW doesn't support WHERE CURRENT OF.

If an FDW fails to take special measures with a CurrentOfExpr, we will
end up trying to execute it as an ordinary qual, which was being treated
as a purely internal failure condition.  Provide a more user-oriented
error message for such cases.

11 years agoDon't try to pass -I switch to postmaster in contrib/start-scripts/linux.
Tom Lane [Fri, 19 Apr 2013 17:28:45 +0000 (13:28 -0400)]
Don't try to pass -I switch to postmaster in contrib/start-scripts/linux.

Undo thinko in commit 87306184580c9c49717b00d48a2f9e717f21e0a8.
Per bug #8098 from Catherine Devlin.

11 years agoFix typo in comment.
Robert Haas [Fri, 19 Apr 2013 13:32:49 +0000 (09:32 -0400)]
Fix typo in comment.

Fabrízio de Royes Mello

11 years agoStandardize spelling of "nonblocking"
Peter Eisentraut [Fri, 19 Apr 2013 03:35:19 +0000 (23:35 -0400)]
Standardize spelling of "nonblocking"

Only adjusted the user-exposed messages and documentation,  not all
source code comments.

11 years agopg_upgrade: Add checksum C comment
Bruce Momjian [Wed, 17 Apr 2013 21:39:14 +0000 (17:39 -0400)]
pg_upgrade:  Add checksum C comment

We might eventually allow checksum to no-checksum upgrades.

11 years agosepgsql: Minor improvement to test script, doc fix.
Robert Haas [Wed, 17 Apr 2013 13:55:24 +0000 (09:55 -0400)]
sepgsql: Minor improvement to test script, doc fix.

KaiGai Kohei

11 years agosepgsql: One more getObjectIdentity in lieu of getObjectDescription.
Robert Haas [Wed, 17 Apr 2013 13:52:25 +0000 (09:52 -0400)]
sepgsql: One more getObjectIdentity in lieu of getObjectDescription.

KaiGai Kohei, based on a suggestion from Álvaro Herrera

11 years agodoc: Update PQgetssl() documentation
Peter Eisentraut [Wed, 17 Apr 2013 01:42:10 +0000 (21:42 -0400)]
doc: Update PQgetssl() documentation

The return type of PQgetssl() was changed from SSL* to void* a long time
ago, but the documentation was not updated.

11 years agopgindent: add newline to die() so script line number is not reported on failure.
Bruce Momjian [Tue, 16 Apr 2013 14:30:31 +0000 (10:30 -0400)]
pgindent:  add newline to die() so script line number is not reported on failure.

11 years agoRemove some unused and seldom used fields from RelationAmInfo.
Heikki Linnakangas [Tue, 16 Apr 2013 12:01:21 +0000 (15:01 +0300)]
Remove some unused and seldom used fields from RelationAmInfo.

This saves some memory from each index relcache entry. At least on a 64-bit
machine, it saves just enough to shrink a typical relcache entry's memory
usage from 2k to 1k. That's nice if you have a lot of backends and a lot of
indexes.

11 years agoFix function return type confusion
Peter Eisentraut [Tue, 16 Apr 2013 02:33:24 +0000 (22:33 -0400)]
Fix function return type confusion

When parse_hba_line's return type was changed from bool to a pointer,
the MANDATORY_AUTH_ARG macro wasn't adjusted.

11 years agoMark json IO and extraction functions immutable.
Andrew Dunstan [Tue, 16 Apr 2013 01:46:25 +0000 (21:46 -0400)]
Mark json IO and extraction functions immutable.

Per complaint from Hubert Depesz Lubaczewski.

Catalog version bumped.

11 years agoCorrect handling of NULL arguments in json funcs.
Andrew Dunstan [Mon, 15 Apr 2013 20:20:21 +0000 (16:20 -0400)]
Correct handling of NULL arguments in json funcs.

Per gripe from Tom Lane.

11 years agoImprove GiST index search performance for trigram regex queries.
Tom Lane [Mon, 15 Apr 2013 16:49:29 +0000 (12:49 -0400)]
Improve GiST index search performance for trigram regex queries.

The initial coding just descended the index if any of the target trigrams
were possibly present at the next level down.  But actually we can apply
trigramsMatchGraph() so as to take advantage of AND requirements when there
are some.  The input data might contain false positive matches, but that
can only result in a false positive result, not false negative, so it's
safe to do it this way.

Alexander Korotkov

11 years agoAdd serial comma
Peter Eisentraut [Sun, 14 Apr 2013 15:12:30 +0000 (11:12 -0400)]
Add serial comma

11 years agopg_ctl: Add idempotent option
Peter Eisentraut [Sun, 14 Apr 2013 03:42:42 +0000 (23:42 -0400)]
pg_ctl: Add idempotent option

This changes the behavior of the start and stop actions to exit
successfully if the server was already started or stopped.

This changes the default behavior of the start action:  Before, if the
server was already running, it would print a message and succeed.  Now,
that situation will result in an error.  When running in idempotent
mode, no message is printed and pg_ctl exits successfully.

It was considered to just make the idempotent behavior the default and
only option, but pg_upgrade needs the old behavior.

11 years agoFix sporadic rebuilds for .pc files
Peter Eisentraut [Sat, 13 Apr 2013 02:45:51 +0000 (22:45 -0400)]
Fix sporadic rebuilds for .pc files

The build of .pc (pkg-config) files depends on all makefiles in use, and
in dependency tracking mode, the previous coding ended up including
/dev/null as a makefile.  Apparently, on some platforms the modification
time of /dev/null changes sporadically, and so the .pc files would end
up being rebuilt every so often.  Fix that by changing the makefile code
to do without using /dev/null.

11 years agoClean up the mess around EXPLAIN and materialized views.
Tom Lane [Fri, 12 Apr 2013 23:25:20 +0000 (19:25 -0400)]
Clean up the mess around EXPLAIN and materialized views.

Revert the matview-related changes in explain.c's API, as per recent
complaint from Robert Haas.  The reason for these appears to have been
principally some ill-considered choices around having intorel_startup do
what ought to be parse-time checking, plus a poor arrangement for passing
it the view parsetree it needs to store into pg_rewrite when creating a
materialized view.  Do the latter by having parse analysis stick a copy
into the IntoClause, instead of doing it at runtime.  (On the whole,
I seriously question the choice to represent CREATE MATERIALIZED VIEW as a
variant of SELECT INTO/CREATE TABLE AS, because that means injecting even
more complexity into what was already a horrid legacy kluge.  However,
I didn't go so far as to rethink that choice ... yet.)

I also moved several error checks into matview parse analysis, and
made the check for external Params in a matview more accurate.

In passing, clean things up a bit more around interpretOidsOption(),
and fix things so that we can use that to force no-oids for views,
sequences, etc, thereby eliminating the need to cons up "oids = false"
options when creating them.

catversion bump due to change in IntoClause.  (I wonder though if we
really need readfuncs/outfuncs support for IntoClause anymore.)

11 years agopgindent: improve error messages
Bruce Momjian [Fri, 12 Apr 2013 19:25:33 +0000 (15:25 -0400)]
pgindent: improve error messages

per suggestion from Gurjeet Singh

11 years agopgindent: fix downloading of BSD indent binary
Bruce Momjian [Fri, 12 Apr 2013 15:42:27 +0000 (11:42 -0400)]
pgindent:  fix downloading of BSD indent binary

Also fix accessing pgentab binary and tar.

Gurjeet Singh

11 years agosepgsql: Enforce db_procedure:{execute} permission.
Robert Haas [Fri, 12 Apr 2013 12:55:56 +0000 (08:55 -0400)]
sepgsql: Enforce db_procedure:{execute} permission.

To do this, we add an additional object access hook type,
OAT_FUNCTION_EXECUTE.

KaiGai Kohei

11 years agoMinor wording corrections for object-access hook stuff.
Robert Haas [Fri, 12 Apr 2013 12:39:38 +0000 (08:39 -0400)]
Minor wording corrections for object-access hook stuff.

KaiGai Kohei

11 years agosepgql: Use getObjectIdentity rather than getObjectDescription.
Robert Haas [Fri, 12 Apr 2013 12:35:55 +0000 (08:35 -0400)]
sepgql: Use getObjectIdentity rather than getObjectDescription.

KaiGai Kohei, based on a suggestion from Álvaro Herrera

11 years agoDocument that git_changelog needs updating for major version stamping.
Bruce Momjian [Thu, 11 Apr 2013 16:27:02 +0000 (12:27 -0400)]
Document that git_changelog needs updating for major version stamping.

11 years agoRemove quotes around SQL statement in error message
Alvaro Herrera [Thu, 11 Apr 2013 15:00:09 +0000 (12:00 -0300)]
Remove quotes around SQL statement in error message

11 years agoFix confusion between ObjectType and ObjectClass
Alvaro Herrera [Thu, 11 Apr 2013 14:59:47 +0000 (11:59 -0300)]
Fix confusion between ObjectType and ObjectClass

Per report by Will Leinweber and Peter Eisentraut

11 years agodoc: Update DTrace information
Peter Eisentraut [Thu, 11 Apr 2013 03:05:13 +0000 (23:05 -0400)]
doc: Update DTrace information

The old web site link no longer worked, and some information was
outdated.

11 years agoUpdate the description for the graphical installers
Magnus Hagander [Wed, 10 Apr 2013 19:37:49 +0000 (21:37 +0200)]
Update the description for the graphical installers

Remove references to "one click", as we're not supposed to call
them that anymore.

11 years agoFix SIGUSR1 handling by unconnected bgworkers
Alvaro Herrera [Wed, 10 Apr 2013 19:01:16 +0000 (16:01 -0300)]
Fix SIGUSR1 handling by unconnected bgworkers

Latch activity was not being detected by non-database-connected workers; the
SIGUSR1 signal handler which is normally in charge of that was set to SIG_IGN.
Create a simple handler to call latch_sigusr1_handler instead.

Robert Haas (bug report and suggested fix)

11 years agoFix SIGHUP handling by unconnected bgworkers
Alvaro Herrera [Wed, 10 Apr 2013 18:59:45 +0000 (15:59 -0300)]
Fix SIGHUP handling by unconnected bgworkers

Add a SignalUnconnectedWorkers() call so that non-database-connected background
workers are also notified when postmaster is SIGHUPped.  Previously, only
database-connected workers were.

Michael Paquier (bug report and fix)

11 years agoMake contrib/pg_trgm also support regex searches with GiST indexes.
Tom Lane [Wed, 10 Apr 2013 17:30:14 +0000 (13:30 -0400)]
Make contrib/pg_trgm also support regex searches with GiST indexes.

This wasn't addressed in the original patch, but it doesn't take very
much additional code to cover the case, so let's get it done.

Since pg_trgm 1.1 hasn't been released yet, I just changed the definition
of what's in it, rather than inventing a 1.2.

11 years agoMake worker_spi sample code more complete
Alvaro Herrera [Wed, 10 Apr 2013 16:29:25 +0000 (13:29 -0300)]
Make worker_spi sample code more complete

Make use of some GUC variables, and add SIGHUP handling to reload
the config file.  Patch submitted by Guillaume Lelarge.

Also, report to pg_stat_activity.  Per report from Marc Cousin, add
setting of statement start time.

11 years agoFix hstore_to_json_loose example in docs.
Andrew Dunstan [Wed, 10 Apr 2013 13:26:46 +0000 (09:26 -0400)]
Fix hstore_to_json_loose example in docs.

Marti Raudsepp.

11 years agoRemove duplicate initialization in XLogReadRecord.
Robert Haas [Wed, 10 Apr 2013 03:58:02 +0000 (23:58 -0400)]
Remove duplicate initialization in XLogReadRecord.

Per a note from Dickson S. Guedes.

11 years agoCreate a distinction between a populated matview and a scannable one.
Kevin Grittner [Tue, 9 Apr 2013 18:02:49 +0000 (13:02 -0500)]
Create a distinction between a populated matview and a scannable one.

The intent was that being populated would, long term, be just one
of the conditions which could affect whether a matview was
scannable; being populated should be necessary but not always
sufficient to scan the relation.  Since only CREATE and REFRESH
currently determine the scannability, names and comments
accidentally conflated these concepts, leading to confusion.

Also add missing locking for the SQL function which allows a
test for scannability, and fix a modularity violatiion.

Per complaints from Tom Lane, although its not clear that these
will satisfy his concerns.  Hopefully this will at least better
frame the discussion.

11 years agoAdjust ExplainOneQuery_hook_type to take a DestReceiver argument.
Robert Haas [Tue, 9 Apr 2013 14:13:38 +0000 (10:13 -0400)]
Adjust ExplainOneQuery_hook_type to take a DestReceiver argument.

The materialized views patch adjusted ExplainOneQuery to take an
additional DestReceiver argument, but failed to add a matching
argument to the definition of ExplainOneQuery_hook.  This is a
problem for users of the hook that want to call ExplainOnePlan.
Fix by adding the missing argument.

11 years agoSupport indexing of regular-expression searches in contrib/pg_trgm.
Tom Lane [Tue, 9 Apr 2013 05:05:55 +0000 (01:05 -0400)]
Support indexing of regular-expression searches in contrib/pg_trgm.

This works by extracting trigrams from the given regular expression,
in generally the same spirit as the previously-existing support for
LIKE searches, though of course the details are far more complicated.

Currently, only GIN indexes are supported.  We might be able to make
it work with GiST indexes later.

The implementation includes adding API functions to backend/regex/
to provide a view of the search NFA created from a regular expression.
These functions are meant to be generic enough to be supportable in
a standalone version of the regex library, should that ever happen.

Alexander Korotkov, reviewed by Heikki Linnakangas and Tom Lane

11 years agoMinor rewording of README comments
Simon Riggs [Mon, 8 Apr 2013 16:20:26 +0000 (17:20 +0100)]
Minor rewording of README comments

11 years agoFix calculation of how many segments to retain for wal_keep_segments.
Heikki Linnakangas [Mon, 8 Apr 2013 13:26:52 +0000 (16:26 +0300)]
Fix calculation of how many segments to retain for wal_keep_segments.

KeepLogSeg function was broken when we switched to use a 64-bit int for the
segment number.

Per report from Jeff Janes.

11 years agoSkip extraneous locking in XLogCheckBuffer().
Simon Riggs [Mon, 8 Apr 2013 08:11:49 +0000 (09:11 +0100)]
Skip extraneous locking in XLogCheckBuffer().
Heikki reported comment was wrong, so fixed
code to match the comment: we only need to
take additional locking precautions when we
have a shared lock on the buffer.

11 years agoAvoid tricky race condition recording XLOG_HINT
Simon Riggs [Mon, 8 Apr 2013 07:52:39 +0000 (08:52 +0100)]
Avoid tricky race condition recording XLOG_HINT
We copy the buffer before inserting an XLOG_HINT to avoid WAL CRC errors
caused by concurrent hint writes to buffer while share locked. To make this work
we refactor RestoreBackupBlock() to allow an XLOG_HINT to avoid the normal
path for backup blocks, which assumes the underlying buffer is exclusive locked.
Resulting code completely changes layout of XLOG_HINT WAL records, but
this isn't even beta code, so this is a low impact change.
In passing, avoid taking WALInsertLock for full page writes on checksummed
hints, remove related cruft from XLogInsert() and improve xlog_desc record for
XLOG_HINT.

Andres Freund

Bug report by Fujii Masao, testing by Jeff Janes and Jaime Casanova,
review by Jeff Davis and Simon Riggs. Applied with changes from review
and some comment editing.

11 years agoREADME comments on checksums on page holes.
Simon Riggs [Mon, 8 Apr 2013 07:42:52 +0000 (08:42 +0100)]
README comments on checksums on page holes.

11 years agoTune BufferGetLSNAtomic() when checksums !enabled
Simon Riggs [Sun, 7 Apr 2013 21:37:39 +0000 (22:37 +0100)]
Tune BufferGetLSNAtomic() when checksums !enabled

From performance analysis by Heikki Linnakangas

11 years agoFix checksums for CLUSTER, VACUUM FULL etc.
Simon Riggs [Sun, 7 Apr 2013 21:16:51 +0000 (22:16 +0100)]
Fix checksums for CLUSTER, VACUUM FULL etc.
In CLUSTER, VACUUM FULL and ALTER TABLE SET TABLESPACE
I erroneously set checksum before log_newpage, which
sets the LSN and invalidates the checksum. So set
checksum immediately *after* log_newpage.

Bug report Fujii Masao, Fix and patch by Jeff Davis

11 years agoGet rid of USE_WIDE_UPPER_LOWER dependency in trigram construction.
Tom Lane [Sun, 7 Apr 2013 18:45:33 +0000 (14:45 -0400)]
Get rid of USE_WIDE_UPPER_LOWER dependency in trigram construction.

contrib/pg_trgm's make_trigrams() was coded to ignore multibyte character
boundaries and just make trigrams from bytes if USE_WIDE_UPPER_LOWER wasn't
defined.  This is a bit odd, since there's no obvious reason why trigram
compaction rules should depend on the presence of towlower() and friends.
What's more, there was an Assert() that would fail if that code path was
fed any multibyte characters.

We need to do something about this since the pending regex-indexing patch
has an assumption that you get just one "trgm" from any three characters.
The best solution seems to be to remove the USE_WIDE_UPPER_LOWER
dependency, which shouldn't really have been there in the first place.
The second loop in make_trigrams() is now just a fast path and not a
potentially incompatible algorithm.

If there is anybody still using Postgres on machines without wcstombs() or
towlower(), and they have non-ASCII data indexed by pg_trgm, they'll need
to REINDEX those indexes after pg_upgrade to 9.3, else searches may fail
incorrectly. It seems likely that there are no such installations, though.

In passing, rename cnt_trigram to compact_trigram, which seems to better
describe its functionality, and improve make_trigrams' test for whether it
has to use the slow path or not (per a suggestion from Alexander Korotkov).

11 years agoIn isolationtester, retry after EINTR return from select(2).
Tom Lane [Sun, 7 Apr 2013 02:28:49 +0000 (22:28 -0400)]
In isolationtester, retry after EINTR return from select(2).

Per report from Jaime Casanova.  Very curious that no one else has seen
this failure ... but the code is clearly wrong as-is.

11 years agosepgsql: Enforce db_schema:search permission.
Robert Haas [Fri, 5 Apr 2013 12:51:31 +0000 (08:51 -0400)]
sepgsql: Enforce db_schema:search permission.

KaiGai Kohei, with comment and doc wordsmithing by me

11 years agoImprove documentation about the relationship of extensions and schemas.
Tom Lane [Fri, 5 Apr 2013 02:37:25 +0000 (22:37 -0400)]
Improve documentation about the relationship of extensions and schemas.

There's been some confusion expressed about this point, so clarify.
Extended version of a patch by David Wheeler.

11 years agodoc: Fix number of columns in table
Peter Eisentraut [Fri, 5 Apr 2013 01:07:05 +0000 (21:07 -0400)]
doc: Fix number of columns in table

11 years agoFix line count in slashUsage().
Tom Lane [Fri, 5 Apr 2013 00:29:46 +0000 (20:29 -0400)]
Fix line count in slashUsage().

Counting newlines shows that quite a few recent patches have neglected
to update the output-lines count given to PageOutput().  Fortunately
it's not terribly critical that this be exact, since we long since
exceeded the height of most people's terminal windows.  Still, maybe
we ought to think of a way to not have to maintain this manually anymore.

11 years agoAdd \watch [SEC] command to psql.
Tom Lane [Thu, 4 Apr 2013 23:56:33 +0000 (19:56 -0400)]
Add \watch [SEC] command to psql.

This allows convenient re-execution of commands.

Will Leinweber, reviewed by Peter Eisentraut, Daniel Farina, and Tom Lane

11 years agoFix off by one error in JSON extract path code.
Andrew Dunstan [Thu, 4 Apr 2013 22:26:52 +0000 (18:26 -0400)]
Fix off by one error in JSON extract path code.

Bug report by David Wheeler, diagnosis assistance from Tom Lane.

11 years agopsql: fix startup crash caused by PSQLRC containing a tilde
Bruce Momjian [Thu, 4 Apr 2013 16:56:21 +0000 (12:56 -0400)]
psql:  fix startup crash caused by PSQLRC containing a tilde

'strdup' the PSQLRC environment variable value before calling a routine
that might free() it.

Backpatch to 9.2, where the bug first appeared.

11 years agoFix crash on compiling a regular expression with more than 32k colors.
Heikki Linnakangas [Thu, 4 Apr 2013 16:04:57 +0000 (19:04 +0300)]
Fix crash on compiling a regular expression with more than 32k colors.

Throw an error instead.

Backpatch to all supported branches.

11 years agoFix a few thinkos in the JSON functions docs.
Andrew Dunstan [Thu, 4 Apr 2013 14:41:29 +0000 (10:41 -0400)]
Fix a few thinkos in the JSON functions docs.

Dickson S. Guedes