]> granicus.if.org Git - postgresql/log
postgresql
11 years agopgbench: Remove stray use of "float" math.
Noah Misch [Sat, 5 Oct 2013 21:19:37 +0000 (17:19 -0400)]
pgbench: Remove stray use of "float" math.

Oversight in commit 4a87f308b33457670f9ab4bc622678e5d285b9c2.

Fabien COELHO

11 years agopg_upgrade doc: link mode additions
Bruce Momjian [Sat, 5 Oct 2013 14:18:02 +0000 (10:18 -0400)]
pg_upgrade doc: link mode additions

Mention that link mode uses less disk space, and uses junction points on
Windows.

Backpatch to 9.3.

11 years agoadd multixact-no-deadlock to schedule
Alvaro Herrera [Fri, 4 Oct 2013 17:25:30 +0000 (14:25 -0300)]
add multixact-no-deadlock to schedule

11 years agoMake some isolationtester specs more complete
Alvaro Herrera [Fri, 4 Oct 2013 17:24:46 +0000 (14:24 -0300)]
Make some isolationtester specs more complete

Also, make sure they pass on all transaction isolation levels.

11 years agoisolationtester: Allow tuples to be returned in more places
Alvaro Herrera [Fri, 4 Oct 2013 13:32:48 +0000 (10:32 -0300)]
isolationtester: Allow tuples to be returned in more places

Previously, isolationtester would forbid returning tuples in
session-specific teardown (but not global teardown), as well as in
global setup.  Allow these places to return tuples, too.

11 years agoIssue error on SET outside transaction block in some cases
Bruce Momjian [Fri, 4 Oct 2013 17:50:28 +0000 (13:50 -0400)]
Issue error on SET outside transaction block in some cases

Issue error for SET LOCAL/CONSTRAINTS/TRANSACTION outside a transaction
block, as they have no effect.

Per suggestion from Morten Hustveit

11 years agodoc: Add missing words to bgworker docs.
Robert Haas [Fri, 4 Oct 2013 15:13:50 +0000 (11:13 -0400)]
doc: Add missing words to bgworker docs.

Maciek Sakrejda

11 years agoFix silly thinko in ResetSequenceCaches.
Robert Haas [Fri, 4 Oct 2013 00:17:51 +0000 (20:17 -0400)]
Fix silly thinko in ResetSequenceCaches.

Report from Kevin Hale Boyes.

11 years agoAdd DISCARD SEQUENCES command.
Robert Haas [Thu, 3 Oct 2013 20:17:18 +0000 (16:17 -0400)]
Add DISCARD SEQUENCES command.

DISCARD ALL will now discard cached sequence information, as well.

Fabrízio de Royes Mello, reviewed by Zoltán Böszörményi, with some
further tweaks by me.

11 years agopsql: Make \pset without arguments show all settings.
Robert Haas [Thu, 3 Oct 2013 19:18:02 +0000 (15:18 -0400)]
psql: Make \pset without arguments show all settings.

Gilles Darold, reviewed by Pavel Stehule

11 years agoMinor GIN code refactoring.
Heikki Linnakangas [Thu, 3 Oct 2013 08:47:17 +0000 (11:47 +0300)]
Minor GIN code refactoring.

It makes for cleaner code to have separate Get/Add functions for PostingItems
and ItemPointers.  A few callsites that have to deal with both types need to
be duplicated because of this, but all the callers have to know which one
they're dealing with anyway. Overall, this reduces the amount of casting
required.

Extracted from Alexander Korotkov's larger patch to change the data page
format.

11 years agodoc: Correct psycopg URL
Peter Eisentraut [Thu, 3 Oct 2013 01:33:26 +0000 (21:33 -0400)]
doc: Correct psycopg URL

11 years agopsql: Set up cancel handler later
Peter Eisentraut [Thu, 3 Oct 2013 01:05:08 +0000 (21:05 -0400)]
psql: Set up cancel handler later

The cancel handler was uselessly set up even before the first connection
was opened.  By setting it up afterwards, the user can use Ctrl+C to
abort psql if the initial connection attempt hangs.

Reviewed-by: Dean Rasheed <dean.a.rasheed@gmail.com>
Reviewed-by: Ryan Kelly <rpkelly22@gmail.com>
11 years agodoc: fix hstore_to_json_loose() doc wording
Bruce Momjian [Wed, 2 Oct 2013 23:25:24 +0000 (19:25 -0400)]
doc: fix hstore_to_json_loose() doc wording

11 years agoFix copy/paste error
Magnus Hagander [Wed, 2 Oct 2013 14:42:36 +0000 (16:42 +0200)]
Fix copy/paste error

11 years agoAdjust C comments that would be wrap-able.
Bruce Momjian [Tue, 1 Oct 2013 23:44:53 +0000 (19:44 -0400)]
Adjust C comments that would be wrap-able.

11 years agoAdd WaitForLockers in lmgr, refactoring index.c code
Alvaro Herrera [Fri, 27 Sep 2013 14:46:33 +0000 (11:46 -0300)]
Add WaitForLockers in lmgr, refactoring index.c code

