mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
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
This commit is contained in:
parent
7b30ed8fa4
commit
dd6513a5b6
@ -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')
|
||||
{
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user