Date: Tuesday, January 17, 2006 @ 16:36:54
Author: marc
Path: /cvsroot/carob/odbsequoia/src
Modified: connect.cpp (1.8 -> 1.9) env.cpp (1.6 -> 1.7) explicit_type.cpp
(1.5 -> 1.6) stmt.cpp (1.9 -> 1.10)
Implemented new policy: all ODBC functions and only them start with:
this->clear_diags();
-------------------+
connect.cpp | 5 +++--
env.cpp | 2 ++
explicit_type.cpp | 15 ++++++++-------
stmt.cpp | 9 +++++----
4 files changed, 18 insertions(+), 13 deletions(-)
Index: odbsequoia/src/connect.cpp
diff -u odbsequoia/src/connect.cpp:1.8 odbsequoia/src/connect.cpp:1.9
--- odbsequoia/src/connect.cpp:1.8 Thu Jan 12 21:15:20 2006
+++ odbsequoia/src/connect.cpp Tue Jan 17 16:36:54 2006
@@ -47,7 +47,8 @@
SQLWCHAR *pass, SQLSMALLINT passlen)
{
SQLRETURN ret = SQL_SUCCESS;
- ODBCConnection * conn = (ODBCConnection *) conn_hdle;
+ ODBCConnection * self_p = static_cast<ODBCConnection *>(conn_hdle);
+ self_p->clear_diags();
char temp[MAX_VALUE_LEN];
@@ -90,7 +91,7 @@
connectionPrms(serverhost, port, vdbname,
fromSQLW(user, userlen), fromSQLW(pass, passlen),
DEBUG_LEVEL_DEBUG);
- conn->carob_conn = new Connection(connectionPrms);
+ self_p->carob_conn = new Connection(connectionPrms);
}
catch (CarobNS::CarobException& ce)
{
Index: odbsequoia/src/env.cpp
diff -u odbsequoia/src/env.cpp:1.6 odbsequoia/src/env.cpp:1.7
--- odbsequoia/src/env.cpp:1.6 Thu Jan 12 21:15:20 2006
+++ odbsequoia/src/env.cpp Tue Jan 17 16:36:54 2006
@@ -36,6 +36,8 @@
SQLSetEnvAttr(SQLHENV env_handle, SQLINTEGER attribute, SQLPOINTER value,
SQLINTEGER str_len)
{
+ static_cast<ODBCEnv *>(env_handle)->clear_diags();
+
SQLRETURN ret = SQL_ERROR;
switch (attribute)
Index: odbsequoia/src/explicit_type.cpp
diff -u odbsequoia/src/explicit_type.cpp:1.5
odbsequoia/src/explicit_type.cpp:1.6
--- odbsequoia/src/explicit_type.cpp:1.5 Mon Jan 16 20:01:00 2006
+++ odbsequoia/src/explicit_type.cpp Tue Jan 17 16:36:54 2006
@@ -60,13 +60,14 @@
SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle,
SQLHANDLE * OutputHandle)
{
- SQLRETURN ret = SQL_SUCCESS;
+ if (SQL_HANDLE_ENV != HandleType)
+ static_cast<ODBCItem *>(InputHandle)->clear_diags();
switch (HandleType)
{
case SQL_HANDLE_ENV:
*OutputHandle = new ODBCEnv;
- break;
+ return SQL_SUCCESS;
case SQL_HANDLE_DBC:
ODBCEnv * env = static_cast<ODBCEnv *>(InputHandle);
@@ -77,15 +78,12 @@
return conn->AllocStmt(OutputHandle);
case SQL_HANDLE_DESC:
- ret = SQL_ERROR;
- break;
+ return SQL_ERROR;
default:
- ret = SQL_ERROR;
- break;
+ return SQL_ERROR;
}
- return ret;
}
@@ -94,6 +92,9 @@
SQLRETURN
SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
{
+ // "If SQLFreeHandle returns SQL_ERROR, the handle is still valid."
+ static_cast<ODBCItem *>(Handle)->clear_diags();
+
SQLRETURN ret = SQL_SUCCESS;
// FIXME: leaking
return ret;
Index: odbsequoia/src/stmt.cpp
diff -u odbsequoia/src/stmt.cpp:1.9 odbsequoia/src/stmt.cpp:1.10
--- odbsequoia/src/stmt.cpp:1.9 Tue Jan 17 16:19:15 2006
+++ odbsequoia/src/stmt.cpp Tue Jan 17 16:36:54 2006
@@ -32,14 +32,14 @@
SQLExecDirectW(SQLHSTMT StatementHandle,
SQLWCHAR *StatementText, SQLINTEGER TextLength)
{
- ODBCStatement * stmt = static_cast<ODBCStatement *>(StatementHandle);
- return stmt->exec_directw(StatementText, TextLength);
+ ODBCStatement * self_p = static_cast<ODBCStatement *>(StatementHandle);
+ self_p->clear_diags();
+ return self_p->exec_directw(StatementText, TextLength);
}
SQLRETURN
ODBCStatement::exec_directw(const SQLWCHAR *StatementText, SQLINTEGER
TextLength)
{
- this->clear_diags();
try
{
const std::wstring wstext = fromSQLW(StatementText, TextLength);
@@ -63,7 +63,8 @@
SQLRETURN
SQLRowCount(SQLHSTMT shdle, SQLLEN * rowcount)
{
- const ODBCStatement * self_p = (ODBCStatement *)shdle;
+ ODBCStatement * self_p = (ODBCStatement *)shdle;
+ self_p->clear_diags();
if (S5 != self_p->state
&& S4 != self_p->state)
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits