has the following statement about ctid:
"The physical location of the row version within its table. Note that
although the ctid can be used to locate the row version very quickly, a
row's ctid will change each time it is updated or moved by VACUUM FULL.
Therefore ctid is useless as a long-term row identifier. The OID, or
even better a user-defined serial number, should be used to identify
I have been testing this statement and find that it seems not quite
true. Although ctid changes on update, VACUUM FULL does not change it.
What it does do is make lower areas available again so an update after a
VACUUM FULL can reuse lower numbers rather than higher ones before.
Now it certainly seems to me that it should behave as described given
the definition of VACUUM FULL so I am a little confused by my tests.
My test table only has two entries in it. Is that the issue? In fact,
I find the same behaviour if I do a simple VACUUM on the table.
D'Arcy J.M. Cain <darcy(at)druid(dot)net> | Democracy is three wolves
http://www.druid.net/darcy/ | and a sheep voting on
+1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner.
pgsql-hackers by date
|Next:||From: Martijn van Oosterhout||Date: 2006-12-26 17:12:45|
|Subject: Re: Possible documentation error|
|Previous:||From: Tom Lane||Date: 2006-12-26 16:25:41|
|Subject: Recent SIGSEGV failures in buildfarm HEAD|