pgsql: Revert refactoring of hex code to src/common/ - Mailing list pgsql-committers

From Michael Paquier
Subject pgsql: Revert refactoring of hex code to src/common/
Date
Msg-id E1mGVni-0005Ss-3y@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Revert refactoring of hex code to src/common/

This is a combined revert of the following commits:
- c3826f8, a refactoring piece that moved the hex decoding code to
src/common/.  This code was cleaned up by aef8948, as it originally
included no overflow checks in the same way as the base64 routines in
src/common/ used by SCRAM, making it unsafe for its purpose.
- aef8948, a more advanced refactoring of the hex encoding/decoding code
to src/common/ that added sanity checks on the result buffer for hex
decoding and encoding.  As reported by Hans Buschmann, those overflow
checks are expensive, and it is possible to see a performance drop in
the decoding/encoding of bytea or LOs the longer they are.  Simple SQLs
working on large bytea values show a clear difference in perf profile.
- ccf4e27, a cleanup made possible by aef8948.

The reverts of all those commits bring back the performance of hex
decoding and encoding back to what it was in ~13.  Fow now and
post-beta3, this is the simplest option.

Reported-by: Hans Buschmann
Discussion: https://postgr.es/m/1629039545467.80333@nidsa.net
Backpatch-through: 14

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2576dcfb76aa71e4222bac5a3a43f71875bfa9e8

Modified Files
--------------
src/backend/replication/backup_manifest.c |  30 ++---
src/backend/utils/adt/encode.c            | 158 +++++++++++++++---------
src/backend/utils/adt/varlena.c           |  15 +--
src/common/Makefile                       |   1 -
src/common/hex.c                          | 192 ------------------------------
src/include/common/hex.h                  |  25 ----
src/include/common/sha2.h                 |   4 +
src/include/utils/builtins.h              |   4 +
src/tools/msvc/Mkvcbuild.pm               |   2 +-
9 files changed, 127 insertions(+), 304 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix check_agg_arguments' examination of aggregate FILTER clauses
Next
From: Michael Paquier
Date:
Subject: pgsql: Improve performance of float overflow checks in btree_gist