1. 20 Oct, 2018 2 commits
    • 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
  2. 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
  3. 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
  4. 17 Oct, 2018 8 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
    • Peter Eisentraut's avatar
      Fix crash in multi-insert COPY · a7a1b445
      Peter Eisentraut authored
      A bug introduced in 0d5f05cd
      considered the *previous* partition's triggers when deciding whether
      multi-insert can be used.  Rearrange the code so that the current
      partition is considered.
      
      Author: Ashutosh Sharma <ashu.coek88@gmail.com>
      a7a1b445
    • Tom Lane's avatar
      Minor additional improvements for ecpglib/prepare.c. · d8cc1616
      Tom Lane authored
      Avoid allocating never-used entries in stmtCacheEntries[], other than the
      intentionally-unused zero'th entry.  Tie the array size directly to the
      bucket count and size, rather than having undocumented dependencies between
      three magic constants.  Fix the hash calculation to be platform-independent
      --- notably, it was sensitive to the signed'ness of "char" before, not to
      mention having an unnecessary hard-wired dependency on the existence and
      size of type "long long".  (The lack of complaints says it's been a long
      time since anybody tried to build PG on a compiler without "long long",
      and certainly with the requirement for C99 this isn't a live bug anymore.
      But it's still not per project coding style.)  Fix ecpg_auto_prepare's
      new-cache-entry path so that it increments the exec count for the new
      cache entry not the dummy zero'th entry.
      
      The last of those is an actual bug, though one of little consequence;
      the rest is mostly future-proofing and neatnik-ism.  Doesn't seem
      necessary to back-patch.
      d8cc1616
    • Tom Lane's avatar
      Improve tzparse's handling of TZDEFRULES ("posixrules") zone data. · e7eb07f7
      Tom Lane authored
      In the IANA timezone code, tzparse() always tries to load the zone
      file named by TZDEFRULES ("posixrules").  Previously, we'd hacked
      that logic to skip the load in the "lastditch" code path, which we use
      only to initialize the default "GMT" zone during GUC initialization.
      That's critical for a couple of reasons: since we do not support leap
      seconds, we *must not* allow "GMT" to have leap seconds, and since this
      case runs before the GUC subsystem is fully alive, we'd really rather
      not take the risk of pg_open_tzfile throwing any errors.
      
      However, that still left the code reading TZDEFRULES on every other
      call, something we'd noticed to the extent of having added code to cache
      the result so it was only done once per process not a lot of times.
      Andres Freund complained about the static data space used up for the
      cache; but as long as the logic was like this, there was no point in
      trying to get rid of that space.
      
      We can improve matters by looking a bit more closely at what the IANA
      code actually needs the TZDEFRULES data for.  One thing it does is
      that if "posixrules" is a leap-second-aware zone, the leap-second
      behavior will be absorbed into every POSIX-style zone specification.
      However, that's a behavior we'd really prefer to do without, since
      for our purposes the end effect is to render every POSIX-style zone
      name unsupported.  Otherwise, the TZDEFRULES data is used only if
      the POSIX zone name specifies DST but doesn't include a transition
      date rule (e.g., "EST5EDT" rather than "EST5EDT,M3.2.0,M11.1.0").
      That is a minority case for our purposes --- in particular, it
      never happens when tzload() invokes tzparse() to interpret a
      transition date rule string found in a tzdata zone file.
      
      Hence, if we legislate that we're going to ignore leap-second data
      from "posixrules", we can postpone the TZDEFRULES load into the path
      where we actually need to substitute for a missing date rule string.
      That means it will never happen at all in common scenarios, making it
      reasonable to dynamically allocate the cache space when it does happen.
      Even when the data is already loaded, this saves some cycles in the
      common code path since we avoid a memcpy of 23KB or so.  And, IMO at
      least, this is a less ugly hack on the IANA logic than what we had
      before, since it's not messing with the lastditch-vs-regular code paths.
      
      Back-patch to all supported branches, not so much because this is a
      critical change as that I want to keep all our copies of the IANA
      timezone code in sync.
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      e7eb07f7
    • Tom Lane's avatar
      Avoid statically allocating statement cache in ecpglib/prepare.c. · e15aae82
      Tom Lane authored
      This removes a megabyte of storage that isn't used at all in ecpglib's
      default operating mode --- you have to enable auto-prepare to get any
      use out of it.  Seems well worth the trouble to allocate on demand.
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      e15aae82
    • Tom Lane's avatar
      Formatting cleanup in ecpglib/prepare.c. · 92dff341
      Tom Lane authored
      Looking at this code made my head hurt.  Format the comments more
      like the way it's done elsewhere, break a few overly long lines.
      No actual code changes in this commit.
      92dff341
  5. 16 Oct, 2018 13 commits
    • Andres Freund's avatar
      Reorder FmgrBuiltin members, saving 25% in size. · 28d750c0
      Andres Freund authored
      That's worth it, as fmgr_builtins is frequently accessed, and as
      fmgr_builtins is one of the biggest constant variables in a backend.
      
      On most 64bit systems this will change the size of the struct from
      32byte to 24bytes. While that could make indexing into the array
      marginally more expensive, the higher cache hit ratio is worth more,
      especially because these days fmgr_builtins isn't searched with a
      binary search anymore (c.f. 212e6f34).
      
      Discussion: https://postgr.es/m/20181016201145.aa2dfeq54rhqzron@alap3.anarazel.de
      28d750c0
    • Tom Lane's avatar
      Back off using -isysroot on Darwin. · 68fc227d
      Tom Lane authored
      Rethink the solution applied in commit 5e221713 to get PL/Tcl to
      build on macOS Mojave.  I feared that adding -isysroot globally might
      have undesirable consequences, and sure enough Jakob Egger reported
      one: it complicates building extensions with a different Xcode version
      than was used for the core server.  (I find that a risky proposition
      in general, but apparently it works most of the time, so we shouldn't
      break it if we don't have to.)
      
      We'd already adopted the solution for PL/Perl of inserting the sysroot
      path directly into the -I switches used to find Perl's headers, and we
      can do the same thing for PL/Tcl by changing the -iwithsysroot switch
      that Apple's tclConfig.sh reports.  This restricts the risks to PL/Perl
      and PL/Tcl themselves and directly-dependent extensions, which is a lot
      more pleasing in general than a global -isysroot switch.
      
      Along the way, tighten the test to see if we need to inject the sysroot
      path into $perl_includedir, as I'd speculated about upthread but not
      gotten round to doing.
      
      As before, back-patch to all supported versions.
      
      Discussion: https://postgr.es/m/20840.1537850987@sss.pgh.pa.us
      68fc227d
    • Andres Freund's avatar
      Mark constantly allocated dest receiver as const. · 93ca02e0
      Andres Freund authored
      This allows the compiler / linker to mark affected pages as read-only.
      
      Doing so requires casting constness away, as CreateDestReceiver()
      returns both constant and non-constant dest receivers. That's fine
      though, as any modification of the statically allocated receivers
      would already have been a bug (and would now be caught on some
      platforms).
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      93ca02e0
    • Andres Freund's avatar
      Add macro to cast away const without allowing changes to underlying type. · d1211c63
      Andres Freund authored
      The new unconsitify(underlying_type, var) macro allows to cast
      constness away from a variable, but doesn't allow changing the
      underlying type.  Enforcement of the latter currently only works for
      gcc like compilers.
      
      Please note IT IS NOT SAFE to cast constness away if the variable will ever
      be modified (it would be undefined behaviour). Doing so anyway can cause
      compiler misoptimizations or runtime crashes (modifying readonly memory).
      It is only safe to use when the the variable will not be modified, but API
      design or language restrictions prevent you from declaring that
      (e.g. because a function returns both const and non-const variables).
      
      This'll be used in an upcoming change, but seems like it's independent
      infrastructure.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      d1211c63
    • Tom Lane's avatar
      Be smarter about age-counter overflow in formatting.c caches. · 2c300c68
      Tom Lane authored
      The previous code here simply threw away whatever it knew about cache
      entry ages whenever a counter overflow occurred.  Since the counter
      is int width and will be bumped once per format function execution,
      overflows are not really so rare as to not be worth thinking about.
      Instead, let's deal with the situation by halving all the age values,
      essentially rescaling the age metric.  In that way, we retain a
      pretty accurate (if not quite perfect) idea of which entries are oldest.
      2c300c68
    • Tom Lane's avatar
      Avoid rare race condition in privileges.sql regression test. · f7a953c2
      Tom Lane authored
      We created a temp table, then switched to a new session, leaving
      the old session to clean up its temp objects in background.  If that
      took long enough, the eventual attempt to drop the user that owns
      the temp table could fail, as exhibited today by sidewinder.
      Fix by dropping the temp table explicitly when we're done with it.
      
      It's been like this for quite some time, so back-patch to all
      supported branches.
      
      Report: https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=sidewinder&dt=2018-10-16%2014%3A45%3A00
      f7a953c2
    • Tom Lane's avatar
      Avoid statically allocating formatting.c's format string caches. · fd85e9f7
      Tom Lane authored
      This eliminates circa 120KB of static data from Postgres' memory
      footprint.  In some usage patterns that space will get allocated
      anyway, but in many processes it never will be allocated.
      
      We can improve matters further by allocating only as many cache
      entries as we actually use, rather than allocating the whole array
      on first use.  However, to avoid wasting lots of space due to
      palloc's habit of rounding requests up to power-of-2 sizes, tweak
      the maximum cacheable format string length to make the struct sizes
      be powers of 2 or just less.  The sizes I chose make the maximums
      a little bit less than they were before, but I doubt it matters much.
      
      While at it, rearrange struct FormatNode to avoid wasting quite so
      much padding space.  This change actually halves the size of that
      struct on 64-bit machines.
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      fd85e9f7
    • Andres Freund's avatar
      Correct constness of system attributes in heap.c & prerequisites. · 02a30a09
      Andres Freund authored
      This allows the compiler / linker to mark affected pages as read-only.
      
      There's a fair number of pre-requisite changes, to allow the const
      properly be propagated. Most of consts were already required for
      correctness anyway, just not represented on the type-level.  Arguably
      we could be more aggressive in using consts in related code, but..
      
      This requires using a few of the types underlying typedefs that
      removes pointers (e.g. const NameData *) as declaring the typedefed
      type constant doesn't have the same meaning (it makes the variable
      const, not what it points to).
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      02a30a09
    • Tom Lane's avatar
      Make PostgresNode.pm's poll_query_until() more chatty about failures. · c015ccb3
      Tom Lane authored
      Reporting only the stderr is unhelpful when the problem is that the
      server output we're getting doesn't match what was expected.  So we
      should report the query output too; and just for good measure, let's
      print the query we used and the output we expected.
      
      Back-patch to 9.5 where poll_query_until was introduced.
      
      Discussion: https://postgr.es/m/17913.1539634756@sss.pgh.pa.us
      c015ccb3
    • Tom Lane's avatar
      Improve stability of recently-added regression test case. · 17d6a8fb
      Tom Lane authored
      Commit b5febc1d added a contrib/btree_gist test case that has been
      observed to fail in the buildfarm as a result of background auto-analyze
      updating stats and changing the selected plan.  Forestall that by
      forcibly analyzing in foreground, instead.  The new plan choice is
      just as good for our purposes, since we really only care that an
      index-only plan does not get selected.
      
      Back-patch to 9.5, like the previous patch.
      
      Discussion: https://postgr.es/m/14643.1539629304@sss.pgh.pa.us
      17d6a8fb
    • Tom Lane's avatar
      Avoid statically allocating gmtsub()'s timezone workspace. · 3dfef0c5
      Tom Lane authored
      localtime.c's "struct state" is a rather large object, ~23KB.  We were
      statically allocating one for gmtsub() to use to represent the GMT
      timezone, even though that function is not at all heavily used and is
      never reached in most backends.  Let's malloc it on-demand, instead.
      
      This does pose the question of how to handle a malloc failure, but
      there's already a well-defined error report convention here, ie
      set errno and return NULL.
      
      We have but one caller of pg_gmtime in HEAD, and two in back branches,
      neither of which were troubling to check for error.  Make them do so.
      The possible errors are sufficiently unlikely (out-of-range timestamp,
      and now malloc failure) that I think elog() is adequate.
      
      Back-patch to all supported branches to keep our copies of the IANA
      timezone code in sync.  This particular change is in a stanza that
      already differs from upstream, so it's a wash for maintenance purposes
      --- but only as long as we keep the branches the same.
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      3dfef0c5
    • Andres Freund's avatar
      Correct constness of a few variables. · 62649bad
      Andres Freund authored
      This allows the compiler / linker to mark affected pages as read-only.
      
      There's other cases, but they're a bit more invasive, and should go
      through some review. These are easy.
      
      They were found with
      objdump -j .data -t src/backend/postgres|awk '{print $4, $5, $6}'|sort -r|less
      
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de
      62649bad
    • Andres Freund's avatar
      Move TupleTableSlots boolean member into one flag variable. · c5257345
      Andres Freund authored
      There's several reasons for this change:
      1) It reduces the total size of TupleTableSlot / reduces alignment
         padding, making the commonly accessed members fit into a single
         cacheline (but we currently do not force proper alignment, so
         that's not yet guaranteed to be helpful)
      2) Combining the booleans into a flag allows to combine read/writes
         from memory.
      3) With the upcoming slot abstraction changes, it allows to have core
         and extended flags, in a memory efficient way.
      
      Author: Ashutosh Bapat and Andres Freund
      Discussion: https://postgr.es/m/20180220224318.gw4oe5jadhpmcdnm@alap3.anarazel.de
      c5257345
  6. 15 Oct, 2018 6 commits
    • Andres Freund's avatar
      Move generic slot support functions from heaptuple.c into execTuples.c. · 9d906f11
      Andres Freund authored
      heaptuple.c was never a particular good fit for slot_getattr(),
      slot_getsomeattrs() and slot_getmissingattrs(), but in upcoming
      changes slots will be made more abstract (allowing slots that contain
      different types of tuples), making it clearly the wrong place.
      
      Note that slot_deform_tuple() remains in it's current place, as it
      clearly deals with a HeapTuple.  getmissingattrs() also remains, but
      it's less clear that that's correct - but execTuples.c wouldn't be the
      right place.
      
      Author: Ashutosh Bapat.
      Discussion: https://postgr.es/m/20180220224318.gw4oe5jadhpmcdnm@alap3.anarazel.de
      9d906f11
    • Thomas Munro's avatar
      Move the replication lag tracker into heap memory. · e73ca79f
      Thomas Munro authored
      Andres Freund complained about the 128KB of .bss occupied by LagTracker.
      It's only needed in the walsender process, so allocate it in heap
      memory there.
      
      Author: Thomas Munro
      Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya%40alap3.anarazel.de
      e73ca79f
    • Tom Lane's avatar
      Check for stack overrun in standard_ProcessUtility(). · d48da369
      Tom Lane authored
      ProcessUtility can recurse, and indeed can be driven to infinite
      recursion, so it ought to have a check_stack_depth() call.  This
      covers the reported bug (portal trying to execute itself) and a bunch
      of other cases that could perhaps arise somewhere.
      
      Per bug #15428 from Malthe Borch.  Back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/15428-b3c2915ec470b033@postgresql.org
      d48da369
    • Peter Eisentraut's avatar
      pgbench: Report errors during run better · 5b75a4f8
      Peter Eisentraut authored
      When an error occurs during a benchmark run, exit with a nonzero exit
      code and write a message at the end.  Previously, it would just print
      the error message when it happened but then proceed to print the run
      summary normally and exit with status 0.  To still allow
      distinguishing setup from run-time errors, we use exit status 2 for
      the new state, whereas existing errors during pgbench initialization
      use exit status 1.
      Reviewed-by: default avatarFabien COELHO <coelho@cri.ensmp.fr>
      5b75a4f8
    • Peter Eisentraut's avatar
      Make spelling of "acknowledgment" consistent · 35584fd0
      Peter Eisentraut authored
      I used the preferred U.S. spelling, as we do in other cases.
      35584fd0
    • Peter Eisentraut's avatar
      Fixes for "Glyph not available" warnings from FOP · 9274c577
      Peter Eisentraut authored
      With the PostgreSQL 11 release notes acknowledgments list, FOP reported
      
      WARNING: Glyph "?" (0x144, nacute) not available in font "Times-Roman".
      WARNING: Glyph "?" (0x15e, Scedilla) not available in font "Times-Roman".
      WARNING: Glyph "?" (0x15f, scedilla) not available in font "Times-Roman".
      WARNING: Glyph "?" (0x131, dotlessi) not available in font "Times-Roman".
      
      This is because we have some new contributors whose names use letters
      that we haven't used before, and apparently FOP can't handle them out
      of the box.
      
      For now, just fix this by "unaccenting" those names.  In the future,
      maybe this can be fixed better with a different font configuration.
      
      There is also another warning
      
      WARNING: Glyph "?" (0x3c0, pi) not available in font "Times-Roman".
      
      but that existed in previous releases and is not touched here.
      9274c577
  7. 14 Oct, 2018 4 commits
    • Alexander Korotkov's avatar
      Add missed tag in bloom.sgml · 981b64f8
      Alexander Korotkov authored
      Backpatch commits don't contain this error.
      981b64f8
    • Alexander Korotkov's avatar
      contrib/bloom documentation improvement · 98afb839
      Alexander Korotkov authored
      This commit documents rounding of "length" parameter and absence of support
      for unique indexes and NULLs searching.  Backpatch to 9.6 where contrib/bloom
      was introduced.
      
      Discussion: https://postgr.es/m/CAF4Au4wPQQ7EHVSnzcLjsbY3oLSzVk6UemZLD1Sbmwysy3R61g%40mail.gmail.com
      Author: Oleg Bartunov with minor editorialization by me
      Backpatch-through: 9.6
      98afb839
    • Tom Lane's avatar
      Make some subquery-using test cases a bit more robust. · b403ea43
      Tom Lane authored
      These test cases could be adversely affected by an upcoming change
      to allow pullup of FROM-less subqueries.  Tweak them to ensure that
      they'll continue to test what they did before.
      
      Discussion: https://postgr.es/m/5395.1539275668@sss.pgh.pa.us
      b403ea43
    • Tom Lane's avatar
      Use PlaceHolderVars within the quals of a FULL JOIN. · 7d4a10e2
      Tom Lane authored
      This prevents failures in cases where we pull up a constant or var-free
      expression from a subquery and put it into a full join's qual.  That can
      result in not recognizing the qual as containing a mergejoin-able or
      hashjoin-able condition.  A PHV prevents the problem because it is still
      recognized as belonging to the side of the join the subquery is in.
      
      I'm not very sure about the net effect of this change on plan quality.
      In "typical" cases where the join keys are Vars, nothing changes.
      In an affected case, the PHV-wrapped expression is less likely to be seen
      as equal to PHV-less instances below the join, but more likely to be seen
      as equal to similar expressions above the join, so it may end up being a
      wash.  In the one existing case where there's any visible change in a
      regression-test plan, it amounts to referencing a lower computation of a
      COALESCE result instead of recomputing it, which seems like a win.
      
      Given my uncertainty about that and the lack of field complaints,
      no back-patch, even though this is a very ancient problem.
      
      Discussion: https://postgr.es/m/32090.1539378124@sss.pgh.pa.us
      7d4a10e2