On Thu, Feb 7, 2013 at 2:25 PM, Pavan Deolasee <pavan.deolasee@gmail.com> wrote:
>
> Will look more into it, but thought this might be useful for others to
> spot the problem.
>
And here is some more forensic info about one of the pages having
duplicate tuples.
jjanes=# select *, xmin, xmax, ctid from foo where index IN (select
index from foo group by index having count(*) > 1 ORDER by index)
ORDER by index LIMIT 3;index | count | xmin | xmax | ctid
-------+-------+------------+------+----------- 219 | 353 | 2100345903 | 0 | (150,98) 219 | 354 | 2100346051 |
0 | (150,101) 219 | 464 | 2101601086 | 0 | (150,126)
(3 rows)
jjanes=# select * from page_header(get_raw_page('foo',150)); lsn | tli | flags | lower | upper | special |
pagesize|
version | prune_xid
-------------+-----+-------+-------+-------+---------+----------+---------+-----------4C/52081968 | 1 | 5 | 1016
| 6304 | 8192 | 8192 |4 | 0
(1 row)
jjanes=# select * from heap_page_items(get_raw_page('foo',150)) WHERE
lp IN (98, 101, 126);lp | lp_off | lp_flags | lp_len | t_xmin | t_xmax | t_field3 |
t_ctid | t_infomask2 | t_infomask | t_hoff | t_bits | t_oid
-----+--------+----------+--------+------------+--------+----------+-----------+-------------+------------+--------+--------+-------
98| 7968 | 1 | 32 | 2100345903 | 0 | 0 |
(150,101) | 32770 | 10496 | 24 | |101 | 7904 | 1 | 32 | 2100346051 | 0 |
0|
(150,101) | 32770 | 10496 | 24 | |126 | 7040 | 1 | 32 | 2101601086 | 0 |
0|
(150,126) | 32770 | 10496 | 24 | |
(3 rows)
So every duplicate tuple has the same flags set:
HEAP_XMAX_INVALID
HEAP_XMIN_COMMITED
HEAP_UPDATED
HEAP_ONLY_TUPLE
The first two duplicates are chained by the ctid chain, but the last
one looks independent. More later.
Thanks,
Pavan
--
Pavan Deolasee
http://www.linkedin.com/in/pavandeolasee