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

Reply via email to