Amit Kapila wrote:
> How will you decide just based on oldest xmin whether the tuple is visible or 
> not?  How will you take decisions about tuples which have xmax set?

In our use case, GetOldestXmin is used by an original maintainer process[es] to 
an original control table[s]. The table can be concurrently read or inserted in 
any transactions. However, rows in the table can be deleted (set xmax) only by 
the maintainer process. Then, one control table can be processed by only one 
maintainer process at once.

So I do MVCC as following.

- The maintainer's transaction: 
  - If xmax is set, simply ignore the tuple.
  - For other tuples, read tuples if GetOldestXmin() > xmin.
- Other transactions: Do ordinal MVCC using his XID.

Note: A control table relates to a normal table relation, so get oldest xmin as 
to the normal table.
Eiji Seki

Sent via pgsql-hackers mailing list (
To make changes to your subscription:

Reply via email to