Продолжаю
хотеть странного:
теперь хочу увидеть последние закоммиченные (полностью) данные.
смотрю изнутри транзакции, "закоммиченные" коей данные хочу отбросить
т.е.
SELECT max(...) FROM tbl WHERE tbl.xmin<>F2(txid_current())
т.е. нужна F2(bigint)
подходы:
1. могу смотреть на себя через dblink. накладно (поднимать соединение в каждой такой сессии)
1.1. на себя через fdw -- ещё накладнее (как правило -- по соединению на каждый вызов --т.е. вообще куча соединений)
2. выяснять шифт между txid_current() и txid через pg_locks несколько накладно (см. выше), да и надо обеспечить непустоту pg_locks по своему pid на момент опроса
2.1. то же делается вставкой в любую, хоть времянку, с прямым опросом только что вставленного xmin (тоже дорого, хотя и дешевле хитровывернутого п.2.)
-- но наличие нормальной ф-ии возвертающей либо xid[==xmin] либо (txid_current()-xid::text::bigint) -- было бы премного удобней. Оно где-то есть ? пусть и неподоканное ? Или его таки нет ? (pg_proc навскидку ничего похожего не содержит)
разом нас, велосипедистов, багато:
http://www.sql.ru/forum/1120740/txid-current-xmin?mid=16698801&hl=xmin#16698801и много ещё
т.п. (включая лондайст и pgq)