1. 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
  2. 04 Nov, 2019 4 commits
  3. 03 Nov, 2019 2 commits
  4. 02 Nov, 2019 2 commits
  5. 01 Nov, 2019 4 commits
  6. 31 Oct, 2019 2 commits
  7. 30 Oct, 2019 5 commits
  8. 29 Oct, 2019 2 commits
  9. 28 Oct, 2019 5 commits
  10. 27 Oct, 2019 1 commit
  11. 26 Oct, 2019 3 commits
    • Noah Misch's avatar
      Fix copy-paste defect in comment. · b8045213
      Noah Misch authored
      Commit a7471bd8 introduced it.
      b8045213
    • Noah Misch's avatar
      Update comment about __sync_lock_test_and_set() bug. · e653c714
      Noah Misch authored
      State the earliest known fixed version, so we can someday judge the
      workaround to be obsolete.
      e653c714
    • Tom Lane's avatar
      Doc: improve documentation of configuration settings that have units. · cfb75590
      Tom Lane authored
      When we added the GUC units feature, we didn't make any great effort
      to adjust the documentation of individual GUCs; they tended to still
      say things like "this is the number of milliseconds that ...", even
      though users might prefer to write some other units, and SHOW might
      even show the value in other units.  Commit 6c9fb69f made an effort
      to improve this situation, but I thought it made things less readable
      by injecting units information in mid-sentence.  It also wasn't very
      consistent, and did not touch all the GUCs that have units.
      
      To improve matters, standardize on the phrasing "If this value is
      specified without units, it is taken as <units>".  Also, try to
      standardize where this is mentioned, right before the specification
      of the default.  (In a couple of places, doing that would've required
      more rewriting than seemed justified, so I wasn't 100% consistent
      about that.)  I also tried to use the phrases "amount of time",
      "amount of memory", etc rather than describing the contents of GUCs
      in other ways, as those were the majority usage in places that weren't
      overcommitting to a particular unit.  (I left "length of time" alone
      in a couple of places, though.)
      
      I failed to resist the temptation to copy-edit some awkward text, too.
      
      Backpatch to v12, like 6c9fb69f, mainly because v12 hasn't diverged
      much from HEAD yet.
      
      Discussion: https://postgr.es/m/15882.1571942223@sss.pgh.pa.us
      cfb75590
  12. 25 Oct, 2019 1 commit
    • Peter Eisentraut's avatar
      Remove obsolete information schema tables · 2fc2a88e
      Peter Eisentraut authored
      Remove SQL_LANGUAGES, which was eliminated in SQL:2008, and
      SQL_PACKAGES and SQL_SIZING_PROFILES, which were eliminated in
      SQL:2011.  Since they were dropped by the SQL standard, the
      information in them was no longer updated and therefore no longer
      useful.
      
      This also removes the feature-package association information in
      sql_feature_packages.txt, but for the time begin we are keeping the
      information which features are in the Core package (that is, mandatory
      SQL features).  Maybe at some point someone wants to invent a way to
      store that that does not involve using the "package" mechanism
      anymore.
      
      Discussion https://www.postgresql.org/message-id/flat/91334220-7900-071b-9327-0c6ecd012017%402ndquadrant.com
      2fc2a88e