/* Make numeric strings from constants defined by the manager */ #ifdef _S #undef _S #endif #ifdef UNS #undef UNS #endif #ifdef SIG #undef SIG #endif #define _S(NUM) #NUM #define Y_NUL _S(SQL_NULLABLE) #define N_NUL _S(SQL_NO_NULLS) #define Y_CS "1" /* Is case sensitive, and char type */ #define N_CS "0" /* Not case sensitive, or not a char type */ #define Y_SEARCH _S(SQL_SEARCHABLE) #define N_SEARCH _S(SQL_UNSEARCHABLE) #define UNS "1" #define SIG "0" /* FIXME BIT was mapped to tynyint in 4.x, so then numeric type and signed/unsigned */ static char *SQL_GET_TYPE_INFO_values[MYSQL_DATA_TYPES][19]= { {"bit", _S(SQL_BIT) ,"1" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"char(1)" ,NULL,NULL,_S(SQL_BIT) ,NULL,NULL,NULL}, {"tinyint", _S(SQL_TINYINT) ,"3" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"tinyint" ,NULL,NULL,_S(SQL_TINYINT) ,NULL,"10",NULL}, {"tinyint unsigned", _S(SQL_TINYINT) ,"3" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,UNS ,"0","0" ,"tinyint unsigned" ,NULL,NULL,_S(SQL_TINYINT) ,NULL,"10",NULL}, {"tinyint auto_increment", _S(SQL_TINYINT) ,"3" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"tinyint auto_increment" ,NULL,NULL,_S(SQL_TINYINT) ,NULL,"10",NULL}, {"tinyint unsigned auto_increment", _S(SQL_TINYINT) ,"3" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,UNS ,"0","1" ,"tinyint unsigned auto_increment",NULL,NULL,_S(SQL_TINYINT) ,NULL,"10",NULL}, {"bigint", _S(SQL_BIGINT) ,"19" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"bigint" ,NULL,NULL,_S(SQL_BIGINT) ,NULL,"10",NULL}, {"bigint unsigned", _S(SQL_BIGINT) ,"20" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,UNS ,"0","0" ,"bigint unsigned" ,NULL,NULL,_S(SQL_BIGINT) ,NULL,"10",NULL}, {"bigint auto_increment", _S(SQL_BIGINT) ,"19" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"bigint auto_increment" ,NULL,NULL,_S(SQL_BIGINT) ,NULL,"10",NULL}, {"bigint unsigned auto_increment", _S(SQL_BIGINT) ,"20" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,UNS ,"0","1" ,"bigint unsigned auto_increment" ,NULL,NULL,_S(SQL_BIGINT) ,NULL,"10",NULL}, {"long varbinary", _S(SQL_LONGVARBINARY),"16777215" ,"0x",NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"mediumblob" ,NULL,NULL,_S(SQL_LONGVARBINARY),NULL,NULL,NULL}, {"blob", _S(SQL_LONGVARBINARY),"65535" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"binary large object (0-65535)" ,NULL,NULL,_S(SQL_LONGVARBINARY),NULL,NULL,NULL}, {"longblob", _S(SQL_LONGVARBINARY),"2147483647","'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"binary large object, use mediumblob instead",NULL,NULL,_S(SQL_LONGVARBINARY),NULL,NULL,NULL}, {"tinyblob", _S(SQL_LONGVARBINARY),"255" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"binary large object (0-255)" ,NULL,NULL,_S(SQL_LONGVARBINARY),NULL,NULL,NULL}, {"mediumblob", _S(SQL_LONGVARBINARY),"16777215" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"binary large object" ,NULL,NULL,_S(SQL_LONGVARBINARY),NULL,NULL,NULL}, {"varbinary", _S(SQL_VARBINARY) ,"255" ,"'","'","length" ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"varbinary" ,NULL,NULL,_S(SQL_VARBINARY) ,NULL,NULL,NULL}, {"binary", _S(SQL_BINARY) ,"255" ,"'","'","length" ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"binary" ,NULL,NULL,_S(SQL_BINARY) ,NULL,NULL,NULL}, {"long varchar", _S(SQL_LONGVARCHAR) ,"16777215" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"mediumtext" ,NULL,NULL,_S(SQL_LONGVARCHAR) ,NULL,NULL,NULL}, {"text", _S(SQL_LONGVARCHAR) ,"65535" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"text(0-65535)" ,NULL,NULL,_S(SQL_LONGVARCHAR) ,NULL,NULL,NULL}, {"mediumtext", _S(SQL_LONGVARCHAR) ,"16777215" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"mediumtext" ,NULL,NULL,_S(SQL_LONGVARCHAR) ,NULL,NULL,NULL}, {"longtext", _S(SQL_LONGVARCHAR) ,"2147483647","'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"longtext" ,NULL,NULL,_S(SQL_LONGVARCHAR) ,NULL,NULL,NULL}, {"tinytext", _S(SQL_LONGVARCHAR) ,"255" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"tinytext" ,NULL,NULL,_S(SQL_LONGVARCHAR) ,NULL,NULL,NULL}, {"char", _S(SQL_CHAR) ,"255" ,"'","'","length" ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"char" ,NULL,NULL,_S(SQL_CHAR) ,NULL,NULL,NULL}, {"numeric", _S(SQL_NUMERIC) ,"19" ,NULL,NULL,"precision,scale",Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"numeric" ,"0","19" ,_S(SQL_NUMERIC) ,NULL,"10",NULL}, /* FIXME 28 in MS, scale 0-28 */ {"decimal", _S(SQL_DECIMAL) ,"19" ,NULL,NULL,"precision,scale",Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"decimal" ,"0","19" ,_S(SQL_DECIMAL) ,NULL,"10",NULL}, {"integer", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"integer" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"integer unsigned", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,UNS ,"0","0" ,"integer unsigned" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"int", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"integer" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"int unsigned", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,UNS ,"0","0" ,"integer unsigned" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"mediumint", _S(SQL_INTEGER) ,"7" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"Medium integer" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"mediumint unsigned", _S(SQL_INTEGER) ,"8" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,UNS ,"0","0" ,"Medium integer unsigned" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"integer auto_increment", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"integer auto_increment" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"integer unsigned auto_increment", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,UNS ,"0","1" ,"integer unsigned auto_increment",NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"int auto_increment", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"integer auto_increment" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"int unsigned auto_increment", _S(SQL_INTEGER) ,"10" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,UNS, "0","1" ,"integer unsigned auto_increment",NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"mediumint auto_increment", _S(SQL_INTEGER) ,"7" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"Medium integer auto_increment" ,NULL,NULL,_S(SQL_INTEGER) ,NULL,"10",NULL}, {"mediumint unsigned auto_increment", _S(SQL_INTEGER) ,"8" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,UNS ,"0","1" ,"Medium integer unsigned auto_increment",NULL,NULL,_S(SQL_INTEGER),NULL,"10",NULL}, {"smallint", ,_S(SQL_SMALLINT) ,"5" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"smallint" ,NULL,NULL,_S(SQL_SMALLINT) ,NULL,"10",NULL}, {"smallint unsigned", _S(SQL_SMALLINT) ,"5" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,UNS ,"0","0" ,"smallint unsigned" ,NULL,NULL,_S(SQL_SMALLINT) ,NULL,"10",NULL}, {"smallint auto_increment", _S(SQL_SMALLINT) ,"5" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"smallint auto_increment" ,NULL,NULL,_S(SQL_SMALLINT) ,NULL,"10",NULL}, {"smallint unsigned auto_increment", _S(SQL_SMALLINT) ,"5" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,UNS ,"0","1" ,"smallint unsigned auto_increment",NULL,NULL, _S(SQL_SMALLINT) ,NULL,"10",NULL}, {"double", _S(SQL_FLOAT) ,"15" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"double" ,"0" ,"4" ,_S(SQL_FLOAT) ,NULL,"10",NULL}, {"double auto_increment", _S(SQL_FLOAT) ,"15" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"double auto_increment" ,"0" ,"4" ,_S(SQL_FLOAT) ,NULL,"10",NULL}, /* "real" in MS */ {"float", _S(SQL_REAL) ,"7" ,NULL,NULL,NULL ,Y_NUL,"0",N_SEARCH,SIG ,"0","0" ,"float" ,"0" ,"2" ,_S(SQL_FLOAT) ,NULL,"10",NULL}, {"float auto_increment", _S(SQL_REAL) ,"7" ,NULL,NULL,NULL ,N_NUL,"0",N_SEARCH,SIG ,"0","1" ,"float auto_increment" ,"0" ,"2" ,_S(SQL_FLOAT) ,NULL,"10",NULL}, {"double", _S(SQL_DOUBLE) ,"15" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,SIG ,"0","0" ,"double" ,"0" ,"4" ,_S(SQL_DOUBLE) ,NULL,"10",NULL}, {"double auto_increment", _S(SQL_DOUBLE) ,"15" ,NULL,NULL,NULL ,N_NUL,N_CS,Y_SEARCH,SIG ,"0","1" ,"double auto_increment" ,"0" ,"4" ,_S(SQL_DOUBLE) ,NULL,"10",NULL}, {"date", _S(SQL_TYPE_DATE) ,"10" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"date" ,NULL,NULL,_S(SQL_DATETIME) ,_S(SQL_TYPE_DATE),NULL,NULL}, {"time", _S(SQL_TYPE_TIME) ,"6" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"time" ,NULL,NULL,_S(SQL_DATETIME) ,_S(SQL_TYPE_TIME),NULL,NULL}, {"year", _S(SQL_SMALLINT) ,"4" ,NULL,NULL,NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"year" ,NULL,NULL,_S(SQL_SMALLINT) ,NULL,"10",NULL}, /* 23 in MS, scale 3-3 */ {"datetime", _S(SQL_TYPE_TIMESTAMP),"21" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"datetime" ,"0" ,"0" ,_S(SQL_DATETIME) ,_S(SQL_TIMESTAMP),NULL,NULL}, {"timestamp", _S(SQL_TYPE_TIMESTAMP),"14" ,"'","'",NULL ,N_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"timestamp" ,"0" ,"0" ,_S(SQL_DATETIME) ,_S(SQL_TIMESTAMP),NULL,NULL}, #if TO_BE_DELETED /* NO NEED OF THIS, causes problems for DM */ {"text", _S(SQL_VARCHAR) ,"255" ,"'","'","" ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"text" ,NULL,NULL,_S(SQL_VARCHAR) ,NULL,NULL,NULL}, #endif {"varchar", _S(SQL_VARCHAR) ,"255" ,"'","'","max length" ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"varchar" ,NULL,NULL,_S(SQL_VARCHAR) ,NULL,NULL,NULL}, #if TO_BE_DELETED /* NO NEED OF THIS, causes problems for DM */ {"enum", _S(SQL_VARCHAR) ,"255" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"enum(value1,value2,value3...)" ,NULL,NULL,_S(SQL_VARCHAR) ,NULL,NULL,NULL}, {"set", _S(SQL_VARCHAR) ,"255" ,"'","'",NULL ,Y_NUL,N_CS,Y_SEARCH,NULL,"0",NULL,"set(value1,value2,value3...)" ,NULL,NULL,_S(SQL_VARCHAR) ,NULL,NULL,NULL} #endif };