1. 04 Dec, 2017 3 commits
    • Robert Haas's avatar
      When VACUUM or ANALYZE skips a concurrently dropped table, log it. · ab6eaee8
      Robert Haas authored
      Hopefully, the additional logging will help avoid confusion that
      could otherwise result.
      
      Nathan Bossart, reviewed by Michael Paquier, Fabrízio Mello, and me
      ab6eaee8
    • Tom Lane's avatar
      Support boolean columns in functional-dependency statistics. · ecc27d55
      Tom Lane authored
      There's no good reason that the multicolumn stats stuff shouldn't work on
      booleans.  But it looked only for "Var = pseudoconstant" clauses, and it
      will seldom find those for boolean Vars, since earlier phases of planning
      will fold "boolvar = true" or "boolvar = false" to just "boolvar" or
      "NOT boolvar" respectively.  Improve dependencies_clauselist_selectivity()
      to recognize such clauses as equivalent to equality restrictions.
      
      This fixes a failure of the extended stats mechanism to apply in a case
      reported by Vitaliy Garnashevich.  It's not a complete solution to his
      problem because the bitmap-scan costing code isn't consulting extended
      stats where it should, but that's surely an independent issue.
      
      In passing, improve some comments, get rid of a NumRelids() test that's
      redundant with the preceding bms_membership() test, and fix
      dependencies_clauselist_selectivity() so that estimatedclauses actually
      is a pure output argument as stated by its API contract.
      
      Back-patch to v10 where this code was introduced.
      
      Discussion: https://postgr.es/m/73a4936d-2814-dc08-ed0c-978f76f435b0@gmail.com
      ecc27d55
    • Robert Haas's avatar
      Remove memory leak protection from Gather and Gather Merge nodes. · 9f4992e2
      Robert Haas authored
      Before commit 6b65a7fe, tqueue.c could
      perform tuple remapping and thus leak memory, which is why commit
      af330393 made TupleQueueReaderNext
      run in a short-lived context.  Now, however, tqueue.c has been reduced
      to a shadow of its former self, and there shouldn't be any chance of
      leaks any more.  Accordingly, remove some tuple copying and memory
      context manipulation to speed up processing.
      
      Patch by me, reviewed by Amit Kapila.  Some testing by Rafia Sabih.
      
      Discussion: http://postgr.es/m/CAA4eK1LSDydwrNjmYSNkfJ3ZivGSWH9SVswh6QpNzsMdj_oOQA@mail.gmail.com
      9f4992e2
  2. 03 Dec, 2017 1 commit
  3. 02 Dec, 2017 2 commits
  4. 01 Dec, 2017 7 commits
  5. 30 Nov, 2017 7 commits
    • Robert Haas's avatar
      Remove extra word from comment. · 06ae669c
      Robert Haas authored
      David Rowley, who also was the primary author of the patch that
      added this function; the attribution in my previous commit,
      84940644, was incorrect due to
      sloppiness on my part.
      
      Discussion: http://postgr.es/m/CAKJS1f_0iSiLQsf_c06AzOWAc3eS6ePjjVQFpcFv3W-O5aktnQ@mail.gmail.com
      06ae669c
    • Peter Eisentraut's avatar
      SQL procedures · e4128ee7
      Peter Eisentraut authored
      This adds a new object type "procedure" that is similar to a function
      but does not have a return type and is invoked by the new CALL statement
      instead of SELECT or similar.  This implementation is aligned with the
      SQL standard and compatible with or similar to other SQL implementations.
      
      This commit adds new commands CALL, CREATE/ALTER/DROP PROCEDURE, as well
      as ALTER/DROP ROUTINE that can refer to either a function or a
      procedure (or an aggregate function, as an extension to SQL).  There is
      also support for procedures in various utility commands such as COMMENT
      and GRANT, as well as support in pg_dump and psql.  Support for defining
      procedures is available in all the languages supplied by the core
      distribution.
      
      While this commit is mainly syntax sugar around existing functionality,
      future features will rely on having procedures as a separate object
      type.
      Reviewed-by: default avatarAndrew Dunstan <andrew.dunstan@2ndquadrant.com>
      e4128ee7
    • Robert Haas's avatar
      Make create_unique_path manage memory like mark_dummy_rel. · 1761653b
      Robert Haas authored
      Put the unique path in the same context as the owning RelOptInfo, rather
      than the toplevel planner context.  This is how this function worked
      originally, but commit f41803bb
      changed it without explanation.  mark_dummy_rel adopted the older (or
      newer?) technique in commit eca75a12,
      which also featured a much better explanation of why it is correct.
      So, switch back to that technique here, with the same explanation
      given there.
      
      Although this fixes a possible memory leak when GEQO is in use, the
      leak is minor and probably nobody cares, so no back-patch.
      
      Ashutosh Bapat, reviewed by Tom Lane and by me
      
      Discussion: http://postgr.es/m/CAFjFpRcXkHHrXyD9BCvkgGJV4TnHG2SWJ0PhJfrDu3NAcQvh7g@mail.gmail.com
      1761653b
    • Noah Misch's avatar
      Fix non-GNU makefiles for AIX make. · e21a556e
      Noah Misch authored
      Invoking the Makefile without an explicit target was building every
      possible target instead of just the "all" target.  Back-patch to 9.3
      (all supported versions).
      e21a556e
    • Tom Lane's avatar
      Fix neqjoinsel's behavior for semi/anti join cases. · 7ca25b7d
      Tom Lane authored
      Previously, this function estimated the selectivity as 1 minus eqjoinsel()
      for the negator equality operator, regardless of join type (I think there
      was an expectation that eqjoinsel would handle the join type).  But
      actually this is completely wrong for semijoin cases: the fraction of the
      LHS that has a non-matching row is not one minus the fraction of the LHS
      that has a matching row.  In reality a semijoin with <> will nearly always
      succeed: it can only fail when the RHS is empty, or it contains a single
      distinct value that is equal to the particular LHS value, or the LHS value
      is null.  The only one of those things we should have much confidence in
      estimating is the fraction of LHS values that are null, so let's just take
      the selectivity as 1 minus outer nullfrac.
      
      Per coding convention, antijoin should be estimated the same as semijoin.
      
      Arguably this is a bug fix, but in view of the lack of field complaints
      and the risk of destabilizing plans, no back-patch.
      
      Thomas Munro, reviewed by Ashutosh Bapat
      
      Discussion: https://postgr.es/m/CAEepm=270ze2hVxWkJw-5eKzc3AB4C9KpH3L2kih75R5pdSogg@mail.gmail.com
      7ca25b7d
    • Andres Freund's avatar
      Add a barrier primitive for synchronizing backends. · 1145acc7
      Andres Freund authored
      Provide support for dynamic or static parties of processes to wait for
      all processes to reach point in the code before continuing.
      
      This is similar to the mechanism of the same name in POSIX threads and
      MPI, though has explicit phasing and dynamic party support like the
      Java core library's Phaser.
      
      This will be used by an upcoming patch adding support for parallel
      hash joins.
      
      Author: Thomas Munro
      Reviewed-By: Andres Freund
      Discussion: https://postgr.es/m/CAEepm=2_y7oi01OjA_wLvYcWMc9_d=LaoxrY3eiROCZkB_qakA@mail.gmail.com
      1145acc7
    • Andres Freund's avatar
      Add some regression tests that exercise hash join code. · fa330f9a
      Andres Freund authored
      Although hash joins are already tested by many queries, these tests
      systematically cover the four different states we can reach as part of
      the strategy for respecting work_mem.
      
      Author: Thomas Munro
      Reviewed-By: Andres Freund
      fa330f9a
  6. 29 Nov, 2017 8 commits
  7. 28 Nov, 2017 10 commits
  8. 27 Nov, 2017 2 commits
    • Tom Lane's avatar
      Fix creation of resjunk tlist entries for inherited mixed UPDATE/DELETE. · 9a785ad5
      Tom Lane authored
      rewriteTargetListUD's processing is dependent on the relkind of the query's
      target table.  That was fine at the time it was made to act that way, even
      for queries on inheritance trees, because all tables in an inheritance tree
      would necessarily be plain tables.  However, the 9.5 feature addition
      allowing some members of an inheritance tree to be foreign tables broke the
      assumption that rewriteTargetListUD's output tlist could be applied to all
      child tables with nothing more than column-number mapping.  This led to
      visible failures if foreign child tables had row-level triggers, and would
      also break in cases where child tables belonged to FDWs that used methods
      other than CTID for row identification.
      
      To fix, delay running rewriteTargetListUD until after the planner has
      expanded inheritance, so that it is applied separately to the (already
      mapped) tlist for each child table.  We can conveniently call it from
      preprocess_targetlist.  Refactor associated code slightly to avoid the
      need to heap_open the target relation multiple times during
      preprocess_targetlist.  (The APIs remain a bit ugly, particularly around
      the point of which steps scribble on parse->targetList and which don't.
      But avoiding such scribbling would require a change in FDW callback APIs,
      which is more pain than it's worth.)
      
      Also fix ExecModifyTable to ensure that "tupleid" is reset to NULL when
      we transition from rows providing a CTID to rows that don't.  (That's
      really an independent bug, but it manifests in much the same cases.)
      
      Add a regression test checking one manifestation of this problem, which
      was that row-level triggers on a foreign child table did not work right.
      
      Back-patch to 9.5 where the problem was introduced.
      
      Etsuro Fujita, reviewed by Ildus Kurbangaliev and Ashutosh Bapat
      
      Discussion: https://postgr.es/m/20170514150525.0346ba72@postgrespro.ru
      9a785ad5
    • Simon Riggs's avatar
      11746900