On 04/04/2018 10:20 AM, molofeev wrote:
> Any ideas?
>
>
> On 04/03/2018 04:36 PM, molofeev wrote:
>> The last query that working is - select * from TABLE_NAME limit 1
>> offset 160;
>>
>> the next query
>>
>> select * from TABLE_NAME limit 1 offset 162;
>>
>> return - ERROR: MultiXactId 1048586 has not been created yet --
>> apparent wraparound
>> SQL state: XX000
>>
Well, as Alvaro mentioned, we need to see the page that contains the
record with that multixactid. You now know which table it is, and you
know it's tuple #162. We still don't know which page is it exactly, but
you can determine that by using CTID:
select * from TABLE_NAME where ctid between '(13,1)'::tid
and '(14,0)'::tid;
You'll need to start on page 0 and increase it until you get the error
again. This will scan the whole table, though.
Then you know which page has the broken data, and you can inspect it
using pageinspect - extract it using raw_page, inspect it using various
functions in that extension. I don't know how sensitive the data in that
table is, but perhaps you may share the 8kB page.
FWIW this seems to be some sort of data corruption, where the XID got
overwritten by a bogus value in some way. The bigger question is how
many other such cases are there.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services