This is in support of a future REINDEX CONCURRENTLY feature.

Michael Paquier

11 years agoRemove broken PGXS code for pg_xlogdump
Alvaro Herrera [Tue, 1 Oct 2013 20:36:15 +0000 (17:36 -0300)]
Remove broken PGXS code for pg_xlogdump

With the PGXS boilerplate in place, pg_xlogdump currently fails with an
ominous error message that certain targets cannot be built because
certain files do not exist.  Remove that and instead throw a quick error
message alerting the user of the actual problem, which should be easier
to diagnose that the statu quo.

Andres Freund

11 years agoAdd missing condition for pg_depend in hstore migration script.
Andrew Dunstan [Mon, 30 Sep 2013 15:33:54 +0000 (11:33 -0400)]
Add missing condition for pg_depend in hstore migration script.

Error noted by Andres Freund.

11 years agoEnsure installation dirs are built before contents are installed (v2)
Andrew Dunstan [Mon, 30 Sep 2013 14:17:30 +0000 (10:17 -0400)]
Ensure installation dirs are built before contents are installed (v2)

Push dependency on installdirs down to individual targets.

Christoph Berg

11 years agoIn bms_add_member(), use repalloc() if the bms needs to be enlarged.
Heikki Linnakangas [Mon, 30 Sep 2013 13:37:00 +0000 (16:37 +0300)]
In bms_add_member(), use repalloc() if the bms needs to be enlarged.

Previously bms_add_member() would palloc a whole-new copy of the existing
set, copy the words, and pfree the old one. repalloc() is potentially much
faster, and more importantly, this is less surprising if CurrentMemoryContext
is not the same as the context the old set is in. bms_add_member() still
allocates a new bitmapset in CurrentMemoryContext if NULL is passed as
argument, but that is a lot less likely to induce bugs.

Nicholas White.

11 years agoFix snapshot leak if lo_open called on non-existent object.
Heikki Linnakangas [Mon, 30 Sep 2013 08:29:09 +0000 (11:29 +0300)]
Fix snapshot leak if lo_open called on non-existent object.

lo_open registers the currently active snapshot, and checks if the
large object exists after that. Normally, snapshots registered by lo_open
are unregistered at end of transaction when the lo descriptor is closed, but
if we error out before the lo descriptor is added to the list of open
descriptors, it is leaked. Fix by moving the snapshot registration to after
checking if the large object exists.

Reported by Pavel Stehule. Backpatch to 8.4. The snapshot registration
system was introduced in 8.4, so prior versions are not affected (and not
supported, anyway).

11 years agoCorrect comment of pgbench "filler" columns.
Fujii Masao [Mon, 30 Sep 2013 03:35:54 +0000 (12:35 +0900)]
Correct comment of pgbench "filler" columns.

Pavan Deolasee

11 years agoFix makefile broken by hstore fix.
Andrew Dunstan [Mon, 30 Sep 2013 02:46:55 +0000 (22:46 -0400)]
Fix makefile broken by hstore fix.

11 years agoUse a new hstore extension version for added json functions.
Andrew Dunstan [Sun, 29 Sep 2013 21:41:56 +0000 (17:41 -0400)]
Use a new hstore extension version for added json functions.

This should have been done when the json functionality was added to
hstore in 9.3.0. To handle this correctly, the upgrade script therefore
uses conditional logic by using plpgsql in a DO statement to add the two
new functions and the new cast. If hstore_to_json_loose is detected as
already present and dependent on the hstore extension nothing is done.
This will require that the database be loaded with plpgsql.

People who have installed the earlier and spurious 1.1 version of hstore
will need to do:

ALTER EXTENSION hstore UPDATE;

to pick up the new functions properly.

11 years agoEnsure installation dirs are built before contents are installed.
Andrew Dunstan [Sun, 29 Sep 2013 20:12:58 +0000 (16:12 -0400)]
Ensure installation dirs are built before contents are installed.

Cédric Villemain

11 years agoAllow printf-style padding specifications in log_line_prefix.
Robert Haas [Thu, 26 Sep 2013 21:54:20 +0000 (17:54 -0400)]
Allow printf-style padding specifications in log_line_prefix.

David Rowley, after a suggestion from Heikki Linnakangas.  Reviewed by
Albe Laurenz, and further edited by me.

11 years agoFix erroneous statements about multiply specified JSON columns.
Andrew Dunstan [Thu, 26 Sep 2013 21:39:28 +0000 (17:39 -0400)]
Fix erroneous statements about multiply specified JSON columns.

The behaviour in json_populate_record() and json_populate_recordset()
was changed during development but the docs were not.

11 years agoFix spurious warning after vacuuming a page on a table with no indexes.
Heikki Linnakangas [Thu, 26 Sep 2013 08:24:40 +0000 (11:24 +0300)]
Fix spurious warning after vacuuming a page on a table with no indexes.

