summaryrefslogtreecommitdiff
path: root/storage/connect/myutil.cpp
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2013-11-22 16:03:54 +0100
committerOlivier Bertrand <bertrandop@gmail.com>2013-11-22 16:03:54 +0100
commitaaa982e7908b4d8464e9ac799336c5d890f72fad (patch)
tree5b6b8e48816f17505200d0626eb1e3c2e233035d /storage/connect/myutil.cpp
parent8780e1ab24ff2671d200bd6eb14cd98d620ab361 (diff)
downloadmariadb-git-aaa982e7908b4d8464e9ac799336c5d890f72fad.tar.gz
- Fix good recognition of MYSQL table column types.
modified: storage/connect/ha_connect.cc storage/connect/myconn.cpp storage/connect/myutil.cpp storage/connect/odbccat.h storage/connect/odbconn.cpp storage/connect/tabmysql.cpp - Add tests on new MYSQL features added: storage/connect/mysql-test/connect/my.cnf storage/connect/mysql-test/connect/r/mysql_discovery.result storage/connect/mysql-test/connect/r/mysql_exec.result storage/connect/mysql-test/connect/r/mysql_new.result storage/connect/mysql-test/connect/t/myconn.inc storage/connect/mysql-test/connect/t/myconn_cleanup.inc storage/connect/mysql-test/connect/t/mysql_discovery.test storage/connect/mysql-test/connect/t/mysql_exec.test storage/connect/mysql-test/connect/t/mysql_new.test
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)";