Thread: Listen/Notify payload and interfaces

Listen/Notify payload and interfaces

From
Joachim Wieland
Date:
This one is for the maintainers of the various postgresql interfaces:

With the new listen/notify implementation we can send a payload along
with the notification. This has been in the protocol already since
years and there is no change needed for libpq. However we need to
adapt the various interfaces to allow a payload to be sent and
received.

A notification is sent via SQL:

http://developer.postgresql.org/pgdocs/postgres/sql-notify.html


and received via the libpq call PQnotifies:

http://developer.postgresql.org/pgdocs/postgres/libpq-notify.html



Joachim


Re: Listen/Notify payload and interfaces

From
"Greg Sabino Mullane"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160


> With the new listen/notify implementation we can send a payload along
> with the notification. This has been in the protocol already since
> years and there is no change needed for libpq. However we need to
> adapt the various interfaces to allow a payload to be sent and
> received.

DBD::Pg has been ready since 2008, if you need something to test with. :)

Usage is:

while (my $notify = $dbh->pg_notifies) { my ($name, $pid, $payload) = @$notify; print qq{I received notice "$name" from
PID$pid, payload was "$payload"\n};                                            
 
}

Not sure what you mean by adapting interfaces to send payloads, I imagine 
most if not all simply require a NOTIFY to be sent via PQexec.

- -- 
Greg Sabino Mullane greg@turnstep.com
End Point Corporation http://www.endpoint.com/
PGP Key: 0x14964AC8 201002171302
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8
-----BEGIN PGP SIGNATURE-----

iEYEAREDAAYFAkt8L3oACgkQvJuQZxSWSsik0wCfZexc8ZU2/zo4JZQ47YblKend
yEMAoLdG4IS3pc163UVSpQ11/de+xzUT
=dx6+
-----END PGP SIGNATURE-----




Re: Listen/Notify payload and interfaces

From
"David E. Wheeler"
Date:
On Feb 17, 2010, at 10:04 AM, Greg Sabino Mullane wrote:

> while (my $notify = $dbh->pg_notifies) {
>  my ($name, $pid, $payload) = @$notify;
>  print qq{I received notice "$name" from PID $pid, payload was "$payload"\n};
> }
>
> Not sure what you mean by adapting interfaces to send payloads, I imagine
> most if not all simply require a NOTIFY to be sent via PQexec.

Is the payload decoded to utf8 when pg_enable_utf8 is true?

Best,

David



Re: Listen/Notify payload and interfaces

From
"Greg Sabino Mullane"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160


> Is the payload decoded to utf8 when pg_enable_utf8 is true?

No - there's a note in the code to look into that at some point. So 
stick to ASCII for the moment. I'm sure the great DBD::Pg utf-8 
overhaul (where we get rid of the pg_enable_utf8 hack) will encompass 
payloads as well.

- -- 
Greg Sabino Mullane greg@turnstep.com
End Point Corporation http://www.endpoint.com/
PGP Key: 0x14964AC8 201002181600
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8


-----BEGIN PGP SIGNATURE-----

iEYEAREDAAYFAkt9qn4ACgkQvJuQZxSWSsiM0ACgnjJAfKJOfIFzHBvBmXI3j/ZT
lEMAoIV6KwN186oOKqMYa6IQjYPHprzC
=AwK+
-----END PGP SIGNATURE-----




Re: Listen/Notify payload and interfaces

From
"David E. Wheeler"
Date:
On Feb 18, 2010, at 1:01 PM, Greg Sabino Mullane wrote:

>> Is the payload decoded to utf8 when pg_enable_utf8 is true?
> 
> No - there's a note in the code to look into that at some point. So 
> stick to ASCII for the moment. I'm sure the great DBD::Pg utf-8 
> overhaul (where we get rid of the pg_enable_utf8 hack) will encompass 
> payloads as well.

Is that immanent?

Best,

David


Re: Listen/Notify payload and interfaces

From
"Greg Sabino Mullane"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160


>> No - there's a note in the code to look into that at some point. So 
>> stick to ASCII for the moment. I'm sure the great DBD::Pg utf-8 
>> overhaul (where we get rid of the pg_enable_utf8 hack) will encompass 
>> payloads as well.

> Is that immanent?

Barring sudden free time, funding, and/or a client request, no.

- -- 
Greg Sabino Mullane greg@turnstep.com
End Point Corporation http://www.endpoint.com/
PGP Key: 0x14964AC8 201002181711
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8
-----BEGIN PGP SIGNATURE-----

iEYEAREDAAYFAkt9u0AACgkQvJuQZxSWSsj/8wCcD6qwNvnRoQ+UJWzDuAIM1vh/
7pQAn1yRdO1bKL1qLpX8OeggS4iCl+1j
=sOJR
-----END PGP SIGNATURE-----