From a0f4b18303ca76490f028a937f8feeda4cc57737 Mon Sep 17 00:00:00 2001 From: jian he Date: Fri, 15 Aug 2025 23:47:20 +0800 Subject: [PATCH v1 1/1] minor change in datum_to_jsonb_internal based on v1-0003-Micro-optimize-datatype-conversions-in-datum_to_j.patch --- src/backend/utils/adt/jsonb.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c index cd911a98b98..b00a849d65b 100644 --- a/src/backend/utils/adt/jsonb.c +++ b/src/backend/utils/adt/jsonb.c @@ -641,7 +641,7 @@ datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, bool key_scalar) { char *outputstr; - Numeric numeric_val; + Numeric numeric_val = NULL; bool numeric_to_string; JsonbValue jb; bool scalar_jsonb = false; @@ -669,6 +669,9 @@ datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, { switch (tcategory) { + case JSONTYPE_NULL: + Assert(false); + break; case JSONTYPE_ARRAY: array_to_jsonb_internal(val, result); break; @@ -694,7 +697,6 @@ datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, { /* always stringify keys */ numeric_to_string = true; - numeric_val = NULL; /* pacify stupider compilers */ } else { @@ -837,7 +839,7 @@ datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, } } break; - default: + case JSONTYPE_OTHER: /* special-case text types to save useless palloc/memcpy ops */ if (outfuncoid == F_TEXTOUT || outfuncoid == F_VARCHAROUT || @@ -857,6 +859,9 @@ datum_to_jsonb_internal(Datum val, bool is_null, JsonbInState *result, jb.type = jbvString; (void) checkStringLen(jb.val.string.len, NULL); break; + default : + elog(ERROR, "unknown JsonTypeCategory %d", (int) tcategory); + break; } } -- 2.34.1