1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-27 23:21:58 +03:00

Fix a number of places that produced XX000 errors in the regression tests.

It's against project policy to use elog() for user-facing errors, or to
omit an errcode() selection for errors that aren't supposed to be "can't
happen" cases.  Fix all the violations of this policy that result in
ERRCODE_INTERNAL_ERROR log entries during the standard regression tests,
as errors that can reliably be triggered from SQL surely should be
considered user-facing.

I also looked through all the files touched by this commit and fixed
other nearby problems of the same ilk.  I do not claim to have fixed
all violations of the policy, just the ones in these files.

In a few places I also changed existing ERRCODE choices that didn't
seem particularly appropriate; mainly replacing ERRCODE_SYNTAX_ERROR
by something more specific.

Back-patch to 9.5, but no further; changing ERRCODE assignments in
stable branches doesn't seem like a good idea.
This commit is contained in:
Tom Lane
2015-08-02 23:49:19 -04:00
parent 690ed2b76a
commit 09cecdf285
13 changed files with 181 additions and 93 deletions

View File

@ -2801,7 +2801,9 @@ l1:
if (result == HeapTupleInvisible)
{
UnlockReleaseBuffer(buffer);
elog(ERROR, "attempted to delete invisible tuple");
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("attempted to delete invisible tuple")));
}
else if (result == HeapTupleBeingUpdated && wait)
{
@ -3343,7 +3345,9 @@ l2:
if (result == HeapTupleInvisible)
{
UnlockReleaseBuffer(buffer);
elog(ERROR, "attempted to update invisible tuple");
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("attempted to update invisible tuple")));
}
else if (result == HeapTupleBeingUpdated && wait)
{