]> granicus.if.org Git - postgresql/log
postgresql
11 years agoSet recovery_config_directory for EXEC_BACKEND.
Simon Riggs [Wed, 27 Mar 2013 16:35:38 +0000 (16:35 +0000)]
Set recovery_config_directory for EXEC_BACKEND.
Remove comment questioning whether this is necessary for DataDir.
From buildfarm failures on Windows.

11 years agoMove some pg_dump function around.
Heikki Linnakangas [Wed, 27 Mar 2013 16:10:40 +0000 (18:10 +0200)]
Move some pg_dump function around.

Move functions used only by pg_dump and pg_restore from dumputils.c to a new
file, pg_backup_utils.c. dumputils.c is linked into psql and some programs
in bin/scripts, so it seems good to keep it slim. The parallel functionality
is moved to parallel.c, as is exit_horribly, because the interesting code in
exit_horribly is parallel-related.

This refactoring gets rid of the on_exit_msg_func function pointer. It was
problematic, because a modern gcc version with -Wmissing-format-attribute
complained if it wasn't marked with PF_PRINTF_ATTRIBUTE, but the ancient gcc
version that Tom Lane's old HP-UX box has didn't accept that attribute on a
function pointer, and gave an error. We still use a similar function pointer
trick for getLocalPQBuffer() function, to use a thread-local version of that
in parallel mode on Windows, but that dodges the problem because it doesn't
take printf-like arguments.

11 years agosepgsql: Support for new post-ALTER access hook.
Robert Haas [Wed, 27 Mar 2013 12:10:14 +0000 (08:10 -0400)]
sepgsql: Support for new post-ALTER access hook.

KaiGai Kohei

11 years agoAllow external recovery_config_directory
Simon Riggs [Wed, 27 Mar 2013 11:45:42 +0000 (11:45 +0000)]
Allow external recovery_config_directory
If required, recovery.conf can now be located outside of the data directory.
Server needs read/write permissions on this directory.

11 years agoFix grammatical errors in some new message strings.
Tom Lane [Tue, 26 Mar 2013 21:52:00 +0000 (17:52 -0400)]
Fix grammatical errors in some new message strings.

Daniele Varrazzo

11 years agoIgnore invalid indexes in pg_dump.
Tom Lane [Tue, 26 Mar 2013 21:43:19 +0000 (17:43 -0400)]
Ignore invalid indexes in pg_dump.

Dumping invalid indexes can cause problems at restore time, for example
if the reason the index creation failed was because it tried to enforce
a uniqueness condition not satisfied by the table's data.  Also, if the
index creation is in fact still in progress, it seems reasonable to
consider it to be an uncommitted DDL change, which pg_dump wouldn't be
expected to dump anyway.

Back-patch to all active versions, and teach them to ignore invalid
indexes in servers back to 8.2, where the concept was introduced.

Michael Paquier

11 years agoFix pg_dump against 9.1/9.2 servers.
Heikki Linnakangas [Tue, 26 Mar 2013 13:43:19 +0000 (15:43 +0200)]
Fix pg_dump against 9.1/9.2 servers.

The parallel pg_dump patch forgot to add relpages column to 9.1/9.2 version
of the getTables() query.

Reported by Bernd Helmle.

11 years agoGet rid of obsolete parse_version helper function.
Heikki Linnakangas [Tue, 26 Mar 2013 13:21:57 +0000 (15:21 +0200)]
Get rid of obsolete parse_version helper function.

For getting the server's version in numeric form, use PQserverVersion().
It does the exact same parsing as dumputils.c's parse_version(), and has
been around in libpq for a long time. For the client's version, just use
the PG_VERSION_NUM constant.

11 years agoFix a small logic bug in adjusted parallel restore code.
Andrew Dunstan [Tue, 26 Mar 2013 02:52:28 +0000 (22:52 -0400)]
Fix a small logic bug in adjusted parallel restore code.

11 years agoIn base backup, only include our own tablespace version directory.
Heikki Linnakangas [Mon, 25 Mar 2013 18:19:22 +0000 (20:19 +0200)]
In base backup, only include our own tablespace version directory.

If you have clusters of different versions pointing to the same tablespace
location, we would incorrectly include all the data belonging to the other
versions, too.

Fixes bug #7986, reported by Sergey Burladyan.

11 years agoMake pg_basebackup work with pre-9.3 servers, and add server version check.
Heikki Linnakangas [Fri, 22 Mar 2013 11:02:59 +0000 (13:02 +0200)]
Make pg_basebackup work with pre-9.3 servers, and add server version check.

A new 'starttli' field was added to the response of BASE_BACKUP command.
Make pg_basebackup tolerate the case that it's missing, so that it still
works with older servers.

Add an explicit check for the server version, so that you get a nicer error
message if you try to use it with a pre-9.1 server.

The streaming protocol message format changed in 9.3, so -X stream still won't
work with pre-9.3 servers. I added a version check to ReceiveXLogStream()
earlier, but write that slightly differently, so that in 9.4, it will still
work with a 9.3 server. (In 9.4, the error message needs to be adjusted to
"9.3 or above", though). Also, if the version check fails, don't retry.

11 years agoAdd PF_PRINTF_ATTRIBUTE to on_exit_msg_fmt.
Heikki Linnakangas [Mon, 25 Mar 2013 08:06:03 +0000 (10:06 +0200)]
Add PF_PRINTF_ATTRIBUTE to on_exit_msg_fmt.

Per warning from -Wmissing-format-attribute.

11 years agoAdd missing #include.
Heikki Linnakangas [Mon, 25 Mar 2013 07:55:43 +0000 (09:55 +0200)]
Add missing #include.

time(2) requires time.h.

11 years agoFix some unportable constructs in parallel pg_dump code.
Tom Lane [Sun, 24 Mar 2013 19:35:37 +0000 (15:35 -0400)]
Fix some unportable constructs in parallel pg_dump code.

Didn't compile on semi-obsolete gcc, and probably not on not-gcc-at-all
either.

11 years agoAdd parallel pg_dump option.
Andrew Dunstan [Sun, 24 Mar 2013 15:27:20 +0000 (11:27 -0400)]
Add parallel pg_dump option.

New infrastructure is added which creates a set number of workers
(threads on Windows, forked processes on Unix). Jobs are then
handed out to these workers by the master process as needed.
pg_restore is adjusted to use this new infrastructure in place of the
old setup which created a new worker for each step on the fly. Parallel
dumps acquire a snapshot clone in order to stay consistent, if
available.

The parallel option is selected by the -j / --jobs command line
parameter of pg_dump.

Joachim Wieland, lightly editorialized by Andrew Dunstan.

11 years agoUpdate time zone abbreviation lists for changes missed since 2006.
Tom Lane [Sat, 23 Mar 2013 23:16:36 +0000 (19:16 -0400)]
Update time zone abbreviation lists for changes missed since 2006.

Most (all?) of Russia has moved to what's effectively year-round daylight
savings time, so that the "standard" zone names now mean an hour later
than they used to.  Update that, notably changing MSK as per recent
complaint from Sergey Konoplev, but also CHOT, GET, IRKT, KGT, KRAT,
MAGT, NOVT, OMST, VLAT, YAKT, YEKT.  The corresponding DST abbreviations
are presumably now obsolete, but I left them in place with their old
definitions, just to reduce any possible breakage from this change.

Also add VOLT (Europe/Volgograd), which for some reason we never had
before, as well as MIST (Antarctica/Macquarie), and fix obsolete
definitions of MAWT, TKT, and WST.

11 years agoSemi-automatically detect changes in timezone abbreviations.
Tom Lane [Sat, 23 Mar 2013 22:47:22 +0000 (18:47 -0400)]
Semi-automatically detect changes in timezone abbreviations.

Add an option to zic.c to dump out all non-obsolete timezone abbreviations
defined in the Olson database.  Comparing this list to its previous state
will clue us in when something happens that we may need to account for in
the tznames/ time zone abbreviation lists.  The README file's previous
exhortation to "just grep for differences" was completely useless advice,
in my now-considerable experience; but maybe this will be a bit more
useful.  As a starting point I built the same list from the tzdata files
as they existed in 2006, which is committed here as known_abbrevs.txt.
Comparison indeed turned up quite a few changes we had neglected to account
for, which I will commit separately.

11 years agoAvoid renaming data directory during MSVC upgrade testing.
Andrew Dunstan [Sat, 23 Mar 2013 20:26:06 +0000 (16:26 -0400)]
Avoid renaming data directory during MSVC upgrade testing.

This appears to cause some intermittent file system problems
on Windows 8. Instead, set up the old data directory in its
intended final location to start with.

11 years agoDon't put <indexterm> before <term> in <varlistentry> items.
Tom Lane [Sat, 23 Mar 2013 18:06:33 +0000 (14:06 -0400)]
Don't put <indexterm> before <term> in <varlistentry> items.

Doing that results in a broken index entry in PDF output.  We had only
a few like that, which is probably why nobody noticed before.
Standardize on putting the <term> first.

Josh Kupershmidt

11 years agoDocument cross-version compatibility issues for contrib/postgres_fdw.
Tom Lane [Fri, 22 Mar 2013 21:22:31 +0000 (17:22 -0400)]
Document cross-version compatibility issues for contrib/postgres_fdw.

One of the use-cases for postgres_fdw is extracting data from older PG
servers, so cross-version compatibility is important.  Document what we
can do here, and further annotate some of the coding choices that create
compatibility constraints.  In passing, remove one unnecessary
incompatibility with old servers, namely assuming that we didn't need to
quote the timezone name 'UTC'.

11 years agoFix contrib/dblink to handle inconsistent DateStyle/IntervalStyle safely.
Tom Lane [Fri, 22 Mar 2013 19:22:15 +0000 (15:22 -0400)]
Fix contrib/dblink to handle inconsistent DateStyle/IntervalStyle safely.

If the remote database's settings of these GUCs are different from ours,
ambiguous datetime values may be read incorrectly.  To fix, temporarily
adopt the remote server's settings while we ingest a query result.

This is not a complete fix, since it doesn't do anything about ambiguous
values in commands sent to the remote server; but there seems little we
can do about that end of it given dblink's entirely textual API for
transmitted commands.

Back-patch to 9.2.  The hazard exists in all versions, but this patch
would need more work to apply before 9.2.  Given the lack of field
complaints about this issue, it doesn't seem worth the effort at present.

Daniel Farina and Tom Lane

11 years agoFix problems with incomplete attempt to prohibit OIDS with MVs.
Kevin Grittner [Fri, 22 Mar 2013 18:27:34 +0000 (13:27 -0500)]
Fix problems with incomplete attempt to prohibit OIDS with MVs.

Problem with assertion failure in restoring from pg_dump output
reported by Joachim Wieland.

Review and suggestions by Tom Lane and Robert Haas.

11 years agoSuppress uninitialized-variable warning in new checksum code.
Tom Lane [Fri, 22 Mar 2013 16:27:50 +0000 (12:27 -0400)]
Suppress uninitialized-variable warning in new checksum code.

Some compilers understand that this coding is safe, and some don't.

11 years agoUpdate commit_delay documentation.
Tom Lane [Fri, 22 Mar 2013 15:39:15 +0000 (11:39 -0400)]
Update commit_delay documentation.

Commit 13fe298ca06f5390df5edf073cf401f9f0b67458 changed this GUC to be
PGC_SUSET, but neglected to update the documentation to match.

While at it, edit and rearrange the text a little for clarity.

11 years agoAdd new README file for pages/checksums
Simon Riggs [Fri, 22 Mar 2013 14:21:58 +0000 (14:21 +0000)]
Add new README file for pages/checksums

11 years agoAllow I/O reliability checks using 16-bit checksums
Simon Riggs [Fri, 22 Mar 2013 13:54:07 +0000 (13:54 +0000)]
Allow I/O reliability checks using 16-bit checksums

Checksums are set immediately prior to flush out of shared buffers
and checked when pages are read in again. Hint bit setting will
require full page write when block is dirtied, which causes various
infrastructure changes. Extensive comments, docs and README.

WARNING message thrown if checksum fails on non-all zeroes page;
ERROR thrown but can be disabled with ignore_checksum_failure = on.

Feature enabled by an initdb option, since transition from option off
to option on is long and complex and has not yet been implemented.
Default is not to use checksums.

Checksum used is WAL CRC-32 truncated to 16-bits.

Simon Riggs, Jeff Davis, Greg Smith
Wide input and assistance from many community members. Thank you.

11 years agoSilence compiler warnings about unused values.
Andrew Dunstan [Fri, 22 Mar 2013 13:14:16 +0000 (09:14 -0400)]
Silence compiler warnings about unused values.

Per gripe from Kevin Grittner.

11 years agoChange commit_delay to be SUSET for 9.3+
Simon Riggs [Fri, 22 Mar 2013 12:01:16 +0000 (12:01 +0000)]
Change commit_delay to be SUSET for 9.3+
Prior to 9.3 the commit_delay affected only the current user,
whereas now only the group leader waits while holding the
WALWriteLock. Deliberate or accidental settings to a poor
value could seriously degrade performance for all users.
Privileges may be delegated by SECURITY DEFINER functions
for anyone that needs per-user settings in real situations.
Request for change from Peter Geoghegan

11 years agoAvoid retrieving dummy NULL columns in postgres_fdw.
Tom Lane [Fri, 22 Mar 2013 04:31:11 +0000 (00:31 -0400)]
Avoid retrieving dummy NULL columns in postgres_fdw.

This should provide some marginal overall savings, since it surely takes
many more cycles for the remote server to deal with the NULL columns than
it takes for postgres_fdw not to emit them.  But really the reason is to
keep the emitted queries from looking quite so silly ...

11 years agoRedo postgres_fdw's planner code so it can handle parameterized paths.
Tom Lane [Thu, 21 Mar 2013 23:43:59 +0000 (19:43 -0400)]
Redo postgres_fdw's planner code so it can handle parameterized paths.

I wasn't going to ship this without having at least some example of how
to do that.  This version isn't terribly bright; in particular it won't
consider any combinations of multiple join clauses.  Given the cost of
executing a remote EXPLAIN, I'm not sure we want to be very aggressive
about doing that, anyway.

In support of this, refactor generate_implied_equalities_for_indexcol
so that it can be used to extract equivalence clauses that aren't
necessarily tied to an index.

11 years agoEliminate trivial whitespace inconsistency in docs sample code.
Kevin Grittner [Thu, 21 Mar 2013 15:34:47 +0000 (10:34 -0500)]
Eliminate trivial whitespace inconsistency in docs sample code.

11 years agoFix "element <@ range" cost estimation.
Heikki Linnakangas [Thu, 21 Mar 2013 09:15:45 +0000 (11:15 +0200)]
Fix "element <@ range" cost estimation.

The statistics-based cost estimation patch for range types broke that, by
incorrectly assuming that the left operand of all range oeprators is a
range. That lead to a "type x is not a range type" error. Because it took so
long for anyone to notice, add a regression test for that case.

We still don't do proper statistics-based cost estimation for that, so you
just get a default constant estimate. We should look into implementing that,
but this patch at least fixes the regression.

Spotted by Tom Lane, when testing query from Josh Berkus.

11 years agoAllow extracting machine-readable object identity
Alvaro Herrera [Wed, 20 Mar 2013 21:19:19 +0000 (18:19 -0300)]
Allow extracting machine-readable object identity

Introduce pg_identify_object(oid,oid,int4), which is similar in spirit
to pg_describe_object but instead produces a row of machine-readable
information to uniquely identify the given object, without resorting to
OIDs or other internal representation.  This is intended to be used in
the event trigger implementation, to report objects being operated on;
but it has usefulness of its own.

Catalog version bumped because of the new function.

11 years agoBump up timeout delays some more in timeouts isolation test.
Tom Lane [Wed, 20 Mar 2013 17:53:43 +0000 (13:53 -0400)]
Bump up timeout delays some more in timeouts isolation test.

The buildfarm members using -DCLOBBER_CACHE_ALWAYS still don't like this
test.  Some experimentation shows that on my machine, isolationtester's
query to check for "waiting" state takes 2 to 2.5 seconds to bind+execute
under -DCLOBBER_CACHE_ALWAYS.  Set the timeouts to 5 seconds to leave some
headroom for possibly-slower buildfarm critters.

Really we ought to fix the "waiting" query, which is not only horridly
slow but outright wrong in detail; and then maybe we can back off these
timeouts.  But right now I'm just trying to get the buildfarm green again.

11 years agoUse ORDER BY on matview definitions were needed for stable plans.
Kevin Grittner [Tue, 19 Mar 2013 15:33:37 +0000 (10:33 -0500)]
Use ORDER BY on matview definitions were needed for stable plans.

