Re: [PATCH] hstore: Fix parsing on Mac OS X: isspace() is locale specific

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Evan Jones <evan(dot)jones(at)datadoghq(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: [PATCH] hstore: Fix parsing on Mac OS X: isspace() is locale specific
Date: 2023-06-18 01:50:16
Message-ID: ZI5i2NCWirDuE/Iq@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Jun 17, 2023 at 10:57:05AM -0400, Evan Jones wrote:
> However, if we think this change could be a problem, one fix would be to
> switch scanner_isspace() to array_isspace(), which returns true for these
> *six* ASCII characters. I am happy to submit a patch to do this.

The difference between scanner_isspace() and array_isspace() is that
the former matches with what scan.l stores as rules for whitespace
characters, but the latter works on values. For hstore, we want the
latter, with something that works on values. To keep the change
locale to hstore, I think that we should just introduce an
hstore_isspace() which is a copy of array_isspace. That's a
duplication, sure, but I think that we may want to think harder about
\v in the flex scanner, and that's just a few extra lines for
something that has not changed in 13 years for arrays. That's also
easier to think about for stable branches. If you can send a patch,
that helps a lot, for sure!

Worth noting that the array part has been changed in 2010, with
95cacd1, for the same reason as what you've proposed for hstore.
Thread is here, and it does not mention our flex rules, either:
https://www.postgresql.org/message-id/8F72262C-5694-4626-A87F-00604FB5E1D6@trumpet.io

Perhaps we could consider \v as a whitespace in the flex scanner
itself, but I am scared to do that in any stable branch. Perhaps
we could consider that for HEAD in 17~? That's a lot to work around
an old BSD bug that macOS has inherited, though.
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2023-06-18 08:32:15 Re: [PATCH] hstore: Fix parsing on Mac OS X: isspace() is locale specific
Previous Message Tomas Vondra 2023-06-18 01:03:48 Re: lockup in parallel hash join on dikkop (freebsd 14.0-current)