diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2012-11-12 15:10:24 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2012-11-12 17:07:29 +0200 |
commit | dbdf9679d7d61b03a3bf73af9b095831b7010eb5 (patch) | |
tree | 0279dd90603c25774d69bf57870f494b7526405d /src/backend/commands/copy.c | |
parent | c9d44a75d48ed8a9b9275b95be1fadaa562f3826 (diff) | |
download | postgresql-dbdf9679d7d61b03a3bf73af9b095831b7010eb5.tar.gz postgresql-dbdf9679d7d61b03a3bf73af9b095831b7010eb5.zip |
Use correct text domain for translating errcontext() messages.
errcontext() is typically used in an error context callback function, not
within an ereport() invocation like e.g errmsg and errdetail are. That means
that the message domain that the TEXTDOMAIN magic in ereport() determines
is not the right one for the errcontext() calls. The message domain needs to
be determined by the C file containing the errcontext() call, not the file
containing the ereport() call.
Fix by turning errcontext() into a macro that passes the TEXTDOMAIN to use
for the errcontext message. "errcontext" was used in a few places as a
variable or struct field name, I had to rename those out of the way, now
that errcontext is a macro.
We've had this problem all along, but this isn't doesn't seem worth
backporting. It's a fairly minor issue, and turning errcontext from a
function to a macro requires at least a recompile of any external code that
calls errcontext().
Diffstat (limited to 'src/backend/commands/copy.c')
-rw-r--r-- | src/backend/commands/copy.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 0567ab003d4..10c89c79b91 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -1901,7 +1901,7 @@ CopyFrom(CopyState cstate) TupleTableSlot *myslot; MemoryContext oldcontext = CurrentMemoryContext; - ErrorContextCallback errcontext; + ErrorContextCallback errcallback; CommandId mycid = GetCurrentCommandId(true); int hi_options = 0; /* start with default heap_insert options */ BulkInsertState bistate; @@ -2046,10 +2046,10 @@ CopyFrom(CopyState cstate) econtext = GetPerTupleExprContext(estate); /* Set up callback to identify error line number */ - errcontext.callback = CopyFromErrorCallback; - errcontext.arg = (void *) cstate; - errcontext.previous = error_context_stack; - error_context_stack = &errcontext; + errcallback.callback = CopyFromErrorCallback; + errcallback.arg = (void *) cstate; + errcallback.previous = error_context_stack; + error_context_stack = &errcallback; for (;;) { @@ -2164,7 +2164,7 @@ CopyFrom(CopyState cstate) nBufferedTuples, bufferedTuples); /* Done, clean up */ - error_context_stack = errcontext.previous; + error_context_stack = errcallback.previous; FreeBulkInsertState(bistate); |