Per report from Hadi Moshayedi of matview regression test failure
with optimization of aggregates.  A few ORDER BY clauses improve
code coverage for matviews while solving that problem.

11 years agoClarify assumption of filesystem metadata integrity.
Simon Riggs [Tue, 19 Mar 2013 08:57:29 +0000 (08:57 +0000)]
Clarify assumption of filesystem metadata integrity.

Jeff Davis

11 years agoCorrection that 2pc state files use CRC-32.
Simon Riggs [Tue, 19 Mar 2013 08:51:35 +0000 (08:51 +0000)]
Correction that 2pc state files use CRC-32.

Jeff Davis

11 years agoAdd reliability docs about storage/memory corruptions.
Simon Riggs [Mon, 18 Mar 2013 22:38:07 +0000 (22:38 +0000)]
Add reliability docs about storage/memory corruptions.
Add section to the Reliability section about what is and is not protected for
various file types.
Further edits welcome.

Designed to allow 1-2 line change when/if checksums are committed.

Inspired by docs written by Jeff Davis, though completely different from his
patch.

11 years agoImprove documentation of EXTRACT(WEEK).
Tom Lane [Mon, 18 Mar 2013 17:34:15 +0000 (13:34 -0400)]
Improve documentation of EXTRACT(WEEK).

The docs showed that early-January dates can be considered part of the
previous year for week-counting purposes, but failed to say explicitly
that late-December dates can also be considered part of the next year.
Fix that, and add a cross-reference to the "isoyear" field.  Per bug
#7967 from Pawel Kobylak.

11 years agoAdd pageinspect--1.0--1.sql for checksum changes
Simon Riggs [Mon, 18 Mar 2013 14:39:17 +0000 (14:39 +0000)]
Add pageinspect--1.0--1.sql for checksum changes

11 years agoAdd pageinspect--1.1.sql for checksum changes
Simon Riggs [Mon, 18 Mar 2013 14:19:06 +0000 (14:19 +0000)]
Add pageinspect--1.1.sql for checksum changes

11 years agoRemove PageSetTLI and rename pd_tli to pd_checksum
Simon Riggs [Mon, 18 Mar 2013 13:46:42 +0000 (13:46 +0000)]
Remove PageSetTLI and rename pd_tli to pd_checksum
Remove use of PageSetTLI() from all page manipulation functions
and adjust README to indicate change in the way we make changes
to pages. Repurpose those bytes into the pd_checksum field and
explain how that works in comments about page header.

Refactoring ahead of actual feature patch which would make use
of the checksum field, arriving later.

Jeff Davis, with comments and doc changes by Simon Riggs
Direction suggested by Robert Haas; many others providing
review comments.

11 years agoIncrease timeout delays in new timeouts isolation test.
Tom Lane [Mon, 18 Mar 2013 03:00:44 +0000 (23:00 -0400)]
Increase timeout delays in new timeouts isolation test.

Buildfarm member friarbird doesn't like this test as-committed, evidently
because it's so slow that the test framework doesn't reliably notice that
the backend is waiting before the timeout goes off.  (This is not totally
surprising, since friarbird builds with -DCLOBBER_CACHE_ALWAYS.)  Increase
the timeout delay from 1 second to 2 in hopes of resolving that problem.

11 years agoExtend object-access hook machinery to support post-alter events.
Robert Haas [Mon, 18 Mar 2013 02:55:14 +0000 (22:55 -0400)]
Extend object-access hook machinery to support post-alter events.

This also slightly widens the scope of what we support in terms of
post-create events.

KaiGai Kohei, with a few changes, mostly to the comments, by me

11 years agoImprove signal-handler lockout mechanism in timeout.c.
Tom Lane [Mon, 18 Mar 2013 02:42:19 +0000 (22:42 -0400)]
Improve signal-handler lockout mechanism in timeout.c.

Rather than doing a fairly-expensive setitimer() call to prevent interrupts
from happening, let's just invent a simple boolean flag that the signal
handler is required to check.  This is not only faster but considerably
more robust than before, since the previous code effectively assumed that
only ITIMER_REAL events would ever fire the SIGALRM handler, which is
obviously something that can be broken easily by third-party code.

Zoltán Böszörményi and Tom Lane

11 years agoUse pqsignal() in contrib programs rather than calling signal(2) directly.
Tom Lane [Sun, 17 Mar 2013 20:09:47 +0000 (16:09 -0400)]
Use pqsignal() in contrib programs rather than calling signal(2) directly.

The semantics of signal(2) are more variable than one could wish; in
particular, on strict-POSIX platforms the signal handler will be reset
to SIG_DFL when the signal is delivered.  This demonstrably breaks
pg_test_fsync's use of SIGALRM.  The other changes I made are not
absolutely necessary today, because the called handlers all exit the
program anyway.  But it seems like a good general practice to use
pqsignal() exclusively in Postgres code, now that we have it available
everywhere.

11 years agoRe-include pqsignal() in libpq.
Tom Lane [Sun, 17 Mar 2013 19:45:31 +0000 (15:45 -0400)]
Re-include pqsignal() in libpq.

We need this in non-ENABLE_THREAD_SAFETY builds, and also to satisfy
the exports.txt entry; while it might be a good idea to remove the
latter, I'm hesitant to do so except in the context of an intentional
ABI break.  At least we don't have a separately maintained source file
for it anymore.

11 years agoinitdb needs pqsignal() even on Windows.
Tom Lane [Sun, 17 Mar 2013 19:19:47 +0000 (15:19 -0400)]
initdb needs pqsignal() even on Windows.