There is a rare race condition, when a transaction that inserted a tuple
aborts while vacuum is processing the page containing the inserted tuple.
Vacuum prunes the page first, which normally removes any dead tuples, but
if the inserting transaction aborts right after that, the loop after
pruning will see a dead tuple and remove it instead. That's OK, but if the
page is on a table with no indexes, and the page becomes completely empty
after removing the dead tuple (or tuples) on it, it will be immediately
marked as all-visible. That's OK, but the sanity check in vacuum would
throw a warning because it thinks that the page contains dead tuples and
was nevertheless marked as all-visible, even though it just vacuumed away
the dead tuples and so it doesn't actually contain any.

Spotted this while reading the code. It's difficult to hit the race
condition otherwise, but can be done by putting a breakpoint after the
heap_page_prune() call.

Backpatch all the way to 8.4, where this code first appeared.

11 years agopgbench: Correct for bias in --rate schedule generation.
Noah Misch [Thu, 26 Sep 2013 03:09:50 +0000 (23:09 -0400)]
pgbench: Correct for bias in --rate schedule generation.

Previous code gave a mean delay 0.44% below target.  This change also
has the effect of increasing the maximum possible delay.

Fabien COELHO

11 years agoPlug memory leak in range_cmp function.
Heikki Linnakangas [Wed, 25 Sep 2013 13:02:00 +0000 (16:02 +0300)]
Plug memory leak in range_cmp function.

B-tree operators are not allowed to leak memory into the current memory
context. Range_cmp leaked detoasted copies of the arguments. That caused
a quick out-of-memory error when creating an index on a range column.

Reported by Marian Krucina, bug #8468.

11 years agoFix pgindent comment breakage
Alvaro Herrera [Tue, 24 Sep 2013 21:19:14 +0000 (18:19 -0300)]
Fix pgindent comment breakage

11 years agoUse @libdir@ in both of regress/{input,output}/security_label.source
Noah Misch [Mon, 23 Sep 2013 20:00:13 +0000 (16:00 -0400)]
Use @libdir@ in both of regress/{input,output}/security_label.source

Though @libdir@ almost always matches @abs_builddir@ in this context,
the test could only fail if they differed.  Back-patch to 9.1, where the
test was introduced.

Hamid Quddus Akhtar

11 years agopgbench: Tweak documentation.
Noah Misch [Mon, 23 Sep 2013 19:49:21 +0000 (15:49 -0400)]
pgbench: Tweak documentation.

Fabien COELHO

11 years agodoc: Clarify that file_fdw options require values.
Robert Haas [Mon, 23 Sep 2013 18:57:01 +0000 (14:57 -0400)]
doc: Clarify that file_fdw options require values.

Mike Blackwell and Robert Haas

11 years agoDon't allow system columns in CHECK constraints, except tableoid.
Robert Haas [Mon, 23 Sep 2013 17:31:22 +0000 (13:31 -0400)]
Don't allow system columns in CHECK constraints, except tableoid.

Previously, arbitray system columns could be mentioned in table
constraints, but they were not correctly checked at runtime, because
the values weren't actually set correctly in the tuple.  Since it
seems easy enough to initialize the table OID properly, do that,
and continue allowing that column, but disallow the rest unless and
until someone figures out a way to make them work properly.

No back-patch, because this doesn't seem important enough to take the
risk of destabilizing the back branches.  In fact, this will pose a
dump-and-reload hazard for those upgrading from previous versions:
constraints that were accepted before but were not correctly enforced
will now either be enforced correctly or not accepted at all.  Either
could result in restore failures, but in practice I think very few
users will notice the difference, since the use case is pretty
marginal anyway and few users will be relying on features that have
not historically worked.

Amit Kapila, reviewed by Rushabh Lathia, with doc changes by me.

11 years agopg_upgrade: more C comment fixes
Bruce Momjian [Mon, 23 Sep 2013 15:12:09 +0000 (11:12 -0400)]
pg_upgrade:  more C comment fixes

11 years agopg_upgrade: fix C comment typo
Bruce Momjian [Mon, 23 Sep 2013 15:06:11 +0000 (11:06 -0400)]
pg_upgrade: fix C comment typo

11 years agoFix SSL deadlock risk in libpq
Stephen Frost [Mon, 23 Sep 2013 12:33:41 +0000 (08:33 -0400)]
Fix SSL deadlock risk in libpq

In libpq, we set up and pass to OpenSSL callback routines to handle
locking.  When we run out of SSL connections, we try to clean things
up by de-registering the hooks.  Unfortunately, we had a few calls
into the OpenSSL library after these hooks were de-registered during
SSL cleanup which lead to deadlocking.  This moves the thread callback
cleanup to be after all SSL-cleanup related OpenSSL library calls.
I've been unable to reproduce the deadlock with this fix.

In passing, also move the close_SSL call to be after unlocking our
ssl_config mutex when in a failure state.  While it looks pretty
unlikely to be an issue, it could have resulted in deadlocks if we
ended up in this code path due to something other than SSL_new
failing.  Thanks to Heikki for pointing this out.

Back-patch to all supported versions; note that the close_SSL issue
only goes back to 9.0, so that hunk isn't included in the 8.4 patch.

