1. 01 Nov, 2018 4 commits
  2. 31 Oct, 2018 5 commits
    • Andres Freund's avatar
      Disallow starting server with insufficient wal_level for existing slot. · 691d79a0
      Andres Freund authored
      Previously it was possible to create a slot, change wal_level, and
      restart, even if the new wal_level was insufficient for the
      slot. That's a problem for both logical and physical slots, because
      the necessary WAL records are not generated.
      
      This removes a few tests in newer versions that, somewhat
      inexplicably, whether restarting with a too low wal_level worked (a
      buggy behaviour!).
      
      Reported-By: Joshua D. Drake
      Author: Andres Freund
      Discussion: https://postgr.es/m/20181029191304.lbsmhshkyymhw22w@alap3.anarazel.de
      Backpatch: 9.4-, where replication slots where introduced
      691d79a0
    • Tom Lane's avatar
      Fix memory leak in repeated SPGIST index scans. · 696b0c5f
      Tom Lane authored
      spgendscan neglected to pfree all the memory allocated by spgbeginscan.
      It's possible to get away with that in most normal queries, since the
      memory is allocated in the executor's per-query context which is about
      to get deleted anyway; but it causes severe memory leakage during
      creation or filling of large exclusion-constraint indexes.
      
      Also, document that amendscan is supposed to free what ambeginscan
      allocates.  The docs' lack of clarity on that point probably caused this
      bug to begin with.  (There is discussion of changing that API spec going
      forward, but I don't think it'd be appropriate for the back branches.)
      
      Per report from Bruno Wolff.  It's been like this since the beginning,
      so back-patch to all active branches.
      
      In HEAD, also fix an independent leak caused by commit 2a636834
      (allocating memory during spgrescan instead of spgbeginscan, which
      might be all right if it got cleaned up, but it didn't).  And do a bit
      of code beautification on that commit, too.
      
      Discussion: https://postgr.es/m/20181024012314.GA27428@wolff.to
      696b0c5f
    • Andres Freund's avatar
      Fix typo in xlog.c. · c4ab62f9
      Andres Freund authored
      Author: Daniel Gustafsson
      Discussion: https://postgr.es/m/A6817958-949E-4A5B-895D-FA421B6640C2@yesql.se
      c4ab62f9
    • Tom Lane's avatar
      Sync our copy of the timezone library with IANA release tzcode2018g. · 10bfda06
      Tom Lane authored
      This patch absorbs an upstream fix to "zic" for a recently-introduced
      bug that made it output data that some 32-bit clients couldn't read.
      Given the current source data, the bug only manifests in zones with
      leap seconds, which we don't generate, so that there's no actual
      change in our installed timezone data files from this.  Still, in
      case somebody uses our copy of "zic" to do something else, it seems
      best to apply the fix promptly.
      
      Also, update the README's notes about converting upstream code to
      our conventions.
      10bfda06
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2018g. · 5c2e0ca5
      Tom Lane authored
      DST law changes in Morocco (with, effectively, zero notice).
      Historical corrections for Hawaii.
      5c2e0ca5
  3. 30 Oct, 2018 4 commits
    • Tom Lane's avatar
      Fix interaction of CASE and ArrayCoerceExpr. · 14a158f9
      Tom Lane authored
      An array-type coercion appearing within a CASE that has a constant
      (after const-folding) test expression was mangled by the planner, causing
      all the elements of the resulting array to be equal to the coerced value
      of the CASE's test expression.  This is my oversight in commit c12d570f:
      that changed ArrayCoerceExpr to use a subexpression involving a
      CaseTestExpr, and I didn't notice that eval_const_expressions needed an
      adjustment to keep from folding such a CaseTestExpr to a constant when
      it's inside a suitable CASE.
      
      This is another in what's getting to be a depressingly long line of bugs
      associated with misidentification of the referent of a CaseTestExpr.
      We're overdue to redesign that mechanism; but any such fix is unlikely
      to be back-patchable into v11.  As a stopgap, fix eval_const_expressions
      to do what it must here.  Also add a bunch of comments pointing out the
      restrictions and assumptions that are needed to make this work at all.
      
      Also fix a related oversight: contain_context_dependent_node() was not
      aware of the relationship of ArrayCoerceExpr to CaseTestExpr.  That was
      somewhat fail-soft, in that the outcome of a wrong answer would be to
      prevent optimizations that could have been made, but let's fix it while
      we're at it.
      
      Per bug #15471 from Matt Williams.  Back-patch to v11 where the faulty
      logic came in.
      
      Discussion: https://postgr.es/m/15471-1117f49271989bad@postgresql.org
      14a158f9
    • Peter Eisentraut's avatar
      pg_rewind: Remove unused macro · c2c7c263
      Peter Eisentraut authored
      This has never been used while pg_rewind was in the tree (possibly
      once copied from pg_upgrade).
      c2c7c263
    • Michael Paquier's avatar
      Consolidate cross-option checks in pg_restore · c34bca9e
      Michael Paquier authored
      This moves one check for conflicting options from the archive restore
      code to the main function where other similar checks are performed.
      Also reword the error message to be consistent with other messages.
      
      The only option combination impacted is --create specified with
      --single-transaction, and informing the caller at an early step saves
      from opening the archive worked on.  A TAP test is added for this
      combination.
      
      Author: Daniel Gustafsson
      Reviewed-by: Fabien Coelho
      Discussion: https://postgr.es/m/616808BD-4B59-4E6C-97A9-7317F62D5570@yesql.se
      c34bca9e
    • Michael Paquier's avatar
      Add pg_partition_tree to display information about partitions · d5eec4ee
      Michael Paquier authored
      This new function is useful to display a full tree of partitions with a
      partitioned table given in output, and avoids the need of any complex
      WITH RECURSIVE query when looking at partition trees which are
      deep multiple levels.
      
      It returns a set of records, one for each partition, containing the
      partition's name, its immediate parent's name, a boolean value telling
      if the relation is a leaf in the tree and an integer telling its level
      in the partition tree with given table considered as root, beginning at
      zero for the root, and incrementing by one each time the scan goes one
      level down.
      
      Author: Amit Langote
      Reviewed-by: Jesper Pedersen, Michael Paquier, Robert Haas
      Discussion: https://postgr.es/m/8d00e51a-9a51-ad02-d53e-ba6bf50b2e52@lab.ntt.co.jp
      d5eec4ee
  4. 29 Oct, 2018 4 commits
  5. 28 Oct, 2018 2 commits
  6. 26 Oct, 2018 2 commits
  7. 25 Oct, 2018 3 commits
  8. 24 Oct, 2018 3 commits
  9. 23 Oct, 2018 4 commits
  10. 22 Oct, 2018 2 commits
  11. 21 Oct, 2018 2 commits
  12. 20 Oct, 2018 3 commits
    • Andrew Dunstan's avatar
      Lower privilege level of programs calling regression_main · ce5d3424
      Andrew Dunstan authored
      On Windows this mean that the regression tests can now safely and
      successfully run as Administrator, which is useful in situations like
      Appveyor. Elsewhere it's a no-op.
      
      Backpatch to 9.5 - this is harder in earlier branches and not worth the
      trouble.
      
      Discussion: https://postgr.es/m/650b0c29-9578-8571-b1d2-550d7f89f307@2ndQuadrant.com
      ce5d3424
    • Tom Lane's avatar
      Client-side fixes for delayed NOTIFY receipt. · 4247db62
      Tom Lane authored
      PQnotifies() is defined to just process already-read data, not try to read
      any more from the socket.  (This is a debatable decision, perhaps, but I'm
      hesitant to change longstanding library behavior.)  The documentation has
      long recommended calling PQconsumeInput() before PQnotifies() to ensure
      that any already-arrived message would get absorbed and processed.
      However, psql did not get that memo, which explains why it's not very
      reliable about reporting notifications promptly.
      
      Also, most (not quite all) callers called PQconsumeInput() just once before
      a PQnotifies() loop.  Taking this recommendation seriously implies that we
      should do PQconsumeInput() before each call.  This is more important now
      that we have "payload" strings in notification messages than it was before;
      that increases the probability of having more than one packet's worth
      of notify messages.  Hence, adjust code as well as documentation examples
      to do it like that.
      
      Back-patch to 9.5 to match related server fixes.  In principle we could
      probably go back further with these changes, but given lack of field
      complaints I doubt it's worthwhile.
      
      Discussion: https://postgr.es/m/CAOYf6ec-TmRYjKBXLLaGaB-jrd=mjG1Hzn1a1wufUAR39PQYhw@mail.gmail.com
      4247db62
    • Tom Lane's avatar
      Server-side fix for delayed NOTIFY and SIGTERM processing. · 2ddb9149
      Tom Lane authored
      Commit 4f85fde8 introduced some code that was meant to ensure that we'd
      process cancel, die, sinval catchup, and notify interrupts while waiting
      for client input.  But there was a flaw: it supposed that the process
      latch would be set upon arrival at secure_read() if any such interrupt
      was pending.  In reality, we might well have cleared the process latch
      at some earlier point while those flags remained set -- particularly
      notifyInterruptPending, which can't be handled as long as we're within
      a transaction.
      
      To fix the NOTIFY case, also attempt to process signals (except
      ProcDiePending) before trying to read.
      
      Also, if we see that ProcDiePending is set before we read, forcibly set the
      process latch to ensure that we will handle that signal promptly if no data
      is available.  I also made it set the process latch on the way out, in case
      there is similar logic elsewhere.  (It remains true that we won't service
      ProcDiePending here unless we need to wait for input.)
      
      The code for handling ProcDiePending during a write needs those changes,
      too.
      
      Also be a little more careful about when to reset whereToSendOutput,
      and improve related comments.
      
      Back-patch to 9.5 where this code was added.  I'm not entirely convinced
      that older branches don't have similar issues, but the complaint at hand
      is just about the >= 9.5 code.
      
      Jeff Janes and Tom Lane
      
      Discussion: https://postgr.es/m/CAOYf6ec-TmRYjKBXLLaGaB-jrd=mjG1Hzn1a1wufUAR39PQYhw@mail.gmail.com
      2ddb9149
  13. 19 Oct, 2018 2 commits
    • Tom Lane's avatar
      Sync our copy of the timezone library with IANA release tzcode2018f. · 12bfb778
      Tom Lane authored
      About half of this is purely cosmetic changes to reduce the diff between
      our code and theirs, like inserting "const" markers where they have them.
      
      The other half is tracking actual code changes in zic.c and localtime.c.
      I don't think any of these represent near-term compatibility hazards, but
      it seems best to stay up to date.
      
      I also fixed longstanding bugs in our code for producing the
      known_abbrevs.txt list, which by chance hadn't been exposed before,
      but which resulted in some garbage output after applying the upstream
      changes in zic.c.  Notably, because upstream removed their old phony
      transitions at the Big Bang, it's now necessary to cope with TZif files
      containing no DST transition times at all.
      12bfb778
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2018f. · 13877d30
      Tom Lane authored
      DST law changes in Chile, Fiji, and Russia (Volgograd).
      Historical corrections for China, Japan, Macau, and North Korea.
      
      Note: like the previous tzdata update, this involves a depressingly
      large amount of semantically-meaningless churn in tzdata.zi.  That
      is a consequence of upstream's data compression method assigning
      unstable abbreviations to DST rulesets.  I complained about that
      to them last time, and this version now uses an assignment method
      that pays some heed to not changing abbreviations unnecessarily.
      So hopefully, that'll be better going forward.
      13877d30