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
    Kevin Grittner authored
    Serializable Snapshot Isolation used for serializable transactions
    depends on acquiring SIRead locks on all heap relation tuples which
    are used to generate the query result, so that a later delete or
    update of any of the tuples can flag a read-write conflict between
    transactions.  This is normally handled in heapam.c, with tuple level
    locking.  Since an index-only scan avoids heap access in many cases,
    building the result from the index tuple, the necessary predicate
    locks were not being acquired for all tuples in an index-only scan.
    
    To prevent problems with tuple IDs which are vacuumed and re-used
    while the transaction still matters, the xmin of the tuple is part of
    the tag for the tuple lock.  Since xmin is not available to the
    index-only scan for result rows generated from the index tuples, it
    is not possible to acquire a tuple-level predicate lock in such
    cases, in spite of having the tid.  If we went to the heap to get the
    xmin value, it would no longer be an index-only scan.  Rather than
    prohibit index-only scans under serializable transaction isolation,
    we acquire an SIRead lock on the page containing the tuple, when it
    was not necessary to visit the heap for other reasons.
    
    Backpatch to 9.2.
    
    Kevin Grittner and Tom Lane
    cdf91edb
    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/.