Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

postgres-lambda-diff

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Heikki Linnakangas authored
    EndRecPtr is the last record that we've read, but not necessarily yet
    replayed. CheckRecoveryConsistency should compare minRecoveryPoint with the
    last replayed record instead. This caused recovery to think it's reached
    consistency too early.
    
    Now that we do the check in CheckRecoveryConsistency correctly, we have to
    move the call of that function to after redoing a record. The current place,
    after reading a record but before replaying it, is wrong. In particular, if
    there are no more records after the one ending at minRecoveryPoint, we don't
    enter hot standby until one extra record is generated and read by the
    standby, and CheckRecoveryConsistency is called. These two bugs conspired
    to make the code appear to work correctly, except for the small window
    between reading the last record that reaches minRecoveryPoint, and
    replaying it.
    
    In the passing, rename recoveryLastRecPtr, which is the last record
    replayed, to lastReplayedEndRecPtr. This makes it slightly less confusing
    with replayEndRecPtr, which is the last record read that we're about to
    replay.
    
    Original report from Kyotaro HORIGUCHI, further diagnosis by Fujii Masao.
    Backpatch to 9.0, where Hot Standby subtly changed the test from
    "minRecoveryPoint < EndRecPtr" to "minRecoveryPoint <= EndRecPtr". The
    former works because where the test is performed, we have always read one
    more record than we've replayed.
    970fb12d
    History
    PostgreSQL Database Management System
    =====================================
    
    This directory contains the source code distribution of the PostgreSQL
    database management system.
    
    PostgreSQL is an advanced object-relational database management system
    that supports an extended subset of the SQL standard, including
    transactions, foreign keys, subqueries, triggers, user-defined types
    and functions.  This distribution also contains C language bindings.
    
    PostgreSQL has many language interfaces, many of which are listed here:
    
    	http://www.postgresql.org/download
    
    See the file INSTALL for instructions on how to build and install
    PostgreSQL.  That file also lists supported operating systems and
    hardware platforms and contains information regarding any other
    software packages that are required to build or run the PostgreSQL
    system.  Changes between all PostgreSQL releases are recorded in the
    file HISTORY.  Copyright and license information can be found in the
    file COPYRIGHT.  A comprehensive documentation set is included in this
    distribution; it can be read as described in the installation
    instructions.
    
    The latest version of this software may be obtained at
    http://www.postgresql.org/download/.  For more information look at our
    web site located at http://www.postgresql.org/.