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