MR_SQLDA_T *SQLDA;
EXEC SQL BEGIN DECLARE SECTION;
+int mr_sig_length;
int idummy;
char cdummy[MR_CDUMMY_LEN];
char stmt_buf[MR_STMTBUF_LEN];
/** Maybe this should be replaced by something like tytso's sql_error */
-#define INGRES_BAD_DATE1 41206
-#define INGRES_BAD_DATE2 40207
-#define INGRES_DEADLOCK 49900
+#define INGRES_BAD_DATE1 40206
+#define INGRES_BAD_DATE2 40207
+#define INGRES_DEADLOCK 49900
#define INGRES_BAD_COLUMN 30110
#define INGRES_ASGN_ERR 40204
#define INGRES_NO_STMT 30130
/*
-#define INGRES_BAD_INT
-#define INGRES_TIMEOUT
-#define INGRES_NO_RANGE
- */
-
-
-/*
- * ingerr: (supposedly) called when Ingres indicates an error.
- * I have not yet been able to get this to work to intercept a
- * database open error.
+ * ingerr: Called when Ingres indicates an error.
*/
void ingerr()
ingres_errno = -sqlca.sqlcode;
switch (ingres_errno) {
-/*
- * case INGRES_BAD_INT:
- * mr_errcode = MR_INTEGER;
- * break;
- */
- case INGRES_BAD_DATE1:
- case INGRES_BAD_DATE2:
+ case INGRES_BAD_DATE1:
+ case INGRES_BAD_DATE2:
mr_errcode = MR_DATE;
break;
- case INGRES_DEADLOCK:
+ case INGRES_DEADLOCK:
mr_errcode = MR_DEADLOCK;
com_err(whoami, 0, "INGRES deadlock detected");
break;
* com_err(whoami, 0, "timed out getting lock");
* break;
*/
-/* This probably has no equivalent.
- * case INGRES_NO_RANGE:
- * mr_errcode = MR_INGRES_SOFTFAIL;
- * com_err(whoami, 0, "INGRES missing range statement");
- * break;
- */
-#ifdef NEVER
- /* #ifdef-ing these out lets default: give me the INGRES text */
- case INGRES_BAD_COLUMN:
- mr_errcode = MR_INTERNAL;
- com_err(whoami, 0, "Bad column name in query table");
- break;
- case INGRES_ASGN_ERR:
- mr_errcode = MR_INTERNAL;
- com_err(whoami, 0, "Error in SQL assignment statement");
- break;
case INGRES_NO_CURSOR:
mr_errcode = MR_INTERNAL;
com_err(whoami, 0, "Cursor not opened");
mr_errcode = MR_INTERNAL;
com_err(whoami, 0, "Statement not declared");
break;
+#if 0
+ /* Taking these out during development lets default: give me the INGRES text */
+ case INGRES_BAD_COLUMN:
+ mr_errcode = MR_INTERNAL;
+ com_err(whoami, 0, "Bad column name in query table");
+ break;
+ case INGRES_ASGN_ERR:
+ mr_errcode = MR_INTERNAL;
+ com_err(whoami, 0, "Error in SQL assignment statement");
+ break;
#endif
default:
- /** Add the INGRES error_text to the alert message ??? **/
mr_errcode = MR_INGRES_ERR;
com_err(whoami, MR_INGRES_ERR, " code %d\n", ingres_errno);
EXEC SQL INQUIRE_SQL(:err_msg = errortext);
/* open the database */
#ifsql INGRES
EXEC SQL CONNECT moira;
+ if(ingres_errno)
+ return (ingres_errno);
EXEC SQL set lockmode session where level = table, timeout = :query_timeout;
EXEC SQL set lockmode on capacls where readlock = shared;
EXEC SQL set lockmode on alias where readlock = shared;
#ifsql INFORMIX
EXEC SQL DATABASE moira
#endsql
- return ingres_errno;
+
+ if(ingres_errno)
+ return(mr_errcode);
+
+ EXEC SQL SELECT SIZE(signature) INTO :mr_sig_length FROM users WHERE users_id=0; /* Harmless on second open */
+ if(ingres_errno)
+ return(mr_errcode);
+
+ return(MR_SUCCESS);
}
int mr_close_database()