From: Tomas Vondra Date: Fri, 7 May 2021 11:56:32 +0000 (+0200) Subject: Make pg_get_statisticsobjdef_expressions return NULL X-Git-Tag: REL_14_BETA1~72 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8d4b311d2494ca592e30aed03b29854d864eb846;p=thirdparty%2Fpostgresql.git Make pg_get_statisticsobjdef_expressions return NULL The usual behavior for functions in ruleutils.c is to return NULL when the object does not exist. pg_get_statisticsobjdef_expressions raised an error instead, so correct that. Reported-by: Justin Pryzby Discussion: https://postgr.es/m/20210505210947.GA27406%40telsasoft.com --- diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 0a4fa93d016..881e8ec03d2 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -1759,9 +1759,9 @@ pg_get_statisticsobjdef_expressions(PG_FUNCTION_ARGS) statexttup = SearchSysCache1(STATEXTOID, ObjectIdGetDatum(statextid)); if (!HeapTupleIsValid(statexttup)) - elog(ERROR, "cache lookup failed for statistics object %u", statextid); + PG_RETURN_NULL(); - /* has the statistics expressions? */ + /* Does the stats object have expressions? */ has_exprs = !heap_attisnull(statexttup, Anum_pg_statistic_ext_stxexprs, NULL); /* no expressions? we're done */