Changeset: 679770191fbf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/679770191fbf
Modified Files:
clients/odbc/driver/SQLProcedureColumns.c
clients/odbc/tests/ODBCmetadata.c
Branch: default
Log Message:
Correcting datatype for result column COLUMN_TYPE as returned by
SQLProcedureColumns(). It must be SMALLINT instead of TINYINT.
Correcting datatype for result column ORDINAL_POSITION as returned by
SQLProcedureColumns(). It must be INTEGER instead of BIGINT.
diffs (70 lines):
diff --git a/clients/odbc/driver/SQLProcedureColumns.c
b/clients/odbc/driver/SQLProcedureColumns.c
--- a/clients/odbc/driver/SQLProcedureColumns.c
+++ b/clients/odbc/driver/SQLProcedureColumns.c
@@ -153,10 +153,10 @@ MNDBProcedureColumns(ODBCStmt *stmt,
"s.name as \"PROCEDURE_SCHEM\", "
"p.name as \"PROCEDURE_NAME\", "
"a.name as \"COLUMN_NAME\", "
- "case when a.inout = 1 then %d "
+ "cast(case when a.inout = 1 then %d "
"when p.type = %d then %d "
"else %d "
- "end as \"COLUMN_TYPE\", "
+ "end as smallint) as \"COLUMN_TYPE\", "
DATA_TYPE(a) ", "
TYPE_NAME(a) ", "
COLUMN_SIZE(a) ", "
@@ -169,12 +169,12 @@ MNDBProcedureColumns(ODBCStmt *stmt,
SQL_DATA_TYPE(a) ", "
SQL_DATETIME_SUB(a) ", "
CHAR_OCTET_LENGTH(a) ", "
- "case when p.type = 5 and a.inout = 0 then a.number + 1 "
+ "cast(case when p.type = 5 and a.inout = 0 then a.number
+ 1 "
"when p.type = 5 and a.inout = 1 then a.number -
x.maxout "
"when p.type = 2 and a.inout = 1 then a.number + 1 "
"when a.inout = 0 then 0 "
"else a.number "
- "end as \"ORDINAL_POSITION\", "
+ "end as integer) as \"ORDINAL_POSITION\", "
"'' as \"IS_NULLABLE\", "
/* Only the id value uniquely identifies a specific
procedure.
Include it to be able to differentiate between
multiple
diff --git a/clients/odbc/tests/ODBCmetadata.c
b/clients/odbc/tests/ODBCmetadata.c
--- a/clients/odbc/tests/ODBCmetadata.c
+++ b/clients/odbc/tests/ODBCmetadata.c
@@ -1116,7 +1116,7 @@ main(int argc, char **argv)
"Resultset with 20 columns\n"
"Resultset with 6 rows\n"
"PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME
COLUMN_TYPE DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH
DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF
SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH
ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME\n"
- "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
TINYINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER BIGINT WCHAR WVARCHAR(10)\n"
+ "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n"
"NULL sys analyze sname 1 -9 VARCHAR 1024
2048 NULL NULL 2 NULL NULL -9 NULL 2048 1
replacedId\n"
"NULL sys analyze sname 1 -9 VARCHAR 1024
2048 NULL NULL 2 NULL NULL -9 NULL 2048 1
replacedId\n"
"NULL sys analyze tname 1 -9 VARCHAR 1024
2048 NULL NULL 2 NULL NULL -9 NULL 2048 2
replacedId\n"
@@ -1142,7 +1142,7 @@ main(int argc, char **argv)
"Resultset with 20 columns\n"
"Resultset with 4 rows\n"
"PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME
COLUMN_TYPE DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH
DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF
SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH
ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME\n"
- "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
TINYINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER BIGINT WCHAR WVARCHAR(10)\n"
+ "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n"
"NULL sys sin arg_1 1 7 REAL 24
14 7 2 2 NULL NULL 7 NULL NULL 1
replacedId\n"
"NULL sys sin res_0 5 7 REAL 24
14 7 2 2 NULL NULL 7 NULL NULL 0
replacedId\n"
"NULL sys sin arg_1 1 8 DOUBLE 53
24 15 2 2 NULL NULL 8 NULL NULL 1
replacedId\n"
@@ -1165,7 +1165,7 @@ main(int argc, char **argv)
"Resultset with 20 columns\n"
"Resultset with 2 rows\n"
"PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME
COLUMN_TYPE DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH
DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF
SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH
ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME\n"
- "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
TINYINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER BIGINT WCHAR WVARCHAR(10)\n"
+ "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n"
"NULL sys env name 3 -9 VARCHAR 1024
2048 NULL NULL 2 NULL NULL -9 NULL 2048 1
replacedId\n"
"NULL sys env value 3 -9 VARCHAR 2048
4096 NULL NULL 2 NULL NULL -9 NULL 4096 2
replacedId\n");
@@ -1189,7 +1189,7 @@ main(int argc, char **argv)
"Resultset with 20 columns\n"
"Resultset with 58 rows\n"
"PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME
COLUMN_TYPE DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH
DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF
SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH
ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME\n"
- "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
TINYINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER BIGINT WCHAR WVARCHAR(10)\n"
+ "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256)
SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT
SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT
SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n"
// 0 input argument and 13 result columns of sys.statistics()
"NULL sys statistics column_id 3 4
INTEGER 32 11 0 2 2 NULL NULL 4 NULL
NULL 1 replacedId\n"
"NULL sys statistics schema 3 -9 VARCHAR
1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048
2 replacedId\n"
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]