pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Michael Paquier <michael@paquier.xyz>
To: Laurenz Albe <laurenz.albe@cybertec.at>
Cc: pgsql-bugs@lists.postgresql.org
Subject: Re: SIMILAR TO expressions translate wildcards where they shouldn't
Date: Fri, 23 May 2025 12:22:21 +0900
Message-ID: <aC_p7b5H6pLICU_e@paquier.xyz> (raw)
In-Reply-To: <aC_K7JPXF0AdPZqB@paquier.xyz>
References: <16ab039d1af455652bdf4173402ddda145f2c73b.camel@cybertec.at>
	<aC_K7JPXF0AdPZqB@paquier.xyz>

On Fri, May 23, 2025 at 10:10:04AM +0900, Michael Paquier wrote:
> Oh, good catch.  [_[:alpha:]] and [[:alpha:]_] both that this should
> match every string made of a-zA-Z and underscores, but this is failing
> to do the job for the latter.
> 
> +           if (pchar != '^' && charclass_start)
> +               charclass_start = false;
> 
> I'm a bit puzzled by this part about '^', though, resetting the fact
> that we are in a squared bracket section with '^' treated as an
> exception.  Perhaps this deserves a comment?

Ah, I see.  This is just a way of saying that the caret ^ should still
be able to track the first character in the character class.

Anyway, I don't think that the tests in the patch are complete.  For
example, '[[^](]' is transformed into '^(?:[[^](])$' in the SIMILAR TO
conversion with the patch, and before the patch we get
'^(?:[[^](?:])$'.  Note the translation of the last parenthesis '(' to
"(?:" when inside the character class, but your patch does not
document that.  AFAIU, we should not convert the parenthesis '(' while
in a multi-level character class as the patch does, but we have no
tests for it and the patch does not document this part, either.

Could it be possible to split the single SIMILAR TO expression into
multiple smaller pieces for each character that should not be
converted while inside a character class?  This is hard to parse as
written in your proposal of patch.
--
Michael

Attachments:

  [application/pgp-signature] signature.asc (832B, ../aC_p7b5H6pLICU_e@paquier.xyz/2-signature.asc)
  download

view thread (11+ messages)  latest in thread

Message-ID: <aC_p7b5H6pLICU_e@paquier.xyz>
Permalink:  ../aC_p7b5H6pLICU_e@paquier.xyz/
Also on:    postgresql.org/message-id/aC_p7b5H6pLICU_e@paquier.xyz

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: michael@paquier.xyz, laurenz.albe@cybertec.at, pgsql-bugs@lists.postgresql.org
  Subject: Re: SIMILAR TO expressions translate wildcards where they shouldn't
  In-Reply-To: <aC_p7b5H6pLICU_e@paquier.xyz>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox