1. 17 Mar, 2019 2 commits
  2. 16 Mar, 2019 10 commits
  3. 15 Mar, 2019 6 commits
    • Tom Lane's avatar
      Further reduce memory footprint of CLOBBER_CACHE_ALWAYS testing. · d3f48dfa
      Tom Lane authored
      Some buildfarm members using CLOBBER_CACHE_ALWAYS have been having OOM
      problems of late.  Commit 2455ab48 addressed this problem by recovering
      space transiently used within RelationBuildPartitionDesc, but it turns
      out that leaves quite a lot on the table, because other subroutines of
      RelationBuildDesc also leak memory like mad.  Let's move the temp-context
      management into RelationBuildDesc so that leakage from the other
      subroutines is also recovered.
      
      I examined this issue by arranging for postgres.c to dump the size of
      MessageContext just before resetting it in each command cycle, and
      then running the update.sql regression test (which is one of the two
      that are seeing buildfarm OOMs) with and without CLOBBER_CACHE_ALWAYS.
      Before 2455ab48, the peak space usage with CCA was as much as 250MB.
      That patch got it down to ~80MB, but with this patch it's about 0.5MB,
      and indeed the space usage now seems nearly indistinguishable from a
      non-CCA build.
      
      RelationBuildDesc's traditional behavior of not worrying about leaking
      transient data is of many years' standing, so I'm pretty hesitant to
      change that without more evidence that it'd be useful in a normal build.
      (So far as I can see, non-CCA memory consumption is about the same with
      or without this change, whuch if anything suggests that it isn't useful.)
      Hence, configure the patch so that we recover space only when
      CLOBBER_CACHE_ALWAYS or CLOBBER_CACHE_RECURSIVELY is defined.  However,
      that choice can be overridden at compile time, in case somebody would
      like to do some performance testing and try to develop evidence for
      changing that decision.
      
      It's possible that we ought to back-patch this change, but in the
      absence of back-branch OOM problems in the buildfarm, I'm not in
      a hurry to do that.
      
      Discussion: https://postgr.es/m/CA+TgmoY3bRmGB6-DUnoVy5fJoreiBJ43rwMrQRCdPXuKt4Ykaw@mail.gmail.com
      d3f48dfa
    • Peter Eisentraut's avatar
      PL/Tcl: Improve trigger tests organization · aefcc2bb
      Peter Eisentraut authored
      The trigger tests for PL/Tcl were spread aroud pltcl_setup.sql and
      pltcl_queries.sql, mixed with other tests, which makes them hard to
      follow and edit.  Move all the trigger-related pieces to a new file
      pltcl_trigger.sql.  This also makes the test setup more similar to
      plperl and plpython.
      aefcc2bb
    • Peter Eisentraut's avatar
      Add walreceiver API to get remote server version · 69039fda
      Peter Eisentraut authored
      Add a separate walreceiver API function walrcv_server_version() to get
      the version of the remote server, instead of doing it as part of
      walrcv_identify_system().  This allows the server version to be
      available even for uses that don't call IDENTIFY_SYSTEM, and it seems
      cleaner anyway.
      
      This is for an upcoming patch, not currently used.
      Reviewed-by: default avatarMichael Paquier <michael@paquier.xyz>
      Discussion: https://www.postgresql.org/message-id/20190115071359.GF1433@paquier.xyz
      69039fda
    • Michael Paquier's avatar
      4e197bf1
    • Thomas Munro's avatar
      Enable parallel query with SERIALIZABLE isolation. · bb16aba5
      Thomas Munro authored
      Previously, the SERIALIZABLE isolation level prevented parallel query
      from being used.  Allow the two features to be used together by
      sharing the leader's SERIALIZABLEXACT with parallel workers.
      
      An extra per-SERIALIZABLEXACT LWLock is introduced to make it safe to
      share, and new logic is introduced to coordinate the early release
      of the SERIALIZABLEXACT required for the SXACT_FLAG_RO_SAFE
      optimization, as follows:
      
      The first backend to observe the SXACT_FLAG_RO_SAFE flag (set by
      some other transaction) will 'partially release' the SERIALIZABLEXACT,
      meaning that the conflicts and locks it holds are released, but the
      SERIALIZABLEXACT itself will remain active because other backends
      might still have a pointer to it.
      
      Whenever any backend notices the SXACT_FLAG_RO_SAFE flag, it clears
      its own MySerializableXact variable and frees local resources so that
      it can skip SSI checks for the rest of the transaction.  In the
      special case of the leader process, it transfers the SERIALIZABLEXACT
      to a new variable SavedSerializableXact, so that it can be completely
      released at the end of the transaction after all workers have exited.
      
      Remove the serializable_okay flag added to CreateParallelContext() by
      commit 9da0cc35, because it's now redundant.
      
      Author: Thomas Munro
      Reviewed-by: Haribabu Kommi, Robert Haas, Masahiko Sawada, Kevin Grittner
      Discussion: https://postgr.es/m/CAEepm=0gXGYhtrVDWOTHS8SQQy_=S9xo+8oCxGLWZAOoeJ=yzQ@mail.gmail.com
      bb16aba5
    • Amit Kapila's avatar
      During pg_upgrade, conditionally skip transfer of FSMs. · 13e8643b
      Amit Kapila authored
      If a heap on the old cluster has 4 pages or fewer, and the old cluster
      was PG v11 or earlier, don't copy or link the FSM. This will shrink
      space usage for installations with large numbers of small tables.
      
      This will allow pg_upgrade to take advantage of commit b0eaa4c5 where
      we have avoided creation of the free space map for small heap relations.
      
      Author: John Naylor
      Reviewed-by: Amit Kapila
      Discussion: https://postgr.es/m/CACPNZCu4cOdm3uGnNEGXivy7Gz8UWyQjynDpdkPGabQ18_zK6g%40mail.gmail.com
      13e8643b
  4. 14 Mar, 2019 13 commits
  5. 13 Mar, 2019 9 commits