On Thu, Dec 31, 2020 at 03:10:29PM +0900, Michael Paquier wrote: > On Wed, Dec 30, 2020 at 08:22:07PM -0500, Bruce Momjian wrote: > > So, I am learning this cfbot thing. Seems I need -M100% to disable > > rename detection for diffs to work with cfbot --- makes sense. > > A good way to make sure that a patch format is correct for the CF bot > would be to use "git format-patch -1" to generate a patch from a > single commit.
Thanks. I had to learn how to squash my commits into a new branch and then generate a format-patch on that: https://bugsdb.com/_en/debug/8b648ec395b86be32efa9629cb006d74 I wanted to see how the cfbot liked my original patch with the renames, and it didn't, so now I know I have to use this method for the commitfest. Patch attached. > > New patch attached. > > I think that this patch would have more value if we remove completely > the hex routines from ECPG and have ECPG use what's moved in > src/common/, meaning the following changes: > - Remove the exit(), pg_log_fatal() and ereport() calls from > src/common/hex.c, replace the error code paths with -1, and return a > signed result. > - The ECPG copies make no use of ecpg_raise(), so things map easily. > - This means keeping small wrappers in encode.c able to generate those > ereport(FATAL) in the backend, but that's just necessary for the > decode routine that's the only thing using get_hex(). > - Let's prefix the routines in src/common/ with "pg_", to be > consistent with base64. > - It would be good to document the top each routine in hex.c (see > base64.c for a similar reference). Let me get my patch building on the cfbot and then I will address each of these. I am trying to do one stage at a time since I am still learning the process. Thanks. -- Bruce Momjian <br...@momjian.us> https://momjian.us EnterpriseDB https://enterprisedb.com The usefulness of a cup is in its emptiness, Bruce Lee
>From 464746996a22149edc607241d27837bf876cceda Mon Sep 17 00:00:00 2001 From: Bruce Momjian <br...@momjian.us> Date: Fri, 1 Jan 2021 15:04:42 -0500 Subject: [PATCH] hex squash commit --- src/backend/replication/backup_manifest.c | 2 +- src/backend/utils/adt/encode.c | 34 +------------------ src/backend/utils/adt/varlena.c | 2 +- src/common/Makefile | 2 +- src/common/{hex_decode.c => hex.c} | 40 ++++++++++++++++++++--- src/include/common/hex.h (new) | 18 ++++++++++ src/include/common/hex_decode.h (gone) | 16 --------- src/include/utils/builtins.h | 3 -- src/tools/msvc/Mkvcbuild.pm | 2 +- 9 files changed, 59 insertions(+), 60 deletions(-) diff --git a/src/backend/replication/backup_manifest.c b/src/backend/replication/backup_manifest.c index c3f339c556..716f114d78 100644 --- a/src/backend/replication/backup_manifest.c +++ b/src/backend/replication/backup_manifest.c @@ -17,7 +17,7 @@ #include "libpq/pqformat.h" #include "mb/pg_wchar.h" #include "replication/backup_manifest.h" -#include "utils/builtins.h" +#include "common/hex.h" #include "utils/json.h" static void AppendStringToManifest(backup_manifest_info *manifest, char *s); diff --git a/src/backend/utils/adt/encode.c b/src/backend/utils/adt/encode.c index a6c65b1657..bca941a496 100644 --- a/src/backend/utils/adt/encode.c +++ b/src/backend/utils/adt/encode.c @@ -15,7 +15,7 @@ #include <ctype.h> -#include "common/hex_decode.h" +#include "common/hex.h" #include "mb/pg_wchar.h" #include "utils/builtins.h" #include "utils/memutils.h" @@ -141,38 +141,6 @@ binary_decode(PG_FUNCTION_ARGS) } -/* - * HEX - */ - -static const char hextbl[] = "0123456789abcdef"; - -uint64 -hex_encode(const char *src, size_t len, char *dst) -{ - const char *end = src + len; - - while (src < end) - { - *dst++ = hextbl[(*src >> 4) & 0xF]; - *dst++ = hextbl[*src & 0xF]; - src++; - } - return (uint64) len * 2; -} - -static uint64 -hex_enc_len(const char *src, size_t srclen) -{ - return (uint64) srclen << 1; -} - -static uint64 -hex_dec_len(const char *src, size_t srclen) -{ - return (uint64) srclen >> 1; -} - /* * BASE64 */ diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 9300d19e0c..79fcdcd178 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -22,7 +22,7 @@ #include "catalog/pg_type.h" #include "common/hashfn.h" #include "common/int.h" -#include "common/hex_decode.h" +#include "common/hex.h" #include "common/unicode_norm.h" #include "lib/hyperloglog.h" #include "libpq/pqformat.h" diff --git a/src/common/Makefile b/src/common/Makefile index f624977939..93eb27a2aa 100644 --- a/src/common/Makefile +++ b/src/common/Makefile @@ -58,7 +58,7 @@ OBJS_COMMON = \ file_perm.o \ file_utils.o \ hashfn.o \ - hex_decode.o \ + hex.o \ ip.o \ jsonapi.o \ keywords.o \ diff --git a/src/common/hex_decode.c b/src/common/hex.c similarity index 79% rename from src/common/hex_decode.c rename to src/common/hex.c index 3ecdc73b5c..97f57bcc32 100644 --- a/src/common/hex_decode.c +++ b/src/common/hex.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * - * hex_decode.c - * hex decoding + * hex.c + * hex processing * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * src/common/hex_decode.c + * src/common/hex.c * *------------------------------------------------------------------------- */ @@ -26,7 +26,7 @@ #else #include "mb/pg_wchar.h" #endif -#include "common/hex_decode.h" +#include "common/hex.h" static const int8 hexlookup[128] = { @@ -40,6 +40,26 @@ static const int8 hexlookup[128] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }; +/* + * HEX + */ + +static const char hextbl[] = "0123456789abcdef"; + +uint64 +hex_encode(const char *src, size_t len, char *dst) +{ + const char *end = src + len; + + while (src < end) + { + *dst++ = hextbl[(*src >> 4) & 0xF]; + *dst++ = hextbl[*src & 0xF]; + src++; + } + return (uint64) len * 2; +} + static inline char get_hex(const char *cp) { @@ -104,3 +124,15 @@ hex_decode(const char *src, size_t len, char *dst) return p - dst; } + +uint64 +hex_enc_len(const char *src, size_t srclen) +{ + return (uint64) srclen << 1; +} + +uint64 +hex_dec_len(const char *src, size_t srclen) +{ + return (uint64) srclen >> 1; +} diff --git a/src/include/common/hex.h b/src/include/common/hex.h new file mode 100644 index 0000000000..76154b65af --- /dev/null +++ b/src/include/common/hex.h @@ -0,0 +1,18 @@ +/* + * hex.h + * hex processing + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/common/hex.h + */ +#ifndef COMMON_HEX_H +#define COMMON_HEX_H + +extern uint64 hex_decode(const char *src, size_t len, char *dst); +extern uint64 hex_encode(const char *src, size_t len, char *dst); +extern uint64 hex_enc_len(const char *src, size_t srclen); +extern uint64 hex_dec_len(const char *src, size_t srclen); + +#endif /* COMMON_HEX_H */ diff --git a/src/include/common/hex_decode.h b/src/include/common/hex_decode.h deleted file mode 100644 index 1f99f069b2..0000000000 --- a/src/include/common/hex_decode.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * hex_decode.h - * hex decoding - * - * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/common/hex_decode.h - */ -#ifndef COMMON_HEX_DECODE_H -#define COMMON_HEX_DECODE_H - -extern uint64 hex_decode(const char *src, size_t len, char *dst); - - -#endif /* COMMON_HEX_DECODE_H */ diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index 19271e0696..11ba6ae565 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -31,9 +31,6 @@ extern void domain_check(Datum value, bool isnull, Oid domainType, extern int errdatatype(Oid datatypeOid); extern int errdomainconstraint(Oid datatypeOid, const char *conname); -/* encode.c */ -extern uint64 hex_encode(const char *src, size_t len, char *dst); - /* int.c */ extern int2vector *buildint2vector(const int16 *int2s, int n); diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 7f014a12c9..60b216cce0 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -121,7 +121,7 @@ sub mkvcbuild our @pgcommonallfiles = qw( archive.c base64.c checksum_helper.c config_info.c controldata_utils.c d2s.c encnames.c exec.c - f2s.c file_perm.c file_utils.c hashfn.c hex_decode.c ip.c jsonapi.c + f2s.c file_perm.c file_utils.c hashfn.c hex.c ip.c jsonapi.c keywords.c kwlookup.c link-canary.c md5_common.c pg_get_line.c pg_lzcompress.c pgfnames.c psprintf.c relpath.c rmtree.c saslprep.c scram-common.c string.c stringinfo.c unicode_norm.c username.c -- 2.20.1