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

Reply via email to