Fujii Masao [Mon, 1 Aug 2016 17:43:17 +0000 (02:43 +0900)]     Remove unused arguments from pg_replication_origin_xact_reset function.
 
 The document specifies that pg_replication_origin_xact_reset function
 doesn't have any argument variables. But previously it was actually
 defined so as to have two argument variables, though they were not
 used at all. That is, the pg_proc entry for that function was incorrect.
 This patch fixes the pg_proc entry and removes those two arguments
 from the function definition.
 
 No back-patch because this change needs a catalog version bump
 although the issue exists in 9.5 as well. Instead, a note about those
 unused argument variables will be added to 9.5 document later.
 
 Catalog version bumped due to the change of pg_proc.
 
 
    Bruce Momjian [Mon, 1 Aug 2016 16:52:22 +0000 (12:52 -0400)]     pg_rewind docs: clarify handling of remote servers
 
 
    Michael Meskes [Mon, 1 Aug 2016 04:36:27 +0000 (06:36 +0200)]     Fixed array checking code for "unsigned long long" datatypes in libecpg.
 
 
    Fujii Masao [Mon, 1 Aug 2016 08:36:14 +0000 (17:36 +0900)]     Fix pg_basebackup so that it accepts 0 as a valid compression level.
 
 The help message for pg_basebackup specifies that the numbers 0 through 9
 are accepted as valid values of -Z option. But, previously -Z 0 was rejected
 as an invalid compression level.
 
 Per discussion, it's better to make pg_basebackup treat 0 as valid
 compression level meaning no compression, like pg_dump.
 
 Back-patch to all supported versions.
 
 Reported-By: Jeff Janes
 Reviewed-By: Amit Kapila
 Discussion: CAMkU=1x+GwjSayc57v6w87ij6iRGFWt=hVfM0B64b1_bPVKRqg@mail.gmail.com
 
 
    Tom Lane [Sun, 31 Jul 2016 22:32:34 +0000 (18:32 -0400)]     Doc: remove claim that hash index creation depends on effective_cache_size.
  This text was added by commit 
ff213239c, and not long thereafter obsoleted
 by commit 
4adc2f72a (which made the test depend on NBuffers instead); but
 nobody noticed the need for an update.  Commit 
9563d5b5e adds some further
 dependency on maintenance_work_mem, but the existing verbiage seems to
 cover that with about as much precision as we really want here.  Let's
 just take it all out rather than leaving ourselves open to more errors of
 omission in future.  (That solution makes this change back-patchable, too.) 
 Noted by Peter Geoghegan. 
 Discussion: <CAM3SWZRVANbj9GA9j40fAwheQCZQtSwqTN1GBTVwRrRbmSf7cg@mail.gmail.com>  
  Tom Lane [Sun, 31 Jul 2016 20:05:12 +0000 (16:05 -0400)]     Code review for tqueue.c: fix memory leaks, speed it up, other fixes.
 
 When doing record typmod remapping, tqueue.c did fresh catalog lookups
 for each tuple it processed, which was pretty horrible performance-wise
 (it seemed to about halve the already none-too-quick speed of bulk reads
 in parallel mode).  Worse, it insisted on putting bits of that data into
 TopMemoryContext, from where it never freed them, causing a
 session-lifespan memory leak.  (I suppose this was coded with the idea
 that the sender process would quit after finishing the query ---
 but the receiver uses the same code.)
 
 Restructure to avoid repetitive catalog lookups and to keep that data
 in a query-lifespan context, in or below the context where the
 TQueueDestReceiver or TupleQueueReader itself lives.
 
 Fix some other bugs such as continuing to use a tupledesc after
 releasing our refcount on it.  Clean up cavalier datatype choices
 (typmods are int32, please, not int, and certainly not Oid).  Improve
 comments and error message wording.
 
 
    Stephen Frost [Sun, 31 Jul 2016 14:57:15 +0000 (10:57 -0400)]     Correctly handle owned sequences with extensions
 
 With the refactoring of pg_dump to handle components, getOwnedSeqs needs
 to be a bit more intelligent regarding which components to dump when.
 Specifically, we can't simply use the owning table's components as the
 set of components to dump as the table might only be including certain
 components while all components of the sequence should be dumped, for
 example, when the table is a member of an extension while the sequence
 is not.
 
 Handle this by combining the set of components to be dumped for the
 sequence explicitly and those to be dumped for the table when setting
 the components to be dumped for the sequence.
 
 Also add a number of regression tests around this to, hopefully, catch
 any future changes which break the expected behavior.
 
 Discovered by: Philippe BEAUDOIN
 Reviewed by: Michael Paquier
 
 
    Bruce Momjian [Sun, 31 Jul 2016 01:34:28 +0000 (21:34 -0400)]     doc:  improve wording of Error Message Style Guide
  Reported-by: Daniel Gustafsson Discussion: 
48DB4EDA-96F8-4B2F-99C4-
110900FC7540@yesql.se 
 Author: Daniel Gustafsson  
  Bruce Momjian [Sat, 30 Jul 2016 20:59:34 +0000 (16:59 -0400)]     pgbench docs: fix incorrect "last two" fields text
  Reported-by: Alexander Law Discussion: 
5786638C.
8080508@gmail.com 
 Backpatch-through: 9.4  
  Bruce Momjian [Sat, 30 Jul 2016 16:27:27 +0000 (12:27 -0400)]     docs: properly capitalize and space kB, MB, GB, TB
 
 
    Tom Lane [Fri, 29 Jul 2016 23:31:06 +0000 (19:31 -0400)]     Fix worst memory leaks in tqueue.c.
  TupleQueueReaderNext() leaks like a sieve if it has to do any tuple
 disassembly/reconstruction.  While we could try to clean up its allocations
 piecemeal, it seems like a better idea just to insist that it should be run
 in a short-lived memory context, so that any transient space goes away
 automatically.  I chose to have nodeGather.c switch into its existing
 per-tuple context before the call, rather than inventing a separate
 context inside tqueue.c. 
 This is sufficient to stop all leakage in the simple case I exhibited
 earlier today (see link below), but it does not deal with leaks induced
 in more complex cases by tqueue.c's insistence on using TopMemoryContext
 for data that it's not actually trying hard to keep track of.  That issue
 is intertwined with another major source of inefficiency, namely failure
 to cache lookup results across calls, so it seems best to deal with it
 separately. 
 In passing, improve some comments, and modify gather_readnext's method for
 deciding when it's visited all the readers so that it's more obviously
 correct.  (I'm not actually convinced that the previous code *is*
 correct in the case of a reader deletion; it certainly seems fragile.) 
 Discussion: <32763.
1469821037@sss.pgh.pa.us>  
  Tom Lane [Fri, 29 Jul 2016 18:13:19 +0000 (14:13 -0400)]     Fix tqueue.c's range-remapping code.
 
 It's depressingly clear that nobody ever tested this.
 
 
    Tom Lane [Fri, 29 Jul 2016 16:52:57 +0000 (12:52 -0400)]     Fix pq_putmessage_noblock() to not block.
  An evident copy-and-pasteo in commit 
2bd9e412f broke the non-blocking
 aspect of pq_putmessage_noblock(), causing it to behave identically to
 pq_putmessage().  That function is nowadays used only in walsender.c,
 so that the net effect was to cause walsenders to hang up waiting for
 the receiver in situations where they should not. 
 Kyotaro Horiguchi 
 Patch: <
20160728.185228.
58375982.horiguchi.kyotaro@lab.ntt.co.jp>  
  Robert Haas [Fri, 29 Jul 2016 16:06:18 +0000 (12:06 -0400)]     Eliminate a few more user-visible "cache lookup failed" errors.
 
 Michael Paquier
 
 
    Peter Eisentraut [Fri, 29 Jul 2016 02:46:15 +0000 (22:46 -0400)]     Documentation spell checking and markup improvements
 
 
    Tom Lane [Thu, 28 Jul 2016 22:57:24 +0000 (18:57 -0400)]     Guard against empty buffer in gets_fromFile()'s check for a newline.
 
 Per the fgets() specification, it cannot return without reading some data
 unless it reports EOF or error.  So the code here assumed that the data
 buffer would necessarily be nonempty when we go to check for a newline
 having been read.  However, Agostino Sarubbo noticed that this could fail
 to be true if the first byte of the data is a NUL (\0).  The fgets() API
 doesn't really work for embedded NULs, which is something I don't feel
 any great need for us to worry about since we generally don't allow NULs
 in SQL strings anyway.  But we should not access off the end of our own
 buffer if the case occurs.  Normally this would just be a harmless read,
 but if you were unlucky the byte before the buffer would contain '\n'
 and we'd overwrite it with '\0', and if you were really unlucky that
 might be valuable data and psql would crash.
 
 Agostino reported this to pgsql-security, but after discussion we concluded
 that it isn't worth treating as a security bug; if you can control the
 input to psql you can do far more interesting things than just maybe-crash
 it.  Nonetheless, it is a bug, so back-patch to all supported versions.
 
 
    Tom Lane [Thu, 28 Jul 2016 21:23:03 +0000 (17:23 -0400)]     Teach parser to transform "x IS [NOT] DISTINCT FROM NULL" to a NullTest.
 
 Now that we've nailed down the principle that NullTest with !argisrow
 is fully equivalent to SQL's IS [NOT] DISTINCT FROM NULL, let's teach
 the parser about it.  This produces a slightly more compact parse tree
 and is much more amenable to optimization than a DistinctExpr, since
 the planner knows a good deal about NullTest and next to nothing about
 DistinctExpr.
 
 I'm not sure that there are all that many queries in the wild that could
 be improved by this, but at least one source of such cases is the patch
 just made to postgres_fdw to emit IS [NOT] DISTINCT FROM NULL when
 IS [NOT] NULL isn't semantically correct.
 
 No back-patch, since to the extent that this does affect planning results,
 it might be considered undesirable plan destabilization.
 
 
    Peter Eisentraut [Thu, 28 Jul 2016 20:18:35 +0000 (16:18 -0400)]     Message style improvements
 
 
    Tom Lane [Thu, 28 Jul 2016 20:09:15 +0000 (16:09 -0400)]     Fix assorted fallout from IS [NOT] NULL patch.
  Commits 
4452000f3 et al established semantics for NullTest.argisrow that
 are a bit different from its initial conception: rather than being merely
 a cache of whether we've determined the input to have composite type,
 the flag now has the further meaning that we should apply field-by-field
 testing as per the standard's definition of IS [NOT] NULL.  If argisrow
 is false and yet the input has composite type, the construct instead has
 the semantics of IS [NOT] DISTINCT FROM NULL.  Update the comments in
 primnodes.h to clarify this, and fix ruleutils.c and deparse.c to print
 such cases correctly.  In the case of ruleutils.c, this merely results in
 cosmetic changes in EXPLAIN output, since the case can't currently arise
 in stored rules.  However, it represents a live bug for deparse.c, which
 would formerly have sent a remote query that had semantics different
 from the local behavior.  (From the user's standpoint, this means that
 testing a remote nested-composite column for null-ness could have had
 unexpected recursive behavior much like that fixed in 
4452000f3.) 
 In a related but somewhat independent fix, make plancat.c set argisrow
 to false in all NullTest expressions constructed to represent "attnotnull"
 constructs.  Since attnotnull is actually enforced as a simple null-value
 check, this is a more accurate representation of the semantics; we were
 previously overpromising what it meant for composite columns, which might
 possibly lead to incorrect planner optimizations.  (It seems that what the
 SQL spec expects a NOT NULL constraint to mean is an IS NOT NULL test, so
 arguably we are violating the spec and should fix attnotnull to do the
 other thing.  If we ever do, this part should get reverted.) 
 Back-patch, same as the previous commit. 
 Discussion: <10682.
1469566308@sss.pgh.pa.us>  
  Tom Lane [Thu, 28 Jul 2016 17:26:58 +0000 (13:26 -0400)]     Improve documentation about CREATE TABLE ... LIKE.
  The docs failed to explain that LIKE INCLUDING INDEXES would not preserve
 the names of indexes and associated constraints.  Also, it wasn't mentioned
 that EXCLUDE constraints would be copied by this option.  The latter
 oversight seems enough of a documentation bug to justify back-patching. 
 In passing, do some minor copy-editing in the same area, and add an entry
 for LIKE under "Compatibility", since it's not exactly a faithful
 implementation of the standard's feature. 
 Discussion: <
20160728151154.
AABE64016B@smtp.hushmail.com>  
  Tom Lane [Thu, 28 Jul 2016 15:39:10 +0000 (11:39 -0400)]     Register atexit hook only once in pg_upgrade.
  start_postmaster() registered stop_postmaster_atexit as an atexit(3)
 callback each time through, although the obvious intention was to do
 so only once per program run.  The extra registrations were harmless,
 so long as we didn't exceed ATEXIT_MAX, but still it's a bug. 
 Artur Zakirov, with bikeshedding by Kyotaro Horiguchi and me 
 Discussion: <
d279e817-02b5-caa6-215f-
cfb05dce109a@postgrespro.ru>  
  Fujii Masao [Thu, 28 Jul 2016 13:34:42 +0000 (22:34 +0900)]     Fix incorrect description of udt_privileges view in documentation.
 
 The description of udt_privileges view contained an incorrect copy-pasted word.
 
 Back-patch to 9.2 where udt_privileges view was added.
 
 Author: Alexander Law
 
 
    Tom Lane [Thu, 28 Jul 2016 06:08:52 +0000 (02:08 -0400)]     tqueue.c's record-typmod hashtables need the HASH_BLOBS option.
  The keys are integers, not strings.  The code accidentally worked on
 little-endian machines, at least up to 256 distinct record types within
 a session, but failed utterly on big-endian.  This was unexpectedly
 exposed by a test case added by commit 
4452000f3, which apparently is the
 only parallelizable query in the regression suite that uses more than one
 anonymous record type.  Fortunately, buildfarm member mandrill is
 big-endian and is running with force_parallel_mode on, so it failed.  
  Tom Lane [Wed, 27 Jul 2016 21:44:34 +0000 (17:44 -0400)]     Fix cost_rescan() to account for multi-batch hashing correctly.
 
 cost_rescan assumed that we don't need to rebuild the hash table when
 rescanning a hash join.  However, that's currently only true for
 single-batch joins; for a multi-batch join we must charge full freight.
 
 This probably has escaped notice because we'd be unlikely to put a hash
 join on the inside of a nestloop anyway.  Nonetheless, it's wrong.
 Fix in HEAD, but don't backpatch for fear of destabilizing plans in
 stable releases.
 
 
    Robert Haas [Wed, 27 Jul 2016 14:16:26 +0000 (10:16 -0400)]     Fix thinko in copyParamList.
 
 There's no point in consulting retval->paramMask; it's always NULL.
 Instead, we should consult from->paramMask.
 
 Reported by Andrew Gierth.
 
 
    Tom Lane [Wed, 27 Jul 2016 01:33:49 +0000 (21:33 -0400)]     Allow functions that return sets of tuples to return simple NULLs.
 
 ExecMakeTableFunctionResult(), which is used in SELECT FROM function(...)
 cases, formerly treated a simple NULL output from a function that both
 returnsSet and returnsTuple as a violation of the SRF protocol.  What seems
 better is to treat a NULL output as equivalent to ROW(NULL,NULL,...).
 Without this, cases such as SELECT FROM unnest(...) on an array of
 composite are vulnerable to unexpected and not-very-helpful failures.
 Old code comments here suggested an alternative of just ignoring
 simple-NULL outputs, but that doesn't seem very principled.
 
 This change had been hung up for a long time due to uncertainty about
 how much we wanted to buy into the equivalence of simple NULL and
 ROW(NULL,NULL,...).  I think that's been mostly resolved by the discussion
 around bug #14235, so let's go ahead and do it.
 
 Per bug #7808 from Joe Van Dyk.  Although this is a pretty old report,
 fixing it smells a bit more like a new feature than a bug fix, and the
 lack of other similar complaints suggests that we shouldn't take much risk
 of destabilization by back-patching.  (Maybe that could be revisited once
 this patch has withstood some field usage.)
 
 Andrew Gierth and Tom Lane
 
 Report: <E1TurJE-0006Es-TK@wrigleys.postgresql.org>
 
 
    Robert Haas [Tue, 26 Jul 2016 20:07:02 +0000 (16:07 -0400)]     Change various deparsing functions to return NULL for invalid input.
 
 Previously, some functions returned various fixed strings and others
 failed with a cache lookup error.  Per discussion, standardize on
 returning NULL.  Although user-exposed "cache lookup failed" error
 messages might normally qualify for bug-fix treatment, no back-patch;
 the risk of breaking user code which is accustomed to the current
 behavior seems too high.
 
 Michael Paquier
 
 
    Robert Haas [Tue, 26 Jul 2016 19:32:57 +0000 (15:32 -0400)]     Repair damage done by citext--1.1--1.2.sql.
 
 That script is incorrect in that it sets the combine function for
 max(citext) twice instead of setting the combine function for
 max(citext) once and the combine functon for min(citext) once.  The
 consequence is that if you install 1.0 or 1.1 and then update to 1.2,
 you end up with min(citext) not having a combine function, contrary to
 what was intended.  If you install 1.2 directly, you're OK.
 
 Fix things up by defining a new 1.3 version.  Upgrading from 1.2 to
 1.3 won't change anything for people who first installed the 1.2
 version, but people upgrading from 1.0 or 1.1 will get the right
 catalog contents once they reach 1.3.
 
 Report and patch by David Rowley, reviewed by Andreas Karlsson.
 
 
    Tom Lane [Tue, 26 Jul 2016 19:25:02 +0000 (15:25 -0400)]     Fix constant-folding of ROW(...) IS [NOT] NULL with composite fields.
  The SQL standard appears to specify that IS [NOT] NULL's tests of field
 nullness are non-recursive, ie, we shouldn't consider that a composite
 field with value ROW(NULL,NULL) is null for this purpose.
 ExecEvalNullTest got this right, but eval_const_expressions did not,
 leading to weird inconsistencies depending on whether the expression
 was such that the planner could apply constant folding. 
 Also, adjust the docs to mention that IS [NOT] DISTINCT FROM NULL can be
 used as a substitute test if a simple null check is wanted for a rowtype
 argument.  That motivated reordering things so that IS [NOT] DISTINCT FROM
 is described before IS [NOT] NULL.  In HEAD, I went a bit further and added
 a table showing all the comparison-related predicates. 
 Per bug #14235.  Back-patch to all supported branches, since it's certainly
 undesirable that constant-folding should change the semantics. 
 Report and patch by Andrew Gierth; assorted wordsmithing and revised
 regression test cases by me. 
 Report: <
20160708024746.1410.57282@wrigleys.postgresql.org>  
  Fujii Masao [Tue, 26 Jul 2016 12:17:38 +0000 (21:17 +0900)]     Fix improper example of using psql() function in TAP tests documentation.
 
 In an example of TAP test scripts, there is the test checking whether
 the result of the query is expected or not. But, in previous example,
 the exit code of psql instead of the query result was checked unexpectedly.
 
 Author: Ildar Musin
 
 
    Peter Eisentraut [Tue, 26 Jul 2016 02:07:53 +0000 (22:07 -0400)]     Fix typo
 
 
    Peter Eisentraut [Tue, 26 Jul 2016 02:07:44 +0000 (22:07 -0400)]     Message style improvements
 
 
    Fujii Masao [Mon, 25 Jul 2016 08:51:26 +0000 (17:51 +0900)]     Fix typo in comment.
 
 Author: Masahiko Sawada
 
 
    Alvaro Herrera [Mon, 25 Jul 2016 05:34:35 +0000 (01:34 -0400)]     Give recovery tests more time to finish
 
 These tests are currently only running in buildfarm member hamster,
 which is purposefully very slow.  This suite has failed a couple of
 times recently because of timeouts, so increase the allowed number of
 iterations to avoid spurious failures.
 
 Author: Michaël Paquier
 
 
    Noah Misch [Sun, 24 Jul 2016 00:30:03 +0000 (20:30 -0400)]     Make the AIX case of Makefile.shlib safe for parallel make.
 
 Use our typical approach, from src/backend/parser.  Back-patch to 9.1
 (all supported versions).
 
 
    Tom Lane [Sun, 24 Jul 2016 00:16:48 +0000 (20:16 -0400)]     Correctly set up aggregate FILTER expression in partial-aggregation plans.
  The aggfilter expression should be removed from the parent (combining)
 Aggref, since it's not supposed to apply the filter, and indeed cannot
 because any Vars used in the filter would not be available after the
 lower-level aggregation step.  Per report from Jeff Janes. 
 (This has been broken since the introduction of partial aggregation,
 I think.  The error became obvious after commit 
59a3795c2, when setrefs.c
 began processing the parent Aggref's fields normally and thus would detect
 such Vars.  The special-case coding previously used in setrefs.c skipped
 over the parent's aggfilter field without processing it.  That was broken
 in its own way because no other setrefs.c processing got applied either;
 though since the executor would not execute the filter expression, only
 initialize it, that oversight might not have had any visible symptoms at
 present.) 
 Report: <CAMkU=1xfuPf2edAe4ZGXTmJpU7jxuKukKyvNtEXwu35B7dvejg@mail.gmail.com>  
  Tom Lane [Fri, 22 Jul 2016 19:41:39 +0000 (15:41 -0400)]     Fix regression tests to work in Welsh locale.
 
 Welsh (cy_GB) apparently sorts 'dd' after 'f', creating problems
 analogous to the odd sorting of 'aa' in Danish.  Adjust regression
 test case to not use data that provokes that.
 
 Jeff Janes
 
 Patch: <CAMkU=1zx-pqcfSApL2pYDQurPOCfcYU0wJorsmY1OrYPiXRbLw@mail.gmail.com>
 
 
    Tom Lane [Fri, 22 Jul 2016 15:32:23 +0000 (11:32 -0400)]     Remove GetUserMappingId() and GetUserMappingById().
  These functions were added in commits 
fbe5a3fb7 and 
a104a017f,
 but commit 
45639a052 removed their only callers.  Put the related
 code in foreign.c back to the way it was in 9.5, to avoid pointless
 cross-version diffs. 
 Etsuro Fujita 
 Patch: <
d674a3f1-6b63-519c-ef3f-
f3188ed6a178@lab.ntt.co.jp>  
  Tom Lane [Thu, 21 Jul 2016 20:52:35 +0000 (16:52 -0400)]     Make contrib regression tests safe for Danish locale.
 
 In btree_gin and citext, avoid some not-particularly-interesting
 dependencies on the sorting of 'aa'.  In tsearch2, use COLLATE "C" to
 remove an uninteresting dependency on locale sort order (and thereby
 allow removal of a variant expected-file).
 
 Also, in citext, avoid assuming that lower('I') = 'i'.  This isn't relevant
 to Danish but it does fail in Turkish.
 
 
    Tom Lane [Thu, 21 Jul 2016 18:24:07 +0000 (14:24 -0400)]     Make pltcl regression tests safe for Danish locale.
 
 Another peculiarity of Danish locale is that it has an unusual idea
 of how to sort upper vs. lower case.  One of the pltcl test cases has
 an issue with that.  Now that COLLATE works in all supported branches,
 we can just change the test to be locale-independent, and get rid of
 the variant expected file that used to support non-C locales.
 
 
    Tom Lane [Thu, 21 Jul 2016 17:11:00 +0000 (13:11 -0400)]     Make core regression tests safe for Danish locale.
 
 Some tests added in 9.5 depended on 'aa' sorting before 'bb', which
 doesn't hold true in Danish.  Use slightly different test data to
 avoid the problem.
 
 Jeff Janes
 
 Report: <CAMkU=1w-cEDbA+XHdNb=YS_4wvZbs66Ni9KeSJKAJGNJyOsgQw@mail.gmail.com>
 
 
    Robert Haas [Thu, 21 Jul 2016 15:53:44 +0000 (11:53 -0400)]     Remove unused structure member.
 
 Michael Paquier
 
 
    Magnus Hagander [Wed, 20 Jul 2016 08:39:18 +0000 (10:39 +0200)]     Fix typos
 
 Alexander Law
 
 
    Tom Lane [Tue, 19 Jul 2016 22:41:30 +0000 (18:41 -0400)]     Remove very-obsolete estimates of shmem usage from postgresql.conf.sample.
  runtime.sgml used to contain a table of estimated shared memory consumption
 rates for max_connections and some other GUCs.  Commit 
390bfc643 removed
 that on the well-founded grounds that (a) we weren't maintaining the
 entries well and (b) it no longer mattered so much once we got out from
 under SysV shmem limits.  But it missed that there were even-more-obsolete
 versions of some of those numbers in comments in postgresql.conf.sample.
 Remove those too.  Back-patch to 9.3 where the aforesaid commit went in.  
  Kevin Grittner [Tue, 19 Jul 2016 21:25:53 +0000 (16:25 -0500)]     Add comment & docs about no vacuum truncation with sto.
 
 Omission noted by Andres Freund.
 
 
    Tom Lane [Mon, 18 Jul 2016 20:54:26 +0000 (16:54 -0400)]     Stamp 9.6beta3.
 
 
    Tom Lane [Mon, 18 Jul 2016 20:52:06 +0000 (16:52 -0400)]     Doc: improve discussion of plpgsql's GET DIAGNOSTICS, other minor fixes.
  9.4 added a second description of GET DIAGNOSTICS that was totally
 independent of the existing one, resulting in each description lying to the
 extent that it claimed the set of status items it described was complete.
 Fix that, and do some minor markup improvement. 
 Also some other small fixes per bug #14258 from Dilian Palauzov. 
 Discussion: <
20160718181437.1414.40802@wrigleys.postgresql.org>  
  Tom Lane [Mon, 18 Jul 2016 17:32:45 +0000 (13:32 -0400)]     Doc: fix table of BRIN operator strategy numbers.
 
 brin-extensibility-inclusion-table was confused in places about the
 difference between strategy 4 (RTOverRight) and strategy 5 (RTRight).
 
 Alexander Law
 
 
    Magnus Hagander [Mon, 18 Jul 2016 16:46:57 +0000 (18:46 +0200)]     Fix typos in comments and debug message
 
 Antonin Houska
 
 
    Peter Eisentraut [Mon, 18 Jul 2016 16:07:49 +0000 (12:07 -0400)]     Translation updates
  Source-Git-URL: git://git.postgresql.org/git/pgtranslation/messages.git
 Source-Git-Hash: 
3d71988dffd3c0798a8864c55ca4b7833b48abb1    Andres Freund [Mon, 18 Jul 2016 09:01:13 +0000 (02:01 -0700)]     Clear all-frozen visibilitymap status when locking tuples.
  Since 
a892234 & 
fd31cd265 the visibilitymap's freeze bit is used to
 avoid vacuuming the whole relation in anti-wraparound vacuums. Doing so
 correctly relies on not adding xids to the heap without also unsetting
 the visibilitymap flag.  Tuple locking related code has not done so. 
 To allow selectively resetting all-frozen - to avoid pessimizing
 heap_lock_tuple - allow to selectively reset the all-frozen with
 visibilitymap_clear(). To avoid having to use
 visibilitymap_get_status (e.g. via VM_ALL_FROZEN) inside a critical
 section, have visibilitymap_clear() return whether any bits have been
 reset. 
 There's a remaining issue (denoted by XXX): After the PageIsAllVisible()
 check in heap_lock_tuple() and heap_lock_updated_tuple_rec() the page
 status could theoretically change. Practically that currently seems
 impossible, because updaters will hold a page level pin already.  Due to
 the next beta coming up, it seems better to get the required WAL magic
 bump done before resolving this issue. 
 The added flags field fields to xl_heap_lock and xl_heap_lock_updated
 require bumping the WAL magic. Since there's already been a catversion
 bump since the last beta, that's not an issue.  
Reviewed-By: Robert Haas, Amit Kapila and Andres Freund Author: Masahiko Sawada, heavily revised by Andres Freund
 Discussion: CAEepm=3fWAbWryVW9swHyLTY4sXVf0xbLvXqOwUoDiNCx9mBjQ@mail.gmail.com
 Backpatch: -  
  Tom Lane [Sun, 17 Jul 2016 23:18:19 +0000 (19:18 -0400)]     Remove obsolete comment.
 
 Peter Geoghegan
 
 
    Tom Lane [Sun, 17 Jul 2016 22:42:31 +0000 (18:42 -0400)]     Establish conventions about global object names used in regression tests.
  To ensure that "make installcheck" can be used safely against an existing
 installation, we need to be careful about what global object names
 (database, role, and tablespace names) we use; otherwise we might
 accidentally clobber important objects.  There's been a weak consensus that
 test databases should have names including "regression", and that test role
 names should start with "regress_", but we didn't have any particular rule
 about tablespace names; and neither of the other rules was followed with
 any consistency either. 
 This commit moves us a long way towards having a hard-and-fast rule that
 regression test databases must have names including "regression", and that
 test role and tablespace names must start with "regress_".  It's not
 completely there because I did not touch some test cases in rolenames.sql
 that test creation of special role names like "session_user".  That will
 require some rethinking of exactly what we want to test, whereas the intent
 of this patch is just to hit all the cases in which the needed renamings
 are cosmetic. 
 There is no enforcement mechanism in this patch either, but if we don't
 add one we can expect that the tests will soon be violating the convention
 again.  Again, that's not such a cosmetic change and it will require
 discussion.  (But I did use a quick-hack enforcement patch to find these
 cases.) 
 Discussion: <16638.
1468620817@sss.pgh.pa.us>  
  Peter Eisentraut [Sun, 17 Jul 2016 21:01:07 +0000 (17:01 -0400)]     doc: Supply XSLT template for superscript element in man pages
 
 The default is no decoration, which looks confusing, for example on the
 CREATE SEQUENCE man page.
 
 
    Peter Eisentraut [Sun, 17 Jul 2016 13:15:37 +0000 (09:15 -0400)]     Use correct symbol for minimum int64 value
 
 The old code used SEQ_MINVALUE to get the smallest int64 value.  This
 was done as a convenience to avoid having to deal with INT64_IS_BUSTED,
 but that is obsolete now.  Also, it is incorrect because the smallest
 int64 value is actually SEQ_MINVALUE-1.  Fix by using PG_INT64_MIN.
 
 
    Stephen Frost [Sun, 17 Jul 2016 13:04:46 +0000 (09:04 -0400)]     Correctly dump database and tablespace ACLs
 
 Dump out the appropriate GRANT/REVOKE commands for databases and
 tablespaces from pg_dumpall to replicate what the current state is.
 
 This was broken during the changes to buildACLCommands for 9.6+
 servers for pg_init_privs.
 
 
    Tom Lane [Sat, 16 Jul 2016 22:39:47 +0000 (18:39 -0400)]     Update 9.6 release notes through today.
 
 
    Tom Lane [Sat, 16 Jul 2016 20:25:43 +0000 (16:25 -0400)]     Improve test case exercising the sorting path for hash index build.
 
 On second thought, we should probably do at least a minimal check that
 the constructed index is valid, since the big problem with the most
 recent breakage was not whether the sorting was correct but that the
 index had incorrect hash codes placed in it.
 
 
    Tom Lane [Sat, 16 Jul 2016 19:30:15 +0000 (15:30 -0400)]     Add regression test case exercising the sorting path for hash index build.
 
 We've broken this code path at least twice in the past, so it's prudent
 to have a test case that covers it.  To allow exercising the code path
 without creating a very large (and slow to run) test case, redefine the
 sort threshold to be bounded by maintenance_work_mem as well as the number
 of available buffers.  While at it, fix an ancient oversight that when
 building a temp index, the number of available buffers is not NBuffers but
 NLocBuffer.  Also, if assertions are enabled, apply a direct test that the
 sort actually does return the tuples in the expected order.
 
 Peter Geoghegan
 
 Patch: <CAM3SWZTBAo4hjbBd780+MrOKiKp_TMo1N3A0Rw9_im8gbD7fQA@mail.gmail.com>
 
 
    Tom Lane [Sat, 16 Jul 2016 18:42:37 +0000 (14:42 -0400)]     Fix crash in close_ps() for NaN input coordinates.
 
 The Assert() here seems unreasonably optimistic.  Andreas Seltenreich
 found that it could fail with NaNs in the input geometries, and it
 seems likely to me that it might fail in corner cases due to roundoff
 error, even for ordinary input values.  As a band-aid, make the function
 return SQL NULL instead of crashing.
 
 Report: <87d1md1xji.fsf@credativ.de>
 
 
    Tom Lane [Sat, 16 Jul 2016 18:12:44 +0000 (14:12 -0400)]     Clarify usage of clientcert authentication option.
  For some reason this option wasn't discussed at all in client-auth.sgml.
 Document it there, and be more explicit about its relationship to the
 "cert" authentication method.  Per gripe from Srikanth Venkatesh. 
 I failed to resist the temptation to do some minor wordsmithing in the
 same area, too. 
 Discussion: <
20160713110357.1410.30407@wrigleys.postgresql.org>  
  Tom Lane [Sat, 16 Jul 2016 16:49:14 +0000 (12:49 -0400)]     Advance PG_CONTROL_VERSION.
  This should have been done in commit 
73c986adde5d73a5 which added several
 new fields to pg_control, and again in commit 
5028f22f6eb05798 which
 changed the CRC algorithm, but it wasn't.  It's far too late to fix it in
 the 9.5 branch, but let's do so in 9.6, so that if a 9.6 postmaster is
 started against a 9.4-era pg_control it will complain about a versioning
 problem rather than a CRC failure.  We already forced initdb/pg_upgrade
 for beta3, so there's no downside to doing this now. 
 Discussion: <7615.
1468598094@sss.pgh.pa.us>  
  Andres Freund [Sat, 16 Jul 2016 00:49:48 +0000 (17:49 -0700)]     Fix torn-page, unlogged xid and further risks from heap_update().
  When heap_update needs to look for a page for the new tuple version,
 because the current one doesn't have sufficient free space, or when
 columns have to be processed by the tuple toaster, it has to release the
 lock on the old page during that. Otherwise there'd be lock ordering and
 lock nesting issues. 
 To avoid concurrent sessions from trying to update / delete / lock the
 tuple while the page's content lock is released, the tuple's xmax is set
 to the current session's xid. 
 That unfortunately was done without any WAL logging, thereby violating
 the rule that no XIDs may appear on disk, without an according WAL
 record.  If the database were to crash / fail over when the page level
 lock is released, and some activity lead to the page being written out
 to disk, the xid could end up being reused; potentially leading to the
 row becoming invisible. 
 There might be additional risks by not having t_ctid point at the tuple
 itself, without having set the appropriate lock infomask fields. 
 To fix, compute the appropriate xmax/infomask combination for locking
 the tuple, and perform WAL logging using the existing XLOG_HEAP_LOCK
 record. That allows the fix to be backpatched. 
 This issue has existed for a long time. There appears to have been
 partial attempts at preventing dangers, but these never have fully been
 implemented, and were removed a long time ago, in 
11919160 (cf. HEAP_XMAX_UNLOGGED). 
 In master / 9.6, there's an additional issue, namely that the
 visibilitymap's freeze bit isn't reset at that point yet. Since that's a
 new issue, introduced only in 
a892234f830, that'll be fixed in a
 separate commit. 
 Author: Masahiko Sawada and Andres Freund 
Reported-By: Different aspects by Thomas Munro, Noah Misch, and others Discussion: CAEepm=3fWAbWryVW9swHyLTY4sXVf0xbLvXqOwUoDiNCx9mBjQ@mail.gmail.com
 Backpatch: 9.1/all supported versions  
  Andres Freund [Fri, 15 Jul 2016 21:37:06 +0000 (14:37 -0700)]     Make HEAP_LOCK/HEAP2_LOCK_UPDATED replay reset HEAP_XMAX_INVALID.
  0ac5ad5 started to compress infomask bits in WAL records. Unfortunately
 the replay routines for XLOG_HEAP_LOCK/XLOG_HEAP2_LOCK_UPDATED forgot to
 reset the HEAP_XMAX_INVALID (and some other) hint bits. 
 Luckily that's not problematic in the majority of cases, because after a
 crash/on a standby row locks aren't meaningful. Unfortunately that does
 not hold true in the presence of prepared transactions. This means that
 after a crash, or after promotion, row level locks held by a prepared,
 but not yet committed, prepared transaction might not be enforced. 
 Discussion: 
20160715192319.ubfuzim4zv3rqnxv@alap3.anarazel.de
 Backpatch: 9.3, the oldest branch on which 
0ac5ad5 is present.  
  Tom Lane [Fri, 15 Jul 2016 21:22:56 +0000 (17:22 -0400)]     Avoid invalidating all foreign-join cached plans when user mappings change.
  We must not push down a foreign join when the foreign tables involved
 should be accessed under different user mappings.  Previously we tried
 to enforce that rule literally during planning, but that meant that the
 resulting plans were dependent on the current contents of the
 pg_user_mapping catalog, and we had to blow away all cached plans
 containing any remote join when anything at all changed in pg_user_mapping.
 This could have been improved somewhat, but the fact that a syscache inval
 callback has very limited info about what changed made it hard to do better
 within that design.  Instead, let's change the planner to not consider user
 mappings per se, but to allow a foreign join if both RTEs have the same
 checkAsUser value.  If they do, then they necessarily will use the same
 user mapping at runtime, and we don't need to know specifically which one
 that is.  Post-plan-time changes in pg_user_mapping no longer require any
 plan invalidation. 
 This rule does give up some optimization ability, to wit where two foreign
 table references come from views with different owners or one's from a view
 and one's directly in the query, but nonetheless the same user mapping
 would have applied.  We'll sacrifice the first case, but to not regress
 more than we have to in the second case, allow a foreign join involving
 both zero and nonzero checkAsUser values if the nonzero one is the same as
 the prevailing effective userID.  In that case, mark the plan as only
 runnable by that userID. 
 The plancache code already had a notion of plans being userID-specific,
 in order to support RLS.  It was a little confused though, in particular
 lacking clarity of thought as to whether it was the rewritten query or just
 the finished plan that's dependent on the userID.  Rearrange that code so
 that it's clearer what depends on which, and so that the same logic applies
 to both RLS-injected role dependency and foreign-join-injected role
 dependency. 
 Note that this patch doesn't remove the other issue mentioned in the
 original complaint, which is that while we'll reliably stop using a foreign
 join if it's disallowed in a new context, we might fail to start using a
 foreign join if it's now allowed, but we previously created a generic
 cached plan that didn't use one.  It was agreed that the chance of winning
 that way was not high enough to justify the much larger number of plan
 invalidations that would have to occur if we tried to cause it to happen. 
 In passing, clean up randomly-varying spelling of EXPLAIN commands in
 postgres_fdw.sql, and fix a COSTS ON example that had been allowed to
 leak into the committed tests. 
 This reverts most of commits 
fbe5a3fb7 and 
5d4171d1c, which were the
 previous attempt at ensuring we wouldn't push down foreign joins that
 span permissions contexts. 
 Etsuro Fujita and Tom Lane 
 Discussion: <
d49c1e5b-f059-20f4-c132-
e9752ee0113e@lab.ntt.co.jp>  
  Alvaro Herrera [Fri, 15 Jul 2016 18:17:20 +0000 (14:17 -0400)]     Avoid serializability errors when locking a tuple with a committed update
  When key-share locking a tuple that has been not-key-updated, and the
 update is a committed transaction, in some cases we raised
 serializability errors:
     ERROR:  could not serialize access due to concurrent update 
 Because the key-share doesn't conflict with the update, the error is
 unnecessary and inconsistent with the case that the update hasn't
 committed yet.  This causes problems for some usage patterns, even if it
 can be claimed that it's sufficient to retry the aborted transaction:
 given a steady stream of updating transactions and a long locking
 transaction, the long transaction can be starved indefinitely despite
 multiple retries. 
 To fix, we recognize that HeapTupleSatisfiesUpdate can return
 HeapTupleUpdated when an updating transaction has committed, and that we
 need to deal with that case exactly as if it were a non-committed
 update: verify whether the two operations conflict, and if not, carry on
 normally.  If they do conflict, however, there is a difference: in the
 HeapTupleBeingUpdated case we can just sleep until the concurrent
 transaction is gone, while in the HeapTupleUpdated case this is not
 possible and we must raise an error instead. 
 Per trouble report from Olivier Dony. 
 In addition to a couple of test cases that verify the changed behavior,
 I added a test case to verify the behavior that remains unchanged,
 namely that errors are raised when a update that modifies the key is
 used.  That must still generate serializability errors.  One
 pre-existing test case changes behavior; per discussion, the new
 behavior is actually the desired one. 
 Discussion: https://www.postgresql.org/message-id/
560AA479.
4080807@odoo.com
   https://www.postgresql.org/message-id/
20151014164844.3019.25750@wrigleys.postgresql.org 
 Backpatch to 9.3, where the problem appeared.  
  Teodor Sigaev [Fri, 15 Jul 2016 17:01:41 +0000 (20:01 +0300)]     Fix parsing NOT sequence in tsquery
  Digging around bug #14245 I found that commit 
6734a1cacd44f5b731933cbc93182b135b167d0c missed that NOT operation is
 right associative in opposite to all other. This miss is resposible for
 tsquery parser fail on sequence of NOT operations  
  Teodor Sigaev [Fri, 15 Jul 2016 16:22:18 +0000 (19:22 +0300)]     Fix nested NOT operation cleanup in tsquery.
 
 During normalization of tsquery tree it tries to simplify nested NOT
 operations but there it's obvioulsy missed that subsequent node could be
 a leaf node (value node)
 
 Bug #14245: Segfault on weird to_tsquery
 Reported by David Kellum.
 
 
    Tom Lane [Fri, 15 Jul 2016 14:58:39 +0000 (10:58 -0400)]     Improve documentation about search_path for SECURITY DEFINER functions.
  Clarify that the reason for recommending that pg_temp be put last is to
 prevent temporary tables from capturing unqualified table names.  Per
 discussion with Albe Laurenz. 
 Discussion: <