I had thought we weren't using this version of pqsignal() at all on
Windows, but that's wrong --- initdb is using it (and coping with the
POSIX-ish semantics of bare signal() :-().  So allow the file to be
built in WIN32+FRONTEND case, and add it to the MSVC build logic.

11 years agoFix inclusions in pgbench.c.
Tom Lane [Sun, 17 Mar 2013 18:18:33 +0000 (14:18 -0400)]
Fix inclusions in pgbench.c.

Apparently this was depending on pqsignal.h for <signal.h>.
Not sure why I didn't see the failure on my other machine.

11 years agoFix inclusions in pg_receivexlog.c.
Tom Lane [Sun, 17 Mar 2013 18:11:48 +0000 (14:11 -0400)]
Fix inclusions in pg_receivexlog.c.

Apparently this was depending on pqsignal.h for <signal.h>.
Not sure why I didn't see the failure on my other machine.

11 years agoMove pqsignal() to libpgport.
Tom Lane [Sun, 17 Mar 2013 16:06:42 +0000 (12:06 -0400)]
Move pqsignal() to libpgport.

We had two copies of this function in the backend and libpq, which was
already pretty bogus, but it turns out that we need it in some other
programs that don't use libpq (such as pg_test_fsync).  So put it where
it probably should have been all along.  The signal-mask-initialization
support in src/backend/libpq/pqsignal.c stays where it is, though, since
we only need that in the backend.

11 years agoAdd lock_timeout configuration parameter.
Tom Lane [Sun, 17 Mar 2013 03:22:17 +0000 (23:22 -0400)]
Add lock_timeout configuration parameter.

This GUC allows limiting the time spent waiting to acquire any one
heavyweight lock.

In support of this, improve the recently-added timeout infrastructure
to permit efficiently enabling or disabling multiple timeouts at once.
That reduces the performance hit from turning on lock_timeout, though
it's still not zero.

Zoltán Böszörményi, reviewed by Tom Lane,
Stephen Frost, and Hari Babu

11 years agopg_resetxlog: Capitalize placeholder in --help output
Peter Eisentraut [Sun, 17 Mar 2013 01:47:52 +0000 (21:47 -0400)]
pg_resetxlog: Capitalize placeholder in --help output

11 years agopg_controldata: Undo message spelling change
Peter Eisentraut [Sun, 17 Mar 2013 01:47:10 +0000 (21:47 -0400)]
pg_controldata: Undo message spelling change

11 years agoImprove the documentation about commit_delay.
Tom Lane [Fri, 15 Mar 2013 21:41:47 +0000 (17:41 -0400)]
Improve the documentation about commit_delay.

Clarify the docs explaining what commit_delay does, and add a
recommendation about a useful value for it, namely half of the single-page
fsync time reported by pg_test_fsync.  This is informed by testing of
the new-in-9.3 implementation of commit_delay; in prior versions it
was far harder to arrive at a useful setting.

In passing, do some wordsmithing and markup-fixing in the same general
area.

Also, change pg_test_fsync's default time-per-test from 2 seconds to 5.
The old value was about the minimum at which the results could be taken
seriously at all, and so seems a tad optimistic as a default.

Peter Geoghegan, reviewed by Noah Misch; some additional editing by me

11 years agoImprove error reporting in code that checks for buffer refcount leaks.
Tom Lane [Fri, 15 Mar 2013 16:26:26 +0000 (12:26 -0400)]
Improve error reporting in code that checks for buffer refcount leaks.

Formerly we just Assert'ed that each refcount was zero, which was quick
and easy but failed to provide a good overview of what was wrong.
Change the code so that we'll call PrintBufferLeakWarning() for each
buffer with a nonzero refcount, and then Assert at the end of the loop.
This costs nothing in runtime and might ease diagnosis of some bugs.

Greg Smith, reviewed by Satoshi Nagayasu, further tweaked by me

11 years agoExtend format() to handle field width and left/right alignment.
Tom Lane [Fri, 15 Mar 2013 02:56:56 +0000 (22:56 -0400)]
Extend format() to handle field width and left/right alignment.

This change adds some more standard sprintf() functionality to format().

Pavel Stehule, reviewed by Dean Rasheed and Kyotaro Horiguchi

11 years agoAvoid inserting no-op Limit plan nodes.
Tom Lane [Thu, 14 Mar 2013 19:10:41 +0000 (15:10 -0400)]
Avoid inserting no-op Limit plan nodes.

This was discussed in connection with the patch to avoid inserting no-op
Result nodes, but not actually implemented therein.

11 years agoRevert unnecessary change in MV call to checkRuleResultList().
Kevin Grittner [Thu, 14 Mar 2013 18:59:52 +0000 (13:59 -0500)]
Revert unnecessary change in MV call to checkRuleResultList().

Due to a misreading of the function's comment block, there was an
unneeded change to a call in rewriteDefine.c.  There is, in fact
no reason to pass false for a MV; it should be true just like a
view.

Fixes issue pointed out by Tom Lane

11 years agoAdd regression test for MV join to view.
Kevin Grittner [Thu, 14 Mar 2013 18:34:51 +0000 (13:34 -0500)]
Add regression test for MV join to view.

This would have caught a bug in the initial patch, and seems like
a good thing to test going forward.

Per bug report by Erik Rijkers and fix by Tom Lane

11 years agoAlso update psqlscan.l with the UESCAPE error rule changes.
Heikki Linnakangas [Thu, 14 Mar 2013 18:31:27 +0000 (20:31 +0200)]
Also update psqlscan.l with the UESCAPE error rule changes.

Even though this patch had no user-visible difference, better keep the code
in psqlscan.l sync with the backend lexer. And of course it's nice to shrink
the psql binary, too. Ecpg's version of the lexer doesn't have the error
rule, it doesn't try to avoid backing up, so it doesn't need to be modified.

