From 9f8bafb25a5543adf09adb02a7d6f25dcca942ca Mon Sep 17 00:00:00 2001 From: Atish Prakash <125atishprak@gmail.com> Date: Sun, 8 Nov 2026 23:44:42 -0500 Subject: [PATCH 1/2] Store empty stavalues for expression statistics, as ANALYZE does Since 261f89a976b a slot can have no values. The planner rejects the NULL we stored then. Co-authored-by: Shihao Zhong Discussion: https://postgr.es/m/19849-38b8bd2fea807154@postgresql.org --- src/backend/statistics/extended_stats.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/backend/statistics/extended_stats.c b/src/backend/statistics/extended_stats.c index b66a49a6fb5..8537bc1cde2 100644 --- a/src/backend/statistics/extended_stats.c +++ b/src/backend/statistics/extended_stats.c @@ -2405,10 +2405,9 @@ serialize_expr_stats(AnlExprData *exprdata, int nexprs) i = Anum_pg_statistic_stanumbers1 - 1; for (k = 0; k < STATISTIC_NUM_SLOTS; k++) { - int nnum = stats->numnumbers[k]; - - if (nnum > 0) + if (stats->stanumbers[k] != NULL) { + int nnum = stats->numnumbers[k]; int n; Datum *numdatums = palloc_array(Datum, nnum); ArrayType *arry; @@ -2427,7 +2426,7 @@ serialize_expr_stats(AnlExprData *exprdata, int nexprs) i = Anum_pg_statistic_stavalues1 - 1; for (k = 0; k < STATISTIC_NUM_SLOTS; k++) { - if (stats->numvalues[k] > 0) + if (stats->stavalues[k] != NULL) { ArrayType *arry; -- 2.37.1 (Apple Git-137.1)