diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 7bba9445abc..9a388f0f3b1 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -313,7 +313,14 @@ errstart(int elevel, const char *filename, int lineno, edata->elevel = elevel; edata->output_to_server = output_to_server; edata->output_to_client = output_to_client; - edata->filename = filename; + if (filename) + { + const char *slash; + + /* keep only base name, useful especially for vpath builds */ + slash = strrchr(filename, '/'); + edata->filename = slash ? slash + 1 : filename; + } edata->lineno = lineno; edata->funcname = funcname; /* Select default errcode based on elevel */ @@ -950,7 +957,14 @@ elog_start(const char *filename, int lineno, const char *funcname) } edata = &errordata[errordata_stack_depth]; - edata->filename = filename; + if (filename) + { + const char *slash; + + /* keep only base name, useful especially for vpath builds */ + slash = strrchr(filename, '/'); + edata->filename = slash ? slash + 1 : filename; + } edata->lineno = lineno; edata->funcname = funcname; /* errno is saved now so that error parameter eval can't change it */