Thread: Artificially increase TransactionID?
Greetings: I am interested in increasing the PostgreSQL TransactionID, as part of testing a (yet another) replication system that I am working on. (http://bruce.codehaus.org/ for the interested). I would like to test what happens when the transactionID crosses 2^31 and when it wraps around at 2^32-1. Other than running "select now()" 2^31 times, is there a practical way to raise the transactionID by large amounts? I need to test against Pg 8.1.X and 8.2.X, and probably 8.3 while Im at it. Many thanks in advance.....Bob.
On Wed, 10 Oct 2007 17:57:57 -0700 "Robert A. Klahn" <robert@kint.org> wrote: > Greetings: > > I am interested in increasing the PostgreSQL TransactionID, as part > of testing a (yet another) replication system that I am working on. > (http://bruce.codehaus.org/ for the interested). I would like to > test what happens when the transactionID crosses 2^31 and when it > wraps around at 2^32-1. Other than running "select now()" 2^31 times, > is there a practical way to raise the transactionID by large amounts? > > I need to test against Pg 8.1.X and 8.2.X, and probably 8.3 while Im > at it. Well without significant changes, my guess is what will happen is postgresql will shut itself down and make you vacuum :) Joshua D. Drake > > Many thanks in advance.....Bob. > > -- === The PostgreSQL Company: Command Prompt, Inc. === Sales/Support: +1.503.667.4564 24x7/Emergency: +1.800.492.2240 PostgreSQL solutions since 1997 http://www.commandprompt.com/ UNIQUE NOT NULL Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate PostgreSQL Replication: http://www.commandprompt.com/products/
"Robert A. Klahn" <robert@kint.org> writes: > I am interested in increasing the PostgreSQL TransactionID, as part > of testing a (yet another) replication system that I am working on. > (http://bruce.codehaus.org/ for the interested). I would like to test > what happens when the transactionID crosses 2^31 and when it wraps > around at 2^32-1. Other than running "select now()" 2^31 times, is > there a practical way to raise the transactionID by large amounts? Shut down postmaster, use pg_resetxlog to set NextXID to whatever you want, restart and test. You might need to artificially create pg_clog and pg_subtrans segments matching the chosen starting point, but other than that there's not a lot of memory of latest XID in the system. Bumping it by more than 2G-less-reasonable-safety-margin is unfair of course ... regards, tom lane
Works perfectly. I did need to artificially create pg_clog segments. Tom: Thanks for the quick response..... Bob. On Oct 10, 2007, at 8:46 PM, Tom Lane wrote: > "Robert A. Klahn" <robert@kint.org> writes: >> I am interested in increasing the PostgreSQL TransactionID, as part >> of testing a (yet another) replication system that I am working on. >> (http://bruce.codehaus.org/ for the interested). I would like to test >> what happens when the transactionID crosses 2^31 and when it wraps >> around at 2^32-1. Other than running "select now()" 2^31 times, is >> there a practical way to raise the transactionID by large amounts? > > Shut down postmaster, use pg_resetxlog to set NextXID to whatever you > want, restart and test. You might need to artificially create pg_clog > and pg_subtrans segments matching the chosen starting point, but other > than that there's not a lot of memory of latest XID in the system. > > Bumping it by more than 2G-less-reasonable-safety-margin is unfair of > course ... > > regards, tom lane