diff options
| author | Michael Paquier | 2021-08-19 00:20:13 +0000 |
|---|---|---|
| committer | Michael Paquier | 2021-08-19 00:20:13 +0000 |
| commit | 2576dcfb76aa71e4222bac5a3a43f71875bfa9e8 (patch) | |
| tree | e035f807a855e56aee90d73bf63798d19133b1a1 /src/include/common | |
| parent | 2313dda9d493d3685ac7328b49dc6f5a87c1c295 (diff) | |
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
Diffstat (limited to 'src/include/common')
| -rw-r--r-- | src/include/common/hex.h | 25 | ||||
| -rw-r--r-- | src/include/common/sha2.h | 4 |
2 files changed, 4 insertions, 25 deletions
diff --git a/src/include/common/hex.h b/src/include/common/hex.h deleted file mode 100644 index 150771a14d7..00000000000 --- a/src/include/common/hex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*------------------------------------------------------------------------ - * - * hex.h - * Encoding and decoding routines for hex strings. - * - * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * IDENTIFICATION - * src/include/common/hex.h - * - *------------------------------------------------------------------------ - */ - -#ifndef COMMON_HEX_H -#define COMMON_HEX_H - -extern uint64 pg_hex_decode(const char *src, size_t srclen, - char *dst, size_t dstlen); -extern uint64 pg_hex_encode(const char *src, size_t srclen, - char *dst, size_t dstlen); -extern uint64 pg_hex_enc_len(size_t srclen); -extern uint64 pg_hex_dec_len(size_t srclen); - -#endif /* COMMON_HEX_H */ diff --git a/src/include/common/sha2.h b/src/include/common/sha2.h index dfeee6bceba..f4bae35af10 100644 --- a/src/include/common/sha2.h +++ b/src/include/common/sha2.h @@ -18,11 +18,15 @@ /*** SHA224/256/384/512 Various Length Definitions ***********************/ #define PG_SHA224_BLOCK_LENGTH 64 #define PG_SHA224_DIGEST_LENGTH 28 +#define PG_SHA224_DIGEST_STRING_LENGTH (PG_SHA224_DIGEST_LENGTH * 2 + 1) #define PG_SHA256_BLOCK_LENGTH 64 #define PG_SHA256_DIGEST_LENGTH 32 +#define PG_SHA256_DIGEST_STRING_LENGTH (PG_SHA256_DIGEST_LENGTH * 2 + 1) #define PG_SHA384_BLOCK_LENGTH 128 #define PG_SHA384_DIGEST_LENGTH 48 +#define PG_SHA384_DIGEST_STRING_LENGTH (PG_SHA384_DIGEST_LENGTH * 2 + 1) #define PG_SHA512_BLOCK_LENGTH 128 #define PG_SHA512_DIGEST_LENGTH 64 +#define PG_SHA512_DIGEST_STRING_LENGTH (PG_SHA512_DIGEST_LENGTH * 2 + 1) #endif /* _PG_SHA2_H_ */ |
