1. 31 Oct, 2018 1 commit
  2. 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
  3. 29 Oct, 2018 4 commits
  4. 28 Oct, 2018 2 commits
  5. 26 Oct, 2018 2 commits
  6. 25 Oct, 2018 3 commits
  7. 24 Oct, 2018 3 commits
  8. 23 Oct, 2018 4 commits
  9. 22 Oct, 2018 2 commits
  10. 21 Oct, 2018 2 commits
  11. 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
  12. 19 Oct, 2018 6 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
    • Tom Lane's avatar
      Silence perlcritic warning about missing return. · e65e8f82
      Tom Lane authored
      Per buildfarm member crake.
      e65e8f82
    • Michael Paquier's avatar
      Use whitelist to choose files scanned with pg_verify_checksums · d55241af
      Michael Paquier authored
      The original implementation of pg_verify_checksums used a blacklist to
      decide which files should be skipped for scanning as they do not include
      data checksums, like pg_internal.init or pg_control.  However, this
      missed two things:
      - Some files are created within builds of EXEC_BACKEND and these were
      not listed, causing failures on Windows.
      - Extensions may create custom files in data folders, causing the tool
      to equally fail.
      
      This commit switches to a whitelist-like method instead by checking if
      the files to scan are authorized relation files.  This is close to a
      reverse-engineering of what is defined in relpath.c in charge of
      building the relation paths, and we could consider refactoring what this
      patch does so as all routines are in a single place.  This is left for
      later.
      
      This is based on a suggestion from Andres Freund.  TAP tests are updated
      so as multiple file patterns are tested.  The bug has been spotted by
      various buildfarm members as a result of b34e84f1 which has introduced
      the TAP tests of pg_verify_checksums.
      
      Author: Michael Paquier
      Reviewed-by: Andrew Dunstan, Michael Banck
      Discussion: https://postgr.es/m/20181012005614.GC26424@paquier.xyz
      Backpatch-through: 11
      d55241af
    • Tom Lane's avatar
      Add missing quote_identifier calls for CREATE TRIGGER ... REFERENCING. · 350410be
      Tom Lane authored
      Mixed-case names for transition tables weren't dumped correctly.
      Oversight in commit 8c48375e, per bug #15440 from Karl Czajkowski.
      
      In passing, I couldn't resist a bit of code beautification.
      
      Back-patch to v10 where this was introduced.
      
      Discussion: https://postgr.es/m/15440-02d1468e94d63d76@postgresql.org
      350410be
    • Thomas Munro's avatar
      Refactor pid, random seed and start time initialization. · 197e4af9
      Thomas Munro authored
      Background workers, including parallel workers, were generating
      the same sequence of numbers in random().  This showed up as DSM
      handle collisions when Parallel Hash created multiple segments,
      but any code that calls random() in background workers could be
      affected if it cares about different backends generating different
      numbers.
      
      Repair by making sure that all new processes initialize the seed
      at the same time as they set MyProcPid and MyStartTime in a new
      function InitProcessGlobals(), called by the postmaster, its
      children and also standalone processes.  Also add a new high
      resolution MyStartTimestamp as a potentially useful by-product,
      and remove SessionStartTime from struct Port as it is now
      redundant.
      
      No back-patch for now, as the known consequences so far are just
      a bunch of harmless shm_open(O_EXCL) collisions.
      
      Author: Thomas Munro
      Reviewed-by: Tom Lane
      Discussion: https://postgr.es/m/CAEepm%3D2eJj_6%3DB%2B2tEpGu2nf1BjthCf9nXXUouYvJJ4C5WSwhg%40mail.gmail.com
      197e4af9
  13. 18 Oct, 2018 1 commit
    • Tom Lane's avatar
      Still further rethinking of build changes for macOS Mojave. · e74dd00f
      Tom Lane authored
      To avoid the sorts of problems complained of by Jakob Egger, it'd be
      best if configure didn't emit any references to the sysroot path at all.
      In the case of PL/Tcl, we can do that just by keeping our hands off the
      TCL_INCLUDE_SPEC string altogether.  In the case of PL/Perl, we need to
      substitute -iwithsysroot for -I in the compile commands, which is easily
      handled if we change to using a configure output variable that includes
      the switch not only the directory name.  Since PL/Tcl and PL/Python
      already do it like that, this seems like good consistency cleanup anyway.
      
      Hence, this replaces the advice given to Perl-related extensions in commit
      5e221713; instead of writing "-I$(perl_archlibexp)/CORE", they should
      just write "$(perl_includespec)".  (The old way continues to work, but not
      on recent macOS.)
      
      It's still the case that configure needs to be aware of the sysroot
      path internally, but that's cleaner than what we had before.
      
      As before, back-patch to all supported versions.
      
      Discussion: https://postgr.es/m/20840.1537850987@sss.pgh.pa.us
      e74dd00f
  14. 17 Oct, 2018 3 commits
    • Tom Lane's avatar
      Improve some comments related to executor result relations. · 26cb8203
      Tom Lane authored
      es_leaf_result_relations doesn't exist; perhaps this was an old name
      for es_tuple_routing_result_relations, or maybe this comment has gone
      unmaintained through multiple rounds of whacking the code around.
      
      Related comment in execnodes.h was both obsolete and ungrammatical.
      26cb8203
    • Tom Lane's avatar
      48d818ed
    • Tom Lane's avatar
      Fix minor bug in isolationtester. · 9958b2b2
      Tom Lane authored
      If the lock wait query failed, isolationtester would report the
      PQerrorMessage from some other connection, meaning there would be
      no message or an unrelated one.  This seems like a pretty unlikely
      occurrence, but if it did happen, this bug could make it really
      difficult/confusing to figure out what happened.  That seems to
      justify patching all the way back.
      
      In passing, clean up another place where the "wrong" conn was used
      for an error report.  That one's not actually buggy because it's
      a different alias for the same connection, but it's still confusing
      to the reader.
      9958b2b2