]> granicus.if.org Git - postgresql/log
postgresql
7 years agoAllow SCRAM authentication, when pg_hba.conf says 'md5'.
Heikki Linnakangas [Fri, 24 Mar 2017 11:32:21 +0000 (13:32 +0200)]
Allow SCRAM authentication, when pg_hba.conf says 'md5'.

If a user has a SCRAM verifier in pg_authid.rolpassword, there's no reason
we cannot attempt to perform SCRAM authentication instead of MD5. The worst
that can happen is that the client doesn't support SCRAM, and the
authentication will fail. But previously, it would fail for sure, because
we would not even try. SCRAM is strictly more secure than MD5, so there's
no harm in trying it. This allows for a more graceful transition from MD5
passwords to SCRAM, as user passwords can be changed to SCRAM verifiers
incrementally, without changing pg_hba.conf.

Refactor the code in auth.c to support that better. Notably, we now have to
look up the user's pg_authid entry before sending the password challenge,
also when performing MD5 authentication. Also simplify the concept of a
"doomed" authentication. Previously, if a user had a password, but it had
expired, we still performed SCRAM authentication (but always returned error
at the end) using the salt and iteration count from the expired password.
Now we construct a fake salt, like we do when the user doesn't have a
password or doesn't exist at all. That simplifies get_role_password(), and
we can don't need to distinguish the  "user has expired password", and
"user does not exist" cases in auth.c.

On second thoughts, also rename uaSASL to uaSCRAM. It refers to the
mechanism specified in pg_hba.conf, and while we use SASL for SCRAM
authentication at the protocol level, the mechanism should be called SCRAM,
not SASL. As a comparison, we have uaLDAP, even though it looks like the
plain 'password' authentication at the protocol level.

Discussion: https://www.postgresql.org/message-id/6425.1489506016@sss.pgh.pa.us
Reviewed-by: Michael Paquier
7 years agoFix backup canceling
Teodor Sigaev [Fri, 24 Mar 2017 10:53:40 +0000 (13:53 +0300)]
Fix backup canceling

Assert-enabled build crashes but without asserts it works by wrong way:
it may not reset forcing full page write and preventing from starting
exclusive backup with the same name as cancelled.
Patch replaces pair of booleans
nonexclusive_backup_running/exclusive_backup_running to single enum to
correctly describe backup state.

Backpatch to 9.6 where bug was introduced

Reported-by: David Steele
Authors: Michael Paquier, David Steele
Reviewed-by: Anastasia Lubennikova
https://commitfest.postgresql.org/13/1068/

7 years agoAvoid syntax error on platforms that have neither LOCALE_T nor ICU.
Tom Lane [Fri, 24 Mar 2017 03:18:52 +0000 (23:18 -0400)]
Avoid syntax error on platforms that have neither LOCALE_T nor ICU.

Buildfarm member anole sees this union as empty, and doesn't like it.

7 years agodoc: add missing closing 'sect3' tag for ICU patch
Bruce Momjian [Thu, 23 Mar 2017 20:59:24 +0000 (16:59 -0400)]
doc:  add missing closing 'sect3' tag for ICU patch

7 years agoAdd ICU_FLAGS to one more place
Peter Eisentraut [Thu, 23 Mar 2017 20:53:10 +0000 (16:53 -0400)]
Add ICU_FLAGS to one more place

Reported-by: Thomas Munro <thomas.munro@enterprisedb.com>
7 years agoFix crash in ICU patch
Peter Eisentraut [Thu, 23 Mar 2017 20:31:39 +0000 (16:31 -0400)]
Fix crash in ICU patch

This only happened with single-byte encodings.

7 years agoFix enum definition.
Robert Haas [Thu, 23 Mar 2017 20:10:43 +0000 (16:10 -0400)]
Fix enum definition.

Commit 249cf070e36721a65be74838c53acf8249faf935 assigned to one of
the labels in the middle the value that should have been assigned
to the first member of the enum.  Rushabh's patch didn't have that
defect as submitted, but I managed to mess it up while editing.
Repair.

7 years agoICU support
Peter Eisentraut [Thu, 23 Mar 2017 19:25:34 +0000 (15:25 -0400)]
ICU support

Add a column collprovider to pg_collation that determines which library
provides the collation data.  The existing choices are default and libc,
and this adds an icu choice, which uses the ICU4C library.

The pg_locale_t type is changed to a union that contains the
provider-specific locale handles.  Users of locale information are
changed to look into that struct for the appropriate handle to use.

Also add a collversion column that records the version of the collation
when it is created, and check at run time whether it is still the same.
This detects potentially incompatible library upgrades that can corrupt
indexes and other structures.  This is currently only supported by
ICU-provided collations.

initdb initializes the default collation set as before from the `locale
-a` output but also adds all available ICU locales with a "-x-icu"
appended.

Currently, ICU-provided collations can only be explicitly named
collations.  The global database locales are still always libc-provided.

ICU support is enabled by configure --with-icu.

Reviewed-by: Thomas Munro <thomas.munro@enterprisedb.com>
Reviewed-by: Andreas Karlsson <andreas@proxel.se>
7 years agoTrack the oldest XID that can be safely looked up in CLOG.
Robert Haas [Thu, 23 Mar 2017 18:08:23 +0000 (14:08 -0400)]
Track the oldest XID that can be safely looked up in CLOG.

This provides infrastructure for looking up arbitrary, user-supplied
XIDs without a risk of scary-looking failures from within the clog
module.  Normally, the oldest XID that can be safely looked up in CLOG
is the same as the oldest XID that can reused without causing
wraparound, and the latter is already tracked.  However, while
truncation is in progress, the values are different, so we must
keep track of them separately.

Craig Ringer, reviewed by Simon Riggs and by me.

Discussion: http://postgr.es/m/CAMsr+YHQiWNEi0daCTboS40T+V5s_+dst3PYv_8v2wNVH+Xx4g@mail.gmail.com

7 years agoRemove createlang and droplang
Peter Eisentraut [Thu, 23 Mar 2017 18:16:45 +0000 (14:16 -0400)]
Remove createlang and droplang

They have been deprecated since PostgreSQL 9.1.

Reviewed-by: Magnus Hagander <magnus@hagander.net>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
7 years agoAllow for parallel execution whenever ExecutorRun() is done only once.
Robert Haas [Thu, 23 Mar 2017 17:05:48 +0000 (13:05 -0400)]
Allow for parallel execution whenever ExecutorRun() is done only once.

Previously, it was unsafe to execute a plan in parallel if
ExecutorRun() might be called with a non-zero row count.  However,
it's quite easy to fix things up so that we can support that case,
provided that it is known that we will never call ExecutorRun() a
second time for the same QueryDesc.  Add infrastructure to signal
this, and cross-checks to make sure that a caller who claims this is
true doesn't later reneg.

