1. 05 Mar, 2018 7 commits
    • Alvaro Herrera's avatar
      Clone extended stats in CREATE TABLE (LIKE INCLUDING ALL) · 5564c118
      Alvaro Herrera authored
      The LIKE INCLUDING ALL clause to CREATE TABLE intuitively indicates
      cloning of extended statistics on the source table, but it failed to do
      so.  Patch it up so that it does.  Also include an INCLUDING STATISTICS
      option to the LIKE clause, so that the behavior can be requested
      individually, or excluded individually.
      
      While at it, reorder the INCLUDING options, both in code and in docs, in
      alphabetical order which makes more sense than feature-implementation
      order that was previously used.
      
      Backpatch this to Postgres 10, where extended statistics were
      introduced, because this is seen as an oversight in a fresh feature
      which is better to get consistent from the get-go instead of changing
      only in pg11.
      
      In pg11, comments on statistics objects are cloned too.  In pg10 they
      are not, because I (Álvaro) was too coward to change the parse node as
      required to support it.  Also, in pg10 I chose not to renumber the
      parser symbols for the various INCLUDING options in LIKE, for the same
      reason.  Any corresponding user-visible changes (docs) are backpatched,
      though.
      
      Reported-by: Stephen Froehlich
      Author: David Rowley
      Reviewed-by: Álvaro Herrera, Tomas Vondra
      Discussion: https://postgr.es/m/CY1PR0601MB1927315B45667A1B679D0FD5E5EF0@CY1PR0601MB1927.namprd06.prod.outlook.com
      5564c118
    • Tom Lane's avatar
      Temporarily instrument postgres_fdw test to look for statistics changes. · c2c537c5
      Tom Lane authored
      It seems fairly hard to explain recent buildfarm failures without the
      theory that something is doing an ANALYZE behind our backs.  Probe
      for this directly to see if it's true.
      
      In principle the outputs of these queries should be stable, since the table
      in question is small enough that ANALYZE's sample will include all rows.
      But even if that turns out to be wrong, we can put up with some failures
      for a bit.  I don't intend to leave this here indefinitely.
      
      Discussion: https://postgr.es/m/25502.1520277552@sss.pgh.pa.us
      c2c537c5
    • Tom Lane's avatar
      Add infrastructure to support server-version-dependent tab completion. · 722408bc
      Tom Lane authored
      Up to now we've not worried about whether psql's tab completion queries
      would work against prior server versions.  But since we support older
      server versions in describe.c, we really ought to do so here as well.
      Failing to take care of this not only leads to loss of tab-completion
      service when using an older server, but risks aborting a user's open
      transaction when we send an incompatible query to the server.
      
      The recent changes in pg_proc.prokind are one reason to take this more
      seriously now than before, and the proposed patch for completion after
      SELECT needs some such capability as well.
      
      Hence, create some infrastructure to allow selection of one of several
      versions of a query depending on server version.  For cases where we
      just need to select one of several query strings, introduce VersionedQuery
      and COMPLETE_WITH_VERSIONED_QUERY().  Likewise extend the SchemaQuery
      infrastructure to allow versioning of those.
      
      I went ahead and fixed the prokind issues, to serve as an illustration
      of how to use versioned SchemaQuery.  To have some illustration of
      VersionedQuery, change the support for completion of publication and
      subscription names so that psql will not send sure-to-fail queries to
      pre-v10 servers.  There is much more that should be done to make tab
      completion more friendly to older servers, but this commit is mainly
      meant to get the infrastructure in place, so I stopped here.
      
      Discussion: https://postgr.es/m/24314.1520190408@sss.pgh.pa.us
      722408bc
    • Robert Haas's avatar
      shm_mq: Fix detach race condition. · 42d7074e
      Robert Haas authored
      Commit 34db06ef adopted a lock-free
      design for shm_mq.c, but it introduced a race condition that could
      lose messages.  When shm_mq_receive_bytes() detects that the other end
      has detached, it must make sure that it has seen the final version of
      mq_bytes_written, or it might miss a message sent before detaching.
      
      Thomas Munro
      
      Discussion: https://postgr.es/m/CAEepm%3D2myZ4qxpt1a%3DC%2BwEv3o188K13K3UvD-44FK0SdAzHy%2Bw%40mail.gmail.com
      42d7074e
    • Fujii Masao's avatar
      Fix pg_rewind to handle relation data files in tablespaces properly. · 2f3e2340
      Fujii Masao authored
      pg_rewind checks whether each file is a relation data file, from its path.
      Previously this check logic had the bug which made pg_rewind fail to
      recognize any relation data files in tablespaces. Which also caused
      an assertion failure in pg_rewind.
      
      Back-patch to 9.5 where pg_rewind was added.
      
      Author: Takayuki Tsunakawa
      Reviewed-by: Michael Paquier
      Discussion: https://postgr.es/m/0A3221C70F24FB45833433255569204D1F8D6C7A@G01JPEXMBYT05
      2f3e2340
    • Peter Eisentraut's avatar
      Remove some obsolete procedure-specific code from PLs · 09230e54
      Peter Eisentraut authored
      Since procedures are now declared to return void, code that handled
      return values for procedures separately is no longer necessary.
      09230e54
    • Peter Eisentraut's avatar
      doc: Tiny whitespace fix · dd9ed0bf
      Peter Eisentraut authored
      dd9ed0bf
  2. 04 Mar, 2018 3 commits
    • Magnus Hagander's avatar
      Actually pick .lib file when multiple perl libs are present · 6946280c
      Magnus Hagander authored
      7240962f got it right in the comment,
      but the code did not actually do what the comment said. Fix that.
      
      Issue pointed out by Noah Misch.
      6946280c
    • Peter Eisentraut's avatar
      PL/pgSQL: Simplify RETURN checking for procedures · f7c7f67f
      Peter Eisentraut authored
      Check at compile time that RETURN in a procedure does not specify a
      parameter, rather than at run time.
      f7c7f67f
    • Tom Lane's avatar
      Fix assorted issues in convert_to_scalar(). · 58d9acc1
      Tom Lane authored
      If convert_to_scalar is passed a pair of datatypes it can't cope with,
      its former behavior was just to elog(ERROR).  While this is OK so far as
      the core code is concerned, there's extension code that would like to use
      scalarltsel/scalargtsel/etc as selectivity estimators for operators that
      work on non-core datatypes, and this behavior is a show-stopper for that
      use-case.  If we simply allow convert_to_scalar to return FALSE instead of
      outright failing, then the main logic of scalarltsel/scalargtsel will work
      fine for any operator that behaves like a scalar inequality comparison.
      The lack of conversion capability will mean that we can't estimate to
      better than histogram-bin-width precision, since the code will effectively
      assume that the comparison constant falls at the middle of its bin.  But
      that's still a lot better than nothing.  (Someday we should provide a way
      for extension code to supply a custom version of convert_to_scalar, but
      today is not that day.)
      
      While poking at this issue, we noted that the existing code for handling
      type bytea in convert_to_scalar is several bricks shy of a load.
      It assumes without checking that if the comparison value is type bytea,
      the bounds values are too; in the worst case this could lead to a crash.
      It also fails to detoast the input values, so that the comparison result is
      complete garbage if any input is toasted out-of-line, compressed, or even
      just short-header.  I'm not sure how often such cases actually occur ---
      the bounds values, at least, are probably safe since they are elements of
      an array and hence can't be toasted.  But that doesn't make this code OK.
      
      Back-patch to all supported branches, partly because author requested that,
      but mostly because of the bytea bugs.  The change in API for the exposed
      routine convert_network_to_scalar() is theoretically a back-patch hazard,
      but it seems pretty unlikely that any third-party code is calling that
      function directly.
      
      Tomas Vondra, with some adjustments by me
      
      Discussion: https://postgr.es/m/b68441b6-d18f-13ab-b43b-9a72188a4e02@2ndquadrant.com
      58d9acc1
  3. 03 Mar, 2018 9 commits
  4. 02 Mar, 2018 11 commits
  5. 01 Mar, 2018 10 commits