1. 26 Aug, 2019 1 commit
    • Michael Paquier's avatar
      Fix error handling of vacuumdb and reindexdb when running out of fds · 71d84efb
      Michael Paquier authored
      When trying to use a high number of jobs, vacuumdb (and more recently
      reindexdb) has only checked for a maximum number of jobs used, causing
      confusing failures when running out of file descriptors when the jobs
      open connections to Postgres.  This commit changes the error handling so
      as we do not check anymore for a maximum number of allowed jobs when
      parsing the option value with FD_SETSIZE, but check instead if a file
      descriptor is within the supported range when opening the connections
      for the jobs so as this is detected at the earliest time possible.
      
      Also, improve the error message to give a hint about the number of jobs
      recommended, using a wording given by the reviewers of the patch.
      
      Reported-by: Andres Freund
      Author: Michael Paquier
      Reviewed-by: Andres Freund, Álvaro Herrera, Tom Lane
      Discussion: https://postgr.es/m/20190818001858.ho3ev4z57fqhs7a5@alap3.anarazel.de
      Backpatch-through: 9.5
      71d84efb
  2. 25 Aug, 2019 3 commits
  3. 24 Aug, 2019 4 commits
  4. 23 Aug, 2019 1 commit
  5. 22 Aug, 2019 3 commits
  6. 21 Aug, 2019 5 commits
  7. 20 Aug, 2019 4 commits
  8. 19 Aug, 2019 8 commits
    • Tom Lane's avatar
      Restore json{b}_populate_record{set}'s ability to take type info from AS. · e136a0d8
      Tom Lane authored
      If the record argument is NULL and has no declared type more concrete
      than RECORD, we can't extract useful information about the desired
      rowtype from it.  In this case, see if we're in FROM with an AS clause,
      and if so extract the needed rowtype info from AS.
      
      It worked like this before v11, but commit 37a795a6 removed the
      behavior, reasoning that it was undocumented, inefficient, and utterly
      not self-consistent.  If you want to take type info from an AS clause,
      you should be using the json_to_record() family of functions not the
      json_populate_record() family.  Also, it was already the case that
      the "populate" functions would fail for a null-valued RECORD input
      (with an unfriendly "record type has not been registered" error)
      when there wasn't an AS clause at hand, and it wasn't obvious that
      that behavior wasn't OK when there was one.  However, it emerges
      that some people were depending on this to work, and indeed the
      rather off-point error message you got if you left off AS encouraged
      slapping on AS without switching to the json_to_record() family.
      
      Hence, put back the fallback behavior of looking for AS.  While at it,
      improve the run-time error you get when there's no place to obtain type
      info; we can do a lot better than "record type has not been registered".
      (We can't, unfortunately, easily improve the parse-time error message
      that leads people down this path in the first place.)
      
      While at it, I refactored the code a bit to avoid duplicating the
      same logic in several different places.
      
      Per bug #15940 from Jaroslav Sivy.  Back-patch to v11 where the
      current coding came in.  (The pre-v11 deficiencies in this area
      aren't regressions, so we'll leave those branches alone.)
      
      Patch by me, based on preliminary analysis by Dmitry Dolgov.
      
      Discussion: https://postgr.es/m/15940-2ab76dc58ffb85b6@postgresql.org
      e136a0d8
    • Andres Freund's avatar
      Add fmgr.h include to selfuncs.h. · 4c01a111
      Andres Freund authored
      Necessary after fb3b098f. That previously escaped notice, because all
      including sites already include fmgr.h some other way.
      
      Reported-By: Tom Lane
      Author: Andres Freund
      Discussion: https://postgr.es/m/17463.1566153454@sss.pgh.pa.us
      4c01a111
    • Tom Lane's avatar
      Add "headerscheck" script to test header-file compilability under C. · 55ea1091
      Tom Lane authored
      We already had "cpluspluscheck", which served the dual purposes of
      verifying that headers compile standalone and that they compile as C++.
      However, C++ compilers don't have the exact same set of error conditions
      as C compilers, so this doesn't really prove that a header will compile
      standalone as C.
      
      Hence, add a second script that's largely similar but runs the C
      compiler not C++.
      
      Also add a bit more documentation than the none-at-all we had before.
      
      Discussion: https://postgr.es/m/14803.1566175851@sss.pgh.pa.us
      55ea1091
    • Tom Lane's avatar
      Use zic's new "-b slim" option to generate smaller timezone files. · a1207910
      Tom Lane authored
      IANA tzcode release 2019b adds an option that tells zic not to emit
      the old 32-bit section of the timezone files, and to skip some other
      space-wasting hacks needed for compatibility with old timezone client
      libraries.  Since we only expect our own code to use the timezone data
      we install, and our code is up-to-date with 2019b, there's no apparent
      reason not to generate the smallest possible files.
      
      Unfortunately, while the individual zone files do get significantly
      smaller in many cases, they were not that big to begin with; which
      means that no real space savings ensues on filesystems that don't
      optimize small files.  (For instance, on ext4 with 4K block size,
      "du" says the installed timezone tree is the same size as before.)
      Still, it seems worth making the change, if only because this is
      presumably the wave of the future.  At the very least, we'll save
      some cycles while reading a zone file.
      
      But given the marginal value and the fact that this is a new code
      path, it doesn't seem worth the risk of back-patching this change
      into stable branches.  Hence, unlike most of our timezone-related
      changes, apply to HEAD only.
      
      Discussion: https://postgr.es/m/24998.1563403327@sss.pgh.pa.us
      a1207910
    • Alvaro Herrera's avatar
    • Peter Eisentraut's avatar
      doc: Fix image use in PDF build with vpath · a407012c
      Peter Eisentraut authored
      In a vpath build, we need to point to the source directory to allow
      FOP to find the images.
      a407012c
    • Michael Paquier's avatar
      Fix tab completion for CREATE TYPE in psql · 71851e9a
      Michael Paquier authored
      Oversight in 7bdc6556.
      
      Author: Alexander Lakhin
      Discussion: https://postgr.es/m/5da8e325-c665-da95-21e0-c8a99ea61fbf@gmail.com
      71851e9a
    • Michael Paquier's avatar
      Fix inconsistencies and typos in the tree, take 11 · c96581ab
      Michael Paquier authored
      This fixes various typos in docs and comments, and removes some orphaned
      definitions.
      
      Author: Alexander Lakhin
      Discussion: https://postgr.es/m/5da8e325-c665-da95-21e0-c8a99ea61fbf@gmail.com
      c96581ab
  9. 18 Aug, 2019 6 commits
    • Tom Lane's avatar
      Avoid conflicts with library versions of inet_net_ntop() and friends. · 927f34ce
      Tom Lane authored
      Prefix inet_net_ntop and sibling routines with "pg_" to ensure that
      they aren't mistaken for C-library functions.  This fixes warnings
      from cpluspluscheck on some platforms, and should help reduce reader
      confusion everywhere, since our functions aren't exactly interchangeable
      with the library versions (they may have different ideas about address
      family codes).
      
      This shouldn't be fixing any actual bugs, unless somebody's linker
      is misbehaving, so no need to back-patch.
      
      Discussion: https://postgr.es/m/20518.1559494394@sss.pgh.pa.us
      927f34ce
    • Tom Lane's avatar
      Fix incidental warnings from cpluspluscheck. · 232720be
      Tom Lane authored
      Remove use of "register" keyword in hashfn.c.  It's obsolescent
      according to recent C++ compilers, and no modern C compiler pays
      much attention to it either.
      
      Also fix one cosmetic warning about signed vs unsigned comparison.
      
      Discussion: https://postgr.es/m/20518.1559494394@sss.pgh.pa.us
      232720be
    • Tom Lane's avatar
      Fix failure-to-compile-standalone in scripts_parallel.h. · 5f110933
      Tom Lane authored
      Needs libpq-fe.h for references to PGConn.
      
      Discussion: https://postgr.es/m/17463.1566153454@sss.pgh.pa.us
      5f110933
    • Tom Lane's avatar
      Fix failure-to-compile-standalone in ecpg's dt.h. · 5c66e991
      Tom Lane authored
      This has to have <time.h>, or the references to "struct tm" don't
      mean what they should.
      
      We have some other recently-introduced issues of the same ilk,
      but this one seems old.  No backpatch though, as it's only a
      latent problem for most purposes.
      5c66e991
    • Tom Lane's avatar
      Disallow changing an inherited column's type if not all parents changed. · 4d4c66ad
      Tom Lane authored
      If a table inherits from multiple unrelated parents, we must disallow
      changing the type of a column inherited from multiple such parents, else
      it would be out of step with the other parents.  However, it's possible
      for the column to ultimately be inherited from just one common ancestor,
      in which case a change starting from that ancestor should still be
      allowed.  (I would not be excited about preserving that option, were
      it not that we have regression test cases exercising it already ...)
      
      It's slightly annoying that this patch looks different from the logic
      with the same end goal in renameatt(), and more annoying that it
      requires an extra syscache lookup to make the test.  However, the
      recursion logic is quite different in the two functions, and a
      back-patched bug fix is no place to be trying to unify them.
      
      Per report from Manuel Rigger.  Back-patch to 9.5.  The bug exists in
      9.4 too (and doubtless much further back); but the way the recursion
      is done in 9.4 is a good bit different, so that substantial refactoring
      would be needed to fix it in 9.4.  I'm disinclined to do that, or risk
      introducing new bugs, for a bug that has escaped notice for this long.
      
      Discussion: https://postgr.es/m/CA+u7OA4qogDv9rz1HAb-ADxttXYPqQdUdPY_yd4kCzywNxRQXA@mail.gmail.com
      4d4c66ad
    • Peter Eisentraut's avatar
      Remove obsolete reference to Irix · 7e78c872
      Peter Eisentraut authored
      7e78c872
  10. 17 Aug, 2019 2 commits
    • Tom Lane's avatar
      Make deadlock-parallel isolation test more robust. · 9be4ce4f
      Tom Lane authored
      This test failed fairly reproducibly on some CLOBBER_CACHE_ALWAYS
      buildfarm animals.  The cause seems to be that if a parallel worker
      is slow enough to reach its lock wait, it may not be released by
      the first deadlock check run, and then later deadlock checks might
      decide to unblock the d2 session instead of the d1 session, leaving
      us in an undetected deadlock state (since the isolationtester client
      is waiting for d1 to complete first).
      
      Fix by introducing an additional lock wait at the end of the d2a1
      step, ensuring that the deadlock checker will recognize that d1
      has to be unblocked before d2a1 completes.
      
      Also reduce max_parallel_workers_per_gather to 3 in this test.  With the
      default max_worker_processes value, we were only getting one parallel
      worker for the d2a1 step, which is not the case I hoped to test.  We
      should get 3 for d1a2 and 2 for d2a1, as the code stands; and maybe 3
      for d2a1 if somebody figures out why the last parallel worker slot isn't
      free already.
      
      Discussion: https://postgr.es/m/22195.1566077308@sss.pgh.pa.us
      9be4ce4f
    • Peter Eisentraut's avatar
      Improve Assert output · d78d452b
      Peter Eisentraut authored
      If an assertion expression contained a macro, the failed assertion
      message would print the expanded macro, which is usually unhelpful and
      confusing.  Restructure the Assert macros to not expand any macros
      when constructing the failure message.
      
      This also fixes that the existing output for Assert et al. shows
      the *inverted* condition, which is also confusing and not how
      assertions usually work.
      
      Discussion: https://www.postgresql.org/message-id/flat/6c68efe3-117a-dcc1-73d4-18ba1ec532e2%402ndquadrant.com
      d78d452b
  11. 16 Aug, 2019 3 commits