Changeset: 54f574debd57 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/54f574debd57
Modified Files:
clients/odbc/driver/ODBCDbc.h
clients/odbc/driver/SQLConnect.c
clients/odbc/driver/SQLExecDirect.c
clients/odbc/driver/SQLExecute.c
clients/odbc/driver/SQLFetch.c
clients/odbc/driver/SQLGetConnectAttr.c
clients/odbc/driver/SQLMoreResults.c
clients/odbc/driver/SQLSetConnectAttr.c
Branch: odbc-tls
Log Message:
Get rid of sql_attr_connection_timeout
diffs (155 lines):
diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h
--- a/clients/odbc/driver/ODBCDbc.h
+++ b/clients/odbc/driver/ODBCDbc.h
@@ -61,7 +61,6 @@ typedef struct tODBCDRIVERDBC {
int mapToLongVarchar; /* when > 0 we map WVARCHAR to WLONGVARCHAR,
default 0 */
SQLUINTEGER sql_attr_autocommit;
SQLUINTEGER sql_attr_metadata_id;
- SQLUINTEGER sql_attr_connection_timeout;
/* MonetDB connection handle & status information */
Mapi mid; /* connection with server */
diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c
--- a/clients/odbc/driver/SQLConnect.c
+++ b/clients/odbc/driver/SQLConnect.c
@@ -550,9 +550,6 @@ MNDBConnectSettings(ODBCDbc *dbc, const
if (!SQL_SUCCEEDED(rc))
return rc;
- /* set timeout after we're connected */
- mapi_timeout(dbc->mid, dbc->sql_attr_connection_timeout * 1000);
-
return SQL_SUCCESS;
}
diff --git a/clients/odbc/driver/SQLExecDirect.c
b/clients/odbc/driver/SQLExecDirect.c
--- a/clients/odbc/driver/SQLExecDirect.c
+++ b/clients/odbc/driver/SQLExecDirect.c
@@ -40,6 +40,7 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL
const char *err;
MapiMsg ret;
MapiHdl hdl;
+ long timeout;
hdl = stmt->hdl;
@@ -93,7 +94,8 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL
break;
case MTIMEOUT:
/* Timeout expired / Communication link failure */
- addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ?
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+ timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT);
+ addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01",
mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
err = mapi_result_error(hdl);
diff --git a/clients/odbc/driver/SQLExecute.c b/clients/odbc/driver/SQLExecute.c
--- a/clients/odbc/driver/SQLExecute.c
+++ b/clients/odbc/driver/SQLExecute.c
@@ -434,6 +434,7 @@ MNDBExecute(ODBCStmt *stmt)
int i;
ODBCDesc *desc;
SQLLEN offset;
+ long timeout;
/* check statement cursor state, query should be prepared */
if (stmt->State == INITED ||
@@ -529,7 +530,8 @@ MNDBExecute(ODBCStmt *stmt)
break;
case MTIMEOUT:
/* Timeout expired / Communication link failure */
- addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ?
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+ timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT);
+ addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01",
mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
errstr = mapi_result_error(hdl);
diff --git a/clients/odbc/driver/SQLFetch.c b/clients/odbc/driver/SQLFetch.c
--- a/clients/odbc/driver/SQLFetch.c
+++ b/clients/odbc/driver/SQLFetch.c
@@ -41,6 +41,7 @@ MNDBFetch(ODBCStmt *stmt, SQLUSMALLINT *
int i;
SQLULEN row;
SQLLEN offset;
+ long timeout;
/* stmt->startRow is the (0 based) index of the first row we
* stmt->need to fetch */
@@ -102,7 +103,8 @@ MNDBFetch(ODBCStmt *stmt, SQLUSMALLINT *
WriteValue(RowStatusArray,
SQL_ROW_ERROR);
/* Timeout expired / Communication
* link failure */
- addStmtError(stmt,
stmt->Dbc->sql_attr_connection_timeout ? "HYT00" : "08S01",
mapi_error_str(stmt->Dbc->mid), 0);
+ timeout = msetting_long(stmt->Dbc->settings,
MP_REPLY_TIMEOUT);
+ addStmtError(stmt, timeout > 0 ? "HYT00" :
"08S01", mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
if (RowStatusArray)
diff --git a/clients/odbc/driver/SQLGetConnectAttr.c
b/clients/odbc/driver/SQLGetConnectAttr.c
--- a/clients/odbc/driver/SQLGetConnectAttr.c
+++ b/clients/odbc/driver/SQLGetConnectAttr.c
@@ -41,6 +41,7 @@ MNDBGetConnectAttr(ODBCDbc *dbc,
SQLINTEGER BufferLength,
SQLINTEGER *StringLengthPtr)
{
+ long timeout;
/* check input parameters */
if (ValuePtr == NULL) {
/* Invalid use of null pointer */
@@ -69,7 +70,10 @@ MNDBGetConnectAttr(ODBCDbc *dbc,
WriteData(ValuePtr, dbc->mid && mapi_is_connected(dbc->mid) ?
SQL_CD_FALSE : SQL_CD_TRUE, SQLUINTEGER);
break;
case SQL_ATTR_CONNECTION_TIMEOUT: /* SQLUINTEGER */
- WriteData(ValuePtr, dbc->sql_attr_connection_timeout,
SQLUINTEGER);
+ timeout = msetting_long(dbc->settings, MP_REPLY_TIMEOUT);
+ if (timeout < 0)
+ timeout = 0;
+ WriteData(ValuePtr, (SQLUINTEGER)timeout, SQLUINTEGER);
break;
case SQL_ATTR_LOGIN_TIMEOUT: /* SQLUINTEGER */
/* SQL_LOGIN_TIMEOUT */
diff --git a/clients/odbc/driver/SQLMoreResults.c
b/clients/odbc/driver/SQLMoreResults.c
--- a/clients/odbc/driver/SQLMoreResults.c
+++ b/clients/odbc/driver/SQLMoreResults.c
@@ -37,6 +37,7 @@ SQLRETURN SQL_API
SQLMoreResults(SQLHSTMT StatementHandle)
{
ODBCStmt *stmt = (ODBCStmt *) StatementHandle;
+ long timeout;
#ifdef ODBCDEBUG
ODBCLOG("SQLMoreResults %p\n", StatementHandle);
@@ -60,7 +61,8 @@ SQLMoreResults(SQLHSTMT StatementHandle)
return SQL_ERROR;
case MTIMEOUT:
/* Timeout expired / Communication link failure */
- addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ?
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+ timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT);
+ addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01",
mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
return ODBCInitResult(stmt);
diff --git a/clients/odbc/driver/SQLSetConnectAttr.c
b/clients/odbc/driver/SQLSetConnectAttr.c
--- a/clients/odbc/driver/SQLSetConnectAttr.c
+++ b/clients/odbc/driver/SQLSetConnectAttr.c
@@ -41,6 +41,7 @@ MNDBSetConnectAttr(ODBCDbc *dbc,
SQLINTEGER StringLength)
{
(void) StringLength; /* Stefan: unused!? */
+ long timeout;
switch (Attribute) {
case SQL_ATTR_AUTOCOMMIT: /* SQLUINTEGER */
@@ -66,9 +67,10 @@ MNDBSetConnectAttr(ODBCDbc *dbc,
addDbcError(dbc, "IM001", NULL, 0);
return SQL_ERROR;
case SQL_ATTR_CONNECTION_TIMEOUT: /* SQLUINTEGER */
- dbc->sql_attr_connection_timeout = (SQLUINTEGER) (uintptr_t)
ValuePtr;
+ timeout = 1000 * (long)(uintptr_t) ValuePtr;
+ msetting_set_long(dbc->settings, MP_CONNECT_TIMEOUT, timeout);
if (dbc->mid)
- mapi_timeout(dbc->mid, dbc->sql_attr_connection_timeout
* 1000);
+ mapi_timeout(dbc->mid, timeout);
break;
case SQL_ATTR_LOGIN_TIMEOUT: /* SQLUINTEGER */
/* currently only value 0 (no timeout) is accepted
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]