1. 24 Feb, 2018 6 commits
    • Peter Eisentraut's avatar
      Add current directory to Perl include path · 9ee0573e
      Peter Eisentraut authored
      Recent Perl versions don't have the current directory in the module
      include path anymore, so we need to add it here explicitly to make these
      scripts continue to work.
      9ee0573e
    • Peter Eisentraut's avatar
    • Tom Lane's avatar
      Fix thinko in in_range_float4_float8. · 32291aed
      Tom Lane authored
      I forgot the coding rule for correct use of Float8GetDatumFast.
      Per buildfarm.
      32291aed
    • Tom Lane's avatar
      Add window RANGE support for float4, float8, numeric. · 8b29e88c
      Tom Lane authored
      Commit 0a459cec left this for later, but since time's running out,
      I went ahead and took care of it.  There are more data types that
      somebody might someday want RANGE support for, but this is enough
      to satisfy all expectations of the SQL standard, which just says that
      "numeric, datetime, and interval" types should have RANGE support.
      8b29e88c
    • Peter Eisentraut's avatar
      Check error messages in SSL tests · 081bfc19
      Peter Eisentraut authored
      In tests that check whether a connection fails, also check the error
      message.  That makes sure that the connection was rejected for the right
      reason.
      
      This discovered that two tests had their connection failing for the
      wrong reason.  One test failed because pg_hba.conf was not set up to
      allow that user, one test failed because the client key file did not
      have the right permissions.  Fix those tests and add a new one that is
      really supposed to check the file permission issue.
      Reviewed-by: default avatarMichael Paquier <michael@paquier.xyz>
      081bfc19
    • Peter Eisentraut's avatar
      Fix filtering of unsupported relations in logical replication · bc1adc65
      Peter Eisentraut authored
      In the pgoutput plugin, skip changes for relations that are not
      publishable, per is_publishable_class().  This concerns in particular
      materialized views and information_schema tables.  While those relations
      cannot be part of a publication, per existing checks, they will be
      considered by a FOR ALL TABLES publication.  A subscription would not
      actually apply changes for those relations, again per existing checks,
      but trying to match incoming changes to local tables on the subscriber
      would lead to errors if no matching local table exists.  Skipping those
      changes on the publisher avoids sending useless changes and eliminates
      the error.
      
      Bug: #15044
      Reported-by: default avatarChad Trabant <chad@iris.washington.edu>
      Reviewed-by: default avatarPetr Jelinek <petr.jelinek@2ndquadrant.com>
      bc1adc65
  2. 23 Feb, 2018 8 commits
    • Tom Lane's avatar
      First-draft release notes for 10.3. · eec1a8cb
      Tom Lane authored
      eec1a8cb
    • Tom Lane's avatar
      Fix brown-paper-bag bug in commit 0a459cec. · 9fe802c8
      Tom Lane authored
      RANGE_OFFSET comparisons need to examine the first ORDER BY column,
      which isn't necessarily the first column in the incoming tuples.
      No idea how this slipped through initial testing.
      
      Per bug #15082 from Zhou Digoal.
      
      Discussion: https://postgr.es/m/151939899974.1461.9411971793110285476@wrigleys.postgresql.org
      9fe802c8
    • Tom Lane's avatar
      Allow auto_explain.log_min_duration to go up to INT_MAX. · 8af87f41
      Tom Lane authored
      The previous limit of INT_MAX / 1000 seems to have been cargo-culted in
      from somewhere else.  Or possibly the value was converted to microseconds
      at some point; but in all supported releases, it's just compared to other
      values, so there's no need for the restriction.  This change raises the
      effective limit from ~35 minutes to ~24 days, which conceivably is useful
      to somebody, and anyway it's more consistent with the range of the core
      log_min_duration_statement GUC.
      
      Per complaint from Kevin Bloch.  Back-patch to all supported releases.
      
      Discussion: https://postgr.es/m/8ea82d7e-cb78-8e05-0629-73aa14d2a0ca@codingthat.com
      8af87f41
    • Noah Misch's avatar
      Synchronize doc/ copies of src/test/examples/. · fe35cea7
      Noah Misch authored
      This is mostly cosmetic, but it might fix build failures, on some
      platform, when copying from the documentation.
      
      Back-patch to 9.3 (all supported versions).
      fe35cea7
    • Tom Lane's avatar
      Fix planner failures with overlapping mergejoin clauses in an outer join. · 9afd513d
      Tom Lane authored
      Given overlapping or partially redundant join clauses, for example
      	t1 JOIN t2 ON t1.a = t2.x AND t1.b = t2.x
      the planner's EquivalenceClass machinery will ordinarily refactor the
      clauses as "t1.a = t1.b AND t1.a = t2.x", so that join processing doesn't
      see multiple references to the same EquivalenceClass in a list of join
      equality clauses.  However, if the join is outer, it's incorrect to derive
      a restriction clause on the outer side from the join conditions, so the
      clause refactoring does not happen and we end up with overlapping join
      conditions.  The code that attempted to deal with such cases had several
      subtle bugs, which could result in "left and right pathkeys do not match in
      mergejoin" or "outer pathkeys do not match mergeclauses" planner errors,
      if the selected join plan type was a mergejoin.  (It does not appear that
      any actually incorrect plan could have been emitted.)
      
      The core of the problem really was failure to recognize that the outer and
      inner relations' pathkeys have different relationships to the mergeclause
      list.  A join's mergeclause list is constructed by reference to the outer
      pathkeys, so it will always be ordered the same as the outer pathkeys, but
      this cannot be presumed true for the inner pathkeys.  If the inner sides of
      the mergeclauses contain multiple references to the same EquivalenceClass
      ({t2.x} in the above example) then a simplistic rendering of the required
      inner sort order is like "ORDER BY t2.x, t2.x", but the pathkey machinery
      recognizes that the second sort column is redundant and throws it away.
      The mergejoin planning code failed to account for that behavior properly.
      One error was to try to generate cut-down versions of the mergeclause list
      from cut-down versions of the inner pathkeys in the same way as the initial
      construction of the mergeclause list from the outer pathkeys was done; this
      could lead to choosing a mergeclause list that fails to match the outer
      pathkeys.  The other problem was that the pathkey cross-checking code in
      create_mergejoin_plan treated the inner and outer pathkey lists
      identically, whereas actually the expectations for them must be different.
      That led to false "pathkeys do not match" failures in some cases, and in
      principle could have led to failure to detect bogus plans in other cases,
      though there is no indication that such bogus plans could be generated.
      
      Reported by Alexander Kuzmenkov, who also reviewed this patch.  This has
      been broken for years (back to around 8.3 according to my testing), so
      back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/5dad9160-4632-0e47-e120-8e2082000c01@postgrespro.ru
      9afd513d
    • Robert Haas's avatar
      Revise API for partition bound search functions. · f724022d
      Robert Haas authored
      Similar to what commit b0229235 for a
      different set of functions, pass the required bits of the PartitionKey
      instead of the whole thing.  This allows these functions to be used
      without needing the PartitionKey to be available.
      
      Amit Langote.  The larger patch series of which this patch is a part
      has been reviewed and tested by Ashutosh Bapat, David Rowley, Dilip
      Kumar, Jesper Pedersen, Rajkumar Raghuwanshi, Beena Emerson, Kyotaro
      Horiguchi, Álvaro Herrera, and me, but especially and in great detail
      by David Rowley.
      
      Discussion: http://postgr.es/m/098b9c71-1915-1a2a-8d52-1a7a50ce79e8@lab.ntt.co.jp
      Discussion: http://postgr.es/m/1f6498e8-377f-d077-e791-5dc84dba2c00@lab.ntt.co.jp
      f724022d
    • Robert Haas's avatar
      Revise API for partition_rbound_cmp/partition_rbound_datum_cmp. · b0229235
      Robert Haas authored
      Instead of passing the PartitionKey, pass just the required bits of
      it.  This allows these functions to be used without needing the
      PartitionKey to be available, which is important for several
      pending patches.
      
      Ashutosh Bapat, reviewed by Amit Langote, with a comment tweak
      by me.
      
      Discussion: http://postgr.es/m/3d835ed1-36ab-f06d-0ce8-a76a2bbf7677@lab.ntt.co.jp
      Discussion: http://postgr.es/m/b4d88995-094b-320c-b614-2282fae0bf6c@lab.ntt.co.jp
      b0229235
    • Peter Eisentraut's avatar
      Support parameters in CALL · 76b6aa41
      Peter Eisentraut authored
      To support parameters in CALL, move the parse analysis of the procedure
      and arguments into the global transformation phase, so that the parser
      hooks can be applied.  And then at execution time pass the parameters
      from ProcessUtility on to ExecuteCallStmt.
      76b6aa41
  3. 22 Feb, 2018 10 commits
    • Robert Haas's avatar
    • Peter Eisentraut's avatar
      Fix perlcritic warnings · abcba700
      Peter Eisentraut authored
      abcba700
    • Peter Eisentraut's avatar
      Update gratuitous use of MD5 in documentation · 0db2fc98
      Peter Eisentraut authored
      It seems some people are bothered by the outdated MD5 appearing in
      example code.  So replace it with more modern alternatives or by
      a different example function.
      Reported-by: default avatarJon Wolski <jonwolski@gmail.com>
      0db2fc98
    • Peter Eisentraut's avatar
      Add user-callable SHA-2 functions · 10cfce34
      Peter Eisentraut authored
      Add the user-callable functions sha224, sha256, sha384, sha512.  We
      already had these in the C code to support SCRAM, but there was no test
      coverage outside of the SCRAM tests.  Adding these as user-callable
      functions allows writing some tests.  Also, we have a user-callable md5
      function but no more modern alternative, which led to wide use of md5 as
      a general-purpose hash function, which leads to occasional complaints
      about using md5.
      
      Also mark the existing md5 functions as leak-proof.
      Reviewed-by: default avatarMichael Paquier <michael@paquier.xyz>
      10cfce34
    • Robert Haas's avatar
      Be lazier about partition tuple routing. · edd44738
      Robert Haas authored
      It's not necessary to fully initialize the executor data structures
      for partitions to which no tuples are ever routed.  Consider, for
      example, an INSERT statement that inserts only one row: it only cares
      about the partition to which that one row is routed.  The new function
      ExecInitPartitionInfo performs the initialization in question only
      when a particular partition is about to receive a tuple. This includes
      creating, validating, and saving a pointer to the ResultRelInfo,
      setting up for speculative insertions, translating WCOs and
      initializing the resulting expressions, translating returning lists
      and building the appropriate projection information, and setting up a
      tuple conversion map.
      
      One thing that's not deferred is locking the child partitions; that
      seems desirable but would need more thought.  Still, testing shows
      that this makes single-row inserts significantly faster on a table
      with many partitions without harming the bulk-insert case.
      
      Amit Langote, reviewed by Etsuro Fujita, with a few changes by me
      
      Discussion: http://postgr.es/m/8975331d-d961-cbdd-f862-fdd3d97dc2d0@lab.ntt.co.jp
      edd44738
    • Robert Haas's avatar
      Remove extra word from comment. · 810e7e26
      Robert Haas authored
      Etsuro Fujita
      
      Discussion: http://postgr.es/m/5A8EAF74.5010905@lab.ntt.co.jp
      810e7e26
    • Robert Haas's avatar
      postgres_fdw: Fix interaction of PHVs with child joins. · 84cb51b4
      Robert Haas authored
      Commit f49842d1 introduced the
      concept of a child join, but did not update this code accordingly.
      
      Ashutosh Bapat, with cosmetic changes by me
      
      Discussion: http://postgr.es/m/CAFjFpRf=J_KPOtw+bhZeURYkbizr8ufSaXg6gPEF6DKpgH-t6g@mail.gmail.com
      84cb51b4
    • Robert Haas's avatar
      Avoid another valgrind complaint about write() of uninitalized bytes. · de6428af
      Robert Haas authored
      Peter Geoghegan, per buildfarm member skink and Andres Freund
      
      Discussion: http://postgr.es/m/20180221053426.gp72lw67yfpzkw7a@alap3.anarazel.de
      de6428af
    • Robert Haas's avatar
      Try to stabilize EXPLAIN output in partition_check test. · 9a5c4f58
      Robert Haas authored
      Commit 7d8ac981 adjusted these
      tests in the hope of preserving the plan shape, but I failed to
      notice that the three partitions were, on my local machine, choosing
      two different plan shapes.  This is probably related to the fact
      that all three tables have exactly the same row count.  Try to
      improve the situation by making pht1_e about half as large as
      the other two.
      
      Per Tom Lane and the buildfarm.
      
      Discussion: http://postgr.es/m/25380.1519277713@sss.pgh.pa.us
      9a5c4f58
    • Robert Haas's avatar
      Charge cpu_tuple_cost * 0.5 for Append and MergeAppend nodes. · 7d8ac981
      Robert Haas authored
      Previously, Append didn't charge anything at all, and MergeAppend
      charged only cpu_operator_cost, about half the value used here.  This
      change might make MergeAppend plans slightly more likely to be chosen
      than before, since this commit increases the assumed cost for Append
      -- with default values -- by 0.005 per tuple but MergeAppend by only
      0.0025 per tuple.  Since the comparisons required by MergeAppend are
      costed separately, it's not clear why MergeAppend needs to be
      otherwise more expensive than Append, so hopefully this is OK.
      
      Prior to partition-wise join, it didn't really matter whether or not
      an Append node had any cost of its own, because every plan had to use
      the same number of Append or MergeAppend nodes and in the same places.
      Only the relative cost of Append vs. MergeAppend made a difference.
      Now, however, it is possible to avoid some of the Append nodes using a
      partition-wise join, so it's worth making an effort.  Pending patches
      for partition-wise aggregate care too, because an Append of Aggregate
      nodes will incur the Append overhead fewer times than an Aggregate
      over an Append.  Although in most cases this change will favor the use
      of partition-wise techniques, it does the opposite when the join
      cardinality is greater than the sum of the input cardinalities.  Since
      this situation arises in an existing regression test, I [rhaas]
      adjusted it to keep the overall plan shape approximately the same.
      
      Jeevan Chalke, per a suggestion from David Rowley.  Reviewed by
      Ashutosh Bapat.  Some changes by me.  The larger patch series of which
      this patch is a part was also reviewed and tested by Antonin Houska,
      Rajkumar Raghuwanshi, David Rowley, Dilip Kumar, Konstantin Knizhnik,
      Pascal Legrand, Rafia Sabih, and me.
      
      Discussion: http://postgr.es/m/CAKJS1f9UXdk6ZYyqbJnjFO9a9hyHKGW7B=ZRh-rxy9qxfPA5Gw@mail.gmail.com
      7d8ac981
  4. 21 Feb, 2018 2 commits
    • Tom Lane's avatar
      Repair pg_upgrade's failure to preserve relfrozenxid for matviews. · 38b41f18
      Tom Lane authored
      This oversight led to data corruption in matviews, manifesting as
      "could not access status of transaction" before our most recent releases,
      and "found xmin from before relfrozenxid" errors since then.
      
      The proximate cause of the problem seems to have been confusion between
      the task of preserving dropped-column status and the task of preserving
      frozenxid status.  Those are required for distinct sets of relkinds,
      and the reasoning was entirely undocumented in the source code.  In hopes
      of forestalling future errors of the same kind, try to improve the
      commentary in this area.
      
      In passing, also improve the remarkably unhelpful comments around
      pg_upgrade's set_frozenxids().  That's not actually buggy AFAICS,
      but good luck figuring out what it does from the old comments.
      
      Per report from Claudio Freire.  It appears that bug #14852 from Alexey
      Ermakov is an earlier report of the same issue, and there may be other
      cases that we failed to identify at the time.
      
      Patch by me based on analysis by Andres Freund.  The bug dates back
      to the introduction of matviews, so back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/CAGTBQpbrY9CdRGGhyBZ9yqY4jWaGC85rUF4X+R7d-aim=mBNsw@mail.gmail.com
      Discussion: https://postgr.es/m/20171013115320.28049.86457@wrigleys.postgresql.org
      38b41f18
    • Andres Freund's avatar
      Blindly attempt to adapt sepgsql regression tests. · 29d432e4
      Andres Freund authored
      Commit bf6c614a broke the sepgsql test
      due to a new invocation of the function access hook during grouping
      equal initialization.
      
      The new behaviour seems at least as correct as the old one, so try
      adapt the tests. As I've no working sepgsql setup here, this is just
      going from buildfarm results.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20180217000337.lfsdvro3l6ccsksp@alap3.anarazel.de
      29d432e4
  5. 20 Feb, 2018 6 commits
  6. 19 Feb, 2018 7 commits
  7. 18 Feb, 2018 1 commit