Re: SQL/JSON path: collation for comparisons, minor typos in docs
Alexander Korotkov <a.korotkov@postgrespro.ru>
From: Alexander Korotkov <a.korotkov@postgrespro.ru>
To: Markus Winand <markus.winand@winand.at>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2019-08-11T20:11:36Z
Lists: pgsql-hackers
On Fri, Aug 9, 2019 at 5:27 PM Alexander Korotkov <a.korotkov@postgrespro.ru> wrote: > On Thu, Aug 8, 2019 at 11:30 PM Alexander Korotkov > <a.korotkov@postgrespro.ru> wrote: > > On Thu, Aug 8, 2019 at 11:53 AM Markus Winand <markus.winand@winand.at> wrote: > > > The patch makes my tests pass. > > > > Cool. > > > > > I wonder about a few things: > > > > > > - Isn’t there any code that could be re-used for that (the one triggered by ‘a’ < ‘A’ COLLATE ucs_basic)? > > > > PostgreSQL supports ucs_basic, but it's alias to C collation and works > > only for utf-8. Jsonpath code may work in different encodings. New > > string comparison code can work in different encodings. > > > > > - For object key members, the standard also refers to unicode code point collation (SQL-2:2016 4.46.3, last paragraph). > > > - I guess it also applies to the “starts with” predicate, but I cannot find this explicitly stated in the standard. > > > > For object keys we don't actually care about whether strings are less > > or greater. We only search for equal keys. So, per-byte comparison > > we currently use should be fine. The same states for "starts with" > > predicate. > > > > > My tests check whether those cases do case-sensitive comparisons. With my default collation "en_US.UTF-8” I cannot discover potential issues there. I haven’t played around with nondeterministic ICU collations yet :( > > > > That's OK. There should be other beta testers around :) > > So, I'm going to push this if no objections. So, pushed. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
Commits
-
Adjust string comparison in jsonpath
- 3218ff5c6aea 12.0 landed
- d54ceb9e1761 13.0 landed
-
Fix some typos in jsonpath documentation
- 53d467246589 12.0 landed
- 1f33f211bc53 13.0 landed