1. 11 Apr, 2019 4 commits
  2. 10 Apr, 2019 4 commits
  3. 09 Apr, 2019 9 commits
  4. 08 Apr, 2019 11 commits
  5. 07 Apr, 2019 5 commits
    • Tom Lane's avatar
      Avoid fetching past the end of the indoption array. · 80a96e06
      Tom Lane authored
      pg_get_indexdef_worker carelessly fetched indoption entries even for
      non-key index columns that don't have one.  99.999% of the time this
      would be harmless, since the code wouldn't examine the value ... but
      some fine day this will be a fetch off the end of memory, resulting
      in SIGSEGV.
      
      Detected through valgrind testing.  Odd that the buildfarm's valgrind
      critters haven't noticed.
      80a96e06
    • Alvaro Herrera's avatar
      psql \dP: list partitioned tables and indexes · 1c5d9270
      Alvaro Herrera authored
      The new command lists partitioned relations (tables and/or indexes),
      possibly with their sizes, possibly including partitioned partitions;
      their parents (if not top-level); if indexes show the tables they belong
      to; and their descriptions.
      
      While there are various possible improvements to this, having it in this
      form is already a great improvement over not having any way to obtain
      this report.
      
      Author: Pavel Stěhule, with help from Mathias Brossard, Amit Langote and
      	Justin Pryzby.
      Reviewed-by: Amit Langote, Mathias Brossard, Melanie Plageman,
      	Michaël Paquier, Álvaro Herrera
      1c5d9270
    • Tom Lane's avatar
      Clean up side-effects of commits ab5fcf2b et al. · 159970bc
      Tom Lane authored
      Before those commits, partitioning-related code in the executor could
      assume that ModifyTableState.resultRelInfo[] contains only leaf partitions.
      However, now a fully-pruned update results in a dummy ModifyTable that
      references the root partitioned table, and that breaks some stuff.
      
      In v11, this led to an assertion or core dump in the tuple routing code.
      Fix by disabling tuple routing, since we don't need that anyway.
      (I chose to do that in HEAD as well for safety, even though the problem
      doesn't manifest in HEAD as it stands.)
      
      In v10, this confused ExecInitModifyTable's decision about whether it
      needed to close the root table.  But we can get rid of that altogether
      by being smarter about where to find the root table.
      
      Note that since the referenced commits haven't shipped yet, this
      isn't fixing any bug the field has seen.
      
      Amit Langote, per a report from me
      
      Discussion: https://postgr.es/m/20710.1554582479@sss.pgh.pa.us
      159970bc
    • Peter Eisentraut's avatar
      Report progress of REINDEX operations · 03f9e5cb
      Peter Eisentraut authored
      This uses the same infrastructure that the CREATE INDEX progress
      reporting uses.  Add a column to pg_stat_progress_create_index to
      report the OID of the index being worked on.  This was not necessary
      for CREATE INDEX, but it's useful for REINDEX.
      
      Also edit the phase descriptions a bit to be more consistent with the
      source code comments.
      
      Discussion: https://www.postgresql.org/message-id/ef6a6757-c36a-9e81-123f-13b19e36b7d7%402ndquadrant.com
      03f9e5cb
    • Peter Eisentraut's avatar
      Cast pg_stat_progress_cluster.cluster_index_relid to oid · 106f2eb6
      Peter Eisentraut authored
      It's tracked internally as bigint, but when presented to the user it
      should be oid.
      106f2eb6
  6. 06 Apr, 2019 3 commits
  7. 05 Apr, 2019 4 commits
    • Tom Lane's avatar
      Use Append rather than MergeAppend for scanning ordered partitions. · 959d00e9
      Tom Lane authored
      If we need ordered output from a scan of a partitioned table, but
      the ordering matches the partition ordering, then we don't need to
      use a MergeAppend to combine the pre-ordered per-partition scan
      results: a plain Append will produce the same results.  This
      both saves useless comparison work inside the MergeAppend proper,
      and allows us to start returning tuples after istarting up just
      the first child node not all of them.
      
      However, all is not peaches and cream, because if some of the
      child nodes have high startup costs then there will be big
      discontinuities in the tuples-returned-versus-elapsed-time curve.
      The planner's cost model cannot handle that (yet, anyway).
      If we model the Append's startup cost as being just the first
      child's startup cost, we may drastically underestimate the cost
      of fetching slightly more tuples than are available from the first
      child.  Since we've had bad experiences with over-optimistic choices
      of "fast start" plans for ORDER BY LIMIT queries, that seems scary.
      As a klugy workaround, set the startup cost estimate for an ordered
      Append to be the sum of its children's startup costs (as MergeAppend
      would).  This doesn't really describe reality, but it's less likely
      to cause a bad plan choice than an underestimated startup cost would.
      In practice, the cases where we really care about this optimization
      will have child plans that are IndexScans with zero startup cost,
      so that the overly conservative estimate is still just zero.
      
      David Rowley, reviewed by Julien Rouhaud and Antonin Houska
      
      Discussion: https://postgr.es/m/CAKJS1f-hAqhPLRk_RaSFTgYxd=Tz5hA7kQ2h4-DhJufQk8TGuw@mail.gmail.com
      959d00e9
    • Alvaro Herrera's avatar
      Add facility to copy replication slots · 9f06d79e
      Alvaro Herrera authored
      This allows the user to create duplicates of existing replication slots,
      either logical or physical, and even changing properties such as whether
      they are temporary or the output plugin used.
      
      There are multiple uses for this, such as initializing multiple replicas
      using the slot for one base backup; when doing investigation of logical
      replication issues; and to select a different output plugins.
      
      Author: Masahiko Sawada
      Reviewed-by: Michael Paquier, Andres Freund, Petr Jelinek
      Discussion: https://postgr.es/m/CAD21AoAm7XX8y_tOPP6j4Nzzch12FvA1wPqiO690RCk+uYVstg@mail.gmail.com
      9f06d79e
    • Thomas Munro's avatar
      Wake up interested backends when a checkpoint fails. · de2b3841
      Thomas Munro authored
      Commit c6c9474a switched to condition variables instead of sleep
      loops to notify backends of checkpoint start and stop, but forgot
      to broadcast in case of checkpoint failure.
      
      Author: Thomas Munro
      Discussion: https://postgr.es/m/CA%2BhUKGJKbCd%2B_K%2BSEBsbHxVT60SG0ivWHHAdvL0bLTUt2xpA2w%40mail.gmail.com
      de2b3841
    • Robert Haas's avatar
      Fix missing word. · 6665305e
      Robert Haas authored
      Nathan Bossart
      
      Discussion: http://postgr.es/m/2C63765B-AD31-4F6C-8DA7-C8544634C714@amazon.com
      6665305e