Date: Monday, June 5, 2006 @ 20:25:36
Author: gilles
Path: /cvsroot/carob/carob
Modified: include/Connection.hpp (1.66 -> 1.67)
include/ConnectionParameters.hpp (1.23 -> 1.24)
include/DriverResultSet.hpp (1.39 -> 1.40) src/Connection.cpp
(1.75 -> 1.76) src/ConnectionParameters.cpp (1.18 -> 1.19)
src/DriverResultSet.cpp (1.53 -> 1.54)
Added ResultSet SQL warnings retrieval following SEQUOIA-128 part of fix
Partly fixes CAROB-73
----------------------------------+
include/Connection.hpp | 4 +++-
include/ConnectionParameters.hpp | 10 ++++++++--
include/DriverResultSet.hpp | 8 ++++++--
src/Connection.cpp | 13 +++++++++++--
src/ConnectionParameters.cpp | 6 ++++--
src/DriverResultSet.cpp | 6 ++++++
6 files changed, 38 insertions(+), 9 deletions(-)
Index: carob/include/Connection.hpp
diff -u carob/include/Connection.hpp:1.66 carob/include/Connection.hpp:1.67
--- carob/include/Connection.hpp:1.66 Mon Apr 24 09:33:08 2006
+++ carob/include/Connection.hpp Mon Jun 5 20:25:36 2006
@@ -31,7 +31,7 @@
#include <list>
namespace {
-const int32_t ProtocolVersion = (static_cast<int32_t>(2) /* major */ << 16)
+const int32_t ProtocolVersion = (static_cast<int32_t>(3) /* major */ << 16)
+ 0 /* minor */;
}
@@ -446,6 +446,8 @@
/** Persistent connection identifier if persistentConnection is true */
int64_t persistent_connection_id;
+ /** True if the controller should retrieve SQL warnings */
+ bool retrieve_sql_warnings;
/** Controller connection policy used for this connection */
AbstractControllerConnectPolicy* connect_policy_ptr;
/** The parameters of this connection */
Index: carob/include/ConnectionParameters.hpp
diff -u carob/include/ConnectionParameters.hpp:1.23
carob/include/ConnectionParameters.hpp:1.24
--- carob/include/ConnectionParameters.hpp:1.23 Thu May 11 15:42:51 2006
+++ carob/include/ConnectionParameters.hpp Mon Jun 5 20:25:36 2006
@@ -86,6 +86,7 @@
#define DEFAULT_POLICY ROUND_ROBIN
#define DEFAULT_RETRY_INTERVAL 10
#define DEFAULT_CONNECTION_PERSISTENCY false
+#define DEFAULT_RETRIEVE_SQL_WARNINGS false
/**
* Exception on connection send when no more controller is reachable in the
@@ -120,7 +121,8 @@
const std::wstring& upass = DEFAULT_PASSWD,
ConnectPolicy cp = DEFAULT_POLICY,
int retryIntervalInMs =
DEFAULT_RETRY_INTERVAL,
- bool persistentConnection =
DEFAULT_CONNECTION_PERSISTENCY)
+ bool persistentConnection =
DEFAULT_CONNECTION_PERSISTENCY,
+ bool retrieveSQLWarnings =
DEFAULT_RETRIEVE_SQL_WARNINGS)
throw (ConnectionException, UnexpectedException);
virtual ~ConnectionParameters();
/**
@@ -156,8 +158,10 @@
ConnectPolicy getConnectPolicy() const { return connect_policy; }
/** Gives the retry interval in ms */
int getRetryInterval() const { return retry_interval_in_ms; }
- /** Tell wheter the connection must remain persistent */
+ /** Tell whether the connection must remain persistent */
bool getPersistentConnection() const { return
persistent_connections; }
+ /** whether the controller should retrieve SQL warnings */
+ bool getRetrieveSQLWarnings() const { return
retrieve_sql_warnings; }
private:
/** List of controllers to connect to */
std::vector<ControllerInfo> controller_list;
@@ -176,6 +180,8 @@
* backends
*/
bool persistent_connections;
+ /** Whether to retrieve the sql warnings */
+ bool retrieve_sql_warnings;
};
} //namespace CarobNS
Index: carob/include/DriverResultSet.hpp
diff -u carob/include/DriverResultSet.hpp:1.39
carob/include/DriverResultSet.hpp:1.40
--- carob/include/DriverResultSet.hpp:1.39 Thu Mar 23 15:38:10 2006
+++ carob/include/DriverResultSet.hpp Mon Jun 5 20:25:36 2006
@@ -434,6 +434,11 @@
*/
bool isNull(int columnIndex) const
throw (DriverException, UnexpectedException);
+ /**
+ * Gets the SQL warnings associated to this ResultSet
+ * @return a warning chain as a BackendException
+ */
+ BackendException* getWarnings() {return warningsPtr;}
protected:
/**
* De-serialize only data rows, not any metadata.
@@ -495,9 +500,8 @@
/** Concurrency for this ResultSet */
int resultSetConcurrency;
-//TODO:
/** Warning chain */
- //protected SQLWarning warnings = null;
+ BackendException* warningsPtr;
/** Statement corresponding to this ResultSet, if any (not for metadata) */
Statement* owningStatementPtr;
/** The driver connection we were received from. Useful for streaming */
Index: carob/src/Connection.cpp
diff -u carob/src/Connection.cpp:1.75 carob/src/Connection.cpp:1.76
--- carob/src/Connection.cpp:1.75 Fri May 5 19:00:56 2006
+++ carob/src/Connection.cpp Mon Jun 5 20:25:36 2006
@@ -73,6 +73,7 @@
writeExecutedInTransaction(false),
mustBeginTransaction(false),
persistent_connection(false),
+ retrieve_sql_warnings(false),
connect_policy_ptr(NULL),
parameters(prms)
{
@@ -88,6 +89,7 @@
+ toWString(static_cast<int>(parameters.getConnectPolicy())));
}
persistent_connection = parameters.getPersistentConnection();
+ retrieve_sql_warnings = parameters.getRetrieveSQLWarnings();
for (int connectRetry = 0; connectRetry<CONNECT_RETRIES; connectRetry++)
{
try
@@ -268,7 +270,8 @@
authenticated = false,
authenticatedRead = false,
lineSeparatorSent = false,
- persistentConnectionSent = false;
+ persistentConnectionSent = false,
+ persistentConnectionRead = false;
try
{
*driverSocketPtr >> vdbFound;
@@ -291,8 +294,11 @@
*driverSocketPtr << LINE_SEPARATOR;
lineSeparatorSent = true;
*driverSocketPtr << persistent_connection;
+ persistentConnectionSent = true;
if (persistent_connection)
*driverSocketPtr >> persistent_connection_id;
+ persistentConnectionRead = true;
+ *driverSocketPtr << retrieve_sql_warnings;
}
catch (SocketIOException sockIOExcpt)
{
@@ -303,8 +309,10 @@
msg += L"sending line separator";
else if (!persistentConnectionSent)
msg += L"sending whether to use persistent connections";
- else
+ else if (!persistentConnectionRead)
msg += L"reading persistent connection id";
+ else
+ msg += L"sending whether to retrieve SQL warnings";
throw AuthenticationException(msg
+ L"(" + sockIOExcpt.description() + L")");
return false;
@@ -1193,6 +1201,7 @@
*driverSocketPtr<<persistent_connection;
if (persistent_connection)
*driverSocketPtr<<persistent_connection_id;
+ *driverSocketPtr<<retrieve_sql_warnings;
if (isInfoEnabled())
logInfo(fctName, L"Transparent reconnection succeeded");
}
Index: carob/src/ConnectionParameters.cpp
diff -u carob/src/ConnectionParameters.cpp:1.18
carob/src/ConnectionParameters.cpp:1.19
--- carob/src/ConnectionParameters.cpp:1.18 Tue Apr 4 18:35:58 2006
+++ carob/src/ConnectionParameters.cpp Mon Jun 5 20:25:36 2006
@@ -74,14 +74,16 @@
const std::wstring& upass /*= DEFAULT_PASSWD*/,
ConnectPolicy cp /*= DEFAULT_POLICY*/,
int retryIntervalInMs /*= DEFAULT_RETRY_INTERVAL*/,
- bool persistentConnections /*= DEFAULT_CONNECTION_PERSISTENCY */)
+ bool persistentConnections /*= DEFAULT_CONNECTION_PERSISTENCY */,
+ bool retrieveSQLWarnings /*= DEFAULT_RETRIEVE_SQL_WARNINGS */)
throw (ConnectionException, UnexpectedException) :
database_name(checkDatabaseName(db)),
user_name(uname),
user_pass(upass),
connect_policy(cp),
retry_interval_in_ms(retryIntervalInMs),
- persistent_connections(persistentConnections)
+ persistent_connections(persistentConnections),
+ retrieve_sql_warnings(retrieveSQLWarnings)
{
addController(host, port);
}
Index: carob/src/DriverResultSet.cpp
diff -u carob/src/DriverResultSet.cpp:1.53 carob/src/DriverResultSet.cpp:1.54
--- carob/src/DriverResultSet.cpp:1.53 Fri May 5 19:00:56 2006
+++ carob/src/DriverResultSet.cpp Mon Jun 5 20:25:36 2006
@@ -124,6 +124,7 @@
for (cnt=0; cnt<nulls.size(); cnt++)
nulls[cnt].clear();
nulls.clear();
+ delete warningsPtr;
}
}
DriverResultSet::DriverResultSet(Connection* conPtr) throw (ProtocolException,
@@ -136,12 +137,17 @@
wasNullFlag(false),
resultSetType(0),
resultSetConcurrency(0),
+warningsPtr(NULL),
owningStatementPtr(NULL),
isClosed(true)
{
wstring fctName(L"DriverResultSet::DriverResultSet");
connectionPtr = conPtr;
const DriverSocket& socket = conPtr->getDriverSocket();
+ bool hasWarnings = false;
+ socket>>hasWarnings;
+ if (hasWarnings)
+ warningsPtr = new BackendException(socket);
// Get the ResultSet metadata, deserialize columns information
socket>>nbOfColumns;
for (int i=0; i<nbOfColumns; i++)
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits