1. 24 May, 2016 2 commits
  2. 23 May, 2016 4 commits
    • Tom Lane's avatar
      Fix BTREE_BUILD_STATS build. · 1e0d6512
      Tom Lane authored
      Commit 65c5fcd3 broke this by removing a
      header include directive that is conditionally required.  Add that back
      to nbtree.c, with annotation to keep pgrminclude from re-breaking it.
      
      Peter Geoghegan
      
      Report: <CAM3SWZTNjHFYW_UG8bu0BnogqQ2HfsTgkzXLueuUhfTcYbu5HA@mail.gmail.com>
      1e0d6512
    • Tom Lane's avatar
      Support IndexElem in raw_expression_tree_walker(). · eae1ad9b
      Tom Lane authored
      Needed for cases in which INSERT ... ON CONFLICT appears inside a
      recursive CTE item.  Per bug #14153 from Thomas Alton.
      
      Patch by Peter Geoghegan, slightly adjusted by me
      
      Report: <20160521232802.22598.13537@wrigleys.postgresql.org>
      eae1ad9b
    • Tom Lane's avatar
      Add support for more extensive testing of raw_expression_tree_walker(). · 465e09da
      Tom Lane authored
      If RAW_EXPRESSION_COVERAGE_TEST is defined, do a no-op tree walk over
      every basic DML statement submitted to parse analysis.  If we'd had this
      in place earlier, bug #14153 would have been caught by buildfarm testing.
      The difficulty is that raw_expression_tree_walker() is only used in
      limited cases involving CTEs (particularly recursive ones), so it's
      very easy for an oversight in it to not be noticed during testing of a
      seemingly-unrelated feature.
      
      The type of error we can expect to catch with this is complete omission
      of a node type from raw_expression_tree_walker(), and perhaps also
      recursion into a field that doesn't contain a node tree, though that
      would be an unlikely mistake.  It won't catch failure to add new fields
      that need to be recursed into, unfortunately.
      
      I'll go enable this on one or two of my own buildfarm animals once
      bug #14153 is dealt with.
      
      Discussion: <27861.1464040417@sss.pgh.pa.us>
      465e09da
    • Tom Lane's avatar
      Fix latent crash in do_text_output_multiline(). · 8a4930e3
      Tom Lane authored
      do_text_output_multiline() would fail (typically with a null pointer
      dereference crash) if its input string did not end with a newline.  Such
      cases do not arise in our current sources; but it certainly could happen
      in future, or in extension code's usage of the function, so we should fix
      it.  To fix, replace "eol += len" with "eol = text + len".
      
      While at it, make two cosmetic improvements: mark the input string const,
      and rename the argument from "text" to "txt" to dodge pgindent strangeness
      (since "text" is a typedef name).
      
      Even though this problem is only latent at present, it seems like a good
      idea to back-patch the fix, since it's a very simple/safe patch and it's
      not out of the realm of possibility that we might in future back-patch
      something that expects sane behavior from do_text_output_multiline().
      
      Per report from Hao Lee.
      
      Report: <CAGoxFiFPAGyPAJLcFxTB5cGhTW2yOVBDYeqDugYwV4dEd1L_Ag@mail.gmail.com>
      8a4930e3
  3. 22 May, 2016 1 commit
  4. 21 May, 2016 2 commits
    • Tom Lane's avatar
      Improve docs about contrib/intarray's benchmark suite. · 768d6f90
      Tom Lane authored
      Correct obsolete install instructions, as noted by Daniel Gustafsson.
      Clarify the test code's prerequisites.
      
      Discussion: <88E617F2-7721-4C4E-84F4-886A2041C1D0@yesql.se>
      768d6f90
    • Tom Lane's avatar
      Improve docs about using ORDER BY to control aggregate input order. · 82eafabe
      Tom Lane authored
      David Johnston pointed out that the original text here had been obsoleted
      by SQL:2008, which allowed ORDER BY in subqueries.  We could weaken the
      text to describe ORDER-BY-in-subqueries as an optional SQL feature that's
      possibly unportable; but then the exact same statements would apply to
      the alternative it's being compared to (ORDER-BY-in-aggregate-calls).
      So really that would be pretty useless; let's just take out the sentence
      entirely.  Instead, point out the hazard that any extra processing in the
      upper query might cause the subquery output order to be destroyed.
      
      Discussion: <CAKFQuwbAX=iO9QbpN7_jr+BnUWm9FYX8WbEPUvG0p+nZhp6TZg@mail.gmail.com>
      82eafabe
  5. 20 May, 2016 2 commits
  6. 19 May, 2016 1 commit
    • Tom Lane's avatar
      Pin the built-in index access methods. · 16ea51a2
      Tom Lane authored
      This was overlooked in commit 473b9328, which introduced DROP ACCESS
      METHOD.  Although that command is restricted to superusers, we don't want
      even superusers dropping the built-in methods; "DROP ACCESS METHOD btree"
      in particular is unrecoverable from.  Pin these objects in the same way
      that other initdb-created objects are pinned.
      
      I chose to bump catversion for this fix.  That's not absolutely necessary
      perhaps, but it will ensure that no 9.6 production systems are missing
      the pin entries.
      16ea51a2
  7. 17 May, 2016 3 commits
    • Tom Lane's avatar
      Avoid possible crash in contrib/bloom's blendscan(). · e13ac558
      Tom Lane authored
      It's possible to begin and end an indexscan without ever calling
      amrescan.  contrib/bloom, unlike every other index AM, allocated
      its "scan->opaque" storage at amrescan time, and thus would crash
      in amendscan if amrescan hadn't been called.  We could fix this
      by putting in a null-pointer check in blendscan, but I see no very
      good reason why contrib/bloom should march to its own drummer in
      this respect.  Let's move that initialization to blbeginscan
      instead.  Per report from Jeff Janes.
      e13ac558
    • Teodor Sigaev's avatar
      Allocate all page images at once in generic wal interface · 7c979c95
      Teodor Sigaev authored
      That reduces number of allocation.
      
      Per gripe from Michael Paquier and Tom Lane suggestion.
      7c979c95
    • Magnus Hagander's avatar
      Fix typo · b09cd2e5
      Magnus Hagander authored
      Amit Langote
      b09cd2e5
  8. 16 May, 2016 3 commits
    • Teodor Sigaev's avatar
      Correctly align page's images in generic wal API · 7c8345f6
      Teodor Sigaev authored
      Page image should be MAXALIGN'ed because existing code could directly align
      pointers in page instead of align offset from beginning of page.
      
      Found during play with indexes as extenstion, Alexander Korotkov and me
      7c8345f6
    • Robert Haas's avatar
      postgres_fdw: Fix the fix for crash when pushing down multiple joins. · 02a568a0
      Robert Haas authored
      Commit 3151f16e was intended to be
      a commit of a patch from Ashutosh Bapat, but instead I mistakenly
      committed an earlier version from Michael Paquier (because both
      patches were submitted with the same filename, and I confused them).
      Michael's patch fixes the crash but doesn't actually implement the
      correct test.
      
      Repair the incorrect logic, and also expand the comments considerably
      so that this is all more clear.
      
      Ashutosh Bapat and Robert Haas
      02a568a0
    • Robert Haas's avatar
      Fix multiple problems in postgres_fdw query cancellation logic. · 1b812afb
      Robert Haas authored
      First, even if we cancel a query, we still have to roll back the
      containing transaction; otherwise, the session will be left in a
      failed transaction state.
      
      Second, we need to support canceling queries whe aborting a
      subtransaction as well as when aborting a toplevel transaction.
      
      Etsuro Fujita, reviewed by Michael Paquier
      1b812afb
  9. 15 May, 2016 1 commit
    • Tom Lane's avatar
      Fix comment. · b7a9347c
      Tom Lane authored
      Reference to getThreadLocalPQExpBuffer here seems inappropriate, since
      we aren't necessarily using that instantiation of getLocalPQExpBuffer.
      b7a9347c
  10. 14 May, 2016 3 commits
  11. 13 May, 2016 2 commits
  12. 12 May, 2016 4 commits
  13. 11 May, 2016 3 commits
    • Tom Lane's avatar
      Fix infer_arbiter_indexes() to not barf on system columns. · 8a13d5e6
      Tom Lane authored
      While it could be argued that rejecting system column mentions in the
      ON CONFLICT list is an unsupported feature, falling over altogether
      just because the table has a unique index on OID is indubitably a bug.
      
      As far as I can tell, fixing infer_arbiter_indexes() is sufficient to
      make ON CONFLICT (oid) actually work, though making a regression test
      for that case is problematic because of the impossibility of setting
      the OID counter to a known value.
      
      Minor cosmetic cleanups along with the bug fix.
      8a13d5e6
    • Tom Lane's avatar
      Fix assorted missing infrastructure for ON CONFLICT. · 26e66184
      Tom Lane authored
      subquery_planner() failed to apply expression preprocessing to the
      arbiterElems and arbiterWhere fields of an OnConflictExpr.  No doubt the
      theory was that this wasn't necessary because we don't actually try to
      execute those expressions; but that's wrong, because it results in failure
      to match to index expressions or index predicates that are changed at all
      by preprocessing.  Per bug #14132 from Reynold Smith.
      
      Also add pullup_replace_vars processing for onConflictWhere.  Perhaps
      it's impossible to have a subquery reference there, but I'm not exactly
      convinced; and even if true today it's a failure waiting to happen.
      
      Also add some comments to other places where one or another field of
      OnConflictExpr is intentionally ignored, with explanation as to why it's
      okay to do so.
      
      Also, catalog/dependency.c failed to record any dependency on the named
      constraint in ON CONFLICT ON CONSTRAINT, allowing such a constraint to
      be dropped while rules exist that depend on it, and allowing pg_dump to
      dump such a rule before the constraint it refers to.  The normal execution
      path managed to error out reasonably for a dangling constraint reference,
      but ruleutils.c dumped core; so in addition to fixing the omission, add
      a protective check in ruleutils.c, since we can't retroactively add a
      dependency in existing databases.
      
      Back-patch to 9.5 where this code was introduced.
      
      Report: <20160510190350.2608.48667@wrigleys.postgresql.org>
      26e66184
    • Peter Eisentraut's avatar
      Update key words table for 9.6 · 9be58a2b
      Peter Eisentraut authored
      9be58a2b
  14. 10 May, 2016 1 commit
  15. 09 May, 2016 2 commits
  16. 08 May, 2016 5 commits
  17. 07 May, 2016 1 commit