1. 18 May, 2018 4 commits
  2. 17 May, 2018 4 commits
  3. 16 May, 2018 5 commits
    • Tom Lane's avatar
      Detoast plpgsql variables if they might live across a transaction boundary. · 2efc9241
      Tom Lane authored
      Up to now, it's been safe for plpgsql to store TOAST pointers in its
      variables because the ActiveSnapshot for whatever query called the plpgsql
      function will surely protect such TOAST values from being vacuumed away,
      even if the owning table rows are committed dead.  With the introduction of
      procedures, that assumption is no longer good in "non atomic" executions
      of plpgsql code.  We adopt the slightly brute-force solution of detoasting
      all TOAST pointers at the time they are stored into variables, if we're in
      a non-atomic context, just in case the owning row goes away.
      
      Some care is needed to avoid long-term memory leaks, since plpgsql tends
      to run with CurrentMemoryContext pointing to its call-lifespan context,
      but we shouldn't assume that no memory is leaked by heap_tuple_fetch_attr.
      In plpgsql proper, we can do the detoasting work in the "eval_mcontext".
      
      Most of the code thrashing here is due to the need to add this capability
      to expandedrecord.c as well as plpgsql proper.  In expandedrecord.c,
      we can't assume that the caller's context is short-lived, so make use of
      the short-term sub-context that was already invented for checking domain
      constraints.  In view of this repurposing, it seems good to rename that
      variable and associated code from "domain_check_cxt" to "short_term_cxt".
      
      Peter Eisentraut and Tom Lane
      
      Discussion: https://postgr.es/m/5AC06865.9050005@anastigmatix.net
      2efc9241
    • Tom Lane's avatar
      Fix misprocessing of equivalence classes involving record_eq(). · a11b3bd3
      Tom Lane authored
      canonicalize_ec_expression() is supposed to agree with coerce_type() as to
      whether a RelabelType should be inserted to make a subexpression be valid
      input for the operators of a given opclass.  However, it did the wrong
      thing with named-composite-type inputs to record_eq(): it put in a
      RelabelType to RECORDOID, which the parser doesn't.  In some cases this was
      harmless because all code paths involving a particular equivalence class
      did the same thing, but in other cases this would result in failing to
      recognize a composite-type expression as being a member of an equivalence
      class that it actually is a member of.  The most obvious bad effect was to
      fail to recognize that an index on a composite column could provide the
      sort order needed for a mergejoin on that column, as reported by Teodor
      Sigaev.  I think there might be other, subtler, cases that result in
      misoptimization.  It also seems possible that an unwanted RelabelType
      would sometimes get into an emitted plan --- but because record_eq and
      friends don't examine the declared type of their input expressions, that
      would not create any visible problems.
      
      To fix, just treat RECORDOID as if it were a polymorphic type, which in
      some sense it is.  We might want to consider formalizing that a bit more
      someday, but for the moment this seems to be the only place where an
      IsPolymorphicType() test ought to include RECORDOID as well.
      
      This has been broken for a long time, so back-patch to all supported
      branches.
      
      Discussion: https://postgr.es/m/a6b22369-e3bf-4d49-f59d-0c41d3551e81@sigaev.ru
      a11b3bd3
    • Robert Haas's avatar
      Pass the correct PlannerInfo to PlanForeignModify/PlanDirectModify. · 7fc7dac1
      Robert Haas authored
      Previously, we passed the toplevel PlannerInfo, but we actually want
      to pass the relevant subroot.  One problem with passing the toplevel
      PlannerInfo is that the FDW which wants to push down an UPDATE or
      DELETE against a join won't find the relevant joinrel there.
      As of commit 1bc0100d, postgres_fdw
      tries to do exactly this and can be made to fail an assertion as a
      result.
      
      It's possible that this should be regarded as a bug fix and
      back-patched to earlier releases, but for lack of a test case that
      fails in earlier releases, no back-patch for now.
      
      Etsuro Fujita, reviewed by Amit Langote.
      
      Discussion: http://postgr.es/m/5AF43E02.30000@lab.ntt.co.jp
      7fc7dac1
    • Robert Haas's avatar
      Improve comment in get_partition_dispatch_recurse. · 09b12d52
      Robert Haas authored
      David Rowley, reviewed by Amit Langote, and revised a bit by me.
      
      Discussion: http://postgr.es/m/CAKJS1f9yyimYyFzbHM4EwE+tkj4jvrHqSH0H4S4Kbas=UFpc9Q@mail.gmail.com
      09b12d52
    • Bruce Momjian's avatar
      docs: add space in PG 11 release notes, huge/large · 6bd1b4c3
      Bruce Momjian authored
      Reported-by: Tatsuo Ishii
      6bd1b4c3
  4. 15 May, 2018 5 commits
  5. 14 May, 2018 5 commits
  6. 13 May, 2018 1 commit
  7. 12 May, 2018 1 commit
  8. 11 May, 2018 5 commits
  9. 10 May, 2018 1 commit
    • Teodor Sigaev's avatar
      Various improvements of skipping index scan during vacuum technics · 8e12f4a2
      Teodor Sigaev authored
      - Change vacuum_cleanup_index_scale_factor GUC to PGC_USERSET.
        vacuum_cleanup_index_scale_factor GUC was defined as PGC_SIGHUP.  But this
        GUC affects not only autovacuum.  So it might be useful to change it from user
        session in order to influence manually runned VACUUM.
      - Add missing tab-complete support for vacuum_cleanup_index_scale_factor
        reloption.
      - Fix condition for B-tree index cleanup.
        Zero value of vacuum_cleanup_index_scale_factor means that user wants B-tree
        index cleanup to be never skipped.
      - Documentation and comment improvements
      
      Authors: Justin Pryzby, Alexander Korotkov, Liudmila Mantrova
      Reviewed by: all authors and Robert Haas
      Discussion: https://www.postgresql.org/message-id/flat/20180502023025.GD7631%40telsasoft.com
      8e12f4a2
  10. 09 May, 2018 9 commits
    • Robert Haas's avatar
      doc: Restrictions on InitPlans in parallel queries relaxed. · ddc1f32e
      Robert Haas authored
      This updates the documentation for changes originally made in commit
      e89a71fb.
      
      Patch by me, reviewed (but not entirely endorsed) by Amit Kapila.
      
      Discussion: http://postgr.es/m/CA+Tgmoa+vupW8V_gBonz6hU7WwN2zJ=UTsVWCVB+rN6vaaXfZw@mail.gmail.com
      ddc1f32e
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2018e. · 234bb985
      Tom Lane authored
      DST law changes in North Korea.  Redefinition of "daylight savings" in
      Ireland, as well as for some past years in Namibia and Czechoslovakia.
      Additional historical corrections for Czechoslovakia.
      
      With this change, the IANA database models Irish timekeeping as following
      "standard time" in summer, and "daylight savings" in winter, so that the
      daylight savings offset is one hour behind standard time not one hour
      ahead.  This does not change their UTC offset (+1:00 in summer, 0:00 in
      winter) nor their timezone abbreviations (IST in summer, GMT in winter),
      though now "IST" is more correctly read as "Irish Standard Time" not "Irish
      Summer Time".  However, the "is_dst" column in the pg_timezone_names view
      will now be true in winter and false in summer for the Europe/Dublin zone.
      
      Similar changes were made for Namibia between 1994 and 2017, and for
      Czechoslovakia between 1946 and 1947.
      
      So far as I can find, no Postgres internal logic cares about which way
      tm_isdst is reported; in particular, since commit b2cbced9 we do not
      rely on it to decide how to interpret ambiguous timestamps during DST
      transitions.  So I don't think this change will affect any Postgres
      behavior other than the timezone-view outputs.
      
      Discussion: https://postgr.es/m/30996.1525445902@sss.pgh.pa.us
      234bb985
    • Alvaro Herrera's avatar
      pgstatindex, pageinspect: handle partitioned indexes · bef5fcc3
      Alvaro Herrera authored
      Commit 8b08f7d4 failed to update these modules to at least give
      non-broken error messages for partitioned indexes.  Add appropriate
      error support to them.
      
      Peter G. was complaining about a problem of unfriendly error messages;
      while we haven't fixed that yet, subsequent discussion let to discovery
      of these unhandled cases.
      
      Author: Michaël Paquier
      Reported-by: Peter Geoghegan
      Discussion: https://postgr.es/m/CAH2-WzkOKptQiE51Bh4_xeEHhaBwHkZkGtKizrFMgEkfUuRRQg@mail.gmail.com
      bef5fcc3
    • Alvaro Herrera's avatar
      pgstatindex: HASH -> hash · c8478f4f
      Alvaro Herrera authored
      Fix the lone error message in the whole source tree to use capitalized
      HASH when referring to hash indexes, making it look like all the other
      messages.
      
      Someday it would be good to standardize 'B-Tree', 'B-tree', 'btree', and
      random other spellings, too, but that's a larger patch ...
      
      Author: Álvaro Herrera
      c8478f4f
    • Alvaro Herrera's avatar
      Add relkind 'I' to catalog.sgml's list relkinds · 550091f2
      Alvaro Herrera authored
      Commit 8b08f7d4 added a relkind for local partitioned indexes, but
      failed to add it to pg_class's list of possible relkinds.  Repair.
      
      Author: Peter Geoghegan, Michaël Paquier
      Discussion: https://postgr.es/m/CAH2-WzkOKptQiE51Bh4_xeEHhaBwHkZkGtKizrFMgEkfUuRRQg@mail.gmail.com
      550091f2
    • Alvaro Herrera's avatar
      Fix assorted partition pruning bugs · d758d970
      Alvaro Herrera authored
      match_clause_to_partition_key failed to consider COERCION_PATH_ARRAYCOERCE
      cases in scalar-op-array expressions, so it was possible to crash the
      server easily.  To handle this case properly (ie. prune partitions) we
      would need to run a bit of executor code during planning.  Maybe it can
      be improved, but for now let's just not crash.  Add a test case that
      used to trigger the crash.
      Author: Michaël Paquier
      
      match_clause_to_partition_key failed to indicate that operators that
      don't have a commutator in a btree opclass are unsupported.  It is
      possible for this to cause a crash later if such an operator is used in
      a scalar-op-array expression.  Add a test case that used to the crash.
      Author: Amit Langote
      
      One caller of gen_partprune_steps_internal in
      match_clause_to_partition_key was too optimistic about the former never
      returning an empty step list.  Rid it of its innocence.  (Having fixed
      the bug above, I no longer know how to exploit this, so no test case for
      it, but it remained a bug.)  Revise code flow a little bit, for
      succintness.
      Author: Álvaro Herrera
      
      Reported-by: Marina Polyakova
      Reviewed-by: Michaël Paquier
      Reviewed-by: Amit Langote
      Reviewed-by: Álvaro Herrera
      Discussion: https://postgr.es/m/ff8f9bfa485ff961d6bb43e54120485b@postgrespro.ru
      d758d970
    • Andrew Dunstan's avatar
      Restrict vertical tightness to parentheses in Perl code · 35361ee7
      Andrew Dunstan authored
      The vertical tightness settings collapse vertical whitespace between
      opening and closing brackets (parentheses, square brakets and braces).
      This can make data structures in particular harder to read, and is not
      very consistent with our style in non-Perl code. This patch restricts
      that setting to parentheses only, and reformats all the perl code
      accordingly. Not applying this to parentheses has some unfortunate
      effects, so the consensus is to keep the setting for parentheses and not
      for the others.
      
      The diff for this patch does highlight some places where structures
      should have trailing commas. They can be added manually, as there is no
      automatic tool to do so.
      
      Discussion: https://postgr.es/m/a2f2b87c-56be-c070-bfc0-36288b4b41c1@2ndQuadrant.com
      35361ee7
    • Andrew Dunstan's avatar
    • Alvaro Herrera's avatar
      Make gen_partprune_steps static · d1e2cac5
      Alvaro Herrera authored
      There's no need to export this function, so don't.  Michaël didn't
      actually write the patch, but we list him as first author because with a
      trivial one like this, intellectual authorship is as important (if not
      more) as bit shovelling.
      
      Author: Michaël Paquier, Amit Langote
      Discussion: https://postgr.es/m/c91299c4-199b-0f16-339b-a29d6d2a39ee@lab.ntt.co.jp
      d1e2cac5