A737B7A37273E048B164557ADEF4A58B5386C6E1@ntex2010i.host.magwien.gv.at>  
  Peter Eisentraut [Fri, 15 Jul 2016 02:48:26 +0000 (22:48 -0400)]     Adjust spellings of forms of "cancel"
 
 
    Peter Eisentraut [Fri, 15 Jul 2016 02:28:58 +0000 (22:28 -0400)]     doc: Fix typos
 
 From: Alexander Law <exclusion@gmail.com>
 
 
    Tom Lane [Thu, 14 Jul 2016 22:45:59 +0000 (18:45 -0400)]     Fix GiST index build for NaN values in geometric types.
  GiST index build could go into an infinite loop when presented with boxes
 (or points, circles or polygons) containing NaN component values.  This
 happened essentially because the code assumed that x == x is true for any
 "double" value x; but it's not true for NaNs.  The looping behavior was not
 the only problem though: we also attempted to sort the items using simple
 double comparisons.  Since NaNs violate the trichotomy law, qsort could
 (in principle at least) get arbitrarily confused and mess up the sorting of
 ordinary values as well as NaNs.  And we based splitting choices on box size
 calculations that could produce NaNs, again resulting in undesirable
 behavior. 
 To fix, replace all comparisons of doubles in this logic with
 float8_cmp_internal, which is NaN-aware and is careful to sort NaNs
 consistently, higher than any non-NaN.  Also rearrange the box size
 calculation to not produce NaNs; instead it should produce an infinity
 for a box with NaN on one side and not-NaN on the other. 
 I don't by any means claim that this solves all problems with NaNs in
 geometric values, but it should at least make GiST index insertion work
 reliably with such data.  It's likely that the index search side of things
 still needs some work, and probably regular geometric operations too.
 But with this patch we're laying down a convention for how such cases
 ought to behave. 
 Per bug #14238 from Guang-Dih Lei.  Back-patch to 9.2; the code used before
 commit 
7f3bd86843e5aad8 is quite different and doesn't lock up on my simple
 test case, nor on the submitter's dataset. 
 Report: <
20160708151747.1426.60150@wrigleys.postgresql.org>
 Discussion: <28685.
1468246504@sss.pgh.pa.us>  
  Magnus Hagander [Thu, 14 Jul 2016 13:39:01 +0000 (15:39 +0200)]     Remove reference to range mode in pg_xlogdump error
 
 pg_xlogdump doesn't have any other mode, so it's just confusing to
 include this in the error message as it indicates there might be another
 mode.
 
 
    Tom Lane [Wed, 13 Jul 2016 19:36:25 +0000 (15:36 -0400)]     Minor test adjustment.
  Dept of second thoughts: given the RESET SESSION AUTHORIZATION that
 was just added by commit 
cec550139, we don't need the reconnection
 that used to be here.  Might as well buy back a few microseconds.  
  Tom Lane [Wed, 13 Jul 2016 19:23:56 +0000 (15:23 -0400)]     Add a regression test case to improve code coverage for tuplesort.
  Test the external-sort code path in CLUSTER for two different scenarios:
 multiple-pass external sorting, and the best case for replacement
 selection, where only one run is produced, so that no merge is required.
 This test would have caught the bug fixed in commit 
1b0fc8507, at
 least when run with valgrind enabled. 
 In passing, add a short-circuit test in plan_cluster_use_sort() to make
 dead certain that it selects sorting when enable_indexscan is off.  As
 things stand, that would happen anyway, but it seems like good future
 proofing for this test. 
 Peter Geoghegan 
 Discussion: <CAM3SWZSgxehDkDMq1FdiW2A0Dxc79wH0hz1x-TnGy=1BXEL+nw@mail.gmail.com>  
  Tom Lane [Wed, 13 Jul 2016 15:17:15 +0000 (11:17 -0400)]     Fix obsolete header-file reference in pg_buffercache docs.
  Commit 
2d0019049 moved enum ForkNumber from relfilenode.h into relpath.h,
 but missed updating this documentation reference. 
 Alexander Law  
  Stephen Frost [Wed, 13 Jul 2016 13:17:35 +0000 (09:17 -0400)]     Add missing hyphen
 
 Pointed out by Alexander Law
 
 
    Peter Eisentraut [Tue, 12 Jul 2016 22:37:34 +0000 (18:37 -0400)]     Add serial comma and quoting to message
 
 
    Peter Eisentraut [Tue, 12 Jul 2016 22:10:16 +0000 (18:10 -0400)]     Put some things in a better order in psql help
 
 
    Tom Lane [Tue, 12 Jul 2016 22:06:50 +0000 (18:06 -0400)]     Allow IMPORT FOREIGN SCHEMA within pl/pgsql.
 
 Since IMPORT FOREIGN SCHEMA has an INTO clause, pl/pgsql needs to be
 aware of that and avoid capturing the INTO as an INTO-variables clause.
 This isn't hard, though it's annoying to have to make IMPORT a plpgsql
 keyword just for this.  (Fortunately, we have the infrastructure now
 to make it an unreserved keyword, so at least this shouldn't break any
 existing pl/pgsql code.)
 
 Per report from Merlin Moncure.  Back-patch to 9.5 where IMPORT FOREIGN
 SCHEMA was introduced.
 
 Report: <CAHyXU0wpHf2bbtKGL1gtUEFATCY86r=VKxfcACVcTMQ70mCyig@mail.gmail.com>
 
 
    Peter Eisentraut [Tue, 12 Jul 2016 17:30:48 +0000 (13:30 -0400)]     doc: Fix typo
 
 From: Alexander Law <exclusion@gmail.com>
 
 
    Tom Lane [Mon, 11 Jul 2016 22:14:29 +0000 (18:14 -0400)]     Print a given subplan only once in EXPLAIN.
 
 We have, for a very long time, allowed the same subplan (same member of the
 PlannedStmt.subplans list) to be referenced by more than one SubPlan node;
 this avoids problems for cases such as subplans within an IndexScan's
 indxqual and indxqualorig fields.  However, EXPLAIN had not gotten the memo
 and would print each reference as though it were an independent identical
 subplan.  To fix, track plan_ids of subplans we've printed and don't print
 the same plan_id twice.  Per report from Pavel Stehule.
 
 BTW: the particular case of IndexScan didn't cause visible duplication
 in a plain EXPLAIN, only EXPLAIN ANALYZE, because in the former case we
 short-circuit executor startup before the indxqual field is processed by
 ExecInitExpr.  That seems like it could easily lead to other EXPLAIN
 problems in future, but it's not clear how to avoid it without breaking
 the "EXPLAIN a plan using hypothetical indexes" use-case.  For now I've
 left that issue alone.
 
 Although this is a longstanding bug, it's purely cosmetic (no great harm
 is done by the repeat printout) and we haven't had field complaints before.
 So I'm hesitant to back-patch it, especially since there is some small risk
 of ABI problems due to the need to add a new field to ExplainState.
 
 In passing, rearrange order of fields in ExplainState to be less random,
 and update some obsolete comments about when/where to initialize them.
 
 Report: <CAFj8pRAimq+NK-menjt+3J4-LFoodDD8Or6=Lc_stcFD+eD4DA@mail.gmail.com>
 
 
    Tom Lane [Mon, 11 Jul 2016 16:35:03 +0000 (12:35 -0400)]     Improve output of psql's \df+ command.
 
 Add display of proparallel (parallel-safety) when the server is >= 9.6,
 and display of proacl (access privileges) for all server versions.
 Minor tweak of column ordering to keep related columns together.
 
 Michael Paquier
 
 Discussion: <CAB7nPqTR3Vu3xKOZOYqSm-+bSZV0kqgeGAXD6w5GLbkbfd5Q6w@mail.gmail.com>
 
 
    Peter Eisentraut [Mon, 11 Jul 2016 16:10:10 +0000 (12:10 -0400)]     doc: Update URL for PL/PHP
 
 
    Magnus Hagander [Mon, 11 Jul 2016 11:53:17 +0000 (13:53 +0200)]     Add missing newline in error message
 
 
    Magnus Hagander [Mon, 11 Jul 2016 10:02:31 +0000 (12:02 +0200)]     Fix start WAL filename for concurrent backups from standby
 
 On a standby, ThisTimelineID is always 0, so we would generate a
 filename in timeline 0 even for other timelines. Instead, use starttli
 which we have retreived from the controlfile.
 
 Report by: Francesco Canovai in bug #14230
 Author: Marco Nenciarini
 Reviewed by: Michael Paquier and Amit Kapila
 
 
    Tom Lane [Sun, 10 Jul 2016 16:44:20 +0000 (12:44 -0400)]     Revert "Add some temporary code to record stack usage at server process exit."
  This reverts commit 
