diff options
| author | Heikki Linnakangas | 2012-01-31 08:34:50 +0000 |
|---|---|---|
| committer | Heikki Linnakangas | 2012-01-31 08:36:20 +0000 |
| commit | 4c6cedd1b014abf2046886a9a92e10e18f0d658e (patch) | |
| tree | e63fef53e18698973acd1eb106980b15718fd888 /src/pl | |
| parent | 82d4b262d9614958da38003cdc9d56915d9bcda0 (diff) | |
Print function signature, not just name, in PL/pgSQL error messages.
This makes it unambiguous which function the message is coming from, if you
have overloaded functions.
Pavel Stehule, reviewed by Abhijit Menon-Sen.
Diffstat (limited to 'src/pl')
| -rw-r--r-- | src/pl/plpgsql/src/pl_comp.c | 2 | ||||
| -rw-r--r-- | src/pl/plpgsql/src/pl_exec.c | 8 | ||||
| -rw-r--r-- | src/pl/plpgsql/src/plpgsql.h | 1 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index 6ba1e5ebb3..56b6d49d61 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -342,6 +342,7 @@ do_compile(FunctionCallInfo fcinfo, compile_tmp_cxt = MemoryContextSwitchTo(func_cxt); function->fn_name = pstrdup(NameStr(procStruct->proname)); + function->fn_signature = format_procedure(fcinfo->flinfo->fn_oid); function->fn_oid = fcinfo->flinfo->fn_oid; function->fn_xmin = HeapTupleHeaderGetXmin(procTup->t_data); function->fn_tid = procTup->t_self; @@ -803,6 +804,7 @@ plpgsql_compile_inline(char *proc_source) compile_tmp_cxt = MemoryContextSwitchTo(func_cxt); function->fn_name = pstrdup(func_name); + function->fn_signature = pstrdup(func_name); function->fn_is_trigger = false; function->fn_input_collation = InvalidOid; function->fn_cxt = func_cxt; diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 5ce8d6eff8..57e337ee72 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -799,7 +799,7 @@ plpgsql_exec_error_callback(void *arg) * local variable initialization" */ errcontext("PL/pgSQL function \"%s\" line %d %s", - estate->func->fn_name, + estate->func->fn_signature, estate->err_stmt->lineno, _(estate->err_text)); } @@ -810,7 +810,7 @@ plpgsql_exec_error_callback(void *arg) * arguments into local variables" */ errcontext("PL/pgSQL function \"%s\" %s", - estate->func->fn_name, + estate->func->fn_signature, _(estate->err_text)); } } @@ -818,13 +818,13 @@ plpgsql_exec_error_callback(void *arg) { /* translator: last %s is a plpgsql statement type name */ errcontext("PL/pgSQL function \"%s\" line %d at %s", - estate->func->fn_name, + estate->func->fn_signature, estate->err_stmt->lineno, plpgsql_stmt_typename(estate->err_stmt)); } else errcontext("PL/pgSQL function \"%s\"", - estate->func->fn_name); + estate->func->fn_signature); } diff --git a/src/pl/plpgsql/src/plpgsql.h b/src/pl/plpgsql/src/plpgsql.h index 0aef8dca2e..739b9e48db 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -679,6 +679,7 @@ typedef struct PLpgSQL_func_hashkey typedef struct PLpgSQL_function { /* Complete compiled function */ char *fn_name; + char *fn_signature; Oid fn_oid; TransactionId fn_xmin; ItemPointerData fn_tid; |
