1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-18 17:42:25 +03:00

Error message editing in backend/access.

This commit is contained in:
Tom Lane
2003-07-21 20:29:40 +00:00
parent c6106d91e2
commit ec7aa4b515
33 changed files with 702 additions and 533 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.148 2003/05/14 03:26:00 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.149 2003/07/21 20:29:39 tgl Exp $
*
* NOTES
* Transaction aborts can now occur two ways:
@ -400,7 +400,9 @@ CommandCounterIncrement(void)
s->commandId += 1;
if (s->commandId == FirstCommandId) /* check for overflow */
elog(ERROR, "You may only have 2^32-1 commands per transaction");
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("cannot have more than 2^32-1 commands in a transaction")));
/* Propagate new command ID into query snapshots, if set */
if (QuerySnapshot)
@ -672,8 +674,7 @@ RecordTransactionAbort(void)
* RecordTransactionCommit ...
*/
if (TransactionIdDidCommit(xid))
elog(PANIC, "RecordTransactionAbort: xact %u already committed",
xid);
elog(PANIC, "cannot abort transaction %u, it was already committed", xid);
START_CRIT_SECTION();
@ -1367,23 +1368,24 @@ PreventTransactionChain(void *stmtNode, const char *stmtType)
* xact block already started?
*/
if (IsTransactionBlock())
{
/* translator: %s represents an SQL statement name */
elog(ERROR, "%s cannot run inside a transaction block", stmtType);
}
ereport(ERROR,
(errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
/* translator: %s represents an SQL statement name */
errmsg("%s cannot run inside a transaction block",
stmtType)));
/*
* Are we inside a function call? If the statement's parameter block
* was allocated in QueryContext, assume it is an interactive command.
* Otherwise assume it is coming from a function.
*/
if (!MemoryContextContains(QueryContext, stmtNode))
{
/* translator: %s represents an SQL statement name */
elog(ERROR, "%s cannot be executed from a function", stmtType);
}
ereport(ERROR,
(errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
/* translator: %s represents an SQL statement name */
errmsg("%s cannot be executed from a function", stmtType)));
/* If we got past IsTransactionBlock test, should be in default state */
if (CurrentTransactionState->blockState != TBLOCK_DEFAULT)
elog(ERROR, "PreventTransactionChain: can't prevent chain");
elog(ERROR, "cannot prevent transaction chain");
/* all okay */
}
@ -1419,9 +1421,11 @@ RequireTransactionChain(void *stmtNode, const char *stmtType)
*/
if (!MemoryContextContains(QueryContext, stmtNode))
return;
/* translator: %s represents an SQL statement name */
elog(ERROR, "%s may only be used in begin/end transaction blocks",
stmtType);
ereport(ERROR,
(errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
/* translator: %s represents an SQL statement name */
errmsg("%s may only be used in BEGIN/END transaction blocks",
stmtType)));
}
@ -1441,7 +1445,9 @@ BeginTransactionBlock(void)
* check the current transaction state
*/
if (s->blockState != TBLOCK_DEFAULT)
elog(WARNING, "BEGIN: already a transaction in progress");
ereport(WARNING,
(errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
errmsg("there is already a transaction in progress")));
/*
* set the current transaction block state information appropriately
@ -1501,7 +1507,9 @@ EndTransactionBlock(void)
* CommitTransactionCommand() will then put us back into the default
* state.
*/
elog(WARNING, "COMMIT: no transaction in progress");
ereport(WARNING,
(errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
errmsg("there is no transaction in progress")));
AbortTransaction();
s->blockState = TBLOCK_ENDABORT;
}
@ -1537,7 +1545,9 @@ AbortTransactionBlock(void)
* CommitTransactionCommand() will then put us back into the default
* state.
*/
elog(WARNING, "ROLLBACK: no transaction in progress");
ereport(WARNING,
(errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
errmsg("there is no transaction in progress")));
AbortTransaction();
s->blockState = TBLOCK_ENDABORT;
}
@ -1583,7 +1593,9 @@ UserAbortTransactionBlock(void)
* CommitTransactionCommand() will then put us back into the default
* state.
*/
elog(WARNING, "ROLLBACK: no transaction in progress");
ereport(WARNING,
(errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
errmsg("there is no transaction in progress")));
AbortTransaction();
s->blockState = TBLOCK_ENDABORT;
}
@ -1663,7 +1675,8 @@ TransactionBlockStatusCode(void)
}
/* should never get here */
elog(ERROR, "bogus transaction block state");
elog(ERROR, "invalid transaction block state: %d",
(int) s->blockState);
return 0; /* keep compiler quiet */
}