1. 24 Aug, 2016 6 commits
    • Tom Lane's avatar
      Fix improper repetition of previous results from a hashed aggregate. · 2c00fad2
      Tom Lane authored
      ExecReScanAgg's check for whether it could re-use a previously calculated
      hashtable neglected the possibility that the Agg node might reference
      PARAM_EXEC Params that are not referenced by its input plan node.  That's
      okay if the Params are in upper tlist or qual expressions; but if one
      appears in aggregate input expressions, then the hashtable contents need
      to be recomputed when the Param's value changes.
      
      To avoid unnecessary performance degradation in the case of a Param that
      isn't within an aggregate input, add logic to the planner to determine
      which Params are within aggregate inputs.  This requires a new field in
      struct Agg, but fortunately we never write plans to disk, so this isn't
      an initdb-forcing change.
      
      Per report from Jeevan Chalke.  This has been broken since forever,
      so back-patch to all supported branches.
      
      Andrew Gierth, with minor adjustments by me
      
      Report: <CAM2+6=VY8ykfLT5Q8vb9B6EbeBk-NGuLbT6seaQ+Fq4zXvrDcA@mail.gmail.com>
      2c00fad2
    • Kevin Grittner's avatar
      Remove unnecessary #include. · 5cd38640
      Kevin Grittner authored
      Accidentally added in 8b65cf4c.
      
      Pointed out by Álvaro Herrera
      5cd38640
    • Peter Eisentraut's avatar
      doc: Fix XSLT speedup with older upstream stylesheet versions · 0e4cc1fc
      Peter Eisentraut authored
      From: Alexander Law <exclusion@gmail.com>
      0e4cc1fc
    • Noah Misch's avatar
      Build libpgfeutils before src/bin/pg_basebackup programs. · 03951987
      Noah Misch authored
      Oversight in commit 9132c014.
      03951987
    • Noah Misch's avatar
      Build libpgfeutils before pg_isready. · b6418a09
      Noah Misch authored
      Every program having -lpgfeutils in LDFLAGS must have this dependency,
      whether or not the program uses a libpgfeutils symbol.  Back-patch to
      9.6, where libpgfeutils was introduced.
      b6418a09
    • Tom Lane's avatar
      Suppress compiler warnings in non-cassert builds. · 71e006f0
      Tom Lane authored
      With Asserts off, these variables are set but never used, resulting
      in warnings from pickier compilers.  Fix that with our standard solution.
      Per report from Jeff Janes.
      71e006f0
  2. 23 Aug, 2016 9 commits
    • Tom Lane's avatar
      Fix network_spgist.c build failures from missing AF_INET definition. · 32909a57
      Tom Lane authored
      AF_INET is apparently defined in something that's pulled in automatically
      on Linux, but the buildfarm says that's not true everywhere.  Comparing
      to network_gist.c suggests that including <sys/socket.h> ought to fix it,
      and the POSIX standard concurs.
      32909a57
    • Tom Lane's avatar
      Create an SP-GiST opclass for inet/cidr. · 77e29068
      Tom Lane authored
      This seems to offer significantly better search performance than the
      existing GiST opclass for inet/cidr, at least on data with a wide mix
      of network mask lengths.  (That may suggest that the data splitting
      heuristics in the GiST opclass could be improved.)
      
      Emre Hasegeli, with mostly-cosmetic adjustments by me
      
      Discussion: <CAE2gYzxtth9qatW_OAqdOjykS0bxq7AYHLuyAQLPgT7H9ZU0Cw@mail.gmail.com>
      77e29068
    • Robert Haas's avatar
      Extend dsm API with a new function dsm_unpin_segment. · 0fda682e
      Robert Haas authored
      If you have previously pinned a segment and decide that you don't
      actually want to keep it around until shutdown, this new API lets you
      remove the pin.  This is pretty trivial except on Windows, where it
      requires closing the duplicate handle that was used to implement the
      pin.
      
      Thomas Munro and Amit Kapila, reviewed by Amit Kapila and by me.
      0fda682e
    • Robert Haas's avatar
      Remove duplicate function prototype. · 19998730
      Robert Haas authored
      Kyotaro Horiguchi
      19998730
    • Bruce Momjian's avatar
      doc: fix incorrect 'literal' tags · ff066481
      Bruce Momjian authored
      Discussion: dcc4113d-1eda-4f60-d1c5-f50eee160bad@gmail.com
      
      Author: Alexander Law <exclusion@gmail.com>
      
      Backpatch-through: 9.6
      ff066481
    • Tom Lane's avatar
      Improve SP-GiST opclass API to better support unlabeled nodes. · d2ddee63
      Tom Lane authored
      Previously, the spgSplitTuple action could only create a new upper tuple
      containing a single labeled node.  This made it useless for opclasses
      that prefer to work with fixed sets of nodes (labeled or otherwise),
      which meant that restrictive prefixes could not be used with such
      node definitions.  Change the output field set for the choose() method
      to allow it to specify any valid node set for the new upper tuple,
      and to specify which of these nodes to place the modified lower tuple in.
      
      In addition to its primary use for fixed node sets, this feature could
      allow existing opclasses that use variable node sets to skip a separate
      spgAddNode action when splitting a tuple, by setting up the node needed
      for the incoming value as part of the spgSplitTuple action.  However, care
      would have to be taken to add the extra node only when it would not make
      the tuple bigger than before.  (spgAddNode can enlarge the tuple,
      spgSplitTuple can't.)
      
      This is a prerequisite for an upcoming SP-GiST inet opclass, but is
      being committed separately to increase the visibility of the API change.
      
      In passing, improve the documentation about the traverse-values feature
      that was added by commit ccd6eb49.
      
      Emre Hasegeli, with cosmetic adjustments and documentation rework by me
      
      Discussion: <CAE2gYzxtth9qatW_OAqdOjykS0bxq7AYHLuyAQLPgT7H9ZU0Cw@mail.gmail.com>
      d2ddee63
    • Robert Haas's avatar
      Add txid_current_ifassigned(). · 86f31695
      Robert Haas authored
      Add a variant of txid_current() that returns NULL if no transaction ID
      is assigned.  This version can be used even on a standby server,
      although it will always return NULL since no transaction IDs can be
      assigned during recovery.
      
      Craig Ringer, per suggestion from Jim Nasby.  Reviewed by Petr Jelinek
      and by me.
      86f31695
    • Robert Haas's avatar
      Remove duplicate word from comment. · ff36700c
      Robert Haas authored
      Erik Rijkers
      ff36700c
    • Tom Lane's avatar
      Refactor some network.c code to create cidr_set_masklen_internal(). · 7b405b3e
      Tom Lane authored
      Merge several copies of "copy an inet value and adjust the mask length"
      code to create a single, conveniently C-callable function.  This function
      is exported for future use by inet SPGiST support, but it's good cleanup
      anyway since we had three slightly-different-for-no-good-reason copies.
      
      (Extracted from a larger patch, to separate new code from refactoring
      of old code)
      
      Emre Hasegeli
      7b405b3e
  3. 22 Aug, 2016 6 commits
  4. 20 Aug, 2016 2 commits
    • Tom Lane's avatar
      initdb now needs to reference libpq include files in MSVC builds. · 04164deb
      Tom Lane authored
      Fallout from commit a00c5831.  Per buildfarm.
      04164deb
    • Tom Lane's avatar
      Make initdb's suggested "pg_ctl start" command line more reliable. · a00c5831
      Tom Lane authored
      The original coding here was not nearly careful enough about quoting
      special characters, and it didn't get corner cases right for constructing
      the pg_ctl path either.  Use join_path_components() and appendShellString()
      to do it honestly, so that the string will more likely work if blindly
      copied-and-pasted.
      
      While at it, teach appendShellString() not to quote strings that clearly
      don't need it, so that the output from initdb doesn't become uglier than
      it was before in typical cases where quoting is not needed.
      
      Ryan Murphy, reviewed by Michael Paquier and myself
      
      Discussion: <CAHeEsBeAe1FeBypT3E8R1ZVZU0e8xv3A-7BHg6bEOi=jZny2Uw@mail.gmail.com>
      a00c5831
  5. 19 Aug, 2016 9 commits
    • Tom Lane's avatar
      Allow empty queries in pgbench. · 64710452
      Tom Lane authored
      This might have been too much of a foot-gun before 9.6, but with the
      new commands-end-at-semicolons parsing rule, the only way to get an
      empty query into a script is to explicitly write an extra ";".
      So we may as well allow the case.
      
      Fabien Coelho
      
      Patch: <alpine.DEB.2.20.1607090922170.3412@sto>
      64710452
    • Tom Lane's avatar
      Use LEFT JOINs in some system views in case referenced row doesn't exist. · 8299471c
      Tom Lane authored
      In particular, left join to pg_authid so that rows in pg_stat_activity
      don't disappear if the session's owning user has been dropped.
      Also convert a few joins to pg_database to left joins, in the same spirit,
      though that case might be harder to hit.  We were doing this in other
      views already, so it was a bit inconsistent that these views didn't.
      
      Oskari Saarenmaa, with some further tweaking by me
      
      Discussion: <56E87CD8.60007@ohmu.fi>
      8299471c
    • Tom Lane's avatar
      Guard against parallel-restricted functions in VALUES expressions. · 65a603e9
      Tom Lane authored
      Obvious brain fade in set_rel_consider_parallel().  Noticed it while
      adjusting the adjacent RTE_FUNCTION case.
      
      In 9.6, also make the code look more like what I just did in HEAD
      by removing the unnecessary function_rte_parallel_ok subroutine
      (it does nothing that expression_tree_walker wouldn't do).
      65a603e9
    • Tom Lane's avatar
      Speed up planner's scanning for parallel-query hazards. · da1c9163
      Tom Lane authored
      We need to scan the whole parse tree for parallel-unsafe functions.
      If there are none, we'll later need to determine whether particular
      subtrees contain any parallel-restricted functions.  The previous coding
      retained no knowledge from the first scan, even though this is very
      wasteful in the common case where the query contains only parallel-safe
      functions.  We can bypass all of the later scans by remembering that fact.
      This provides a small but measurable speed improvement when the case
      applies, and shouldn't cost anything when it doesn't.
      
      Patch by me, reviewed by Robert Haas
      
      Discussion: <3740.1471538387@sss.pgh.pa.us>
      da1c9163
    • Alvaro Herrera's avatar
      reorderbuffer: preserve errno while reporting error · 6f79ae7f
      Alvaro Herrera authored
      Clobbering errno during cleanup after an error is an oft-repeated, easy
      to make mistake.  Deal with it here as everywhere else, by saving it
      aside and restoring after cleanup, before ereport'ing.
      
      In passing, add a missing errcode declaration in another ereport() call
      in the same file, which I noticed while skimming the file looking for
      similar problems.
      
      Backpatch to 9.4, where this code was introduced.
      6f79ae7f
    • Tom Lane's avatar
      Clean up another pre-ANSI-C-ism in regex code: get rid of pcolor typedef. · a859e640
      Tom Lane authored
      pcolor was used to represent function arguments that are nominally of
      type color, but when using a pre-ANSI C compiler would be passed as the
      promoted integer type.  We really don't need that anymore.
      a859e640
    • Tom Lane's avatar
      Remove typedef celt from the regex library, along with macro NOCELT. · 6eefd242
      Tom Lane authored
      The regex library used to have a notion of a "collating element" that was
      distinct from a "character", but Henry Spencer never actually implemented
      his planned support for multi-character collating elements, and the Tcl
      crew ripped out most of the stubs for that years ago.  The only thing left
      that distinguished the "celt" typedef from the "chr" typedef was that
      "celt" was supposed to also be able to hold the not-a-character "NOCELT"
      value.  However, NOCELT was not used anywhere after the MCCE stub removal
      changes, which means there's no need for celt to be different from chr.
      Removing the separate typedef simplifies matters and also removes a trap
      for the unwary, in that celt is signed while chr may not be, so comparisons
      could mean different things.  There's no bug there today because we
      restrict CHR_MAX to be less than INT_MAX, but I think there may have been
      such bugs before we did that, and there could be again if anyone ever
      decides to fool with the range of chr.
      
      This patch also removes assorted unnecessary casts to "chr" of values
      that are already chrs.  Many of these seem to be leftover from days when
      the code was compatible with pre-ANSI C.
      6eefd242
    • Bruce Momjian's avatar
      doc: requirepeer is a way to avoid spoofing · 5285c5e8
      Bruce Momjian authored
      We already mentioned unix_socket_directories as an option.
      
      Reported-by: https://www.postgresql.org/message-id/45016837-6cf3-3136-f959-763d06a28076%402ndquadrant.com
      
      Backpatch-through: 9.6
      5285c5e8
    • Andres Freund's avatar
      Add alternative output for ON CONFLICT toast isolation test. · 9595383b
      Andres Freund authored
      On some buildfarm animals the isolationtest added in 07ef0351 failed, as
      the order in which processes are run after unlocking is not
      guaranteed. Add an alternative output for that.
      
      Discussion: <7969.1471484738@sss.pgh.pa.us>
      Backpatch: 9.6, like the test in the aforementioned commit
      9595383b
  6. 18 Aug, 2016 8 commits
    • Peter Eisentraut's avatar
      Remove obsolete replacement system() on darwin · 1d2e73a3
      Peter Eisentraut authored
      Per comment in the file, this was fixed around OS X 10.2.
      1d2e73a3
    • Tom Lane's avatar
      Update line count totals for psql help displays. · c5d4f40c
      Tom Lane authored
      As usual, we've been pretty awful about maintaining these counts.
      They're not all that critical, perhaps, but let's get them right
      at release time.  Also fix 9.5, which I notice is just as bad.
      It's probably wrong further back, but the lack of --help=foo
      options before 9.5 makes it too painful to count.
      c5d4f40c
    • Tom Lane's avatar
      In plpgsql, don't try to convert int2vector or oidvector to expanded array. · 5697522d
      Tom Lane authored
      These types are storage-compatible with real arrays, but they don't support
      toasting, so of course they can't support expansion either.
      
      Per bug #14289 from Michael Overmeyer.  Back-patch to 9.5 where expanded
      arrays were introduced.
      
      Report: <20160818174414.1529.37913@wrigleys.postgresql.org>
      5697522d
    • Peter Eisentraut's avatar
      doc: Speed up XSLT builds · e8306745
      Peter Eisentraut authored
      The upstream XSLT stylesheets use some very general XPath expressions in
      some places that end up being very slow.  We can optimize them with
      knowledge about the DocBook document structure and our particular use
      thereof.  For example, when counting preceding chapters to get a number
      for the current chapter, we only need to count preceding sibling
      nodes (more or less) instead of searching through the entire node tree
      for chapter elements.
      
      This change attacks the slowest pieces as identified by xsltproc
      --profile.  This makes the HTML build roughly 10 times faster, resulting
      in the new total build time being about the same as the old DSSSL-based
      build.  Some of the non-HTML build targets (especially FO) will also
      benefit a bit, but they have not been specifically analyzed.
      
      With this, also remove the pg.fast parameter, which was previously a
      hack to get the build to a manageable speed.
      
      Alexander Lakhin <a.lakhin@postgrespro.ru>, with some additional
      tweaking by me
      e8306745
    • Tom Lane's avatar
      Improve psql's tab completion for \l. · 8019b5a8
      Tom Lane authored
      Offer a list of database names; formerly no help was offered.
      
      Ian Barwick, reviewed by Gerdan Santos
      
      Patch: <5724132E.1030804@2ndquadrant.com>
      8019b5a8
    • Tom Lane's avatar
      Improve psql's tab completion for ALTER EXTENSION foo UPDATE ... · 49917dbd
      Tom Lane authored
      Offer a list of available versions for that extension.  Formerly, since
      there was no special support for this, it triggered off the UPDATE
      keyword and offered a list of table names --- not too helpful.
      
      Jeff Janes, reviewed by Gerdan Santos
      
      Patch: <CAMkU=1z0gxEOLg2BWa69P4X4Ot8xBxipGUiGkXe_tC+raj79-Q@mail.gmail.com>
      49917dbd
    • Tom Lane's avatar
      Support the new regexp_match() function for citext. · f9d747a4
      Tom Lane authored
      Emre Hasegeli
      
      Patch: <CAE2gYzzF24ZHWqkMukkHwqa0otbES9Rex22LrjQUNbi=oKziNQ@mail.gmail.com>
      f9d747a4
    • Peter Eisentraut's avatar
      Improve formatting of comments in plpgsql.h · 9f31e45a
      Peter Eisentraut authored
      This file had some unusual comment layout.  Most of the comments
      introducing structs ended up to the right of the screen and following
      the start of the struct.  Some comments for struct members ended up
      after the member definition.
      
      Fix that by moving comments consistently before what they are
      describing.  Also add missing struct tags where missing so that it is
      easier to tell what the struct is.
      9f31e45a