Thread: BUG #1715: dbmirror replaces nextval, setval functions
The following bug has been logged online: Bug reference: 1715 Logged by: James Doherty Email address: jdoherty@yak.ca PostgreSQL version: 8.0.3 Operating system: Solaris 8 Intel Description: dbmirror replaces nextval, setval functions Details: The dbmirror contrib program replaces some key functions when setting up the Mirroring table (MirrorSetup.sql). The nextval and setval functions are renamed as nextval_pg and setval_pg and replaced with new functions. This breaks any fields made with the SERIAL datatype, which have to be ALTER'ed to use the nextval_pg and setval_pg functions to work properly. Here's the offending code in MirrorSetup.sql: UPDATE pg_proc SET proname='nextval_pg' WHERE proname='nextval'; CREATE FUNCTION pg_catalog.nextval(text) RETURNS int8 AS '$libdir/pending.so', 'nextval' LANGUAGE 'C' STRICT; UPDATE pg_proc set proname='setval_pg' WHERE proname='setval'; CREATE FUNCTION pg_catalog.setval("unknown",integer,boolean) RETURNS int8 AS '$libdir/pending.so', 'setval' LANGUAGE 'C' STRICT; CREATE FUNCTION pg_catalog.setval("unknown",integer) RETURNS int8 AS '$libdir/pending.so', 'setval' LANGUAGE 'C' STRICT;
O James Doherty Ýãñáøå óôéò Jun 10, 2005 : > > The following bug has been logged online: > > Bug reference: 1715 > Logged by: James Doherty > Email address: jdoherty@yak.ca > PostgreSQL version: 8.0.3 > Operating system: Solaris 8 Intel > Description: dbmirror replaces nextval, setval functions > Details: > > The dbmirror contrib program replaces some key functions when setting up the > Mirroring table (MirrorSetup.sql). The nextval and setval functions are > renamed as nextval_pg and setval_pg and replaced with new functions. > > This breaks any fields made with the SERIAL datatype, which have to be > ALTER'ed to use the nextval_pg and setval_pg functions to work properly. > > > Here's the offending code in MirrorSetup.sql: > UPDATE pg_proc SET proname='nextval_pg' WHERE proname='nextval'; > > CREATE FUNCTION pg_catalog.nextval(text) RETURNS int8 AS > '$libdir/pending.so', 'nextval' LANGUAGE 'C' STRICT; > > > UPDATE pg_proc set proname='setval_pg' WHERE proname='setval'; > > CREATE FUNCTION pg_catalog.setval("unknown",integer,boolean) RETURNS int8 > AS > '$libdir/pending.so', 'setval' LANGUAGE 'C' STRICT; > CREATE FUNCTION pg_catalog.setval("unknown",integer) RETURNS int8 AS > '$libdir/pending.so', 'setval' LANGUAGE 'C' STRICT; You are right, since dbmirror mirrors tables based on whether the recordchange trigger is present, whereas it seems to mirror sequences unconditionally. You could rename dbmirror's setval,nextval to dbmirror_setval,dbmirror_nextval, and leave postgresql's original functions as is. Just a note tho: Dbmirror is a great tool, but someone needs to hack a great deal of code to meet his/her special requirements. > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org > -- -Achilleus
SSB3b3VsZG4ndCBzYXkgdGhhdCByZXF1aXJpbmcgdGhhdCBkYm1pcnJvciBu b3QgYnJlYWsgYWxsIHNlcmlhbCBmaWVsZHMgaW4gdGhlIGVudGlyZSBkYXRh YmFzZSBpcyBhIHNwZWNpYWwgcmVxdWlyZW1lbnQhDQogDQpUaGUgcGVuZGlu Zy5zbyBsaWJyYXJ5IHRoYXQgaXMgY29tcGlsZWQgcHJpb3IgdG8gcnVubmlu ZyBkYm1pcnJvciB3b3VsZCBhbHNvIGhhdmUgdG8gYmUgdXBkYXRlZCwgc2lu Y2UgaXQgcmVmZXJzIHRvIG5leHR2YWwgYW5kIHNldHZhbCBhcyB3ZWxsLg0K IA0KQXMgZmFyIGFzIHRoZSBhY3R1YWwgbWlycm9yaW5nIG9mIHRoZSBkYXRh YmFzZSwgaXQncyB3b3JraW5nIGdyZWF0LiBJdCdzIHRoZSB3YXkgdGhhdCBp dCBjaGFuZ2VzIHRoZSBkYXRhYmFzZSB3aGVuIGl0IGlzIGludGFsbGVkIHRo YXQgSSB0aGluayBpdCBpcyBhIGJ1Zy4gQW5kIEkgY291bGQgYXR0ZW1wdCB0 byBmaXggaXQgd2l0aCBteSBtZWFnZXIga25vd2xlZGdlIG9mIHBvc3RncmVz IGFuZCBjLCBidXQgSSBkb24ndCB0aGluayBJJ2QgYmUgY29uZmlkZW50IHRv IHN1Ym1pdCBhbiBvZmZpY2lhbCBmaXggZm9yIGl0LiANCiANCkphbWVzDQoN CgktLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLSANCglGcm9tOiBBY2hpbGxl dXMgTWFudHppb3MgW21haWx0bzphY2hpbGxAbWF0cml4LmdhdGV3YXluZXQu Y29tXSANCglTZW50OiBNb24gNi8xMy8yMDA1IDI6NTkgQU0gDQoJVG86IEph bWVzIERvaGVydHkgDQoJQ2M6IHBnc3FsLWJ1Z3NAcG9zdGdyZXNxbC5vcmcg DQoJU3ViamVjdDogUmU6IFtCVUdTXSBCVUcgIzE3MTU6IGRibWlycm9yIHJl cGxhY2VzIG5leHR2YWwsIHNldHZhbCBmdW5jdGlvbnMNCgkNCgkNCg0KCU8g SmFtZXMgRG9oZXJ0eSDOrc6zz4HOsc+IzrUgz4PPhM65z4IgSnVuIDEwLCAy MDA1IDoNCgkNCgk+DQoJPiBUaGUgZm9sbG93aW5nIGJ1ZyBoYXMgYmVlbiBs b2dnZWQgb25saW5lOg0KCT4NCgk+IEJ1ZyByZWZlcmVuY2U6ICAgICAgMTcx NQ0KCT4gTG9nZ2VkIGJ5OiAgICAgICAgICBKYW1lcyBEb2hlcnR5DQoJPiBF bWFpbCBhZGRyZXNzOiAgICAgIGpkb2hlcnR5QHlhay5jYQ0KCT4gUG9zdGdy ZVNRTCB2ZXJzaW9uOiA4LjAuMw0KCT4gT3BlcmF0aW5nIHN5c3RlbTogICBT b2xhcmlzIDggSW50ZWwNCgk+IERlc2NyaXB0aW9uOiAgICAgICAgZGJtaXJy b3IgcmVwbGFjZXMgbmV4dHZhbCwgc2V0dmFsIGZ1bmN0aW9ucw0KCT4gRGV0 YWlsczoNCgk+DQoJPiBUaGUgZGJtaXJyb3IgY29udHJpYiBwcm9ncmFtIHJl cGxhY2VzIHNvbWUga2V5IGZ1bmN0aW9ucyB3aGVuIHNldHRpbmcgdXAgdGhl DQoJPiBNaXJyb3JpbmcgdGFibGUgKE1pcnJvclNldHVwLnNxbCkuIFRoZSBu ZXh0dmFsIGFuZCBzZXR2YWwgZnVuY3Rpb25zIGFyZQ0KCT4gcmVuYW1lZCBh cyBuZXh0dmFsX3BnIGFuZCBzZXR2YWxfcGcgYW5kIHJlcGxhY2VkIHdpdGgg bmV3IGZ1bmN0aW9ucy4NCgk+DQoJPiBUaGlzIGJyZWFrcyBhbnkgZmllbGRz IG1hZGUgd2l0aCB0aGUgU0VSSUFMIGRhdGF0eXBlLCB3aGljaCBoYXZlIHRv IGJlDQoJPiBBTFRFUidlZCB0byB1c2UgdGhlIG5leHR2YWxfcGcgYW5kIHNl dHZhbF9wZyBmdW5jdGlvbnMgdG8gd29yayBwcm9wZXJseS4NCgk+DQoJPg0K CT4gSGVyZSdzIHRoZSBvZmZlbmRpbmcgY29kZSBpbiBNaXJyb3JTZXR1cC5z cWw6DQoJPiBVUERBVEUgcGdfcHJvYyBTRVQgcHJvbmFtZT0nbmV4dHZhbF9w ZycgV0hFUkUgcHJvbmFtZT0nbmV4dHZhbCc7DQoJPg0KCT4gQ1JFQVRFIEZV TkNUSU9OIHBnX2NhdGFsb2cubmV4dHZhbCh0ZXh0KSBSRVRVUk5TIGludDgg IEFTDQoJPiAnJGxpYmRpci9wZW5kaW5nLnNvJywgJ25leHR2YWwnIExBTkdV QUdFICdDJyBTVFJJQ1Q7DQoJPg0KCT4NCgk+IFVQREFURSBwZ19wcm9jIHNl dCBwcm9uYW1lPSdzZXR2YWxfcGcnIFdIRVJFIHByb25hbWU9J3NldHZhbCc7 DQoJPg0KCT4gQ1JFQVRFIEZVTkNUSU9OIHBnX2NhdGFsb2cuc2V0dmFsKCJ1 bmtub3duIixpbnRlZ2VyLGJvb2xlYW4pIFJFVFVSTlMgaW50OA0KCT4gQVMN Cgk+ICckbGliZGlyL3BlbmRpbmcuc28nLCAnc2V0dmFsJyBMQU5HVUFHRSAn QycgU1RSSUNUOw0KCT4gQ1JFQVRFIEZVTkNUSU9OIHBnX2NhdGFsb2cuc2V0 dmFsKCJ1bmtub3duIixpbnRlZ2VyKSBSRVRVUk5TIGludDggIEFTDQoJPiAn JGxpYmRpci9wZW5kaW5nLnNvJywgJ3NldHZhbCcgTEFOR1VBR0UgJ0MnIFNU UklDVDsNCgkNCglZb3UgYXJlIHJpZ2h0LCBzaW5jZSBkYm1pcnJvciBtaXJy b3JzIHRhYmxlcyBiYXNlZCBvbiB3aGV0aGVyDQoJdGhlIHJlY29yZGNoYW5n ZSB0cmlnZ2VyIGlzIHByZXNlbnQsIHdoZXJlYXMgaXQgc2VlbXMNCgl0byBt aXJyb3Igc2VxdWVuY2VzIHVuY29uZGl0aW9uYWxseS4NCgkNCglZb3UgY291 bGQgcmVuYW1lIGRibWlycm9yJ3Mgc2V0dmFsLG5leHR2YWwgdG8NCglkYm1p cnJvcl9zZXR2YWwsZGJtaXJyb3JfbmV4dHZhbCwgYW5kIGxlYXZlDQoJcG9z dGdyZXNxbCdzIG9yaWdpbmFsIGZ1bmN0aW9ucyBhcyBpcy4NCgkNCglKdXN0 IGEgbm90ZSB0aG86DQoJRGJtaXJyb3IgaXMgYSBncmVhdCB0b29sLCBidXQg c29tZW9uZSBuZWVkcyB0byBoYWNrIGEgZ3JlYXQgZGVhbA0KCW9mIGNvZGUg dG8gbWVldCBoaXMvaGVyIHNwZWNpYWwgcmVxdWlyZW1lbnRzLg0KCQ0KCS0t DQoJLUFjaGlsbGV1cw0KCQ0KCQ0KDQo=