While that pattern never happens with queries received directly from a
client -- there's no way to know whether multiple Execute messages
will be sent unless the first one requests all the rows -- it's pretty
common for queries originating from procedural languages, which often
limit the result to a single tuple or to a user-specified number of
tuples.

This commit doesn't actually enable parallelism in any additional
cases, because currently none of the places that would be able to
benefit from this infrastructure pass CURSOR_OPT_PARALLEL_OK in the
first place, but it makes it much more palatable to pass
CURSOR_OPT_PARALLEL_OK in places where we currently don't, because it
eliminates some cases where we'd end up having to run the parallel
plan serially.

Patch by me, based on some ideas from Rafia Sabih and corrected by
Rafia Sabih based on feedback from Dilip Kumar and myself.

Discussion: http://postgr.es/m/CA+TgmobXEhvHbJtWDuPZM9bVSLiTj-kShxQJ2uM5GPDze9fRYA@mail.gmail.com

7 years agoReduce page locking in GIN vacuum
Teodor Sigaev [Thu, 23 Mar 2017 16:38:47 +0000 (19:38 +0300)]
Reduce page locking in GIN vacuum

GIN vacuum during cleaning posting tree can lock this whole tree for a long
time with by holding LockBufferForCleanup() on root. Patch changes it with
two ways: first, cleanup lock will be taken only if there is an empty page
(which should be deleted) and, second, it tries to lock only subtree, not the
whole posting tree.

Author: Andrey Borodin with minor editorization by me
Reviewed-by: Jeff Davis, me
https://commitfest.postgresql.org/13/896/

7 years agoRemove trailing comma from enum definition
Peter Eisentraut [Thu, 23 Mar 2017 15:58:11 +0000 (11:58 -0400)]
Remove trailing comma from enum definition

Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>

7 years agoAssorted compilation and test fixes
Peter Eisentraut [Thu, 23 Mar 2017 15:44:43 +0000 (11:44 -0400)]
Assorted compilation and test fixes

related to 7c4f52409a8c7d85ed169bbbc1f6092274d03920, per build farm

Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>

7 years agoMinor spelling correction in comment
Simon Riggs [Thu, 23 Mar 2017 15:29:42 +0000 (15:29 +0000)]
Minor spelling correction in comment
Jon Nelson

7 years agoReplication lag tracking for walsenders
Simon Riggs [Thu, 23 Mar 2017 14:05:28 +0000 (14:05 +0000)]
Replication lag tracking for walsenders

Adds write_lag, flush_lag and replay_lag cols to pg_stat_replication.

Implements a lag tracker module that reports the lag times based upon
measurements of the time taken for recent WAL to be written, flushed and
replayed and for the sender to hear about it. These times
represent the commit lag that was (or would have been) introduced by each
synchronous commit level, if the remote server was configured as a
synchronous standby.  For an asynchronous standby, the replay_lag column
approximates the delay before recent transactions became visible to queries.
If the standby server has entirely caught up with the sending server and
there is no more WAL activity, the most recently measured lag times will
continue to be displayed for a short time and then show NULL.

Physical replication lag tracking is automatic. Logical replication tracking
is possible but is the responsibility of the logical decoding plugin.
Tracking is a private module operating within each walsender individually,
with values reported to shared memory. Module not used outside of walsender.

Design and code is good enough now to commit - kudos to the author.
In many ways a difficult topic, with important and subtle behaviour so this
shoudl be expected to generate discussion and multiple open items: Test now!

Author: Thomas Munro, following designs by Fujii Masao and Simon Riggs
Review: Simon Riggs, Ian Barwick and Craig Ringer

7 years agoLogical replication support for initial data copy
Peter Eisentraut [Thu, 23 Mar 2017 12:36:36 +0000 (08:36 -0400)]
Logical replication support for initial data copy

Add functionality for a new subscription to copy the initial data in the
tables and then sync with the ongoing apply process.

For the copying, add a new internal COPY option to have the COPY source
data provided by a callback function.  The initial data copy works on
the subscriber by receiving COPY data from the publisher and then
providing it locally into a COPY that writes to the destination table.

A WAL receiver can now execute full SQL commands.  This is used here to
obtain information about tables and publications.

Several new options were added to CREATE and ALTER SUBSCRIPTION to
control whether and when initial table syncing happens.

Change pg_dump option --no-create-subscription-slots to
--no-subscription-connect and use the new CREATE SUBSCRIPTION
... NOCONNECT option for that.

Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Tested-by: Erik Rijkers <er@xs4all.nl>
7 years agoFix grammar in comment
Magnus Hagander [Thu, 23 Mar 2017 09:14:42 +0000 (10:14 +0100)]
Fix grammar in comment

Author: Emil Iggland

7 years agoExpose waitforarchive option through pg_stop_backup()
Stephen Frost [Thu, 23 Mar 2017 03:44:58 +0000 (23:44 -0400)]
Expose waitforarchive option through pg_stop_backup()

Internally, we have supported the option to either wait for all of the
WAL associated with a backup to be archived, or to return immediately.
This option is useful to users of pg_stop_backup() as well, when they
are reading the stop backup record position and checking that the WAL
they need has been archived independently.

This patch adds an additional, optional, argument to pg_stop_backup()
which allows the user to indicate if they wish to wait for the WAL to be
archived or not.  The default matches current behavior, which is to
wait.

Author: David Steele, with some minor changes, doc updates by me.
Reviewed by: Takayuki Tsunakawa, Fujii Masao
Discussion: https://postgr.es/m/758e3fd1-45b4-5e28-75cd-e9e7f93a4c02@pgmasters.net

7 years agodoc: Improve CREATE PUBLICATION examples
Peter Eisentraut [Wed, 22 Mar 2017 19:26:59 +0000 (15:26 -0400)]
doc: Improve CREATE PUBLICATION examples

7 years agodoc: Fix logical replication setup instructions
Peter Eisentraut [Wed, 22 Mar 2017 19:26:04 +0000 (15:26 -0400)]
doc: Fix logical replication setup instructions

The pg_hba.conf rules were changed in
8df9bd0b445f9bd6134915d4417efde6e85e3add.

7 years agodoc: Markup and formatting improvements
Peter Eisentraut [Wed, 22 Mar 2017 19:11:13 +0000 (15:11 -0400)]
doc: Markup and formatting improvements

7 years agoFix wrong costing of Sort under Gather Merge.
Robert Haas [Wed, 22 Mar 2017 18:42:03 +0000 (14:42 -0400)]
Fix wrong costing of Sort under Gather Merge.

There's no mechanism for such a sort to become a top-N sort, so we
should pass -1 rather than limit_tuples to cost_sort().

Rushabh Lathia, per a report from Mithun Cy

Discussion: http://postgr.es/m/CAGPqQf1akRcSgC9=6iwx=sEPap9UvPpHJLzg8_N+OuHdb6fL+g@mail.gmail.com

7 years agoSupport multiple RADIUS servers
Magnus Hagander [Wed, 22 Mar 2017 16:55:16 +0000 (17:55 +0100)]
Support multiple RADIUS servers

This changes all the RADIUS related parameters (radiusserver,
radiussecret, radiusport, radiusidentifier) to be plural and to accept a
comma separated list of servers, which will be tried in order.

Reviewed by Adam Brightwell

7 years agoCorrect erroneous comment in GetOldestXmin()
Simon Riggs [Wed, 22 Mar 2017 16:58:12 +0000 (16:58 +0000)]
Correct erroneous comment in GetOldestXmin()

Craig Ringer

7 years agoRefactor GetOldestXmin() to use flags
Simon Riggs [Wed, 22 Mar 2017 16:51:01 +0000 (16:51 +0000)]
Refactor GetOldestXmin() to use flags

Replace ignoreVacuum parameter with more flexible flags.

Author: Eiji Seki
Review: Haribabu Kommi

7 years agoAssign AccessExclusiveLocks against subxacts in Hot Standby
Simon Riggs [Wed, 22 Mar 2017 16:37:28 +0000 (16:37 +0000)]
Assign AccessExclusiveLocks against subxacts in Hot Standby

Previously AELs were registered against the top-level xid, which could
cause locks to be held much longer than necessary in some cases during
Hot Standby replay. We now record locks directly against their appropriate
xids. Requires few code changes because original code allowed for this
situation but didn’t fully implement it.

Discussion: CAKJS1f9vJ841HY=wonnLVbfkTWGYWdPN72VMxnArcGCjF3SywA@mail.gmail.com

Author: Simon Riggs and David Rowley

7 years agoChange logical replication pg_hba.conf use
Peter Eisentraut [Mon, 13 Feb 2017 21:50:29 +0000 (16:50 -0500)]
Change logical replication pg_hba.conf use

Logical replication no longer uses the "replication" keyword.  It just
matches database entries in the normal way.  The "replication" keyword
now only applies to physical replication.

Reviewed-by: Petr Jelinek <petr.jelinek@2ndquadrant.com>
7 years agoRefine rules for altering publication owner
Peter Eisentraut [Mon, 13 Feb 2017 13:57:45 +0000 (08:57 -0500)]
Refine rules for altering publication owner

Previously, the new owner had to be a superuser.  The new rules are more
refined similar to other objects.

Reviewed-by: Petr Jelinek <petr.jelinek@2ndquadrant.com>
7 years agoSync pg_dump and pg_dumpall output
Andrew Dunstan [Wed, 22 Mar 2017 14:00:30 +0000 (10:00 -0400)]
Sync pg_dump and pg_dumpall output

Before exiting any files are fsync'ed. A --no-sync option is also
provided for a faster exit if desired.

Michael Paquier.

Reviewed by Albe Laurenz

Discussion: https://postgr.es/m/CAB7nPqS1uZ=Ov+UruW6jr3vB-S_DLVMPc0dQpV-fTDjmm0ZQMg@mail.gmail.com

7 years agoImprove performance of replay of AccessExclusiveLocks
Simon Riggs [Wed, 22 Mar 2017 13:09:36 +0000 (13:09 +0000)]
Improve performance of replay of AccessExclusiveLocks

A hot standby replica keeps a list of Access Exclusive locks for a top
level transaction. These locks are released when the top level transaction
ends. Searching of this list is O(N^2), and each transaction had to pay the
price of searching this list for locks, even if it didn't take any AE
locks itself.

This patch optimizes this case by having the master server track which
transactions took AE locks, and passes that along to the standby server in
the commit/abort record. This allows the standby to only try to release
locks for transactions which actually took any, avoiding the majority of
the performance issue.

Refactor MyXactAccessedTempRel into MyXactFlags to allow minimal additional
cruft with this.

Analysis and initial patch by David Rowley
Author: David Rowley and Simon Riggs

7 years agoTeach xlogreader to follow timeline switches
Simon Riggs [Wed, 22 Mar 2017 07:05:12 +0000 (07:05 +0000)]
Teach xlogreader to follow timeline switches

Uses page-based mechanism to ensure we’re using the correct timeline.

Tests are included to exercise the functionality using a cold disk-level copy
of the master that's started up as a replica with slots intact, but the
intended use of the functionality is with later features.

Craig Ringer, reviewed by Simon Riggs and Andres Freund

7 years agoAvoid Perl warning
Peter Eisentraut [Wed, 22 Mar 2017 04:18:49 +0000 (00:18 -0400)]
Avoid Perl warning

Perl versions before 5.12 would warn "Use of implicit split to @_ is
deprecated".

Author: Jeff Janes <jeff.janes@gmail.com>

7 years agopg_dump: Only dump publications when dumping everything
Peter Eisentraut [Wed, 22 Mar 2017 03:19:09 +0000 (23:19 -0400)]
pg_dump: Only dump publications when dumping everything

Don't dump publications with pg_dump -t or similar cases that select
specific groups of objects.

Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>

7 years agodoc: Update tool sets documentation for modern FreeBSD
Peter Eisentraut [Wed, 22 Mar 2017 02:09:40 +0000 (22:09 -0400)]
doc: Update tool sets documentation for modern FreeBSD

For several operating systems, we give handy package manager one-liners
to install all the requirements for building our documentation.  All
current production FreeBSD releases have a friendly new package manager
a bit like apt/yum, so give a one line command here.  Also, add a brief
note about gmake vs make in the doc subdirectory.

Author: Thomas Munro <thomas.munro@enterprisedb.com>

7 years agoDocument btree_gin support for enums
Andrew Dunstan [Tue, 21 Mar 2017 15:11:42 +0000 (11:11 -0400)]
Document btree_gin support for enums

7 years agoAdd btree_gin support for enum types
Andrew Dunstan [Tue, 21 Mar 2017 15:04:17 +0000 (11:04 -0400)]
Add btree_gin support for enum types

Reviewed by Tom Lane and Anastasia Lubennikova

Discussion:  http://postgr.es/m/56EA8A71.8060107@dunslane.net

7 years agoAdd btree_gist support for enum types.
Andrew Dunstan [Tue, 21 Mar 2017 14:19:03 +0000 (10:19 -0400)]
Add btree_gist support for enum types.

