Date: Wednesday, February 1, 2006 @ 13:45:52
Author: zsolt
Path: /cvsroot/carob/libmysequoia
Modified: src/CarobMySQL.cpp (1.45 -> 1.46) src/CarobStmt.cpp (1.20 ->
1.21) test/TestMySQLAPI.cpp (1.28 -> 1.29)
- implemented TimeStamp, DateTime support
- unit test for DateTime
-----------------------+
src/CarobMySQL.cpp | 7 ++---
src/CarobStmt.cpp | 4 +--
test/TestMySQLAPI.cpp | 60 ++++++++++++++++++++++++++++++------------------
3 files changed, 43 insertions(+), 28 deletions(-)
Index: libmysequoia/src/CarobMySQL.cpp
diff -u libmysequoia/src/CarobMySQL.cpp:1.45
libmysequoia/src/CarobMySQL.cpp:1.46
--- libmysequoia/src/CarobMySQL.cpp:1.45 Wed Feb 1 10:25:56 2006
+++ libmysequoia/src/CarobMySQL.cpp Wed Feb 1 13:45:52 2006
@@ -837,11 +837,10 @@
result += buffer;
field_len = *b.length;
break;
+ case MYSQL_TYPE_TIMESTAMP:
case MYSQL_TYPE_DATETIME:
- //TODO when Carob implements Timestamp, change this
- //lData = drsPtr->getAsInt64(i+1);
- lData = 0;
- getFromTime(&b,fPtr,&lData);
+ SQLTimeStamp ts = drsPtr->getTimeStamp(i+1);
+ getFromDateTime(&b,fPtr,&ts);
result += buffer;
field_len = *b.length;
break;
Index: libmysequoia/src/CarobStmt.cpp
diff -u libmysequoia/src/CarobStmt.cpp:1.20 libmysequoia/src/CarobStmt.cpp:1.21
--- libmysequoia/src/CarobStmt.cpp:1.20 Tue Jan 31 16:31:52 2006
+++ libmysequoia/src/CarobStmt.cpp Wed Feb 1 13:45:52 2006
@@ -762,8 +762,7 @@
break;
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
- //TODO implement it, but first wait for the implementation in Carob
-// result = new int64_t(liveResultSet->getAsInt64(colNo));
+ result = new SQLTimeStamp(liveResultSet->getTimeStamp(colNo));
break;
case MYSQL_TYPE_NULL:
break;
@@ -821,6 +820,7 @@
break;
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
+ delete (SQLTimeStamp *)buffer;
break;
case MYSQL_TYPE_NULL:
break;
Index: libmysequoia/test/TestMySQLAPI.cpp
diff -u libmysequoia/test/TestMySQLAPI.cpp:1.28
libmysequoia/test/TestMySQLAPI.cpp:1.29
--- libmysequoia/test/TestMySQLAPI.cpp:1.28 Fri Jan 20 10:33:21 2006
+++ libmysequoia/test/TestMySQLAPI.cpp Wed Feb 1 13:45:52 2006
@@ -211,8 +211,10 @@
void TestMySQLAPI::mysql_real_query_2_test(void)
{
- char *query = "insert into t1 (b,c,d,e,g,h) values (1,'a1','2006-01-01',
'1:2:3', 1.1, 1.1),"
- "(2,'a2','2006-01-02','4:5:6', 2.2,
2.2),(3,'a3','2006-01-03','7:8:9', 3.3, 3.3)";
+ char *query = "insert into t1 (b,c,d,e,f,g,h) values "
+ "(1,'a1','2006-01-01','1:2:3', '2006-01-01 1:2:3', 1.1, 1.1),"
+ "(2,'a2','2006-01-02','4:5:6', '2006-01-02 4:5:6', 2.2, 2.2),"
+ "(3,'a3','2006-01-03','7:8:9', '2006-01-03 7:8:9', 3.3, 3.3)";
// connect to the database
CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
@@ -341,17 +343,17 @@
void TestMySQLAPI::mysql_stmt_prepare_bind_exec_test(void)
{
MYSQL_STMT *stmt;
- MYSQL_BIND bind[5];
+ MYSQL_BIND bind[6];
int int_data;
- MYSQL_TIME date_data, time_data;
+ MYSQL_TIME date_data, time_data, ts_data;
float float_data;
double double_data;
- char *query = "insert into t1 (b,d,e,g,h) values (?,?,?,?,?)";
+ char *query = "insert into t1 (b,d,e,f,g,h) values (?,?,?,?,?,?)";
CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
CPPUNIT_ASSERT((stmt = mysql_stmt_init(mysql)) != 0);
CPPUNIT_ASSERT(mysql_stmt_prepare(stmt, query, strlen(query)) == 0);
- CPPUNIT_ASSERT(mysql_stmt_param_count(stmt) == 5);
+ CPPUNIT_ASSERT(mysql_stmt_param_count(stmt) == 6);
memset(bind, 0, sizeof(bind));
bind[0].buffer_type = MYSQL_TYPE_LONG;
@@ -365,25 +367,31 @@
bind[2].buffer = (char *)&time_data;
bind[2].buffer_length = sizeof(MYSQL_TIME);
- bind[3].buffer_type = MYSQL_TYPE_FLOAT;
- bind[3].buffer = (char *)&float_data;
+ bind[3].buffer_type = MYSQL_TYPE_DATETIME;
+ bind[3].buffer = (char *)&ts_data;
+ bind[3].buffer_length = sizeof(MYSQL_TIME);
- bind[4].buffer_type = MYSQL_TYPE_DOUBLE;
- bind[4].buffer = (char *)&double_data;
+ bind[4].buffer_type = MYSQL_TYPE_FLOAT;
+ bind[4].buffer = (char *)&float_data;
+
+ bind[5].buffer_type = MYSQL_TYPE_DOUBLE;
+ bind[5].buffer = (char *)&double_data;
CPPUNIT_ASSERT(mysql_stmt_bind_param(stmt, bind) == 0);
int_data = 4;
memset(&date_data, 0, sizeof(MYSQL_TIME));
+ memset(&ts_data, 0, sizeof(MYSQL_TIME));
+ ts_data.time_type = MYSQL_TIMESTAMP_DATETIME;
date_data.time_type = MYSQL_TIMESTAMP_DATE;
- date_data.year = 2006;
- date_data.month = 1;
- date_data.day = 4;
+ ts_data.year = date_data.year = 2006;
+ ts_data.month = date_data.month = 1;
+ ts_data.day = date_data.day = 4;
memset(&time_data, 0, sizeof(MYSQL_TIME));
time_data.time_type = MYSQL_TIMESTAMP_TIME;
- time_data.hour = 10;
- time_data.minute = 11;
- time_data.second = 12;
+ ts_data.hour = time_data.hour = 10;
+ ts_data.minute = time_data.minute = 11;
+ ts_data.second = time_data.second = 12;
float_data = 4.4;
double_data = 4.4;
@@ -392,15 +400,17 @@
int_data = 5;
memset(&date_data, 0, sizeof(MYSQL_TIME));
+ memset(&ts_data, 0, sizeof(MYSQL_TIME));
+ ts_data.time_type = MYSQL_TIMESTAMP_DATETIME;
date_data.time_type = MYSQL_TIMESTAMP_DATE;
- date_data.year = 2006;
- date_data.month = 1;
- date_data.day = 5;
+ ts_data.year = date_data.year = 2006;
+ ts_data.month = date_data.month = 1;
+ ts_data.day = date_data.day = 5;
memset(&time_data, 0, sizeof(MYSQL_TIME));
time_data.time_type = MYSQL_TIMESTAMP_TIME;
- time_data.hour = 13;
- time_data.minute = 14;
- time_data.second = 15;
+ ts_data.hour = time_data.hour = 13;
+ ts_data.minute = time_data.minute = 14;
+ ts_data.second = time_data.second = 15;
float_data = 5.5;
double_data = 5.5;
CPPUNIT_ASSERT(mysql_stmt_execute(stmt) == 0);
@@ -475,6 +485,12 @@
CPPUNIT_ASSERT(date.year == 2006);
CPPUNIT_ASSERT(date.month == 1);
CPPUNIT_ASSERT(date.day == count);
+ CPPUNIT_ASSERT(datetime.year == date.year);
+ CPPUNIT_ASSERT(datetime.month == date.month);
+ CPPUNIT_ASSERT(datetime.day == date.day);
+ CPPUNIT_ASSERT(datetime.hour == time.hour);
+ CPPUNIT_ASSERT(datetime.minute == time.minute);
+ CPPUNIT_ASSERT(datetime.second == time.second);
CPPUNIT_ASSERT(fabsf(float_data - count * 1.1) < 0.000001);
CPPUNIT_ASSERT(fabs(double_data - count * 1.1) < 0.000000000000001);
CPPUNIT_ASSERT(count++ == (unsigned int)int_res);
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits