pgsql: Refactor to add pg_strcoll(), pg_strxfrm(), and variants.

Started by Jeff Davisalmost 3 years ago4 messages
#1Jeff Davis
jdavis@postgresql.org

Refactor to add pg_strcoll(), pg_strxfrm(), and variants.

Offers a generally better separation of responsibilities for collation
code. Also, a step towards multi-lib ICU, which should be based on a
clean separation of the routines required for collation providers.

Callers with NUL-terminated strings should call pg_strcoll() or
pg_strxfrm(); callers with strings and their length should call the
variants pg_strncoll() or pg_strnxfrm().

Reviewed-by: Peter Eisentraut, Peter Geoghegan
Discussion: /messages/by-id/a581136455c940d7bd0ff482d3a2bd51af25a94f.camel@j-davis.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d87d548cd0304477413a73e9c1d148fb2d40b50d

Modified Files
--------------
src/backend/access/hash/hashfunc.c | 61 +--
src/backend/utils/adt/pg_locale.c | 769 ++++++++++++++++++++++++++++++++++++-
src/backend/utils/adt/varchar.c | 51 +--
src/backend/utils/adt/varlena.c | 368 +++---------------
src/include/utils/pg_locale.h | 13 +
5 files changed, 871 insertions(+), 391 deletions(-)

#2Justin Pryzby
pryzby@telsasoft.com
In reply to: Jeff Davis (#1)
Re: pgsql: Refactor to add pg_strcoll(), pg_strxfrm(), and variants.

These patches cause warnings under MSVC.

Of course my patch to improve CI by warning about compiler warnings is
the only one to notice.

https://cirrus-ci.com/task/6199582053367808

--
Justin

#3Thomas Munro
thomas.munro@gmail.com
In reply to: Justin Pryzby (#2)
Re: pgsql: Refactor to add pg_strcoll(), pg_strxfrm(), and variants.

On Fri, Feb 24, 2023 at 1:20 PM Justin Pryzby <pryzby@telsasoft.com> wrote:

These patches cause warnings under MSVC.

Of course my patch to improve CI by warning about compiler warnings is
the only one to notice.

https://cirrus-ci.com/task/6199582053367808

It's a shame that it fails the whole Windows task, whereas for the
Unixen we don't do -Werror so you can still see if everything else is
OK, but then we check for errors in a separate task. I don't have any
ideas on how to achieve that, though.

FWIW my CI log scanner also noticed this problem
http://cfbot.cputube.org/highlights/compiler.html. Been wondering how
to bring that to the right people's attention. Perhaps by adding a
clickable ⚠ to the main page next to the item if any of these
"highlights" were detected; perhaps it should take you to a
per-submission history page with the highlights from each version.

#4Justin Pryzby
pryzby@telsasoft.com
In reply to: Thomas Munro (#3)
Re: pgsql: Refactor to add pg_strcoll(), pg_strxfrm(), and variants.

On Fri, Feb 24, 2023 at 01:56:05PM +1300, Thomas Munro wrote:

On Fri, Feb 24, 2023 at 1:20 PM Justin Pryzby <pryzby@telsasoft.com> wrote:

These patches cause warnings under MSVC.

Of course my patch to improve CI by warning about compiler warnings is
the only one to notice.

https://cirrus-ci.com/task/6199582053367808

It's a shame that it fails the whole Windows task, whereas for the
Unixen we don't do -Werror so you can still see if everything else is
OK, but then we check for errors in a separate task. I don't have any
ideas on how to achieve that, though.

My patch isn't very pretty, but you can see that runs all the tests
before grepping for warnings, rather than failing during compilation as
you said.

IMO the compiler warnings task is separate not only "to avoid failing
the whole task during compilation", but because it's compiled with
optimization. Which is 1) needed to allow some warnings to be warned
about; and, 2) harmful to enable during the "check-world" tests, since
it makes backtraces less accurate.

--
Justin