Re: regex match and special characters - Mailing list pgsql-general

From Oleksii Kliukin
Subject Re: regex match and special characters
Date
Msg-id FF4AA68A-92CA-4975-AC37-CAE2ECE6310C@hintbits.com
Whole thread Raw
In response to Re: regex match and special characters  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general

On 16. Aug 2018, at 16:57, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Alex Kliukin <alexk@hintbits.com> writes:
Here is a simple SQL statement that gives different results on PostgreSQL 9.6 and PostgreSQL 10+. The space character at the end of the string is actually U+2006 SIX-PER-EM SPACE (http://www.fileformat.info/info/unicode/char/2006/index.htm)

I think the reason for the discrepancy is that in v10 we fixed the regex
locale support so that it could properly classify code points above U+7FF,
cf

https://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=c54159d44ceaba26ceda9fea1804f0de122a8f30

This nails down the cause, thanks a lot for the link! Apparently I missed it from PostgreSQL 10 release notes, where it is present in the “Queries” section, although AFAIK it deserved an entry in the "migration to version 10”, as it may potentially make dump/restore from previous versions to version 10 error out if there are table constraints that use regex classes over the Unicode text fields with code points above U+7FF.


So 10 is giving the right answer (i.e. that \s matches U+2006).
9.x is not

Agreed.

Cheers,
Alex

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: AW: CTE with JOIN of two tables is much faster than a regularquery
Next
From:
Date:
Subject: AW: AW: CTE with JOIN of two tables is much faster than a regular query