summaryrefslogtreecommitdiff
path: root/storage/connect/myutil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/myutil.cpp')
-rw-r--r--storage/connect/myutil.cpp34
1 files changed, 28 insertions, 6 deletions
diff --git a/storage/connect/myutil.cpp b/storage/connect/myutil.cpp
index ecea6a0eada..1b6cbaa84c7 100644
--- a/storage/connect/myutil.cpp
+++ b/storage/connect/myutil.cpp
@@ -56,9 +56,27 @@ int MYSQLtoPLG(char *typname, char *var)
else
type = TYPE_ERROR;
- // This is to make the difference between CHAR and VARCHAR
- if (var && type == TYPE_STRING && stricmp(typname, "char"))
- *var = 'V';
+ if (var) {
+ // This is to make the difference between CHAR and VARCHAR
+ if (type == TYPE_STRING && stricmp(typname, "char"))
+ *var = 'V';
+
+ // This is to make the difference between temporal values
+ if (type == TYPE_DATE) {
+ if (!stricmp(typname, "date"))
+ *var = 'D';
+ else if (!stricmp(typname, "datetime"))
+ *var = 'A';
+ else if (!stricmp(typname, "timestamp"))
+ *var = 'S';
+ else if (!stricmp(typname, "time"))
+ *var = 'T';
+ else if (!stricmp(typname, "year"))
+ *var = 'Y';
+
+ } // endif type
+
+ } // endif var
return type;
} // end of MYSQLtoPLG
@@ -102,14 +120,18 @@ enum enum_field_types PLGtoMYSQL(int type, bool dbf)
/************************************************************************/
/* Convert from PlugDB type to MySQL type name */
/************************************************************************/
-const char *PLGtoMYSQLtype(int type, bool dbf, char var)
+const char *PLGtoMYSQLtype(int type, bool dbf, char v)
{
switch (type) {
case TYPE_INT: return "INT";
case TYPE_SHORT: return "SMALLINT";
case TYPE_FLOAT: return "DOUBLE";
- case TYPE_DATE: return dbf ? "DATE" : "DATETIME";
- case TYPE_STRING: return var ? "VARCHAR" : "CHAR";
+ case TYPE_DATE: return dbf ? "DATE" :
+ (v == 'S') ? "TIMESTAMP" :
+ (v == 'D') ? "DATE" :
+ (v == 'T') ? "TIME" :
+ (v == 'Y') ? "YEAR" : "DATETIME";
+ case TYPE_STRING: return v ? "VARCHAR" : "CHAR";
case TYPE_BIGINT: return "BIGINT";
case TYPE_TINY: return "TINYINT";
default: return "CHAR(0)";