Date: Tuesday, January 10, 2006 @ 12:22:44
  Author: csaba
    Path: /cvsroot/carob/libmysequoia

   Added: include/mysql_wrapper.h (1.1)
Modified: include/CarobMySQL.hpp (1.18 -> 1.19) include/CarobStmt.hpp (1.2
          -> 1.3) include/Utils.hpp (1.11 -> 1.12) src/CarobStmt.cpp (1.2
          -> 1.3) src/MySQLAPI.cpp (1.22 -> 1.23) test/TestMySQLAPI.cpp
          (1.14 -> 1.15) test/TestMySQLAPI.hpp (1.4 -> 1.5)

- added mysql_wrapper.h
- param check in bind_param()


-------------------------+
 include/CarobMySQL.hpp  |    2 
 include/CarobStmt.hpp   |    2 
 include/Utils.hpp       |    2 
 include/mysql_wrapper.h |    7 ++
 src/CarobStmt.cpp       |  117 ++++++++++++++++++++++++++++++----------------
 src/MySQLAPI.cpp        |    9 ---
 test/TestMySQLAPI.cpp   |    7 +-
 test/TestMySQLAPI.hpp   |    4 +
 8 files changed, 97 insertions(+), 53 deletions(-)


Index: libmysequoia/include/CarobMySQL.hpp
diff -u libmysequoia/include/CarobMySQL.hpp:1.18 
libmysequoia/include/CarobMySQL.hpp:1.19
--- libmysequoia/include/CarobMySQL.hpp:1.18    Tue Jan 10 08:56:10 2006
+++ libmysequoia/include/CarobMySQL.hpp Tue Jan 10 12:22:44 2006
@@ -23,7 +23,7 @@
 #define _CAROBMYSQL_HPP
 
 /* MySQL includes */
-#include <mysql.h>
+#include <mysql_wrapper.h>
 
 /* Carob includes */
 #include <ConnectionParameters.hpp>
Index: libmysequoia/include/CarobStmt.hpp
diff -u libmysequoia/include/CarobStmt.hpp:1.2 
libmysequoia/include/CarobStmt.hpp:1.3
--- libmysequoia/include/CarobStmt.hpp:1.2      Tue Jan 10 10:05:54 2006
+++ libmysequoia/include/CarobStmt.hpp  Tue Jan 10 12:22:44 2006
@@ -25,7 +25,7 @@
 #include <CarobMySQL.hpp>
 
 //MySQL include
-#include <mysql.h>
+#include <mysql_wrapper.h>
 
 //Carob includes
 #include <ParameterStatement.hpp>
Index: libmysequoia/include/Utils.hpp
diff -u libmysequoia/include/Utils.hpp:1.11 libmysequoia/include/Utils.hpp:1.12
--- libmysequoia/include/Utils.hpp:1.11 Tue Jan 10 08:56:10 2006
+++ libmysequoia/include/Utils.hpp      Tue Jan 10 12:22:44 2006
@@ -26,7 +26,7 @@
 #include <string>
 
 //MySQL includes
-#include <mysql.h>
+#include <mysql_wrapper.h>
 
 extern const char *error_sqlstate[];
 
Index: libmysequoia/include/mysql_wrapper.h
diff -u /dev/null libmysequoia/include/mysql_wrapper.h:1.1
--- /dev/null   Tue Jan 10 12:22:44 2006
+++ libmysequoia/include/mysql_wrapper.h        Tue Jan 10 12:22:44 2006
@@ -0,0 +1,7 @@
+#ifndef _MYSQL_WRAPPER_H
+#define _MYSQL_WRAPPER_H
+
+#define USE_OLD_FUNCTIONS
+#include <mysql.h>
+
+#endif /*_MYSQL_WRAPPER_H*/
Index: libmysequoia/src/CarobStmt.cpp
diff -u libmysequoia/src/CarobStmt.cpp:1.2 libmysequoia/src/CarobStmt.cpp:1.3
--- libmysequoia/src/CarobStmt.cpp:1.2  Tue Jan 10 10:05:54 2006
+++ libmysequoia/src/CarobStmt.cpp      Tue Jan 10 12:22:44 2006
@@ -29,7 +29,7 @@
 #include <Common.hpp>
 
 //MySQL includes
-#include <mysql.h>
+#include <mysql_wrapper.h>
 #include <my_alloc.h>
 #include <errmsg.h>
 
@@ -113,8 +113,43 @@
   }
   else
   {
-    memcpy(m_stmt->params, bind, sizeof(MYSQL_BIND) * m_stmt->param_count);
-    //TODO maybe more parameter check / structure initialization
+    MYSQL_BIND *p = m_stmt->params;
+    for (unsigned int no=1; no <= m_stmt->param_count && !result; no++, p++)
+    {
+      switch (p->buffer_type)
+      {
+        case MYSQL_TYPE_TINY:
+        case MYSQL_TYPE_SHORT:
+        case MYSQL_TYPE_LONG:
+        case MYSQL_TYPE_LONGLONG:
+        case MYSQL_TYPE_FLOAT:
+        case MYSQL_TYPE_DOUBLE:
+        case MYSQL_TYPE_TINY_BLOB:
+        case MYSQL_TYPE_MEDIUM_BLOB:
+        case MYSQL_TYPE_LONG_BLOB:
+        case MYSQL_TYPE_BLOB:
+        case MYSQL_TYPE_VARCHAR:
+        case MYSQL_TYPE_VAR_STRING:
+        case MYSQL_TYPE_STRING:
+          break;
+        case MYSQL_TYPE_TIME:
+        case MYSQL_TYPE_DATE:
+        case MYSQL_TYPE_DATETIME:
+        case MYSQL_TYPE_TIMESTAMP:
+        case MYSQL_TYPE_DECIMAL:
+        case MYSQL_TYPE_NEWDECIMAL:
+        case MYSQL_TYPE_NULL:
+        default:
+          set_error(CR_UNSUPPORTED_PARAM_TYPE, SQLT_UNKNOWN);
+          result = true;
+      }
+    }
+
+    if (!result)
+    {
+      memcpy(m_stmt->params, bind, sizeof(MYSQL_BIND) * m_stmt->param_count);
+      m_stmt->bind_param_done= true;
+    }
   }
   
   LOG4CXX_DEBUG(logger, "Leaving bind_param.");
@@ -141,43 +176,45 @@
           if (p->is_null)
             c_stmt->setNull(no);
           else
-            switch (p->buffer_type) {
-            case MYSQL_TYPE_TINY:
-              c_stmt->setByte(no, *(java_byte *)p->buffer);
-              break;
-            case MYSQL_TYPE_SHORT:
-              c_stmt->setShort(no, *(short *)p->buffer);
-              break;
-            case MYSQL_TYPE_LONG:
-              c_stmt->setInt(no, *(int *)p->buffer);
-              break;
-            case MYSQL_TYPE_LONGLONG:
-              c_stmt->setLong(no, *(long long *)p->buffer);
-              break;
-            case MYSQL_TYPE_FLOAT:
-              c_stmt->setFloat(no, *(float *)p->buffer);
-              break;
-            case MYSQL_TYPE_DOUBLE:
-              c_stmt->setDouble(no, *(double *)p->buffer);
-              break;
-            case MYSQL_TYPE_TINY_BLOB:
-            case MYSQL_TYPE_MEDIUM_BLOB:
-            case MYSQL_TYPE_LONG_BLOB:
-            case MYSQL_TYPE_BLOB:
-            case MYSQL_TYPE_VARCHAR:
-            case MYSQL_TYPE_VAR_STRING:
-            case MYSQL_TYPE_STRING:
-              c_stmt->setString(no, fromString(string((char *)p->buffer, 
p->buffer_length)));
-              break;
-  /*          case MYSQL_TYPE_TIME:
-            case MYSQL_TYPE_DATE:
-            case MYSQL_TYPE_DATETIME:
-            case MYSQL_TYPE_TIMESTAMP:
-            case MYSQL_TYPE_DECIMAL:
-            case MYSQL_TYPE_NEWDECIMAL:
-            case MYSQL_TYPE_NULL:
-            default:*/
-            //TODO support other types
+            switch (p->buffer_type)
+            {
+              case MYSQL_TYPE_TINY:
+                c_stmt->setByte(no, *(java_byte *)p->buffer);
+                break;
+              case MYSQL_TYPE_SHORT:
+                c_stmt->setShort(no, *(short *)p->buffer);
+                break;
+              case MYSQL_TYPE_LONG:
+                c_stmt->setInt(no, *(int *)p->buffer);
+                break;
+              case MYSQL_TYPE_LONGLONG:
+                c_stmt->setLong(no, *(long long *)p->buffer);
+                break;
+              case MYSQL_TYPE_FLOAT:
+                c_stmt->setFloat(no, *(float *)p->buffer);
+                break;
+              case MYSQL_TYPE_DOUBLE:
+                c_stmt->setDouble(no, *(double *)p->buffer);
+                break;
+              case MYSQL_TYPE_TINY_BLOB:
+              case MYSQL_TYPE_MEDIUM_BLOB:
+              case MYSQL_TYPE_LONG_BLOB:
+              case MYSQL_TYPE_BLOB:
+              case MYSQL_TYPE_VARCHAR:
+              case MYSQL_TYPE_VAR_STRING:
+              case MYSQL_TYPE_STRING:
+                c_stmt->setString(no, fromString(string((char *)p->buffer, 
p->buffer_length)));
+                break;
+/* TODO support other types
+              case MYSQL_TYPE_TIME:
+              case MYSQL_TYPE_DATE:
+              case MYSQL_TYPE_DATETIME:
+              case MYSQL_TYPE_TIMESTAMP:
+              case MYSQL_TYPE_DECIMAL:
+              case MYSQL_TYPE_NEWDECIMAL:
+              case MYSQL_TYPE_NULL:
+              default:
+*/
             }
         }
         c_stmt->execute();
