Date: Tuesday, January 10, 2006 @ 09:40:27
  Author: csaba
    Path: /cvsroot/carob/libmysequoia/src

Modified: MySQLAPI.cpp (1.20 -> 1.21)

Implemented mysql_stmt_attr_get() and mysql_stmt_attr_set().


--------------+
 MySQLAPI.cpp |  117 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 92 insertions(+), 25 deletions(-)


Index: libmysequoia/src/MySQLAPI.cpp
diff -u libmysequoia/src/MySQLAPI.cpp:1.20 libmysequoia/src/MySQLAPI.cpp:1.21
--- libmysequoia/src/MySQLAPI.cpp:1.20  Tue Jan 10 08:56:10 2006
+++ libmysequoia/src/MySQLAPI.cpp       Tue Jan 10 09:40:27 2006
@@ -19,16 +19,15 @@
  * Contributor(s): 
  */
 
-#define USE_OLD_FUNCTIONS
-#include <mysql.h>
-#include <my_alloc.h>
-
 #include <CarobMySQL.hpp>
 #include <CarobStmt.hpp>
 
 #include <Utils.hpp>
 
 /* MySQL include */
+#define USE_OLD_FUNCTIONS
+#include <mysql.h>
+#include <my_alloc.h>
 #include <errmsg.h>
 
 /* log4cxx include */
@@ -37,6 +36,9 @@
 #include <log4cxx/propertyconfigurator.h>
 #include <log4cxx/helpers/exception.h>
 
+/* C lib includes */
+#include <climits>
+
 using namespace log4cxx;
 using namespace log4cxx::helpers;
 
@@ -1033,12 +1035,88 @@
   return 0;
 }
 
+my_bool
+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;
+
+    default:
+      result = true;
+  }
+  
+  LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_get.");
+  return result;
+}
+
+my_bool
+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.");
+  
+  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;
+  }
+  
+  if (result)
+    /* TODO set error to CR_NOT_IMPLEMENTED */
+    ;
+    
+  LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_set.");
+  return result;
+}
+
 int
 mysql_stmt_prepare (MYSQL_STMT * stmt, const char *query,
         unsigned long length)
 {
-  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_prepare.");
   int result = 0;
+
+  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_prepare.");
+
   if (isCarobObject(stmt))
     result = getCarobStmt(stmt)->prepare(query, length);
   else
@@ -1047,6 +1125,7 @@
     //Todo maybe better errorhandling?
     result = 1;
   }
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_prepare.");
   return result;
 }
@@ -1054,8 +1133,10 @@
 my_bool
 mysql_stmt_bind_param (MYSQL_STMT * stmt, MYSQL_BIND * bind)
 {
-  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_bind_param.");
   my_bool result = false;
+
+  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_bind_param.");
+
   if (isCarobObject(stmt))
     result = getCarobStmt(stmt)->bind_param(bind);
   else
@@ -1064,6 +1145,7 @@
     //Todo maybe better errorhandling?
     result = true;
   }
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_bind_param.");
   return result;
 }
@@ -1071,8 +1153,10 @@
 int
 mysql_stmt_execute (MYSQL_STMT * stmt)
 {
-  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_execute.");
   int result = 0;
+
+  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_execute.");
+
   if (isCarobObject(stmt))
     result = getCarobStmt(stmt)->execute();
   else
@@ -1081,6 +1165,7 @@
     //Todo maybe better errorhandling?
     result = 1;
   }
+
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_execute.");
   return result;
 }
@@ -1121,24 +1206,6 @@
 }
 
 my_bool
-mysql_stmt_attr_get (MYSQL_STMT * stmt, enum enum_stmt_attr_type option,
-         void *arg)
-{
-  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_attr_get.");
-  LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_get.");
-  return 0;
-}
-
-my_bool
-mysql_stmt_attr_set (MYSQL_STMT * stmt, enum enum_stmt_attr_type option,
-         const void *arg)
-{
-  LOG4CXX_DEBUG(logger, "Entering mysql_stmt_attr_set.");
-  LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_set.");
-  return 0;
-}
-
-my_bool
 mysql_stmt_bind_result (MYSQL_STMT * stmt, MYSQL_BIND * bind)
 {
   LOG4CXX_DEBUG(logger, "Entering mysql_stmt_bind_result.");

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

Reply via email to