]> granicus.if.org Git - postgresql/log
postgresql
7 years agoRemove useless duplicate inclusions of system header files.
Tom Lane [Sat, 25 Feb 2017 21:12:24 +0000 (16:12 -0500)]
Remove useless duplicate inclusions of system header files.

c.h #includes a number of core libc header files, such as <stdio.h>.
There's no point in re-including these after having read postgres.h,
postgres_fe.h, or c.h; so remove code that did so.

While at it, also fix some places that were ignoring our standard pattern
of "include postgres[_fe].h, then system header files, then other Postgres
header files".  While there's not any great magic in doing it that way
rather than system headers last, it's silly to have just a few files
deviating from the general pattern.  (But I didn't attempt to enforce this
globally, only in files I was touching anyway.)

I'd be the first to say that this is mostly compulsive neatnik-ism,
but over time it might save enough compile cycles to be useful.

7 years agopg_upgrade docs: clarify instructions on standby extensions
Bruce Momjian [Sat, 25 Feb 2017 17:59:23 +0000 (12:59 -0500)]
pg_upgrade docs:  clarify instructions on standby extensions

Previously the pg_upgrade standby upgrade instructions said not to
execute pgcrypto.sql, but it should have referenced the extension
command "CREATE EXTENSION pgcrypto".  This patch makes that doc change.

Reported-by: a private bug report
Backpatch-through: 9.4, where standby instructions were added

7 years agoSuppress compiler warnings in ecpg test on newer Windows toolchains.
Tom Lane [Fri, 24 Feb 2017 21:45:32 +0000 (16:45 -0500)]
Suppress compiler warnings in ecpg test on newer Windows toolchains.

nan_test.pgc supposed that it could unconditionally #define isnan()
and isinf() on WIN32.  This was evidently copied at some point from
src/include/port/win32.h, but nowadays there's a test on _MSC_VER
there.  Make nan_test.pgc look the same.

Per buildfarm warnings.  There's no evidence this produces anything
worse than a warning, and besides it's only a test case, so I don't
feel a need to back-patch.

7 years agoFix unportable definition of BSWAP64() macro.
Tom Lane [Fri, 24 Feb 2017 20:21:39 +0000 (15:21 -0500)]
Fix unportable definition of BSWAP64() macro.

We have a portable way of writing uint64 constants, but whoever wrote
this macro didn't know about it.

While at it, fix unsafe under-parenthesization of arguments.  That might
be moot, because there are already good reasons not to use the macro on
anything more complicated than a simple variable, but it's still poor
practice.

Per buildfarm warnings.

7 years agoMake tablesample work with partitioned tables.
Robert Haas [Fri, 24 Feb 2017 06:51:46 +0000 (12:21 +0530)]
Make tablesample work with partitioned tables.

This was an oversight in the original partitioning commit.

Amit Langote, reviewed by David Fetter

Discussion: http://postgr.es/m/59af6590-8ace-04c4-c36c-ea35d435c60e@lab.ntt.co.jp

7 years agoAdd an Assert that enum_cmp_internal() gets passed an FmgrInfo pointer.
Tom Lane [Fri, 24 Feb 2017 03:08:10 +0000 (22:08 -0500)]
Add an Assert that enum_cmp_internal() gets passed an FmgrInfo pointer.

If someone were to try to call one of the enum comparison functions
using DirectFunctionCallN, it would very likely seem to work, because
only in unusual cases does enum_cmp_internal() need to access the
typcache.  But once such a case occurred, code like that would crash
with a null pointer dereference.  To make an oversight of that sort
less likely to escape detection, add a non-bypassable Assert that
fcinfo->flinfo isn't NULL.

Discussion: https://postgr.es/m/25226.1487900067@sss.pgh.pa.us

7 years agoConsistently declare timestamp variables as TimestampTz.
Tom Lane [Thu, 23 Feb 2017 20:57:08 +0000 (15:57 -0500)]
Consistently declare timestamp variables as TimestampTz.

Twiddle the replication-related code so that its timestamp variables
are declared TimestampTz, rather than the uninformative "int64" that
was previously used for meant-to-be-always-integer timestamps.
This resolves the int64-vs-TimestampTz declaration inconsistencies
introduced by commit 7c030783a, though in the opposite direction to
what was originally suggested.

This required including datatype/timestamp.h in a couple more places
than before.  I decided it would be a good idea to slim down that
header by not having it pull in <float.h> etc, as those headers are
no longer at all relevant to its purpose.  Unsurprisingly, a small number
of .c files turn out to have been depending on those inclusions, so add
them back in the .c files as needed.

Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us
Discussion: https://postgr.es/m/27694.1487456324@sss.pgh.pa.us

7 years agoRemove now-dead code for !HAVE_INT64_TIMESTAMP.
Tom Lane [Thu, 23 Feb 2017 19:04:43 +0000 (14:04 -0500)]
Remove now-dead code for !HAVE_INT64_TIMESTAMP.

This is a basically mechanical removal of #ifdef HAVE_INT64_TIMESTAMP
tests and the negative-case controlled code.

Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us

7 years agoRemove pg_control's enableIntTimes field.
Tom Lane [Thu, 23 Feb 2017 17:23:12 +0000 (12:23 -0500)]
Remove pg_control's enableIntTimes field.

We don't need it any more.

pg_controldata continues to report that date/time type storage is
"64-bit integers", but that's now a hard-wired behavior not something
it sees in the data.  This avoids breaking pg_upgrade, and perhaps other
utilities that inspect pg_control this way.  Ditto for pg_resetwal.

I chose to remove the "bigint_timestamps" output column of
pg_control_init(), though, as that function hasn't been around long
and probably doesn't have ossified users.

Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us

7 years agoDe-support floating-point timestamps.
Tom Lane [Thu, 23 Feb 2017 16:40:12 +0000 (11:40 -0500)]
De-support floating-point timestamps.

Per discussion, the time has come to do this.  The handwriting has been
on the wall at least since 9.0 that this would happen someday, whenever
it got to be too much of a burden to support the float-timestamp option.
The triggering factor now is the discovery that there are multiple bugs
in the code that attempts to implement use of integer timestamps in the
replication protocol even when the server is built for float timestamps.
The internal float timestamps leak into the protocol fields in places.
While we could fix the identified bugs, there's a very high risk of
introducing more.  Trying to build a wall that would positively prevent
mixing integer and float timestamps is more complexity than we want to
undertake to maintain a long-deprecated option.  The fact that these
bugs weren't found through testing also indicates a lack of interest
in float timestamps.

