aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/adt/ruleutils.c31
-rw-r--r--src/backend/utils/fmgr/fmgr.c10
2 files changed, 13 insertions, 28 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index dc4a6cc4a8f..c7f896c524a 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.276 2008/07/16 01:30:22 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.277 2008/07/16 16:55:23 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -5389,29 +5389,12 @@ generate_function_name(Oid funcid, int nargs, Oid *argtypes,
/* Check variadic-ness if caller cares */
if (is_variadic)
{
- /* XXX change this if we simplify code in FuncnameGetCandidates */
- Datum proargmodes;
- bool isnull;
-
- *is_variadic = false;
-
- proargmodes = SysCacheGetAttr(PROCOID, proctup,
- Anum_pg_proc_proargmodes, &isnull);
- if (!isnull)
- {
- ArrayType *ar = DatumGetArrayTypeP(proargmodes);
- char *argmodes;
- int j;
-
- argmodes = ARR_DATA_PTR(ar);
- j = ARR_DIMS(ar)[0] - 1;
- if (j >= 0 && argmodes[j] == PROARGMODE_VARIADIC)
- {
- /* "any" variadics are not treated as variadics for listing */
- if (procform->proargtypes.values[j] != ANYOID)
- *is_variadic = true;
- }
- }
+ /* "any" variadics are not treated as variadics for listing */
+ if (OidIsValid(procform->provariadic) &&
+ procform->provariadic != ANYOID)
+ *is_variadic = true;
+ else
+ *is_variadic = false;
}
ReleaseSysCache(proctup);
diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c
index b0553b026b8..cd23bae0779 100644
--- a/src/backend/utils/fmgr/fmgr.c
+++ b/src/backend/utils/fmgr/fmgr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.120 2008/06/06 22:35:22 alvherre Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.121 2008/07/16 16:55:23 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -324,18 +324,20 @@ fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple)
void *libraryhandle;
/*
- * Get prosrc and probin strings (link symbol and library filename)
+ * Get prosrc and probin strings (link symbol and library filename).
+ * While in general these columns might be null, that's not allowed
+ * for C-language functions.
*/
prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple,
Anum_pg_proc_prosrc, &isnull);
if (isnull)
- elog(ERROR, "null prosrc for function %u", functionId);
+ elog(ERROR, "null prosrc for C function %u", functionId);
prosrcstring = TextDatumGetCString(prosrcattr);
probinattr = SysCacheGetAttr(PROCOID, procedureTuple,
Anum_pg_proc_probin, &isnull);
if (isnull)
- elog(ERROR, "null probin for function %u", functionId);
+ elog(ERROR, "null probin for C function %u", functionId);
probinstring = TextDatumGetCString(probinattr);
/* Look up the function itself */