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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to