Initially found and reported by Vesa-Matti J Kari; many thanks to
both Heikki and Andres for their help running down the specific
issue and reviewing the patch.

11 years agoFix two timeline handling bugs in pg_receivexlog.
Heikki Linnakangas [Mon, 23 Sep 2013 07:17:52 +0000 (10:17 +0300)]
Fix two timeline handling bugs in pg_receivexlog.

When a timeline history file is fetched from server, it is initially created
with a temporary file name, and renamed to place. However, the temporary
file name was constructed using an uninitialized buffer. Usually that meant
that the file was created in current directory instead of the target, which
usually goes unnoticed, but if the target is on a different filesystem than
the current dir, the rename() would fail. Fix that.

The second issue is that pg_receivexlog would not take .partial files into
account when determining when scanning the target directory for existing
WAL files. If the timeline has switched in the server several times in the
last WAL segment, and pg_receivexlog is restarted, it would choose a too
old starting point. That's not a problem as long as the old WAL segment
exists in the server and can be streamed over, but will cause a failure if
it's not.

Backpatch to 9.3, where this timeline handling code was written.

Analysed by Andrew Gierth, bug #8453, based on a bug report on IRC.

11 years agoFix compiler warning in WaitForBackgroundWorkerStartup().
Robert Haas [Thu, 19 Sep 2013 17:00:17 +0000 (13:00 -0400)]
Fix compiler warning in WaitForBackgroundWorkerStartup().

Per complaint from Andrew Gierth.

11 years agoFix typo in comment.
Fujii Masao [Wed, 18 Sep 2013 16:58:32 +0000 (01:58 +0900)]
Fix typo in comment.

Ian Lawrence Barwick

11 years agoDocumentation correction.
Robert Haas [Wed, 18 Sep 2013 13:05:10 +0000 (09:05 -0400)]
Documentation correction.

Etsuro Fujita

11 years agoTypo fix.
Robert Haas [Wed, 18 Sep 2013 12:57:44 +0000 (08:57 -0400)]
Typo fix.

Etsuro Fujita

11 years agoRemove `proc` argument from LockCheckConflicts
Alvaro Herrera [Tue, 17 Sep 2013 01:14:14 +0000 (22:14 -0300)]
Remove `proc` argument from LockCheckConflicts

This has been unused since commit 8563ccae2caf.

Noted by Antonin Houska

11 years agoRename various "freeze multixact" variables
Alvaro Herrera [Mon, 16 Sep 2013 18:45:00 +0000 (15:45 -0300)]
Rename various "freeze multixact" variables

It seems to make more sense to use "cutoff multixact" terminology
throughout the backend code; "freeze" is associated with replacing of an
Xid with FrozenTransactionId, which is not what we do for MultiXactIds.

Andres Freund
Some adjustments by Álvaro Herrera

11 years agoAdd a GUC to report whether data page checksums are enabled.
Heikki Linnakangas [Mon, 16 Sep 2013 11:36:01 +0000 (14:36 +0300)]
Add a GUC to report whether data page checksums are enabled.

Bernd Helmle

11 years agoFix typos
Peter Eisentraut [Sun, 15 Sep 2013 15:01:14 +0000 (11:01 -0400)]
Fix typos

11 years agoIgnore interrupts during quickdie().
Noah Misch [Thu, 12 Sep 2013 00:10:15 +0000 (20:10 -0400)]
Ignore interrupts during quickdie().

Once the administrator has called for an immediate shutdown or a backend
crash has triggered a reinitialization, no mere SIGINT or SIGTERM should
change that course.  Such derailment remains possible when the signal
arrives before quickdie() blocks signals.  That being a narrow race
affecting most PostgreSQL signal handlers in some way, leave it for
another patch.  Back-patch this to all supported versions.

11 years agoCreate index on srt table in citext regression tests.
Kevin Grittner [Wed, 11 Sep 2013 21:53:23 +0000 (16:53 -0500)]
Create index on srt table in citext regression tests.

Comments and the tests make clear that the intent is to test with
and without an index, but there was no index.

11 years agofuzzystrmatch: replace broken link in C comment
Bruce Momjian [Wed, 11 Sep 2013 01:34:01 +0000 (21:34 -0400)]
fuzzystrmatch: replace broken link in C comment

Albe Laurenz

11 years agodocs: Update libpq and testlo examples
Bruce Momjian [Wed, 11 Sep 2013 01:03:11 +0000 (21:03 -0400)]
docs:  Update libpq and testlo examples

Josh Kupershmidt

11 years agoAdd comment for VARSIZE_ANY_EXHDR macro
Bruce Momjian [Wed, 11 Sep 2013 00:18:53 +0000 (20:18 -0400)]
Add comment for VARSIZE_ANY_EXHDR macro

Gurjeet Singh

11 years agopsql: fix \copy stdin trailing space requirement
Bruce Momjian [Tue, 10 Sep 2013 23:36:10 +0000 (19:36 -0400)]
psql: fix \copy stdin trailing space requirement

Previously a trailing space was required for \copy ... stdin:

copy foo from stdin ;

Etsuro Fujita

11 years agopsql: honor 'footer' option for expanded output
Bruce Momjian [Tue, 10 Sep 2013 23:07:06 +0000 (19:07 -0400)]
psql: honor 'footer' option for expanded output

"No rows" previously only honored the tuples-only option.

Per report from Eli Mesika

11 years agoRemove leftover function prototype.
Fujii Masao [Tue, 10 Sep 2013 16:32:24 +0000 (01:32 +0900)]
Remove leftover function prototype.

The prototype for inval_twophase_postcommit wasn't removed when it's definition
was removed in efc16ea520679d713d98a2c7bf1453c4ff7b91ec / the initial HS commit.

Andres Freund

11 years agoShow schemas in information_schema.schemata that the current has access to
Peter Eisentraut [Tue, 10 Sep 2013 02:25:37 +0000 (22:25 -0400)]
Show schemas in information_schema.schemata that the current has access to

Before, it would only show schemas that the current user owns.  Per
discussion, the new behavior is more useful and consistent for PostgreSQL.

11 years agoIntroduce InvalidCommandId.
Robert Haas [Mon, 9 Sep 2013 20:25:29 +0000 (16:25 -0400)]
Introduce InvalidCommandId.

This allows a 32-bit field to represent an *optional* command ID
without a separate flag bit.

Andres Freund

11 years agoReturn error if allocation of new element was not possible.
Michael Meskes [Sun, 8 Sep 2013 10:59:43 +0000 (12:59 +0200)]
Return error if allocation of new element was not possible.

Found by Coverity.

11 years agoClose file to no leak file descriptor memory. Found by Coverity.
Michael Meskes [Sun, 8 Sep 2013 10:49:54 +0000 (12:49 +0200)]
Close file to no leak file descriptor memory. Found by Coverity.

11 years agointarray: return empty zero-dimensional array for an empty array
Bruce Momjian [Sat, 7 Sep 2013 15:44:33 +0000 (11:44 -0400)]
intarray:  return empty zero-dimensional array for an empty array

Previously a one-dimensional empty array was returned, but its text
representation matched a zero-dimensional array, and there is no way to
dump/reload a one-dimensional empty array.

BACKWARD INCOMPATIBILITY

Per report from elein

11 years agoDon't VALGRIND_PRINTF() each query string.
Noah Misch [Fri, 6 Sep 2013 23:42:00 +0000 (19:42 -0400)]
Don't VALGRIND_PRINTF() each query string.

Doing so was helpful for some Valgrind usage and distracting for other
usage.  One can achieve the same effect by changing log_statement and
pointing both PostgreSQL and Valgrind logging to stderr.

Per gripe from Andres Freund.

11 years agoEliminate pg_rewrite.ev_attr column and related dead code.
Kevin Grittner [Thu, 5 Sep 2013 19:03:43 +0000 (14:03 -0500)]
Eliminate pg_rewrite.ev_attr column and related dead code.

Commit 95ef6a344821655ce4d0a74999ac49dd6af6d342 removed the
ability to create rules on an individual column as of 7.3, but
left some residual code which has since been useless.  This cleans
up that dead code without any change in behavior other than
dropping the useless column from the catalog.

11 years agoMake catalog cache hash tables resizeable.
Heikki Linnakangas [Thu, 5 Sep 2013 16:47:56 +0000 (19:47 +0300)]
Make catalog cache hash tables resizeable.

If the hash table backing a catalog cache becomes too full (fillfactor > 2),
enlarge it. A new buckets array, double the size of the old, is allocated,
and all entries in the old hash are moved to the right bucket in the new
hash.

This has two benefits. First, cache lookups don't get so expensive when
there are lots of entries in a cache, like if you access hundreds of
thousands of tables. Second, we can make the (initial) sizes of the caches
much smaller, which saves memory.

This patch dials down the initial sizes of the catcaches. The new sizes are
chosen so that a backend that only runs a few basic queries still won't need
to enlarge any of them.

11 years agoRevert WAL posix_fallocate() patches.
Jeff Davis [Thu, 5 Sep 2013 06:43:41 +0000 (23:43 -0700)]
Revert WAL posix_fallocate() patches.

This reverts commit 269e780822abb2e44189afaccd6b0ee7aefa7ddd
and commit 5b571bb8c8d2bea610e01ae1ee7bc05adcfff528.

Unfortunately, the initial patch had insufficient performance testing,
and resulted in a regression.

Per report by Thom Brown.

11 years agoImprove Range Types and Exclusion Constraints example.
Jeff Davis [Thu, 5 Sep 2013 06:30:27 +0000 (23:30 -0700)]
Improve Range Types and Exclusion Constraints example.

Make the examples self-contained to avoid confusion. Per bug report
8367 from KOIZUMI Satoru.

11 years agoAdd GUC descriptions for compile-time postgresql.conf settings
Bruce Momjian [Wed, 4 Sep 2013 21:44:04 +0000 (17:44 -0400)]
Add GUC descriptions for compile-time postgresql.conf settings

