Received: from spider.pilosoft.com (p55-222.acedsl.com [160.79.55.222]) by postgresql.org (8.11.3/8.11.1) with ESMTP id f5AJogE45441 for ; Sun, 10 Jun 2001 15:50:42 -0400 (EDT) (envelope-from alex@pilosoft.com) Received: from localhost (alexmail@localhost) by spider.pilosoft.com (8.9.3/8.9.3) with ESMTP id PAA04439; Sun, 10 Jun 2001 15:59:45 -0400 (EDT) Date: Sun, 10 Jun 2001 15:59:45 -0400 (EDT) From: Alex Pilosov To: e.mergl@bawue.de cc: pgsql-interfaces@postgresql.org Subject: [PATCH] notify support for DBD::Pg Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1555397714-992202872=:23782" Content-ID: X-Archive-Number: 200106/41 X-Sequence-Number: 1703 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1555397714-992202872=:23782 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Edmund & all, Attached is a patch to add support for asynchronous notifications to DBD::Pg interface. Added following functions (self-documented in Pg.pm): $ret = $dbh->func('notifies'); Returns either undef or a reference to two-element array [ $table, $backend_pid ] of asynchronous notifications received. $fd = $dbh->func('getfd'); Returns fd of the actual connection to server. Can be used with select() and func('notifies'). Also modified test.pl to test all of this functionality in the following sequence (listen, select, notify, select). Edmund, please consider adding to next release. Thanks -alex --0-1555397714-992202872=:23782 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="dbdpg.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: dbdpg_notifies.patch Content-Disposition: attachment; filename="dbdpg.patch" ZGlmZiAtciAtLXVuaWZpZWQgREJELVBnLTEuMDAvUGcucG0gREJELVBnLTEu MDAuYWxleC9QZy5wbQ0KLS0tIERCRC1QZy0xLjAwL1BnLnBtCVN1biBNYXkg MjcgMTA6MTA6MTMgMjAwMQ0KKysrIERCRC1QZy0xLjAwLmFsZXgvUGcucG0J U3VuIEp1biAxMCAxNToxNDozMiAyMDAxDQpAQCAtNjI5LDYgKzYyOSwxNSBA QA0KIGR1bXAgYSBjb21wbGV0ZSB0YWJsZS4gU2VlIHRlc3QucGwgZm9yIGFu IGV4YW1wbGUgb24gaG93IHRvIHVzZSANCiB0aGlzIGZ1bmN0aW9uLiANCiAN CisgICRyZXQgPSAkZGJoLT5mdW5jKCdub3RpZmllcycpOw0KKw0KK1JldHVy bnMgZWl0aGVyIHVuZGVmIG9yIGEgcmVmZXJlbmNlIHRvIHR3by1lbGVtZW50 IGFycmF5IA0KK1sgJHRhYmxlLCAkYmFja2VuZF9waWQgXSBvZiBhc3luY2hy b25vdXMgbm90aWZpY2F0aW9ucyByZWNlaXZlZC4NCisNCisgICRmZCA9ICRk YmgtPmZ1bmMoJ2dldGZkJyk7DQorDQorUmV0dXJucyBmZCBvZiB0aGUgYWN0 dWFsIGNvbm5lY3Rpb24gdG8gc2VydmVyLiBDYW4gYmUgdXNlZCB3aXRoIA0K K3NlbGVjdCgpIGFuZCBmdW5jKCdub3RpZmllcycpLg0KIA0KID1iYWNrDQog DQpkaWZmIC1yIC0tdW5pZmllZCBEQkQtUGctMS4wMC9QZy54cyBEQkQtUGct MS4wMC5hbGV4L1BnLnhzDQotLS0gREJELVBnLTEuMDAvUGcueHMJTW9uIEp1 bCAxMCAxMzo0Nzo1MSAyMDAwDQorKysgREJELVBnLTEuMDAuYWxleC9QZy54 cwlTdW4gSnVuIDEwIDE1OjEyOjM1IDIwMDENCkBAIC04Myw2ICs4MywyNCBA QA0KICAgICB9DQogDQogdm9pZA0KK2dldGZkKGRiaCkNCisgICAgU1YgKglk YmgNCisgICAgQ09ERToNCisgICAgaW50IHJldDsNCisgICAgRF9pbXBfZGJo KGRiaCk7DQorDQorICAgIHJldCA9IGRiZF9kYl9nZXRmZChkYmgsIGltcF9k YmgpOw0KKyAgICBTVCgwKSA9IHN2XzJtb3J0YWwoIG5ld1NWaXYoIHJldCAp ICk7DQorDQordm9pZA0KK25vdGlmaWVzKGRiaCkNCisgICAgU1YgKglkYmgN CisgICAgQ09ERToNCisgICAgRF9pbXBfZGJoKGRiaCk7DQorDQorICAgIFNU KDApID0gZGJkX2RiX25vdGlmaWVzKGRiaCwgaW1wX2RiaCk7DQorDQordm9p ZA0KIGNvbW1pdChkYmgpDQogICAgIFNWICoJZGJoDQogICAgIENPREU6DQpk aWZmIC1yIC0tdW5pZmllZCBEQkQtUGctMS4wMC9kYmRpbXAuYyBEQkQtUGct MS4wMC5hbGV4L2RiZGltcC5jDQotLS0gREJELVBnLTEuMDAvZGJkaW1wLmMJ U3VuIE1heSAyNyAxMDoxMDoxMyAyMDAxDQorKysgREJELVBnLTEuMDAuYWxl eC9kYmRpbXAuYwlTdW4gSnVuIDEwIDE1OjEyOjM1IDIwMDENCkBAIC0xOTcs NiArMTk3LDQ3IEBADQogfQ0KIA0KIA0KK2ludCANCitkYmRfZGJfZ2V0ZmQg KGRiaCwgaW1wX2RiaCkNCisgICAgU1YgKmRiaDsNCisgICAgaW1wX2RiaF90 ICppbXBfZGJoOw0KK3sNCisgICAgY2hhciBpZDsNCisgICAgU1YqIHJldHN2 Ow0KKw0KKyAgICBpZiAoZGJpcy0+ZGVidWcgPj0gMSkgeyBmcHJpbnRmKERC SUxPR0ZQLCAiZGJkX2RiX2dldGZkXG4iKTsgfQ0KKw0KKyAgICByZXR1cm4g UFFzb2NrZXQoaW1wX2RiaC0+Y29ubik7DQorfQ0KKw0KK1NWICogDQorZGJk X2RiX25vdGlmaWVzIChkYmgsIGltcF9kYmgpDQorICAgIFNWICpkYmg7DQor ICAgIGltcF9kYmhfdCAqaW1wX2RiaDsNCit7DQorICAgIGNoYXIgaWQ7DQor ICAgIFBHbm90aWZ5KiBub3RpZnk7DQorICAgIEFWKiByZXQ7DQorICAgIFNW KiByZXRzdjsNCisNCisgICAgaWYgKGRiaXMtPmRlYnVnID49IDEpIHsgZnBy aW50ZihEQklMT0dGUCwgImRiZF9kYl9ub3RpZmllc1xuIik7IH0NCisNCisg ICAgUFFjb25zdW1lSW5wdXQoaW1wX2RiaC0+Y29ubik7DQorDQorICAgIG5v dGlmeSA9IFBRbm90aWZpZXMoaW1wX2RiaC0+Y29ubik7DQorDQorICAgIGlm ICghbm90aWZ5KSByZXR1cm4gJnN2X3VuZGVmOyANCisNCisgICAgcmV0PW5l d0FWKCk7DQorDQorICAgIGF2X3B1c2gocmV0LCBuZXdTVnB2KG5vdGlmeS0+ cmVsbmFtZSwwKSApOw0KKyAgICBhdl9wdXNoKHJldCwgbmV3U1Zpdihub3Rp ZnktPmJlX3BpZCkgKTsNCisgDQorICAgIHJldHN2ID0gbmV3UlYoc3ZfMm1v cnRhbCgoU1YqKXJldCkpOw0KKw0KKyAgICByZXR1cm4gcmV0c3Y7DQorfQ0K Kw0KIGludA0KIGRiZF9kYl9waW5nIChkYmgpDQogICAgIFNWICpkYmg7DQpk aWZmIC1yIC0tdW5pZmllZCBEQkQtUGctMS4wMC9kYmRpbXAuaCBEQkQtUGct MS4wMC5hbGV4L2RiZGltcC5oDQotLS0gREJELVBnLTEuMDAvZGJkaW1wLmgJ TW9uIEFwciAgOSAxMzo0NDoxOCAyMDAxDQorKysgREJELVBnLTEuMDAuYWxl eC9kYmRpbXAuaAlTdW4gSnVuIDEwIDE1OjEyOjM1IDIwMDENCkBAIC03MCw0 ICs3MCw2IEBADQogfTsNCiANCiANCitTViAqIGRiZF9kYl9ub3RpZmllcyAo U1YgKmRiaCwgaW1wX2RiaF90ICppbXBfZGJoKTsNCisNCiAvKiBlbmQgb2Yg ZGJkaW1wLmggKi8NCmRpZmYgLXIgLS11bmlmaWVkIERCRC1QZy0xLjAwL3Rl c3QucGwgREJELVBnLTEuMDAuYWxleC90ZXN0LnBsDQotLS0gREJELVBnLTEu MDAvdGVzdC5wbAlTdW4gTWF5IDI3IDEwOjEwOjEzIDIwMDENCisrKyBEQkQt UGctMS4wMC5hbGV4L3Rlc3QucGwJU3VuIEp1biAxMCAxNTozODowOSAyMDAx DQpAQCAtNDAsNyArNDAsNyBAQA0KIG15ICRkc25fbWFpbiA9ICJkYmk6UGc6 ZGJuYW1lPSRkYm1haW4iOw0KIG15ICRkc25fdGVzdCA9ICJkYmk6UGc6ZGJu YW1lPSRkYnRlc3QiOw0KIA0KLW15ICgkZGJoMCwgJGRiaCwgJHN0aCk7DQor bXkgKCRkYmgwLCAkZGJoLCAkZGJoMSwgJHN0aCk7DQogDQogI0RCSS0+dHJh Y2UoMyk7ICMgbWFrZSB5b3VyIGNob2ljZQ0KIA0KQEAgLTQ0NSwxNiArNDQ1 LDU2IEBADQogIyBlbmQgdHJhbnNhY3Rpb24NCiAkZGJoLT57QXV0b0NvbW1p dH0gPSAxOw0KIA0KKyMgY29tcGFyZSBsYXJnZSBvYmplY3RzDQorDQogKCAk ZGJoLT5mdW5jKCRsb2JqSWQsICdsb191bmxpbmsnKSApDQogICAgIGFuZCBw cmludCAiXCRkYmgtPmZ1bmMobG9fdW5saW5rKSAuLi4uLi4gb2tcbiINCiAg ICAgb3IgIHByaW50ICJcJGRiaC0+ZnVuYyhsb191bmxpbmspIC4uLi4uLiBu b3Qgb2tcbiI7DQogDQotIyBjb21wYXJlIGxhcmdlIG9iamVjdHMNCi0NCiAo ICRwZ2luIGNtcCAkYnVmIGFuZCAkcGdpbiBjbXAgJGJsb2IgKQ0KICAgICBh bmQgcHJpbnQgImNvbXBhcmUgYmxvYnMgLi4uLi4uLi4uLi4uLi4gbm90IG9r XG4iDQogICAgIG9yICBwcmludCAiY29tcGFyZSBibG9icyAuLi4uLi4uLi4u Li4uLiBva1xuIjsNCiANCitteSAkZmQ7DQorKCAkZmQ9JGRiaC0+ZnVuYygg J2dldGZkJykgKQ0KKyAgICBhbmQgcHJpbnQgIlwkZGJoLT5mdW5jKGdldGZk KSAuLi4uLi4uLi4uIG9rXG4iDQorICAgIG9yICBwcmludCAiXCRkYmgtPmZ1 bmMoZ2V0ZmQpIC4uLi4uLi4uLi4gbm90IG9rXG4iOw0KKw0KKyggJGRiaC0+ ZG8oICdMSVNURU4gdGVzdCAnKSApDQorICAgIGFuZCBwcmludCAiXCRkYmgt PmRvKCdMSVNURU4gdGVzdCcpIC4uLi4gb2tcbiINCisgICAgb3IgIHByaW50 ICJcJGRiaC0+ZG8oJ0xJU1RFTiB0ZXN0JykgLi4uLiBub3Qgb2tcbiI7DQor DQorKCAkZGJoMSA9IERCSS0+Y29ubmVjdCgiJGRzbl90ZXN0IiwgJycsICcn LCB7IEF1dG9Db21taXQgPT4gMSB9KSApDQorICAgIGFuZCBwcmludCAiREJJ LT5jb25uZWN0IChmb3Igbm90aWZ5KS4uLiBva1xuIg0KKyAgICBvciAgZGll ICAgIkRCSS0+Y29ubmVjdCAoZm9yIG5vdGlmeSkuLi4gbm90IG9rOiAiLCAk REJJOjplcnJzdHI7DQorDQorIyB0aGVyZSBzaG91bGQgYmUgbm8gZGF0YSBm b3IgcmVhZCBvbiAkZmQgLCB1bnRpbCB3ZSBzZW5kIGEgbm90aWZ5DQorICAg DQorICAgIG15ICRyb3V0Ow0KKyAgICBteSAkcmluID0gJyc7DQorICAgIHZl YygkcmluLCRmZCwxKSA9IDE7DQorICAgIG15ICRuZm91bmQgPSBzZWxlY3Qo ICRyb3V0PSRyaW4sIHVuZGVmLCB1bmRlZiwgMCk7DQorDQorKCAkbmZvdW5k PT0wICkgDQorICAgIGFuZCBwcmludCAic2VsZWN0KFwkZmQpIHJldHVybnMg bm8gZGF0YS4gb2tcbiINCisgICAgb3IgIGRpZSAgICJzZWxlY3QoXCRmZCkg cmV0dXJucyBubyBkYXRhLiBub3Qgb2tcbiI7DQorDQorKCAkZGJoMS0+ZG8o ICdOT1RJRlkgdGVzdCAnKSApDQorICAgIGFuZCBwcmludCAiXCRkYmgxLT5k bygnTk9USUZZIHRlc3QnKSAuLi4gb2tcbiINCisgICAgb3IgIHByaW50ICJc JGRiaDEtPmRvKCdOT1RJRlkgdGVzdCcpIC4uLiBub3Qgb2tcbiI7DQorDQor ICAgIG15ICRuZm91bmQgPSBzZWxlY3QoICRyb3V0PSRyaW4sIHVuZGVmLCB1 bmRlZiwgMSk7DQorDQorKCAkbmZvdW5kPT0xICkgDQorICAgIGFuZCBwcmlu dCAic2VsZWN0KFwkZmQpIHJldHVybnMgZGF0YS4uLi4gb2tcbiINCisgICAg b3IgIGRpZSAgICJzZWxlY3QoXCRmZCkgcmV0dXJucyBkYXRhLi4uLiBub3Qg b2tcbiI7DQorDQorbXkgJG5vdGlmeV9yOw0KKw0KKyggJG5vdGlmeV9yID0g JGRiaC0+ZnVuYygnbm90aWZpZXMnKSApIA0KKyAgICBhbmQgcHJpbnQgIlwk ZGJoLT5mdW5jKCdub3RpZmllcycpLi4uLi4uIG9rXG4iDQorICAgIG9yICBk aWUgICAiXCRkYmgtPmZ1bmMoJ25vdGlmaWVzJykuLi4uLi4gbm90IG9rXG4i Ow0KKw0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgZGlzY29ubmVjdCBh bmQgZHJvcCB0ZXN0IGRhdGFiYXNlDQogDQogIyBkaXNjb25uZWN0DQpAQCAt NDYyLDYgKzUwMiwxMCBAQA0KICggJGRiaC0+ZGlzY29ubmVjdCApDQogICAg IGFuZCBwcmludCAiXCRkYmgtPmRpc2Nvbm5lY3QgLi4uLi4uLi4uLi4gb2tc biINCiAgICAgb3IgIGRpZSAgICJcJGRiaC0+ZGlzY29ubmVjdCAuLi4uLi4u Li4uLiBub3Qgb2s6ICIsICREQkk6OmVycnN0cjsNCisNCisoICRkYmgxLT5k aXNjb25uZWN0ICkNCisgICAgYW5kIHByaW50ICJcJGRiaDEtPmRpc2Nvbm5l Y3QgLi4uLi4uLi4uLiBva1xuIg0KKyAgICBvciAgZGllICAgIlwkZGJoMS0+ ZGlzY29ubmVjdCAuLi4uLi4uLi4uIG5vdCBvazogIiwgJERCSTo6ZXJyc3Ry Ow0KIA0KICRkYmgwLT5kbygiRFJPUCBEQVRBQkFTRSAkZGJ0ZXN0Iik7DQog JGRiaDAtPmRpc2Nvbm5lY3Q7DQo= --0-1555397714-992202872=:23782--