diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index 20e7662e28..a8e9c5ab50 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -327,10 +327,8 @@ dblink_fetch(PG_FUNCTION_ARGS) tupdesc = TypeGetTupleDesc(functypeid, NIL); else if (functyptype == 'p' && functypeid == RECORDOID) tupdesc = pgresultGetTupleDesc(res); - else if (functyptype == 'b') - elog(ERROR, "dblink_fetch: invalid kind of return type specified for function"); else - elog(ERROR, "dblink_fetch: unknown kind of return type specified for function"); + elog(ERROR, "dblink_fetch: return type must be a row type"); /* store needed metadata for subsequent calls */ slot = TupleDescGetSlot(tupdesc); @@ -506,10 +504,8 @@ dblink_record(PG_FUNCTION_ARGS) tupdesc = TypeGetTupleDesc(functypeid, NIL); else if (functyptype == 'p' && functypeid == RECORDOID) tupdesc = pgresultGetTupleDesc(res); - else if (functyptype == 'b') - elog(ERROR, "Invalid kind of return type specified for function"); else - elog(ERROR, "Unknown kind of return type specified for function"); + elog(ERROR, "dblink: return type must be a row type"); } /* store needed metadata for subsequent calls */ diff --git a/contrib/tablefunc/tablefunc.c b/contrib/tablefunc/tablefunc.c index 984f31dc28..68e001fcdf 100644 --- a/contrib/tablefunc/tablefunc.c +++ b/contrib/tablefunc/tablefunc.c @@ -445,10 +445,8 @@ crosstab(PG_FUNCTION_ARGS) tupdesc = make_crosstab_tupledesc(spi_tupdesc, num_categories); } } - else if (functyptype == 'b') - elog(ERROR, "Invalid kind of return type specified for function"); else - elog(ERROR, "Unknown kind of return type specified for function"); + elog(ERROR, "crosstab: return type must be a row type"); /* * Check that return tupdesc is compatible with the one we got diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c index b6c28675a9..3bd15bd1fb 100644 --- a/src/backend/access/common/tupdesc.c +++ b/src/backend/access/common/tupdesc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.94 2002/11/13 00:39:46 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.95 2003/06/15 17:59:10 tgl Exp $ * * NOTES * some of the executor utility code such as "ExecTypeFromTL" should be @@ -697,7 +697,10 @@ TypeGetTupleDesc(Oid typeoid, List *colaliases) else if (functyptype == 'p' && typeoid == RECORDOID) elog(ERROR, "Unable to determine tuple description for function returning \"record\""); else - elog(ERROR, "Unknown kind of return type specified for function"); + { + /* crummy error message, but parser should have caught this */ + elog(ERROR, "function in FROM has unsupported return type"); + } return tupdesc; } diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index 4c9b2151d6..48b90e56ef 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.96 2003/04/08 23:20:00 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.97 2003/06/15 17:59:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -483,7 +483,8 @@ checkretval(Oid rettype, char fn_typtype, List *queryTreeList) */ } else - elog(ERROR, "Unknown kind of return type specified for function"); + elog(ERROR, "return type %s is not supported for SQL functions", + format_type_be(rettype)); } diff --git a/src/backend/executor/nodeFunctionscan.c b/src/backend/executor/nodeFunctionscan.c index cb30717893..282993ee4e 100644 --- a/src/backend/executor/nodeFunctionscan.c +++ b/src/backend/executor/nodeFunctionscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeFunctionscan.c,v 1.17 2003/01/12 22:01:38 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeFunctionscan.c,v 1.18 2003/06/15 17:59:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -231,7 +231,10 @@ ExecInitFunctionScan(FunctionScan *node, EState *estate) tupdesc = BuildDescForRelation(rte->coldeflist); } else - elog(ERROR, "Unknown kind of return type specified for function"); + { + /* crummy error message, but parser should have caught this */ + elog(ERROR, "function in FROM has unsupported return type"); + } scanstate->tupdesc = tupdesc; ExecSetSlotDescriptor(scanstate->ss.ss_ScanTupleSlot, diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index 59a362726d..6ab9935630 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.82 2003/06/11 22:13:22 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.83 2003/06/15 17:59:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -992,7 +992,7 @@ addRangeTableEntryForFunction(ParseState *pstate, } } else - elog(ERROR, "Unknown kind of return type specified for function %s", + elog(ERROR, "function %s() in FROM has unsupported return type", funcname); /*---------- @@ -1382,7 +1382,7 @@ expandRTE(ParseState *pstate, RangeTblEntry *rte, } } else - elog(ERROR, "Unknown kind of return type specified for function"); + elog(ERROR, "function in FROM has unsupported return type"); } break; case RTE_JOIN: @@ -1636,7 +1636,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum, *vartypmod = -1; } else - elog(ERROR, "Unknown kind of return type specified for function"); + elog(ERROR, "function in FROM has unsupported return type"); } break; case RTE_JOIN: