1. 25 Mar, 2020 11 commits
  2. 24 Mar, 2020 15 commits
  3. 23 Mar, 2020 10 commits
  4. 22 Mar, 2020 1 commit
  5. 21 Mar, 2020 3 commits
    • Tom Lane's avatar
      Fix up recent breakage of headerscheck and cpluspluscheck. · d0587f52
      Tom Lane authored
      headerscheck and cpluspluscheck should skip the recently-added
      cmdtaglist.h header, since (like kwlist.h and some other similarly-
      designed headers) it's not meant to be included standalone.
      
      evtcache.h was missing an #include to support its usage of Bitmapset.
      
      typecmds.h was missing an #include to support its usage of ParseState.
      
      The first two of these were evidently oversights in commit 2f966131.
      I didn't track down exactly which change broke typecmds.h, but it
      must have been some rearrangement in one of its existing inclusions,
      because it's referenced ParseState for quite a long time and there
      were not complaints from these checking programs before.
      d0587f52
    • Noah Misch's avatar
      Skip WAL for new relfilenodes, under wal_level=minimal. · cb2fd7ea
      Noah Misch authored
      Until now, only selected bulk operations (e.g. COPY) did this.  If a
      given relfilenode received both a WAL-skipping COPY and a WAL-logged
      operation (e.g. INSERT), recovery could lose tuples from the COPY.  See
      src/backend/access/transam/README section "Skipping WAL for New
      RelFileNode" for the new coding rules.  Maintainers of table access
      methods should examine that section.
      
      To maintain data durability, just before commit, we choose between an
      fsync of the relfilenode and copying its contents to WAL.  A new GUC,
      wal_skip_threshold, guides that choice.  If this change slows a workload
      that creates small, permanent relfilenodes under wal_level=minimal, try
      adjusting wal_skip_threshold.  Users setting a timeout on COMMIT may
      need to adjust that timeout, and log_min_duration_statement analysis
      will reflect time consumption moving to COMMIT from commands like COPY.
      
      Internally, this requires a reliable determination of whether
      RollbackAndReleaseCurrentSubTransaction() would unlink a relation's
      current relfilenode.  Introduce rd_firstRelfilenodeSubid.  Amend the
      specification of rd_createSubid such that the field is zero when a new
      rel has an old rd_node.  Make relcache.c retain entries for certain
      dropped relations until end of transaction.
      
      Back-patch to 9.5 (all supported versions).  This introduces a new WAL
      record type, XLOG_GIST_ASSIGN_LSN, without bumping XLOG_PAGE_MAGIC.  As
      always, update standby systems before master systems.  This changes
      sizeof(RelationData) and sizeof(IndexStmt), breaking binary
      compatibility for affected extensions.  (The most recent commit to
      affect the same class of extensions was
      089e4d405d0f3b94c74a2c6a54357a84a681754b.)
      
      Kyotaro Horiguchi, reviewed (in earlier, similar versions) by Robert
      Haas.  Heikki Linnakangas and Michael Paquier implemented earlier
      designs that materially clarified the problem.  Reviewed, in earlier
      designs, by Andrew Dunstan, Andres Freund, Alvaro Herrera, Tom Lane,
      Fujii Masao, and Simon Riggs.  Reported by Martijn van Oosterhout.
      
      Discussion: https://postgr.es/m/20150702220524.GA9392@svana.org
      cb2fd7ea
    • Noah Misch's avatar
      In log_newpage_range(), heed forkNum and page_std arguments. · d3e57285
      Noah Misch authored
      The function assumed forkNum=MAIN_FORKNUM and page_std=true, ignoring
      the actual arguments.  Existing callers passed exactly those values, so
      there's no live bug.  Back-patch to v12, where the function first
      appeared, because another fix needs this.
      
      Discussion: https://postgr.es/m/20191118045434.GA1173436@rfd.leadboat.com
      d3e57285