Previous text was "No description available".

Tianyin Xu

11 years agoRemove dead URL mention in OSX startup script
Bruce Momjian [Wed, 4 Sep 2013 21:04:12 +0000 (17:04 -0400)]
Remove dead URL mention in OSX startup script

Backpatch to 9.3.

Per suggestion from Gavan Schneider

11 years agoKeep heavily-contended fields in XLogCtlInsert on different cache lines.
Heikki Linnakangas [Wed, 4 Sep 2013 20:14:33 +0000 (23:14 +0300)]
Keep heavily-contended fields in XLogCtlInsert on different cache lines.

Performance testing shows that if the insertpos_lck spinlock and the fields
that it protects are on the same cache line with other variables that are
frequently accessed, the false sharing can hurt performance a lot. Keep
them apart by adding some padding.

11 years agoExpose fsync_fname as a public API.
Robert Haas [Wed, 4 Sep 2013 15:15:00 +0000 (11:15 -0400)]
Expose fsync_fname as a public API.

Andres Freund

11 years agoUpdate comments concerning PGC_S_TEST.
Tom Lane [Tue, 3 Sep 2013 22:56:22 +0000 (18:56 -0400)]
Update comments concerning PGC_S_TEST.

This GUC context value was once only used by ALTER DATABASE SET and
ALTER USER SET.  That's not true anymore, though, so rewrite the
comments to be a bit more general.

Patch in HEAD only, since this is just an internal documentation issue.

11 years agoDon't fail for bad GUCs in CREATE FUNCTION with check_function_bodies off.
Tom Lane [Tue, 3 Sep 2013 22:32:20 +0000 (18:32 -0400)]
Don't fail for bad GUCs in CREATE FUNCTION with check_function_bodies off.

The previous coding attempted to activate all the GUC settings specified
in SET clauses, so that the function validator could operate in the GUC
environment expected by the function body.  However, this is problematic
when restoring a dump, since the SET clauses might refer to database
objects that don't exist yet.  We already have the parameter
check_function_bodies that's meant to prevent forward references in
function definitions from breaking dumps, so let's change CREATE FUNCTION
to not install the SET values if check_function_bodies is off.

Authors of function validators were already advised not to make any
"context sensitive" checks when check_function_bodies is off, if indeed
they're checking anything at all in that mode.  But extend the
documentation to point out the GUC issue in particular.

(Note that we still check the SET clauses to some extent; the behavior
with !check_function_bodies is now approximately equivalent to what ALTER
DATABASE/ROLE have been doing for awhile with context-dependent GUCs.)

This problem can be demonstrated in all active branches, so back-patch
all the way.

11 years agoAllow aggregate functions to be VARIADIC.
Tom Lane [Tue, 3 Sep 2013 21:08:38 +0000 (17:08 -0400)]
Allow aggregate functions to be VARIADIC.

There's no inherent reason why an aggregate function can't be variadic
(even VARIADIC ANY) if its transition function can handle the case.
Indeed, this patch to add the feature touches none of the planner or
executor, and little of the parser; the main missing stuff was DDL and
pg_dump support.

It is true that variadic aggregates can create the same sort of ambiguity
about parameters versus ORDER BY keys that was complained of when we
(briefly) had both one- and two-argument forms of string_agg().  However,
the policy formed in response to that discussion only said that we'd not
create any built-in aggregates with varying numbers of arguments, not that
we shouldn't allow users to do it.  So the logical extension of that is
we can allow users to make variadic aggregates as long as we're wary about
shipping any such in core.

In passing, this patch allows aggregate function arguments to be named, to
the extent of remembering the names in pg_proc and dumping them in pg_dump.
You can't yet call an aggregate using named-parameter notation.  That seems
like a likely future extension, but it'll take some work, and it's not what
this patch is really about.  Likewise, there's still some work needed to
make window functions handle VARIADIC fully, but I left that for another
day.

initdb forced because of new aggvariadic field in Aggref parse nodes.

11 years agoUpdate obsolete comment
Alvaro Herrera [Tue, 3 Sep 2013 20:52:11 +0000 (16:52 -0400)]
Update obsolete comment

11 years agoDocs: wording improvements in discussion of timestamp arithmetic.
Tom Lane [Tue, 3 Sep 2013 20:28:56 +0000 (16:28 -0400)]
Docs: wording improvements in discussion of timestamp arithmetic.

I started out just to fix the broken markup in commit
1c2085766187031eaeaae7db4785b9e1d4241988, but got distracted by
copy-editing.  I see Bruce already fixed the markup, but I'll
commit the wordsmithing anyway.

11 years agodoc: Fix SGML markup for date patch
Bruce Momjian [Tue, 3 Sep 2013 20:06:24 +0000 (16:06 -0400)]
doc:  Fix SGML markup for date patch

11 years agoDocs: add paragraph about date/timestamp subtraction
Bruce Momjian [Tue, 3 Sep 2013 17:24:39 +0000 (13:24 -0400)]
Docs:  add paragraph about date/timestamp subtraction

per suggestion from Francisco Olart

