Lists: | pgsql-bugs |
---|
From: | "Joshua McDougall" <josh(at)schemaverse(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #5911: pg_notify() function only works when channel name is lower case |
Date: | 2011-03-03 15:20:59 |
Message-ID: | 201103031520.p23FKxFJ049037@wwwmaster.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
The following bug has been logged online:
Bug reference: 5911
Logged by: Joshua McDougall
Email address: josh(at)schemaverse(dot)com
PostgreSQL version: 9.0.3
Operating system: Slackware Linux Kernel 2.6.28.6
Description: pg_notify() function only works when channel name is
lower case
Details:
When using the pg_notify(text,text) function, the channel name MUST be lower
case otherwise the message does not go through.
So, while this will work:
LISTEN ERRORCHANNEL;
NOTIFY ERRORCHANNEL, 'something!';
NOTIFY eRrorChanNel, 'something!';
this will not:
SELECT pg_notify('ERRORCHANNEL','something!');
You must use:
SELECT pg_notify('errorchannel','something!');
From: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
---|---|
To: | Joshua McDougall <josh(at)schemaverse(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5911: pg_notify() function only works when channel name is lower case |
Date: | 2011-03-03 16:22:16 |
Message-ID: | AANLkTi=qi0DXZcDoMy5hHJQGJP5upJPsGKVt+ySh5tmS@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
On Thu, Mar 3, 2011 at 9:20 AM, Joshua McDougall <josh(at)schemaverse(dot)com> wrote:
>
> The following bug has been logged online:
>
> Bug reference: 5911
> Logged by: Joshua McDougall
> Email address: josh(at)schemaverse(dot)com
> PostgreSQL version: 9.0.3
> Operating system: Slackware Linux Kernel 2.6.28.6
> Description: pg_notify() function only works when channel name is
> lower case
> Details:
>
> When using the pg_notify(text,text) function, the channel name MUST be lower
> case otherwise the message does not go through.
>
> So, while this will work:
>
> LISTEN ERRORCHANNEL;
> NOTIFY ERRORCHANNEL, 'something!';
> NOTIFY eRrorChanNel, 'something!';
>
> this will not:
> SELECT pg_notify('ERRORCHANNEL','something!');
>
> You must use:
> SELECT pg_notify('errorchannel','something!');
not a bug. you have to double quote relnames (listen "Test"). if you
want the server not to case fold them. pg_notify takes a string, not a
relname, which uses different rules.
merlin
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Joshua McDougall" <josh(at)schemaverse(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5911: pg_notify() function only works when channel name is lower case |
Date: | 2011-03-03 16:24:53 |
Message-ID: | 9171.1299169493@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
"Joshua McDougall" <josh(at)schemaverse(dot)com> writes:
> When using the pg_notify(text,text) function, the channel name MUST be lower
> case otherwise the message does not go through.
It's not clear to me that this is a bug. The argument of NOTIFY is a
SQL identifier, which is folded to lower case by the lexer if not
double-quoted, but the argument of pg_notify is a string constant which
is a different matter altogether.
We could have pg_notify lowercase its argument at runtime, but then
we'd have to introduce quoting rules, so that you could do
select pg_notify('"IntentionallyMixedCase"', '...');
This isn't a lot clearer than the current behavior, and it definitely
wouldn't be backwards compatible. So I'm inclined to leave it alone.
regards, tom lane
From: | Josh <josh(at)schemaverse(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, mmoncure(at)gmail(dot)com |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5911: pg_notify() function only works when channel name is lower case |
Date: | 2011-03-03 16:41:22 |
Message-ID: | 4D6FC4B2.2090109@schemaverse.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
Thank you both for clearing that up (and doing so quite quickly!).
The behavior makes complete sense now that I understand what is
happening here behind the scenes.
Regards,
Josh
On 3/3/2011 11:24 AM, Tom Lane wrote:
> "Joshua McDougall"<josh(at)schemaverse(dot)com> writes:
>> When using the pg_notify(text,text) function, the channel name MUST be lower
>> case otherwise the message does not go through.
> It's not clear to me that this is a bug. The argument of NOTIFY is a
> SQL identifier, which is folded to lower case by the lexer if not
> double-quoted, but the argument of pg_notify is a string constant which
> is a different matter altogether.
>
> We could have pg_notify lowercase its argument at runtime, but then
> we'd have to introduce quoting rules, so that you could do
>
> select pg_notify('"IntentionallyMixedCase"', '...');
>
> This isn't a lot clearer than the current behavior, and it definitely
> wouldn't be backwards compatible. So I'm inclined to leave it alone.
>
> regards, tom lane