Index: libmysequoia/src/MySQLAPI.cpp
diff -u libmysequoia/src/MySQLAPI.cpp:1.22 libmysequoia/src/MySQLAPI.cpp:1.23
--- libmysequoia/src/MySQLAPI.cpp:1.22  Tue Jan 10 10:05:54 2006
+++ libmysequoia/src/MySQLAPI.cpp       Tue Jan 10 12:22:44 2006
@@ -25,8 +25,7 @@
 #include <Utils.hpp>
 
 /* MySQL include */
-#define USE_OLD_FUNCTIONS
-#include <mysql.h>
+#include <mysql_wrapper.h>
 #include <my_alloc.h>
 #include <errmsg.h>
 
@@ -1113,16 +1112,12 @@
       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;
+    result = true;
   }
     
   LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_attr_set.");
Index: libmysequoia/test/TestMySQLAPI.cpp
diff -u libmysequoia/test/TestMySQLAPI.cpp:1.14 
libmysequoia/test/TestMySQLAPI.cpp:1.15
--- libmysequoia/test/TestMySQLAPI.cpp:1.14     Tue Jan 10 08:56:10 2006
+++ libmysequoia/test/TestMySQLAPI.cpp  Tue Jan 10 12:22:44 2006
@@ -19,8 +19,7 @@
  * Contributor(s): 
  */
 
-#define USE_OLD_FUNCTIONS
-#include <mysql.h>
+#include <mysql_wrapper.h>
 
 #include "TestMySQLAPI.hpp"
 #include "Globals.hpp"
@@ -102,13 +101,14 @@
   // TODO check error message
 }
 
+#ifdef USE_OLD_FUNCTIONS
 void TestMySQLAPI::mysql_connect_test(void)
 {
   MYSQL m;
 
   // connect specifying every parameter
   // without calling mysql_init() first
-  CPPUNIT_ASSERT(mysql_connect(&m, HOST, USER1, PASSWD1) != 0);  
+  CPPUNIT_ASSERT(mysql_connect(&m, HOST, USER1, PASSWD1) != 0);
   mysql_close(&m);
   
   // connect specifying every parameter
@@ -119,6 +119,7 @@
   CPPUNIT_ASSERT(mysql_connect(mysql, "", USER1, PASSWD1) != 0);  
   CPPUNIT_ASSERT(mysql_connect(mysql, 0, USER1, PASSWD1) != 0);  
 }
+#endif
 
 void TestMySQLAPI::mysql_select_db_test(void)
 {
Index: libmysequoia/test/TestMySQLAPI.hpp
diff -u libmysequoia/test/TestMySQLAPI.hpp:1.4 
libmysequoia/test/TestMySQLAPI.hpp:1.5
--- libmysequoia/test/TestMySQLAPI.hpp:1.4      Mon Jan  2 13:19:56 2006
+++ libmysequoia/test/TestMySQLAPI.hpp  Tue Jan 10 12:22:44 2006
@@ -33,7 +33,9 @@
     CPPUNIT_TEST (mysql_init_test);
     CPPUNIT_TEST (mysql_real_connect_test);
     CPPUNIT_TEST (mysql_real_connect_negative_test);
+#ifdef USE_OLD_FUNCTIONS
     CPPUNIT_TEST (mysql_connect_test);
+#endif
     CPPUNIT_TEST (mysql_select_db_test);
     CPPUNIT_TEST (mysql_select_db_negative_test);
     CPPUNIT_TEST (mysql_change_user_test);
@@ -56,7 +58,9 @@
   void mysql_init_test(void);
   void mysql_real_connect_test(void);
   void mysql_real_connect_negative_test(void);
+#ifdef USE_OLD_FUNCTIONS
   void mysql_connect_test(void);
+#endif
   void mysql_select_db_test(void);
   void mysql_select_db_negative_test(void);
   void mysql_change_user_test(void);

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

Reply via email to