StringInfoData buf;
        HeapTuple       proctup;
 
-       initStringInfo(&buf);
-
        proctup = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
        if (!HeapTupleIsValid(proctup))
-               elog(ERROR, "cache lookup failed for function %u", funcid);
+               PG_RETURN_NULL();
+
+       initStringInfo(&buf);
 
        (void) print_function_arguments(&buf, proctup, false, true);
 
        StringInfoData buf;
        HeapTuple       proctup;
 
-       initStringInfo(&buf);
-
        proctup = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
        if (!HeapTupleIsValid(proctup))
-               elog(ERROR, "cache lookup failed for function %u", funcid);
+               PG_RETURN_NULL();
+
+       initStringInfo(&buf);
 
        (void) print_function_arguments(&buf, proctup, false, false);
 
        StringInfoData buf;
        HeapTuple       proctup;
 
-       initStringInfo(&buf);
-
        proctup = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
        if (!HeapTupleIsValid(proctup))
-               elog(ERROR, "cache lookup failed for function %u", funcid);
+               PG_RETURN_NULL();
+
+       initStringInfo(&buf);
 
        print_function_rettype(&buf, proctup);
 
 
        proctup = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
        if (!HeapTupleIsValid(proctup))
-               elog(ERROR, "cache lookup failed for function %u", funcid);
+               PG_RETURN_NULL();
 
        numargs = get_func_arg_info(proctup, &argtypes, &argnames, &argmodes);
        if (nth_arg < 1 || nth_arg > numargs || !is_input_argument(nth_arg - 1, argmodes))
 
  
 (1 row)
 
+SELECT pg_get_function_arguments(0);
+ pg_get_function_arguments 
+---------------------------
+ 
+(1 row)
+
+SELECT pg_get_function_identity_arguments(0);
+ pg_get_function_identity_arguments 
+------------------------------------
+ 
+(1 row)
+
+SELECT pg_get_function_result(0);
+ pg_get_function_result 
+------------------------
+ 
+(1 row)
+
+SELECT pg_get_function_arg_default(0, 0);
+ pg_get_function_arg_default 
+-----------------------------
+ 
+(1 row)
+
+SELECT pg_get_function_arg_default('pg_class'::regclass, 0);
+ pg_get_function_arg_default 
+-----------------------------
+ 
+(1 row)
+
 
 SELECT pg_get_ruledef(0);
 SELECT pg_get_triggerdef(0);
 SELECT pg_get_viewdef(0);
+SELECT pg_get_function_arguments(0);
+SELECT pg_get_function_identity_arguments(0);
+SELECT pg_get_function_result(0);
+SELECT pg_get_function_arg_default(0, 0);
+SELECT pg_get_function_arg_default('pg_class'::regclass, 0);