Robert Haas [Fri, 19 Sep 2014 17:07:24 +0000 (13:07 -0400)]     doc: Use <literal> and all-caps for READ COMMITTED isolation level.
 
 The documentation overall is not entirely consistent about how we do
 this, but this is consistent with other usages within lock.sgml.
 
 Etsuro Fujita
 
 
    Robert Haas [Fri, 19 Sep 2014 16:39:00 +0000 (12:39 -0400)]     Add a fast pre-check for equality of equal-length strings.
 
 Testing reveals that that doing a memcmp() before the strcoll() costs
 practically nothing, at least on the systems we tested, and it speeds
 up sorts containing many equal strings significatly.
 
 Peter Geoghegan.  Review by myself and Heikki Linnakangas.  Comments
 rewritten by me.
 
 
    Stephen Frost [Fri, 19 Sep 2014 15:18:35 +0000 (11:18 -0400)]     Row-Level Security Policies (RLS)
 
 Building on the updatable security-barrier views work, add the
 ability to define policies on tables to limit the set of rows
 which are returned from a query and which are allowed to be added
 to a table.  Expressions defined by the policy for filtering are
 added to the security barrier quals of the query, while expressions
 defined to check records being added to a table are added to the
 with-check options of the query.
 
 New top-level commands are CREATE/ALTER/DROP POLICY and are
 controlled by the table owner.  Row Security is able to be enabled
 and disabled by the owner on a per-table basis using
 ALTER TABLE .. ENABLE/DISABLE ROW SECURITY.
 
 Per discussion, ROW SECURITY is disabled on tables by default and
 must be enabled for policies on the table to be used.  If no
 policies exist on a table with ROW SECURITY enabled, a default-deny
 policy is used and no records will be visible.
 
 By default, row security is applied at all times except for the
 table owner and the superuser.  A new GUC, row_security, is added
 which can be set to ON, OFF, or FORCE.  When set to FORCE, row
 security will be applied even for the table owner and superusers.
 When set to OFF, row security will be disabled when allowed and an
 error will be thrown if the user does not have rights to bypass row
 security.
 
 Per discussion, pg_dump sets row_security = OFF by default to ensure
 that exports and backups will have all data in the table or will
 error if there are insufficient privileges to bypass row security.
 A new option has been added to pg_dump, --enable-row-security, to
 ask pg_dump to export with row security enabled.
 
 A new role capability, BYPASSRLS, which can only be set by the
 superuser, is added to allow other users to be able to bypass row
 security using row_security = OFF.
 
 Many thanks to the various individuals who have helped with the
 design, particularly Robert Haas for his feedback.
 
 Authors include Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean
 Rasheed, with additional changes and rework by me.
 
 Reviewers have included all of the above, Greg Smith,
 Jeff McCormick, and Robert Haas.
 
 
    Andres Freund [Fri, 19 Sep 2014 15:04:00 +0000 (17:04 +0200)]     Mark x86's memory barrier inline assembly as clobbering the cpu flags.
  x86's memory barrier assembly was marked as clobbering "memory" but
 not "cc" even though 'addl' sets various flags. As it turns out gcc on
 x86 implicitly assumes "cc" on every inline assembler statement, so
 it's not a bug. But as that's poorly documented and might get copied
 to architectures or compilers where that's not the case, it seems
 better to be precise. 
 Discussion: 
20140919100016.GH4277@alap3.anarazel.de 
 To keep the code common, backpatch to 9.2 where explicit memory
 barriers were introduced.  
     Andres Freund [Fri, 19 Sep 2014 14:41:54 +0000 (16:41 +0200)]     Avoid 'clobbered by longjmp' warning in psql/copy.c.
  This was introduced in 
51bb79569f934ad2135c2ff859c61b9ab8d51750.  
     Andres Freund [Fri, 19 Sep 2014 14:33:16 +0000 (16:33 +0200)]     Add the capability to display summary statistics to pg_xlogdump.
  The new --stats/--stats=record options to pg_xlogdump display per
 rmgr/per record statistics about the parsed WAL. This is useful to
 understand what the WAL primarily consists of, to allow targeted
 optimizations on application, configuration, and core code level. 
 It is likely that we will want to fine tune the statistics further,
 but the feature already is quite helpful. 
 Author: Abhijit Menon-Sen, slightly editorialized by me 
Reviewed-By: Andres Freund, Dilip Kumar and Furuya Osamu Discussion: 
20140604104716.GA3989@toroid.org  
     Andres Freund [Fri, 19 Sep 2014 13:17:12 +0000 (15:17 +0200)]     Add rmgr callback to name xlog record types for display purposes.
  This is primarily useful for the upcoming pg_xlogdump --stats feature,
 but also allows to remove some duplicated code in the rmgr_desc
 routines. 
 Due to the separation and harmonization, the output of dipsplayed
 records changes somewhat. But since this isn't enduser oriented
 content that's ok. 
 It's potentially desirable to further change pg_xlogdump's display of
 records. It previously wasn't possible to show the record type
 separately from the description forcing it to be in the last
 column. But that's better done in a separate commit. 
 Author: Abhijit Menon-Sen, slightly editorialized by me 
Reviewed-By: Álvaro Herrera, Andres Freund, and Heikki Linnakangas Discussion: 
20140604104716.GA3989@toroid.org  
     Andres Freund [Thu, 18 Sep 2014 07:59:10 +0000 (09:59 +0200)]     Fix configure check for %z printf support after INT64_MODIFIER changes.
  The PGAC_FUNC_SNPRINTF_SIZE_T_SUPPORT test was broken by 
ce486056ecd28050. Among others it made the UINT64_FORMAT macro to be
 defined in c.h, instead of directly being defined by configure. 
 This lead to the replacement printf being used on all platforms for a
 while. Which seems to work, because this was only used due to
 different profiles ;) 
 Fix by relying on INT64_MODIFIER instead.  
     Peter Eisentraut [Wed, 17 Sep 2014 04:54:12 +0000 (00:54 -0400)]     Fix TAP checks when current directory name contains spaces
 
 Add some quotes in the makefile snippet that creates the temporary
 installation, so that it can handle spaces in the directory name and
 possibly some other oddities.
 
 
    Heikki Linnakangas [Tue, 16 Sep 2014 06:11:49 +0000 (09:11 +0300)]     Fix the return type of GIN triConsistent support functions to "char".
 
 They were marked to return a boolean, but they actually return a
 GinTernaryValue, which is more like a "char". It makes no practical
 difference, as the triConsistent functions cannot be called directly from
 SQL because they have "internal" arguments, but this nevertheless seems
 more correct.
 
 Also fix the GinTernaryValue name in the documentation. I renamed the enum
 earlier, but neglected the docs.
 
 Alexander Korotkov. This is new in 9.4, so backpatch there.
 
 
    Heikki Linnakangas [Mon, 15 Sep 2014 13:14:24 +0000 (16:14 +0300)]     Follow the RFCs more closely in libpq server certificate hostname check.
 
 The RFCs say that the CN must not be checked if a subjectAltName extension
 of type dNSName is present. IOW, if subjectAltName extension is present,
 but there are no dNSNames, we can still check the CN.
 
 Alexey Klyukin
 
 
    Heikki Linnakangas [Sun, 14 Sep 2014 13:45:08 +0000 (16:45 +0300)]     Fix pointer type in size passed to memset.
 
 Pointers are all the same size, so it makes no practical difference, but
 let's be tidy.
 
 Found by Coverity, noted off-list by Tom Lane.
 
 
    Tom Lane [Sun, 14 Sep 2014 01:01:49 +0000 (21:01 -0400)]     Invent PGC_SU_BACKEND and mark log_connections/log_disconnections that way.
 
 This new GUC context option allows GUC parameters to have the combined
 properties of PGC_BACKEND and PGC_SUSET, ie, they don't change after
 session start and non-superusers can't change them.  This is a more
 appropriate choice for log_connections and log_disconnections than their
 previous context of PGC_BACKEND, because we don't want non-superusers
 to be able to affect whether their sessions get logged.
 
 Note: the behavior for log_connections is still a bit odd, in that when
 a superuser attempts to set it from PGOPTIONS, the setting takes effect
 but it's too late to enable or suppress connection startup logging.
 It's debatable whether that's worth fixing, and in any case there is
 a reasonable argument for PGC_SU_BACKEND to exist.
 
 In passing, re-pgindent the files touched by this commit.
 
 Fujii Masao, reviewed by Joe Conway and Amit Kapila
 
 
    Peter Eisentraut [Sun, 14 Sep 2014 00:14:17 +0000 (20:14 -0400)]     Run missing documentation tools through "missing"
 
 Instead of just erroring out when a tool is missing, wrap the call with
 the "missing" script that we are already using for bison, flex, and
 perl, so that the users get a useful error message.
 
 
    Peter Eisentraut [Sat, 13 Sep 2014 19:18:49 +0000 (15:18 -0400)]     pg_ctl: Add tests for behavior with nonexistent data directory
  This behavior was made more precise in commit 
11d205e2bd66cefe0b7d69c02e831cd055cbb5bb.  
     Bruce Momjian [Sat, 13 Sep 2014 00:42:19 +0000 (20:42 -0400)]     Revert 
f68dc5d86b9f287f80f4417f5a24d876eb13771d  Renaming will have to be more comprehensive, so I need approval.  
     Bruce Momjian [Sat, 13 Sep 2014 00:34:25 +0000 (20:34 -0400)]     More formatting.c variable renaming, for clarity
 
 
    Robert Haas [Fri, 12 Sep 2014 20:11:58 +0000 (16:11 -0400)]     Change NTUP_PER_BUCKET to 1 to improve hash join lookup speed.
  Since this makes the bucket headers use ~10x as much memory, properly
 account for that memory when we figure out whether everything fits
 in work_mem.  This might result in some cases that previously used
 only a single batch getting split into multiple batches, but it's
 unclear as yet whether we need defenses against that case, and if so,
 what the shape of those defenses should be. 
 It's worth noting that even in these edge cases, users should still be
 no worse off than they would have been last week, because commit 
45f6240a8fa9d35548eb2ef23dba2c11540aa02a saved a big pile of memory
 on exactly the same workloads. 
 Tomas Vondra, reviewed and somewhat revised by me.  
     Fujii Masao [Fri, 12 Sep 2014 17:55:45 +0000 (02:55 +0900)]     Add GUC to enable logging of replication commands.
 
 Previously replication commands like IDENTIFY_COMMAND were not logged
 even when log_statements is set to all. Some users who want to audit
 all types of statements were not satisfied with this situation. To
 address the problem, this commit adds new GUC log_replication_commands.
 If it's enabled, all replication commands are logged in the server log.
 
 There are many ways to allow us to enable that logging. For example,
 we can extend log_statement so that replication commands are logged
 when it's set to all. But per discussion in the community, we reached
 the consensus to add separate GUC for that.
 
 Reviewed by Ian Barwick, Robert Haas and Heikki Linnakangas.
 
 
    Stephen Frost [Fri, 12 Sep 2014 16:04:37 +0000 (12:04 -0400)]     Add unicode_{column|header|border}_style to psql
 
 With the unicode linestyle, this adds support to control if the
 column, header, or border style should be single or double line
 unicode characters.  The default remains 'single'.
 
 In passing, clean up the border documentation and address some
 minor formatting/spelling issues.
 
 Pavel Stehule, with some additional changes by me.
 
 
    Stephen Frost [Fri, 12 Sep 2014 15:11:53 +0000 (11:11 -0400)]     Handle border = 3 in expanded mode
 
 In psql, expanded mode was not being displayed correctly when using
 the normal ascii or unicode linestyles and border set to '3'.  Now,
 per the documentation, border '3' is really only sensible for HTML
 and LaTeX formats, however, that's no excuse for ascii/unicode to
 break in that case, and provisions had been made for psql to cleanly
 handle this case (and it did, in non-expanded mode).
 
 This was broken when ascii/unicode was initially added a good five
 years ago because print_aligned_vertical_line wasn't passed in the
 border setting being used by print_aligned_vertical but instead was
 given the whole printTableContent.  There really isn't a good reason
 for vertical_line to have the entire printTableContent structure, so
 just pass in the printTextFormat and border setting (similar to how
 this is handled in horizontal_line).
 
 Pointed out by Pavel Stehule, fix by me.
 
 Back-patch to all currently-supported versions.
 
 
    Heikki Linnakangas [Fri, 12 Sep 2014 14:12:11 +0000 (17:12 +0300)]     Support Subject Alternative Names in SSL server certificates.
 
 This patch makes libpq check the server's hostname against DNS names listed
 in the X509 subjectAltName extension field in the server certificate. This
 allows the same certificate to be used for multiple domain names. If there
 are no SANs in the certificate, the Common Name field is used, like before
 this patch. If both are given, the Common Name is ignored. That is a bit
 surprising, but that's the behavior mandated by the relevant RFCs, and it's
 also what the common web browsers do.
 
 This also adds a libpq_ngettext helper macro to allow plural messages to be
 translated in libpq. Apparently this happened to be the first plural message
 in libpq, so it was not needed before.
 
 Alexey Klyukin, with some kibitzing by me.
 
 
    Heikki Linnakangas [Fri, 12 Sep 2014 08:23:59 +0000 (11:23 +0300)]     Fix GIN data page split ratio calculation.
 
 The code that tried to split a page at 75/25 ratio, when appending to the
 end of an index, was buggy in two ways. First, there was a silly typo that
 caused it to just fill the left page as full as possible. But the logic as
 it was intended wasn't correct either, and would actually have given a ratio
 closer to 60/40 than 75/25.
 
 Gaetano Mendola spotted the typo. Backpatch to 9.4, where this code was added.
 
 
    Tom Lane [Fri, 12 Sep 2014 03:30:51 +0000 (23:30 -0400)]     Fix power_var_int() for large integer exponents.
 
 The code for raising a NUMERIC value to an integer power wasn't very
 careful about large powers.  It got an outright wrong answer for an
 exponent of INT_MIN, due to failure to consider overflow of the Abs(exp)
 operation; which is fixable by using an unsigned rather than signed
 exponent value after that point.  Also, even though the number of
 iterations of the power-computation loop is pretty limited, it's easy for
 the repeated squarings to result in ridiculously enormous intermediate
 values, which can take unreasonable amounts of time/memory to process,
 or even overflow the internal "weight" field and so produce a wrong answer.
 We can forestall misbehaviors of that sort by bailing out as soon as the
 weight value exceeds what will fit in int16, since then the final answer
 must overflow (if exp > 0) or underflow (if exp < 0) the packed numeric
 format.
 
 Per off-list report from Pavel Stehule.  Back-patch to all supported
 branches.
 
 
    Tom Lane [Fri, 12 Sep 2014 02:34:32 +0000 (22:34 -0400)]     Fix JSON regression tests.
  Commit 
