On Wed, Feb 15, 2017 at 12:03 PM, Seki, Eiji <seki.e...@jp.fujitsu.com> wrote:
> 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.
>

Oh, this is a very specific case for which such an API can be useful.
Earlier, I have seen that people proposing some kind of hooks which
can be used for their specific purpose but exposing an API or changing
the signature of an API sound bit awkward.  Consider tomorrow someone
decides to change this API for some reason, it might become difficult
to decide because we can't find it's usage.

-- 
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to