Thread: BUG #15558: NOTIFY max channel length is undocumented

BUG #15558: NOTIFY max channel length is undocumented

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      15558
Logged by:          Andy Edwards
Email address:      jedwards@fastmail.com
PostgreSQL version: 11.1
Operating system:   (irrelevant)
Description:

After debugging why notifications weren't getting delivered, I discovered
the following:

# LISTEN "pg/tables/TagNotificationTriggers/tag/_org/1/JSON
Test/battery/1/lifetimeWh";
NOTICE:  identifier "pg/tables/TagNotificationTriggers/tag/_org/1/JSON
Test/battery/1/lifetimeWh" will be truncated to
"pg/tables/TagNotificationTriggers/tag/_org/1/JSON Test/battery/"

I haven't seen a mention of this channel length limit in any version of the
documentation for NOTIFY.  I wish it were in the documentation, because then
I would have found out about this limit before deciding to use Postgres
notifications, and chosen to use Redis notifications from the beginning.


Re: BUG #15558: NOTIFY max channel length is undocumented

From
"David G. Johnston"
Date:
On Tue, Dec 18, 2018 at 5:36 PM PG Bug reporting form
<noreply@postgresql.org> wrote:
>
> The following bug has been logged on the website:
>
> Bug reference:      15558
> Logged by:          Andy Edwards
> Email address:      jedwards@fastmail.com
> PostgreSQL version: 11.1
> Operating system:   (irrelevant)
> Description:
>
> After debugging why notifications weren't getting delivered, I discovered
> the following:
>
> # LISTEN "pg/tables/TagNotificationTriggers/tag/_org/1/JSON
> Test/battery/1/lifetimeWh";
> NOTICE:  identifier "pg/tables/TagNotificationTriggers/tag/_org/1/JSON
> Test/battery/1/lifetimeWh" will be truncated to
> "pg/tables/TagNotificationTriggers/tag/_org/1/JSON Test/battery/"
>
> I haven't seen a mention of this channel length limit in any version of the
> documentation for NOTIFY.  I wish it were in the documentation, because then
> I would have found out about this limit before deciding to use Postgres
> notifications, and chosen to use Redis notifications from the beginning.

Since it is just another name/identifier it is the same limit and
behavior as is present for table names, column names, type names,
etc...

The length of identifiers is covered in the general section covering syntax:

https://www.postgresql.org/docs/11/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

Default length for identifiers is identified as being 63 bytes -
though technically (but not usefully) is system dependent at compile
time.

It is intentional to not spam the documentation with such a
wide-ranging dynamic everywhere it might come into play...I'm
undecided whether NOTIFY is deserving of an exception...

David J.


Re: BUG #15558: NOTIFY max channel length is undocumented

From
Andy Edwards
Date:
Oh, that's a good point.  Do you think a hyperlink like the following might be an improvement?

channel
      Name of the notification channel to be signaled (any <a
href="https://www.postgresql.org/docs/11/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS">identifier</a>)

If there had been a hyperlink I believe I might have clicked it and found this out sooner.

On Tue, Dec 18, 2018, at 6:57 PM, David G. Johnston wrote:
> On Tue, Dec 18, 2018 at 5:36 PM PG Bug reporting form
> <noreply@postgresql.org> wrote:
> >
> > The following bug has been logged on the website:
> >
> > Bug reference:      15558
> > Logged by:          Andy Edwards
> > Email address:      jedwards@fastmail.com
> > PostgreSQL version: 11.1
> > Operating system:   (irrelevant)
> > Description:
> >
> > After debugging why notifications weren't getting delivered, I discovered
> > the following:
> >
> > # LISTEN "pg/tables/TagNotificationTriggers/tag/_org/1/JSON
> > Test/battery/1/lifetimeWh";
> > NOTICE:  identifier "pg/tables/TagNotificationTriggers/tag/_org/1/JSON
> > Test/battery/1/lifetimeWh" will be truncated to
> > "pg/tables/TagNotificationTriggers/tag/_org/1/JSON Test/battery/"
> >
> > I haven't seen a mention of this channel length limit in any version of the
> > documentation for NOTIFY.  I wish it were in the documentation, because then
> > I would have found out about this limit before deciding to use Postgres
> > notifications, and chosen to use Redis notifications from the beginning.
> 
> Since it is just another name/identifier it is the same limit and
> behavior as is present for table names, column names, type names,
> etc...
> 
> The length of identifiers is covered in the general section covering syntax:
> 
> https://www.postgresql.org/docs/11/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
> 
> Default length for identifiers is identified as being 63 bytes -
> though technically (but not usefully) is system dependent at compile
> time.
> 
> It is intentional to not spam the documentation with such a
> wide-ranging dynamic everywhere it might come into play...I'm
> undecided whether NOTIFY is deserving of an exception...
> 
> David J.