95d737ff45a38809130a2c633d9e6bc26c825036 neglected to update
 expected/json_1.out.  Per buildfarm.  
     Peter Eisentraut [Fri, 12 Sep 2014 01:08:59 +0000 (21:08 -0400)]     Fix vacuumdb --analyze-in-stages --all order
 
 When running vacuumdb --analyze-in-stages --all, it needs to run the
 first stage across all databases before the second one, instead of
 running all stages in a database before processing the next one.
 
 Also respect the --quiet option with --analyze-in-stages.
 
 
    Stephen Frost [Fri, 12 Sep 2014 01:23:51 +0000 (21:23 -0400)]     Add 'ignore_nulls' option to row_to_json
 
 Provide an option to skip NULL values in a row when generating a JSON
 object from that row with row_to_json.  This can reduce the size of the
 JSON object in cases where columns are NULL without really reducing the
 information in the JSON object.
 
 This also makes row_to_json into a single function with default values,
 rather than having multiple functions.  In passing, change array_to_json
 to also be a single function with default values (we don't add an
 'ignore_nulls' option yet- it's not clear that there is a sensible
 use-case there, and it hasn't been asked for in any case).
 
 Pavel Stehule
 
 
    Bruce Momjian [Thu, 11 Sep 2014 22:44:00 +0000 (18:44 -0400)]     pg_upgrade:  adjust C comments
 
 
    Heikki Linnakangas [Thu, 11 Sep 2014 19:43:56 +0000 (22:43 +0300)]     Remove dead InRecovery check.
 
 With the new B-tree incomplete split handling in 9.4, _bt_insert_parent is
 never called in recovery.
 
 
    Bruce Momjian [Thu, 11 Sep 2014 17:40:06 +0000 (13:40 -0400)]     improve hash creation warning message
  This improves the wording of commit 
84aa8ba128a08e6fdebb2497c7a79ebf18093e12. 
 Report by Kevin Grittner  
     Robert Haas [Thu, 11 Sep 2014 13:05:48 +0000 (09:05 -0400)]     Add missing volatile qualifier.
  Yet another silly mistake in 
0709b7ee72e4bc71ad07b7120acd117265ab51d0,
 again found by buildfarm member castoroides.  
     Heikki Linnakangas [Thu, 11 Sep 2014 12:15:40 +0000 (15:15 +0300)]     Fix Windows build.
 
 I renamed a variable, but missed an #ifdef WIN32 block.
 
 
    Heikki Linnakangas [Thu, 11 Sep 2014 10:50:14 +0000 (13:50 +0300)]     Silence compiler warning on Windows.
 
 David Rowley.
 
 
    Heikki Linnakangas [Thu, 11 Sep 2014 10:00:48 +0000 (13:00 +0300)]     Simplify calculation of Poisson distributed delays in pgbench --rate mode.
 
 The previous coding first generated a uniform random value between 0.0 and
 1.0, then converted that to an integer between 1 and 10000, and divided that
 again by 10000. Those conversions are unnecessary; we can use the double
 value that pg_erand48() returns directly. While we're at it, put the logic
 into a helper function, getPoissonRand().
 
 The largest delay generated by the old coding was about 9.2 times the
 average, because of the way the uniformly distributed value used for the
 calculation was truncated to 1/10000 granularity. The new coding doesn't
 have such clamping. With my laptop's DBL_MIN value, the maximum delay with
 the new coding is about 700x the average. That seems acceptable - any
 reasonable pgbench session should last long enough to average that out.
 
 Backpatch to 9.4.
 
 
    Heikki Linnakangas [Thu, 11 Sep 2014 09:40:01 +0000 (12:40 +0300)]     Change the way latency is calculated with pgbench --rate option.
 
 The reported latency values now include the "schedule lag" time, that is,
 the time between the transaction's scheduled start time and the time it
 actually started. This relates better to a model where requests arrive at a
 certain rate, and we are interested in the response time to the end user or
 application, rather than the response time of the database itself.
 
 Also, when --rate is used, include the schedule lag time in the log output.
 
 The --rate option is new in 9.4, so backpatch to 9.4. It seems better to
 make this change in 9.4, while we're still in the beta period, than ship a
 9.4 version that calculates the values differently than 9.5.
 
 
    Peter Eisentraut [Thu, 11 Sep 2014 00:39:28 +0000 (20:39 -0400)]     Handle old versions of Test::More
 
 Really old versions of Test::More don't support subplans, so skip the
 tests in that case.
 
 
    Peter Eisentraut [Thu, 11 Sep 2014 00:05:56 +0000 (20:05 -0400)]     Support older versions of "prove"
 
 Apparently, older versions of "prove" (couldn't identify the exact
 version from the changelog) don't look into the t/ directory for tests
 by default, so specify it explicitly.
 
 
    Bruce Momjian [Thu, 11 Sep 2014 00:50:15 +0000 (20:50 -0400)]     doc:  improve configuration management section
 
 Patch by David Johnston
 
 Backpatch through 9.4
 
 
    Bruce Momjian [Thu, 11 Sep 2014 00:22:10 +0000 (20:22 -0400)]     pg_upgrade: compare control version, not catalog version
  Also modify test for the possibility the large object value might not
 exist in the old cluster. 
 Fix for commit 
e1598a15f4fb0f076a6034d3d3debb9776aff07a       Bruce Momjian [Wed, 10 Sep 2014 23:23:36 +0000 (19:23 -0400)]     pg_upgrade:  check for large object size compatibility
 
 
    Bruce Momjian [Wed, 10 Sep 2014 21:13:04 +0000 (17:13 -0400)]     Implement mxid_age() to compute multi-xid age
 
 Report by Josh Berkus
 
 
    Bruce Momjian [Wed, 10 Sep 2014 20:54:40 +0000 (16:54 -0400)]     Issue a warning during the creation of hash indexes
 
 
    Robert Haas [Wed, 10 Sep 2014 18:40:21 +0000 (14:40 -0400)]     Fix thinko in 
0709b7ee72e4bc71ad07b7120acd117265ab51d0. 
 Buildfarm member castoroides is unhappy with this, for entirely
 understandable reasons.  
     Heikki Linnakangas [Wed, 10 Sep 2014 18:24:52 +0000 (21:24 +0300)]     Pack tuples in a hash join batch densely, to save memory.
 
 Instead of palloc'ing each HashJoinTuple individually, allocate 32kB chunks
 and pack the tuples densely in the chunks. This avoids the AllocChunk
 header overhead, and the space wasted by standard allocator's habit of
 rounding sizes up to the nearest power of two.
 
 This doesn't contain any planner changes, because the planner's estimate of
 memory usage ignores the palloc overhead. Now that the overhead is smaller,
 the planner's estimates are in fact more accurate.
 
 Tomas Vondra, reviewed by Robert Haas.
 
 
    Andres Freund [Wed, 10 Sep 2014 15:21:50 +0000 (17:21 +0200)]     Add support for optional_argument to our own getopt_long() implementation.
  07c8651dd91d5a currently causes compilation errors on mscv (and
 probably some other) compilers because our getopt_long()
 implementation doesn't have support for optional_argument. 
 Thus implement optional_argument in our fallback implemenation. It's
 quite possibly also useful in other cases. 
 Arguably this needs a configure check for optional_argument, but it
 has existed pretty much since getopt_long() was introduced and thus
 doesn't seem worth the configure runtime. 
 Normally I'd would not push a patch this fast, but this allows msvc to
 build again and has low risk as only optional_argument behaviour has
 changed. 
 Author: Michael Paquier and Andres Freund 
 Discussion: CAB7nPqS5VeedSCxrK=QouokbawgGKLpyc1Q++RRFCa_sjcSVrg@mail.gmail.com  
     Andres Freund [Wed, 10 Sep 2014 00:43:18 +0000 (02:43 +0200)]     Fix typo in 
07c8651dd91d5 causing WIN32_ONLY_COMPILER builds to fail.  
     Tom Lane [Tue, 9 Sep 2014 22:35:14 +0000 (18:35 -0400)]     Preserve AND/OR flatness while extracting restriction OR clauses.
  The code I added in commit 
f343a880d5555faf1dad0286c5632047c8f599ad was
 careless about preserving AND/OR flatness: it could create a structure with
 an OR node directly underneath another one.  That breaks an assumption
 that's fairly important for planning efficiency, not to mention triggering
 various Asserts (as reported by Benjamin Smith).  Add a trifle more logic
 to handle the case properly.  
     Andres Freund [Tue, 9 Sep 2014 20:19:14 +0000 (22:19 +0200)]     Add new psql help topics, accessible to both --help and \?.
 
 Add --help=<topic> for the commandline, and \? <topic> as a backslash
 command, to show more help than the invocations without parameters
 do. "commands", "variables" and "options" currently exist as help
 topics describing, respectively, backslash commands, psql variables,
 and commandline switches. Without parameters the help commands show
 their previous topic.
 
 Some further wordsmithing or extending of the added help content might
 be needed; but there seems little benefit delaying the overall feature
 further.
 
 Author: Pavel Stehule, editorialized by many
 
 Reviewed-By: Andres Freund, Petr Jelinek, Fujii Masao, MauMau, Abhijit
     Menon-Sen and Erik Rijkers.
 
 Discussion: CAFj8pRDVGuC-nXBfe2CK8vpyzd2Dsr9GVpbrATAnZO=2YQ0s2Q@mail.gmail.com,
     CAFj8pRA54AbTv2RXDTRxiAd8hy8wxmoVLqhJDRCwEnhdd7OUkw@mail.gmail.com
 
 
    Robert Haas [Tue, 9 Sep 2014 21:45:20 +0000 (17:45 -0400)]     Change the spinlock primitives to function as compiler barriers.
 
 Previously, they functioned as barriers against CPU reordering but not
 compiler reordering, an odd API that required extensive use of volatile
 everywhere that spinlocks are used.  That's error-prone and has negative
 implications for performance, so change it.
 
 In theory, this makes it safe to remove many of the uses of volatile
 that we currently have in our code base, but we may find that there are
 some bugs in this effort when we do.  In the long run, though, this
 should make for much more maintainable code.
 
 Patch by me.  Review by Andres Freund.
 
 
    Tom Lane [Tue, 9 Sep 2014 19:34:10 +0000 (15:34 -0400)]     Add width_bucket(anyelement, anyarray).
 
 This provides a convenient method of classifying input values into buckets
 that are not necessarily equal-width.  It works on any sortable data type.
 
 The choice of function name is a bit debatable, perhaps, but showing that
 there's a relationship to the SQL standard's width_bucket() function seems
 more attractive than the other proposals.
 
 Petr Jelinek, reviewed by Pavel Stehule
 
 
    Peter Eisentraut [Tue, 9 Sep 2014 17:56:29 +0000 (13:56 -0400)]     doc: Reflect renaming of Mac OS X to OS X
 
 bug #10528
 
 
    Peter Eisentraut [Tue, 9 Sep 2014 15:34:52 +0000 (11:34 -0400)]     Allow empty content in xml type
 
 The xml type previously rejected "content" that is empty or consists
 only of spaces.  But the SQL/XML standard allows that, so change that.
 The accepted values for XML "documents" are not changed.
 
 Reviewed-by: Ali Akbar <the.apaan@gmail.com>
 
    Stephen Frost [Tue, 9 Sep 2014 14:52:10 +0000 (10:52 -0400)]     Move ALTER ... ALL IN to ProcessUtilitySlow
 
 Now that ALTER TABLE .. ALL IN TABLESPACE has replaced the previous
 ALTER TABLESPACE approach, it makes sense to move the calls down in
 to ProcessUtilitySlow where the rest of ALTER TABLE is handled.
 
 This also means that event triggers will support ALTER TABLE .. ALL
 (which was the impetus for the original change, though it has other
 good qualities also).
 
 Álvaro Herrera
 
 Back-patch to 9.4 as the original rework was.
 
 
    Andres Freund [Tue, 9 Sep 2014 11:57:38 +0000 (13:57 +0200)]     Fix typo in solaris spinlock fix.
  07968dbfaad03 missed part of the S_UNLOCK define when building for
 sparcv8+.  
     Andres Freund [Mon, 8 Sep 2014 22:47:32 +0000 (00:47 +0200)]     Fix spinlock implementation for some !solaris sparc platforms.
  Some Sparc CPUs can be run in various coherence models, ranging from
 RMO (relaxed) over PSO (partial) to TSO (total). Solaris has always
 run CPUs in TSO mode while in userland, but linux didn't use to and
 the various *BSDs still don't. Unfortunately the sparc TAS/S_UNLOCK
 were only correct under TSO. Fix that by adding the necessary memory
 barrier instructions. On sparcv8+, which should be all relevant CPUs,
 these are treated as NOPs if the current consistency model doesn't
 require the barriers. 
 Discussion: 
20140630222854.GW26930@awork2.anarazel.de 
 Will be backpatched to all released branches once a few buildfarm
 cycles haven't shown up problems. As I've no access to sparc, this is
 blindly written.  
     Tom Lane [Mon, 8 Sep 2014 20:09:45 +0000 (16:09 -0400)]     Fix psql \s to work with recent libedit, and add pager support.
 
 psql's \s (print command history) doesn't work at all with recent libedit
 versions when printing to the terminal, because libedit tries to do an
 fchmod() on the target file which will fail if the target is /dev/tty.
 (We'd already noted this in the context of the target being /dev/null.)
 Even before that, it didn't work pleasantly, because libedit likes to
 encode the command history file (to ensure successful reloading), which
 renders it nigh unreadable, not to mention significantly different-looking
 depending on exactly which libedit version you have.  So let's forget using
 write_history() for this purpose, and instead print the data ourselves,
 using logic similar to that used to iterate over the history for newline
 encoding/decoding purposes.
 
 While we're at it, insert the ability to use the pager when \s is printing
 to the terminal.  This has been an acknowledged shortcoming of \s for many
 years, so while you could argue it's not exactly a back-patchable bug fix
 it still seems like a good improvement.  Anyone who's seriously annoyed
 at this can use "\s /dev/tty" or local equivalent to get the old behavior.
 
 Experimentation with this showed that the history iteration logic was
 actually rather broken when used with libedit.  It turns out that with
 libedit you have to use previous_history() not next_history() to advance
 to more recent history entries.  The easiest and most robust fix for this
 seems to be to make a run-time test to verify which function to call.
 We had not noticed this because libedit doesn't really need the newline
 encoding logic: its own encoding ensures that command entries containing
 newlines are reloaded correctly (unlike libreadline).  So the effective
 behavior with recent libedits was that only the oldest history entry got
 newline-encoded or newline-decoded.  However, because of yet other bugs in
 history_set_pos(), some old versions of libedit allowed the existing loop
 logic to reach entries besides the oldest, which means there may be libedit
 ~/.psql_history files out there containing encoded newlines in more than
 just the oldest entry.  To ensure we can reload such files, it seems
 appropriate to back-patch this fix, even though that will result in some
 incompatibility with older psql versions (ie, multiline history entries
 written by a psql with this fix will look corrupted to a psql without it,
 if its libedit is reasonably up to date).
 
 Stepan Rutz and Tom Lane
 
 
    Tom Lane [Mon, 8 Sep 2014 02:40:41 +0000 (22:40 -0400)]     Documentation fix: sum(float4) returns float4, not float8.
  The old claim is from my commit 
d06ebdb8d3425185d7e641d15e45908658a0177d of
 2000-07-17, but it seems to have been a plain old thinko; sum(float4) has
 been distinct from sum(float8) since Berkeley days.  Noted by KaiGai Kohei. 
 While at it, mention the existence of sum(money), which is also of
 embarrassingly ancient vintage.  
     Stephen Frost [Sun, 7 Sep 2014 12:04:35 +0000 (08:04 -0400)]     Tab completion for ALTER .. ALL IN TABLESPACE
  Update the tab completion for the changes made in 
3c4cf080879b386d4ed1814667aca025caafe608, which rework 'MOVE ALL' to be
 'ALTER .. ALL IN TABLESPACE'. 
 Fujii Masao 
 Back-patch to 9.4, as the original change was.  
     Bruce Momjian [Sat, 6 Sep 2014 16:43:11 +0000 (12:43 -0400)]     docs:  Improve pg_isready details about username/dbname
 
 Report by Erik Rijkers
 
 Backpatch through 9.4
 
 
    Bruce Momjian [Sat, 6 Sep 2014 15:10:52 +0000 (11:10 -0400)]     Properly document that -r is only honored from the command-line.
 
 This is for postgres/postmaster options.
 
 Report by Tom Lane
 
 Backpatch through 9.4
 
 
    Bruce Momjian [Fri, 5 Sep 2014 23:22:31 +0000 (19:22 -0400)]     Report timezone offset in pg_dump/pg_dumpall
 
 Use consistent format for all such displays.
 
 Report by Gavin Flower
 
 
    Bruce Momjian [Fri, 5 Sep 2014 23:19:41 +0000 (19:19 -0400)]     pg_upgrade:  preserve the timestamp epoch
 
 This is useful for replication tools like Slony and Skytools.
 
 Report by Sergey Konoplev
 
 
    Bruce Momjian [Fri, 5 Sep 2014 22:59:41 +0000 (18:59 -0400)]     Clarify documentation about "peer" rows in window functions
 
 Peer rows are matching rows when ORDER BY is specified.
 
 Report by arnaud.mouronval@gmail.com, David G Johnston
 
 
    Bruce Momjian [Fri, 5 Sep 2014 13:52:31 +0000 (09:52 -0400)]     Rename C variables in formatting.c, for clarity
 
 Also add C comments.  This should help future debugging of this
 notorious file.
 
 
    Peter Eisentraut [Fri, 5 Sep 2014 05:20:33 +0000 (01:20 -0400)]     Assorted message fixes and improvements
 
 
    Fujii Masao [Fri, 5 Sep 2014 02:40:08 +0000 (11:40 +0900)]     Add tab-completion for reloptions like user_catalog_table.
 
 Back-patch to 9.4 where user_catalog_table was added.
 
 Review by Michael Paquier
 
 
    Peter Eisentraut [Thu, 4 Sep 2014 18:11:23 +0000 (14:11 -0400)]     doc: Remove dead link
 
 The link to the NIST web page about DES standards leads to nowhere, and
 according to archive.org has been forwarded to an unrelated page for
 many years.  Therefore, just remove that link.  More up to date
 information can be found via Wikipedia, for example.
 
 
    Fujii Masao [Thu, 4 Sep 2014 17:17:57 +0000 (02:17 +0900)]     Fix segmentation fault that an empty prepared statement could cause.
 
 Back-patch to all supported branches.
 
 Per bug #11335 from Haruka Takatsuka
 
 
    Robert Haas [Thu, 4 Sep 2014 16:17:10 +0000 (12:17 -0400)]     Update comment to reflect commit 
1d41739e5a04b0e93304d24d864b6bfa3efc45f2. 
 Peter Geoghegan  
     Fujii Masao [Thu, 4 Sep 2014 03:31:48 +0000 (12:31 +0900)]     Allow \watch to display query execution time if \timing is enabled.
 
 Previously \watch could not display the query execution time even
 when \timing was enabled because it used PSQLexec instead of
 SendQuery and that function didn't support \timing. This patch
 introduces PSQLexecWatch and changes \watch so as to use it, instead.
 PSQLexecWatch is the function to run the query, print its results and
 display how long it took (only when \timing is enabled).
 
 This patch also changes --echo-hidden so that it doesn't print
 the query that \watch executes. Since \watch cannot execute
 backslash command queries, they should not be printed even
 when --echo-hidden is set.
 
 Patch by me, review by Heikki Linnakangas and Michael Paquier
 
 
    Bruce Momjian [Wed, 3 Sep 2014 21:22:20 +0000 (17:22 -0400)]     Update URL reference material in /contrib/isn docs
 
 Report by Peter Eisentraut
 
 
    Bruce Momjian [Wed, 3 Sep 2014 18:32:57 +0000 (14:32 -0400)]     Document use of partial indexes for partial unique constraints
 
 Report by Tomáš Greif
 
 Backpatch through 9.4
 
 
    Bruce Momjian [Wed, 3 Sep 2014 15:54:31 +0000 (11:54 -0400)]     Issue clearer notice when inherited merged columns are moved
 
 CREATE TABLE INHERIT moves user-specified columns to the location of the
 inherited column.
 
 Report by Fatal Majid
 
 
    Heikki Linnakangas [Tue, 2 Sep 2014 12:53:06 +0000 (15:53 +0300)]     Check number of parameters in RAISE statement at compile time.
 
 The number of % parameter markers in RAISE statement should match the number
 of parameters given. We used to check that at execution time, but we have
 all the information needed at compile time, so let's check it at compile
 time instead. It's generally better to find mistakes earlier.
 
 Marko Tiikkaja, reviewed by Fabien Coelho
 
 
    Heikki Linnakangas [Wed, 13 Aug 2014 12:39:08 +0000 (15:39 +0300)]     Refactor per-page logic common to all redo routines to a new function.
 
 Every redo routine uses the same idiom to determine what to do to a page:
 check if there's a backup block for it, and if not read, the buffer if the
 block exists, and check its LSN. Refactor that into a common function,
 XLogReadBufferForRedo, making all the redo routines shorter and more
 readable.
 
 This has no user-visible effect, and makes no changes to the WAL format.
 
 Reviewed by Andres Freund, Alvaro Herrera, Michael Paquier.
 
 
    Heikki Linnakangas [Tue, 2 Sep 2014 11:22:42 +0000 (14:22 +0300)]     Silence warning on new versions of clang.
 
 Andres Freund
 
 
    Andres Freund [Tue, 2 Sep 2014 11:05:48 +0000 (13:05 +0200)]     Add psql PROMPT variable showing which line of a statement is being edited.
 
 The new %l substitution shows the line number inside a (potentially
 multi-line) statement starting from one.
 
 Author: Sawada Masahiko, heavily editorialized by me.
 Reviewed-By: Jeevan Chalke, Alvaro Herrera
 
    Fujii Masao [Tue, 2 Sep 2014 07:06:58 +0000 (16:06 +0900)]     Support ALTER SYSTEM RESET command.
 
 This patch allows us to execute ALTER SYSTEM RESET command to
 remove the configuration entry from postgresql.auto.conf.
 
 Vik Fearing, reviewed by Amit Kapila and me.
 
 
    Tom Lane [Mon, 1 Sep 2014 22:37:45 +0000 (18:37 -0400)]     Fix unportable use of isspace().
  Introduced in commit 
11a020eb6.  
     Andres Freund [Mon, 1 Sep 2014 11:42:43 +0000 (13:42 +0200)]     Add skip-empty-xacts option to test_decoding for use in the regression tests.
  The regression tests for contrib/test_decoding regularly failed on
 postgres instances that were very slow. Either because the hardware
 itself was slow or because very expensive debugging options like
 CLOBBER_CACHE_ALWAYS were used. 
 The reason they failed was just that some additional transactions were
 decoded. Analyze and vacuum, triggered by autovac. 
 To fix just add a option to test_decoding to only display transactions
 in which a change was actually displayed. That's not pretty because it
 removes information from the tests; but better than constantly failing
 tests in very likely harmless ways. 
 Backpatch to 9.4 where logical decoding was introduced. 
 Discussion: 
20140629142511.GA26930@awork2.anarazel.de  
     Andres Freund [Mon, 1 Sep 2014 10:19:00 +0000 (12:19 +0200)]     Add valgrind suppression for padding bytes in twophase records.
 
 
    Andres Freund [Mon, 1 Sep 2014 10:01:29 +0000 (12:01 +0200)]     Fix s/pluggins/plugins/ typo in two comments.
 
 Michael Paquier
 
 
    Andres Freund [Sun, 31 Aug 2014 22:16:55 +0000 (00:16 +0200)]     Declare lwlock.c's LWLockAcquireCommon() as a static inline.
  68a2e52bbaf98f136 has introduced LWLockAcquireCommon() containing the
 previous contents of LWLockAcquire() plus added functionality. The
 latter then calls it, just like LWLockAcquireWithVar(). Because the
 majority of callers don't need the added functionality, declare the
 common code as inline. The compiler then can optimize away the unused
 code. Doing so is also useful when looking at profiles, to
 differentiate the users. 
 Backpatch to 9.4, the first branch to contain LWLockAcquireCommon().  
     Andres Freund [Sun, 31 Aug 2014 22:03:53 +0000 (00:03 +0200)]     Protect definition of SpinlockSemaArray, just like its declaration.
 
 Found via clang's -Wmissing-variable-declarations.
 
 
    Andres Freund [Sun, 31 Aug 2014 21:53:12 +0000 (23:53 +0200)]     Declare two variables in snapbuild.c as static.
 
 Neither is accessed externally, I just seem to have missed the static
 when writing the code.
 
 
    Kevin Grittner [Sat, 30 Aug 2014 15:52:36 +0000 (10:52 -0500)]     doc: Various typo/grammar fixes
 
 Errors detected using Topy (https://github.com/intgr/topy), all
 changes verified by hand and some manual tweaks added.
 
 Marti Raudsepp
 
 Individual changes backpatched, where applicable, as far as 9.0.
 
 
    Bruce Momjian [Sat, 30 Aug 2014 14:24:34 +0000 (10:24 -0400)]     Again update C comments for pg_attribute.attislocal
 
 
    Andres Freund [Sat, 30 Aug 2014 12:03:21 +0000 (14:03 +0200)]     Make backend local tracking of buffer pins memory efficient.
  Since the dawn of time (aka Postgres95) multiple pins of the same
 buffer by one backend have been optimized not to modify the shared
 refcount more than once. This optimization has always used a NBuffer
 sized array in each backend keeping track of a backend's pins. 
 That array (PrivateRefCount) was one of the biggest per-backend memory
 allocations, depending on the shared_buffers setting. Besides the
 waste of memory it also has proven to be a performance bottleneck when
 assertions are enabled as we make sure that there's no remaining pins
 left at the end of transactions. Also, on servers with lots of memory
 and a correspondingly high shared_buffers setting the amount of random
 memory accesses can also lead to poor cpu cache efficiency. 
 Because of these reasons a backend's buffers pins are now kept track
 of in a small statically sized array that overflows into a hash table
 when necessary. Benchmarks have shown neutral to positive performance
 results with considerably lower memory usage. 
 Patch by me, review by Robert Haas. 
 Discussion: 
20140321182231.GA17111@alap3.anarazel.de  
     Bruce Momjian [Fri, 29 Aug 2014 23:01:04 +0000 (19:01 -0400)]     Update C comment for pg_attribute.attislocal
 
 Indicates if column has ever been local/non-inherited
 
 
    Bruce Momjian [Fri, 29 Aug 2014 13:05:35 +0000 (09:05 -0400)]     pg_is_xlog_replay_paused():  remove super-user-only restriction
 
 Also update docs to mention which function are super-user-only.
 
 Report by sys-milan@statpro.com
 
 Backpatch through 9.4
 
 
    Heikki Linnakangas [Fri, 29 Aug 2014 11:19:34 +0000 (14:19 +0300)]     Fix bug in compressed GIN data leaf page splitting code.
 
 The list of posting lists it's dealing with can contain placeholders for
 deleted posting lists. The placeholders are kept around so that they can
 be WAL-logged, but we must be careful to not try to access them.
 
 This fixes bug #11280, reported by Mårten Svantesson. Backpatch to 9.4,
 where the compressed data leaf page code was added.
 
 
    Peter Eisentraut [Fri, 29 Aug 2014 04:01:34 +0000 (00:01 -0400)]     Assorted message improvements
 
 
    Peter Eisentraut [Fri, 29 Aug 2014 03:59:03 +0000 (23:59 -0400)]     doc: Revert ALTER TABLESPACE summary line
 
 It was changed when ALTER TABLESPACE / MOVE was added but then not
 updated when that was moved back out.
 
 
    Tom Lane [Fri, 29 Aug 2014 02:37:58 +0000 (22:37 -0400)]     Add min and max aggregates for inet/cidr data types.
 
 Haribabu Kommi, reviewed by Muhammad Asif Naeem
 
 
    Noah Misch [Fri, 29 Aug 2014 00:36:27 +0000 (20:36 -0400)]     Always use our getaddrinfo.c on Windows.
  Commit 
a16bac36eca8158cbf78987e95376f610095f792 let "configure" detect
 the system getaddrinfo() when building under 64-bit MinGW-w64.  However,
 src/include/port/win32/sys/socket.h assumes all native Windows
 configurations use our replacement.  This change placates buildfarm
 member jacana until we establish a plan for getaddrinfo() on Windows.  
     Tom Lane [Thu, 28 Aug 2014 22:21:05 +0000 (18:21 -0400)]     Fix citext upgrade script for disallowance of oidvector element assignment.
  In commit 
45e02e3232ac7cc5ffe36f7986159b5e0b1f6fdc, we intentionally
 disallowed updates on individual elements of oidvector columns.  While that
 still seems like a sane idea in the abstract, we (I) forgot that citext's
 "upgrade from unpackaged" script did in fact perform exactly such updates,
 in order to fix the problem that citext indexes should have a collation
 but would not in databases dumped or upgraded from pre-9.1 installations. 
 Even if we wanted to add casts to allow such updates, there's no practical
 way to do so in the back branches, so the only real alternative is to make
 citext's kluge even klugier.  In this patch, I cast the oidvector to text,
 fix its contents with regexp_replace, and cast back to oidvector.  (Ugh!) 
 Since the aforementioned commit went into all active branches, we have to
 fix this in all branches that contain the now-broken update script. 
 Per report from Eric Malm.  
     Fujii Masao [Thu, 28 Aug 2014 20:10:47 +0000 (05:10 +0900)]     Revert "Allow units to be specified in relation option setting value."
  This reverts commit 
e23014f3d40f7d2c23bc97207fd28efbe5ba102b. 
 As the side effect of the reverted commit, when the unit is
 specified, the reloption was stored in the catalog with the unit.
 This broke pg_dump (specifically, it prevented pg_dump from
 outputting restorable backup regarding the reloption) and
 turned the buildfarm red. Revert the commit until the fixed
 version is ready.  
     Andres Freund [Thu, 28 Aug 2014 11:59:29 +0000 (13:59 +0200)]     Allow escaping of option values for options passed at connection start.
  This is useful to allow to set GUCs to values that include spaces;
 something that wasn't previously possible. The primary case motivating
 this is the desire to set default_transaction_isolation to 'repeatable
 read' on a per connection basis, but other usecases like seach_path do
 also exist. 
 This introduces a slight backward incompatibility: Previously a \ in
 an option value would have been passed on literally, now it'll be
 taken as an escape. 
 The relevant mailing list discussion starts with 
20140204125823.GJ12016@awork2.anarazel.de.  
     Fujii Masao [Thu, 28 Aug 2014 06:55:50 +0000 (15:55 +0900)]     Allow units to be specified in relation option setting value.
 
 This introduces an infrastructure which allows us to specify the units
 like ms (milliseconds) in integer relation option, like GUC parameter.
 Currently only autovacuum_vacuum_cost_delay reloption can accept
 the units.
 
 Reviewed by Michael Paquier
 
 
    Jeff Davis [Thu, 28 Aug 2014 04:07:36 +0000 (21:07 -0700)]     Allow multibyte characters as escape in SIMILAR TO and SUBSTRING.
 
 Previously, only a single-byte character was allowed as an
 escape. This patch allows it to be a multi-byte character, though it
 still must be a single character.
 
 Reviewed by Heikki Linnakangas and Tom Lane.