From 670d394a932f72d0ef3877c0c7e2fe5eb80b24d9 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 14 Apr 2005 21:44:35 +0000 Subject: [PATCH] Don't try to constant-fold functions returning RECORD, since the optimizer isn't presently set up to pass them an expected tuple descriptor. Bug has been there since 7.3 but was just recently reported by Thomas Hallgren. --- src/backend/optimizer/util/clauses.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index ccd0fe7392..1cf0b6b89c 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -1667,6 +1667,13 @@ evaluate_function(Oid funcid, Oid result_type, List *args, if (funcform->proretset) return NULL; + /* + * Can't simplify if it returns RECORD, since it will be needing an + * expected tupdesc which we can't supply here. + */ + if (funcform->prorettype == RECORDOID) + return NULL; + /* * Check for constant inputs and especially constant-NULL inputs. */ -- 2.39.5