1. 09 Nov, 2019 1 commit
  2. 08 Nov, 2019 6 commits
  3. 07 Nov, 2019 9 commits
  4. 06 Nov, 2019 11 commits
  5. 05 Nov, 2019 9 commits
    • Andres Freund's avatar
      Make StringInfo available to frontend code. · 26aaf97b
      Andres Freund authored
      There's plenty places in frontend code that could benefit from a
      string buffer implementation. Some because it yields simpler and
      faster code, and some others because of the desire to share code
      between backend and frontend.
      
      While there is a string buffer implementation available to frontend
      code, libpq's PQExpBuffer, it is clunkier than stringinfo, it
      introduces a libpq dependency, doesn't allow for sharing between
      frontend and backend code, and has a higher API/ABI stability
      requirement due to being exposed via libpq.
      
      Therefore it seems best to just making StringInfo being usable by
      frontend code. There's not much to do for that, except for rewriting
      two subsequent elog/ereport calls into others types of error
      reporting, and deciding on a maximum string length.
      
      For the maximum string size I decided to privately define MaxAllocSize
      to the same value as used in the backend. It seems likely that we'll
      want to reconsider this for both backend and frontend code in the not
      too far away future.
      
      For now I've left stringinfo.h in lib/, rather than common/, to reduce
      the likelihood of unnecessary breakage. We could alternatively decide
      to provide a redirecting stringinfo.h in lib/, or just not provide
      compatibility.
      
      Author: Andres Freund
      Reviewed-By: Kyotaro Horiguchi, Daniel Gustafsson
      Discussion: https://postgr.es/m/20190920051857.2fhnvhvx4qdddviz@alap3.anarazel.de
      26aaf97b
    • Andres Freund's avatar
      Split all OBJS style lines in makefiles into one-line-per-entry style. · 01368e5d
      Andres Freund authored
      When maintaining or merging patches, one of the most common sources
      for conflicts are the list of objects in makefiles. Especially when
      the split across lines has been changed on both sides, which is
      somewhat common due to attempting to stay below 80 columns, those
      conflicts are unnecessarily laborious to resolve.
      
      By splitting, and alphabetically sorting, OBJS style lines into one
      object per line, conflicts should be less frequent, and easier to
      resolve when they still occur.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20191029200901.vww4idgcxv74cwes@alap3.anarazel.de
      01368e5d
    • Tom Lane's avatar
      66c61c81
    • Tom Lane's avatar
      Avoid logging complaints about abandoned connections when using PAM. · 3affe76e
      Tom Lane authored
      For a long time (since commit aed378e8) we have had a policy to log
      nothing about a connection if the client disconnects when challenged
      for a password.  This is because libpq-using clients will typically
      do that, and then come back for a new connection attempt once they've
      collected a password from their user, so that logging the abandoned
      connection attempt will just result in log spam.  However, this did
      not work well for PAM authentication: the bottom-level function
      pam_passwd_conv_proc() was on board with it, but we logged messages
      at higher levels anyway, for lack of any reporting mechanism.
      Add a flag and tweak the logic so that the case is silent, as it is
      for other password-using auth mechanisms.
      
      Per complaint from Yoann La Cancellera.  It's been like this for awhile,
      so back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/CACP=ajbrFFYUrLyJBLV8=q+eNCapa1xDEyvXhMoYrNphs-xqPw@mail.gmail.com
      3affe76e
    • Tom Lane's avatar
      Fix "unexpected relkind" error when denying permissions on toast tables. · a30531c5
      Tom Lane authored
      get_relkind_objtype, and hence get_object_type, failed when applied to a
      toast table.  This is not a good thing, because it prevents reporting of
      perfectly legitimate permissions errors.  (At present, these functions
      are in fact *only* used to determine the ObjectType argument for
      acl_error() calls.)  It seems best to have them fall back to returning
      OBJECT_TABLE in every case where they can't determine an object type
      for a pg_class entry, so do that.
      
      In passing, make some edits to alter.c to make it more obvious that
      those calls of get_object_type() are used only for error reporting.
      This might save a few cycles in the non-error code path, too.
      
      Back-patch to v11 where this issue originated.
      
      John Hsu, Michael Paquier, Tom Lane
      
      Discussion: https://postgr.es/m/C652D3DF-2B0C-4128-9420-FB5379F6B1E4@amazon.com
      a30531c5
    • Tom Lane's avatar
      Generate EquivalenceClass members for partitionwise child join rels. · 529ebb20
      Tom Lane authored
      Commit d25ea012 got rid of what I thought were entirely unnecessary
      derived child expressions in EquivalenceClasses for EC members that
      mention multiple baserels.  But it turns out that some of the child
      expressions that code created are necessary for partitionwise joins,
      else we fail to find matching pathkeys for Sort nodes.  (This happens
      only for certain shapes of the resulting plan; it may be that
      partitionwise aggregation is also necessary to show the failure,
      though I'm not sure of that.)
      
      Reverting that commit entirely would be quite painful performance-wise
      for large partition sets.  So instead, add code that explicitly
      generates child expressions that match only partitionwise child join
      rels we have actually generated.
      
      Per report from Justin Pryzby.  (Amit Langote noticed the problem
      earlier, though it's not clear if he recognized then that it could
      result in a planner error, not merely failure to exploit partitionwise
      join, in the code as-committed.)  Back-patch to v12 where commit
      d25ea012 came in.
      
      Amit Langote, with lots of kibitzing from me
      
      Discussion: https://postgr.es/m/CA+HiwqG2WVUGmLJqtR0tPFhniO=H=9qQ+Z3L_ZC+Y3-EVQHFGg@mail.gmail.com
      Discussion: https://postgr.es/m/20191011143703.GN10470@telsasoft.com
      529ebb20
    • Michael Paquier's avatar
      Doc: Clarify locks taken when using ALTER TABLE ATTACH PARTITION · 2a4d96eb
      Michael Paquier authored
      Since 898e5e32, this command uses partially ShareUpdateExclusiveLock,
      but the docs did not get the call.
      
      Author: Justin Pryzby
      Reviewed-by: Amit Langote, Álvaro Herrera, Michael Paquier
      Discussion: https://postgr.es/m/20191028001207.GB23808@telsasoft.com
      Backpatch-through: 12
      2a4d96eb
    • Michael Paquier's avatar
      Doc: Improve description around ALTER TABLE ATTACH PARTITION · ea881338
      Michael Paquier authored
      This clarifies more how to use and how to take advantage of constraints
      when attaching a new partition.
      
      Author: Justin Pryzby
      Reviewed-by: Amit Langote, Álvaro Herrera, Michael Paquier
      Discussion: https://postgr.es/m/20191028001207.GB23808@telsasoft.com
      Backpatch-through: 10
      ea881338
    • Michael Paquier's avatar
      Refactor code building relation options · 3534fa22
      Michael Paquier authored
      Historically, the code to build relation options has been shaped the
      same way in multiple code paths by using a set of datums in input with
      the options parsed with a static table which is then filled with the
      option values.  This introduces a new common routine in reloptions.c to
      do most of the legwork for the in-core code paths.
      
      Author: Amit Langote
      Reviewed-by: Michael Paquier
      Discussion: https://postgr.es/m/CA+HiwqGsoSn_uTPPYT19WrtR7oYpYtv4CdS0xuedTKiHHWuk_g@mail.gmail.com
      3534fa22
  6. 04 Nov, 2019 4 commits