This will allow enums to be used in exclusion constraints.

The code uses the new CallerFInfoFunctionCall infrastructure in fmgr,
and the support for it added to btree_gist in commit 393bb504d7.

Reviewed by Tom Lane and Anastasia Lubennikova

Discussion:  http://postgr.es/m/56EA8A71.8060107@dunslane.net

7 years agoUse CallerFInfoFunctionCall with btree_gist for varlena types
Andrew Dunstan [Tue, 21 Mar 2017 13:53:35 +0000 (09:53 -0400)]
Use CallerFInfoFunctionCall with btree_gist for varlena types

Follow up to commit 393bb504d7 which did this for numeric types.

7 years agoUse CallerFInfoFunctionCall with btree_gist for numeric types
Andrew Dunstan [Tue, 21 Mar 2017 13:12:46 +0000 (09:12 -0400)]
Use CallerFInfoFunctionCall with btree_gist for numeric types

None of the existing types actually need to use this mechanism, but this
will allow support for enum types which will need it. A separate patch
will adjust the varlena types support for consistency.

Reviewed by Tom Lane and Anastasia Lubennikova

Discussion:  http://postgr.es/m/27220.1478360811@sss.pgh.pa.us

7 years agoAdd a pg_recvlogical wrapper to PostgresNode
Simon Riggs [Tue, 21 Mar 2017 14:04:49 +0000 (14:04 +0000)]
Add a pg_recvlogical wrapper to PostgresNode

Allows testing of logical decoding using SQL interface and/or pg_recvlogical
Most logical decoding tests are in contrib/test_decoding. This module
is for work that doesn't fit well there, like where server restarts
are required.

Craig Ringer

7 years agoDon't scan partitioned tables.
Robert Haas [Tue, 21 Mar 2017 13:48:04 +0000 (09:48 -0400)]
Don't scan partitioned tables.

Partitioned tables do not contain any data; only their unpartitioned
descendents need to be scanned.  However, the partitioned tables still
need to be locked, even though they're not scanned.  To make that
work, Append and MergeAppend relations now need to carry a list of
(unscanned) partitioned relations that must be locked, and InitPlan
must lock all partitioned result relations.

Aside from the obvious advantage of avoiding some work at execution
time, this has two other advantages.  First, it may improve the
planner's decision-making in some cases since the empty relation
might throw things off.  Second, it paves the way to getting rid of
the storage for partitioned tables altogether.

Amit Langote, reviewed by me.

Discussion: http://postgr.es/m/6837c359-45c4-8044-34d1-736756335a15@lab.ntt.co.jp

7 years agoFix support for some operators (&<, &>, $<|, |&>) in box operator class
Teodor Sigaev [Tue, 21 Mar 2017 13:23:10 +0000 (16:23 +0300)]
Fix support for some operators (&<, &>, $<|, |&>) in box operator class
of SP-GiST.

Bug exists since initial commit of box opclass for SP-GiST,
so backpath to 9.6

Author: Nikita Glukhov with minor editorization of tests by me
Reviewed-by: Kyotaro Horiguchi, Anastasia Lubennikova
https://commitfest.postgresql.org/13/981/

7 years agoAdd a direct function call mechanism using the caller's context.
Andrew Dunstan [Tue, 21 Mar 2017 12:57:46 +0000 (08:57 -0400)]
Add a direct function call mechanism using the caller's context.

The current DirectFunctionCall functions use NULL as the flinfo in
initializing the FunctionCallInfoData for the call. That means the
called function has no fn_mcxt or fn_extra to work with, and attempting
to do so will result in an access violation. These functions instead use
the provided flinfo, which will usually be the caller's own flinfo. The
caller needs to ensure that it doesn't use the fn_extra in way that is
incompatible with the way the called function will use it. The called
function should not rely on anything else in the provided context, as it
will be relevant to the caller, not the callee.

Original code from Tom Lane.

Discussion: https://postgr.es/m/db2b70a4-78d7-294a-a315-8e7f506c5978@2ndQuadrant.com

7 years agodoc: Improve markup
Peter Eisentraut [Tue, 21 Mar 2017 12:33:32 +0000 (08:33 -0400)]
doc: Improve markup

7 years agodoc: clarify that function "ownership" that controls permission
Bruce Momjian [Tue, 21 Mar 2017 02:33:26 +0000 (22:33 -0400)]
doc:  clarify that function "ownership" that controls permission

It used to say the creation user.

Reported-by: Nathan Wagner
7 years agodoc: adjust 'Infinity' example to include minus
Bruce Momjian [Tue, 21 Mar 2017 02:22:11 +0000 (22:22 -0400)]
doc:  adjust 'Infinity' example to include minus

This clarifies that quoted infinity values must have the negative signs
inside single quotes.

Reported-by: Don Morrison
7 years agoAdd missing support for new node fields
Andrew Dunstan [Tue, 21 Mar 2017 01:50:53 +0000 (21:50 -0400)]
Add missing support for new node fields

Commit b6fb534f added two new node fields but neglected to add copy and
comparison support for them, Mea culpa, should have checked for that.

per buildfarm animals with -DCOPY_PARSE_PLAN_TREES

7 years agodoc: improve createdb example
Bruce Momjian [Tue, 21 Mar 2017 01:23:56 +0000 (21:23 -0400)]
doc:  improve createdb example

The previous example could error out due to encoding mismatches;  use
-T/template instead.

Reported-by: Jason O'Donnell
7 years agoForce the regression databases to have bytea_output set to hex
Andrew Dunstan [Mon, 20 Mar 2017 22:12:24 +0000 (18:12 -0400)]
Force the regression databases to have bytea_output set to hex

Even if the installation defaults to escape output, this makes
pg_regress make the setting hex, so that installcheck tests can pass in
such a setting.

Jeff Janes.

Discussion: http://postgr.es/m/CAMkU=1xivkTNeyCfzhwdHJ+VH5qpU+4gsipRNuEUbyQf+KN3Kw@mail.gmail.com

7 years agoAdd IF NOT EXISTS for CREATE SERVER and CREATE USER MAPPING
Andrew Dunstan [Mon, 20 Mar 2017 20:40:45 +0000 (16:40 -0400)]
Add IF NOT EXISTS for CREATE SERVER and CREATE USER MAPPING

There is still some inconsistency with the error messages surrounding
foreign servers. Some use the word "foreign" and some don't. My
inclination is to remove all such uses of "foreign" on the basis that
the  CREATE/ALTER/DROP SERVER commands don't use the word. However, that
is left for another day. In this patch I have kept to the existing usage
in the affected commands, which omits "foreign".

