Noah Misch [Mon, 27 Oct 2014 23:59:39 +0000 (19:59 -0400)]     MinGW: Include .dll extension in .def file LIBRARY commands.
  Newer toolchains append the extension implicitly if missing, but
 buildfarm member narwhal (gcc 3.4.2, ld 2.15.91 
20040904) does not.
 This affects most core libraries having an exports.txt file, namely
 libpq and the ECPG support libraries.  On Windows Server 2003, Windows
 API functions that load and unload DLLs internally will mistakenly
 unload a libpq whose DLL header reports "LIBPQ" instead of "LIBPQ.dll".
 When, subsequently, control would return to libpq, the backend crashes.
 Back-patch to 9.4, like commit 
846e91e0223cf9f2821c3ad4dfffffbb929cb027.
 Before that commit, we used a different linking technique that yielded
 "libpq.dll" in the DLL header. 
 Commit 
53566fc0940cf557416b13252df57350a4511ce4 worked around this by
 eliminating a call to a function that loads and unloads DLLs internally.
 That commit is no longer necessary for correctness, but its improving
 consistency with the MSVC build remains valid.  
  Robert Haas [Mon, 27 Oct 2014 12:53:16 +0000 (08:53 -0400)]     Add missing equals signs to pg_recvlogical documentation.
 
 Michael Paquier
 
 
    Heikki Linnakangas [Mon, 27 Oct 2014 08:50:41 +0000 (10:50 +0200)]     Fix two bugs in tsquery @> operator.
 
 1. The comparison for matching terms used only the CRC to decide if there's
 a match. Two different terms with the same CRC gave a match.
 
 2. It assumed that if the second operand has more terms than the first, it's
 never a match. That assumption is bogus, because there can be duplicate
 terms in either operand.
 
 Rewrite the implementation in a way that doesn't have those bugs.
 
 Backpatch to all supported versions.
 
 
    Bruce Momjian [Mon, 27 Oct 2014 08:45:57 +0000 (04:45 -0400)]     Add variable names to two LWLock C prototypes
 
 Previously only the variable types appeared.
 
 
    Tom Lane [Mon, 27 Oct 2014 00:59:21 +0000 (20:59 -0400)]     Avoid unportable strftime() behavior in pg_dump/pg_dumpall.
  Commit 
ad5d46a4494b0b480a3af246bb4227d9bdadca37 thought that we could
 get around the known portability issues of strftime's %Z specifier by
 using %z instead.  However, that idea seems to have been innocent of
 any actual research, as it certainly missed the facts that
 (1) %z is not portable to pre-C99 systems, and
 (2) %z doesn't actually act differently from %Z on Windows anyway. 
 Per failures on buildfarm member hamerkop. 
 While at it, centralize the code defining what strftime format we
 want to use in pg_dump; three copies of that string seems a bit much.  
  Tom Lane [Sun, 26 Oct 2014 23:17:55 +0000 (19:17 -0400)]     Fix undersized result buffer in pset_quoted_string().
 
 The malloc request was 1 byte too small for the worst-case output.
 This seems relatively unlikely to cause any problems in practice,
 as the worst case only occurs if the input string contains no
 characters other than single-quote or newline, and even then
 malloc alignment padding would probably save the day.  But it's
 definitely a bug.
 
 David Rowley
 
 
    Tom Lane [Sun, 26 Oct 2014 20:12:22 +0000 (16:12 -0400)]     Improve planning of btree index scans using ScalarArrayOpExpr quals.
  Since we taught btree to handle ScalarArrayOpExpr quals natively (commit 
9e8da0f75731aaa7605cf4656c21ea09e84d2eb1), the planner has always included
 ScalarArrayOpExpr quals in index conditions if possible.  However, if the
 qual is for a non-first index column, this could result in an inferior plan
 because we can no longer take advantage of index ordering (cf. commit 
807a40c551dd30c8dd5a0b3bd82f5bbb1e7fd285).  It can be better to omit the
 ScalarArrayOpExpr qual from the index condition and let it be done as a
 filter, so that the output doesn't need to get sorted.  Indeed, this is
 true for the query introduced as a test case by the latter commit. 
 To fix, restructure get_index_paths and build_index_paths so that we
 consider paths both with and without ScalarArrayOpExpr quals in non-first
 index columns.  Redesign the API of build_index_paths so that it reports
 what it found, saving useless second or third calls. 
 Report and patch by Andrew Gierth (though rather heavily modified by me).
 Back-patch to 9.2 where this code was introduced, since the issue can
 result in significant performance regressions compared to plans produced
 by 9.1 and earlier.  
  Peter Eisentraut [Sun, 26 Oct 2014 14:26:36 +0000 (10:26 -0400)]     Fix TAP tests with Perl 5.12
 
 Perl 5.12 ships with a somewhat broken version of Test::Simple, so skip
 the tests if that is found.
 
 The relevant fix is
 
     0.98  Wed, 23 Feb 2011 14:38:02 +1100
         Bug Fixes
         * subtest() should not fail if $? is non-zero. (Aaron Crane)
 
 
    Peter Eisentraut [Sun, 26 Oct 2014 13:47:01 +0000 (09:47 -0400)]     Fix TAP tests with Perl 5.8
 
 The prove program included in Perl 5.8 does not support the --ext
 option, so don't use that and use wildcards on the command line instead.
 
 Note that the tests will still all be skipped, because, for instance,
 the version of Test::More is too old, but at least the regular
 mechanisms for handling that will apply, instead of failing to call
 prove altogether.
 
 
    Andres Freund [Sat, 25 Oct 2014 08:27:41 +0000 (10:27 +0200)]     Add native compiler and memory barriers for solaris studio.
  Discussion: 
20140925133459.GB9633@alap3.anarazel.de
 Author: Oskari Saarenmaa  
  Heikki Linnakangas [Fri, 24 Oct 2014 18:10:13 +0000 (21:10 +0300)]     Work around Windows locale name with non-ASCII character.
 
 Windows has one a locale whose name contains a non-ASCII character:
 "Norwegian (Bokmål)" (that's an 'a' with a ring on top). That causes
 trouble; when passing it setlocale(), it's not clear what encoding the
 argument should be in. Another problem is that the locale name is stored in
 pg_database catalog table, and the encoding used there depends on what
 server encoding happens to be in use when the database is created. For
 example, if you issue the CREATE DATABASE when connected to a UTF-8
 database, the locale name is stored in pg_database in UTF-8. As long as all
 locale names are pure ASCII, that's not a problem.
 
 To work around that, map the troublesome locale name to a pure-ASCII alias
 of the same locale, "norwegian-bokmal".
 
 Now, this doesn't change the existing values that are already in
 pg_database and in postgresql.conf. Old clusters will need to be fixed
 manually. Instructions for that need to be put in the release notes.
 
 This fixes bug #11431 reported by Alon Siman-Tov. Backpatch to 9.2;
 backpatching further would require more work than seems worth it.
 
 
    Heikki Linnakangas [Fri, 24 Oct 2014 17:39:56 +0000 (20:39 +0300)]     Forgot #include "pg_getopt.h", now that pg_controldata uses getopt.
 
 Needed at least on Windows.
 
 
    Heikki Linnakangas [Fri, 24 Oct 2014 15:59:08 +0000 (18:59 +0300)]     Complain if too many options are passed to pg_controldata or pg_resetxlog.
 
 
    Heikki Linnakangas [Fri, 24 Oct 2014 15:55:33 +0000 (18:55 +0300)]     Oops, the commit accept pg_controldata -D datadir missed code changes.
 
 I updated the docs and usage blurp, but forgot to commit the code changes
 required.
 
 Spotted by Michael Paquier.
 
 
    Robert Haas [Fri, 24 Oct 2014 12:17:00 +0000 (08:17 -0400)]     Fix off-by-one error in 
2781b4bea7db357be59f9a5fd73ca1eb12ff5a79. 
 Spotted by Tom Lane.  
  Alvaro Herrera [Fri, 24 Oct 2014 10:14:09 +0000 (07:14 -0300)]     psql: complain if pg_dump custom-format is detected
 
 Apparently, this is a very common mistake for users to make; it is
 better to have it fail reasonably rather than throw potentially a large
 number of errors.  Since we have a magic string at the start of the
 file, we can detect the case easily and there's no other possible useful
 behavior anyway.
 
 Author: Craig Ringer
 
 
    Alvaro Herrera [Thu, 23 Oct 2014 23:51:58 +0000 (20:51 -0300)]     Update README.tuplock
  This file was documenting an older version of patch 
0ac5ad5134; update
 it to match what was really committed 
 Author: Florian Pflug  
  Tom Lane [Thu, 23 Oct 2014 19:59:40 +0000 (15:59 -0400)]     In type_sanity, check I/O functions of built-in types are not volatile.
  We have a project policy that I/O functions must not be volatile, as per
 commit 
aab353a60b95aadc00f81da0c6d99bde696c4b75, but we weren't doing
 anything to enforce that.  In most usage the marking of the function
 doesn't matter as long as its behavior is sane --- but I/O casts can
 expose the marking as user-visible behavior, as per today's complaint
 from Joe Van Dyk about contrib/ltree. 
 This test as such will only protect us against future errors in built-in
 data types.  To catch the same error in contrib or third-party types,
 perhaps we should make CREATE TYPE complain?  But that's a separate
 issue from enforcing the policy for built-in types.  
  Tom Lane [Thu, 23 Oct 2014 17:11:28 +0000 (13:11 -0400)]     Improve ispell dictionary's defenses against bad affix files.
 
 Don't crash if an ispell dictionary definition contains flags but not
 any compound affixes.  (This isn't a security issue since only superusers
 can install affix files, but still it's a bad thing.)
 
 Also, be more careful about detecting whether an affix-file FLAG command
 is old-format (ispell) or new-format (myspell/hunspell).  And change the
 error message about mixed old-format and new-format commands into something
 intelligible.
 
 Per bug #11770 from Emre Hasegeli.  Back-patch to all supported branches.
 
 
    Robert Haas [Thu, 23 Oct 2014 16:33:02 +0000 (12:33 -0400)]     Perform less setup work for AFTER triggers at transaction start.
 
 Testing reveals that the memory allocation we do at transaction start
 has small but measurable overhead on simple transactions.  To cut
 down on that overhead, defer some of that work to the point when
 AFTER triggers are first used, thus avoiding it altogether if they
 never are.
 
 Patch by me.  Review by Andres Freund.
 
 
    Fujii Masao [Thu, 23 Oct 2014 13:33:56 +0000 (22:33 +0900)]     Remove the unused argument of PSQLexec().
 
 This commit simply removes the second argument of PSQLexec that was
 set to the same value everywhere. Comments and code blocks related
 to this parameter are removed.
 
 Noticed by Heikki Linnakangas, reviewed by Michael Paquier
 
 
    Robert Haas [Thu, 23 Oct 2014 12:18:45 +0000 (08:18 -0400)]     Add a function to get the authenticated user ID.
 
 Previously, this was not exposed outside of miscinit.c.  It is needed
 for the pending pg_background patch, and will also be needed for
 parallelism.  Without it, there's no way for a background worker to
 re-create the exact authentication environment that was present in the
 process that started it, which could lead to security exposures.
 
 
    Fujii Masao [Thu, 23 Oct 2014 07:21:27 +0000 (16:21 +0900)]     Prevent the already-archived WAL file from being archived again.
  Previously the archive recovery always created .ready file for
 the last WAL file of the old timeline at the end of recovery even when
 it's restored from the archive and has .done file. That is, there was
 the case where the WAL file had both .ready and .done files.
 This caused the already-archived WAL file to be archived again. 
 This commit prevents the archive recovery from creating .ready file
 for the last WAL file if it has .done file, in order to prevent it from
 being archived again. 
 This bug was added when cascading replication feature was introduced,
 i.e., the commit 
5286105800c7d5902f98f32e11b209c471c0c69c.
 So, back-patch to 9.2, where cascading replication was added. 
 Reviewed by Michael Paquier  
  Peter Eisentraut [Thu, 23 Oct 2014 01:41:43 +0000 (21:41 -0400)]     Minimize calls of pg_class_aclcheck to minimum necessary
 
 In a couple of code paths, pg_class_aclcheck is called in succession
 with multiple different modes set.  This patch combines those modes to
 have a single call of this function and reduce a bit process overhead
 for permission checking.
 
 Author: Michael Paquier <michael@otacoo.com>
 Reviewed-by: Fabrízio de Royes Mello <fabriziomello@gmail.com>
 
    Peter Eisentraut [Thu, 23 Oct 2014 01:39:07 +0000 (21:39 -0400)]     Add tests for sequence privileges
 
 
    Tom Lane [Wed, 22 Oct 2014 22:41:44 +0000 (18:41 -0400)]     Ensure libpq reports a suitable error message on unexpected socket EOF.
 
 The EOF-detection logic in pqReadData was a bit confused about who should
 set up the error message in case the kernel gives us read-ready-but-no-data
 rather than ECONNRESET or some other explicit error condition.  Since the
 whole point of this situation is that the lower-level functions don't know
 there's anything wrong, pqReadData itself must set up the message.  But
 keep the assumption that if an errno was reported, a message was set up at
 lower levels.
 
 Per bug #11712 from Marko Tiikkaja.  It's been like this for a very long
 time, so back-patch to all supported branches.
 
 
    Michael Meskes [Wed, 22 Oct 2014 08:35:36 +0000 (10:35 +0200)]     Small code cleanup.
 
 Declare static variable as static and external as extern.
 
 
    Heikki Linnakangas [Wed, 22 Oct 2014 12:39:28 +0000 (15:39 +0300)]     Update comment.
 
 The _bt_tuplecompare() function mentioned in comment hasn't existed for a
 long time.
 
 Peter Geoghegan
 
 
    Noah Misch [Wed, 22 Oct 2014 02:55:47 +0000 (22:55 -0400)]     MinGW: Use -static-libgcc when linking a DLL.
  When commit 
846e91e0223cf9f2821c3ad4dfffffbb929cb027 switched the linker
 driver from dlltool/dllwrap to gcc, it became possible for linking to
 choose shared libgcc.  Backends having loaded a module dynamically
 linked to libgcc can exit abnormally, which the postmaster treats like a
 crash.  Resume use of static libgcc exclusively, like 9.3 and earlier.
 Back-patch to 9.4.  
  Noah Misch [Wed, 22 Oct 2014 02:55:43 +0000 (22:55 -0400)]     MinGW: Link with shell32.dll instead of shfolder.dll.
  This improves consistency with the MSVC build.  On buildfarm member
 narwhal, since commit 
846e91e0223cf9f2821c3ad4dfffffbb929cb027,
 shfolder.dll:SHGetFolderPath() crashes when dblink calls it by way of
 pqGetHomeDirectory().  Back-patch to 9.4, where that commit first
 appeared.  How it caused this regression remains a mystery.  This is a
 partial revert of commit 
889f03812916b146ae504c0fad5afdc7bf2e8a2a, which
 adopted shfolder.dll for Windows NT 4.0 compatibility.  PostgreSQL 8.2
 dropped support for that operating system.  
  Tom Lane [Tue, 21 Oct 2014 22:25:58 +0000 (18:25 -0400)]     Update expected/sequence_1.out.
 
 The last three updates to the sequence regression test have all forgotten
 to touch the alternate expected-output file.  Sigh.
 
 Michael Paquier
 
 
    Peter Eisentraut [Tue, 21 Oct 2014 20:16:39 +0000 (16:16 -0400)]     Allow input format xxxx-xxxx-xxxx for macaddr type
 
 Author: Herwin Weststrate <herwin@quarantainenet.nl>
 Reviewed-by: Ali Akbar <the.apaan@gmail.com>
 
    Peter Eisentraut [Tue, 21 Oct 2014 18:46:38 +0000 (14:46 -0400)]     doc: Check DocBook XML validity during the build
 
 Building the documentation with XSLT does not check the DTD, like a
 DSSSL build would.  One can often get away with having invalid XML, but
 the stylesheets might then create incorrect output, as they are not
 designed to handle that.  Therefore, check the validity of the XML
 against the DTD, using xmllint, during the build.
 
 Add xmllint detection to configure, and add some documentation.
 
 xmllint comes with libxml2, which is already in use, but it might be in
 a separate package, such as libxml2-utils on Debian.
 
 Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr>
 
    Peter Eisentraut [Tue, 21 Oct 2014 14:43:09 +0000 (10:43 -0400)]     doc: Update Red Hat documentation tools information
 
 The old text was written in ancient times when RPM packages could be
 shared more or less freely across a plethora of RPM-based Linux
 distributions.  This isn't really the case anymore, so just make this
 information more concrete for the Red Hat family.
 
 
    Peter Eisentraut [Tue, 21 Oct 2014 14:32:28 +0000 (10:32 -0400)]     doc: Update FreeBSD documentation tools information
 
 based on patch from Dag-Erling Smørgrav <des@des.no>
 
 
    Andres Freund [Mon, 20 Oct 2014 23:01:56 +0000 (01:01 +0200)]     Don't duplicate log_checkpoint messages for both of restart and checkpoints.
  The duplication originated in 
cdd46c765, where restartpoints were
 introduced. 
 In LogCheckpointStart's case the duplication actually lead to the
 compiler's format string checking not to be effective because the
 format string wasn't constant. 
 Arguably these messages shouldn't be elog(), but ereport() style
 messages. That'd even allow to translate the messages... But as
 there's more mistakes of that kind in surrounding code, it seems
 better to change that separately.  
  Andres Freund [Mon, 20 Oct 2014 22:20:08 +0000 (00:20 +0200)]     Renumber CHECKPOINT_* flags.
  Commit 
7dbb6069382 added a new CHECKPOINT_FLUSH_ALL flag. As that
 commit needed to be backpatched I didn't change the numeric values of
 the existing flags as that could lead to nastly problems if any
 external code issued checkpoints. That's not a concern on master, so
 renumber them there. 
 Also add a comment about CHECKPOINT_FLUSH_ALL above
 CreateCheckPoint().  
  Andres Freund [Mon, 20 Oct 2014 21:43:46 +0000 (23:43 +0200)]     Flush unlogged table's buffers when copying or moving databases.
 
 CREATE DATABASE and ALTER DATABASE .. SET TABLESPACE copy the source
 database directory on the filesystem level. To ensure the on disk
 state is consistent they block out users of the affected database and
 force a checkpoint to flush out all data to disk. Unfortunately, up to
 now, that checkpoint didn't flush out dirty buffers from unlogged
 relations.
 
 That bug means there could be leftover dirty buffers in either the
 template database, or the database in its old location. Leading to
 problems when accessing relations in an inconsistent state; and to
 possible problems during shutdown in the SET TABLESPACE case because
 buffers belonging files that don't exist anymore are flushed.
 
 This was reported in bug #10675 by Maxim Boguk.
 
 Fix by Pavan Deolasee, modified somewhat by me. Reviewed by MauMau and
 Fujii Masao.
 
 Backpatch to 9.1 where unlogged tables were introduced.
 
 
    Peter Eisentraut [Mon, 20 Oct 2014 19:34:59 +0000 (15:34 -0400)]     pg_test_fsync: Update output format
 
 Apparently, computers are now a bit faster than when this was first
 added, so we need to make room for a digit or two in the ops/sec format.
 
 While we're at it, adjust some of the other output for a more consistent
 line length.
 
 
    Andrew Dunstan [Mon, 20 Oct 2014 18:55:35 +0000 (14:55 -0400)]     Correct volatility markings of a few json functions.
 
 json_agg and json_object_agg and their associated transition functions
 should have been marked as stable rather than immutable, as they call IO
 functions indirectly. Changing this probably isn't going to make much
 difference, as you can't use an aggregate function in an index
 expression, but we should be correct nevertheless.
 
 json_object, on the other hand, should be marked immutable rather than
 stable, as it does not call IO functions.
 
 As discussed on -hackers, this change is being made without bumping the
 catalog version, as we don't want to do that at this stage of the  cycle,
 and  the changes are very unlikely to affect anyone.
 
 
    Tom Lane [Mon, 20 Oct 2014 16:23:42 +0000 (12:23 -0400)]     Fix mishandling of FieldSelect-on-whole-row-Var in nested lateral queries.
 
 If an inline-able SQL function taking a composite argument is used in a
 LATERAL subselect, and the composite argument is a lateral reference,
 the planner could fail with "variable not found in subplan target list",
 as seen in bug #11703 from Karl Bartel.  (The outer function call used in
 the bug report and in the committed regression test is not really necessary
 to provoke the bug --- you can get it if you manually expand the outer
 function into "LATERAL (SELECT inner_function(outer_relation))", too.)
 
 The cause of this is that we generate the reltargetlist for the referenced
 relation before doing eval_const_expressions() on the lateral sub-select's
 expressions (cf find_lateral_references()), so what's scheduled to be
 emitted by the referenced relation is a whole-row Var, not the simplified
 single-column Var produced by optimizing the function's FieldSelect on the
 whole-row Var.  Then setrefs.c fails to match up that lateral reference to
 what's available from the outer scan.
 
 Preserving the FieldSelect optimization in such cases would require either
 major planner restructuring (to recursively do expression simplification
 on sub-selects much earlier) or some amazingly ugly kluge to change the
 reltargetlist of a possibly-already-planned relation.  It seems better
 just to skip the optimization when the Var is from an upper query level;
 the case is not so common that it's likely anyone will notice a few
 wasted cycles.
 
 AFAICT this problem only occurs for uplevel LATERAL references, so
 back-patch to 9.3 where LATERAL was added.
 
 
    Tom Lane [Mon, 20 Oct 2014 14:53:57 +0000 (10:53 -0400)]     Fix file-identification comment in contrib/pgcrypto/pgcrypto--1.2.sql.
  Cosmetic oversight in commit 
32984d8fc3dbb90a3fafb69fece0134f1ea790f9. 
 Marko Tiikkaja  
  Robert Haas [Mon, 20 Oct 2014 14:33:16 +0000 (10:33 -0400)]     Fix typos.
 
 David Rowley
 
 
    Robert Haas [Mon, 20 Oct 2014 14:23:40 +0000 (10:23 -0400)]     Fix typos.
 
 Etsuro Fujita
 
 
    Peter Eisentraut [Sun, 19 Oct 2014 04:45:40 +0000 (00:45 -0400)]     initdb: Fix compiler error in USE_PREFETCH case
 
 
    Peter Eisentraut [Sun, 19 Oct 2014 01:58:17 +0000 (21:58 -0400)]     psql: Improve \pset without arguments
 
 Revert the output of the individual backslash commands that change print
 settings back to the 9.3 way (not showing the command name in
 parentheses).  Implement \pset without arguments separately, showing all
 settings with values in a table form.
 
 
    Peter Eisentraut [Sun, 19 Oct 2014 01:35:46 +0000 (21:35 -0400)]     Allow setting effective_io_concurrency even on unsupported systems
 
 This matches the behavior of other parameters that are unsupported on
 some systems (e.g., ssl).
 
 Also document the default value.
 
 
    Bruce Momjian [Sat, 18 Oct 2014 14:36:09 +0000 (10:36 -0400)]     Shorten warning about hash creation
 
 Also document that PITR is also affected.
 
 
    Bruce Momjian [Sat, 18 Oct 2014 14:31:00 +0000 (10:31 -0400)]     interval:  tighten precision specification
 
 interval precision can only be specified after the "interval" keyword if
 no units are specified.
 
 Previously we incorrectly checked the units to see if the precision was
 legal, causing confusion.
 
 Report by Alvaro Herrera
 
 
    Bruce Momjian [Sat, 18 Oct 2014 14:23:42 +0000 (10:23 -0400)]     doc:  restrictions on alter database moving default tablespace
 
 Mention tablespace must be empty and no one connected to the database.
 
 Report by Josh Berkus
 
 
    Peter Eisentraut [Sat, 18 Oct 2014 13:10:12 +0000 (09:10 -0400)]     doc: Clean up pg_recvlogical reference page
 
 This needed a general cleanup of wording, typos, outdated terminology,
 formatting, and hard-to-understand and borderline incorrect information.
 
 Also tweak the pg_receivexlog page a bit to make the two more
 consistent.
 
 
    Tom Lane [Sat, 18 Oct 2014 02:55:20 +0000 (22:55 -0400)]     Declare mkdtemp() only if we're providing it.
  Follow our usual style of providing an "extern" for a standard library
 function only when we're also providing the implementation.  This avoids
 issues when the system headers declare the function slightly differently
 than we do, as noted by Caleb Welton. 
 We might have to go to the extent of probing to see if the system headers
 declare the function, but let's not do that until it's demonstrated to be
 necessary. 
 Oversight in commit 
9e6b1bf258170e62dac555fc82ff0536dfe01d29.  Back-patch
 to all supported branches, as that was.  
  Tom Lane [Sat, 18 Oct 2014 02:32:55 +0000 (22:32 -0400)]     Avoid core dump in _outPathInfo() for Path without a parent RelOptInfo.
 
 Nearly all Paths have parents, but a ResultPath representing an empty FROM
 clause does not.  Avoid a core dump in such cases.  I believe this is only
 a hazard for debugging usage, not for production, else we'd have heard
 about it before.  Nonetheless, back-patch to 9.1 where the troublesome code
 was introduced.  Noted while poking at bug #11703.
 
 
    Fujii Masao [Fri, 17 Oct 2014 18:06:34 +0000 (03:06 +0900)]     Fix bug in handling of connections that pg_receivexlog creates.
  Previously pg_receivexlog created new connection for WAL streaming
 even though another connection which had been established to create
 or delete the replication slot was being left. This caused the unused
 connection to be left uselessly until pg_receivexlog exited.
 This bug was introduced by the commit 
d9f38c7. 
 This patch changes pg_receivexlog so that the connection for
 the replication slot is reused for WAL streaming. 
 Andres Freund, slightly modified by me, reviewed by Michael Paquier  
  Tom Lane [Fri, 17 Oct 2014 16:49:00 +0000 (12:49 -0400)]     Fix core dump in pg_dump --binary-upgrade on zero-column composite type.
  This reverts nearly all of commit 
28f6cab61ab8958b1a7dfb019724687d92722538 in favor of just using the typrelid we already have in pg_dump's TypeInfo
 struct for the composite type.  As coded, it'd crash if the composite type
 had no attributes, since then the query would return no rows. 
 Back-patch to all supported versions.  It seems to not really be a problem
 in 9.0 because that version rejects the syntax "create type t as ()", but
 we might as well keep the logic similar in all affected branches. 
 Report and fix by Rushabh Lathia.  
  Tom Lane [Fri, 17 Oct 2014 16:19:05 +0000 (12:19 -0400)]     Re-pgindent src/bin/pg_dump/*.
 
 Seems to have gotten rather messy lately, as a consequence of a couple
 of large recent commits.
 
 
    Stephen Frost [Fri, 17 Oct 2014 12:07:46 +0000 (08:07 -0400)]     Fix pg_dump for UPDATE policies
 
 pg_dump had the wrong character for update and so was failing when
 attempts were made to pg_dump databases with UPDATE policies.
 
 Pointed out by Fujii Masao (thanks!)
 
 
    Tom Lane [Thu, 16 Oct 2014 19:22:10 +0000 (15:22 -0400)]     Support timezone abbreviations that sometimes change.
  Up to now, PG has assumed that any given timezone abbreviation (such as
 "EDT") represents a constant GMT offset in the usage of any particular
 region; we had a way to configure what that offset was, but not for it
 to be changeable over time.  But, as with most things horological, this
 view of the world is too simplistic: there are numerous regions that have
 at one time or another switched to a different GMT offset but kept using
 the same timezone abbreviation.  Almost the entire Russian Federation did
 that a few years ago, and later this month they're going to do it again.
 And there are similar examples all over the world. 
 To cope with this, invent the notion of a "dynamic timezone abbreviation",
 which is one that is referenced to a particular underlying timezone
 (as defined in the IANA timezone database) and means whatever it currently
 means in that zone.  For zones that use or have used daylight-savings time,
 the standard and DST abbreviations continue to have the property that you
 can specify standard or DST time and get that time offset whether or not
 DST was theoretically in effect at the time.  However, the abbreviations
 mean what they meant at the time in question (or most recently before that
 time) rather than being absolutely fixed. 
 The standard abbreviation-list files have been changed to use this behavior
 for abbreviations that have actually varied in meaning since 1970.  The
 old simple-numeric definitions are kept for abbreviations that have not
 changed, since they are a bit faster to resolve. 
 While this is clearly a new feature, it seems necessary to back-patch it
 into all active branches, because otherwise use of Russian zone
 abbreviations is going to become even more problematic than it already was.
 This change supersedes the changes in commit 
513d06ded et al to modify the
 fixed meanings of the Russian abbreviations; since we've not shipped that
 yet, this will avoid an undesirably incompatible (not to mention incorrect)
 change in behavior for timestamps between 2011 and 2014. 
 This patch makes some cosmetic changes in ecpglib to keep its usage of
 datetime lookup tables as similar as possible to the backend code, but
 doesn't do anything about the increasingly obsolete set of timezone
 abbreviation definitions that are hard-wired into ecpglib.  Whatever we
 do about that will likely not be appropriate material for back-patching.
 Also, a potential free() of a garbage pointer after an out-of-memory
 failure in ecpglib has been fixed. 
 This patch also fixes pre-existing bugs in DetermineTimeZoneOffset() that
 caused it to produce unexpected results near a timezone transition, if
 both the "before" and "after" states are marked as standard time.  We'd
 only ever thought about or tested transitions between standard and DST
 time, but that's not what's happening when a zone simply redefines their
 base GMT offset. 
 In passing, update the SGML documentation to refer to the Olson/zoneinfo/
 zic timezone database as the "IANA" database, since it's now being
 maintained under the auspices of IANA.  
  Tom Lane [Wed, 15 Oct 2014 22:50:13 +0000 (18:50 -0400)]     Print planning time only in EXPLAIN ANALYZE, not plain EXPLAIN.
 
 We've gotten enough push-back on that change to make it clear that it
 wasn't an especially good idea to do it like that.  Revert plain EXPLAIN
 to its previous behavior, but keep the extra output in EXPLAIN ANALYZE.
 Per discussion.
 
 Internally, I set this up as a separate flag ExplainState.summary that
 controls printing of planning time and execution time.  For now it's
 just copied from the ANALYZE option, but we could consider exposing it
 to users.
 
 
    Alvaro Herrera [Tue, 14 Oct 2014 20:33:36 +0000 (17:33 -0300)]     Blind attempt at fixing Win32 pg_dump issues
 
 Per buildfarm failures
 
 
    Alvaro Herrera [Tue, 14 Oct 2014 18:00:55 +0000 (15:00 -0300)]     pg_dump: Reduce use of global variables
 
 Most pg_dump.c global variables, which were passed down individually to
 dumping routines, are now grouped as members of the new DumpOptions
 struct, which is used as a local variable and passed down into routines
 that need it.  This helps future development efforts; in particular it
 is said to enable a mode in which a parallel pg_dump run can output
 multiple streams, and have them restored in parallel.
 
 Also take the opportunity to clean up the pg_dump header files somewhat,
 to avoid circularity.
 
 Author: Joachim Wieland, revised by Álvaro Herrera
 Reviewed by Peter Eisentraut
 
 
    Heikki Linnakangas [Tue, 14 Oct 2014 06:55:26 +0000 (09:55 +0300)]     Fix deadlock with LWLockAcquireWithVar and LWLockWaitForVar.
 
 LWLockRelease should release all backends waiting with LWLockWaitForVar,
 even when another backend has already been woken up to acquire the lock,
 i.e. when releaseOK is false. LWLockWaitForVar can return as soon as the
 protected value changes, even if the other backend will acquire the lock.
 Fix that by resetting releaseOK to true in LWLockWaitForVar, whenever
 adding itself to the wait queue.
 
 This should fix the bug reported by MauMau, where the system occasionally
 hangs when there is a lot of concurrent WAL activity and a checkpoint.
 Backpatch to 9.4, where this code was added.
 
 
    Heikki Linnakangas [Tue, 14 Oct 2014 06:45:00 +0000 (09:45 +0300)]     Fix typo in docs.
 
 Shigeru Hanada
 
 
    Peter Eisentraut [Tue, 14 Oct 2014 02:17:34 +0000 (22:17 -0400)]     doc: Improve ALTER VIEW / SET documentation
 
 The way the ALTER VIEW / SET options were listed in the synopsis was
 very confusing.  Move the list to the main description, similar to how
 the ALTER TABLE reference page does it.
 
 
    Peter Eisentraut [Tue, 14 Oct 2014 02:10:01 +0000 (22:10 -0400)]     doc: Fix copy-and-paste mistakes
 
 
    Peter Eisentraut [Tue, 14 Oct 2014 02:07:30 +0000 (22:07 -0400)]     psql: Fix \? output alignment
  This was inadvertently changed in commit 
c64e68fd.  
  Bruce Momjian [Mon, 13 Oct 2014 21:36:50 +0000 (17:36 -0400)]     doc:  mention TM is ignored for to_date/to_timestamp()
 
 Report by Goulven Guillard
 
 
    Bruce Momjian [Mon, 13 Oct 2014 21:23:36 +0000 (17:23 -0400)]     doc:  mention more changes needed to use huge pages
 
 Report by Laurence Parry
 
 
    Bruce Momjian [Mon, 13 Oct 2014 20:54:38 +0000 (16:54 -0400)]     C comments: adjust execTuples.c for new structure
 
 Report by Peter Geoghegan
 
 
    Bruce Momjian [Mon, 13 Oct 2014 20:44:20 +0000 (16:44 -0400)]     docs: error for adding  _validated_ domains for existing uses
 
 Report by David G Johnston
 
 
    Bruce Momjian [Mon, 13 Oct 2014 20:11:43 +0000 (16:11 -0400)]     Consistently use NULL for invalid GUC unit strings
 
 Patch by Euler Taveira
 
 
    Bruce Momjian [Mon, 13 Oct 2014 19:39:49 +0000 (15:39 -0400)]     doc: improve USING and NATURAL JOIN descriptions
 
 Patch by David G Johnston
 
 
    Heikki Linnakangas [Mon, 13 Oct 2014 17:25:56 +0000 (20:25 +0300)]     Add --latency-limit option to pgbench.
 
 This allows transactions that take longer than specified limit to be counted
 separately. With --rate, transactions that are already late by the time we
 get to execute them are skipped altogether. Using --latency-limit with
 --rate allows you to "catch up" more quickly, if there's a hickup in the
 server causing a lot of transactions to stall momentarily.
 
 Fabien COELHO, reviewed by Rukh Meski and heavily refactored by me.
 
 
    Kevin Grittner [Mon, 13 Oct 2014 15:16:36 +0000 (10:16 -0500)]     Increase number of hash join buckets for underestimate.
 
 If we expect batching at the very beginning, we size nbuckets for
 "full work_mem" (see how many tuples we can get into work_mem,
 while not breaking NTUP_PER_BUCKET threshold).
 
 If we expect to be fine without batching, we start with the 'right'
 nbuckets and track the optimal nbuckets as we go (without actually
 resizing the hash table). Once we hit work_mem (considering the
 optimal nbuckets value), we keep the value.
 
 At the end of the first batch, we check whether (nbuckets !=
 nbuckets_optimal) and resize the hash table if needed. Also, we
 keep this value for all batches (it's OK because it assumes full
 work_mem, and it makes the batchno evaluation trivial). So the
 resize happens only once.
 
 There could be cases where it would improve performance to allow
 the NTUP_PER_BUCKET threshold to be exceeded to keep everything in
 one batch rather than spilling to a second batch, but attempts to
 generate such a case have so far been unsuccessful; that issue may
 be addressed with a follow-on patch after further investigation.
 
 Tomas Vondra with minor format and comment cleanup by me
 Reviewed by Robert Haas, Heikki Linnakangas, and Kevin Grittner
 
 
    Noah Misch [Mon, 13 Oct 2014 03:33:37 +0000 (23:33 -0400)]     Fix quoting in the add_to_path Makefile macro.
 
 The previous quoting caused "make -C src/bin check" to ignore, rather
 than add to, any LD_LIBRARY_PATH content from the environment.
 Back-patch to 9.4, where the macro was introduced.
 
 
    Noah Misch [Mon, 13 Oct 2014 03:33:19 +0000 (23:33 -0400)]     pg_ctl: Cast DWORD values to avoid -Wformat warnings.
 
 This affects pg_ctl alone, because pg_ctl takes the exceptional step of
 calling Windows API functions in a Cygwin build.
 
 
    Noah Misch [Mon, 13 Oct 2014 03:27:06 +0000 (23:27 -0400)]     Suppress dead, unportable src/port/crypt.c code.
 
 This file used __int64, which is specific to native Windows, rather than
 int64.  Suppress the long-unused union field of this type.  Noticed on
 Cygwin x86_64 with -lcrypt not installed.  Back-patch to 9.0 (all
 supported versions).
 
 
    Peter Eisentraut [Sun, 12 Oct 2014 05:45:25 +0000 (01:45 -0400)]     pg_recvlogical: Improve --help output
 
 List the actions first, as they are the most important options.  Group
 the other options more sensibly, consistent with the man page.  Correct
 a few typographical errors, clarify some things.
 
 Also update the pg_receivexlog --help output to make it a bit more
 consistent with that of pg_recvlogical.
 
 
    Peter Eisentraut [Sun, 12 Oct 2014 05:02:56 +0000 (01:02 -0400)]     Message improvements
 
 
    Bruce Momjian [Sat, 11 Oct 2014 22:38:41 +0000 (18:38 -0400)]     pg_upgrade:  prefix Unix shell script name output with "./"
 
 This more clearly suggests the current directory.  While this also works
 on Windows, it might be confusing.
 
 Report by Christoph Berg
 
 
    Bruce Momjian [Sat, 11 Oct 2014 21:23:57 +0000 (17:23 -0400)]     docs:  remove mention that attnotnull should be changed
 
 Report by Andres Freund
 
 
    Bruce Momjian [Sat, 11 Oct 2014 21:14:16 +0000 (17:14 -0400)]     regression:  adjust polygon diagrams to not use tabs
 
 Also, small diagram adjustments
 
 Patch by Emre Hasegeli
 
 
    Tom Lane [Sat, 11 Oct 2014 18:29:51 +0000 (14:29 -0400)]     Improve documentation about JSONB array containment behavior.
 
 Per gripe from Josh Berkus.
 
 
    Tom Lane [Sat, 11 Oct 2014 18:13:51 +0000 (14:13 -0400)]     Fix bogus optimization in JSONB containment tests.
 
 When determining whether one JSONB object contains another, it's okay to
 make a quick exit if the first object has fewer pairs than the second:
 because we de-duplicate keys within objects, it is impossible that the
 first object has all the keys the second does.  However, the code was
 applying this rule to JSONB arrays as well, where it does *not* hold
 because arrays can contain duplicate entries.  The test was really in
 the wrong place anyway; we should do it within JsonbDeepContains, where
 it can be applied to nested objects not only top-level ones.
 
 Report and test cases by Alexander Korotkov; fix by Peter Geoghegan and
 Tom Lane.
 
 
    Heikki Linnakangas [Fri, 10 Oct 2014 10:00:53 +0000 (13:00 +0300)]     Remove unnecessary initialization of local variables.
 
 Oops, forgot these in the prveious commit.
 
 
    Heikki Linnakangas [Fri, 10 Oct 2014 06:59:44 +0000 (09:59 +0300)]     Change the way encoding and locale checks are done in pg_upgrade.
 
 Lc_collate and lc_ctype have been per-database settings since server version
 8.4, but pg_upgrade was still treating them as cluster-wide options. It
 fetched the values for the template0 databases in old and new cluster, and
 compared them. That's backwards; the encoding and locale of the template0
 database doesn't matter, as template0 is guaranteed to contain only ASCII
 characters. But if there are any other databases that exist on both clusters
 (in particular template1 and postgres databases), their encodings and
 locales must be compatible.
 
 Also, make the locale comparison more lenient. If the locale names are not
 equal, try to canonicalize both of them by passing them to setlocale(). We
 used to do that only when upgrading from 9.1 or below, but it seems like a
 good idea even with newer versions. If we change the canonical form of a
 locale, this allows pg_upgrade to still work. I'm about to do just that to
 fix bug #11431, by mapping a locale name that contains non-ASCII characters
 to a pure-ASCII alias of the same locale.
 
 No backpatching, because earlier versions of pg_upgrade still support
 upgrading from 8.3 servers. That would be more complicated, so it doesn't
 seem worth it, given that we haven't received any complaints about this
 from users.
 
 
    Fujii Masao [Thu, 9 Oct 2014 18:18:01 +0000 (03:18 +0900)]     Fix broken example in PL/pgSQL document.
 
 Back-patch to all supported branches.
 
 Marti Raudsepp, per a report from Marko Tiikkaja
 
 
    Alvaro Herrera [Wed, 8 Oct 2014 21:10:47 +0000 (18:10 -0300)]     Split builtins.h to a new header ruleutils.h
 
 The new header contains many prototypes for functions in ruleutils.c
 that are not exposed to the SQL level.
 
 Reviewed by Andres Freund and Michael Paquier.
 
 
    Robert Haas [Wed, 8 Oct 2014 18:35:43 +0000 (14:35 -0400)]     Extend shm_mq API with new functions shm_mq_sendv, shm_mq_set_handle.
 
 shm_mq_sendv sends a message to the queue assembled from multiple
 locations.  This is expected to be used by forthcoming patches to
 allow frontend/backend protocol messages to be sent via shm_mq, but
 might be useful for other purposes as well.
 
 shm_mq_set_handle associates a BackgroundWorkerHandle with an
 already-existing shm_mq_handle.  This solves a timing problem when
 creating a shm_mq to communicate with a newly-launched background
 worker: if you attach to the queue first, and the background worker
 fails to start, you might block forever trying to do I/O on the queue;
 but if you start the background worker first, but then die before
 attaching to the queue, the background worrker might block forever
 trying to do I/O on the queue.  This lets you attach before starting
 the worker (so that the worker is protected) and then associate the
 BackgroundWorkerHandle later (so that you are also protected).
 
 Patch by me, reviewed by Stephen Frost.
 
 
    Alvaro Herrera [Tue, 7 Oct 2014 20:23:34 +0000 (17:23 -0300)]     Implement SKIP LOCKED for row-level locks
 
 This clause changes the behavior of SELECT locking clauses in the
 presence of locked rows: instead of causing a process to block waiting
 for the locks held by other processes (or raise an error, with NOWAIT),
 SKIP LOCKED makes the new reader skip over such rows.  While this is not
 appropriate behavior for general purposes, there are some cases in which
 it is useful, such as queue-like tables.
 
 Catalog version bumped because this patch changes the representation of
 stored rules.
 
 Reviewed by Craig Ringer (based on a previous attempt at an
 implementation by Simon Riggs, who also provided input on the syntax
 used in the current patch), David Rowley, and Álvaro Herrera.
 
 Author: Thomas Munro
 
 
    Robert Haas [Tue, 7 Oct 2014 04:08:59 +0000 (00:08 -0400)]     Fix typo in elog message.
 
 
    Tom Lane [Tue, 7 Oct 2014 01:23:20 +0000 (21:23 -0400)]     Fix array overrun in ecpg's version of ParseDateTime().
  The code wrote a value into the caller's field[] array before checking
 to see if there was room, which of course is backwards.  Per report from
 Michael Paquier. 
 I fixed the equivalent bug in the backend's version of this code way back
 in 
630684d3a130bb93, but failed to think about ecpg's copy.  Fortunately
 this doesn't look like it would be exploitable for anything worse than a
 core dump: an external attacker would have no control over the single word
 that gets written.  
  Stephen Frost [Mon, 6 Oct 2014 15:18:13 +0000 (11:18 -0400)]     Clean up Create/DropReplicationSlot query buffer
 
 CreateReplicationSlot() and DropReplicationSlot() were not cleaning up
 the query buffer in some cases (mostly error conditions) which meant a
 small leak.  Not generally an issue as the error case would result in an
 immediate exit, but not difficult to fix either and reduces the number
 of false positives from code analyzers.
 
 In passing, also add appropriate PQclear() calls to RunIdentifySystem().
 
 Pointed out by Coverity.
 
 
    Andres Freund [Mon, 6 Oct 2014 10:51:37 +0000 (12:51 +0200)]     Add support for managing physical replication slots to pg_receivexlog.
 
 pg_receivexlog already has the capability to use a replication slot to
 reserve WAL on the upstream node. But the used slot currently has to
 be created via SQL.
 
 To allow using slots directly, without involving SQL, add
 --create-slot and --drop-slot actions, analogous to the logical slot
 manipulation support in pg_recvlogical.
 
 Author: Michael Paquier
 Discussion: CABUevEx+zrOHZOQg+dPapNPFRJdsk59b=TSVf30Z71GnFXhQaw@mail.gmail.com
 
 
    Andres Freund [Mon, 6 Oct 2014 10:11:52 +0000 (12:11 +0200)]     Rename pg_recvlogical's --create/--drop to --create-slot/--drop-slot.
 
 A future patch (9.5 only) adds slot management to pg_receivexlog. The
 verbs create/drop don't seem descriptive enough there. It seems better
 to rename pg_recvlogical's commands now, in beta, than live with the
 inconsistency forever.
 
 The old form (e.g. --drop) will still be accepted by virtue of most
 getopt_long() options accepting abbreviations for long commands.
 
 Backpatch to 9.4 where pg_recvlogical was introduced.
 
 Author: Michael Paquier and Andres Freund
 Discussion: CAB7nPqQtt79U6FmhwvgqJmNyWcVCbbV-nS72j_jyPEopERg9rg@mail.gmail.com
 
 
    Peter Eisentraut [Mon, 6 Oct 2014 03:22:24 +0000 (23:22 -0400)]     Translation updates
 
 
    Tom Lane [Sun, 5 Oct 2014 18:14:04 +0000 (14:14 -0400)]     Update 9.4 release notes for commits through today.
 
 Add entries for recent changes, including noting the JSONB format change
 and the recent timezone data changes.  We should remove those two items
 before 9.4 final: the JSONB change will be of no interest in the long
 run, and it's not normally our habit to mention timezone updates in
 major-release notes.  But it seems important to document them temporarily
 for beta testers.
 
 I failed to resist the temptation to wordsmith a couple of existing
 entries, too.
 
 
    Robert Haas [Sun, 5 Oct 2014 01:25:41 +0000 (21:25 -0400)]     Eliminate one background-worker-related flag variable.
 
 Teach sigusr1_handler() to use the same test for whether a worker
 might need to be started as ServerLoop().  Aside from being perhaps
 a bit simpler, this prevents a potentially-unbounded delay when
 starting a background worker.  On some platforms, select() doesn't
 return when interrupted by a signal, but is instead restarted,
 including a reset of the timeout to the originally-requested value.
 If signals arrive often enough, but no connection requests arrive,
 sigusr1_handler() will be executed repeatedly, but the body of
 ServerLoop() won't be reached.  This change ensures that, even in
 that case, background workers will eventually get launched.
 
 This is far from a perfect fix; really, we need select() to return
 control to ServerLoop() after an interrupt, either via the self-pipe
 trick or some other mechanism.  But that's going to require more
 work and discussion, so let's do this for now to at least mitigate
 the damage.
 
 Per investigation of test_shm_mq failures on buildfarm member anole.
 
 
    Tom Lane [Sat, 4 Oct 2014 18:18:19 +0000 (14:18 -0400)]     Update time zone data files to tzdata release 2014h.
 
 Most zones in the Russian Federation are subtracting one or two hours
 as of 2014-10-26.  Update the meanings of the abbreviations IRKT, KRAT,
 MAGT, MSK, NOVT, OMST, SAKT, VLAT, YAKT, YEKT to match.
 
 The IANA timezone database has adopted abbreviations of the form AxST/AxDT
 for all Australian time zones, reflecting what they believe to be current
 majority practice Down Under.  These names do not conflict with usage
 elsewhere (other than ACST for Acre Summer Time, which has been in disuse
 since 1994).  Accordingly, adopt these names into our "Default" timezone
 abbreviation set.  The "Australia" abbreviation set now contains only
 CST,EAST,EST,SAST,SAT,WST, all of which are thought to be mostly historical
 usage.  Note that SAST has also been changed to be South Africa Standard
 Time in the "Default" abbreviation set.
 
 Add zone abbreviations SRET (Asia/Srednekolymsk) and XJT (Asia/Urumqi),
 and use WSST/WSDT for western Samoa.
 
 Also a DST law change in the Turks & Caicos Islands (America/Grand_Turk),
 and numerous corrections for historical time zone data.
 
 
    Tom Lane [Fri, 3 Oct 2014 21:44:38 +0000 (17:44 -0400)]     Update time zone abbreviations lists.
 
 This updates known_abbrevs.txt to be what it should have been already,
 were my -P patch not broken; and updates some tznames/ entries that
 missed getting any love in previous timezone data updates because zic
 failed to flag the change of abbreviation.
 
 The non-cosmetic updates:
 
 * Remove references to "ADT" as "Arabia Daylight Time", an abbreviation
 that's been out of use since 2007; therefore, claiming there is a conflict
 with "Atlantic Daylight Time" doesn't seem especially helpful.  (We have
 left obsolete entries in the files when they didn't conflict with anything,
 but that seems like a different situation.)
 
 * Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, FJST
 (Fiji); we didn't even have them on the proper side of the date line.
 (Seems to have been aboriginal errors in our tznames data; there's no
 evidence anything actually changed recently.)
 
 * FKST (Falkland Islands Summer Time) is now used all year round, so
 don't mark it as a DST abbreviation.
 
 * Update SAKT (Sakhalin) to mean GMT+11 not GMT+10.
 
 In cosmetic changes, I fixed a bunch of wrong (or at least obsolete)
 claims about abbreviations not being present in the zic files, and
 tried to be consistent about how obsolete abbreviations are labeled.
 
 Note the underlying timezone/data files are still at release 2014e;
 this is just trying to get us in sync with what those files actually
 say before we go to the next update.