Date: Tuesday, January 10, 2006 @ 10:05:54
  Author: csaba
    Path: /cvsroot/carob/libmysequoia

Modified: include/CarobStmt.hpp (1.1 -> 1.2) src/CarobStmt.cpp (1.1 ->
          1.2) src/MySQLAPI.cpp (1.21 -> 1.22)

Error handling in mysql_stmt_attr_get() and mysql_stmt_attr_set().


-----------------------+
 include/CarobStmt.hpp |    5 +
 src/CarobStmt.cpp     |    1 
 src/MySQLAPI.cpp      |  132 ++++++++++++++++++++++++++++--------------------
 3 files changed, 83 insertions(+), 55 deletions(-)


Index: libmysequoia/include/CarobStmt.hpp
diff -u libmysequoia/include/CarobStmt.hpp:1.1 
libmysequoia/include/CarobStmt.hpp:1.2
--- libmysequoia/include/CarobStmt.hpp:1.1      Tue Jan 10 08:56:10 2006
+++ libmysequoia/include/CarobStmt.hpp  Tue Jan 10 10:05:54 2006
@@ -48,6 +48,7 @@
   static bool free_result(MYSQL_STMT *stmt);
 
   MYSQL_STMT *getMYSQL_STMT() {return m_stmt;}
+
 private:
   MYSQL_STMT *m_stmt;
   CarobNS::ParameterStatement *c_stmt;
@@ -56,6 +57,8 @@
   // logger
   static log4cxx::LoggerPtr logger;
 
+  void clear();
+
   /**
    * Set the current mysql error to the specified one. The mysql error message 
will be filled from the error list.
    * @param errcode mysql error code
@@ -70,8 +73,6 @@
    * @param sqlstate ansi sql specific error message
    */
   void set_error (int errcode, const char *errmsg, const char *sqlstate);
-
-  void clear();
 };
 
 #endif /*_CAROBSTMT_HPP*/
