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