Changeset: 051a7803c8b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/051a7803c8b3
Modified Files:
        clients/odbc/driver/ODBCQueries.h
        clients/odbc/tests/ODBCmetadata.c
Branch: default
Log Message:

Correcting datatype for result column CHAR_OCTET_LENGTH as returned by 
SQLColumns() and SQLProcedureColumns(). It must be INTEGER instead of BIGINT.


diffs (82 lines):

diff --git a/clients/odbc/driver/ODBCQueries.h 
b/clients/odbc/driver/ODBCQueries.h
--- a/clients/odbc/driver/ODBCQueries.h
+++ b/clients/odbc/driver/ODBCQueries.h
@@ -289,10 +289,10 @@
                SQL_CODE_TIME
 
 #define CHAR_OCTET_LENGTH(t)                                                   
        \
-               "case " #t ".type "                                             
                        \
+               "cast(case " #t ".type "                                        
                                \
                     "when 'char' then 2 * " #t ".type_digits "         \
                     "when 'varchar' then 2 * " #t ".type_digits "      \
                     "when 'clob' then 2 * " #t ".type_digits "         \
                     "when 'blob' then " #t ".type_digits "                     
\
                     "else cast(null as integer) "                              
        \
-               "end as \"CHAR_OCTET_LENGTH\""
+               "end as integer) as \"CHAR_OCTET_LENGTH\""
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
@@ -492,7 +492,7 @@ main(int argc, char **argv)
                "Resultset with 18 columns\n"
                "Resultset with 7 rows\n"
                "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      COLUMN_NAME     
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\n"
-               "WVARCHAR(1)    WVARCHAR(1024)  WVARCHAR(1024)  WVARCHAR(1024)  
SMALLINT        WCHAR(25)       INTEGER INTEGER SMALLINT        SMALLINT        
SMALLINT        WVARCHAR(65000) WVARCHAR(2048)  SMALLINT        SMALLINT        
BIGINT  INTEGER WVARCHAR(3)\n"
+               "WVARCHAR(1)    WVARCHAR(1024)  WVARCHAR(1024)  WVARCHAR(1024)  
SMALLINT        WCHAR(25)       INTEGER INTEGER SMALLINT        SMALLINT        
SMALLINT        WVARCHAR(65000) WVARCHAR(2048)  SMALLINT        SMALLINT        
INTEGER INTEGER WVARCHAR(3)\n"
                "NULL   odbctst nopk_twoucs     id2     4       INTEGER 32      
11      0       2       0       odbctst.nopk_twoucs.id2 column comment  NULL    
4       NULL    NULL    1       NO\n"
                "NULL   odbctst nopk_twoucs     name2   -9      VARCHAR 99      
198     NULL    NULL    1       odbctst.nopk_twoucs.name2 column comment        
NULL    -9      NULL    198     2       YES\n"
                "NULL   odbctst pk2c    pkc1    4       INTEGER 32      11      
0       2       0       NULL    NULL    4       NULL    NULL    1       NO\n"
@@ -509,7 +509,7 @@ main(int argc, char **argv)
                "Resultset with 18 columns\n"
                "Resultset with 8 rows\n"
                "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      COLUMN_NAME     
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\n"
-               "WVARCHAR(1)    WVARCHAR(1024)  WVARCHAR(1024)  WVARCHAR(1024)  
SMALLINT        WCHAR(25)       INTEGER INTEGER SMALLINT        SMALLINT        
SMALLINT        WVARCHAR(65000) WVARCHAR(2048)  SMALLINT        SMALLINT        
BIGINT  INTEGER WVARCHAR(3)\n"
+               "WVARCHAR(1)    WVARCHAR(1024)  WVARCHAR(1024)  WVARCHAR(1024)  
SMALLINT        WCHAR(25)       INTEGER INTEGER SMALLINT        SMALLINT        
SMALLINT        WVARCHAR(65000) WVARCHAR(2048)  SMALLINT        SMALLINT        
INTEGER INTEGER WVARCHAR(3)\n"
                "NULL   tmp     glbl_nopk_twoucs        id2     4       INTEGER 
32      11      0       2       0       NULL    NULL    4       NULL    NULL    
1       NO\n"
                "NULL   tmp     glbl_nopk_twoucs        name2   -9      VARCHAR 
99      198     NULL    NULL    1       NULL    NULL    -9      NULL    198     
2       YES\n"
                "NULL   tmp     glbl_pk_uc      id1     4       INTEGER 32      
11      0       2       0       NULL    NULL    4       NULL    NULL    1       
NO\n"
@@ -527,7 +527,7 @@ main(int argc, char **argv)
                "Resultset with 18 columns\n"
                "Resultset with 4 rows\n"
                "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      COLUMN_NAME     
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\n"
-               "WVARCHAR(1)    WVARCHAR(1024)  WVARCHAR(1024)  WVARCHAR(1024)  
SMALLINT        WCHAR(25)       INTEGER INTEGER SMALLINT        SMALLINT        
SMALLINT        WVARCHAR(65000) WVARCHAR(2048)  SMALLINT        SMALLINT        
BIGINT  INTEGER WVARCHAR(3)\n"
+               "WVARCHAR(1)    WVARCHAR(1024)  WVARCHAR(1024)  WVARCHAR(1024)  
SMALLINT        WCHAR(25)       INTEGER INTEGER SMALLINT        SMALLINT        
SMALLINT        WVARCHAR(65000) WVARCHAR(2048)  SMALLINT        SMALLINT        
INTEGER INTEGER WVARCHAR(3)\n"
                "NULL   tmp     glbl_nopk_twoucs        name2   -9      VARCHAR 
99      198     NULL    NULL    1       NULL    NULL    -9      NULL    198     
2       YES\n"
                "NULL   tmp     glbl_pk_uc      name1   -9      VARCHAR 99      
198     NULL    NULL    1       NULL    NULL    -9      NULL    198     2       
YES\n"
                "NULL   tmp     tmp_nopk_twoucs name2   -9      VARCHAR 99      
198     NULL    NULL    1       NULL    NULL    -9      NULL    198     2       
YES\n"
@@ -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        BIGINT  BIGINT  WCHAR   WVARCHAR(10)\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"
                "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        BIGINT  BIGINT  WCHAR   WVARCHAR(10)\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"
                "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        BIGINT  BIGINT  WCHAR   WVARCHAR(10)\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"
                "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        BIGINT  BIGINT  WCHAR   WVARCHAR(10)\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"
                // 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]

Reply via email to