Re: [DBmirror Issue] recordchange() dies in packageData unless - Mailing list pgsql-admin

From Steven Singer
Subject Re: [DBmirror Issue] recordchange() dies in packageData unless
Date
Msg-id Pine.LNX.4.33.0209232040340.14610-100000@pcNavYkfAdm1.ykf.navtechinc.com
Whole thread Raw
In response to [DBmirror Issue] recordchange() dies in packageData unless there is aPRIMARY KEY on DELETE and UPDATEs.  ("Rajesh Kumar Mallah." <mallah@trade-india.com>)
Responses Re: [DBmirror Issue] recordchange() dies in packageData unless  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: [DBmirror Issue] recordchange() dies in packageData unless  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-admin
On Mon, 23 Sep 2002, Rajesh Kumar Mallah. wrote:

> Hi
>
> Is anyone using dbmirror in production?

We've been using it in production for sometime now and haven't been having
any problems with it.

>
> I Intend to replicate a set of tables between local and remote servers.
> and plan to use dbmirror.
>

The speed of replicating edits over a WAN isn't that great.
If you perform a lot of edits in a short period of time there could be a
backlog.

> I observe that unless a table has a primary key the trigger recordchange()
> which is supposed to be attached to a replicated table does not works properly
> and causes postmaster to crash.
>

dbmirror requires that all tables that you replicate have primary
keys(This should be said more explictly in the README)

However it still should not crash(In defence it will only crash the
postmaster when you compile dbmirror in debug mode).

The attatched patch to pending.c should prevent it from crashing the
postmaster.  Let me know if it fixes the problem and I'll submit it to
pgpatches.


*** pending.c    Mon Sep 23 20:24:04 2002
--- /tmp/pending.c    Mon Sep 23 20:23:43 2002
***************
*** 226,232 ****
      /* pplan = SPI_saveplan(pplan); */
      cpKeyData = packageData(tTupleData, tTupleDesc, tpTrigData,
PRIMARY);
  #if defined DEBUG_OUTPUT
!     elog(NOTICE, cpKeyData);
  #endif
      saPlanData[0] = PointerGetDatum(cpKeyData);

--- 226,235 ----
      /* pplan = SPI_saveplan(pplan); */
      cpKeyData = packageData(tTupleData, tTupleDesc, tpTrigData,
PRIMARY);
  #if defined DEBUG_OUTPUT
!     if(cpKeyData != NULL )
!     {
!         elog(NOTICE, cpKeyData);
!     }
  #endif
      saPlanData[0] = PointerGetDatum(cpKeyData);





--
Steven Singer                                       ssinger@navtechinc.com
Aircraft Performance Systems                Phone:  519-747-1170 ext 282
Navtech Systems Support Inc.                AFTN:   CYYZXNSX SITA: YYZNSCR
Waterloo, Ontario                           ARINC:  YKFNSCR


pgsql-admin by date:

Previous
From: Lucas Madar
Date:
Subject: Problem with bulk inserts
Next
From: "Waruna Geekiyanage"
Date:
Subject: Sub SELECTS