This commit disables configure's --disable-integer-datetimes switch
(it'll still accept --enable-integer-datetimes, though), removes direct
references to USE_INTEGER_DATETIMES, and removes discussion of float
timestamps from the user documentation.  A considerable amount of code is
rendered dead by this, but removing that will occur as separate mop-up.

Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us

7 years agoFix logical replication with different encodings
Peter Eisentraut [Thu, 23 Feb 2017 16:27:59 +0000 (11:27 -0500)]
Fix logical replication with different encodings

reported by Shinoda, Noriyoshi <noriyoshi.shinoda@hpe.com>; partial
patch by Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>

7 years agoRemove deprecated COMMENT ON RULE syntax
Peter Eisentraut [Wed, 22 Feb 2017 13:45:14 +0000 (08:45 -0500)]
Remove deprecated COMMENT ON RULE syntax

This was only used for allowing upgrades from pre-7.3 instances, which
was a long time ago.

7 years agoFix contrib/pg_trgm's extraction of trigrams from regular expressions.
Tom Lane [Wed, 22 Feb 2017 20:04:07 +0000 (15:04 -0500)]
Fix contrib/pg_trgm's extraction of trigrams from regular expressions.

The logic for removing excess trigrams from the result was faulty.
It intends to avoid merging the initial and final states of the NFA,
which is necessary, but in testing whether removal of a specific trigram
would cause that, it failed to consider the combined effects of all the
state merges that that trigram's removal would cause.  This could result
in a broken final graph that would never match anything, leading to GIN
or GiST indexscans not finding anything.

To fix, add a "tentParent" field that is used only within this loop,
and set it to show state merges that we are tentatively going to do.
While examining a particular arc, we must chase up through tentParent
links as well as regular parent links (the former can only appear atop
the latter), and we must account for state init/fin flag merges that
haven't actually been done yet.

To simplify the latter, combine the separate init and fin bool fields
into a bitmap flags field.  I also chose to get rid of the "children"
state list, which seems entirely inessential.

Per bug #14563 from Alexey Isayko, which the added test cases are based on.
Back-patch to 9.3 where this code was added.

Report: https://postgr.es/m/20170222111446.1256.67547@wrigleys.postgresql.org
Discussion: https://postgr.es/m/8816.1487787594@sss.pgh.pa.us

7 years agoCorrectly handle array pseudotypes in to_json and to_jsonb
Andrew Dunstan [Wed, 22 Feb 2017 16:10:49 +0000 (11:10 -0500)]
Correctly handle array pseudotypes in to_json and to_jsonb

Columns with array pseudotypes have not been identified as arrays, so
they have been rendered as strings in the json and jsonb conversion
routines. This change allows them to be rendered as json arrays, making
it possible to deal correctly with the anyarray columns in pg_stats.

7 years agoPass the source text for a parallel query to the workers.
Robert Haas [Wed, 22 Feb 2017 06:45:17 +0000 (12:15 +0530)]
Pass the source text for a parallel query to the workers.

With this change, you can see the query that a parallel worker is
executing in pg_stat_activity, and if the worker crashes you can
see what query it was executing when it crashed.

Rafia Sabih, reviewed by Kuntal Ghosh and Amit Kapila and slightly
revised by me.

7 years agoFix incorrect typecast.
Robert Haas [Wed, 22 Feb 2017 06:35:42 +0000 (12:05 +0530)]
Fix incorrect typecast.

Ashutosh Sharma, per a report from Mithun Cy.

Discussion: http://postgr.es/m/CAD__OujgqNNnCujeFTmKpjNu+W4smS8Hbi=RcWAhf1ZUs3H4WA@mail.gmail.com

7 years agoShut down Gather's children before shutting down Gather itself.
Robert Haas [Wed, 22 Feb 2017 02:29:27 +0000 (07:59 +0530)]
Shut down Gather's children before shutting down Gather itself.

It turns out that the original shutdown order here does not work well.
Multiple people attempting to develop further parallel query patches
have discovered that they need to do cleanup before the DSM goes away,
and you can't do that if the parent node gets cleaned up first.

Patch by me, reviewed by KaiGai Kohei and Dilip Kumar.

Discussion: http://postgr.es/m/CA+TgmoY6bOc1YnhcAQnMfCBDbsJzROQ3sYxSAL-SYB5tMJcTKg@mail.gmail.com
Discussion: http://postgr.es/m/9A28C8860F777E439AA12E8AEA7694F8012AEB82@BPXM15GP.gisp.nec.co.jp
Discussion: http://postgr.es/m/CA+TgmoYuPOc=+xrG1v0fCsoLbKAab9F1ddOeaaiLMzKOiBar1Q@mail.gmail.com

7 years agodoc: Add missing comma.
Robert Haas [Wed, 22 Feb 2017 01:19:39 +0000 (06:49 +0530)]
doc: Add missing comma.

Yugo Nagata

7 years agoSuppress unused-variable warning.
Tom Lane [Tue, 21 Feb 2017 22:58:24 +0000 (17:58 -0500)]
Suppress unused-variable warning.

Rearrange so we don't have an unused variable in disable-cassert case.

Discussion: https://postgr.es/m/CAMkU=1x63f2QyFTeas83xJqD+Hm1PBuok1LrzYzS-OngDzYOVA@mail.gmail.com

7 years agoFix sloppy handling of corner-case errors in fd.c.
Tom Lane [Tue, 21 Feb 2017 22:51:27 +0000 (17:51 -0500)]
Fix sloppy handling of corner-case errors in fd.c.

Several places in fd.c had badly-thought-through handling of error returns
from lseek() and close().  The fact that those would seldom fail on valid
FDs is probably the reason we've not noticed this up to now; but if they
did fail, we'd get quite confused.

LruDelete and LruInsert actually just Assert'd that lseek never fails,
which is pretty awful on its face.

In LruDelete, we indeed can't throw an error, because that's likely to get
called during error abort and so throwing an error would probably just lead
to an infinite loop.  But by the same token, throwing an error from the
close() right after that was ill-advised, not to mention that it would've
left the LRU state corrupted since we'd already unlinked the VFD from the
list.  I also noticed that really, most of the time, we should know the
current seek position and it shouldn't be necessary to do an lseek here at
all.  As patched, if we don't have a seek position and an lseek attempt
doesn't give us one, we'll close the file but then subsequent re-open
attempts will fail (except in the somewhat-unlikely case that a
FileSeek(SEEK_SET) call comes between and allows us to re-establish a known
target seek position).  This isn't great but it won't result in any state
corruption.

Meanwhile, having an Assert instead of an honest test in LruInsert is
really dangerous: if that lseek failed, a subsequent read or write would
read or write from the start of the file, not where the caller expected,
leading to data corruption.

In both LruDelete and FileClose, if close() fails, just LOG that and mark
the VFD closed anyway.  Possibly leaking an FD is preferable to getting
into an infinite loop or corrupting the VFD list.  Besides, as far as I can
tell from the POSIX spec, it's unspecified whether or not the file has been
closed, so treating it as still open could be the wrong thing anyhow.

I also fixed a number of other places that were being sloppy about
behaving correctly when the seekPos is unknown.

Also, I changed FileSeek to return -1 with EINVAL for the cases where it
detects a bad offset, rather than throwing a hard elog(ERROR).  It seemed
pretty inconsistent that some bad-offset cases would get a failure return
while others got elog(ERROR).  It was missing an offset validity check for
the SEEK_CUR case on a closed file, too.

Back-patch to all supported branches, since all this code is fundamentally
identical in all of them.

Discussion: https://postgr.es/m/2982.1487617365@sss.pgh.pa.us

7 years agoAdd tests for two-phase commit
Alvaro Herrera [Tue, 21 Feb 2017 21:20:48 +0000 (18:20 -0300)]
Add tests for two-phase commit

There's some ongoing performance work on this area, so let's make sure
we don't break things.

Extracted from a larger patch originally by Stas Kelvich.

Authors: Stas Kelvich, Nikhil Sontakke, Michael Paquier
Discussion: https://postgr.es/m/CAMGcDxfsuLLOg=h5cTg3g77Jjk-UGnt=RW7zK57zBSoFsapiWA@mail.gmail.com

7 years agoFix whitespace
Peter Eisentraut [Tue, 21 Feb 2017 20:44:07 +0000 (15:44 -0500)]
Fix whitespace

7 years agoFix typo in comment.
Fujii Masao [Tue, 21 Feb 2017 18:39:45 +0000 (03:39 +0900)]
Fix typo in comment.

neha khatri

7 years agoFix connection leak in DROP SUBSCRIPTION command.
Fujii Masao [Tue, 21 Feb 2017 18:36:02 +0000 (03:36 +0900)]
Fix connection leak in DROP SUBSCRIPTION command.

Previously the command forgot to close the connection to the publisher
when it failed to drop the replication slot.

7 years agoMake walsender always initialize the buffers.
Fujii Masao [Tue, 21 Feb 2017 18:11:58 +0000 (03:11 +0900)]
Make walsender always initialize the buffers.

Walsender uses the local buffers for each outgoing and incoming message.
Previously when creating replication slot, walsender forgot to initialize
one of them and which can cause the segmentation fault error. To fix this
issue, this commit changes walsender so that it always initialize them
before it executes the requested replication command.

Back-patch to 9.4 where replication slot was introduced.

Problem report and initial patch by Stas Kelvich, modified by me.
Report: https://www.postgresql.org/message-id/A1E9CB90-1FAC-4CAD-8DBA-9AA62A6E97C5@postgrespro.ru

7 years agoRemove confusing comment about unsupported feature.
Fujii Masao [Tue, 21 Feb 2017 17:49:42 +0000 (02:49 +0900)]
Remove confusing comment about unsupported feature.

The initial table synchronization feature has not been supported yet,
but there was the confusing header comment about it in logical/worker.c.

7 years agodoc: Update URL for plr
Peter Eisentraut [Tue, 21 Feb 2017 17:34:25 +0000 (12:34 -0500)]
doc: Update URL for plr

7 years agoUse less-generic table name in new regression test case.
Tom Lane [Tue, 21 Feb 2017 17:18:22 +0000 (12:18 -0500)]
Use less-generic table name in new regression test case.

Creating global objects named "foo" isn't an especially wise thing,
but especially not in a test script that has already used that name
for something else, and most especially not in a script that runs
in parallel with other scripts that use that name :-(

Per buildfarm.

7 years agoMake more use of castNode()
Peter Eisentraut [Tue, 21 Feb 2017 16:33:07 +0000 (11:33 -0500)]
Make more use of castNode()

7 years agoReject too-old Python versions a bit sooner.
Tom Lane [Tue, 21 Feb 2017 16:28:23 +0000 (11:28 -0500)]
Reject too-old Python versions a bit sooner.

Commit 04aad4018 added this check after the search for a Python shared
library, which seems to me to be a pretty unfriendly ordering.  The
search might fail for what are basically version-related reasons, and
in such a case it'd be better to say "your Python is too old" than
"could not find shared library for Python".

7 years agoDrop support for Python 2.3
Peter Eisentraut [Tue, 21 Feb 2017 14:27:02 +0000 (09:27 -0500)]
Drop support for Python 2.3

There is no specific reason for this right now, but keeping support for
old Python versions around indefinitely increases the maintenance
burden.  The oldest supported Python version is now Python 2.4, which is
still shipped in RHEL/CentOS 5 by default.

In configure, add a check for the required Python version and give a
friendly error message for an old version, instead of relying on an
obscure build error later on.

7 years agoSmall correction to BRIN docs
Simon Riggs [Tue, 21 Feb 2017 09:07:15 +0000 (09:07 +0000)]
Small correction to BRIN docs

Replace incorrect word "index" with "heap"

Takayuki Tsunakawa

7 years agoImprove error message for misuse of TZ, tz, OF formatting patterns.
Tom Lane [Mon, 20 Feb 2017 15:27:48 +0000 (10:27 -0500)]
Improve error message for misuse of TZ, tz, OF formatting patterns.

Be specific about which pattern is being complained of, and avoid saying
"it's not supported in to_date", which is just confusing if the error is
actually coming out of to_timestamp.  We can phrase it as "is only
supported in to_char", instead.  Also, use the term "formatting field" not
"format pattern", because other error messages in the same file prefer that
terminology.  (This isn't terribly consistent with the documentation, so
maybe we should change all these error messages?)

7 years agoFix documentation of to_char/to_timestamp TZ, tz, OF formatting patterns.
Tom Lane [Mon, 20 Feb 2017 15:05:00 +0000 (10:05 -0500)]
Fix documentation of to_char/to_timestamp TZ, tz, OF formatting patterns.

These are only supported in to_char, not in the other direction, but the
documentation failed to mention that.  Also, describe TZ/tz as printing the
time zone "abbreviation", not "name", because what they print is elsewhere
referred to that way.  Per bug #14558.

7 years agoMake src/interfaces/libpq/test clean up after itself.
Tom Lane [Sun, 19 Feb 2017 22:18:10 +0000 (17:18 -0500)]
Make src/interfaces/libpq/test clean up after itself.

It failed to remove a .o file during "make clean", and it lacked
a .gitignore file entirely.

7 years agoDept of second thoughts: rename new perl script.
Tom Lane [Sun, 19 Feb 2017 21:41:51 +0000 (16:41 -0500)]
Dept of second thoughts: rename new perl script.

It didn't take long at all for me to become irritated that the original
choice of name for this script resulted in "warning" showing up in several
places in build logs, because I tend to grep for that.  Change the script
name to avoid that.

7 years agoAdjust PL/Tcl regression test to dodge a possible bug or zone dependency.
Tom Lane [Sun, 19 Feb 2017 21:14:52 +0000 (16:14 -0500)]
Adjust PL/Tcl regression test to dodge a possible bug or zone dependency.

One case in the PL/Tcl tests is observed to fail on RHEL5 with a Turkish
time zone setting.  It's not clear if this is an old Tcl bug or something
odd about the zone data, but in any case that test is meant to see if the
Tcl [clock] command works at all, not what its corner-case behaviors are.
Therefore we have no need to test exactly which week a Sunday midnight is
considered to fall into.  Probe the following Tuesday instead.

Discussion: https://postgr.es/m/797.1487517822@sss.pgh.pa.us

7 years agoSuppress "unused variable" warnings with older versions of flex.
Tom Lane [Sun, 19 Feb 2017 18:04:30 +0000 (13:04 -0500)]
Suppress "unused variable" warnings with older versions of flex.

Versions of flex before 2.5.36 might generate code that results in an
"unused variable" warning, when using %option reentrant.  Historically
we've worked around that by specifying -Wno-error, but that's an
unsatisfying solution.  The official "fix" for this was just to insert a
dummy reference to the variable, so write a small perl script that edits
the generated C code similarly.

The MSVC side of this is untested, but the buildfarm should soon reveal
if I broke that.

Discussion: https://postgr.es/m/25456.1487437842@sss.pgh.pa.us

7 years agoMake partitions automatically inherit OIDs.
Robert Haas [Sun, 19 Feb 2017 15:59:27 +0000 (21:29 +0530)]
Make partitions automatically inherit OIDs.

Previously, if the parent was specified as WITH OIDS, each child
also had to be explicitly specified as WITH OIDS.

Amit Langote, per a report from Simon Riggs.  Some additional
work on the documentation changes by me.

Discussion: http://postgr.es/m/CANP8+jJBpWocfKrbJcaf3iBt9E3U=WPE_NC8YE6rye+YJ1sYnQ@mail.gmail.com

7 years agoAdd optimizer and executor support for parallel index-only scans.
Robert Haas [Sun, 19 Feb 2017 10:23:59 +0000 (15:53 +0530)]
Add optimizer and executor support for parallel index-only scans.

Commit 5262f7a4fc44f651241d2ff1fa688dd664a34874 added similar support
for parallel index scans; this extends that work to index-only scans.
As with parallel index scans, this requires support from the index AM,
so currently parallel index-only scans will only be possible for btree
indexes.

Rafia Sabih, reviewed and tested by Rahila Syed, Tushar Ahuja,
and Amit Kapila

Discussion: http://postgr.es/m/CAOGQiiPEAs4C=TBp0XShxBvnWXuzGL2u++Hm1=qnCpd6_Mf8Fw@mail.gmail.com

7 years agoMake dsa_allocate interface more like MemoryContextAlloc.
Robert Haas [Sun, 19 Feb 2017 08:29:53 +0000 (13:59 +0530)]
Make dsa_allocate interface more like MemoryContextAlloc.

A new function dsa_allocate_extended now takes flags which indicate
that huge allocations should be permitted, that out-of-memory
conditions should not throw an error, and/or that the returned memory
should be zero-filled, just like MemoryContextAllocateExtended.

Commit 9acb85597f1223ac26a5b19a9345849c43d0ff54, which added
dsa_allocate0, was broken because it failed to account for the
possibility that dsa_allocate() might return InvalidDsaPointer.
This fixes that problem along the way.

Thomas Munro, with some comment changes by me.

Discussion: http://postgr.es/m/CA+Tgmobt7CcF_uQP2UQwWmu4K9qCHehMJP9_9m1urwP8hbOeHQ@mail.gmail.com

7 years agoFix help message for pg_basebackup -R
Magnus Hagander [Sat, 18 Feb 2017 12:45:14 +0000 (13:45 +0100)]
Fix help message for pg_basebackup -R

The recovery.conf file that's generated is specifically for replication,
and not needed (or wanted) for regular backup restore, so indicate that
in the message.

7 years agoOptimize query for information_schema.constraint_column_usage
Peter Eisentraut [Sat, 18 Feb 2017 00:32:15 +0000 (19:32 -0500)]
Optimize query for information_schema.constraint_column_usage

The way the old query was written prevented some join optimizations
because the join conditions were hidden inside a CASE expression.  With
a large number of constraints, the query became unreasonably slow.  The
new query performs much better.

From: Alexey Bashtanov <bashtanov@imap.cc>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
7 years agodoc: Fix typos
Peter Eisentraut [Fri, 17 Feb 2017 23:59:29 +0000 (18:59 -0500)]
doc: Fix typos

From: Thom Brown <thom@linux.com>

7 years agopg_dump: Message style improvements
Peter Eisentraut [Fri, 17 Feb 2017 23:58:55 +0000 (18:58 -0500)]
pg_dump: Message style improvements

7 years agoDocument usage of COPT environment variable for adjusting configure flags.
Tom Lane [Fri, 17 Feb 2017 21:11:02 +0000 (16:11 -0500)]
Document usage of COPT environment variable for adjusting configure flags.

Also add to the existing rather half-baked description of PROFILE,
which does exactly the same thing, but I think people use it differently.

Discussion: https://postgr.es/m/16461.1487361849@sss.pgh.pa.us

7 years agopg_dump: Fix typo in query
Peter Eisentraut [Fri, 17 Feb 2017 20:06:28 +0000 (15:06 -0500)]
pg_dump: Fix typo in query

This could lead to incorrect dumping of language privileges in some
cases, which is probably a rare situation.

7 years agoRemove redundant coverage target
Peter Eisentraut [Fri, 17 Feb 2017 13:56:57 +0000 (08:56 -0500)]
Remove redundant coverage target

This was probably forgotten to be removed when general recursion support
was added.

7 years agoFix typo on comment
Peter Eisentraut [Fri, 17 Feb 2017 04:53:01 +0000 (23:53 -0500)]
Fix typo on comment

7 years agoAdd new function dsa_allocate0.
Robert Haas [Thu, 16 Feb 2017 17:45:53 +0000 (12:45 -0500)]
Add new function dsa_allocate0.

This does the same thing as dsa_allocate, except that the memory
is guaranteed to be zero-filled on return.

Dilip Kumar, adjusted by me.

7 years agoDoc: remove duplicate index entry.
Tom Lane [Thu, 16 Feb 2017 16:30:07 +0000 (11:30 -0500)]
Doc: remove duplicate index entry.

This causes a warning with the old html-docs toolchain, though not with the
new.  I had originally supposed that we needed both <indexterm> entries to
get both a primary index entry and a see-also link; but evidently not,
as pointed out by Fabien Coelho.

Discussion: https://postgr.es/m/alpine.DEB.2.20.1702161616060.5445@lancre

7 years agoAvoid crash in ALTER TABLE not_partitioned DETACH PARTITION.
Robert Haas [Thu, 16 Feb 2017 13:37:37 +0000 (08:37 -0500)]
Avoid crash in ALTER TABLE not_partitioned DETACH PARTITION.

Amit Langote, reviewed and slightly changed by me.

7 years agoFormatting and docs corrections for logical decoding output plugins.
Tom Lane [Wed, 15 Feb 2017 23:15:47 +0000 (18:15 -0500)]
Formatting and docs corrections for logical decoding output plugins.

Make the typedefs for output plugins consistent with project style;
they were previously not even consistent with each other as to layout
or inclusion of parameter names.  Make the documentation look the same,
and fix errors therein (missing and misdescribed parameters).

Back-patch because of the documentation bugs.

7 years agoDoc: fix typo in logicaldecoding.sgml.
Tom Lane [Wed, 15 Feb 2017 22:31:02 +0000 (17:31 -0500)]
Doc: fix typo in logicaldecoding.sgml.

There's no such field as OutputPluginOptions.output_mode;
it's actually output_type.  Noted by T. Katsumata.

Discussion: https://postgr.es/m/20170215072115.6101.29870@wrigleys.postgresql.org

7 years agoMake sure that hash join's bulk-tuple-transfer loops are interruptible.
Tom Lane [Wed, 15 Feb 2017 21:40:05 +0000 (16:40 -0500)]
Make sure that hash join's bulk-tuple-transfer loops are interruptible.

The loops in ExecHashJoinNewBatch(), ExecHashIncreaseNumBatches(), and
ExecHashRemoveNextSkewBucket() are all capable of iterating over many
tuples without ever doing a CHECK_FOR_INTERRUPTS, so that the backend
might fail to respond to SIGINT or SIGTERM for an unreasonably long time.
Fix that.  In the case of ExecHashJoinNewBatch(), it seems useful to put
the added CHECK_FOR_INTERRUPTS into ExecHashJoinGetSavedTuple() rather
than directly in the loop, because that will also ensure that both
principal code paths through ExecHashJoinOuterGetTuple() will do a
CHECK_FOR_INTERRUPTS, which seems like a good idea to avoid surprises.

Back-patch to all supported branches.

Tom Lane and Thomas Munro

Discussion: https://postgr.es/m/6044.1487121720@sss.pgh.pa.us

7 years agoDoc: fix syntax synopsis for INSERT ... ON CONFLICT DO UPDATE.
Tom Lane [Wed, 15 Feb 2017 20:41:09 +0000 (15:41 -0500)]
Doc: fix syntax synopsis for INSERT ... ON CONFLICT DO UPDATE.

Commit 906bfcad7 adjusted the syntax synopsis for UPDATE, but missed
the fact that the INSERT synopsis now contains a duplicate of that.

In passing, improve wording and markup about using a table alias to
dodge the conflict with use of "excluded" as a special table name.

7 years agoFix tab completion for "ALTER SYSTEM SET variable ...".
Tom Lane [Wed, 15 Feb 2017 20:23:19 +0000 (15:23 -0500)]
Fix tab completion for "ALTER SYSTEM SET variable ...".

It wouldn't complete "TO" after the variable name, which is certainly
minor enough.  But since we do complete "TO" after "SET variable ...",
and since this case used to work pre-9.6, I think this is a bug.

Also, fix the query used to collect the variable names; whoever last
touched it evidently didn't understand how the pieces are supposed
to fit together.  It accidentally worked anyway, because readline
ignores irrelevant completions, but it was randomly unlike the ones
around it, and could be a source of actual bugs if someone copied
it as a prototype for another query.

7 years agoFix YA unwanted behavioral difference with operator_precedence_warning.
Tom Lane [Wed, 15 Feb 2017 19:43:59 +0000 (14:43 -0500)]
Fix YA unwanted behavioral difference with operator_precedence_warning.

Jeff Janes noted that the error cursor position shown for some errors
would vary when operator_precedence_warning is turned on.  We'd prefer
that option to have no undocumented effects, so this isn't desirable.
To fix, make sure that an AEXPR_PAREN node has the same exprLocation
as its child node.

(Note: it would be a little cheaper to use @2 here instead of an
exprLocation call, but there are cases where that wouldn't produce
the identical answer, so don't do it like that.)

Back-patch to 9.5 where this feature was introduced.

Discussion: https://postgr.es/m/CAMkU=1ykK+VhhcQ4Ky8KBo9FoaUJH3f3rDQB8TkTXi-ZsBRUkQ@mail.gmail.com

7 years agoAdd optimizer and executor support for parallel index scans.
Robert Haas [Wed, 15 Feb 2017 18:53:24 +0000 (13:53 -0500)]
Add optimizer and executor support for parallel index scans.

In combination with 569174f1be92be93f5366212cc46960d28a5c5cd, which
taught the btree AM how to perform parallel index scans, this allows
parallel index scan plans on btree indexes.  This infrastructure
should be general enough to support parallel index scans for other
index AMs as well, if someone updates them to support parallel
scans.

Amit Kapila, reviewed and tested by Anastasia Lubennikova, Tushar
Ahuja, and Haribabu Kommi, and me.

7 years agoReplace min_parallel_relation_size with two new GUCs.
Robert Haas [Wed, 15 Feb 2017 18:37:24 +0000 (13:37 -0500)]
Replace min_parallel_relation_size with two new GUCs.

When min_parallel_relation_size was added, the only supported type
of parallel scan was a parallel sequential scan, but there are
pending patches for parallel index scan, parallel index-only scan,
and parallel bitmap heap scan.  Those patches introduce two new
types of complications: first, what's relevant is not really the
total size of the relation but the portion of it that we will scan;
and second, index pages and heap pages shouldn't necessarily be
treated in exactly the same way.  Typically, the number of index
pages will be quite small, but that doesn't necessarily mean that
a parallel index scan can't pay off.

Therefore, we introduce min_parallel_table_scan_size, which works
out a degree of parallelism for scans based on the number of table
pages that will be scanned (and which is therefore equivalent to
min_parallel_relation_size for parallel sequential scans) and also
min_parallel_index_scan_size which can be used to work out a degree
of parallelism based on the number of index pages that will be
scanned.

Amit Kapila and Robert Haas

Discussion: http://postgr.es/m/CAA4eK1KowGSYYVpd2qPpaPPA5R90r++QwDFbrRECTE9H_HvpOg@mail.gmail.com
Discussion: http://postgr.es/m/CAA4eK1+TnM4pXQbvn7OXqam+k_HZqb0ROZUMxOiL6DWJYCyYow@mail.gmail.com

7 years agoFix wrong articles in pg_proc descriptions.
Robert Haas [Wed, 15 Feb 2017 17:13:38 +0000 (12:13 -0500)]
Fix wrong articles in pg_proc descriptions.

This technically should involve a catversion bump, but that seems
pedantic, so I skipped it.

Report and patch by David Christensen.

7 years agoDocument new libpq connection statuses for target_session_attrs.
Robert Haas [Wed, 15 Feb 2017 16:03:41 +0000 (11:03 -0500)]
Document new libpq connection statuses for target_session_attrs.

I didn't realize these would ever be visible to clients, but Michael
figured out that it can happen when using asynchronous interfaces
such as PQconnectPoll.

Michael Paquier

7 years agolibpq: Make target_session_attrs=read-write consume empty result.
Robert Haas [Wed, 15 Feb 2017 16:03:30 +0000 (11:03 -0500)]
libpq: Make target_session_attrs=read-write consume empty result.

Otherwise, the leftover empty result can cause problems in some
situations.

Michael Paquier and Ashutosh Bapat, per a report from Higuchi Daisuke

7 years agodoc: Add advice about systemd RemoveIPC
Peter Eisentraut [Wed, 15 Feb 2017 15:44:07 +0000 (10:44 -0500)]
doc: Add advice about systemd RemoveIPC

Reviewed-by: Magnus Hagander <magnus@hagander.net>
7 years agopg_upgrade: Fix problems caused by renaming pg_resetxlog.
Robert Haas [Wed, 15 Feb 2017 15:14:16 +0000 (10:14 -0500)]
pg_upgrade: Fix problems caused by renaming pg_resetxlog.

Commit 85c11324cabaddcfaf3347df78555b30d27c5b5a renamed pg_resetxlog
to pg_resetwal, but didn't make pg_upgrade smart enough to cope with
the situation.

Michael Paquier, per a complaint from Jeff Janes

7 years agoAdd CREATE COLLATION IF NOT EXISTS clause
Peter Eisentraut [Thu, 9 Feb 2017 03:51:09 +0000 (22:51 -0500)]
Add CREATE COLLATION IF NOT EXISTS clause

The core of the functionality was already implemented when
pg_import_system_collations was added.  This just exposes it as an
option in the SQL command.

7 years agoFix some nonstandard capitalization.
Robert Haas [Wed, 15 Feb 2017 12:53:38 +0000 (07:53 -0500)]
Fix some nonstandard capitalization.

Ashutosh Bapat

7 years agobtree: Support parallel index scans.
Robert Haas [Wed, 15 Feb 2017 12:41:14 +0000 (07:41 -0500)]
btree: Support parallel index scans.

This isn't exposed to the optimizer or the executor yet; we'll add
support for those things in a separate patch.  But this puts the
basic mechanism in place: several processes can attach to a parallel
btree index scan, and each one will get a subset of the tuples that
would have been produced by a non-parallel scan.  Each index page
becomes the responsibility of a single worker, which then returns
all of the TIDs on that page.

Rahila Syed, Amit Kapila, Robert Haas, reviewed and tested by
Anastasia Lubennikova, Tushar Ahuja, and Haribabu Kommi.

7 years agoFix typo in comment.
Robert Haas [Wed, 15 Feb 2017 02:06:13 +0000 (21:06 -0500)]
Fix typo in comment.

Higuchi Daisuke

7 years agoAllow parallel workers to execute subplans.
Robert Haas [Tue, 14 Feb 2017 23:09:47 +0000 (18:09 -0500)]
Allow parallel workers to execute subplans.

This doesn't do anything to make Param nodes anything other than
parallel-restricted, so this only helps with uncorrelated subplans,
and it's not necessarily very cheap because each worker will run the
subplan separately (just as a Hash Join will build a separate copy of
the hash table in each participating process), but it's a first step
toward supporting cases that are more likely to help in practice, and
is occasionally useful on its own.

Amit Kapila, reviewed and tested by Rafia Sabih, Dilip Kumar, and
me.

Discussion: http://postgr.es/m/CAA4eK1+e8Z45D2n+rnDMDYsVEb5iW7jqaCH_tvPMYau=1Rru9w@mail.gmail.com

7 years agoSplit index xlog headers from other private index headers.
Robert Haas [Tue, 14 Feb 2017 20:37:59 +0000 (15:37 -0500)]
Split index xlog headers from other private index headers.

The xlog-specific headers need to be included in both frontend code -
specifically, pg_waldump - and the backend, but the remainder of the
private headers for each index are only needed by the backend.  By
splitting the xlog stuff out into separate headers, pg_waldump pulls
in fewer backend headers, which is a good thing.

Patch by me, reviewed by Michael Paquier and Andres Freund, per a
complaint from Dilip Kumar.

Discussion: http://postgr.es/m/CA+TgmoZ=F=GkxV0YEv-A8tb+AEGy_Qa7GSiJ8deBKFATnzfEug@mail.gmail.com

7 years agoMinor fixes for WAL consistency checking.
Robert Haas [Tue, 14 Feb 2017 17:41:01 +0000 (12:41 -0500)]
Minor fixes for WAL consistency checking.

Michael Paquier, reviewed and slightly revised by me.

Discussion: http://postgr.es/m/CAB7nPqRzCQb=vdfHvMtP0HMLBHU6z1aGdo4GJsUP-HP8jx+Pkw@mail.gmail.com

7 years agoDon't disallow dropping NOT NULL for a list partition key.
Robert Haas [Tue, 14 Feb 2017 17:12:34 +0000 (12:12 -0500)]
Don't disallow dropping NOT NULL for a list partition key.

Range partitioning doesn't support nulls in the partitioning columns,
but list partitioning does.

Amit Langote, per a complaint from Amul Sul

7 years agoRemove duplicate code in planner.c.
Tom Lane [Tue, 14 Feb 2017 16:47:12 +0000 (11:47 -0500)]
Remove duplicate code in planner.c.

I noticed while hacking on join UNION transforms that planner.c's
function get_base_rel_indexes() just duplicates the functionality of
get_relids_in_jointree().  It doesn't even have the excuse of being
older code :-(.  Drop it and use the latter function instead.

7 years agoReplace reference to "xlog-method" with "wal-method" in error message.
Fujii Masao [Tue, 14 Feb 2017 16:25:48 +0000 (01:25 +0900)]
Replace reference to "xlog-method" with "wal-method" in error message.

Commit 62e8b38 renamed "--xlog-method" option for pg_basebackup to
"--wal-method", but forgot to update the error message mentioning that option.

7 years agoCorrections and improvements to generic parallel query documentation.
Robert Haas [Tue, 14 Feb 2017 14:37:31 +0000 (09:37 -0500)]
Corrections and improvements to generic parallel query documentation.

David Rowley, reviewed by Brad DeJong, Amit Kapila, and me.

Discussion: http://postgr.es/m/CAKJS1f81fob-M6RJyTVv3SCasxMuQpj37ReNOJ=tprhwd7hAVg@mail.gmail.com

7 years agoReplace references to "xlog" with "wal" in docs.
Fujii Masao [Mon, 13 Feb 2017 17:30:46 +0000 (02:30 +0900)]
Replace references to "xlog" with "wal" in docs.

Commit f82ec32ac30ae7e3ec7c84067192535b2ff8ec0e renamed the pg_xlog
directory to pg_wal. To make things consistent, we decided to eliminate
"xlog" from user-visible docs.

7 years agoRemove contrib/tsearch2.
Robert Haas [Mon, 13 Feb 2017 16:02:23 +0000 (11:02 -0500)]
Remove contrib/tsearch2.

This module was intended to ease migrations of applications that used
the pre-8.3 version of text search to the in-core version introduced
in that release.  However, since all pre-8.3 releases of the database
have been out of support for more than 5 years at this point, we
expect that few people are depending on it at this point.  If some
people still need it, nothing prevents it from being maintained as a
separate extension, outside of core.

Discussion: http://postgr.es/m/CA+Tgmob5R8aDHiFRTQsSJbT1oreKg2FOSBrC=2f4tqEH3dOMAg@mail.gmail.com

7 years agodoc: Remove accidental extra table cell
Peter Eisentraut [Mon, 13 Feb 2017 01:22:06 +0000 (20:22 -0500)]
doc: Remove accidental extra table cell

7 years agoIgnore tablespace ACLs when ignoring schema ACLs.
Noah Misch [Sun, 12 Feb 2017 21:03:41 +0000 (16:03 -0500)]
Ignore tablespace ACLs when ignoring schema ACLs.

The ALTER TABLE ALTER TYPE implementation can issue DROP INDEX and
CREATE INDEX to refit existing indexes for the new column type.  Since
this CREATE INDEX is an implementation detail of an index alteration,
the ensuing DefineIndex() should skip ACL checks specific to index
creation.  It already skips the namespace ACL check.  Make it skip the
tablespace ACL check, too.  Back-patch to 9.2 (all supported versions).

Reviewed by Tom Lane.

7 years agoAdd CREATE SEQUENCE AS <data type> clause
Peter Eisentraut [Fri, 10 Feb 2017 20:12:32 +0000 (15:12 -0500)]
Add CREATE SEQUENCE AS <data type> clause

This stores a data type, required to be an integer type, with the
sequence.  The sequences min and max values default to the range
supported by the type, and they cannot be set to values exceeding that
range.  The internal implementation of the sequence is not affected.

Change the serial types to create sequences of the appropriate type.
This makes sure that the min and max values of the sequence for a serial
column match the range of values supported by the table column.  So the
sequence can no longer overflow the table column.

This also makes monitoring for sequence exhaustion/wraparound easier,
which currently requires various contortions to cross-reference the
sequences with the table columns they are used with.

This commit also effectively reverts the pg_sequence column reordering
in f3b421da5f4addc95812b9db05a24972b8fd9739, because the new seqtypid
column allows us to fill the hole in the struct and create a more
natural overall column ordering.

Reviewed-by: Steve Singer <steve@ssinger.info>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
7 years agoUpdate ddl.sgml for declarative partitioning syntax
Simon Riggs [Fri, 10 Feb 2017 10:03:28 +0000 (10:03 +0000)]
Update ddl.sgml for declarative partitioning syntax

Add a section titled "Partitioned Tables" to describe what are
partitioned tables, partition, their similarities with inheritance.
The existing section on inheritance is retained for clarity.

Then add examples to the partitioning chapter that show syntax for
partitioned tables.  In fact they implement the same partitioning
scheme that is currently shown using inheritance.

Amit Langote, with additional details and explanatory text by me

7 years agoAdd keywords for partitioning
Simon Riggs [Fri, 10 Feb 2017 09:07:18 +0000 (09:07 +0000)]
Add keywords for partitioning

Amit Langote

7 years agoImprove CREATE TABLE documentation of partitioning
Simon Riggs [Fri, 10 Feb 2017 08:59:37 +0000 (08:59 +0000)]
Improve CREATE TABLE documentation of partitioning

Amit Langote, with corrections by me

7 years agoRename command line options for ongoing xlog -> wal conversion.
Robert Haas [Thu, 9 Feb 2017 21:42:51 +0000 (16:42 -0500)]
Rename command line options for ongoing xlog -> wal conversion.

initdb and pg_basebackup now have a --waldir option rather --xlogdir,
and pg_basebackup now has --wal-method rather than --xlog-method.

7 years agoRename dtrace probes for ongoing xlog -> wal conversion.
Robert Haas [Thu, 9 Feb 2017 21:40:19 +0000 (16:40 -0500)]
Rename dtrace probes for ongoing xlog -> wal conversion.

xlog-switch becomes wal-switch, and xlog-insert becomes wal-insert.

7 years agoRename user-facing tools with "xlog" in the name to say "wal".
Robert Haas [Thu, 9 Feb 2017 21:23:46 +0000 (16:23 -0500)]
Rename user-facing tools with "xlog" in the name to say "wal".

This means pg_receivexlog because pg_receivewal, pg_resetxlog
becomes pg_resetwal, and pg_xlogdump becomes pg_waldump.

7 years agoBlind try to fix portability issue in commit 8f93bd851 et al.
Tom Lane [Thu, 9 Feb 2017 20:49:57 +0000 (15:49 -0500)]
Blind try to fix portability issue in commit 8f93bd851 et al.

The S/390 members of the buildfarm are showing failures indicating
that they're having trouble with the rint() calls I added yesterday.
There's no good reason for that, and I wonder if it is a compiler bug
similar to the one we worked around in d9476b838.  Try to fix it using
the same method as before, namely to store the result of rint() back
into a "double" variable rather than immediately converting to int64.
(This isn't entirely waving a dead chicken, since on machines with
wider-than-double float registers, the extra store forces a width
conversion.  I don't know if S/390 is like that, but it seems worth
trying.)

In passing, merge duplicate ereport() calls in float8_timestamptz().

Per buildfarm.

7 years agoRemove all references to "xlog" from SQL-callable functions in pg_proc.
Robert Haas [Thu, 9 Feb 2017 20:10:09 +0000 (15:10 -0500)]
Remove all references to "xlog" from SQL-callable functions in pg_proc.

Commit f82ec32ac30ae7e3ec7c84067192535b2ff8ec0e renamed the pg_xlog
directory to pg_wal.  To make things consistent, and because "xlog" is
terrible terminology for either "transaction log" or "write-ahead log"
rename all SQL-callable functions that contain "xlog" in the name to
instead contain "wal".  (Note that this may pose an upgrade hazard for
some users.)

Similarly, rename the xlog_position argument of the functions that
create slots to be called wal_position.

Discussion: https://www.postgresql.org/message-id/CA+Tgmob=YmA=H3DbW1YuOXnFVgBheRmyDkWcD9M8f=5bGWYEoQ@mail.gmail.com

7 years agosimplehash: Additional tweaks to make specifying an allocator work.
Robert Haas [Thu, 9 Feb 2017 19:59:57 +0000 (14:59 -0500)]
simplehash: Additional tweaks to make specifying an allocator work.

Even if we don't emit definitions for SH_ALLOCATE and SH_FREE, we
still need prototypes.  The user can't define them before including
simplehash.h because SH_TYPE isn't available yet.

For the allocator to be able to access private_data, it needs to
become an argument to SH_CREATE.  Previously we relied on callers
to set that after returning from SH_CREATE, but SH_CREATE calls
SH_ALLOCATE before returning.

Dilip Kumar, reviewed by me.

7 years agoFix race condition in ConditionVariablePrepareToSleep.
Robert Haas [Thu, 9 Feb 2017 19:42:32 +0000 (14:42 -0500)]
Fix race condition in ConditionVariablePrepareToSleep.

Thomas Munro

7 years agopageinspect: Fix hash_bitmap_info not to read the underlying page.
Robert Haas [Thu, 9 Feb 2017 19:02:58 +0000 (14:02 -0500)]
pageinspect: Fix hash_bitmap_info not to read the underlying page.

It did that to verify that the page was an overflow page rather than
anything else, but that means that checking the status of all the
overflow bits requires reading the entire index.  So don't do that.
The new code validates that the page is not a primary bucket page
or bitmap page by looking at the metapage, so that using this on
large numbers of pages can be reasonably efficient.

Ashutosh Sharma, per a complaint from me, and with further
modifications by me.

7 years agoAllow index AMs to cache data across aminsert calls within a SQL command.
Tom Lane [Thu, 9 Feb 2017 16:52:12 +0000 (11:52 -0500)]
Allow index AMs to cache data across aminsert calls within a SQL command.

It's always been possible for index AMs to cache data across successive
amgettuple calls within a single SQL command: the IndexScanDesc.opaque
field is meant for precisely that.  However, no comparable facility
exists for amortizing setup work across successive aminsert calls.
This patch adds such a feature and teaches GIN, GIST, and BRIN to use it
to amortize catalog lookups they'd previously been doing on every call.
(The other standard index AMs keep everything they need in the relcache,
so there's little to improve there.)

For GIN, the overall improvement in a statement that inserts many rows
can be as much as 10%, though it seems a bit less for the other two.
In addition, this makes a really significant difference in runtime
for CLOBBER_CACHE_ALWAYS tests, since in those builds the repeated
catalog lookups are vastly more expensive.

The reason this has been hard up to now is that the aminsert function is
not passed any useful place to cache per-statement data.  What I chose to
do is to add suitable fields to struct IndexInfo and pass that to aminsert.
That's not widening the index AM API very much because IndexInfo is already
within the ken of ambuild; in fact, by passing the same info to aminsert
as to ambuild, this is really removing an inconsistency in the AM API.

Discussion: https://postgr.es/m/27568.1486508680@sss.pgh.pa.us

7 years agoAdd explicit ORDER BY to a few tests that exercise hash-join code.
Andres Freund [Thu, 9 Feb 2017 00:58:21 +0000 (16:58 -0800)]
Add explicit ORDER BY to a few tests that exercise hash-join code.

A proposed patch, also by Thomas and in the same thread, would change
the output order of these.  Independent of the follow-up patches
getting committed, nailing down the order in these specific tests at
worst seems harmless.

Author: Thomas Munro
Discussion: https://postgr.es/m/CAEepm=1D4-tP7j7UAgT_j4ZX2j4Ehe1qgZQWFKBMb8F76UW5Rg@mail.gmail.com

7 years agoFix roundoff problems in float8_timestamptz() and make_interval().
Tom Lane [Wed, 8 Feb 2017 23:04:59 +0000 (18:04 -0500)]
Fix roundoff problems in float8_timestamptz() and make_interval().

When converting a float value to integer microseconds, we should be careful
to round the value to the nearest integer, typically with rint(); simply
assigning to an int64 variable will truncate, causing apparently off-by-one
values in cases that should work.  Most places in the datetime code got
this right, but not these two.

float8_timestamptz() is new as of commit e511d878f (9.6).  Previous
versions effectively depended on interval_mul() to do roundoff correctly,
which it does, so this fixes an accuracy regression in 9.6.

The problem in make_interval() dates to its introduction in 9.4.  Aside
from being careful to round not truncate, let's incorporate the hours and
minutes inputs into the result with exact integer arithmetic, rather than
risk introducing roundoff error where there need not have been any.

float8_timestamptz() problem reported by Erik Nordström, though this is
not his proposed patch.  make_interval() problem found by me.

Discussion: https://postgr.es/m/CAHuQZDS76jTYk3LydPbKpNfw9KbACmD=49dC4BrzHcfPv6yA1A@mail.gmail.com

7 years agoAdd WAL consistency checking facility.
Robert Haas [Wed, 8 Feb 2017 20:45:30 +0000 (15:45 -0500)]
Add WAL consistency checking facility.

When the new GUC wal_consistency_checking is set to a non-empty value,
it triggers recording of additional full-page images, which are
compared on the standby against the results of applying the WAL record
(without regard to those full-page images).  Allowable differences
such as hints are masked out, and the resulting pages are compared;
any difference results in a FATAL error on the standby.

Kuntal Ghosh, based on earlier patches by Michael Paquier and Heikki
Linnakangas.  Extensively reviewed and revised by Michael Paquier and
by me, with additional reviews and comments from Amit Kapila, Álvaro
Herrera, Simon Riggs, and Peter Eisentraut.

7 years agoFix relcache leaks in get_object_address_publication_rel()
Peter Eisentraut [Wed, 8 Feb 2017 03:09:53 +0000 (22:09 -0500)]
Fix relcache leaks in get_object_address_publication_rel()

7 years agodoc: Some improvements in CREATE SUBSCRIPTION ref page
Peter Eisentraut [Wed, 8 Feb 2017 02:26:50 +0000 (21:26 -0500)]
doc: Some improvements in CREATE SUBSCRIPTION ref page

Add link to description of libpq connection strings.  Add link to
explanation of replication access control.  This currently points to the
description of streaming replication access control, which is currently
the same as for logical replication, but that might be refined later.
Also remove plain-text passwords from the examples, to not encourage
that dubious practice.

based on suggestions from Simon Riggs

7 years agoRevise the way the element allocator for a simplehash is specified.
Robert Haas [Tue, 7 Feb 2017 22:01:40 +0000 (17:01 -0500)]
Revise the way the element allocator for a simplehash is specified.

This method is more elegant and more efficient.

Per a suggestion from Andres Freund, who also briefly reviewed
the patch.

7 years agoSpeed up "brin" regression test a little bit.
Tom Lane [Tue, 7 Feb 2017 21:34:11 +0000 (16:34 -0500)]
Speed up "brin" regression test a little bit.

In the large DO block, collect row TIDs into array variables instead of
creating and dropping a pile of temporary tables.  In a normal build,
this reduces the brin test script's runtime from about 1.1 sec to 0.4 sec
on my workstation.  That's not all that exciting perhaps, but in a
CLOBBER_CACHE_ALWAYS test build, the runtime drops from 20 min to 17 min,
which is a little more useful.  In combination with some other changes
I plan to propose, this will help provide a noticeable reduction in
cycle time for CLOBBER_CACHE_ALWAYS buildfarm critters.