mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-02-02 10:00:38 +01:00
cleaning up
This commit is contained in:
parent
a9fac72f12
commit
5ae485f0b5
@ -24,7 +24,7 @@
|
|||||||
//
|
//
|
||||||
//____________________________________________________________
|
//____________________________________________________________
|
||||||
//
|
//
|
||||||
// $Id: alice.cpp,v 1.9 2001-12-28 05:14:41 tamlin Exp $
|
// $Id: alice.cpp,v 1.10 2001-12-29 11:41:21 tamlin Exp $
|
||||||
//
|
//
|
||||||
// 2001.07.06 Sean Leyne - Code Cleanup, removed "#ifdef READONLY_DATABASE"
|
// 2001.07.06 Sean Leyne - Code Cleanup, removed "#ifdef READONLY_DATABASE"
|
||||||
// conditionals, as the engine now fully supports
|
// conditionals, as the engine now fully supports
|
||||||
@ -90,7 +90,7 @@ struct tgbl *gdgbl;
|
|||||||
#define ALICE_MSG_FAC 3
|
#define ALICE_MSG_FAC 3
|
||||||
|
|
||||||
#define EXIT(code) { tdgbl->exit_code = (code); \
|
#define EXIT(code) { tdgbl->exit_code = (code); \
|
||||||
Firebird::status_longjmp_error::raise(1); }
|
Firebird::status_exception::raise(1); }
|
||||||
|
|
||||||
#if defined (WIN95) && !defined (GUI_TOOLS)
|
#if defined (WIN95) && !defined (GUI_TOOLS)
|
||||||
static bool fAnsiCP = false;
|
static bool fAnsiCP = false;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
*
|
*
|
||||||
*____________________________________________________________
|
*____________________________________________________________
|
||||||
*
|
*
|
||||||
* $Id: alice_meta.epp,v 1.3 2001-12-24 02:50:47 tamlin Exp $
|
* $Id: alice_meta.epp,v 1.4 2001-12-29 11:41:21 tamlin Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "firebird.h"
|
#include "firebird.h"
|
||||||
@ -91,13 +91,11 @@ static struct rfr_tab_t rfr_table[] = {
|
|||||||
#ifdef GUI_TOOLS
|
#ifdef GUI_TOOLS
|
||||||
#define RETURN_ERROR(user_status) \
|
#define RETURN_ERROR(user_status) \
|
||||||
{ memcpy (user_status, gds_status, sizeof (gds_status)); \
|
{ memcpy (user_status, gds_status, sizeof (gds_status)); \
|
||||||
Firebird::status_longjmp_error::raise(0); }
|
Firebird::status_exception::raise(0); }
|
||||||
// LONGJMP ((JMP_BUF)tdgbl->alice_env, 1); }
|
|
||||||
#else
|
#else
|
||||||
#define RETURN_ERROR(user_status) \
|
#define RETURN_ERROR(user_status) \
|
||||||
{ ALICE_print_status (gds_status); \
|
{ ALICE_print_status (gds_status); \
|
||||||
Firebird::status_longjmp_error::raise(0); }
|
Firebird::status_exception::raise(0); }
|
||||||
// LONGJMP ((JMP_BUF)tdgbl->alice_env, 1); }
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -865,7 +865,7 @@ extern struct tgbl *gdgbl;
|
|||||||
// I had funnies with this cast
|
// I had funnies with this cast
|
||||||
#define EXIT(code) { tdgbl->exit_code = ((volatile int)code); \
|
#define EXIT(code) { tdgbl->exit_code = ((volatile int)code); \
|
||||||
if (tdgbl->burp_env != NULL) \
|
if (tdgbl->burp_env != NULL) \
|
||||||
Firebird::status_longjmp_error::raise(1); }
|
Firebird::status_exception::raise(1); }
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#error Dont do this, it hurts!
|
#error Dont do this, it hurts!
|
||||||
|
@ -61,12 +61,12 @@
|
|||||||
//
|
//
|
||||||
// This is a debug option ONLY and SHOULD NEVER be enabled in a production build
|
// This is a debug option ONLY and SHOULD NEVER be enabled in a production build
|
||||||
// because of its significant performance penality.
|
// because of its significant performance penality.
|
||||||
static const bool ENABLE_FREQUENT_VERIFICATION = true;
|
static const bool ENABLE_FREQUENT_VERIFICATION = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// These next variables control the Red Zone debugging offered by the memory pool
|
// These next variables control the Red Zone debugging offered by the memory pool
|
||||||
static const bool ENABLE_RED_ZONES = true; // set to false to disable the red zones
|
static const bool ENABLE_RED_ZONES = false; // set to false to disable the red zones
|
||||||
static const int RED_ZONE_FILL = 0xFD;
|
static const int RED_ZONE_FILL = 0xFD;
|
||||||
static const int BEFORE_RED_ZONE_SIZE = 3; // The size of the red zone BEFORE the memory,
|
static const int BEFORE_RED_ZONE_SIZE = 3; // The size of the red zone BEFORE the memory,
|
||||||
// in ALLOCATION UNITS! Does NOT need to be set to
|
// in ALLOCATION UNITS! Does NOT need to be set to
|
||||||
@ -308,7 +308,7 @@ extern "C" {
|
|||||||
static void ERR_bugcheck(int number)
|
static void ERR_bugcheck(int number)
|
||||||
{
|
{
|
||||||
// What to do?
|
// What to do?
|
||||||
Firebird::status_longjmp_error::raise(number);
|
Firebird::status_exception::raise(number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -320,7 +320,7 @@ static void ERR_bugcheck(int number)
|
|||||||
|
|
||||||
static void private_ERR_bugcheck(int number)
|
static void private_ERR_bugcheck(int number)
|
||||||
{
|
{
|
||||||
Firebird::status_longjmp_error::raise(number);
|
Firebird::status_exception::raise(number);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TMN: FIXFIX
|
// TMN: FIXFIX
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
* Contributor(s): ______________________________________.
|
* Contributor(s): ______________________________________.
|
||||||
*
|
*
|
||||||
* $Id: ddl.cpp,v 1.5 2001-12-24 02:50:48 tamlin Exp $
|
* $Id: ddl.cpp,v 1.6 2001-12-29 11:41:22 tamlin Exp $
|
||||||
* 2001.5.20 Claudio Valderrama: Stop null pointer that leads to a crash,
|
* 2001.5.20 Claudio Valderrama: Stop null pointer that leads to a crash,
|
||||||
* caused by incomplete yacc syntax that allows ALTER DOMAIN dom SET;
|
* caused by incomplete yacc syntax that allows ALTER DOMAIN dom SET;
|
||||||
*
|
*
|
||||||
@ -255,7 +255,7 @@ void DDL_execute(REQ request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s) {
|
if (s) {
|
||||||
Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]);
|
Firebird::status_exception::raise(tdsql->tsql_status[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4708,7 +4708,7 @@ static void modify_relation( REQ request)
|
|||||||
METD_drop_relation(request, relation_name);
|
METD_drop_relation(request, relation_name);
|
||||||
request->req_relation = 0;
|
request->req_relation = 0;
|
||||||
tdsql->tsql_setjmp = old_env;
|
tdsql->tsql_setjmp = old_env;
|
||||||
Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]);
|
Firebird::status_exception::raise(tdsql->tsql_status[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
* December 2001 Mike Nordell: Major overhaul to (try to) make it C++
|
* December 2001 Mike Nordell: Major overhaul to (try to) make it C++
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
$Id: dsql.cpp,v 1.7 2001-12-24 02:50:48 tamlin Exp $
|
$Id: dsql.cpp,v 1.8 2001-12-29 11:41:22 tamlin Exp $
|
||||||
*/
|
*/
|
||||||
/**************************************************************
|
/**************************************************************
|
||||||
V4 Multi-threading changes.
|
V4 Multi-threading changes.
|
||||||
@ -3944,7 +3944,7 @@ static void punt(void)
|
|||||||
|
|
||||||
tdsql = GET_THREAD_DATA;
|
tdsql = GET_THREAD_DATA;
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]);
|
Firebird::status_exception::raise(tdsql->tsql_status[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ void ERRD_error( int code, const char* text)
|
|||||||
sprintf(s, "** DSQL error: %s **\n", text);
|
sprintf(s, "** DSQL error: %s **\n", text);
|
||||||
TRACE(s);
|
TRACE(s);
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(code);
|
Firebird::status_exception::raise(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ BOOLEAN ERRD_post_warning(STATUS status, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ERRD_post( STATUS status, ...)
|
void ERRD_post(STATUS status, ...)
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
*
|
*
|
||||||
@ -222,15 +222,17 @@ void ERRD_post( STATUS status, ...)
|
|||||||
*
|
*
|
||||||
* Functional description
|
* Functional description
|
||||||
* Post an error, copying any potentially
|
* Post an error, copying any potentially
|
||||||
* transient data before we do the longjmp.
|
* transient data before we punt.
|
||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
STATUS *status_vector;
|
|
||||||
STATUS tmp_status[ISC_STATUS_LENGTH], warning_status[ISC_STATUS_LENGTH];
|
|
||||||
int i, tmp_status_len = 0, status_len = 0, err_status_len = 0;
|
|
||||||
int warning_count = 0, warning_indx = 0;
|
|
||||||
|
|
||||||
status_vector = ((TSQL) GET_THREAD_DATA)->tsql_status;
|
STATUS tmp_status[ISC_STATUS_LENGTH];
|
||||||
|
STATUS warning_status[ISC_STATUS_LENGTH];
|
||||||
|
int tmp_status_len = 0;
|
||||||
|
int status_len = 0;
|
||||||
|
int warning_indx = 0;
|
||||||
|
|
||||||
|
STATUS*status_vector = ((TSQL) GET_THREAD_DATA)->tsql_status;
|
||||||
|
|
||||||
/* stuff the status into temp buffer */
|
/* stuff the status into temp buffer */
|
||||||
MOVE_CLEAR(tmp_status, sizeof(tmp_status));
|
MOVE_CLEAR(tmp_status, sizeof(tmp_status));
|
||||||
@ -242,7 +244,8 @@ void ERRD_post( STATUS status, ...)
|
|||||||
|
|
||||||
if (status_vector[0] != gds_arg_gds ||
|
if (status_vector[0] != gds_arg_gds ||
|
||||||
(status_vector[0] == gds_arg_gds && status_vector[1] == 0 &&
|
(status_vector[0] == gds_arg_gds && status_vector[1] == 0 &&
|
||||||
status_vector[2] != gds_arg_warning)) {
|
status_vector[2] != gds_arg_warning))
|
||||||
|
{
|
||||||
/* this is a blank status vector */
|
/* this is a blank status vector */
|
||||||
status_vector[0] = gds_arg_gds;
|
status_vector[0] = gds_arg_gds;
|
||||||
status_vector[1] = gds_dsql_error;
|
status_vector[1] = gds_dsql_error;
|
||||||
@ -253,27 +256,36 @@ void ERRD_post( STATUS status, ...)
|
|||||||
if (status_len)
|
if (status_len)
|
||||||
--status_len;
|
--status_len;
|
||||||
|
|
||||||
/* check for duplicated error code */
|
// check for duplicated error code
|
||||||
for (i = 0; i < ISC_STATUS_LENGTH; i++) {
|
int i;
|
||||||
if (status_vector[i] == gds_arg_end && i == status_len)
|
for (i = 0; i < ISC_STATUS_LENGTH; i++)
|
||||||
|
{
|
||||||
|
if (status_vector[i] == gds_arg_end && i == status_len) {
|
||||||
break; /* end of argument list */
|
break; /* end of argument list */
|
||||||
|
}
|
||||||
|
|
||||||
if (i && i == warning_indx)
|
if (i && i == warning_indx) {
|
||||||
break; /* vector has no more errors */
|
break; /* vector has no more errors */
|
||||||
|
}
|
||||||
|
|
||||||
if (status_vector[i] == tmp_status[1] && i &&
|
if (status_vector[i] == tmp_status[1] && i &&
|
||||||
status_vector[i - 1] != gds_arg_warning &&
|
status_vector[i - 1] != gds_arg_warning &&
|
||||||
i + tmp_status_len - 2 < ISC_STATUS_LENGTH &&
|
i + tmp_status_len - 2 < ISC_STATUS_LENGTH &&
|
||||||
(memcmp(&status_vector[i], &tmp_status[1],
|
(memcmp(&status_vector[i], &tmp_status[1],
|
||||||
sizeof(STATUS) * (tmp_status_len - 2)) == 0)) {
|
sizeof(STATUS) * (tmp_status_len - 2)) == 0))
|
||||||
|
{
|
||||||
/* duplicate found */
|
/* duplicate found */
|
||||||
ERRD_punt();
|
ERRD_punt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if the status_vector has only warnings then adjust err_status_len */
|
// if the status_vector has only warnings then adjust err_status_len
|
||||||
if ((err_status_len = i) == 2 && warning_indx)
|
int err_status_len = i;
|
||||||
|
if (err_status_len == 2 && warning_indx) {
|
||||||
err_status_len = 0;
|
err_status_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int warning_count = 0;
|
||||||
|
|
||||||
if (warning_indx) {
|
if (warning_indx) {
|
||||||
/* copy current warning(s) to a temp buffer */
|
/* copy current warning(s) to a temp buffer */
|
||||||
@ -283,14 +295,17 @@ void ERRD_post( STATUS status, ...)
|
|||||||
PARSE_STATUS(warning_status, warning_count, warning_indx);
|
PARSE_STATUS(warning_status, warning_count, warning_indx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add the status into a real buffer right in between last error
|
// add the status into a real buffer right in between last
|
||||||
and first warning */
|
// error and first warning
|
||||||
|
|
||||||
if ((i = err_status_len + tmp_status_len) < ISC_STATUS_LENGTH) {
|
i = err_status_len + tmp_status_len;
|
||||||
|
if (i < ISC_STATUS_LENGTH)
|
||||||
|
{
|
||||||
MOVE_FASTER(tmp_status, &status_vector[err_status_len],
|
MOVE_FASTER(tmp_status, &status_vector[err_status_len],
|
||||||
sizeof(STATUS) * tmp_status_len);
|
sizeof(STATUS) * tmp_status_len);
|
||||||
/* copy current warning(s) to the status_vector */
|
/* copy current warning(s) to the status_vector */
|
||||||
if (warning_count && i + warning_count - 1 < ISC_STATUS_LENGTH) {
|
if (warning_count && i + warning_count - 1 < ISC_STATUS_LENGTH)
|
||||||
|
{
|
||||||
MOVE_FASTER(warning_status, &status_vector[i - 1],
|
MOVE_FASTER(warning_status, &status_vector[i - 1],
|
||||||
sizeof(STATUS) * warning_count);
|
sizeof(STATUS) * warning_count);
|
||||||
|
|
||||||
@ -323,7 +338,7 @@ void ERRD_punt(void)
|
|||||||
|
|
||||||
/* Give up whatever we were doing and return to the user. */
|
/* Give up whatever we were doing and return to the user. */
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]);
|
Firebird::status_exception::raise(tdsql->tsql_status[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1442,7 +1442,7 @@ static void error_post(STATUS status, ...)
|
|||||||
|
|
||||||
// Give up whatever we were doing and return to the user.
|
// Give up whatever we were doing and return to the user.
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(UDSQL_error->dsql_status[1]);
|
Firebird::status_exception::raise(UDSQL_error->dsql_status[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ static void expand_error(
|
|||||||
**************************************/
|
**************************************/
|
||||||
|
|
||||||
DDL_err(number, arg1, arg2, arg3, arg4, arg5);
|
DDL_err(number, arg1, arg2, arg3, arg4, arg5);
|
||||||
Firebird::status_longjmp_error::raise(TRUE);
|
Firebird::status_exception::raise(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ void PARSE_error( USHORT number, TEXT * arg1, TEXT * arg2)
|
|||||||
**************************************/
|
**************************************/
|
||||||
|
|
||||||
DDL_err(number, arg1, arg2, NULL, NULL, NULL);
|
DDL_err(number, arg1, arg2, NULL, NULL, NULL);
|
||||||
Firebird::status_longjmp_error::raise(TRUE);
|
Firebird::status_exception::raise(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
// Contributor(s): ______________________________________.
|
// Contributor(s): ______________________________________.
|
||||||
// $Id: gpre.cpp,v 1.6 2001-12-24 02:50:49 tamlin Exp $
|
// $Id: gpre.cpp,v 1.7 2001-12-29 11:41:22 tamlin Exp $
|
||||||
// Revision 1.2 2000/11/16 15:54:29 fsg
|
// Revision 1.2 2000/11/16 15:54:29 fsg
|
||||||
// Added new switch -verbose to gpre that will dump
|
// Added new switch -verbose to gpre that will dump
|
||||||
// parsed lines to stderr
|
// parsed lines to stderr
|
||||||
@ -38,7 +38,7 @@
|
|||||||
//
|
//
|
||||||
//____________________________________________________________
|
//____________________________________________________________
|
||||||
//
|
//
|
||||||
// $Id: gpre.cpp,v 1.6 2001-12-24 02:50:49 tamlin Exp $
|
// $Id: gpre.cpp,v 1.7 2001-12-29 11:41:22 tamlin Exp $
|
||||||
//
|
//
|
||||||
|
|
||||||
#define GPRE_MAIN
|
#define GPRE_MAIN
|
||||||
@ -925,7 +925,7 @@ void CPR_abort()
|
|||||||
{
|
{
|
||||||
|
|
||||||
++fatals;
|
++fatals;
|
||||||
Firebird::status_longjmp_error::raise(1);
|
Firebird::status_exception::raise(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
//
|
//
|
||||||
// All Rights Reserved.
|
// All Rights Reserved.
|
||||||
// Contributor(s): ______________________________________.
|
// Contributor(s): ______________________________________.
|
||||||
// $Id: par.cpp,v 1.4 2001-12-24 02:50:49 tamlin Exp $
|
// $Id: par.cpp,v 1.5 2001-12-29 11:41:22 tamlin Exp $
|
||||||
// Revision 1.2 2000/11/27 09:26:13 fsg
|
// Revision 1.2 2000/11/27 09:26:13 fsg
|
||||||
// Fixed bugs in gpre to handle PYXIS forms
|
// Fixed bugs in gpre to handle PYXIS forms
|
||||||
// and allow edit.e and fred.e to go through
|
// and allow edit.e and fred.e to go through
|
||||||
@ -37,7 +37,7 @@
|
|||||||
//
|
//
|
||||||
//____________________________________________________________
|
//____________________________________________________________
|
||||||
//
|
//
|
||||||
// $Id: par.cpp,v 1.4 2001-12-24 02:50:49 tamlin Exp $
|
// $Id: par.cpp,v 1.5 2001-12-29 11:41:22 tamlin Exp $
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "firebird.h"
|
#include "firebird.h"
|
||||||
@ -1156,12 +1156,7 @@ SYM PAR_symbol(enum sym_t type)
|
|||||||
|
|
||||||
void PAR_unwind()
|
void PAR_unwind()
|
||||||
{
|
{
|
||||||
|
Firebird::status_exception::raise(1);
|
||||||
#pragma FB_COMPILER_MESSAGE("Fix! Wierd jmp_buf use! This might crash!")
|
|
||||||
|
|
||||||
//longjmp(*PAR_jmp_buf, (SLONG) 1);
|
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,19 +29,19 @@
|
|||||||
|
|
||||||
namespace Firebird {
|
namespace Firebird {
|
||||||
|
|
||||||
class status_longjmp_error : public std::exception
|
class status_exception : public std::exception
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit status_longjmp_error(STATUS s)
|
explicit status_exception(STATUS s)
|
||||||
: m_s(s)
|
: m_s(s)
|
||||||
{}
|
{}
|
||||||
virtual ~status_longjmp_error() {}
|
virtual ~status_exception() {}
|
||||||
virtual const char* what() const
|
virtual const char* what() const
|
||||||
{ return "Firebird::status_longjmp_error"; }
|
{ return "Firebird::status_exception"; }
|
||||||
STATUS value() const { return m_s; }
|
STATUS value() const { return m_s; }
|
||||||
|
|
||||||
// TMN: to be moved into its own source file!
|
// TMN: to be moved into its own source file!
|
||||||
static void raise(STATUS s) { throw status_longjmp_error(s); }
|
static void raise(STATUS s) { throw status_exception(s); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
STATUS m_s;
|
STATUS m_s;
|
||||||
|
@ -206,7 +206,7 @@ int CLIB_ROUTINE main( int argc,
|
|||||||
exit(FINI_OK);
|
exit(FINI_OK);
|
||||||
|
|
||||||
} // try
|
} // try
|
||||||
catch (const Firebird::status_longjmp_error& e) {
|
catch (const Firebird::status_exception& e) {
|
||||||
exit(e.value());
|
exit(e.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -233,7 +233,7 @@ void GJRN_abort( int number)
|
|||||||
gjrn_msg_partial(0, 0, 0, 0, 0, 0); /* msg 0: gbak:: */
|
gjrn_msg_partial(0, 0, 0, 0, 0, 0); /* msg 0: gbak:: */
|
||||||
GJRN_printf(1, NULL, NULL, NULL, NULL); /* msg 1: exiting journal utility due to errors */
|
GJRN_printf(1, NULL, NULL, NULL, NULL); /* msg 1: exiting journal utility due to errors */
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(FINI_ERROR);
|
Firebird::status_exception::raise(FINI_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -441,7 +441,7 @@ static int start_disable( int argc, SCHAR ** argv)
|
|||||||
if ((*argv)[0] != '-') {
|
if ((*argv)[0] != '-') {
|
||||||
if (database) {
|
if (database) {
|
||||||
GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */
|
GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */
|
||||||
Firebird::status_longjmp_error::raise(FINI_ERROR);
|
Firebird::status_exception::raise(FINI_ERROR);
|
||||||
}
|
}
|
||||||
database = *argv++;
|
database = *argv++;
|
||||||
continue;
|
continue;
|
||||||
@ -540,7 +540,7 @@ static int start_dump( int argc, SCHAR ** argv)
|
|||||||
if ((*argv)[0] != '-') {
|
if ((*argv)[0] != '-') {
|
||||||
if (database) {
|
if (database) {
|
||||||
GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */
|
GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */
|
||||||
Firebird::status_longjmp_error::raise(FINI_ERROR);
|
Firebird::status_exception::raise(FINI_ERROR);
|
||||||
}
|
}
|
||||||
database = *argv++;
|
database = *argv++;
|
||||||
continue;
|
continue;
|
||||||
@ -575,7 +575,7 @@ static int start_dump( int argc, SCHAR ** argv)
|
|||||||
old_file_size = atoi(*argv++);
|
old_file_size = atoi(*argv++);
|
||||||
if (old_file_size <= 0) {
|
if (old_file_size <= 0) {
|
||||||
GJRN_printf(16, NULL, NULL, NULL, NULL); /* msg 16: online dump file size must be greater than zero */
|
GJRN_printf(16, NULL, NULL, NULL, NULL); /* msg 16: online dump file size must be greater than zero */
|
||||||
Firebird::status_longjmp_error::raise(FINI_ERROR);
|
Firebird::status_exception::raise(FINI_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -699,7 +699,7 @@ static int start_dump( int argc, SCHAR ** argv)
|
|||||||
if (handle)
|
if (handle)
|
||||||
gds__detach_database(status_vector, GDS_REF(handle));
|
gds__detach_database(status_vector, GDS_REF(handle));
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(FINI_ERROR);
|
Firebird::status_exception::raise(FINI_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handle)
|
if (handle)
|
||||||
@ -759,7 +759,7 @@ static int start_enable( int argc, SCHAR ** argv)
|
|||||||
if ((*argv)[0] != '-') {
|
if ((*argv)[0] != '-') {
|
||||||
if (database) {
|
if (database) {
|
||||||
GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */
|
GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */
|
||||||
Firebird::status_longjmp_error::raise(FINI_ERROR);
|
Firebird::status_exception::raise(FINI_ERROR);
|
||||||
}
|
}
|
||||||
database = *argv++;
|
database = *argv++;
|
||||||
continue;
|
continue;
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
* Contributor(s): ______________________________________.
|
* Contributor(s): ______________________________________.
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
$Id: align.cpp,v 1.3 2001-12-24 02:50:50 tamlin Exp $
|
$Id: align.cpp,v 1.4 2001-12-29 11:41:22 tamlin Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "firebird.h"
|
#include "firebird.h"
|
||||||
@ -156,5 +156,5 @@ static int check_double()
|
|||||||
|
|
||||||
static void handler()
|
static void handler()
|
||||||
{
|
{
|
||||||
Firebird::status_longjmp_error::raise(1);
|
Firebird::status_exception::raise(1);
|
||||||
}
|
}
|
||||||
|
@ -522,7 +522,7 @@ void DLL_EXPORT ERR_punt(void)
|
|||||||
|
|
||||||
#pragma FB_COMPILER_MESSAGE("FIXME! C functions can not throw! FIXME!")
|
#pragma FB_COMPILER_MESSAGE("FIXME! C functions can not throw! FIXME!")
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]);
|
Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -596,7 +596,7 @@ void DLL_EXPORT ERR_warning(STATUS status, ...)
|
|||||||
*
|
*
|
||||||
* Functional description
|
* Functional description
|
||||||
* Write an error out to the status vector but
|
* Write an error out to the status vector but
|
||||||
* don't longjmp back to the user. This allows
|
* don't throw an exception. This allows
|
||||||
* sending a warning message back to the user
|
* sending a warning message back to the user
|
||||||
* without stopping execution of a request. Note
|
* without stopping execution of a request. Note
|
||||||
* that subsequent errors can supersede this one.
|
* that subsequent errors can supersede this one.
|
||||||
|
235
src/jrd/exe.cpp
235
src/jrd/exe.cpp
@ -21,7 +21,7 @@
|
|||||||
* Contributor(s): ______________________________________.
|
* Contributor(s): ______________________________________.
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
$Id: exe.cpp,v 1.5 2001-12-28 06:31:38 tamlin Exp $
|
$Id: exe.cpp,v 1.6 2001-12-29 11:41:22 tamlin Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "firebird.h"
|
#include "firebird.h"
|
||||||
@ -116,7 +116,7 @@ static NOD send_msg(TDBB, register NOD);
|
|||||||
static void set_error(TDBB, XCP);
|
static void set_error(TDBB, XCP);
|
||||||
static NOD stall(TDBB, register NOD);
|
static NOD stall(TDBB, register NOD);
|
||||||
static NOD store(TDBB, register NOD, SSHORT);
|
static NOD store(TDBB, register NOD, SSHORT);
|
||||||
static BOOLEAN test_error(TDBB, XCP);
|
static BOOLEAN test_error(TDBB, const XCP);
|
||||||
static void trigger_failure(TDBB, REQ);
|
static void trigger_failure(TDBB, REQ);
|
||||||
static void validate(TDBB, NOD);
|
static void validate(TDBB, NOD);
|
||||||
|
|
||||||
@ -651,7 +651,7 @@ void EXE_receive(TDBB tdbb,
|
|||||||
transaction->tra_save_point = request->req_proc_sav_point;
|
transaction->tra_save_point = request->req_proc_sav_point;
|
||||||
request->req_proc_sav_point = save_sav_point;
|
request->req_proc_sav_point = save_sav_point;
|
||||||
release_proc_save_points(request);
|
release_proc_save_points(request);
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1171,7 +1171,7 @@ static NOD erase(TDBB tdbb, NOD node, SSHORT which_trig)
|
|||||||
|
|
||||||
} // try
|
} // try
|
||||||
catch (...) {
|
catch (...) {
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if the stream is navigational, it is now positioned on a crack */
|
/* if the stream is navigational, it is now positioned on a crack */
|
||||||
@ -1336,7 +1336,7 @@ static void execute_procedure(TDBB tdbb, NOD node)
|
|||||||
proc_request->req_flags &= ~(req_in_use | req_proc_fetch);
|
proc_request->req_flags &= ~(req_in_use | req_proc_fetch);
|
||||||
proc_request->req_timestamp = 0;
|
proc_request->req_timestamp = 0;
|
||||||
delete temp_buffer;
|
delete temp_buffer;
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
tdbb->tdbb_default = old_pool;
|
tdbb->tdbb_default = old_pool;
|
||||||
@ -1424,7 +1424,7 @@ static REQ execute_triggers(TDBB tdbb,
|
|||||||
release_triggers(tdbb, vector);
|
release_triggers(tdbb, vector);
|
||||||
}
|
}
|
||||||
if (!trigger) {
|
if (!trigger) {
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
return trigger;
|
return trigger;
|
||||||
}
|
}
|
||||||
@ -1636,7 +1636,7 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
} \
|
} \
|
||||||
catch (std::exception&) { \
|
catch (std::exception&) { \
|
||||||
if (dbb->dbb_flags & DBB_bugcheck) { \
|
if (dbb->dbb_flags & DBB_bugcheck) { \
|
||||||
Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); \
|
Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); \
|
||||||
} \
|
} \
|
||||||
BUGCHECK (290); /* msg 290 error during savepoint backout */ \
|
BUGCHECK (290); /* msg 290 error during savepoint backout */ \
|
||||||
}
|
}
|
||||||
@ -1663,15 +1663,16 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
|
|
||||||
VOLATILE NOD node = in_node;
|
VOLATILE NOD node = in_node;
|
||||||
|
|
||||||
/* Catch errors so we can unwind cleanly */
|
// Catch errors so we can unwind cleanly
|
||||||
|
|
||||||
SSHORT error_pending = FALSE;
|
SSHORT error_pending = FALSE;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
/* Execute stuff until we drop */
|
// Execute stuff until we drop
|
||||||
|
|
||||||
while (node && !(request->req_flags & req_stall)) {
|
while (node && !(request->req_flags & req_stall))
|
||||||
|
{
|
||||||
#ifdef MULTI_THREAD
|
#ifdef MULTI_THREAD
|
||||||
|
|
||||||
if (request->req_operation == req::req_evaluate &&
|
if (request->req_operation == req::req_evaluate &&
|
||||||
@ -1829,8 +1830,9 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
/* If an error is still pending when the savepoint is
|
/* If an error is still pending when the savepoint is
|
||||||
supposed to end, then the application didn't handle the
|
supposed to end, then the application didn't handle the
|
||||||
error and the savepoint should be undone. */
|
error and the savepoint should be undone. */
|
||||||
if (error_pending)
|
if (error_pending) {
|
||||||
++transaction->tra_save_point->sav_verb_count;
|
++transaction->tra_save_point->sav_verb_count;
|
||||||
|
}
|
||||||
VERB_CLEANUP;
|
VERB_CLEANUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1874,9 +1876,10 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
|
|
||||||
case req::req_unwind:
|
case req::req_unwind:
|
||||||
{
|
{
|
||||||
VOLATILE NOD handlers, *ptr, *end;
|
VOLATILE NOD *ptr, *end;
|
||||||
|
|
||||||
if (request->req_flags & req_leave) {
|
if (request->req_flags & req_leave)
|
||||||
|
{
|
||||||
/** Although the req_operation is set to req_unwind
|
/** Although the req_operation is set to req_unwind
|
||||||
it is not an error case if req_leave bit is set.
|
it is not an error case if req_leave bit is set.
|
||||||
req_leave bit indicates that we hit an EXIT
|
req_leave bit indicates that we hit an EXIT
|
||||||
@ -1886,7 +1889,8 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
node = node->nod_parent;
|
node = node->nod_parent;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (transaction != dbb->dbb_sys_trans) {
|
if (transaction != dbb->dbb_sys_trans)
|
||||||
|
{
|
||||||
MOVE_FAST((SCHAR *) request + node->nod_impure,
|
MOVE_FAST((SCHAR *) request + node->nod_impure,
|
||||||
&count, sizeof(SLONG));
|
&count, sizeof(SLONG));
|
||||||
/* Since there occurred an error (req_unwind), undo all savepoints
|
/* Since there occurred an error (req_unwind), undo all savepoints
|
||||||
@ -1899,18 +1903,21 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
VERB_CLEANUP;
|
VERB_CLEANUP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( (handlers = node->nod_arg[e_blk_handlers]) ) {
|
|
||||||
|
VOLATILE NOD handlers = node->nod_arg[e_blk_handlers];
|
||||||
|
if (handlers)
|
||||||
|
{
|
||||||
ULONG prev_req_error_handler;
|
ULONG prev_req_error_handler;
|
||||||
|
|
||||||
node = node->nod_parent;
|
node = node->nod_parent;
|
||||||
for (ptr = handlers->nod_arg,
|
for (ptr = handlers->nod_arg,
|
||||||
end = ptr + handlers->nod_count; ptr < end;
|
end = ptr + handlers->nod_count; ptr < end;
|
||||||
ptr++)
|
ptr++)
|
||||||
if (test_error
|
{
|
||||||
(tdbb,
|
const XCP pXcp =
|
||||||
reinterpret_cast <
|
reinterpret_cast<XCP>((*ptr)->nod_arg[e_err_conditions]);
|
||||||
xcp *
|
if (test_error(tdbb, pXcp))
|
||||||
>((*ptr)->nod_arg[e_err_conditions]))) {
|
{
|
||||||
request->req_operation = req::req_evaluate;
|
request->req_operation = req::req_evaluate;
|
||||||
node = (*ptr)->nod_arg[e_err_action];
|
node = (*ptr)->nod_arg[e_err_action];
|
||||||
error_pending = FALSE;
|
error_pending = FALSE;
|
||||||
@ -1949,19 +1956,23 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
tdbb->tdbb_request = request;
|
tdbb->tdbb_request = request;
|
||||||
/* The error is dealt with by the application, cleanup
|
/* The error is dealt with by the application, cleanup
|
||||||
this block's savepoint. */
|
this block's savepoint. */
|
||||||
if (transaction != dbb->dbb_sys_trans) {
|
if (transaction != dbb->dbb_sys_trans)
|
||||||
for (save_point =
|
{
|
||||||
transaction->tra_save_point;
|
for (save_point = transaction->tra_save_point;
|
||||||
save_point
|
save_point &&
|
||||||
&& count <= save_point->sav_number;
|
count <= save_point->sav_number;
|
||||||
save_point =
|
save_point = transaction->tra_save_point)
|
||||||
transaction->tra_save_point)
|
{
|
||||||
VERB_CLEANUP;
|
VERB_CLEANUP;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
node = node->nod_parent;
|
node = node->nod_parent;
|
||||||
|
}
|
||||||
|
|
||||||
/* If the application didn't have an error handler, then
|
/* If the application didn't have an error handler, then
|
||||||
the error will still be pending. Undo the block by
|
the error will still be pending. Undo the block by
|
||||||
@ -2307,13 +2318,15 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
default:
|
default:
|
||||||
BUGCHECK(168); /* msg 168 looper: action not yet implemented */
|
BUGCHECK(168); /* msg 168 looper: action not yet implemented */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HSDEBUGSTACK
|
#ifdef HSDEBUGSTACK
|
||||||
TestStack();
|
TestStack();
|
||||||
#endif
|
#endif
|
||||||
#if defined(DEBUG_GDS_ALLOC) && defined(PROD_BUILD)
|
#if defined(DEBUG_GDS_ALLOC) && defined(PROD_BUILD)
|
||||||
memory_count++;
|
memory_count++;
|
||||||
if ((memory_count % memory_debug) == 0)
|
if ((memory_count % memory_debug) == 0) {
|
||||||
ALL_check_memory();
|
ALL_check_memory();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2324,7 +2337,8 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
#ifdef SCROLLABLE_CURSORS
|
#ifdef SCROLLABLE_CURSORS
|
||||||
&& !(request->req_flags & req_async_processing)
|
&& !(request->req_flags & req_async_processing)
|
||||||
#endif
|
#endif
|
||||||
) {
|
)
|
||||||
|
{
|
||||||
request->req_flags &= ~(req_active | req_reserved);
|
request->req_flags &= ~(req_active | req_reserved);
|
||||||
request->req_timestamp = 0;
|
request->req_timestamp = 0;
|
||||||
release_blobs(tdbb, request);
|
release_blobs(tdbb, request);
|
||||||
@ -2335,9 +2349,9 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
tdbb->tdbb_transaction = (tdbb->tdbb_request = old_request) ?
|
tdbb->tdbb_transaction = (tdbb->tdbb_request = old_request) ?
|
||||||
old_request->req_transaction : NULL;
|
old_request->req_transaction : NULL;
|
||||||
|
|
||||||
/* in the case of a pending error condition (one which did not
|
// in the case of a pending error condition (one which did not
|
||||||
result in a exception to the top of looper), we need to delete
|
// result in a exception to the top of looper), we need to
|
||||||
the last savepoint */
|
// delete the last savepoint
|
||||||
|
|
||||||
if (error_pending) {
|
if (error_pending) {
|
||||||
if (transaction != dbb->dbb_sys_trans) {
|
if (transaction != dbb->dbb_sys_trans) {
|
||||||
@ -2358,9 +2372,9 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
ERR_punt();
|
ERR_punt();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if the request was aborted, assume that we have already
|
// if the request was aborted, assume that we have already
|
||||||
longjmp'ed to the top of looper, and therefore that the last
|
// longjmp'ed to the top of looper, and therefore that the
|
||||||
savepoint has already been deleted */
|
// last savepoint has already been deleted
|
||||||
|
|
||||||
if (request->req_flags & req_abort) {
|
if (request->req_flags & req_abort) {
|
||||||
ERR_post(gds_req_sync, 0);
|
ERR_post(gds_req_sync, 0);
|
||||||
@ -2370,7 +2384,7 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node)
|
|||||||
catch (...) {
|
catch (...) {
|
||||||
/* If the database is already bug-checked, then get out. */
|
/* If the database is already bug-checked, then get out. */
|
||||||
if (dbb->dbb_flags & DBB_bugcheck) {
|
if (dbb->dbb_flags & DBB_bugcheck) {
|
||||||
Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]);
|
Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GATEWAY
|
#ifdef GATEWAY
|
||||||
@ -2612,7 +2626,7 @@ static NOD modify(TDBB tdbb, register NOD node, SSHORT which_trig)
|
|||||||
|
|
||||||
} // try
|
} // try
|
||||||
catch (...) {
|
catch (...) {
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if the stream is navigational, we must position the stream on the new
|
/* if the stream is navigational, we must position the stream on the new
|
||||||
@ -3403,30 +3417,25 @@ static NOD store(TDBB tdbb, register NOD node, SSHORT which_trig)
|
|||||||
* Execute a STORE statement.
|
* Execute a STORE statement.
|
||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
DBB dbb;
|
|
||||||
register REQ request;
|
|
||||||
STA impure;
|
|
||||||
REQ trigger;
|
REQ trigger;
|
||||||
FMT format;
|
FMT format;
|
||||||
SSHORT stream, n;
|
SSHORT n;
|
||||||
USHORT length;
|
USHORT length;
|
||||||
REC record;
|
REC record;
|
||||||
RPB *rpb;
|
|
||||||
DSC *desc;
|
DSC *desc;
|
||||||
REL relation;
|
|
||||||
TRA transaction;
|
|
||||||
register UCHAR *p;
|
register UCHAR *p;
|
||||||
|
|
||||||
SET_TDBB(tdbb);
|
SET_TDBB(tdbb);
|
||||||
dbb = tdbb->tdbb_database;
|
DBB dbb = tdbb->tdbb_database;
|
||||||
BLKCHK(node, type_nod);
|
BLKCHK(node, type_nod);
|
||||||
|
|
||||||
request = tdbb->tdbb_request;
|
REQ request = tdbb->tdbb_request;
|
||||||
transaction = request->req_transaction;
|
TRA transaction = request->req_transaction;
|
||||||
impure = (STA) ((SCHAR *) request + node->nod_impure);
|
STA impure = (STA) ((SCHAR *) request + node->nod_impure);
|
||||||
stream = (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream];
|
SSHORT stream = (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream];
|
||||||
rpb = &request->req_rpb[stream];
|
RPB* rpb = &request->req_rpb[stream];
|
||||||
relation = rpb->rpb_relation;
|
REL relation = rpb->rpb_relation;
|
||||||
|
|
||||||
switch (request->req_operation) {
|
switch (request->req_operation) {
|
||||||
case req::req_evaluate:
|
case req::req_evaluate:
|
||||||
@ -3448,71 +3457,83 @@ static NOD store(TDBB tdbb, register NOD node, SSHORT which_trig)
|
|||||||
(which_trig != POST_TRIG) &&
|
(which_trig != POST_TRIG) &&
|
||||||
(trigger = execute_triggers(tdbb, &relation->rel_pre_store,
|
(trigger = execute_triggers(tdbb, &relation->rel_pre_store,
|
||||||
0, record)))
|
0, record)))
|
||||||
trigger_failure(tdbb, trigger);
|
{
|
||||||
|
trigger_failure(tdbb, trigger);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (node->nod_arg[e_sto_validate])
|
if (node->nod_arg[e_sto_validate]) {
|
||||||
validate(tdbb, node->nod_arg[e_sto_validate]);
|
validate(tdbb, node->nod_arg[e_sto_validate]);
|
||||||
|
}
|
||||||
|
|
||||||
/* For optimum on-disk record compression, zero all unassigned
|
/* For optimum on-disk record compression, zero all unassigned
|
||||||
fields. In addition, zero the tail of assigned varying fields
|
fields. In addition, zero the tail of assigned varying fields
|
||||||
so that previous remnants don't defeat compression efficiency. */
|
so that previous remnants don't defeat compression efficiency. */
|
||||||
|
|
||||||
for (n = 0; n < format->fmt_count; n++) {
|
for (n = 0; n < format->fmt_count; n++)
|
||||||
|
{
|
||||||
desc = &format->fmt_desc[n];
|
desc = &format->fmt_desc[n];
|
||||||
if (!desc->dsc_address)
|
if (!desc->dsc_address) {
|
||||||
continue;
|
continue;
|
||||||
p = record->rec_data + (SLONG) desc->dsc_address;
|
|
||||||
if (TEST_NULL(record, n)) {
|
|
||||||
if ( (length = desc->dsc_length) )
|
|
||||||
do
|
|
||||||
*p++ = 0;
|
|
||||||
while (--length);
|
|
||||||
}
|
}
|
||||||
else if (desc->dsc_dtype == dtype_varying) {
|
p = record->rec_data + (SLONG) desc->dsc_address;
|
||||||
VARY *vary;
|
if (TEST_NULL(record, n))
|
||||||
|
{
|
||||||
vary = (VARY *) p;
|
length = desc->dsc_length;
|
||||||
if ((length = desc->dsc_length - sizeof(USHORT)) >
|
if (length) {
|
||||||
vary->vary_length) {
|
do {
|
||||||
|
*p++ = 0;
|
||||||
|
} while (--length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (desc->dsc_dtype == dtype_varying)
|
||||||
|
{
|
||||||
|
VARY* vary = (VARY *) p;
|
||||||
|
length = desc->dsc_length - sizeof(USHORT);
|
||||||
|
if (length > vary->vary_length)
|
||||||
|
{
|
||||||
p = reinterpret_cast<UCHAR*>(vary->vary_string + vary->vary_length);
|
p = reinterpret_cast<UCHAR*>(vary->vary_string + vary->vary_length);
|
||||||
length -= vary->vary_length;
|
length -= vary->vary_length;
|
||||||
do
|
do {
|
||||||
*p++ = 0;
|
*p++ = 0;
|
||||||
while (--length);
|
} while (--length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef GATEWAY
|
#ifndef GATEWAY
|
||||||
if (relation->rel_file)
|
if (relation->rel_file) {
|
||||||
EXT_store(rpb, reinterpret_cast < int *>(transaction));
|
EXT_store(rpb, reinterpret_cast < int *>(transaction));
|
||||||
else if (!relation->rel_view_rse) {
|
}
|
||||||
|
else if (!relation->rel_view_rse)
|
||||||
|
{
|
||||||
SSHORT bad_index;
|
SSHORT bad_index;
|
||||||
REL bad_relation;
|
REL bad_relation;
|
||||||
IDX_E error_code;
|
|
||||||
|
|
||||||
VIO_store(tdbb, rpb, transaction);
|
VIO_store(tdbb, rpb, transaction);
|
||||||
if ((error_code = IDX_store(tdbb,
|
IDX_E error_code = IDX_store(tdbb,
|
||||||
rpb,
|
rpb,
|
||||||
transaction,
|
transaction,
|
||||||
&bad_relation,
|
&bad_relation,
|
||||||
reinterpret_cast <
|
reinterpret_cast<USHORT*>(&bad_index));
|
||||||
USHORT *
|
if (error_code) {
|
||||||
>(&bad_index))))
|
ERR_duplicate_error(error_code, bad_relation, bad_index);
|
||||||
ERR_duplicate_error(error_code, bad_relation, bad_index);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relation->rel_post_store &&
|
if (relation->rel_post_store &&
|
||||||
(which_trig != PRE_TRIG) &&
|
(which_trig != PRE_TRIG) &&
|
||||||
(trigger = execute_triggers(tdbb, &relation->rel_post_store,
|
(trigger = execute_triggers(tdbb, &relation->rel_post_store,
|
||||||
0, record)))
|
0, record)))
|
||||||
trigger_failure(tdbb, trigger);
|
{
|
||||||
|
trigger_failure(tdbb, trigger);
|
||||||
|
}
|
||||||
|
|
||||||
request->req_records_inserted++;
|
request->req_records_inserted++;
|
||||||
|
|
||||||
if (transaction != dbb->dbb_sys_trans)
|
if (transaction != dbb->dbb_sys_trans) {
|
||||||
--transaction->tra_save_point->sav_verb_count;
|
--transaction->tra_save_point->sav_verb_count;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
VIO_store(tdbb, rpb, transaction, node->nod_arg[e_sto_sql]);
|
VIO_store(tdbb, rpb, transaction, node->nod_arg[e_sto_sql]);
|
||||||
#endif
|
#endif
|
||||||
@ -3543,10 +3564,12 @@ static NOD store(TDBB tdbb, register NOD node, SSHORT which_trig)
|
|||||||
|
|
||||||
#ifndef GATEWAY
|
#ifndef GATEWAY
|
||||||
p = record->rec_data;
|
p = record->rec_data;
|
||||||
if ( (n = (format->fmt_count + 7) >> 3) )
|
n = (format->fmt_count + 7) >> 3;
|
||||||
do
|
if (n) {
|
||||||
|
do {
|
||||||
*p++ = 0xff;
|
*p++ = 0xff;
|
||||||
while (--n);
|
} while (--n);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
EXE_set_fields_null(tdbb, record, format);
|
EXE_set_fields_null(tdbb, record, format);
|
||||||
#endif
|
#endif
|
||||||
@ -3596,7 +3619,7 @@ static NOD stream(TDBB tdbb, register NOD node)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static BOOLEAN test_error(TDBB tdbb, XCP conditions)
|
static BOOLEAN test_error(TDBB tdbb, const XCP conditions)
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
*
|
*
|
||||||
@ -3608,15 +3631,15 @@ static BOOLEAN test_error(TDBB tdbb, XCP conditions)
|
|||||||
* Test for match of current state with list of error conditions.
|
* Test for match of current state with list of error conditions.
|
||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
SSHORT i, sqlcode;
|
|
||||||
STATUS *status_vector;
|
|
||||||
|
|
||||||
SET_TDBB(tdbb);
|
SET_TDBB(tdbb);
|
||||||
status_vector = tdbb->tdbb_status_vector;
|
STATUS* status_vector = tdbb->tdbb_status_vector;
|
||||||
sqlcode = gds__sqlcode(status_vector);
|
SSHORT sqlcode = gds__sqlcode(status_vector);
|
||||||
|
|
||||||
for (i = 0; i < conditions->xcp_count; i++) {
|
for (SSHORT i = 0; i < conditions->xcp_count; ++i)
|
||||||
switch (conditions->xcp_rpt[i].xcp_type) {
|
{
|
||||||
|
switch (conditions->xcp_rpt[i].xcp_type)
|
||||||
|
{
|
||||||
case xcp_sql_code:
|
case xcp_sql_code:
|
||||||
if (sqlcode == conditions->xcp_rpt[i].xcp_code) {
|
if (sqlcode == conditions->xcp_rpt[i].xcp_code) {
|
||||||
status_vector[0] = 0;
|
status_vector[0] = 0;
|
||||||
@ -3635,7 +3658,8 @@ static BOOLEAN test_error(TDBB tdbb, XCP conditions)
|
|||||||
|
|
||||||
case xcp_xcp_code:
|
case xcp_xcp_code:
|
||||||
if ((status_vector[1] == gds_except) &&
|
if ((status_vector[1] == gds_except) &&
|
||||||
(status_vector[3] == conditions->xcp_rpt[i].xcp_code)) {
|
(status_vector[3] == conditions->xcp_rpt[i].xcp_code))
|
||||||
|
{
|
||||||
status_vector[0] = 0;
|
status_vector[0] = 0;
|
||||||
status_vector[1] = 0;
|
status_vector[1] = 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -3666,37 +3690,47 @@ static void trigger_failure(TDBB tdbb, REQ trigger)
|
|||||||
* Trigger failed, report error.
|
* Trigger failed, report error.
|
||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
TEXT *msg;
|
|
||||||
STATUS code;
|
|
||||||
|
|
||||||
SET_TDBB(tdbb);
|
SET_TDBB(tdbb);
|
||||||
EXE_unwind(tdbb, trigger);
|
EXE_unwind(tdbb, trigger);
|
||||||
|
|
||||||
trigger->req_attachment = NULL;
|
trigger->req_attachment = NULL;
|
||||||
trigger->req_flags &= ~req_in_use;
|
trigger->req_flags &= ~req_in_use;
|
||||||
trigger->req_timestamp = 0;
|
trigger->req_timestamp = 0;
|
||||||
if (trigger->req_flags & req_leave) {
|
|
||||||
|
if (trigger->req_flags & req_leave)
|
||||||
|
{
|
||||||
trigger->req_flags &= ~req_leave;
|
trigger->req_flags &= ~req_leave;
|
||||||
|
TEXT* msg;
|
||||||
if (trigger->req_trg_name &&
|
if (trigger->req_trg_name &&
|
||||||
(msg =
|
(msg = MET_trigger_msg(tdbb,
|
||||||
MET_trigger_msg(tdbb, trigger->req_trg_name,
|
trigger->req_trg_name,
|
||||||
trigger->req_label))) {
|
trigger->req_label)))
|
||||||
if (trigger->req_flags & req_sys_trigger) {
|
{
|
||||||
code = PAR_symbol_to_gdscode(msg);
|
if (trigger->req_flags & req_sys_trigger)
|
||||||
|
{
|
||||||
|
STATUS code = PAR_symbol_to_gdscode(msg);
|
||||||
if (code)
|
if (code)
|
||||||
|
{
|
||||||
ERR_post(gds_integ_fail,
|
ERR_post(gds_integ_fail,
|
||||||
gds_arg_number, (SLONG) trigger->req_label,
|
gds_arg_number, (SLONG) trigger->req_label,
|
||||||
gds_arg_gds, code, 0);
|
gds_arg_gds, code, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ERR_post(gds_integ_fail,
|
ERR_post(gds_integ_fail,
|
||||||
gds_arg_number, (SLONG) trigger->req_label,
|
gds_arg_number, (SLONG) trigger->req_label,
|
||||||
gds_arg_gds, gds_random, gds_arg_string, msg, 0);
|
gds_arg_gds, gds_random, gds_arg_string, msg, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
ERR_post(gds_integ_fail, gds_arg_number,
|
ERR_post(gds_integ_fail, gds_arg_number,
|
||||||
(SLONG) trigger->req_label, 0);
|
(SLONG) trigger->req_label, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
ERR_punt();
|
ERR_punt();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3713,11 +3747,12 @@ static void validate(TDBB tdbb, NOD list)
|
|||||||
* Execute a list of validation expressions.
|
* Execute a list of validation expressions.
|
||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
NOD *ptr1, *ptr2;
|
|
||||||
|
|
||||||
SET_TDBB(tdbb);
|
SET_TDBB(tdbb);
|
||||||
BLKCHK(list, type_nod);
|
BLKCHK(list, type_nod);
|
||||||
|
|
||||||
|
NOD *ptr1, *ptr2;
|
||||||
|
|
||||||
for (ptr1 = list->nod_arg, ptr2 = ptr1 + list->nod_count;
|
for (ptr1 = list->nod_arg, ptr2 = ptr1 + list->nod_count;
|
||||||
ptr1 < ptr2; ptr1++)
|
ptr1 < ptr2; ptr1++)
|
||||||
{
|
{
|
||||||
|
@ -3868,7 +3868,7 @@ static void blr_error(CTL control, TEXT * string, TEXT * arg1)
|
|||||||
blr_format(control, string, arg1);
|
blr_format(control, string, arg1);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
PRINT_LINE;
|
PRINT_LINE;
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$Id: ib_stdio.cpp,v 1.3 2001-12-24 02:50:51 tamlin Exp $
|
$Id: ib_stdio.cpp,v 1.4 2001-12-29 11:41:23 tamlin Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "firebird.h"
|
#include "firebird.h"
|
||||||
@ -371,8 +371,8 @@ int ib__sflush(register IB_FILE * fp)
|
|||||||
n = fp->_p - p; /* write this much */
|
n = fp->_p - p; /* write this much */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set these immediately to avoid problems with longjmp and to allow
|
* Set these immediately to allow exchange buffering
|
||||||
* exchange buffering (via setvbuf) in user write function.
|
* (via setvbuf) in user write function.
|
||||||
*/
|
*/
|
||||||
fp->_p = p;
|
fp->_p = p;
|
||||||
fp->_w = t & (IB__SLBF | IB__SNBF) ? 0 : fp->_bf._size;
|
fp->_w = t & (IB__SLBF | IB__SNBF) ? 0 : fp->_bf._size;
|
||||||
@ -4012,7 +4012,7 @@ int ib__swbuf(register int c, register IB_FILE * fp)
|
|||||||
register int n;
|
register int n;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In case we cannot write, or longjmp takes us out early,
|
* In case we cannot write, or an exception takes us out early,
|
||||||
* make sure _w is 0 (if fully- or un-buffered) or -_bf._size
|
* make sure _w is 0 (if fully- or un-buffered) or -_bf._size
|
||||||
* (if line buffered) so that we will get called again.
|
* (if line buffered) so that we will get called again.
|
||||||
* If we did not do this, a sufficient number of ib_putc()
|
* If we did not do this, a sufficient number of ib_putc()
|
||||||
|
@ -162,6 +162,6 @@ static void post_error(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (longjmp_addr) {
|
if (longjmp_addr) {
|
||||||
Firebird::status_longjmp_error::raise(status_vector[1]);
|
Firebird::status_exception::raise(status_vector[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ extern "C" {
|
|||||||
#define getpid() 0
|
#define getpid() 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void bug_lck(TEXT *);
|
static void bug_lck(TEXT*);
|
||||||
static void check_lock(LCK, USHORT);
|
static void check_lock(LCK, USHORT);
|
||||||
static BOOLEAN compatible(LCK, LCK, USHORT);
|
static BOOLEAN compatible(LCK, LCK, USHORT);
|
||||||
static void enqueue(TDBB, LCK, USHORT, SSHORT);
|
static void enqueue(TDBB, LCK, USHORT, SSHORT);
|
||||||
@ -485,12 +485,10 @@ SLONG LCK_get_owner_handle(TDBB tdbb, enum lck_t lock_type)
|
|||||||
* return the right kind of lock owner given a lock type.
|
* return the right kind of lock owner given a lock type.
|
||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
DBB dbb;
|
|
||||||
ATT attachment;
|
|
||||||
|
|
||||||
SET_TDBB(tdbb);
|
SET_TDBB(tdbb);
|
||||||
dbb = tdbb->tdbb_database;
|
DBB dbb = tdbb->tdbb_database;
|
||||||
attachment = tdbb->tdbb_attachment;
|
ATT attachment = tdbb->tdbb_attachment;
|
||||||
switch (lock_type) {
|
switch (lock_type) {
|
||||||
case LCK_database:
|
case LCK_database:
|
||||||
case LCK_bdb:
|
case LCK_bdb:
|
||||||
@ -513,7 +511,7 @@ SLONG LCK_get_owner_handle(TDBB tdbb, enum lck_t lock_type)
|
|||||||
return LCK_OWNER_HANDLE_ATT;
|
return LCK_OWNER_HANDLE_ATT;
|
||||||
default:
|
default:
|
||||||
bug_lck("Invalid lock type in LCK_get_owner_handle ()");
|
bug_lck("Invalid lock type in LCK_get_owner_handle ()");
|
||||||
/* Not Reached - bug_lck longjmp's out */
|
/* Not Reached - bug_lck calls ERR_post */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -924,7 +922,7 @@ void LCK_write_data(LCK lock, SLONG data)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void bug_lck(TEXT * string)
|
static void bug_lck(TEXT* string)
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
*
|
*
|
||||||
|
@ -1154,7 +1154,7 @@ static BOOLEAN find_dbkey(RSB rsb, ULONG record_number)
|
|||||||
catch (...) {
|
catch (...) {
|
||||||
CCH_RELEASE(tdbb, &window);
|
CCH_RELEASE(tdbb, &window);
|
||||||
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1350,7 +1350,7 @@ static BOOLEAN find_record(
|
|||||||
catch (...) {
|
catch (...) {
|
||||||
CCH_RELEASE(tdbb, &window);
|
CCH_RELEASE(tdbb, &window);
|
||||||
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1710,7 +1710,7 @@ static BOOLEAN get_record(
|
|||||||
tdbb->tdbb_attachment->att_flags |=
|
tdbb->tdbb_attachment->att_flags |=
|
||||||
(old_att_flags & ATT_no_cleanup);
|
(old_att_flags & ATT_no_cleanup);
|
||||||
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -288,8 +288,7 @@ void SCL_check_index( TDBB tdbb, TEXT * index_name, USHORT mask)
|
|||||||
if (request) {
|
if (request) {
|
||||||
CMP_release(tdbb, (REQ) request);
|
CMP_release(tdbb, (REQ) request);
|
||||||
}
|
}
|
||||||
// LONGJMP(*(JMP_BUF*)&tdbb->tdbb_setjmp, (int) tdbb->tdbb_status_vector[1]);
|
Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]);
|
||||||
Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -977,8 +976,7 @@ static BOOLEAN check_user_group(CONST TEXT* acl,
|
|||||||
catch (...) {
|
catch (...) {
|
||||||
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
||||||
delete buffer;
|
delete buffer;
|
||||||
// LONGJMP(*(JMP_BUF*)&tdbb->tdbb_setjmp, (int) tdbb->tdbb_status_vector[1]);
|
Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]);
|
||||||
Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (n != number);
|
return (n != number);
|
||||||
@ -1129,8 +1127,7 @@ static SLONG compute_access(TDBB tdbb,
|
|||||||
catch (...) {
|
catch (...) {
|
||||||
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
tdbb->tdbb_setjmp = (UCHAR *) old_env;
|
||||||
delete str_buffer;
|
delete str_buffer;
|
||||||
// LONGJMP(*(JMP_BUF*)&tdbb->tdbb_setjmp, (int) tdbb->tdbb_status_vector[1]);
|
Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]);
|
||||||
Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return privileges;
|
return privileges;
|
||||||
|
@ -522,7 +522,7 @@ static USHORT process_statement( USHORT flush_flag)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
} // try
|
} // try
|
||||||
catch (const Firebird::status_longjmp_error& e) {
|
catch (const Firebird::status_exception& e) {
|
||||||
GEN_release();
|
GEN_release();
|
||||||
return e.value();
|
return e.value();
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ void ERRQ_database_error( DBB dbb, STATUS * status_vector)
|
|||||||
ERRQ_msg_put(458, dbb->dbb_filename, NULL, NULL, NULL, NULL); /* Msg458 ** connection to database %s lost ** */
|
ERRQ_msg_put(458, dbb->dbb_filename, NULL, NULL, NULL, NULL); /* Msg458 ** connection to database %s lost ** */
|
||||||
|
|
||||||
if (QLI_env) {
|
if (QLI_env) {
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ void ERRQ_error(
|
|||||||
ERRQ_error_format(number, arg1, arg2, arg3, arg4, arg5);
|
ERRQ_error_format(number, arg1, arg2, arg3, arg4, arg5);
|
||||||
|
|
||||||
if (QLI_env)
|
if (QLI_env)
|
||||||
Firebird::status_longjmp_error::raise(-1);
|
Firebird::status_exception::raise(-1);
|
||||||
else {
|
else {
|
||||||
ERRQ_pending();
|
ERRQ_pending();
|
||||||
ERRQ_exit(FINI_ERROR);
|
ERRQ_exit(FINI_ERROR);
|
||||||
|
@ -95,7 +95,7 @@ UCHAR* DLL_EXPORT ALLR_alloc(ULONG size)
|
|||||||
*status_vector = gds_arg_end;
|
*status_vector = gds_arg_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(gds_virmemexh);
|
Firebird::status_exception::raise(gds_virmemexh);
|
||||||
return NULL; /* compiler silencer */
|
return NULL; /* compiler silencer */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ BLK DLL_EXPORT ALLR_block(UCHAR type, ULONG count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(gds_bug_check);
|
Firebird::status_exception::raise(gds_bug_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute block length, recasting count to make sure the calculation
|
// Compute block length, recasting count to make sure the calculation
|
||||||
|
@ -4678,7 +4678,7 @@ static BOOLEAN batch_dsql_fetch(trdb* trdb,
|
|||||||
statement->rsr_rows_pending = 0;
|
statement->rsr_rows_pending = 0;
|
||||||
--statement->rsr_batch_count;
|
--statement->rsr_batch_count;
|
||||||
dequeue_receive(port);
|
dequeue_receive(port);
|
||||||
Firebird::status_longjmp_error::raise(user_status[1]);
|
Firebird::status_exception::raise(user_status[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->p_operation != op_fetch_response) {
|
if (packet->p_operation != op_fetch_response) {
|
||||||
@ -4839,7 +4839,7 @@ static BOOLEAN batch_gds_receive(trdb* trdb,
|
|||||||
tail->rrq_rows_pending = 0;
|
tail->rrq_rows_pending = 0;
|
||||||
--tail->rrq_batch_count;
|
--tail->rrq_batch_count;
|
||||||
dequeue_receive(port);
|
dequeue_receive(port);
|
||||||
Firebird::status_longjmp_error::raise(user_status[1]);
|
Firebird::status_exception::raise(user_status[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->p_operation != op_send) {
|
if (packet->p_operation != op_send) {
|
||||||
@ -5844,7 +5844,7 @@ static void move_error( STATUS status, ...)
|
|||||||
if (p_args >= end_args)
|
if (p_args >= end_args)
|
||||||
end_args[-1] = gds_arg_end;
|
end_args[-1] = gds_arg_end;
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(trdb->trdb_status_vector[1]);
|
Firebird::status_exception::raise(trdb->trdb_status_vector[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -333,7 +333,7 @@ void SRVR_multi_thread( PORT main_port, USHORT flags)
|
|||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if ((request_count++ % 4) == 0) {
|
if ((request_count++ % 4) == 0) {
|
||||||
Firebird::status_longjmp_error::raise(gds__virmemexh);
|
Firebird::status_exception::raise(gds__virmemexh);
|
||||||
}
|
}
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
#endif /* DEV_BUILD */
|
#endif /* DEV_BUILD */
|
||||||
@ -357,7 +357,7 @@ void SRVR_multi_thread( PORT main_port, USHORT flags)
|
|||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if ((request_count % 5) == 0) {
|
if ((request_count % 5) == 0) {
|
||||||
Firebird::status_longjmp_error::raise(gds__virmemexh);
|
Firebird::status_exception::raise(gds__virmemexh);
|
||||||
}
|
}
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
#endif /* DEV_BUILD */
|
#endif /* DEV_BUILD */
|
||||||
|
@ -227,11 +227,8 @@ static struct tdba *gddba;
|
|||||||
#define RESTORE_THREAD_DATA
|
#define RESTORE_THREAD_DATA
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#define EXIT(code) { tddba->exit_code = code; \
|
|
||||||
// LONGJMP(*reinterpret_cast<jmp_buf*>(&tddba->dba_env), 1); }
|
|
||||||
|
|
||||||
#define EXIT(code) { tddba->exit_code = code; \
|
#define EXIT(code) { tddba->exit_code = code; \
|
||||||
Firebird::status_longjmp_error::raise(0); }
|
Firebird::status_exception::raise(0); }
|
||||||
|
|
||||||
#define GSTAT_MSG_FAC 21
|
#define GSTAT_MSG_FAC 21
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "../jrd/isc_f_proto.h"
|
#include "../jrd/isc_f_proto.h"
|
||||||
#include "../jrd/thd.h"
|
#include "../jrd/thd.h"
|
||||||
#include "../jrd/enc_proto.h"
|
#include "../jrd/enc_proto.h"
|
||||||
|
#include "../include/fb_exception.h"
|
||||||
|
|
||||||
#ifdef WIN_NT
|
#ifdef WIN_NT
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
@ -210,7 +211,7 @@ static struct tdba *gddba;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define EXIT(code) { tddba->exit_code = code; \
|
#define EXIT(code) { tddba->exit_code = code; \
|
||||||
LONGJMP(tddba->dba_env, 1); }
|
Firebird::status_exception::raise(1); }
|
||||||
|
|
||||||
|
|
||||||
#ifdef NETWARE_386
|
#ifdef NETWARE_386
|
||||||
|
@ -87,7 +87,7 @@ typedef int (DLL_EXPORT* OUTPUTPROC) (SLONG, UCHAR *);
|
|||||||
|
|
||||||
#define EXIT(code) { tdsec->tsec_exit_code = (code); \
|
#define EXIT(code) { tdsec->tsec_exit_code = (code); \
|
||||||
if (tdsec->tsec_env != NULL) \
|
if (tdsec->tsec_env != NULL) \
|
||||||
Firebird::status_longjmp_error::raise(1); }
|
Firebird::status_exception::raise(1); }
|
||||||
|
|
||||||
typedef struct user_data {
|
typedef struct user_data {
|
||||||
int operation; /* what's to be done */
|
int operation; /* what's to be done */
|
||||||
|
@ -1767,7 +1767,7 @@ static void report_walw_bug_or_error(
|
|||||||
ib_fprintf(DEBUG_FD, "WAL writer encountered error, code=%d\n", code);
|
ib_fprintf(DEBUG_FD, "WAL writer encountered error, code=%d\n", code);
|
||||||
}
|
}
|
||||||
|
|
||||||
Firebird::status_longjmp_error::raise(status_vector[1]);
|
Firebird::status_exception::raise(status_vector[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user