public inbox for [email protected]
help / color / mirror / Atom feedFrom: Tom Lane <[email protected]>
To: Laurenz Albe <[email protected]>
Cc: Dominique Devienne <[email protected]>
Cc: [email protected]
Subject: Re: Latest patches break one of our unit-test, related to RLS
Date: Fri, 12 Sep 2025 20:12:03 -0400
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <CAFCRh-8NwJd0jq6P=R3qhHyqU7hw0BTor3W0SvUcii24et+zAw@mail.gmail.com>
<CAFCRh-93hsRvoJqQCwXq06=AJJJ_s783gVsGHKc-QjgOO6jGVg@mail.gmail.com>
<[email protected]>
<CAFCRh--DPWEHpRmdr-Jfw4guYqjc9TM_QyVH7SR4B=Le5gGe3Q@mail.gmail.com>
<CAFCRh--M1y2YpJJMb6undzvyvhd4geKtRWFkDyr1shHvvoOkpQ@mail.gmail.com>
<CAFCRh-_OBKtabe8MO0vUocNSq_O3_b852AXknPiNhL0tNUBGQg@mail.gmail.com>
<CAFCRh-_U+8fmRoc-sYM5ahp=9dNjs=Dri1LFLcHCgEJX8Zq_oA@mail.gmail.com>
<[email protected]>
<[email protected]>
Laurenz Albe <[email protected]> writes:
> On Fri, 2025-09-12 at 10:07 -0400, Tom Lane wrote:
>> The _ and % are not getting converted to their POSIX equivalents
>> ("." and ".*").
> Indeed, and I have to take the blame for introducing a bug in a minor
> release :^(
> The attached patch should fix the problem.
I had not particularly studied the new charclass-parsing logic.
Looking at it now, this bit further down (lines 871ff) looks
fishy:
if (pchar == ']' && charclass_start > 2)
charclass_depth--;
else if (pchar == '[')
charclass_depth++;
/*
* If there is a caret right after the opening bracket, it negates
* the character class, but a following closing bracket should
* still be treated as a normal character. That holds only for
* the first caret, so only the values 1 and 2 mean that closing
* brackets should be taken literally.
*/
if (pchar == '^')
charclass_start++;
else
charclass_start = 3; /* definitely past the start */
Should not we be setting charclass_start to 1 after incrementing
charclass_depth? That is, I'd be more comfortable if this logic
looked like
if (pchar == ']' && charclass_start > 2)
charclass_depth--;
else if (pchar == '[')
{
/* start of a nested character class */
charclass_depth++;
charclass_start = 1;
}
else if (pchar == '^')
charclass_start++;
else
charclass_start = 3; /* definitely past the start */
I haven't experimented, but it looks like this might misprocess
^ or ] at the start of a nested character class.
regards, tom lane
view thread (9+ messages) latest in thread
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: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Latest patches break one of our unit-test, related to RLS
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox