From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | jim_yates <pg(at)wg5jim(dot)net>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: could not access status of transaction pg_multixact issue |
Date: | 2014-10-09 15:01:32 |
Message-ID: | 5436A34C.8090306@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On 10/09/2014 07:07 AM, jim_yates wrote:
> Alvaro Herrera-9 wrote
>> jim_yates wrote:
>>
>>>> A better way not involving mxid_age() would be to use pg_controldata to
>>>> extract the current value of the mxid counter, then subtract the
>>> current
>>>> relminmxid from that value.
>>>
>>>
>>> It's not clear which lines from pg_controldata to use for updating
>>> pg_database.datminmxid.
>>
>> The one labelled NextMultiXactId.
>>
>>> I also assume I would do the pg_database update on a idle database.
>>
>> It doesn't matter, actually. pg_database is a shared catalog, so an
>> update would affect all the databases.
>>
>> --
>> Álvaro Herrera http://www.2ndQuadrant.com/
>> PostgreSQL Development, 24x7 Support, Training & Services
>
> I tried doing the update to pg_database on my Dev server and I can't get it
> to work. How do I calculate the new datminmxid value?
>
> NextMultiXactId: 30349 relminmxid from pg_class for the table: 8376
>
> If I subtract the relminmxid from the nextmulixact I get 21793 which won't
> work.
>
> production-copy=# update pg_database set datminmxid=21973 where
> datname='production-copy';
> ERROR: column "datminmxid" is of type xid but expression is of type integer
>
>
Casting issue, try:
update pg_database set datminmxid='21973' where
datname='production-copy';
>
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2014-10-09 15:12:30 | Re: could not access status of transaction pg_multixact issue |
Previous Message | jim_yates | 2014-10-09 14:07:00 | Re: could not access status of transaction pg_multixact issue |