Обсуждение: BUG #1715: dbmirror replaces nextval, setval functions

Поиск
Список
Период
Сортировка

BUG #1715: dbmirror replaces nextval, setval functions

От
"James Doherty"
Дата:
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;

Re: BUG #1715: dbmirror replaces nextval, setval functions

От
Achilleus Mantzios
Дата:
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

Re: BUG #1715: dbmirror replaces nextval, setval functions

От
"James Doherty"
Дата:
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=