Date: Wednesday, March 8, 2006 @ 21:04:32
  Author: marc
    Path: /cvsroot/carob/odbsequoia/src

Modified: descriptors.cpp (1.5 -> 1.6) descriptors.hpp (1.3 -> 1.4)
          descriptors_records.cpp (1.4 -> 1.5) descriptors_records.hpp
          (1.5 -> 1.6) stmt.cpp (1.15 -> 1.16)

Implemented SQL_SUCCESS_WITH_INFO warnings in SQLFetch().


-------------------------+
 descriptors.cpp         |   10 ++++++++--
 descriptors.hpp         |    2 +-
 descriptors_records.cpp |    6 +++---
 descriptors_records.hpp |    4 +++-
 stmt.cpp                |    4 ++--
 5 files changed, 17 insertions(+), 9 deletions(-)


Index: odbsequoia/src/descriptors.cpp
diff -u odbsequoia/src/descriptors.cpp:1.5 odbsequoia/src/descriptors.cpp:1.6
--- odbsequoia/src/descriptors.cpp:1.5  Wed Mar  8 20:05:00 2006
+++ odbsequoia/src/descriptors.cpp      Wed Mar  8 21:04:32 2006
@@ -23,6 +23,7 @@
 #include "descriptors.hpp"
 
 #include "util.hpp"
+#include "odbc_exception.hpp"
 
 #include "DriverResultSet.hpp"
 
@@ -101,7 +102,7 @@
 
 /** Fetch the current row of the DriverResultSet into our buffers */
 SQLRETURN
-ODBCAppDesc::fetchRow(CarobNS::DriverResultSet& rs)
+ODBCAppDesc::fetchRow(ODBCItem& calling_stmt, CarobNS::DriverResultSet& rs)
 {
     // FIXME: work in progress, not even half-implemented
 
@@ -120,8 +121,13 @@
         {
             AppDescRecord& record = * static_cast<AppDescRecord *>(*rec_col);
 
-            if (SQL_SUCCESS != record.fetch_col(rs, rs_col))
+            ODBSeqException * warning = record.fetch_col(rs, rs_col);
+            if (warning) {
                 ret = SQL_SUCCESS_WITH_INFO;
+                calling_stmt.push_diag_chain(*warning);
+                delete(warning);
+            }
+
         }
     }
 
Index: odbsequoia/src/descriptors.hpp
diff -u odbsequoia/src/descriptors.hpp:1.3 odbsequoia/src/descriptors.hpp:1.4
--- odbsequoia/src/descriptors.hpp:1.3  Wed Mar  8 18:50:25 2006
+++ odbsequoia/src/descriptors.hpp      Wed Mar  8 21:04:32 2006
@@ -107,7 +107,7 @@
              SQLLEN * StrLen_or_Ind);
 
     SQLRETURN
-    ODBCAppDesc::fetchRow(CarobNS::DriverResultSet& rs);
+    ODBCAppDesc::fetchRow(ODBCItem& calling_stmt, CarobNS::DriverResultSet& 
rs);
 
 };
 
Index: odbsequoia/src/descriptors_records.cpp
diff -u odbsequoia/src/descriptors_records.cpp:1.4 
odbsequoia/src/descriptors_records.cpp:1.5
--- odbsequoia/src/descriptors_records.cpp:1.4  Wed Mar  8 20:09:32 2006
+++ odbsequoia/src/descriptors_records.cpp      Wed Mar  8 21:04:32 2006
@@ -55,7 +55,7 @@
     return SQL_SUCCESS;
 }
 
-SQLRETURN
+ODBSeqException *
 AppDescRecord::fetch_col(CarobNS::DriverResultSet& rs, int rs_col)
 {
     if (rs.isNull(rs_col))
@@ -66,7 +66,7 @@
                                   L"because indicator_ptr is null");
    
         * indicator_ptr = SQL_NULL_DATA;
-        return SQL_SUCCESS;
+        return 0;
     }
 
     // case (type == SQL_C_INT)
@@ -77,7 +77,7 @@
     if (indicator_ptr != octet_length_ptr)
         *indicator_ptr = 0;
 
-    return SQL_SUCCESS;
+    return 0;
 }
 /*
  * Local Variables:
Index: odbsequoia/src/descriptors_records.hpp
diff -u odbsequoia/src/descriptors_records.hpp:1.5 
odbsequoia/src/descriptors_records.hpp:1.6
--- odbsequoia/src/descriptors_records.hpp:1.5  Wed Mar  8 20:05:00 2006
+++ odbsequoia/src/descriptors_records.hpp      Wed Mar  8 21:04:32 2006
@@ -34,6 +34,7 @@
 }
 
 namespace ODBSeqNS {
+class ODBSeqException;
 
 
 /** Part of records common to records of all descriptor types */
@@ -75,7 +76,8 @@
     SQLRETURN
     bind_col(SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr,
              SQLINTEGER BufferLength, SQLLEN * StrLen_or_Ind);
-    SQLRETURN
+    /** Returns a warning or zero. Caller has to delete the warning */
+    ODBSeqException *
     fetch_col(CarobNS::DriverResultSet& rs, int rs_col);
 
 public: // public to avoid cluttering the code with getters/setters
Index: odbsequoia/src/stmt.cpp
diff -u odbsequoia/src/stmt.cpp:1.15 odbsequoia/src/stmt.cpp:1.16
--- odbsequoia/src/stmt.cpp:1.15        Wed Mar  8 18:47:14 2006
+++ odbsequoia/src/stmt.cpp     Wed Mar  8 21:04:32 2006
@@ -145,8 +145,8 @@
     if (this->state == S5)
         this->state = S6;
 
-    return ARD->fetchRow(*(carob_stmt->getResultSet()));
-
+    return ARD->fetchRow(*this, *(carob_stmt->getResultSet()));
+    
 }
 
 SQLRETURN

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to