mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03: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:
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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);
|
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')
|
if (functyptype == 'c')
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user