Skip to content
Snippets Groups Projects
user avatar
Bruce Momjian authored
* Merge xmin/xmax/cmin/cmax back into three header fields

  Before subtransactions, there used to be only three fields needed to
  store these four values. This was possible because only the current
  transaction looks at the cmin/cmax values. If the current transaction
  created and expired the row the fields stored where xmin (same as
  xmax), cmin, cmax, and if the transaction was expiring a row from a
  another transaction, the fields stored were xmin (cmin was not
  needed), xmax, and cmax. Such a system worked because a transaction
  could only see committed rows from another transaction. However,
  subtransactions can see rows from outer transactions, and once the
  subtransaction completes, the outer transaction continues, requiring
  the storage of all four fields. With subtransactions, an outer
  transaction can create a row, a subtransaction expire it, and when the
  subtransaction completes, the outer transaction still has to have
  proper visibility of the row, for example, for cursors.

  One possible solution is to create a phantom cid which represents a
  cmin/cmax pair and is stored in local memory.
fad7e8ed
History
The FAQ* files in this directory are the master versions, and the
../../FAQ* text files are created using lynx:

	lynx -force_html -dont_wrap_pre -dump -hiddenlinks=ignore -nolist FAQ*

The TODO.html file in this directory is not the master, but ../../TODO
is.  The conversion is done using txt2html:

	txt2html -m -s 100 -p 100 --xhtml --titlefirst \
		--body_deco ' bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF"' \
		--caps_tag '' \
		/pgtop/doc/TODO |
	sed 's;\[\([^]]*\)\];[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?\1">\1</a>];g' > /pgtop/doc/src/FAQ/TODO.html