Skip to content
Snippets Groups Projects
  1. Jun 12, 2013
  2. Jun 11, 2013
  3. Mar 11, 2011
  4. Feb 07, 2011
    • Heikki Linnakangas's avatar
      Implement genuine serializable isolation level. · dafaa3ef
      Heikki Linnakangas authored
      Until now, our Serializable mode has in fact been what's called Snapshot
      Isolation, which allows some anomalies that could not occur in any
      serialized ordering of the transactions. This patch fixes that using a
      method called Serializable Snapshot Isolation, based on research papers by
      Michael J. Cahill (see README-SSI for full references). In Serializable
      Snapshot Isolation, transactions run like they do in Snapshot Isolation,
      but a predicate lock manager observes the reads and writes performed and
      aborts transactions if it detects that an anomaly might occur. This method
      produces some false positives, ie. it sometimes aborts transactions even
      though there is no anomaly.
      
      To track reads we implement predicate locking, see storage/lmgr/predicate.c.
      Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
      memory is finite, so when a transaction takes many tuple-level locks on a
      page, the locks are promoted to a single page-level lock, and further to a
      single relation level lock if necessary. To lock key values with no matching
      tuple, a sequential scan always takes a relation-level lock, and an index
      scan acquires a page-level lock that covers the search key, whether or not
      there are any matching keys at the moment.
      
      A predicate lock doesn't conflict with any regular locks or with another
      predicate locks in the normal sense. They're only used by the predicate lock
      manager to detect the danger of anomalies. Only serializable transactions
      participate in predicate locking, so there should be no extra overhead for
      for other transactions.
      
      Predicate locks can't be released at commit, but must be remembered until
      all the transactions that overlapped with it have completed. That means that
      we need to remember an unbounded amount of predicate locks, so we apply a
      lossy but conservative method of tracking locks for committed transactions.
      If we run short of shared memory, we overflow to a new "pg_serial" SLRU
      pool.
      
      We don't currently allow Serializable transactions in Hot Standby mode.
      That would be hard, because even read-only transactions can cause anomalies
      that wouldn't otherwise occur.
      
      Serializable isolation mode now means the new fully serializable level.
      Repeatable Read gives you the old Snapshot Isolation level that we have
      always had.
      
      Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
      Anssi Kääriäinen
      dafaa3ef
  5. Feb 01, 2011
  6. Nov 23, 2010
  7. Sep 20, 2010
  8. Aug 10, 2010
  9. Aug 09, 2010
  10. Apr 03, 2010
    • Peter Eisentraut's avatar
      Remove unnecessary xref endterm attributes and title ids · 6dcce398
      Peter Eisentraut authored
      The endterm attribute is mainly useful when the toolchain does not support
      automatic link target text generation for a particular situation.  In  the
      past, this was required by the man page tools for all reference page links,
      but that is no longer the case, and it now actually gets in the way of
      proper automatic link text generation.  The only remaining use cases are
      currently xrefs to refsects.
      6dcce398
  11. Feb 17, 2010
  12. Dec 17, 2009
    • Robert Haas's avatar
      Improve documentation for pg_largeobject changes. · f5fd651e
      Robert Haas authored
      Rewrite the documentation in more idiomatic English, and in the process make
      it somewhat more succinct.  Move the discussion of specific large object
      privileges out of the "server-side functions" section, where it certainly
      doesn't belong, and into "implementation features".  That might not be
      exactly right either, but it doesn't seem worth creating a new section for
      this amount of information. Fix a few spelling and layout problems, too.
      f5fd651e
  13. Dec 11, 2009
  14. Dec 08, 2008
  15. Mar 22, 2008
  16. Mar 19, 2008
  17. Mar 14, 2007
  18. Mar 03, 2007
  19. Feb 01, 2007
    • Bruce Momjian's avatar
      Wording cleanup for error messages. Also change can't -> cannot. · 8b4ff8b6
      Bruce Momjian authored
      Standard English uses "may", "can", and "might" in different ways:
      
              may - permission, "You may borrow my rake."
      
              can - ability, "I can lift that log."
      
              might - possibility, "It might rain today."
      
      Unfortunately, in conversational English, their use is often mixed, as
      in, "You may use this variable to do X", when in fact, "can" is a better
      choice.  Similarly, "It may crash" is better stated, "It might crash".
      8b4ff8b6
  20. Jan 31, 2007
    • Bruce Momjian's avatar
      Update documentation on may/can/might: · a134ee33
      Bruce Momjian authored
      Standard English uses "may", "can", and "might" in different ways:
      
              may - permission, "You may borrow my rake."
      
              can - ability, "I can lift that log."
      
              might - possibility, "It might rain today."
      
      Unfortunately, in conversational English, their use is often mixed, as
      in, "You may use this variable to do X", when in fact, "can" is a better
      choice.  Similarly, "It may crash" is better stated, "It might crash".
      
      Also update two error messages mentioned in the documenation to match.
      a134ee33
  21. Oct 23, 2006
  22. Sep 16, 2006
  23. Apr 23, 2006
  24. Mar 10, 2006
  25. Mar 02, 2006
  26. Jun 13, 2005
    • Tom Lane's avatar
      Adjust lo_open() so that specifying INV_READ without INV_WRITE creates · a2fb7b8a
      Tom Lane authored
      a descriptor that uses the current transaction snapshot, rather than
      SnapshotNow as it did before (and still does if INV_WRITE is set).
      This means pg_dump will now dump a consistent snapshot of large object
      contents, as it never could do before.  Also, add a lo_create() function
      that is similar to lo_creat() but allows the desired OID of the large
      object to be specified.  This will simplify pg_restore considerably
      (but I'll fix that in a separate commit).
      a2fb7b8a
  27. Jan 10, 2005
  28. Jan 08, 2005
  29. Dec 28, 2004
  30. Nov 29, 2003
    • PostgreSQL Daemon's avatar
      · 969685ad
      PostgreSQL Daemon authored
      $Header: -> $PostgreSQL Changes ...
      969685ad
  31. Nov 12, 2003
  32. Nov 01, 2003
  33. Aug 31, 2003
  34. Jun 21, 2003
  35. Mar 13, 2003
  36. Apr 18, 2002
  37. Jan 20, 2002
  38. Jan 07, 2002
  39. Nov 12, 2001
  40. Oct 09, 2001
Loading