Index: libmysequoia/src/CarobStmt.cpp
diff -u libmysequoia/src/CarobStmt.cpp:1.1 libmysequoia/src/CarobStmt.cpp:1.2
--- libmysequoia/src/CarobStmt.cpp:1.1  Tue Jan 10 08:56:10 2006
+++ libmysequoia/src/CarobStmt.cpp      Tue Jan 10 10:05:54 2006
@@ -100,6 +100,7 @@
 CarobStmt::bind_param(const MYSQL_BIND *bind)
 {
   LOG4CXX_DEBUG(logger, "Entering bind_param.");
+ 
   bool result = false;
 
   if (!m_stmt->param_count)
Index: libmysequoia/src/MySQLAPI.cpp
diff -u libmysequoia/src/MySQLAPI.cpp:1.21 libmysequoia/src/MySQLAPI.cpp:1.22
--- libmysequoia/src/MySQLAPI.cpp:1.21  Tue Jan 10 09:40:27 2006
+++ libmysequoia/src/MySQLAPI.cpp       Tue Jan 10 10:05:54 2006
@@ -1029,8 +1029,10 @@
 mysql_stmt_close (MYSQL_STMT *stmt)
 {
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_close.");
+
   if (isCarobObject(stmt))
     delete getCarobStmt(stmt);
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_close.");
   return 0;
 }
@@ -1039,28 +1041,37 @@
 mysql_stmt_attr_get (MYSQL_STMT * stmt, enum enum_stmt_attr_type option,
          void *arg)
 {
-  my_bool result = false;
-  
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_attr_get.");
 
-  switch (option)
-  {
-    case STMT_ATTR_UPDATE_MAX_LENGTH:
-      *(my_bool *)arg = stmt->update_max_length;
-      break;
-
-    case STMT_ATTR_CURSOR_TYPE:
-      *(ulong *)arg = stmt->flags;
-      break;
-
-    case STMT_ATTR_PREFETCH_ROWS:
-      *(ulong *)arg = stmt->prefetch_rows;
-      break;
+  my_bool result = false;
 
-    default:
-      result = true;
-  }
+  if (isCarobObject(stmt))
+  {
+    switch (option)
+    {
+      case STMT_ATTR_UPDATE_MAX_LENGTH:
+        *(my_bool *)arg = stmt->update_max_length;
+        break;
+  
+      case STMT_ATTR_CURSOR_TYPE:
+        *(ulong *)arg = stmt->flags;
+        break;
+  
+      case STMT_ATTR_PREFETCH_ROWS:
+        *(ulong *)arg = stmt->prefetch_rows;
+        break;
   
+      default:
+        result = true;
+    }
+  }
+  else
+  {
+    LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized 
with mysql_stmt_init.");
+    //Todo maybe better errorhandling?
+    result = true;
+  }  
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_get.");
   return result;
 }
@@ -1069,41 +1080,50 @@
 mysql_stmt_attr_set (MYSQL_STMT * stmt, enum enum_stmt_attr_type option,
          const void *arg)
 {
-  my_bool result = false;
-  
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_attr_set.");
+
+  my_bool result = false;
   
-  switch (option)
+  if (isCarobObject(stmt))
   {
-    case STMT_ATTR_UPDATE_MAX_LENGTH:
-      stmt->update_max_length = arg ? *(my_bool *)arg : false;
-      break;
-
-    case STMT_ATTR_CURSOR_TYPE:
-      ulong flags;
-      flags = arg ? *(ulong *)arg : (ulong) CURSOR_TYPE_NO_CURSOR;
-      if (flags == CURSOR_TYPE_NO_CURSOR || flags == CURSOR_TYPE_READ_ONLY)
-        stmt->flags = flags;
-      else
-        result = true;
-      break;
-
-    case STMT_ATTR_PREFETCH_ROWS:
-      ulong prefetch_rows;
-      prefetch_rows = arg ? *(ulong *)arg : (ulong) 1;
-      if (prefetch_rows >= 1 && prefetch_rows <= ULONG_MAX)
-        stmt->prefetch_rows = prefetch_rows;
-      else
+    switch (option)
+    {
+      case STMT_ATTR_UPDATE_MAX_LENGTH:
+        stmt->update_max_length = arg ? *(my_bool *)arg : false;
+        break;
+  
+      case STMT_ATTR_CURSOR_TYPE:
+        ulong flags;
+        flags = arg ? *(ulong *)arg : (ulong) CURSOR_TYPE_NO_CURSOR;
+        if (flags == CURSOR_TYPE_NO_CURSOR || flags == CURSOR_TYPE_READ_ONLY)
+          stmt->flags = flags;
+        else
+          result = true;
+        break;
+  
+      case STMT_ATTR_PREFETCH_ROWS:
+        ulong prefetch_rows;
+        prefetch_rows = arg ? *(ulong *)arg : (ulong) 1;
+        if (prefetch_rows >= 1 && prefetch_rows <= ULONG_MAX)
+          stmt->prefetch_rows = prefetch_rows;
+        else
+          result = true;
+        break;
+  
+      default:
         result = true;
-      break;
+    }
 
-    default:
-      result = true;
+//  TODO check if we need this
+//    if (result)
+//      getCarobStmt(stmt)->set_error(CR_NOT_IMPLEMENTED, SQLT_UNKNOWN);
+  }
+  else
+  {
+    LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized 
with mysql_stmt_init.");
+    //Todo maybe better errorhandling?
+    result = 1;
   }
-  
-  if (result)
-    /* TODO set error to CR_NOT_IMPLEMENTED */
-    ;
     
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_set.");
   return result;
@@ -1113,10 +1133,10 @@
 mysql_stmt_prepare (MYSQL_STMT * stmt, const char *query,
         unsigned long length)
 {
-  int result = 0;
-
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_prepare.");
 
+  int result = 0;
+
   if (isCarobObject(stmt))
     result = getCarobStmt(stmt)->prepare(query, length);
   else
@@ -1133,10 +1153,10 @@
 my_bool
 mysql_stmt_bind_param (MYSQL_STMT * stmt, MYSQL_BIND * bind)
 {
-  my_bool result = false;
-
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_bind_param.");
 
+  my_bool result = false;
+
   if (isCarobObject(stmt))
     result = getCarobStmt(stmt)->bind_param(bind);
   else
@@ -1153,10 +1173,10 @@
 int
 mysql_stmt_execute (MYSQL_STMT * stmt)
 {
-  int result = 0;
-
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_execute.");
 
+  int result = 0;
+
   if (isCarobObject(stmt))
     result = getCarobStmt(stmt)->execute();
   else
@@ -1174,7 +1194,9 @@
 mysql_stmt_errno (MYSQL_STMT * stmt)
 {
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_errno.");
+
   unsigned int result = stmt ? stmt->last_errno : 0;
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_errno.");
   return result;
 }
@@ -1183,7 +1205,9 @@
 mysql_stmt_error (MYSQL_STMT * stmt)
 {
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_error.");
+
   const char *result = stmt ? stmt->last_error : 0;
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_error.");
   return result;
 }
@@ -1192,7 +1216,9 @@
 mysql_stmt_sqlstate (MYSQL_STMT * stmt)
 {
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_sqlstate.");
+
   const char *result = stmt ? stmt->sqlstate : 0;
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_sqlstate.");
   return result;
 }

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

Reply via email to