Anastasia Lubennikova, reviewed by Arthur Zakirov and Ashtosh Bapat.

Discussion: http://postgr.es/m/7c2ab9b8-388a-1ce0-23a3-7acf2a0ed3c6@postgrespro.ru

7 years agoUse a consistent error message style for user mappings.
Andrew Dunstan [Mon, 20 Mar 2017 20:01:45 +0000 (16:01 -0400)]
Use a consistent error message style for user mappings.

User mappings are essentially anonymous, so messages referring to "user
mapping foo on server bar" are wrong, and inconsistent with other error
messages referring to user mappings. To be consistent with existing use,
use "user mapping for foo on server bar" instead.

I dropped the noise word "user" from the original suggestion to be
consistent with other uses.

Discussion: http://postgr.es/m/56c6f8ab-b2d6-f1fa-deb0-1d18cf67f7b9@2ndQuadrant.com

7 years agoAnother fix for single-page hash index vacuum.
Robert Haas [Mon, 20 Mar 2017 19:55:27 +0000 (15:55 -0400)]
Another fix for single-page hash index vacuum.

The WAL consistency checking code needed to be updated for the new
page status bit, but that didn't get done previously.

Ashutosh Sharma, reviewed by Amit Kapila

Discussion: http://postgr.es/m/CAA4eK1LP_oz4EfMen14OjJuzN5CqPdfRkFFuA-MfkcfeE8zGyg@mail.gmail.com

7 years agoFixes for single-page hash index vacuum.
Robert Haas [Mon, 20 Mar 2017 19:49:09 +0000 (15:49 -0400)]
Fixes for single-page hash index vacuum.

Clear LH_PAGE_HAS_DEAD_TUPLES during replay, similar to what gets done
for btree.  Update hashdesc.c for xl_hash_vacuum_one_page.

Oversights in commit 6977b8b7f4dfb40896ff5e2175cad7fdbda862eb spotted
by Amit Kapila.  Patch by Ashutosh Sharma.

Bump WAL version.  The original patch to make hash indexes write-ahead
logged probably should have done this, and the single page vacuuming
patch probably should have done it again, but better late than never.

Discussion: http://postgr.es/m/CAA4eK1Kd=mJ9xreovcsh0qMiAj-QqCphHVQ_Lfau1DR9oVjASQ@mail.gmail.com

7 years agoAdd configure test to see if the C compiler has gcc-style computed gotos.
Tom Lane [Mon, 20 Mar 2017 17:35:21 +0000 (13:35 -0400)]
Add configure test to see if the C compiler has gcc-style computed gotos.

We'll need this for the upcoming patch to speed up expression evaluation.
Might as well push it now to see if it behaves sanely in the buildfarm.

Andres Freund

Discussion: https://postgr.es/m/20170320062511.hp5qeurtxrwsvfxr@alap3.anarazel.de

7 years agoAdd .gitignore for src/test/authentication/tmp_check.
Heikki Linnakangas [Mon, 20 Mar 2017 17:27:36 +0000 (18:27 +0100)]
Add .gitignore for src/test/authentication/tmp_check.

Michael Paquier

Discussion: https://www.postgresql.org/message-id/CAB7nPqRZ_LNTCJ7gGjE_SpRanGoALfTgsxdauNsKq%2BLBRH9fxg%40mail.gmail.com

7 years agoAdd missed "make clean" logic in src/interfaces/libpq/Makefile.
Tom Lane [Mon, 20 Mar 2017 16:51:45 +0000 (12:51 -0400)]
Add missed "make clean" logic in src/interfaces/libpq/Makefile.

Commit 818fd4a67 missed cleaning up the symlinks it added for various .c
files imported from src/port and src/common.  Neatnik-ishly make the
file lists in the "clean" target look exactly like the earlier lists of
what to symlink in.

7 years agoImprove regression test coverage for TID scanning.
Tom Lane [Mon, 20 Mar 2017 16:30:08 +0000 (12:30 -0400)]
Improve regression test coverage for TID scanning.

TidScan plan nodes were not systematically tested before.  These additions
raise the LOC coverage number for the basic regression tests from 52% to
92% in nodeTidscan.c, and from 60% to 93% in tidpath.c.

Andres Freund, tweaked a bit by me

Discussion: https://postgr.es/m/20170320062511.hp5qeurtxrwsvfxr@alap3.anarazel.de

7 years agoRevert unintentional change in increasing usage count during pin of buffers,
Teodor Sigaev [Mon, 20 Mar 2017 15:48:46 +0000 (18:48 +0300)]
Revert unintentional change in increasing usage count during pin of buffers,
this makes buffer access strategy have no effect.
Change was a part of commit 48354581a49c30f5757c203415aa8412d85b0f70 during 9.6
release cycle, so backpath to 9.6

Reported-by: Jim Nasby
Author: Alexander Korotkov
Reviewed-by: Jim Nasby, Andres Freund
https://commitfest.postgresql.org/13/1029/

7 years agopg_dump: Skip COLLATION-related regression tests
Stephen Frost [Sun, 19 Mar 2017 20:56:14 +0000 (16:56 -0400)]
pg_dump: Skip COLLATION-related regression tests

Not every platform supports non-default collations, as pointed out by
the buildfarm, so skip collation-related regression tests in pg_dump
when they aren't supported.

7 years agoUpdate obsolete comment
Magnus Hagander [Sun, 19 Mar 2017 16:06:44 +0000 (17:06 +0100)]
Update obsolete comment

Commit ff27db5d changed this function to no longer return the start
position, but forgot the comment.

7 years agodoc: Fix a few typos and awkward links
Peter Eisentraut [Sun, 19 Mar 2017 03:43:47 +0000 (23:43 -0400)]
doc: Fix a few typos and awkward links

7 years agoAvoid use of already-closed relcache entry.
Tom Lane [Sat, 18 Mar 2017 22:43:06 +0000 (18:43 -0400)]
Avoid use of already-closed relcache entry.

Oversight in commit 17f8ffa1e.  Per buildfarm member prion.

7 years agoFix REFRESH MATERIALIZED VIEW to report activity to the stats collector.
Tom Lane [Sat, 18 Mar 2017 21:49:06 +0000 (17:49 -0400)]
Fix REFRESH MATERIALIZED VIEW to report activity to the stats collector.

The non-concurrent code path for REFRESH MATERIALIZED VIEW failed to
report its updates to the stats collector.  This is bad since it means
auto-analyze doesn't know there's any work to be done.  Adjust it to
report the refresh as a table truncate followed by insertion of an
appropriate number of rows.

Since a matview could contain more than INT_MAX rows, change the
signature of pgstat_count_heap_insert() to accept an int64 rowcount.
(The accumulator it's adding into is already int64, but existing
callers could not insert more than a small number of rows at once,
so the argument had been declared just "int n".)