11 years agodocs: Clarify that we also support Solaris versions greater than 10.
Robert Haas [Tue, 3 Sep 2013 15:16:37 +0000 (11:16 -0400)]
docs: Clarify that we also support Solaris versions greater than 10.

MauMau

11 years agoFix thinko in worker_spi, count(*) returns a bigint. Thanks RhodiumToad
Greg Stark [Tue, 3 Sep 2013 12:27:34 +0000 (13:27 +0100)]
Fix thinko in worker_spi, count(*) returns a bigint. Thanks RhodiumToad

11 years agoFix typo in comment.
Heikki Linnakangas [Tue, 3 Sep 2013 10:17:09 +0000 (13:17 +0300)]
Fix typo in comment.

Also line-wrap an over-wide line in a comment that's ignored by pgindent.

11 years agoUpdate time zone data files to tzdata release 2013d.
Tom Lane [Mon, 2 Sep 2013 19:06:21 +0000 (15:06 -0400)]
Update time zone data files to tzdata release 2013d.

DST law changes in Israel, Morocco, Palestine, Paraguay.
Historical corrections for Macquarie Island.

11 years agoFix relfrozenxid query in docs to include TOAST tables.
Andrew Dunstan [Mon, 2 Sep 2013 18:38:12 +0000 (14:38 -0400)]
Fix relfrozenxid query in docs to include TOAST tables.

The original query ignored TOAST tables which could result in tables
needing a vacuum not being reported.

Backpatch to all live branches.

11 years agoTranslation updates
Peter Eisentraut [Mon, 2 Sep 2013 06:28:21 +0000 (02:28 -0400)]
Translation updates

11 years agoUpdate "Using EXPLAIN" documentation examples using current code.
Tom Lane [Sun, 1 Sep 2013 23:43:02 +0000 (19:43 -0400)]
Update "Using EXPLAIN" documentation examples using current code.

It seems like a good idea to update these examples since some fairly
basic planner behaviors have changed in 9.3; notably that the startup cost
for an indexscan plan node is no longer invariably estimated at 0.00.

11 years agoUpdate 9.3 release notes.
Tom Lane [Sun, 1 Sep 2013 03:53:24 +0000 (23:53 -0400)]
Update 9.3 release notes.

Some corrections, a lot of copy-editing.

Set projected release date as 2013-09-09.

11 years agoImprove regression test for #8410.
Tom Lane [Sat, 31 Aug 2013 01:40:21 +0000 (21:40 -0400)]
Improve regression test for #8410.

The previous version of the query disregarded the result of the MergeAppend
instead of checking its results.

Andres Freund

11 years agoAdd test case for bug #8410.
Tom Lane [Fri, 30 Aug 2013 23:27:40 +0000 (19:27 -0400)]
Add test case for bug #8410.

Per Andres Freund.

11 years agoReset the binary heap in MergeAppend rescans.
Tom Lane [Fri, 30 Aug 2013 23:15:21 +0000 (19:15 -0400)]
Reset the binary heap in MergeAppend rescans.

Failing to do so can cause queries to return wrong data, error out or crash.
This requires adding a new binaryheap_reset() method to binaryheap.c,
but that probably should have been there anyway.

Per bug #8410 from Terje Elde.  Diagnosis and patch by Andres Freund.

11 years agoMake error wording more consistent
Alvaro Herrera [Thu, 29 Aug 2013 16:33:50 +0000 (12:33 -0400)]
Make error wording more consistent

11 years agoUse a non-locking initial test in TAS_SPIN on x86_64.
Heikki Linnakangas [Thu, 29 Aug 2013 10:48:59 +0000 (13:48 +0300)]
Use a non-locking initial test in TAS_SPIN on x86_64.

Testing done in 2011 by Tom Lane concluded that this is a win on Intel Xeons
and AMD Opterons, but it was not changed back then, because of an old
comment in tas() that suggested that it's a huge loss on older Opterons.
However, didn't have separate TAS() and TAS_SPIN() macros back then, so the
comment referred to doing a non-locked initial test even on the first
access, in uncontended case. I don't have access to older Opterons, but I'm
pretty sure that doing an initial unlocked test is unlikely to be a loss
while spinning, even though it might be for the first access.

We probably should do the same on 32-bit x86, but I'm afraid of changing it
without any testing. Hence just add a note to the x86 implementation
suggesting that we probably should do the same there.

11 years agoAllow discovery of whether a dynamic background worker is running.
Robert Haas [Wed, 28 Aug 2013 18:08:13 +0000 (14:08 -0400)]
Allow discovery of whether a dynamic background worker is running.

Using the infrastructure provided by this patch, it's possible either
to wait for the startup of a dynamically-registered background worker,
or to poll the status of such a worker without waiting.  In either
case, the current PID of the worker process can also be obtained.
As usual, worker_spi is updated to demonstrate the new functionality.

Patch by me.  Review by Andres Freund.

11 years agoPartially restore comments discussing enum renumbering hazards.
Robert Haas [Wed, 28 Aug 2013 17:21:08 +0000 (13:21 -0400)]
Partially restore comments discussing enum renumbering hazards.

