Skip to content

Commit

Permalink
Fix and tests for ODBC-62. Export from MS Access did not work mainly
Browse files Browse the repository at this point in the history
because we returned wrong values in CREATE_PARAMS column of the
SQLGetTypeInfo, and that caused MS Access to generate bad CREATE TABLE
queries.
  • Loading branch information
lawrinn committed Mar 11, 2017
1 parent 3a77b1a commit 939c888
Show file tree
Hide file tree
Showing 6 changed files with 210 additions and 110 deletions.
9 changes: 9 additions & 0 deletions ma_connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -931,6 +931,9 @@ SQLRETURN MADB_DbcGetInfo(MADB_Dbc *Dbc, SQLUSMALLINT InfoType, SQLPOINTER InfoV
case SQL_CONVERT_CHAR:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
case SQL_CONVERT_WCHAR:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
#ifdef SQL_CONVERT_GUID
case SQL_CONVERT_GUID:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, 0, StringLengthPtr);
Expand Down Expand Up @@ -963,6 +966,9 @@ SQLRETURN MADB_DbcGetInfo(MADB_Dbc *Dbc, SQLUSMALLINT InfoType, SQLPOINTER InfoV
case SQL_CONVERT_LONGVARCHAR:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
case SQL_CONVERT_WLONGVARCHAR:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
case SQL_CONVERT_NUMERIC:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
Expand All @@ -987,6 +993,9 @@ SQLRETURN MADB_DbcGetInfo(MADB_Dbc *Dbc, SQLUSMALLINT InfoType, SQLPOINTER InfoV
case SQL_CONVERT_VARCHAR:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
case SQL_CONVERT_WVARCHAR:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, MADB_SUPPORTED_CONVERSIONS, StringLengthPtr);
break;
case SQL_CONVERT_FUNCTIONS:
MADB_SET_NUM_VAL(SQLUINTEGER, InfoValuePtr, 0, StringLengthPtr);
break;
Expand Down
176 changes: 88 additions & 88 deletions ma_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,97 +20,97 @@

MADB_TypeInfo TypeInfoV3[]=
{
{"BIT",SQL_BIT,1,"","","",1,1,3,0,0,0,"BIT",0,0,0,0,10, SQL_BIT},
{"BOOL",SQL_BIT,1,"","","",1,1,3,0,0,0,"BOOL",0,0,0,0,10, SQL_BIT},
{"TINYINT",SQL_TINYINT,3,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"TINYINT",0,0,0,0,10, SQL_TINYINT},
{"TINYINT UNSIGNED",SQL_TINYINT,3,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_TRUE,0,1,"TINYINT UNSIGNED",0,0,0,0,10, SQL_TINYINT},
{"BIGINT",SQL_BIGINT,19,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"BIGINT",0,0,0,0,10, SQL_BIGINT},
{"BIGINT UNSIGNED",SQL_BIGINT,20,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"BIGINT UNSIGNED",0,0,0,0,10, SQL_BIGINT},
{"LONG VARBINARY",SQL_LONGVARBINARY,16777215,"'","'","",1,1,3,0,0,0,"LONG VARBINARY",0,0,0,0,10, SQL_LONGVARBINARY},
{"MEDIUMBLOB",SQL_LONGVARBINARY,16777215,"'","'","",1,1,3,0,0,0,"MEDIUMBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"LONGBLOB",SQL_LONGVARBINARY,2147483647,"'","'","",1,1,3,0,0,0,"LONGBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"BLOB",SQL_LONGVARBINARY,65535,"'","'","",1,1,3,0,0,0,"BLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"TINYBLOB",SQL_LONGVARBINARY,255,"'","'","",1,1,3,0,0,0,"TINYBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"VARBINARY",SQL_VARBINARY,255,"'","'","(M)",1,1,3,0,0,0,"VARBINARY",0,0,0,0,10, SQL_VARBINARY},
{"BINARY",SQL_BINARY,255,"'","'","(M)",1,1,3,0,0,0,"BINARY",0,0,0,0,10, SQL_BINARY},
{"LONG VARCHAR",SQL_LONGVARCHAR,16777215,"'","'","",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_LONGVARCHAR},
{"MEDIUMTEXT",SQL_LONGVARCHAR,16777215,"'","'","",1,0,3,0,0,0,"MEDIUMTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"LONGTEXT",SQL_LONGVARCHAR,2147483647,"'","'","",1,0,3,0,0,0,"LONGTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TEXT",SQL_LONGVARCHAR,65535,"'","'","",1,0,3,0,0,0,"TEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TINYTEXT",SQL_LONGVARCHAR,255,"'","'","",1,0,3,0,0,0,"TINYTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"CHAR",SQL_CHAR,255,"'","'","(M)",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_CHAR},
{"NUMERIC",SQL_NUMERIC,65,"","","[(M,D])] [ZEROFILL]",1,0,3,0,0,1,"NUMERIC", -308,308,0,0,10, SQL_NUMERIC}, /* Todo: ?? */
{"DECIMAL",SQL_DECIMAL,65,"","","[(M,D])] [ZEROFILL]",1,0,3,0,0,1,"DECIMAL",-308,308,0,0,10, SQL_DECIMAL},
{"INTEGER",SQL_INTEGER,10,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"INTEGER",0,0,0,0,10,SQL_INTEGER},
{"INTEGER UNSIGNED",SQL_INTEGER,10,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"INTEGER UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"INT",SQL_INTEGER,10,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"INT",0,0,0,0,10, SQL_INTEGER},
{"INT UNSIGNED",SQL_INTEGER,10,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"INT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"MEDIUMINT",SQL_INTEGER,7,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"MEDIUMINT",0,0,0,0,10},
{"MEDIUMINT UNSIGNED",SQL_INTEGER,8,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"MEDIUMINT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"SMALLINT",SQL_SMALLINT,5,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"SMALLINT",0,0,0,0,10, SQL_SMALLINT},
{"SMALLINT UNSIGNED",SQL_SMALLINT,5,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"SMALLINT UNSIGNED",0,0,0,0,10, SQL_SMALLINT},
{"FLOAT",SQL_FLOAT,10,"","","[(M|D)] [ZEROFILL]",1,0,3,0,0,1,"FLOAT",-38,38,0,0,10, SQL_FLOAT},
{"DOUBLE",SQL_DOUBLE,17,"","","[(M|D)] [ZEROFILL]",1,0,3,0,0,1,"DOUBLE",-308,308,0,0,10, SQL_DOUBLE},
{"DOUBLE PRECISION",SQL_DOUBLE,17,"","","[(M,D)] [ZEROFILL]",1,0,3,0,0,1,"DOUBLE PRECISION",-308,308,0,0,10, SQL_DOUBLE},
{"REAL",SQL_DOUBLE,17,"","","[(M,D)] [ZEROFILL]",1,0,3,0,0,1,"REAL",-308,308,0,0,10, SQL_DOUBLE},
{"VARCHAR",SQL_VARCHAR,255,"'","'","(M)",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_VARCHAR},
{"ENUM",SQL_VARCHAR,65535,"'","'","",1,0,3,0,0,0,"ENUM",0,0,0,0,10, SQL_VARCHAR},
{"SET",SQL_VARCHAR,64,"'","'","",1,0,3,0,0,0,"SET",0,0,0,0,10, SQL_VARCHAR},
{"DATE",SQL_TYPE_DATE,10,"'","'","",1,0,3,0,0,0,"DATE",0,0,0,0,10, SQL_DATETIME},
{"TIME",SQL_TYPE_TIME,8,"'","'","[(M)]",1,0,3,0,0,0,"TIME",0,0,0,0,10, SQL_DATETIME},
{"DATETIME",SQL_TYPE_TIMESTAMP,16,"'","'","[(M)]",1,0,3,0,0,0,"DATETIME",0,0,0,0,10, SQL_DATETIME},
{"TIMESTAMP",SQL_TYPE_TIMESTAMP,16,"'","'","[(M)]",1,0,3,0,0,0,"TIMESTAMP",0,0,0,0,10, SQL_DATETIME},
{"CHAR",SQL_WCHAR,255,"'","'","(M)",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_WCHAR},
{"VARCHAR",SQL_WVARCHAR,255,"'","'","(M)",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_WVARCHAR},
{"LONG VARCHAR",SQL_WLONGVARCHAR,16777215,"'","'","",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_LONGVARCHAR},
{"BIT",SQL_BIT,1,"","","NULL",1,1,3,0,0,0,"BIT",0,0,0,0,10, SQL_BIT},
{"BOOL",SQL_BIT,1,"","","NULL",1,1,3,0,0,0,"BOOL",0,0,0,0,10, SQL_BIT},
{"TINYINT",SQL_TINYINT,3,"","","NULL",1,0,3,SQL_FALSE,0,1,"TINYINT",0,0,0,0,10, SQL_TINYINT},
{"TINYINT UNSIGNED",SQL_TINYINT,3,"","","NULL",1,0,3,SQL_TRUE,0,1,"TINYINT UNSIGNED",0,0,0,0,10, SQL_TINYINT},
{"BIGINT",SQL_BIGINT,19,"","","NULL",1,0,3,SQL_FALSE,0,1,"BIGINT",0,0,0,0,10, SQL_BIGINT},
{"BIGINT UNSIGNED",SQL_BIGINT,20,"","","NULL",1,0,3,1,0,1,"BIGINT UNSIGNED",0,0,0,0,10, SQL_BIGINT},
{"LONG VARBINARY",SQL_LONGVARBINARY,16777215,"'","'","NULL",1,1,3,0,0,0,"LONG VARBINARY",0,0,0,0,10, SQL_LONGVARBINARY},
{"MEDIUMBLOB",SQL_LONGVARBINARY,16777215,"'","'","NULL",1,1,3,0,0,0,"MEDIUMBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"LONGBLOB",SQL_LONGVARBINARY,2147483647,"'","'","NULL",1,1,3,0,0,0,"LONGBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"BLOB",SQL_LONGVARBINARY,65535,"'","'","NULL",1,1,3,0,0,0,"BLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"TINYBLOB",SQL_LONGVARBINARY,255,"'","'","NULL",1,1,3,0,0,0,"TINYBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"VARBINARY",SQL_VARBINARY,255,"'","'","'length'",1,1,3,0,0,0,"VARBINARY",0,0,0,0,10, SQL_VARBINARY},
{"BINARY",SQL_BINARY,255,"'","'","'length'",1,1,3,0,0,0,"BINARY",0,0,0,0,10, SQL_BINARY},
{"LONG VARCHAR",SQL_LONGVARCHAR,16777215,"'","'","NULL",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_LONGVARCHAR},
{"MEDIUMTEXT",SQL_LONGVARCHAR,16777215,"'","'","NULL",1,0,3,0,0,0,"MEDIUMTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"LONGTEXT",SQL_LONGVARCHAR,2147483647,"'","'","NULL",1,0,3,0,0,0,"LONGTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TEXT",SQL_LONGVARCHAR,65535,"'","'","NULL",1,0,3,0,0,0,"TEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TINYTEXT",SQL_LONGVARCHAR,255,"'","'","NULL",1,0,3,0,0,0,"TINYTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"CHAR",SQL_CHAR,255,"'","'","'length'",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_CHAR},
{"NUMERIC",SQL_NUMERIC,65,"","","'precision,scale'",1,0,3,0,0,1,"NUMERIC", -308,308,0,0,10, SQL_NUMERIC}, /* Todo: ?? */
{"DECIMAL",SQL_DECIMAL,65,"","","'precision,scale'",1,0,3,0,0,1,"DECIMAL",-308,308,0,0,10, SQL_DECIMAL},
{"INTEGER",SQL_INTEGER,10,"","","NULL",1,0,3,SQL_FALSE,0,1,"INTEGER",0,0,0,0,10,SQL_INTEGER},
{"INTEGER UNSIGNED",SQL_INTEGER,10,"","","NULL",1,0,3,1,0,1,"INTEGER UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"INT",SQL_INTEGER,10,"","","NULL",1,0,3,SQL_FALSE,0,1,"INT",0,0,0,0,10, SQL_INTEGER},
{"INT UNSIGNED",SQL_INTEGER,10,"","","NULL",1,0,3,1,0,1,"INT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"MEDIUMINT",SQL_INTEGER,7,"","","NULL",1,0,3,SQL_FALSE,0,1,"MEDIUMINT",0,0,0,0,10},
{"MEDIUMINT UNSIGNED",SQL_INTEGER,8,"","","NULL",1,0,3,1,0,1,"MEDIUMINT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"SMALLINT",SQL_SMALLINT,5,"","","NULL",1,0,3,SQL_FALSE,0,1,"SMALLINT",0,0,0,0,10, SQL_SMALLINT},
{"SMALLINT UNSIGNED",SQL_SMALLINT,5,"","","NULL",1,0,3,1,0,1,"SMALLINT UNSIGNED",0,0,0,0,10, SQL_SMALLINT},
{"FLOAT",SQL_FLOAT,10,"","","'precision,scale'",1,0,3,0,0,1,"FLOAT",-38,38,0,0,10, SQL_FLOAT},
{"DOUBLE",SQL_DOUBLE,17,"","","'precision,scale'",1,0,3,0,0,1,"DOUBLE",-308,308,0,0,10, SQL_DOUBLE},
{"DOUBLE PRECISION",SQL_DOUBLE,17,"","","'precision,scale'",1,0,3,0,0,1,"DOUBLE PRECISION",-308,308,0,0,10, SQL_DOUBLE},
{"REAL",SQL_DOUBLE,17,"","","'precision,scale'",1,0,3,0,0,1,"REAL",-308,308,0,0,10, SQL_DOUBLE},
{"VARCHAR",SQL_VARCHAR,255,"'","'","'length'",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_VARCHAR},
{"ENUM",SQL_VARCHAR,65535,"'","'","NULL",1,0,3,0,0,0,"ENUM",0,0,0,0,10, SQL_VARCHAR},
{"SET",SQL_VARCHAR,64,"'","'","NULL",1,0,3,0,0,0,"SET",0,0,0,0,10, SQL_VARCHAR},
{"DATE",SQL_TYPE_DATE,10,"'","'","NULL",1,0,3,0,0,0,"DATE",0,0,0,0,10, SQL_DATETIME},
{"TIME",SQL_TYPE_TIME,8,"'","'","NULL",1,0,3,0,0,0,"TIME",0,0,0,0,10, SQL_DATETIME},
{"DATETIME",SQL_TYPE_TIMESTAMP,16,"'","'","NULL",1,0,3,0,0,0,"DATETIME",0,0,0,0,10, SQL_DATETIME},
{"TIMESTAMP",SQL_TYPE_TIMESTAMP,16,"'","'","'scale'",1,0,3,0,0,0,"TIMESTAMP",0,0,0,0,10, SQL_DATETIME},
{"CHAR",SQL_WCHAR,255,"'","'","'length'",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_WCHAR},
{"VARCHAR",SQL_WVARCHAR,255,"'","'","'length'",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_WVARCHAR},
{"LONG VARCHAR",SQL_WLONGVARCHAR,16777215,"'","'","NULL",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_LONGVARCHAR},
{NULL,0,0,NULL,NULL,NULL,0,0,0,0,0,0,NULL,0,0,0,0,0}
};

MADB_TypeInfo TypeInfoV2[]=
{
{"BIT",SQL_BIT,1,"","","",1,1,3,0,0,0,"BIT",0,0,0,0,10, SQL_BIT},
{"BOOL",SQL_BIT,1,"","","",1,1,3,0,0,0,"BOOL",0,0,0,0,10, SQL_BIT},
{"TINYINT",SQL_TINYINT,3,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"TINYINT",0,0,0,0,10, SQL_TINYINT},
{"TINYINT UNSIGNED",SQL_TINYINT,3,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"TINYINT UNSIGNED",0,0,0,0,10, SQL_TINYINT},
{"BIGINT",SQL_BIGINT,19,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"BIGINT",0,0,0,0,10, SQL_BIGINT},
{"BIGINT UNSIGNED",SQL_BIGINT,20,"","","[(M)] [ZEROFILL]",1,0,3,SQL_TRUE,0,1,"BIGINT UNSIGNED",0,0,0,0,10, SQL_BIGINT},
{"LONG VARBINARY",SQL_LONGVARBINARY,16777215,"'","'","",1,1,3,0,0,0,"LONG VARBINARY",0,0,0,0,10, SQL_LONGVARBINARY},
{"MEDIUMBLOB",SQL_LONGVARBINARY,16777215,"'","'","",1,1,3,0,0,0,"MEDIUMBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"LONGBLOB",SQL_LONGVARBINARY,2147483647,"'","'","",1,1,3,0,0,0,"LONGBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"BLOB",SQL_LONGVARBINARY,65535,"'","'","",1,1,3,0,0,0,"BLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"TINYBLOB",SQL_LONGVARBINARY,255,"'","'","",1,1,3,0,0,0,"TINYBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"VARBINARY",SQL_VARBINARY,255,"'","'","(M)",1,1,3,0,0,0,"VARBINARY",0,0,0,0,10, SQL_VARBINARY},
{"BINARY",SQL_BINARY,255,"'","'","(M)",1,1,3,0,0,0,"BINARY",0,0,0,0,10, SQL_BINARY},
{"LONG VARCHAR",SQL_LONGVARCHAR,16777215,"'","'","",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_LONGVARCHAR},
{"MEDIUMTEXT",SQL_LONGVARCHAR,16777215,"'","'","",1,0,3,0,0,0,"MEDIUMTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"LONGTEXT",SQL_LONGVARCHAR,2147483647,"'","'","",1,0,3,0,0,0,"LONGTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TEXT",SQL_LONGVARCHAR,65535,"'","'","",1,0,3,0,0,0,"TEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TINYTEXT",SQL_LONGVARCHAR,255,"'","'","",1,0,3,0,0,0,"TINYTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"CHAR",SQL_CHAR,255,"'","'","(M)",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_CHAR},
{"NUMERIC",SQL_NUMERIC,65,"","","[(M,D])] [ZEROFILL]",1,0,3,0,0,1,"NUMERIC", -308,308,0,0,10, SQL_NUMERIC}, /* Todo: ?? */
{"DECIMAL",SQL_DECIMAL,65,"","","[(M,D])] [ZEROFILL]",1,0,3,0,0,1,"DECIMAL",-308,308,0,0,10, SQL_DECIMAL},
{"INTEGER",SQL_INTEGER,10,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"INTEGER",0,0,0,0,10,SQL_INTEGER},
{"INTEGER UNSIGNED",SQL_INTEGER,10,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"INTEGER UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"INT",SQL_INTEGER,10,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"INT",0,0,0,0,10, SQL_INTEGER},
{"INT UNSIGNED",SQL_INTEGER,10,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"INT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"MEDIUMINT",SQL_INTEGER,7,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"MEDIUMINT",0,0,0,0,10},
{"MEDIUMINT UNSIGNED",SQL_INTEGER,8,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"MEDIUMINT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"SMALLINT",SQL_SMALLINT,5,"","","[(M)] [UNSIGNED] [ZEROFILL]",1,0,3,SQL_FALSE,0,1,"SMALLINT",0,0,0,0,10, SQL_SMALLINT},
{"SMALLINT UNSIGNED",SQL_SMALLINT,5,"","","[(M)] [ZEROFILL]",1,0,3,1,0,1,"SMALLINT UNSIGNED",0,0,0,0,10, SQL_SMALLINT},
{"FLOAT",SQL_FLOAT,10,"","","[(M|D)] [ZEROFILL]",1,0,3,0,0,1,"FLOAT",-38,38,0,0,10, SQL_FLOAT},
{"DOUBLE",SQL_DOUBLE,17,"","","[(M|D)] [ZEROFILL]",1,0,3,0,0,1,"DOUBLE",-308,308,0,0,10, SQL_DOUBLE},
{"DOUBLE PRECISION",SQL_DOUBLE,17,"","","[(M,D)] [ZEROFILL]",1,0,3,0,0,1,"DOUBLE PRECISION",-308,308,0,0,10, SQL_DOUBLE},
{"REAL",SQL_DOUBLE,17,"","","[(M,D)] [ZEROFILL]",1,0,3,0,0,1,"REAL",-308,308,0,0,10, SQL_DOUBLE},
{"VARCHAR",SQL_VARCHAR,255,"'","'","(M)",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_VARCHAR},
{"ENUM",SQL_VARCHAR,65535,"'","'","",1,0,3,0,0,0,"ENUM",0,0,0,0,10, SQL_VARCHAR},
{"SET",SQL_VARCHAR,64,"'","'","",1,0,3,0,0,0,"SET",0,0,0,0,10, SQL_VARCHAR},
{"DATE",SQL_DATE,10,"'","'","",1,0,3,0,0,0,"DATE",0,0,0,0,10, SQL_DATETIME},
{"TIME",SQL_TIME,18,"'","'","[(M)]",1,0,3,0,0,0,"TIME",0,0,0,0,10, SQL_DATETIME},
{"DATETIME",SQL_TIMESTAMP,27,"'","'","[(M)]",1,0,3,0,0,0,"DATETIME",0,0,0,0,10, SQL_DATETIME},
{"TIMESTAMP",SQL_TIMESTAMP,27,"'","'","[(M)]",1,0,3,0,0,0,"TIMESTAMP",0,0,0,0,10, SQL_DATETIME},
{"CHAR",SQL_WCHAR,255,"'","'","(M)",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_WCHAR},
{"VARCHAR",SQL_WVARCHAR,255,"'","'","(M)",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_WVARCHAR},
{"LONG VARCHAR",SQL_WLONGVARCHAR,16777215,"'","'","",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_WLONGVARCHAR},
{"BIT",SQL_BIT,1,"","","NULL",1,1,3,0,0,0,"BIT",0,0,0,0,10, SQL_BIT},
{"BOOL",SQL_BIT,1,"","","NULL",1,1,3,0,0,0,"BOOL",0,0,0,0,10, SQL_BIT},
{"TINYINT",SQL_TINYINT,3,"","","NULL",1,0,3,SQL_FALSE,0,1,"TINYINT",0,0,0,0,10, SQL_TINYINT},
{"TINYINT UNSIGNED",SQL_TINYINT,3,"","","NULL",1,0,3,SQL_FALSE,0,1,"TINYINT UNSIGNED",0,0,0,0,10, SQL_TINYINT},
{"BIGINT",SQL_BIGINT,19,"","","NULL",1,0,3,SQL_FALSE,0,1,"BIGINT",0,0,0,0,10, SQL_BIGINT},
{"BIGINT UNSIGNED",SQL_BIGINT,20,"","","NULL",1,0,3,SQL_TRUE,0,1,"BIGINT UNSIGNED",0,0,0,0,10, SQL_BIGINT},
{"LONG VARBINARY",SQL_LONGVARBINARY,16777215,"'","'","NULL",1,1,3,0,0,0,"LONG VARBINARY",0,0,0,0,10, SQL_LONGVARBINARY},
{"MEDIUMBLOB",SQL_LONGVARBINARY,16777215,"'","'","NULL",1,1,3,0,0,0,"MEDIUMBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"LONGBLOB",SQL_LONGVARBINARY,2147483647,"'","'","NULL",1,1,3,0,0,0,"LONGBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"BLOB",SQL_LONGVARBINARY,65535,"'","'","NULL",1,1,3,0,0,0,"BLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"TINYBLOB",SQL_LONGVARBINARY,255,"'","'","NULL",1,1,3,0,0,0,"TINYBLOB",0,0,0,0,10, SQL_LONGVARBINARY},
{"VARBINARY",SQL_VARBINARY,255,"'","'","'length'",1,1,3,0,0,0,"VARBINARY",0,0,0,0,10, SQL_VARBINARY},
{"BINARY",SQL_BINARY,255,"'","'","'length'",1,1,3,0,0,0,"BINARY",0,0,0,0,10, SQL_BINARY},
{"LONG VARCHAR",SQL_LONGVARCHAR,16777215,"'","'","NULL",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_LONGVARCHAR},
{"MEDIUMTEXT",SQL_LONGVARCHAR,16777215,"'","'","NULL",1,0,3,0,0,0,"MEDIUMTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"LONGTEXT",SQL_LONGVARCHAR,2147483647,"'","'","NULL",1,0,3,0,0,0,"LONGTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TEXT",SQL_LONGVARCHAR,65535,"'","'","NULL",1,0,3,0,0,0,"TEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"TINYTEXT",SQL_LONGVARCHAR,255,"'","'","NULL",1,0,3,0,0,0,"TINYTEXT",0,0,0,0,10, SQL_LONGVARCHAR},
{"CHAR",SQL_CHAR,255,"'","'","'length'",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_CHAR},
{"NUMERIC",SQL_NUMERIC,65,"","","'precision,scale'",1,0,3,0,0,1,"NUMERIC", -308,308,0,0,10, SQL_NUMERIC}, /* Todo: ?? */
{"DECIMAL",SQL_DECIMAL,65,"","","'precision,scale'",1,0,3,0,0,1,"DECIMAL",-308,308,0,0,10, SQL_DECIMAL},
{"INTEGER",SQL_INTEGER,10,"","","NULL",1,0,3,SQL_FALSE,0,1,"INTEGER",0,0,0,0,10,SQL_INTEGER},
{"INTEGER UNSIGNED",SQL_INTEGER,10,"","","NULL",1,0,3,1,0,1,"INTEGER UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"INT",SQL_INTEGER,10,"","","NULL",1,0,3,SQL_FALSE,0,1,"INT",0,0,0,0,10, SQL_INTEGER},
{"INT UNSIGNED",SQL_INTEGER,10,"","","NULL",1,0,3,1,0,1,"INT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"MEDIUMINT",SQL_INTEGER,7,"","","NULL",1,0,3,SQL_FALSE,0,1,"MEDIUMINT",0,0,0,0,10},
{"MEDIUMINT UNSIGNED",SQL_INTEGER,8,"","","NULL",1,0,3,1,0,1,"MEDIUMINT UNSIGNED",0,0,0,0,10, SQL_INTEGER},
{"SMALLINT",SQL_SMALLINT,5,"","","NULL",1,0,3,SQL_FALSE,0,1,"SMALLINT",0,0,0,0,10, SQL_SMALLINT},
{"SMALLINT UNSIGNED",SQL_SMALLINT,5,"","","NULL",1,0,3,1,0,1,"SMALLINT UNSIGNED",0,0,0,0,10, SQL_SMALLINT},
{"FLOAT",SQL_FLOAT,10,"","","'precision,scale'",1,0,3,0,0,1,"FLOAT",-38,38,0,0,10, SQL_FLOAT},
{"DOUBLE",SQL_DOUBLE,17,"","","'precision,scale'",1,0,3,0,0,1,"DOUBLE",-308,308,0,0,10, SQL_DOUBLE},
{"DOUBLE PRECISION",SQL_DOUBLE,17,"","","'precision,scale'",1,0,3,0,0,1,"DOUBLE PRECISION",-308,308,0,0,10, SQL_DOUBLE},
{"REAL",SQL_DOUBLE,17,"","","'precision,scale'",1,0,3,0,0,1,"REAL",-308,308,0,0,10, SQL_DOUBLE},
{"VARCHAR",SQL_VARCHAR,255,"'","'","'length'",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_VARCHAR},
{"ENUM",SQL_VARCHAR,65535,"'","'","NULL",1,0,3,0,0,0,"ENUM",0,0,0,0,10, SQL_VARCHAR},
{"SET",SQL_VARCHAR,64,"'","'","NULL",1,0,3,0,0,0,"SET",0,0,0,0,10, SQL_VARCHAR},
{"DATE",SQL_DATE,10,"'","'","NULL",1,0,3,0,0,0,"DATE",0,0,0,0,10, SQL_DATETIME},
{"TIME",SQL_TIME,18,"'","'","NULL",1,0,3,0,0,0,"TIME",0,0,0,0,10, SQL_DATETIME},
{"DATETIME",SQL_TIMESTAMP,27,"'","'","NULL",1,0,3,0,0,0,"DATETIME",0,0,0,0,10, SQL_DATETIME},
{"TIMESTAMP",SQL_TIMESTAMP,27,"'","'","'scale'",1,0,3,0,0,0,"TIMESTAMP",0,0,0,0,10, SQL_DATETIME},
{"CHAR",SQL_WCHAR,255,"'","'","'length'",1,0,3,0,0,0,"CHAR",0,0,0,0,10, SQL_WCHAR},
{"VARCHAR",SQL_WVARCHAR,255,"'","'","'length'",1,0,3,0,0,0,"VARCHAR",0,0,0,0,10, SQL_WVARCHAR},
{"LONG VARCHAR",SQL_WLONGVARCHAR,16777215,"'","'","NULL",1,0,3,0,0,0,"LONG VARCHAR",0,0,0,0,10, SQL_WLONGVARCHAR},
{NULL,0,0,NULL,NULL,NULL,0,0,0,0,0,0,NULL,0,0,0,0,0}
};

Expand Down Expand Up @@ -160,7 +160,7 @@ SQLRETURN MADB_GetTypeInfo(SQLHSTMT StatementHandle,
isFirst= FALSE;
p+= my_snprintf(p, 5120 - strlen(StmtStr),
"SELECT \"%s\" AS TYPE_NAME, %d AS DATA_TYPE, %lu AS COLUMN_SIZE, \"%s\" AS LITERAL_PREFIX, "
"\"%s\" AS LITERAL_SUFFIX, \"%s\" AS CREATE_PARAMS, %d AS NULLABLE, %d AS CASE_SENSITIVE, "
"\"%s\" AS LITERAL_SUFFIX, %s AS CREATE_PARAMS, %d AS NULLABLE, %d AS CASE_SENSITIVE, "
"%d AS SEARCHABLE, %d AS UNSIGNED_ATTRIBUTE, %d AS FIXED_PREC_SCALE, %d AS AUTO_UNIQUE_VALUE, "
"'%s' AS LOCAL_TYPE_NAME, %d AS MINIMUM_SCALE, %d AS MAXIMUM_SCALE, "
"%d AS SQL_DATA_TYPE, "
Expand All @@ -175,7 +175,7 @@ SQLRETURN MADB_GetTypeInfo(SQLHSTMT StatementHandle,
else
p+= my_snprintf(p, 5120 - strlen(StmtStr),
"UNION SELECT \"%s\", %d, %lu , \"%s\", "
"\"%s\", \"%s\", %d, %d, "
"\"%s\", %s, %d, %d, "
"%d, %d, %d, %d, "
"'%s', %d, %d, "
"%d, "
Expand Down
Loading

0 comments on commit 939c888

Please sign in to comment.