From dd6513a5b662e0a3e0de378f616741b7d77f3d32 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 6 Aug 2002 05:33:29 +0000 Subject: [PATCH] The attached patch disallows the use of coldeflists for functions that don't return type RECORD. It also catches a core dump condition when a function returning RECORD had an alias list instead of a coldeflist. Now both conditions throw an ERROR. Joe Conway --- src/backend/parser/parse_relation.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index 872c03ca9f..6732dc54b5 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.73 2002/08/05 02:30:50 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.74 2002/08/06 05:33:29 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -729,6 +729,27 @@ addRangeTableEntryForFunction(ParseState *pstate, */ functyptype = get_typtype(funcrettype); + if (coldeflist != NIL) + { + /* + * we *only* allow a coldeflist for functions returning a + * RECORD pseudo-type + */ + if (functyptype != 'p' || (functyptype == 'p' && funcrettype != RECORDOID)) + elog(ERROR, "A column definition list is only allowed for" + " functions returning RECORD"); + } + else + { + /* + * ... and a coldeflist is *required* for functions returning a + * RECORD pseudo-type + */ + if (functyptype == 'p' && funcrettype == RECORDOID) + elog(ERROR, "A column definition list is required for functions" + " returning RECORD"); + } + if (functyptype == 'c') { /* -- 2.11.0