88cf37d2a86d5b66380003d7c3384530e3f91e40 as well
 as follow-on commits 
ea9c4a16d5ad88a1d28d43ef458e3209b53eb106 and 
c57562725d219c4249b82f4a4fb5aaeee3ae0d53.  We've learned about as much
 as we can from the buildfarm.  
  Tom Lane [Sat, 9 Jul 2016 20:47:38 +0000 (16:47 -0400)]     Fix TAP tests and MSVC scripts for pathnames with spaces.
  Change assorted places in our Perl code that did things like
	system("prog $path/file");
 to do it more like
	system('prog', "$path/file");
 which is safe against spaces and other special characters in the path
 variable.  The latter was already the prevailing style, but a few bits
 of code hadn't gotten this memo.  Back-patch to 9.4 as relevant. 
 Michael Paquier, Kyotaro Horiguchi 
 Discussion: <
20160704.160213.
111134711.horiguchi.kyotaro@lab.ntt.co.jp>  
  Tom Lane [Sat, 9 Jul 2016 19:00:22 +0000 (15:00 -0400)]     Improve recording of IA64 stack data.
 
 Examination of the results from anole and gharial suggests that we're
 only managing to track the size of one of the two stacks of IA64 machines.
 Some googling gave the answer: on HPUX11, the register stack is reported
 as a page type I don't see in pstat.h on my HPUX10 box.  Let's try
 testing for that.
 
 
    Tom Lane [Fri, 8 Jul 2016 20:38:22 +0000 (16:38 -0400)]     Add more temporary code to record stack usage at server process exit.
  After a look at preliminary results from commit 
88cf37d2a86d5b66,
 I realized it'd be a good idea to spew out the maximum depth measurement
 seen by check_stack_depth.  So add some quick-n-dirty code to do that.
 Like the previous commit, this will be reverted once we've gathered
 a set of buildfarm runs with it.  
  Tom Lane [Fri, 8 Jul 2016 17:23:09 +0000 (13:23 -0400)]     Docs: minor improvements for documentation about plpgsql triggers.
 
 Fabien Coelho, some further wordsmithing by me
 
 
    Tom Lane [Fri, 8 Jul 2016 16:46:04 +0000 (12:46 -0400)]     Docs: improve examples about not repeating table name in UPDATE ... SET.
 
 Alexander Law
 
 
    Tom Lane [Fri, 8 Jul 2016 16:40:51 +0000 (12:40 -0400)]     Docs: typo fix.
 
 Etsuro Fujita
 
 
    Tom Lane [Fri, 8 Jul 2016 16:01:08 +0000 (12:01 -0400)]     Add some temporary code to record stack usage at server process exit.
 
 This patch is meant to gather information from the buildfarm members, and
 will be reverted in a day or so.  The idea is to try to find out the
 high-water stack consumption while running the regression tests,
 particularly on IA64 which is suspected to use much more stack than other
 architectures.  On machines with pmap, we can use that; but the IA64 farm
 members are running HPUX, so also include some bespoke code for HPUX.
 (I've tested the latter on HPUX 10/HPPA; not entirely sure it will work
 on HPUX 11/IA64, but we'll soon find out.)
 
 Discussion: <CAM-w4HMwwcwaVvYcAH0_FGtG5GeXdYVRfvG81pXnSJWHnCfosQ@mail.gmail.com>
 
 
    Stephen Frost [Fri, 8 Jul 2016 13:26:53 +0000 (09:26 -0400)]     Typo fix, buils -> builds
 
 Pointed out by Alexander Law.
 
 
    Magnus Hagander [Fri, 8 Jul 2016 07:06:45 +0000 (10:06 +0300)]     Fix missing parenthesis in docs
 
 Author: Alexander Law
 
 
    Robert Haas [Thu, 7 Jul 2016 20:13:37 +0000 (16:13 -0400)]     Fix typo in comment.
 
 Amit Langote
 
 
    Robert Haas [Thu, 7 Jul 2016 17:47:16 +0000 (13:47 -0400)]     Properly adjust pointers when tuples are moved during CLUSTER.
  Otherwise, when we abandon incremental memory accounting and use
 batch allocation for the final merge pass, we might crash.  This
 has been broken since 
0011c0091e886b874e485a46ff2c94222ffbf550. 
 Peter Geoghegan, tested by Noah Misch  
  Robert Haas [Thu, 7 Jul 2016 17:46:51 +0000 (13:46 -0400)]     Fix a prototype which is inconsistent with the function definition.
 
 Peter Geoghegan
 
 
    Robert Haas [Thu, 7 Jul 2016 15:18:51 +0000 (11:18 -0400)]     Clarify resource utilization of parallel query.
 
 temp_file_limit is a per-process limit, not a per-session limit across
 all cooperating parallel processes; change wording accordingly, per a
 suggestion from Tom Lane.
 
 Also, document under max_parallel_workers_per_gather the fact that each
 process involved in a parallel query may use as many resources as a
 separate session.  Caveat emptor.
 
 Per a complaint from Peter Geoghegan.