diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 86d8a09062..2b0a5ff81a 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -9477,18 +9477,21 @@ dumpCast(Archive *fout, CastInfo *cast) appendPQExpBuffer(defqry, "WITH INOUT"); break; case COERCION_METHOD_FUNCTION: - { - char *fsig = format_function_signature(fout, funcInfo, true); + if (funcInfo) + { + char *fsig = format_function_signature(fout, funcInfo, true); - /* - * Always qualify the function name, in case it is not in - * pg_catalog schema (format_function_signature won't qualify it). - */ - appendPQExpBuffer(defqry, "WITH FUNCTION %s.%s", - fmtId(funcInfo->dobj.namespace->dobj.name), fsig); - free(fsig); + /* + * Always qualify the function name, in case it is not in + * pg_catalog schema (format_function_signature won't qualify it). + */ + appendPQExpBuffer(defqry, "WITH FUNCTION %s.%s", + fmtId(funcInfo->dobj.namespace->dobj.name), fsig); + free(fsig); + } + else + write_msg(NULL, "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n"); break; - } default: write_msg(NULL, "WARNING: bogus value in pg_cast.castmethod field\n"); }