Date: Wednesday, January 18, 2006 @ 13:13:59
Author: zsolt
Path: /cvsroot/carob/libmysequoia/src
Modified: CarobStmt.cpp (1.12 -> 1.13)
implemented handling of Time, Date, DateTime. DateTime is not fully supported,
because is still buggy in Carob. It's supported only at supplying to a prepared
statement input parameter.
---------------+
CarobStmt.cpp | 37 ++++++++++++++++++++++---------------
1 files changed, 22 insertions(+), 15 deletions(-)
Index: libmysequoia/src/CarobStmt.cpp
diff -u libmysequoia/src/CarobStmt.cpp:1.12 libmysequoia/src/CarobStmt.cpp:1.13
--- libmysequoia/src/CarobStmt.cpp:1.12 Wed Jan 18 13:06:10 2006
+++ libmysequoia/src/CarobStmt.cpp Wed Jan 18 13:13:59 2006
@@ -152,7 +152,6 @@
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:
@@ -160,6 +159,7 @@
case MYSQL_TYPE_DECIMAL:
case MYSQL_TYPE_NEWDECIMAL:
case MYSQL_TYPE_NULL:
+ break;
default:
set_error(CR_UNSUPPORTED_PARAM_TYPE, SQLT_UNKNOWN);
result = true;
@@ -250,6 +250,8 @@
case MYSQL_TYPE_DOUBLE:
c_stmt->setDouble(no, *(double *)p->buffer);
break;
+ case MYSQL_TYPE_DECIMAL:
+ case MYSQL_TYPE_NEWDECIMAL:
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
case MYSQL_TYPE_LONG_BLOB:
@@ -262,16 +264,19 @@
else
c_stmt->setString(no, fromString(string((char *)p->buffer,
p->buffer_length)));
break;
- default:
- LOG4CXX_DEBUG(logger, "This should never happen!!");
-/* 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:
+ char buffer[20];
+ MYSQL_TIME_to_str((MYSQL_TIME *)p->buffer, buffer,
sizeof(buffer));
+ c_stmt->setString(no,
fromString(string(buffer,strlen(buffer))));
+ break;
case MYSQL_TYPE_NULL:
+ break;
+ default:
+ LOG4CXX_DEBUG(logger, "This should never happen!!");
+/* TODO support other types
*/
}
}
@@ -347,13 +352,13 @@
case MYSQL_TYPE_STRING:
case MYSQL_TYPE_DECIMAL:
case MYSQL_TYPE_NEWDECIMAL:
- fPtr->max_length = 0;
- break;
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_DATE:
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
case MYSQL_TYPE_NULL:
+ fPtr->max_length = 0;
+ break;
default:
set_error(CR_UNSUPPORTED_PARAM_TYPE, SQLT_UNKNOWN);
result = true;
@@ -647,13 +652,13 @@
result = new int(liveResultSet->getInt32(colNo));
break;
case MYSQL_TYPE_LONGLONG:
-// result = new(int64_t(liveResultSet->getInt64(colNo)));
+ result = new int64_t(liveResultSet->getInt64(colNo));
break;
case MYSQL_TYPE_FLOAT:
-// result = new(float(liveResultSet->getFloat(colNo)));
+ result = new float(liveResultSet->getFloat(colNo));
break;
case MYSQL_TYPE_DOUBLE:
-// result = new(double(liveResultSet->getDouble(colNo)));
+ result = new double(liveResultSet->getDouble(colNo));
break;
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
@@ -667,11 +672,15 @@
result = new string(toString(liveResultSet->getAsString(colNo)));
break;
case MYSQL_TYPE_TIME:
+ result = new int(liveResultSet->getAsInt(colNo));
break;
case MYSQL_TYPE_DATE:
+ result = new int64_t(liveResultSet->getAsInt64(colNo));
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));
break;
case MYSQL_TYPE_NULL:
break;
@@ -700,8 +709,10 @@
delete (short *)buffer;
break;
case MYSQL_TYPE_LONG:
+ case MYSQL_TYPE_TIME:
delete (int *)buffer;
break;
+ case MYSQL_TYPE_DATE:
case MYSQL_TYPE_LONGLONG:
delete (int64_t *)buffer;
break;
@@ -722,10 +733,6 @@
case MYSQL_TYPE_NEWDECIMAL:
delete (string *)buffer;
break;
- case MYSQL_TYPE_TIME:
- break;
- case MYSQL_TYPE_DATE:
- break;
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
break;
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits