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