summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/clauses.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/util/clauses.c')
-rw-r--r--src/backend/optimizer/util/clauses.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index 3268ec89799..6390544d9fe 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -2668,6 +2668,10 @@ evaluate_function(Oid funcid, Oid result_type, List *args,
* We must also beware of changing the volatility or strictness status of
* functions by inlining them.
*
+ * Also, at the moment we can't inline functions returning RECORD. This
+ * doesn't work in the general case because it discards information such
+ * as OUT-parameter declarations.
+ *
* Returns a simplified expression if successful, or NULL if cannot
* simplify the function.
*/
@@ -2699,6 +2703,7 @@ inline_function(Oid funcid, Oid result_type, List *args,
if (funcform->prolang != SQLlanguageId ||
funcform->prosecdef ||
funcform->proretset ||
+ funcform->prorettype == RECORDOID ||
funcform->pronargs != list_length(args))
return NULL;