diff options
author | Nathan Bossart <nathan@postgresql.org> | 2025-03-13 11:20:53 -0500 |
---|---|---|
committer | Nathan Bossart <nathan@postgresql.org> | 2025-03-13 11:20:53 -0500 |
commit | 0697b23906adabccba41fa7bf19909eb98bdf0dd (patch) | |
tree | 5e28e71b6fced7c1b4fc6a9fc2cf33b68923f1e9 /src/backend/utils/adt/varlena.c | |
parent | bb25276205b45b60b5a1ddb7db3b66f501a02164 (diff) | |
download | postgresql-0697b23906adabccba41fa7bf19909eb98bdf0dd.tar.gz postgresql-0697b23906adabccba41fa7bf19909eb98bdf0dd.zip |
Add reverse(bytea).
This commit introduces a function for reversing the order of the
bytes in binary strings.
Bumps catversion.
Author: Aleksander Alekseev <aleksander@timescale.com>
Discussion: https://postgr.es/m/CAJ7c6TMe0QVRuNssUArbMi0bJJK32%2BzNA3at5m3osrBQ25MHuw%40mail.gmail.com
Diffstat (limited to 'src/backend/utils/adt/varlena.c')
-rw-r--r-- | src/backend/utils/adt/varlena.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index cdf185ea00b..95631eb2099 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -3398,6 +3398,27 @@ byteaSetBit(PG_FUNCTION_ARGS) PG_RETURN_BYTEA_P(res); } +/* + * Return reversed bytea + */ +Datum +bytea_reverse(PG_FUNCTION_ARGS) +{ + bytea *v = PG_GETARG_BYTEA_PP(0); + const char *p = VARDATA_ANY(v); + int len = VARSIZE_ANY_EXHDR(v); + const char *endp = p + len; + bytea *result = palloc(len + VARHDRSZ); + char *dst = (char *) VARDATA(result) + len; + + SET_VARSIZE(result, len + VARHDRSZ); + + while (p < endp) + *(--dst) = *p++; + + PG_RETURN_BYTEA_P(result); +} + /* text_name() * Converts a text type to a Name type. |