From 9fca6812d193e35ca184a8a6cc44388f09ba59b2 Mon Sep 17 00:00:00 2001 From: Shihao Date: Fri, 18 Sep 2026 23:25:43 -0400 Subject: [PATCH v1 1/2] Fix PASSING of toasted text values in JSON query functions --- src/backend/utils/adt/jsonpath_exec.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/backend/utils/adt/jsonpath_exec.c b/src/backend/utils/adt/jsonpath_exec.c index 18021d60af1..50a3c4f4b4d 100644 --- a/src/backend/utils/adt/jsonpath_exec.c +++ b/src/backend/utils/adt/jsonpath_exec.c @@ -3346,10 +3346,15 @@ JsonItemFromDatum(Datum val, Oid typid, int32 typmod, JsonbValue *res) break; case TEXTOID: case VARCHAROID: - res->type = jbvString; - res->val.string.val = VARDATA_ANY(DatumGetPointer(val)); - res->val.string.len = VARSIZE_ANY_EXHDR(DatumGetPointer(val)); - break; + { + /* The value may be toasted, so be sure to detoast it */ + text *txt = DatumGetTextPP(val); + + res->type = jbvString; + res->val.string.val = VARDATA_ANY(txt); + res->val.string.len = VARSIZE_ANY_EXHDR(txt); + break; + } case DATEOID: case TIMEOID: case TIMETZOID: -- 2.37.1 (Apple Git-137.1)