diff options
Diffstat (limited to 'storage/connect/myutil.cpp')
-rw-r--r-- | storage/connect/myutil.cpp | 34 |
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)"; |