Re: could not access status of transaction pg_multixact issue - Mailing list pgsql-sql

From Adrian Klaver
Subject Re: could not access status of transaction pg_multixact issue
Date
Msg-id 5436A34C.8090306@aklaver.com
Whole thread Raw
In response to Re: could not access status of transaction pg_multixact issue  (jim_yates <pg@wg5jim.net>)
Responses Re: could not access status of transaction pg_multixact issue
List 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.klaver@aklaver.com



pgsql-sql by date:

Previous
From: jim_yates
Date:
Subject: Re: could not access status of transaction pg_multixact issue
Next
From: Alvaro Herrera
Date:
Subject: Re: could not access status of transaction pg_multixact issue