As reminded by Tom Lane

11 years agoMinor fixes for hstore_to_json_loose().
Tom Lane [Thu, 14 Mar 2013 17:51:47 +0000 (13:51 -0400)]
Minor fixes for hstore_to_json_loose().

Fix unportable use of isdigit(), get rid of useless calculations.

11 years agoAvoid inserting Result nodes that only compute identity projections.
Tom Lane [Thu, 14 Mar 2013 17:42:51 +0000 (13:42 -0400)]
Avoid inserting Result nodes that only compute identity projections.

The planner sometimes inserts Result nodes to perform column projections
(ie, arbitrary scalar calculations) above plan nodes that lack projection
logic of their own.  However, we did that even if the lower plan node was
in fact producing the required column set already; which is a pretty common
case given the popularity of "SELECT * FROM ...".  Measurements show that
the useless plan node adds non-negligible overhead, especially when there
are many columns in the result.  So add a check to avoid inserting a Result
node unless there's something useful for it to do.

There are a couple of remaining places where unnecessary Result nodes
could get inserted, but they are (a) much less performance-critical,
and (b) coded in such a way that it's hard to avoid inserting a Result,
because the desired tlist is changed on-the-fly in subsequent logic.
We'll leave those alone for now.

Kyotaro Horiguchi; reviewed and further hacked on by Amit Kapila and
Tom Lane.

11 years agoChange the way UESCAPE is lexed, to reduce the size of the flex tables.
Heikki Linnakangas [Thu, 14 Mar 2013 17:00:09 +0000 (19:00 +0200)]
Change the way UESCAPE is lexed, to reduce the size of the flex tables.

The error rule used to avoid backtracking with the U&'...' UESCAPE 'x'
syntax bloated the flex tables, so refactor that. This patch makes the error
rule shorter, by introducing a new exclusive flex state that's entered after
parsing U&'...'. This shrinks the postgres binary by about 220kB.

11 years agoAdd cost estimation of range @> and <@ operators.
Heikki Linnakangas [Thu, 14 Mar 2013 13:36:56 +0000 (15:36 +0200)]
Add cost estimation of range @> and <@ operators.

The estimates are based on the existing lower bound histogram, and a new
histogram of range lengths.

Bump catversion, because the range length histogram now needs to be present
in statistic slot kind 6, or you get an error on @> and <@ queries. (A
re-ANALYZE would be enough to fix that, though)

Alexander Korotkov, with some refactoring by me.

11 years agoAdd regression tests for XML mapping of domains
Peter Eisentraut [Thu, 14 Mar 2013 02:42:57 +0000 (22:42 -0400)]
Add regression tests for XML mapping of domains

Pavel StÄ›hule

11 years agoFix bug in dumping prior releases due to MV REFRESH dependency checking.
Kevin Grittner [Thu, 14 Mar 2013 01:20:32 +0000 (20:20 -0500)]
Fix bug in dumping prior releases due to MV REFRESH dependency checking.

Reports and suggested patches from Fujii Masao and Andrew Dunstan.

Andrew Dunstan

11 years agoIntroduce less-bogus handling of collations in contrib/postgres_fdw.
Tom Lane [Wed, 13 Mar 2013 23:46:31 +0000 (19:46 -0400)]
Introduce less-bogus handling of collations in contrib/postgres_fdw.

Treat expressions as being remotely executable only if all collations used
in them are determined by Vars of the foreign table.  This means that, if
the foreign server gets different answers than we do, it's the user's fault
for not having marked the foreign table columns with collations equivalent
to the remote table's.  This rule allows most simple expressions such as
"var < 'constant'" to be sent to the remote side, because the constant
isn't determining the collation (the Var's collation would win).  There's
still room for improvement, but it's hard to see how to do it without a
lot more knowledge and/or assumptions about what the remote side will do.

11 years agoFix documentation oversight.
Tom Lane [Tue, 12 Mar 2013 23:06:43 +0000 (19:06 -0400)]
Fix documentation oversight.

Mention that PlanForeignModify's result must be copiable by copyObject.

11 years agoFix contrib/postgres_fdw's handling of column defaults.
Tom Lane [Tue, 12 Mar 2013 22:58:13 +0000 (18:58 -0400)]
Fix contrib/postgres_fdw's handling of column defaults.

Adopt the position that only locally-defined defaults matter.  Any defaults
defined in the remote database do not affect insertions performed through
a foreign table (unless they are for columns not known to the foreign
table).  While it'd arguably be more useful to permit remote defaults to be
used, making that work in a consistent fashion requires far more work than
seems possible for 9.3.

11 years agoAllow default expressions to be attached to columns of foreign tables.
Tom Lane [Tue, 12 Mar 2013 21:37:07 +0000 (17:37 -0400)]
Allow default expressions to be attached to columns of foreign tables.

There's still some discussion about exactly how postgres_fdw ought to
handle this case, but there seems no debate that we want to allow defaults
to be used for inserts into foreign tables.  So remove the core-code
restrictions that prevented it.

While at it, get rid of the special grammar productions for CREATE FOREIGN
TABLE, and instead add explicit FEATURE_NOT_SUPPORTED error checks for the
disallowed cases.  This makes the grammar a shade smaller, and more
importantly results in much more intelligible error messages for
unsupported cases.  It's also one less thing to fix if we ever start
supporting constraints on foreign tables.

11 years agoFix orthotypographical mistake
Alvaro Herrera [Tue, 12 Mar 2013 14:57:22 +0000 (11:57 -0300)]
Fix orthotypographical mistake

Apparently I lost some of the edits I had done on this page for commit
0ac5ad5134.

Per note from Etsuro Fujita, although I didn't use his patch.

Make some of the wording in the affected section a bit more complete,
too.

11 years agoAvoid row-processing-order dependency in postgres_fdw regression test.
Tom Lane [Tue, 12 Mar 2013 14:47:04 +0000 (10:47 -0400)]
Avoid row-processing-order dependency in postgres_fdw regression test.

A test intended to provoke an error on the remote side was coded in such
a way that multiple rows should be updated, so the output would vary
depending on which one was processed first.  Per buildfarm.

11 years agoFix postgres_fdw's issues with inconsistent interpretation of data values.
Tom Lane [Tue, 12 Mar 2013 01:31:28 +0000 (21:31 -0400)]
Fix postgres_fdw's issues with inconsistent interpretation of data values.

For datatypes whose output formatting depends on one or more GUC settings,
we have to worry about whether the other server will interpret the value
the same way it was meant.  pg_dump has been aware of this hazard for a
long time, but postgres_fdw needs to deal with it too.  To fix data
retrieval from the remote server, set the necessary remote GUC settings at
connection startup.  (We were already assuming that settings made then
would persist throughout the remote session.)  To fix data transmission to
the remote server, temporarily force the relevant GUCs to the right values
when we're about to convert any data values to text for transmission.

This is all pretty grotty, and not very cheap either.  It's tempting to
think of defining one uber-GUC that would override any settings that might
render printed data values unportable.  But of course, older remote servers
wouldn't know any such thing and would still need this logic.

While at it, revert commit f7951eef89be78c50ea2241f593d76dfefe176c9, since
this provides a real fix.  (The timestamptz given in the error message
returned from the "remote" server will now reliably be shown in UTC.)

11 years agoAvoid generating bad remote SQL for INSERT ... DEFAULT VALUES.
Tom Lane [Mon, 11 Mar 2013 18:26:05 +0000 (14:26 -0400)]
Avoid generating bad remote SQL for INSERT ... DEFAULT VALUES.

"INSERT INTO foo() VALUES ()" is invalid syntax, so don't do that.

11 years agoFix thinko in matview patch.
Tom Lane [Mon, 11 Mar 2013 16:00:24 +0000 (12:00 -0400)]
Fix thinko in matview patch.

"break" instead of "continue" suppressed view expansion for views appearing
later in the range table.  Per report from Erikjan Rijkers.

While at it, improve the associated comment a bit.

11 years agoJSON generation improvements.
Andrew Dunstan [Sun, 10 Mar 2013 21:35:36 +0000 (17:35 -0400)]
JSON generation improvements.

This adds the following:

    json_agg(anyrecord) -> json
    to_json(any) -> json
    hstore_to_json(hstore) -> json (also used as a cast)
    hstore_to_json_loose(hstore) -> json

The last provides heuristic treatment of numbers and booleans.

Also, in json generation, if any non-builtin type has a cast to json,
that function is used instead of the type's output function.

Andrew Dunstan, reviewed by Steve Singer.

Catalog version bumped.

11 years agodoc: Add note about checkpoint_warning vs checkpoint_timeout
Peter Eisentraut [Sun, 10 Mar 2013 21:16:18 +0000 (17:16 -0400)]
doc: Add note about checkpoint_warning vs checkpoint_timeout

suggested by Tianyin Xu

11 years agopg_ctl: Adjust nls.mk for split out of wait_error.c
Peter Eisentraut [Sun, 10 Mar 2013 20:54:27 +0000 (16:54 -0400)]
pg_ctl: Adjust nls.mk for split out of wait_error.c

11 years agopg_basebackup: Add missing newlines to several error messages
Peter Eisentraut [Sun, 10 Mar 2013 20:53:04 +0000 (16:53 -0400)]
pg_basebackup: Add missing newlines to several error messages

11 years agoBand-aid for regression test expected-results problem with timestamptz.
Tom Lane [Sun, 10 Mar 2013 19:07:38 +0000 (15:07 -0400)]
Band-aid for regression test expected-results problem with timestamptz.

We probably need to tell the remote server to use specific timezone and
datestyle settings, and maybe other things.  But for now let's just hack
the postgres_fdw regression test to not provoke failures when run in
non-EST5EDT environments.  Per buildfarm.

11 years agoSupport writable foreign tables.
Tom Lane [Sun, 10 Mar 2013 18:14:53 +0000 (14:14 -0400)]
Support writable foreign tables.

This patch adds the core-system infrastructure needed to support updates
on foreign tables, and extends contrib/postgres_fdw to allow updates
against remote Postgres servers.  There's still a great deal of room for
improvement in optimization of remote updates, but at least there's basic
functionality there now.

KaiGai Kohei, reviewed by Alexander Korotkov and Laurenz Albe, and rather
heavily revised by Tom Lane.

11 years agoReport pg_hba line number and contents when users fail to log in
Magnus Hagander [Sun, 10 Mar 2013 14:54:37 +0000 (15:54 +0100)]
Report pg_hba line number and contents when users fail to log in

Instead of just reporting which user failed to log in, log both the
line number in the active pg_hba.conf file (which may not match reality
in case the file has been edited and not reloaded) and the contents of
the matching line (which will always be correct), to make it easier
to debug incorrect pg_hba.conf files.

The message to the client remains unchanged and does not include this
information, to prevent leaking security sensitive information.

Reviewed by Tom Lane and Dean Rasheed

11 years agoForgot catversion bump in the SP-GiST adjacent support patch.
Heikki Linnakangas [Fri, 8 Mar 2013 15:12:38 +0000 (17:12 +0200)]
Forgot catversion bump in the SP-GiST adjacent support patch.

11 years agoSP-GiST support of the range adjacent operator -|-
Heikki Linnakangas [Fri, 8 Mar 2013 13:03:19 +0000 (15:03 +0200)]
SP-GiST support of the range adjacent operator -|-

Alexander Korotkov, reviewed by Jeff Davis.

11 years agoRemove unnecessary #ifdef FRONTEND check to choose between strdup and pstrdup.
Heikki Linnakangas [Fri, 8 Mar 2013 09:21:44 +0000 (11:21 +0200)]
Remove unnecessary #ifdef FRONTEND check to choose between strdup and pstrdup.

The libpgcommon patch made that unnecessary, palloc and friends are now
available in frontend programs too, mapped to plain old malloc.

As pointed out by Alvaro Herrera.

11 years agoFix typo in docs for ALTER MATERIALIZED VIEW.
Kevin Grittner [Thu, 7 Mar 2013 17:39:36 +0000 (11:39 -0600)]
Fix typo in docs for ALTER MATERIALIZED VIEW.

Fujii Masao

11 years agoFix infinite-loop risk in fixempties() stage of regex compilation.
Tom Lane [Thu, 7 Mar 2013 16:51:03 +0000 (11:51 -0500)]
Fix infinite-loop risk in fixempties() stage of regex compilation.

The previous coding of this function could get into situations where it
would never terminate, because successive passes would re-add EMPTY arcs
that had been removed by the previous pass.  Rewrite the function
completely using a new algorithm that is guaranteed to terminate, and
also seems to be usually faster than the old one.  Per Tcl bugs 3604074
and 3606683.

Tom Lane and Don Porter

11 years agoFix tli history file fetching, broken by the archive after crash recevery patch.
Heikki Linnakangas [Thu, 7 Mar 2013 10:18:41 +0000 (12:18 +0200)]
Fix tli history file fetching, broken by the archive after crash recevery patch.

If we were about to enter archive recovery after crash recovery, we scanned
the archive for the latest tli history file, and set the recovery target
timeline to that. However, when we actually tried to read the history file,
we would not fetch the file from the archive, because we were not in archive
recovery yet.

To fix, make readTimeLineHistory and existsTimeLineHistory to always fetch
the file from archive if archive recovery is requested, even if we're not in
archive recovery yet.

Backpatch to 9.2. Mitsumasa KONDO

11 years agoArrange to cache FdwRoutine structs in foreign tables' relcache entries.
Tom Lane [Thu, 7 Mar 2013 04:47:38 +0000 (23:47 -0500)]
Arrange to cache FdwRoutine structs in foreign tables' relcache entries.

This saves several catalog lookups per reference.  It's not all that
exciting right now, because we'd managed to minimize the number of places
that need to fetch the data; but the upcoming writable-foreign-tables patch
needs this info in a lot more places.

11 years agoAdd fe_memutils.c to nls.mk where used
Peter Eisentraut [Thu, 7 Mar 2013 04:45:16 +0000 (23:45 -0500)]
Add fe_memutils.c to nls.mk where used

11 years agoCode beautification for object-access hook machinery.
Robert Haas [Thu, 7 Mar 2013 01:52:06 +0000 (20:52 -0500)]
Code beautification for object-access hook machinery.

KaiGai Kohei

11 years agoAdjust nls.mk for split out of wait_error.c
Peter Eisentraut [Thu, 7 Mar 2013 01:25:25 +0000 (20:25 -0500)]
Adjust nls.mk for split out of wait_error.c

11 years agoFix missing #include in commands/matview.h.
Tom Lane [Wed, 6 Mar 2013 23:20:51 +0000 (18:20 -0500)]
Fix missing #include in commands/matview.h.

It needs parsenodes.h to be compilable regardless of previous headers.

11 years agoWAL-log the extension of a new empty MV heap which is being populated.
Kevin Grittner [Wed, 6 Mar 2013 23:15:34 +0000 (17:15 -0600)]
WAL-log the extension of a new empty MV heap which is being populated.

This page with no tuples is used to distinguish an MV containing a
zero-row resultset of its backing query from an MV which has not
been populated by its backing query.  Unless WAL-logged, recovery
and hot standby don't work correctly with what should be an empty
but scannable materialized view.

Fixes bugs reported by Fujii Masao in testing MVs on hot standby.

11 years agoAdd docs for pg_matviews, which were missed in the initial MV commit.
Kevin Grittner [Wed, 6 Mar 2013 21:35:59 +0000 (15:35 -0600)]
Add docs for pg_matviews, which were missed in the initial MV commit.

11 years agoFix broken pg_dump for 9.0 and 9.1 caused by the MV patch.
Kevin Grittner [Wed, 6 Mar 2013 15:51:49 +0000 (09:51 -0600)]
Fix broken pg_dump for 9.0 and 9.1 caused by the MV patch.

Per report and suggestion from Bernd Helmle

11 years agoFix message typo.
Andrew Dunstan [Wed, 6 Mar 2013 14:53:38 +0000 (09:53 -0500)]
Fix message typo.

11 years agopg_ctl: Add comma to message
Peter Eisentraut [Wed, 6 Mar 2013 04:22:12 +0000 (23:22 -0500)]
pg_ctl: Add comma to message

11 years agoRemove dependency on the DLL of pythonxx.def file.
Andrew Dunstan [Wed, 6 Mar 2013 00:24:29 +0000 (19:24 -0500)]
Remove dependency on the DLL of pythonxx.def file.

This confused Cygwin's make because of the colon in the path. The
DLL isn't likely to change under us so preserving the dependency
doesn't gain us much, and it's useful to be able to do a native
Windows build with the Cygwin mingw toolset.

Noah Misch.