From c055e5e0efcdd3750550230a483cdf8847b3d414 Mon Sep 17 00:00:00 2001 From: Olivier Bertrand Date: Sat, 28 Dec 2013 15:46:49 +0100 Subject: - Add the DECIMAL data type (TYPE_DECIM) Change the variable name of the DOUBLE type from TYPE_FLOAT to TYPE_DOUBLE Change some names to reflect ODBC version 3. This affects some variable names, function names and catalog table column names. Qualifier -> Catalog Owner (Creator) -> Schema Length -> Precision Prec -> Scale modified: storage/connect/catalog.h storage/connect/colblk.cpp storage/connect/colblk.h storage/connect/filamdbf.cpp storage/connect/global.h storage/connect/ha_connect.cc storage/connect/myconn.cpp storage/connect/mysql-test/connect/r/mysql_new.result storage/connect/mysql-test/connect/r/odbc_oracle.result storage/connect/myutil.cpp storage/connect/odbconn.cpp storage/connect/plgdbutl.cpp storage/connect/rcmsg.c storage/connect/reldef.cpp storage/connect/reldef.h storage/connect/tabcol.cpp storage/connect/tabcol.h storage/connect/tabdos.cpp storage/connect/tabfmt.cpp storage/connect/tabmysql.cpp storage/connect/tabodbc.cpp storage/connect/tabodbc.h storage/connect/tabsys.cpp storage/connect/tabutil.cpp storage/connect/tabwmi.cpp storage/connect/tabxml.cpp storage/connect/valblk.cpp storage/connect/value.cpp storage/connect/value.h storage/connect/xindex.cpp storage/connect/xobject.cpp storage/connect/xobject.h - Fix crash when GetTDB returned NULL in Open_Table modified: storage/connect/ha_connect.cc - Fix assert error setting double values from PSZ modified: storage/connect/valblk.cpp --- storage/connect/myutil.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'storage/connect/myutil.cpp') diff --git a/storage/connect/myutil.cpp b/storage/connect/myutil.cpp index 4bfdc1a03ec..1594afb1b3d 100644 --- a/storage/connect/myutil.cpp +++ b/storage/connect/myutil.cpp @@ -42,9 +42,10 @@ int MYSQLtoPLG(char *typname, char *var) !stricmp(typname, "text") || !stricmp(typname, "blob")) type = TYPE_STRING; else if (!stricmp(typname, "double") || !stricmp(typname, "float") || - !stricmp(typname, "real") || - !stricmp(typname, "decimal") || !stricmp(typname, "numeric")) - type = TYPE_FLOAT; + !stricmp(typname, "real")) + type = TYPE_DOUBLE; + else if (!stricmp(typname, "decimal") || !stricmp(typname, "numeric")) + type = TYPE_DECIM; else if (!stricmp(typname, "date") || !stricmp(typname, "datetime") || !stricmp(typname, "time") || !stricmp(typname, "timestamp") || !stricmp(typname, "year")) @@ -95,7 +96,7 @@ enum enum_field_types PLGtoMYSQL(int type, bool dbf, char v) case TYPE_SHORT: mytype = MYSQL_TYPE_SHORT; break; - case TYPE_FLOAT: + case TYPE_DOUBLE: mytype = MYSQL_TYPE_DOUBLE; break; case TYPE_DATE: @@ -114,6 +115,13 @@ enum enum_field_types PLGtoMYSQL(int type, bool dbf, char v) case TYPE_TINY: mytype = MYSQL_TYPE_TINY; break; + case TYPE_DECIM: +#if !defined(ALPHA) + mytype = MYSQL_TYPE_NEWDECIMAL; +#else // ALPHA + mytype = MYSQL_TYPE_DECIMAL; +#endif // ALPHA + break; default: mytype = MYSQL_TYPE_NULL; } // endswitch mytype @@ -129,7 +137,7 @@ 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_DOUBLE: return "DOUBLE"; case TYPE_DATE: return dbf ? "DATE" : (v == 'S') ? "TIMESTAMP" : (v == 'D') ? "DATE" : @@ -138,6 +146,7 @@ const char *PLGtoMYSQLtype(int type, bool dbf, char v) case TYPE_STRING: return v ? "VARCHAR" : "CHAR"; case TYPE_BIGINT: return "BIGINT"; case TYPE_TINY: return "TINYINT"; + case TYPE_DECIM: return "DECIMAL"; default: return "CHAR(0)"; } // endswitch mytype @@ -170,9 +179,11 @@ int MYSQLtoPLG(int mytype, char *var) #if !defined(ALPHA) case MYSQL_TYPE_NEWDECIMAL: #endif // !ALPHA) + type = TYPE_DECIM; + break; case MYSQL_TYPE_FLOAT: case MYSQL_TYPE_DOUBLE: - type = TYPE_FLOAT; + type = TYPE_DOUBLE; break; case MYSQL_TYPE_TIMESTAMP: case MYSQL_TYPE_DATE: -- cgit v1.2.1