This is surely a bug fix, but changing pgstat_count_heap_insert()'s API
seems too risky for the back branches.  Given the lack of previous
complaints, I'm not sure it's a big enough problem to justify a kluge
solution that would avoid that.  So, no back-patch, at least for now.

Jim Mlodgenski, adjusted a bit by me

Discussion: https://postgr.es/m/CAB_5SRchSz7-WmdO5szdiknG8Oj_GGqJytrk1KRd11yhcMs1KQ@mail.gmail.com

7 years agodoc: Improve wording
Peter Eisentraut [Sat, 18 Mar 2017 21:40:47 +0000 (17:40 -0400)]
doc: Improve wording

Link to CREATE and ALTER ROLE consistently, instead of mixing CREATE
USER and ALTER ROLE.

7 years agodoc: Add markup
Peter Eisentraut [Sat, 18 Mar 2017 18:41:47 +0000 (14:41 -0400)]
doc: Add markup

7 years agodoc: Update compatibility claim
Peter Eisentraut [Sat, 18 Mar 2017 18:25:41 +0000 (14:25 -0400)]
doc: Update compatibility claim

Update outdated claim that TRUNCATE is a PostgreSQL extension.

Add cross-links between DELETE and TRUNCATE references pages.

7 years agodoc: Tweak reference page header style
Peter Eisentraut [Sat, 18 Mar 2017 18:17:28 +0000 (14:17 -0400)]
doc: Tweak reference page header style

Change the header style of references pages in HTML and PDF output to be
more like the old style under DSSSL.  In particular, the page should
start with a header containing the command name, instead of just "Name".

7 years agoAdjust number of tests for pg_dump 001_basic.pl
Stephen Frost [Sat, 18 Mar 2017 17:53:29 +0000 (13:53 -0400)]
Adjust number of tests for pg_dump 001_basic.pl

When removing a test, need to make sure the count of tests is adjusted
when it isn't calculated.

7 years agopg_dump: Remove "option requires an argument -- j" test
Stephen Frost [Sat, 18 Mar 2017 17:46:45 +0000 (13:46 -0400)]
pg_dump: Remove "option requires an argument -- j" test

This is really testing getopt more than pg_dump, and what getopt returns
exactly appears to differ based on platform, so remove this test.

Per buildfarm.

7 years agoImprove pg_dump regression tests and code coverage
Stephen Frost [Sat, 18 Mar 2017 17:18:24 +0000 (13:18 -0400)]
Improve pg_dump regression tests and code coverage

These improvements bring the lines-of-code coverage of pg_dump.c up to
87.7% (at least using LCOV 1.12, 1.11 seems to differ slightly).  Nearly
every function is covered, three of the four which aren't are only
called when talking to older PG instances.

There is more which can, and should, be done here to improve the
coverage but it's past time to see what the buildfarm thinks of this.

What has been added:

- Coverage for many more command-line options
- Use command_fails_like instead of command_exit_is
- Operator classes, operator families
- Text search configuration, templates, parsers, dictionaries
- FDWs, servers, foreign tables
- Materialized views
- Improved Publications / Subscriptions test (though this needs work,
  see PG10 open items and tests marked with XXX in 002_pg_dump.pl)
- Unlogged tables
- Partitioned tables
- Additional ACL testing for various object types

There is room for improvement, specifically:

- Various type-based option (alignment, storage, etc)
- Composite type collation
- Extra Procedural language functions (inline, validator)
- Different function options (SRF, Transform, config, security definer,
  cost, leakproof)
- OpClass options (default, storage, order by, recheck)
- OpFamily options (order by, recheck)
- Aggregate functions (combinefunc, serialfunc, deserialfunc, etc)
- Text Search parser 'headline'
- Text Search template 'init'
- FDW options (handler, validator, options)
- Server options (type, version, options)
- User mapping options
- Default ACLs for sequences, types
- Security labels
- View circular dependencies (last function that needs coverage)
- Toast table autovacuum options
- Replica identity options
- Independent indexes (plus marking them as clustered on)
- Deferrable / initially deferred constraints
- Independent domain constraints

There's bits of extension pg_dump'ing also not covered, but those will
need to go into test_pg_dump (such as having a filter for config
tables).

Last, but not least, this approximately halves the number of tests run
with 'ok()' by removing the ok()-based checking of if all runs are
covered by each test.  Instead, 002_pg_dump.pl will just exit out in
such a case (with a message in the log file).  In general, when adding
tests, cover all runs unless there is a very good reason not to (such as
adding a 'catch-all' case).  With these changes, the resulting output
and number of "tests" run is actually reduced.

7 years agodoc: Correct row count in table
Peter Eisentraut [Sat, 18 Mar 2017 13:42:26 +0000 (09:42 -0400)]
doc: Correct row count in table

The incorrect count causes FOP to error out.

7 years agoCreate and use wait events for read, write, and fsync operations.
Robert Haas [Sat, 18 Mar 2017 11:43:01 +0000 (07:43 -0400)]
Create and use wait events for read, write, and fsync operations.

Previous commits, notably 53be0b1add7064ca5db3cd884302dfc3268d884e and
6f3bd98ebfc008cbd676da777bb0b2376c4c4bfa, made it possible to see from
pg_stat_activity when a backend was stuck waiting for another backend,
but it's also fairly common for a backend to be stuck waiting for an
I/O.  Add wait events for those operations, too.

Rushabh Lathia, with further hacking by me.  Reviewed and tested by
Michael Paquier, Amit Kapila, Rajkumar Raghuwanshi, and Rahila Syed.

Discussion: http://postgr.es/m/CAGPqQf0LsYHXREPAZqYGVkDqHSyjf=KsD=k0GTVPAuzyThh-VQ@mail.gmail.com

7 years agoFix schedule of ecpg test files to only try two-phase commit test when possible.
Michael Meskes [Sat, 18 Mar 2017 09:35:14 +0000 (10:35 +0100)]
Fix schedule of ecpg test files to only try two-phase commit test when possible.

7 years agoFix WaitEventSetWait() to handle write-ready waits properly on Windows.
Tom Lane [Fri, 17 Mar 2017 18:58:06 +0000 (14:58 -0400)]
Fix WaitEventSetWait() to handle write-ready waits properly on Windows.

Windows apparently will not detect socket write-ready events unless a
preceding send attempt returned WSAEWOULDBLOCK.  In many usage patterns
that's satisfied by the caller of WaitEvenSetWait(), but not always.

