Re: [PATCH] TODO “Allow LISTEN on patterns”

From: Emanuel Calvo <3manuek(at)gmail(dot)com>
To: Alexander Cheshev <alex(dot)cheshev(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: [PATCH] TODO “Allow LISTEN on patterns”
Date: 2024-07-09 08:01:03
Message-ID: CAJeAsn-K_TeFaDZ2=O9CHt=UCEowL-hhxyHbbkLD4BOJL=AZRw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello there,

El vie, 15 mar 2024 a las 9:01, Alexander Cheshev (<alex(dot)cheshev(at)gmail(dot)com>)
escribió:

> Hello Hackers,
>
> I have implemented TODO “Allow LISTEN on patterns” [1] and attached
> the patch to the email. The patch basically consists of the following
> two parts.
>
> 1. Support wildcards in LISTEN command
>
> Notification channels can be composed of multiple levels in the form
> ‘a.b.c’ where ‘a’, ‘b’ and ‘c’ are identifiers.
>
> Listen channels can be composed of multiple levels in the form ‘a.b.c’
> where ‘a’, ‘b’ and ‘c’ are identifiers which can contain the following
> wildcards:
> * ‘%’ matches everything until the end of a level. Can only appear
> at the end of a level. For example, the notification channels ‘a.b.c’,
> ‘a.bc.c’ match against the listen channel ‘a.b%.c’.
> * ‘>’ matches everything to the right. Can only appear at the end of
> the last level. For example, the notification channels ‘a.b’, ‘a.bc.d’
> match against the listen channel ‘a.b>’.
>
>
I did a test over the "UNLISTEN >" behavior, and I'm not sure if this is
expected.
This command I assume should free all the listening channels, however, it
doesn't
seem to do so:

postgres=# LISTEN device1.alerts.%;
LISTEN
postgres=# ;
Asynchronous notification "device1.alerts.temp" with payload "80" received
from server process with PID 237.
postgres=# UNLISTEN >;
UNLISTEN
postgres=# ; -- Here I send a notification over the same channel
Asynchronous notification "device1.alerts.temp" with payload "80" received
from server process with PID 237.

The same happens with "UNLISTEN %;", although I'm not sure if this should
have
the same behavior.

It stops listening correctly if I do explicit UNLISTEN (exact channel
matching).

I'll be glad to conduct more tests or checks on this.

Cheers,

--
--
Emanuel Calvo
Database Engineering
https://tr3s.ma/aobut

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Dave Page 2024-07-09 08:14:33 Re: Should we work around msvc failing to compile tab-complete.c?
Previous Message Laurenz Albe 2024-07-09 08:00:24 Re: Built-in CTYPE provider