postgres=# create table t_test (id int, content text);
insert into t_test values (1, 'test');
CREATE TABLE
INSERT 0 1
postgres=#
postgres=#
postgres=# SELECT t_xmin, t_xmax, t_ctid, raw_flags, combined_flags FROM heap_page_items(get_raw_page('t_test', 0)),
LATERAL heap_tuple_infomask_flags(t_infomask, t_infomask2)
WHERE t_infomask IS NOT NULL OR t_infomask2 IS NOT NULL;
 t_xmin | t_xmax | t_ctid |              raw_flags               | combined_flags
--------+--------+--------+--------------------------------------+----------------
    761 |      0 | (0,1)  | {HEAP_HASVARWIDTH,HEAP_XMAX_INVALID} | {}
(1 row)

postgres=# begin;
savepoint sp1;
update t_test set content='test3' where id=1;
savepoint sp2;
update t_test set content='test4' where id=1;
commit;
BEGIN
SAVEPOINT
UPDATE 1
SAVEPOINT
UPDATE 1
COMMIT
postgres=# SELECT t_xmin, t_xmax, t_ctid, raw_flags, combined_flags FROM heap_page_items(get_raw_page('t_test', 0)),
LATERAL heap_tuple_infomask_flags(t_infomask, t_infomask2)
WHERE t_infomask IS NOT NULL OR t_infomask2 IS NOT NULL;
 t_xmin | t_xmax | t_ctid |                                   raw_flags                                    | combined_flags
--------+--------+--------+--------------------------------------------------------------------------------+----------------
    761 |    763 | (0,2)  | {HEAP_HASVARWIDTH,HEAP_XMIN_COMMITTED,HEAP_HOT_UPDATED}                        | {}
    763 |    764 | (0,3)  | {HEAP_HASVARWIDTH,HEAP_COMBOCID,HEAP_UPDATED,HEAP_HOT_UPDATED,HEAP_ONLY_TUPLE} | {}
    764 |      0 | (0,3)  | {HEAP_HASVARWIDTH,HEAP_XMAX_INVALID,HEAP_UPDATED,HEAP_ONLY_TUPLE}              | {}
(3 rows)