Apply the same solution that we already had in pgwin32_select(), namely to
perform a dummy WSASend() call with len=0.  This will return WSAEWOULDBLOCK
if there's no buffer space (even though it could legitimately do nothing
and report success, which makes me a bit nervous about this solution;
but since it's been working fine in libpq, let's roll with it).

In passing, improve the comments about this in pgwin32_select(), and remove
duplicated code there.

Back-patch to 9.6 where WaitEventSetWait() was introduced.  We might need
to back-patch something similar into predecessor code.  But given the lack
of complaints so far, it's not clear that the case ever gets exercised
in the back branches, so I'm not going to expend effort on it right now.

This should resolve recurring failures on buildfarm member bowerbird,
which has been failing since 1e8a85009 went in.

Diagnosis and patch by Petr Jelinek, cosmetic adjustments by me.

Discussion: https://postgr.es/m/5b6a6d6d-fb45-0afb-2e95-5600063c3dbd@2ndquadrant.com

7 years agopageinspect: Add page_checksum function
Peter Eisentraut [Fri, 17 Mar 2017 13:49:10 +0000 (09:49 -0400)]
pageinspect: Add page_checksum function

Author: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Reviewed-by: Ashutosh Sharma <ashu.coek88@gmail.com>
7 years agoRepair test for vacuum reltuples fix.
Andrew Gierth [Fri, 17 Mar 2017 14:35:54 +0000 (14:35 +0000)]
Repair test for vacuum reltuples fix.

Concurrent auto-analyze could be holding a snapshot, affecting the
removal of deleted row versions.  Remove the deletion to avoid this
happening.  Per buildfarm.

In passing, make the test independent of assumptions of physical row
order, just out of sheer paranoia.

7 years agoRename "pg_clog" directory to "pg_xact".
Robert Haas [Fri, 17 Mar 2017 13:46:58 +0000 (09:46 -0400)]
Rename "pg_clog" directory to "pg_xact".

Names containing the letters "log" sometimes confuse users into
believing that only non-critical data is present.  It is hoped
this renaming will discourage ill-considered removals of transaction
status data.

Michael Paquier

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

7 years agoRemove dead link.
Robert Haas [Fri, 17 Mar 2017 13:32:34 +0000 (09:32 -0400)]
Remove dead link.

David Christensen

Discussion: http://postgr.es/m/82299377-1480-4439-9ABA-5828D71AA22E@endpoint.com

7 years agopageinspect: Add test for page_header function
Peter Eisentraut [Fri, 17 Mar 2017 13:23:39 +0000 (09:23 -0400)]
pageinspect: Add test for page_header function

7 years agoAdd TAP tests for password-based authentication methods.
Heikki Linnakangas [Fri, 17 Mar 2017 09:34:16 +0000 (11:34 +0200)]
Add TAP tests for password-based authentication methods.

Tests all combinations of users with MD5, plaintext and SCRAM verifiers
stored in pg_authid, with plain 'password', 'md5' and 'scram'
authentication methods.

Michael Paquier

7 years agoAllow plaintext 'password' authentication when user has a SCRAM verifier.
Heikki Linnakangas [Fri, 17 Mar 2017 09:33:27 +0000 (11:33 +0200)]
Allow plaintext 'password' authentication when user has a SCRAM verifier.

Oversight in the main SCRAM patch.

7 years agoFix and simplify check for whether we're running as Windows service.
Heikki Linnakangas [Fri, 17 Mar 2017 09:14:01 +0000 (11:14 +0200)]
Fix and simplify check for whether we're running as Windows service.

If the process token contains SECURITY_SERVICE_RID, but it has been
disabled by the SE_GROUP_USE_FOR_DENY_ONLY attribute, win32_is_service()
would incorrectly report that we're running as a service. That situation
arises, e.g. if postmaster is launched with a restricted security token,
with the "Log in as Service" privilege explicitly removed.

Replace the broken code with CheckProcessTokenMembership(), which does
this correctly. Also replace similar code in win32_is_admin(), even
though it got this right, for simplicity and consistency.

Per bug #13755, reported by Breen Hagan. Back-patch to all supported
versions. Patch by Takayuki Tsunakawa, reviewed by Michael Paquier.

Discussion: https://www.postgresql.org/message-id/20151104062315.2745.67143%40wrigleys.postgresql.org

7 years agoFix grammar.
Robert Haas [Fri, 17 Mar 2017 00:29:11 +0000 (20:29 -0400)]
Fix grammar.

This would have ben grammatical if the closing tag name were actually
part of the output, but of course it's not.

7 years agopsql: Add completion for \help DROP|ALTER
Peter Eisentraut [Thu, 16 Mar 2017 22:54:28 +0000 (18:54 -0400)]
psql: Add completion for \help DROP|ALTER

While \help CREATE would complete usefully, \help DROP or \help ALTER
did not complete anything.

Expand the list of things after CREATE and DROP to cover ALTER as well,
and use that for the ALTER completion.  Also make minor tweaks to that
list.

Also add support for completing \help on multiword commands like CREATE
TEXT SEARCH ...

Author: Andreas Karlsson <andreas@proxel.se>

7 years agoAvoid having vacuum set reltuples to 0 on non-empty relations in the
Andrew Gierth [Thu, 16 Mar 2017 22:28:03 +0000 (22:28 +0000)]
Avoid having vacuum set reltuples to 0 on non-empty relations in the
presence of page pins, which leads to serious estimation errors in the
planner.  This particularly affects small heavily-accessed tables,
especially where locking (e.g. from FK constraints) forces frequent
vacuums for mxid cleanup.

Fix by keeping separate track of pages whose live tuples were actually
counted vs. pages that were only scanned for freezing purposes.  Thus,
reltuples can only be set to 0 if all pages of the relation were
actually counted.

Backpatch to all supported versions.

Per bug #14057 from Nicolas Baccelli, analyzed by me.

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

7 years agoAvoid access to uninitialized memory in shared tidbitmap iteration.
Robert Haas [Thu, 16 Mar 2017 19:07:26 +0000 (15:07 -0400)]
Avoid access to uninitialized memory in shared tidbitmap iteration.

Primarily, this didn't work correctly when the tidbitmap ended up
empty.

Dilip Kumar, per a report from Emre Hasegeli

Discussion: http://postgr.es/m/CAFiTN-ujHFKb8WSLhK54rfqQT3r2yiPQOyeBrCDsA4p9Fwp_jw@mail.gmail.com

7 years agoAdd pg_ls_logdir() and pg_ls_waldir() functions.
Robert Haas [Thu, 16 Mar 2017 19:05:02 +0000 (15:05 -0400)]
Add pg_ls_logdir() and pg_ls_waldir() functions.

