From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Kevin Grittner" <kgrittn(at)mail(dot)com> |
Cc: | "Alejandro Carrillo" <fasterzip(at)yahoo(dot)es>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: not(t_xmax = 0) |
Date: | 2013-01-20 20:30:46 |
Message-ID: | 28040.1358713846@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
"Kevin Grittner" <kgrittn(at)mail(dot)com> writes:
> Alejandro Carrillo wrote:
>> I try to do a function that let know which rows are deleted in a
>> table using the xmax !=0
> That's not something you're going to have much luck with by using
> plpgsql to try to parse heap pages.
No, because xmax being nonzero doesn't prove much: the row might be
updated/deleted, or it might only have been locked by SELECT FOR UPDATE,
or it might be perfectly fine because the updating transaction rolled
back. You could get a limited amount of information by checking the
hint bits in t_infomask, but if the hint bits aren't set you won't know
what the row's state is.
You'd really need to do this in C using the tqual.c functions for the
results to be trustworthy.
I'm a bit surprised that contrib/pageinspect doesn't have a mechanism
for pulling out only committed-good heap tuples...
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Guillaume Lelarge | 2013-01-20 21:42:54 | Re: pg_Restore |
Previous Message | Tom Lane | 2013-01-20 20:21:10 | Re: proposal: fix corner use case of variadic fuctions usage |