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

Reply via email to