These functions are intended to be used by monitoring tools, and,
unlike pg_ls_dir(), access to them can be granted to non-superusers,
so that those monitoring tools can observe the principle of least
privilege.

Dave Page, revised by me, and also reviewed a bit by Thomas Munro.

Discussion: http://postgr.es/m/CA+OCxow-X=D2fWdKy+HP+vQ1LtrgbsYQ=CshzZBqyFT5jOYrFw@mail.gmail.com

7 years agopostgres_fdw: Push down FULL JOINs with restriction clauses.
Robert Haas [Thu, 16 Mar 2017 17:34:59 +0000 (13:34 -0400)]
postgres_fdw: Push down FULL JOINs with restriction clauses.

The previous deparsing logic wasn't smart enough to produce subqueries
when deparsing; make it smart enough to do that.  However, we only do
it that way when necessary, because it generates more complicated SQL
which will be harder for any humans reading the queries to understand.

Etsuro Fujita, reviewed by Ashutosh Bapat

Discussion: http://postgr.es/m/c449261a-b033-dc02-9254-2fe5b7044795@lab.ntt.co.jp

7 years agoFix ancient get_object_address_opf_member bug
Alvaro Herrera [Thu, 16 Mar 2017 15:51:08 +0000 (12:51 -0300)]
Fix ancient get_object_address_opf_member bug

The original coding was trying to use a TypeName as a string Value,
which doesn't work; an oversight in my commit a61fd533.  Repair.

Also, make sure we cover the broken case in the relevant test script.

Backpatch to 9.5.

Discussion: https://postgr.es/m/20170315151829.bhxsvrp75xdxhm3n@alvherre.pgsql

7 years agoBe more careful about signed vs. unsigned char
Stephen Frost [Thu, 16 Mar 2017 04:13:37 +0000 (00:13 -0400)]
Be more careful about signed vs. unsigned char

The buildfarm has reminded me that not all systems consider char to be
signed and we need to be explicit.  Adjust the various bits of mac8.c
for what we intend, mostly using casts to unsigned char as suggested by
Tom, and adjust the tests for valid input accordingly.  Explicitly make
the hexlookup table signed as it's useful to use -1 there to indicate an
invalid value.

7 years agoClean up overly paranoid checks in mac8.c
Stephen Frost [Thu, 16 Mar 2017 03:23:28 +0000 (23:23 -0400)]
Clean up overly paranoid checks in mac8.c

Andres' compiler points out, quite correctly, that there's no need for
some of the overly paranoid checks which were put into mac8.c.  Remove
those, as they're useless, add some comments and make a few other minor
improvements- reduce the size of hexlookup by making it a char array
instead of an int array, and pass in the ptr location directly instead
of making hex2_to_uchar re-calculate the location based off the offset
every time.

7 years agoPort single-page btree vacuum logic to hash indexes.
Robert Haas [Thu, 16 Mar 2017 02:18:56 +0000 (22:18 -0400)]
Port single-page btree vacuum logic to hash indexes.

This is advantageous for hash indexes for the same reasons it's good
for btrees: it accelerates space recycling, reducing bloat.

Ashutosh Sharma, reviewed by Amit Kapila and by me.  A bit of
additional hacking by me.

Discussion: http://postgr.es/m/CAE9k0PkRSyzx8dOnokEpUi2A-RFZK72WN0h9DEMv_ut9q6bPRw@mail.gmail.com

7 years agoSpecify bindir in pg_isolation_regress_installcheck.
Andres Freund [Thu, 16 Mar 2017 02:03:29 +0000 (19:03 -0700)]
Specify bindir in pg_isolation_regress_installcheck.

It appears dcae5faccab64776376d3 forgot to add it to
pg_isolation_regress_installcheck, while it was added to
pg_regress_installcheck.  It seems to so far have escaped notice,
because buildfarm animals requiring it, didn't actually use
pg_isolation_regress_installcheck anywhere - that changed with
60f826c5e6244, triggering failures on narwhal and frogmouth.

I've decided to not, for now at least, backpatch this, because the
relevant invocations look quite different in the back branches.  Seems
quite possible that we'll want to backport 60f826c5e6244 as a whole if
it proves stable.

Discussion: https://postgr.es/m/20170315174003.3dyl4teashdwgblh@alap3.anarazel.de

7 years agoSimplify publication/subscription tests a bit
Peter Eisentraut [Wed, 15 Mar 2017 20:52:12 +0000 (16:52 -0400)]
Simplify publication/subscription tests a bit

After testing RENAME TO, rename the object back.  This reduces the merge
mess when subsequent patches add test cases before or after the rename
test.

7 years agoFix typo
Peter Eisentraut [Wed, 15 Mar 2017 20:27:07 +0000 (16:27 -0400)]
Fix typo

7 years agoAdd more documentation and tests for publications
Peter Eisentraut [Wed, 15 Mar 2017 17:52:07 +0000 (13:52 -0400)]
Add more documentation and tests for publications

Add/correct documentation and add some tests related to how access
control around adding tables to publications works.

7 years agoRewrite async-connection loop in libpqwalreceiver.c, once again.
Tom Lane [Wed, 15 Mar 2017 17:26:26 +0000 (13:26 -0400)]
Rewrite async-connection loop in libpqwalreceiver.c, once again.

The original coding in commit 1e8a85009 didn't use PQconnectPoll per
spec, and while the rewrite in e434ad39a is closer, it still doesn't
guarantee to wait until the socket is read-ready or write-ready (as
appropriate) before calling PQconnectPoll.  It's not clear whether
that omission is causing the continuing failures on buildfarm member
bowerbird; but given the lack of other explanations meeting the
available facts, let's tighten that up and see what happens.

An independent issue in the same loop was that it had a race condition
whereby it could clear the process's latch without having serviced an
interrupt request, causing failure to respond to a cancel while waiting
for connection (the very problem 1e8a85009 was meant to fix).

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

7 years agoFix failure to use clamp_row_est() for parallel joins.
Robert Haas [Wed, 15 Mar 2017 16:28:54 +0000 (12:28 -0400)]
Fix failure to use clamp_row_est() for parallel joins.

Commit 0c2070cefa0e5d097b715c9a3b9b5499470019aa neglected to use
clamp_row_est() where it should have done so.

Patch by me.  Report by Amit Kapila.

Discussion: http://postgr.es/m/CAA4eK1KPm8RYa1Kun3ZmQj9pb723b-EFN70j47Pid1vn3ByquA@mail.gmail.com

7 years agoBump catversion for MACADDR8
Stephen Frost [Wed, 15 Mar 2017 15:19:39 +0000 (11:19 -0400)]
Bump catversion for MACADDR8

Pointed out by Robert.