As noted by Tom Lane, commit 813fb0315587d32e3b77af1051a0ef517d187763
was overly optimistic about how safe it is to concurrently change
enumsortorder values under MVCC catalog scan semantics.  Restore
some of the previous text, with hopefully-correct adjustments for
the new state of play.

11 years agoAccept multiple -I, -P, -T and -n options in pg_restore.
Heikki Linnakangas [Wed, 28 Aug 2013 06:43:34 +0000 (09:43 +0300)]
Accept multiple -I, -P, -T and -n options in pg_restore.

We already did this for -t (--table) in 9.3, but missed the other similar
options. For consistency, allow all of them to be specified multiple times.

Unfortunately it's too late to sneak this into 9.3, so commit to master
only.

11 years agoInitialize cached OID to Invalid in new hash entries
Alvaro Herrera [Tue, 27 Aug 2013 18:53:17 +0000 (14:53 -0400)]
Initialize cached OID to Invalid in new hash entries

Andres Freund; bug detected by valgrind

11 years agoFix some "translator:" comments mangled by pgindent
Alvaro Herrera [Tue, 27 Aug 2013 17:33:37 +0000 (13:33 -0400)]
Fix some "translator:" comments mangled by pgindent

11 years agodoc: Explain that ereport doesn't return for ERROR or higher levels.
Robert Haas [Mon, 26 Aug 2013 18:27:43 +0000 (14:27 -0400)]
doc: Explain that ereport doesn't return for ERROR or higher levels.

Christophe Pettus

11 years agoAccount better for planning cost when choosing whether to use custom plans.
Tom Lane [Sat, 24 Aug 2013 19:14:17 +0000 (15:14 -0400)]
Account better for planning cost when choosing whether to use custom plans.

The previous coding in plancache.c essentially used 10% of the estimated
runtime as its cost estimate for planning.  This can be pretty bogus,
especially when the estimated runtime is very small, such as in a simple
expression plan created by plpgsql, or a simple INSERT ... VALUES.

While we don't have a really good handle on how planning time compares
to runtime, it seems reasonable to use an estimate based on the number of
relations referenced in the query, with a rather large multiplier.  This
patch uses 1000 * cpu_operator_cost * (nrelations + 1), so that even a
trivial query will be charged 1000 * cpu_operator_cost for planning.
This should address the problem reported by Marc Cousin and others that
9.2 and up prefer custom plans in cases where the planning time greatly
exceeds what can be saved.

11 years agoDon't crash when pg_xlog is empty and pg_basebackup -x is used
Magnus Hagander [Sat, 24 Aug 2013 15:11:31 +0000 (17:11 +0200)]
Don't crash when pg_xlog is empty and pg_basebackup -x is used

The backup will not work (without a logarchive, and that's the whole
point of -x) in this case, this patch just changes it to throw an
error instead of crashing when this happens.

Noticed and diagnosed by TAKATSUKA Haruka

11 years agoIn locate_grouping_columns(), don't expect an exact match of Var typmods.
Tom Lane [Fri, 23 Aug 2013 21:30:53 +0000 (17:30 -0400)]
In locate_grouping_columns(), don't expect an exact match of Var typmods.

It's possible that inlining of SQL functions (or perhaps other changes?)
has exposed typmod information not known at parse time.  In such cases,
Vars generated by query_planner might have valid typmod values while the
original grouping columns only have typmod -1.  This isn't a semantic
problem since the behavior of grouping only depends on type not typmod,
but it breaks locate_grouping_columns' use of tlist_member to locate the
matching entry in query_planner's result tlist.

We can fix this without an excessive amount of new code or complexity by
relying on the fact that locate_grouping_columns only gets called when
make_subplanTargetList has set need_tlist_eval == false, and that can only
happen if all the grouping columns are simple Vars.  Therefore we only need
to search the sub_tlist for a matching Var, and we can reasonably define a
"match" as being a match of the Var identity fields
varno/varattno/varlevelsup.  The code still Asserts that vartype matches,
but ignores vartypmod.

Per bug #8393 from Evan Martin.  The added regression test case is
basically the same as his example.  This has been broken for a very long
time, so back-patch to all supported branches.

11 years agoFix hash table size estimation error in choose_hashed_distinct().
Tom Lane [Wed, 21 Aug 2013 17:38:16 +0000 (13:38 -0400)]
Fix hash table size estimation error in choose_hashed_distinct().

We should account for the per-group hashtable entry overhead when
considering whether to use a hash aggregate to implement DISTINCT.  The
comparable logic in choose_hashed_grouping() gets this right, but I think
I omitted it here in the mistaken belief that there would be no overhead
if there were no aggregate functions to be evaluated.  This can result in
more than 2X underestimate of the hash table size, if the tuples being
aggregated aren't very wide.  Per report from Tomas Vondra.

This bug is of long standing, but per discussion we'll only back-patch into
9.3.  Changing the estimation behavior in stable branches seems to carry too
much risk of destabilizing plan choices for already-tuned applications.