Skip to content

Erro: ODBC Access on SAS  #4860

@asbisen

Description

@asbisen

What happens?

When I try to execute query from SAS to DuckDB ODBC, I encounter ERROR: CLI describe error: ODBC_DuckDB->DuckDB->GetColAttribute / Unsupported attribute type. I can successfully execute simple queries to create a table and insert values but when I try to execute any query that returns data the system errors out.

This is a sample code which I am trying to execute:

proc sql;
   connect to odbc as myconn("dsn=DuckDB;database=/mnt/viya-share/data/abisen/tlc/duck.db");
	
   SELECT *
   FROM connection TO myconn   
	  (SELECT * FROM t1); 

disconnect from myconn;
quit;

File test.csv consists of the following rows

"COL1","COL2"
"test1",1111.000000
"test2",2222.000000

I turned on verbose logging and this is where I see the error

84   /* Query CSV */
85   proc sql;
86      connect to odbc as myconn("dsn=DuckDB;database=:memory:;DRIVER_TRACE=ALL;
86 ! DRIVER_TRACEFILE=/mnt/viya-share/access-clients/trace/odbctrace");
ODBC: ENTER SQLAllocHandle
                              1 <SQL_HANDLE_ENV>
             0x0000000000000000
             0x00000000300a8168
ODBC: EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
                              1 <SQL_HANDLE_ENV>
             0x0000000000000000
             0x00000000300a8168 (0x0000000014096be0)
ODBC: ENTER SQLSetEnvAttr
             0x0000000014096be0
                            200 <SQL_ATTR_ODBC_VERSION>
             0x0000000000000003
                             -6
ODBC: EXIT SQLSetEnvAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096be0
                            200 <SQL_ATTR_ODBC_VERSION>
             0x0000000000000003
                             -6
ODBC: ENTER SQLAllocHandle
                              2 <SQL_HANDLE_DBC>
             0x0000000014096be0
             0x00000000300a97b8
ODBC: EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
                              2 <SQL_HANDLE_DBC>
             0x0000000014096be0
             0x00000000300a97b8 (0x0000000014096d60)
ODBC: ENTER SQLSetConnectAttr
             0x0000000014096d60
                            110 <SQL_ODBC_CURSORS>
                              2 <SQL_CUR_USE_DRIVER>
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            110 <SQL_ODBC_CURSORS>
                              2 <SQL_CUR_USE_DRIVER>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLDriverConnect
             0x0000000014096d60
             0x0000000000000000
             0x00000000300a99a0 XXXXXXX
                             -3  SQL_NTS
             0x00000000213c37f0
                           1024
             0x00000000213c3bf2
                              0 <SQL_DRIVER_NOPROMPT>
ODBC: EXIT SQLDriverConnect with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
             0x0000000000000000
             0x00000000300a99a0 XXXXXXX
                             -3  SQL_NTS
             0x00000000213c37f0 XXXXXXX
                           1024
             0x00000000213c3bf2  [              17]
                              0 <SQL_DRIVER_NOPROMPT>
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             47 <SQL_USER_NAME>
             0x00000000213c4690
                             64
             0x00000000213c37e2
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             47 <SQL_USER_NAME>
             0x00000000213c4690 [       0] ""
                             64
             0x00000000213c37e2 (0)
ODBC: ENTER SQLAllocHandle
                              3 <SQL_HANDLE_STMT>
             0x0000000014096d60
             0x00000000300a97c8
ODBC: EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
                              3 <SQL_HANDLE_STMT>
             0x0000000014096d60
             0x00000000300a97c8 (0x0000000014165220)
ODBC: ENTER SQLSetConnectAttr
             0x0000000014096d60
                            102 <SQL_AUTOCOMMIT>
                              1 <SQL_AUTOCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            102 <SQL_AUTOCOMMIT>
                              1 <SQL_AUTOCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                              2 <SQL_DATA_SOURCE_NAME>
             0x00000000213c31e0
                            128
             0x00000000213c2722
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                              2 <SQL_DATA_SOURCE_NAME>
             0x00000000213c31e0 [       6] "DuckDB"
                            128
             0x00000000213c2722 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             25 <SQL_DATA_SOURCE_READ_ONLY>
             0x00000000300c75f0
                              8
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             25 <SQL_DATA_SOURCE_READ_ONLY>
             0x00000000300c75f0 [       1] "N"
                              8
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             17 <SQL_DBMS_NAME>
             0x00000000300c75f8
                            128
             0x00000000300c7678
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             17 <SQL_DBMS_NAME>
             0x00000000300c75f8 [       6] "DuckDB"
                            128
             0x00000000300c7678 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             18 <SQL_DBMS_VER>
             0x00000000213c25d0
                            128
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             18 <SQL_DBMS_VER>
             0x00000000213c25d0 [       6] "v0.5.1"
                            128
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                              6 <SQL_DRIVER_NAME>
             0x00000000300d26a4
                            128
             0x00000000300d2724
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                              6 <SQL_DRIVER_NAME>
             0x00000000300d26a4 [       6] "DuckDB"
                            128
             0x00000000300d2724 (6)
ODBC: ENTER SQLGetTypeInfo
             0x0000000014165220
                              0 <SQL_ALL_TYPES>
ODBC: EXIT SQLGetTypeInfo with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              0 <SQL_ALL_TYPES>
ODBC: ENTER SQLBindCol
             0x0000000014165220
                              1
                              1 <SQL_C_CHAR>
             0x00000000213c2440
                            129
             0x00000000213c31d0
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              1
                              1 <SQL_C_CHAR>
             0x00000000213c2440
                            129
             0x00000000213c31d0
ODBC: ENTER SQLBindCol
             0x0000000014165220
                              2
                              5 <SQL_C_SHORT>
             0x00000000213c26f4
                              2
             0x00000000213c31c8
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              2
                              5 <SQL_C_SHORT>
             0x00000000213c26f4
                              2
             0x00000000213c31c8
ODBC: ENTER SQLBindCol
             0x0000000014165220
                              3
                              4 <SQL_C_LONG>
             0x00000000213c24c4
                              4
             0x00000000213c26f8
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              3
                              4 <SQL_C_LONG>
             0x00000000213c24c4
                              4
             0x00000000213c26f8
ODBC: ENTER SQLBindCol
             0x0000000014165220
                              4
                              1 <SQL_C_CHAR>
             0x00000000213c26d0
                             33
             0x00000000213c23b8
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              4
                              1 <SQL_C_CHAR>
             0x00000000213c26d0
                             33
             0x00000000213c23b8
ODBC: ENTER SQLBindCol
             0x0000000014165220
                              5
                              1 <SQL_C_CHAR>
             0x00000000213c2700
                             33
             0x00000000213c24c8
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              5
                              1 <SQL_C_CHAR>
             0x00000000213c2700
                             33
             0x00000000213c24c8
ODBC: ENTER SQLBindCol
             0x0000000014165220
                              6
                              1 <SQL_C_CHAR>
             0x00000000213c24d0
                            128
             0x00000000213c2728
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              6
                              1 <SQL_C_CHAR>
             0x00000000213c24d0
                            128
             0x00000000213c2728
ODBC: ENTER SQLBindCol
             0x0000000014165220
                             11
                              5 <SQL_C_SHORT>
             0x00000000213c24c2
                              2
             0x00000000213c2730
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                             11
                              5 <SQL_C_SHORT>
             0x00000000213c24c2
                              2
             0x00000000213c2730
ODBC: ENTER SQLBindCol
             0x0000000014165220
                             15
                              5 <SQL_C_SHORT>
             0x00000000213c26f2
                              2
             0x00000000213c2738
ODBC: EXIT SQLBindCol with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                             15
                              5 <SQL_C_SHORT>
             0x00000000213c26f2
                              2
             0x00000000213c2738
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 0 (SQL_SUCCESS)
             0x0000000014165220
ODBC: ENTER SQLFetch
             0x0000000014165220
ODBC: EXIT SQLFetch with return code 100 (SQL_NO_DATA_FOUND)
             0x0000000014165220
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                              0 <SQL_MAX_DRIVER_CONNECTIONS>
             0x00000000300c75e8
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                              0 <SQL_MAX_DRIVER_CONNECTIONS>
             0x00000000300c75e8 (1)
                              2
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                              1 <SQL_MAX_CONCURRENT_ACTIVITIES>
             0x00000000300c75ea
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                              1 <SQL_MAX_CONCURRENT_ACTIVITIES>
             0x00000000300c75ea (0)
                              2
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             23 <SQL_CURSOR_COMMIT_BEHAVIOR>
             0x00000000300c75ec
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             23 <SQL_CURSOR_COMMIT_BEHAVIOR>
             0x00000000300c75ec (2) <SQL_CB_PRESERVE>
                              2
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             24 <SQL_CURSOR_ROLLBACK_BEHAVIOR>
             0x00000000300c75ee
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             24 <SQL_CURSOR_ROLLBACK_BEHAVIOR>
             0x00000000300c75ee (1) <SQL_CB_CLOSE>
                              2
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             26 <SQL_DEFAULT_TXN_ISOLATION>
             0x00000000300c767c
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             26 <SQL_DEFAULT_TXN_ISOLATION>
             0x00000000300c767c (8) <SQL_TXN_SERIALIZABLE>
                              4
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             28 <SQL_IDENTIFIER_CASE>
             0x00000000300c76a4
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             28 <SQL_IDENTIFIER_CASE>
             0x00000000300c76a4 (2) <SQL_IC_LOWER>
                              2
             0x00000000213c26f6 (6)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             29 <SQL_IDENTIFIER_QUOTE_CHAR>
             0x00000000300c7680
                              5
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             29 <SQL_IDENTIFIER_QUOTE_CHAR>
             0x00000000300c7680 [       1] """
                              5
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             78 <SQL_LOCK_TYPES>
             0x00000000300c76ac
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             78 <SQL_LOCK_TYPES>
             0x00000000213c20c8 (0) <>
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                            101 <SQL_MAX_COLUMNS_IN_TABLE>
             0x00000000300c7686
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            101 <SQL_MAX_COLUMNS_IN_TABLE>
             0x00000000300c7686 (0)
                              2
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             30 <SQL_MAX_COLUMN_NAME_LEN>
             0x00000000300c7688
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             30 <SQL_MAX_COLUMN_NAME_LEN>
             0x00000000300c7688 (0)
                              2
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             35 <SQL_MAX_TABLE_NAME_LEN>
             0x00000000300c768a
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             35 <SQL_MAX_TABLE_NAME_LEN>
             0x00000000300c768a (0)
                              2
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             91 <SQL_SCHEMA_USAGE>
             0x00000000300c7690
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             91 <SQL_SCHEMA_USAGE>
             0x00000000213c20c8 (5) <SQL_SU_DML_STATEMENTS | SQL_SU_TABLE_DEFINITION >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             92 <SQL_CATALOG_USAGE>
             0x00000000300c7694
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             92 <SQL_CATALOG_USAGE>
             0x00000000213c20c8 (5) <SQL_CU_DML_STATEMENTS | SQL_CU_TABLE_DEFINITION >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             80 <SQL_POSITIONED_STATEMENTS>
             0x00000000300c7698
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             80 <SQL_POSITIONED_STATEMENTS>
             0x00000000213c20c8 (0) <>
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             79 <SQL_POS_OPERATIONS>
             0x00000000300c76a8
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             79 <SQL_POS_OPERATIONS>
             0x00000000213c20c8 (0) <>
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             46 <SQL_TXN_CAPABLE>
             0x00000000300c769c
                              2
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             46 <SQL_TXN_CAPABLE>
             0x00000000300c769c (2) <SQL_TC_ALL>
                              2
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             72 <SQL_TXN_ISOLATION_OPTION>
             0x00000000300c76a0
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             72 <SQL_TXN_ISOLATION_OPTION>
             0x00000000213c20c8 (8) <SQL_TXN_SERIALIZABLE >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             49 <SQL_NUMERIC_FUNCTIONS>
             0x00000000300d273c
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             49 <SQL_NUMERIC_FUNCTIONS>
             0x00000000300d273c (8257535) <SQL_FN_NUM_ABS | SQL_FN_NUM_ACOS | SQL_FN_NUM_ASIN | SQL_FN_NUM_ATAN | SQL_FN_NUM_ATAN2 
| SQL_FN_NUM_CEILING | SQL_FN_NUM_COS | SQL_FN_NUM_COT | SQL_FN_NUM_EXP | SQL_FN_NUM_FLOOR | SQL_FN_NUM_LOG | SQL_FN_NUM_MOD | 
SQL_FN_NUM_SIGN | SQL_FN_NUM_SIN | SQL_FN_NUM_SQRT | SQL_FN_NUM_TAN | SQL_FN_NUM_PI | SQL_FN_NUM_DEGREES | SQL_FN_NUM_LOG10 | 
SQL_FN_NUM_POWER | SQL_FN_NUM_RADIANS | SQL_FN_NUM_ROUND >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             50 <SQL_STRING_FUNCTIONS>
             0x00000000300d2740
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             50 <SQL_STRING_FUNCTIONS>
             0x00000000300d2740 (540669) <SQL_FN_STR_CONCAT | SQL_FN_STR_LEFT | SQL_FN_STR_LTRIM | SQL_FN_STR_LENGTH | 
SQL_FN_STR_LOCATE | SQL_FN_STR_LCASE | SQL_FN_STR_REPEAT | SQL_FN_STR_REPLACE | SQL_FN_STR_RIGHT | SQL_FN_STR_RTRIM | 
SQL_FN_STR_SUBSTRING | SQL_FN_STR_UCASE | SQL_FN_STR_ASCII | SQL_FN_STR_BIT_LENGTH >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             52 <SQL_TIMEDATE_FUNCTIONS>
             0x00000000300d2744
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             52 <SQL_TIMEDATE_FUNCTIONS>
             0x00000000300d2744 (2072061) <SQL_FN_TD_NOW | SQL_FN_TD_DAYOFMONTH | SQL_FN_TD_DAYOFWEEK | SQL_FN_TD_DAYOFYEAR | 
SQL_FN_TD_MONTH | SQL_FN_TD_QUARTER | SQL_FN_TD_WEEK | SQL_FN_TD_YEAR | SQL_FN_TD_HOUR | SQL_FN_TD_MINUTE | SQL_FN_TD_SECOND | 
SQL_FN_TD_DAYNAME | SQL_FN_TD_MONTHNAME | SQL_FN_TD_CURRENT_DATE | SQL_FN_TD_CURRENT_TIME | SQL_FN_TD_CURRENT_TIMESTAMP | 
SQL_FN_TD_EXTRACT >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             67 <SQL_CONVERT_TIMESTAMP>
             0x00000000300d2748
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             67 <SQL_CONVERT_TIMESTAMP>
             0x00000000300d2748 (230145) <SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_DATE | SQL_CVT_TIME | 
SQL_CVT_TIMESTAMP >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             58 <SQL_CONVERT_DECIMAL>
             0x00000000300d274c
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             58 <SQL_CONVERT_DECIMAL>
             0x00000000300d274c (1074175) <SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | 
SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_TINYINT | SQL_CVT_BIGINT | 
SQL_CVT_INTERVAL_DAY_TIME >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             59 <SQL_CONVERT_DOUBLE>
             0x00000000300d2750
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             59 <SQL_CONVERT_DOUBLE>
             0x00000000300d2750 (25599) <SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | 
SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_TINYINT | SQL_CVT_BIGINT >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             60 <SQL_CONVERT_FLOAT>
             0x00000000300d2754
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             60 <SQL_CONVERT_FLOAT>
             0x00000000300d2754 (25599) <SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | 
SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_TINYINT | SQL_CVT_BIGINT >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             63 <SQL_CONVERT_NUMERIC>
             0x00000000300d2758
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             63 <SQL_CONVERT_NUMERIC>
             0x00000000300d2758 (1074175) <SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | 
SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_TINYINT | SQL_CVT_BIGINT | 
SQL_CVT_INTERVAL_DAY_TIME >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             64 <SQL_CONVERT_REAL>
             0x00000000300d275c
                              4
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             64 <SQL_CONVERT_REAL>
             0x00000000300d275c (25599) <SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | 
SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_TINYINT | SQL_CVT_BIGINT >
                              4
             0x00000000213c26f6 (1)
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             59 <SQL_API_SQLEXTENDEDFETCH>
             0x00000000213c23a0
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             59 <SQL_API_SQLEXTENDEDFETCH>
             0x00000000213c23a0 (0) <SQL_FALSE>
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             68 <SQL_API_SQLSETPOS>
             0x00000000213c23a0
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             68 <SQL_API_SQLSETPOS>
             0x00000000213c23a0 (1) <SQL_TRUE>
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             65 <SQL_API_SQLPRIMARYKEYS>
             0x00000000213c23a0
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             65 <SQL_API_SQLPRIMARYKEYS>
             0x00000000213c23a0 (1) <SQL_TRUE>
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             60 <SQL_API_SQLFOREIGNKEYS>
             0x00000000213c23a0
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             60 <SQL_API_SQLFOREIGNKEYS>
             0x00000000213c23a0 (1) <SQL_TRUE>
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             53 <SQL_API_SQLSTATISTICS>
             0x00000000213c23a0
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             53 <SQL_API_SQLSTATISTICS>
             0x00000000213c23a0 (1) <SQL_TRUE>
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             19 <SQL_API_SQLPREPARE>
             0x00000000213c23a0
ODBC: ENTER SQLGetFunctions
             0x0000000014096d60
                             19 <SQL_API_SQLPREPARE>
             0x00000000213c23a0 (1) <SQL_TRUE>
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                              7 <SQL_DRIVER_VER>
             0x00000000213c2550
                            128
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                              7 <SQL_DRIVER_VER>
             0x00000000213c2550 [      10] "03.00.0000"
                            128
             0x00000000213c26f6 (10)
ODBC: ENTER SQLGetInfo
             0x0000000014096d60
                             77 <SQL_DRIVER_ODBC_VER>
             0x00000000213c2550
                            128
             0x00000000213c26f6
ODBC: EXIT SQLGetInfo with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                             77 <SQL_DRIVER_ODBC_VER>
             0x00000000213c2550 [       5] "03.00"
                            128
             0x00000000213c26f6 (5)
ODBC: ENTER SQLFreeStmt
             0x0000000014165220
                              0 <SQL_CLOSE>
ODBC: EXIT SQLFreeStmt with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              0 <SQL_CLOSE>
ODBC: ENTER SQLSetConnectAttr
             0x0000000014096d60
                            102 <SQL_AUTOCOMMIT>
                              1 <SQL_AUTOCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            102 <SQL_AUTOCOMMIT>
                              1 <SQL_AUTOCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: No schema given, using database default.
ODBC: AUTOCOMMIT is YES for connection 0
87   
88      select *
89      from connection to myconn
90     (select count(*)
91         from '/mnt/viya-share/data/abisen/tlc/test.csv'
92     );
ODBC: ENTER SQLGetConnectAttr
             0x0000000014096d60
                            102 <SQL_ATTR_AUTOCOMMIT>
             0x00000000213c3788
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLGetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            102 <SQL_ATTR_AUTOCOMMIT>
             0x00000000213c3788 (1) <SQL_AUTCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLSetConnectAttr
             0x0000000014096d60
                            108 <SQL_TXN_ISOLATION>
                              2 <SQL_TXN_READ_COMMITTED>
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            108 <SQL_TXN_ISOLATION>
                              2 <SQL_TXN_READ_COMMITTED>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLGetConnectAttr
             0x0000000014096d60
                            102 <SQL_ATTR_AUTOCOMMIT>
             0x00000000213c3708
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLGetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            102 <SQL_ATTR_AUTOCOMMIT>
             0x00000000213c3708 (1) <SQL_AUTCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLSetConnectAttr
             0x0000000014096d60
                            108 <SQL_TXN_ISOLATION>
                              2 <SQL_TXN_READ_COMMITTED>
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            108 <SQL_TXN_ISOLATION>
                              2 <SQL_TXN_READ_COMMITTED>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLAllocHandle
                              3 <SQL_HANDLE_STMT>
             0x0000000014096d60
             0x000000003ba92a68
ODBC: EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
                              3 <SQL_HANDLE_STMT>
             0x0000000014096d60
             0x000000003ba92a68 (0x00000000140b21b0)
ODBC: ENTER SQLSetStmtAttr
             0x00000000140b21b0
                              7 <SQL_ATTR_CONCURRENCY>
                              1 <SQL_CONCUR_READ_ONLY>
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetStmtAttr with return code 1 (SQL_SUCCESS_WITH_INFO)
             0x00000000140b21b0
                              7 <SQL_ATTR_CONCURRENCY>
                              1 <SQL_CONCUR_READ_ONLY>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLSetStmtAttr
             0x00000000140b21b0
                              1 <SQL_ATTR_MAX_ROWS>
                              0
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLSetStmtAttr with return code 1 (SQL_SUCCESS_WITH_INFO)
             0x00000000140b21b0
                              1 <SQL_ATTR_MAX_ROWS>
                              0
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLFreeStmt
             0x0000000014165220
                              0 <SQL_CLOSE>
ODBC: EXIT SQLFreeStmt with return code 0 (SQL_SUCCESS)
             0x0000000014165220
                              0 <SQL_CLOSE>
 
ODBC_1: Prepared: on connection 0
select count(*) from '/mnt/viya-share/data/abisen/tlc/test.csv'

ODBC: ENTER SQLPrepare
             0x00000000140b21b0
             0x000000003ba93440 [      63] "select count(*) from '/mnt/viya-share/data/abisen/tlc/test.csv'"
                             63
ODBC: EXIT SQLPrepare with return code 0 (SQL_SUCCESS)
             0x00000000140b21b0
             0x000000003ba93440 [      63] "select count(*) from '/mnt/viya-share/data/abisen/tlc/test.csv'"
                             63
ODBC: ENTER SQLNumResultCols
             0x00000000140b21b0
             0x00000000213c38f8
ODBC: EXIT SQLNumResultCols with return code 0 (SQL_SUCCESS)
             0x00000000140b21b0
             0x00000000213c38f8 (1)
ODBC: ENTER SQLDescribeCol
             0x00000000140b21b0
                              1
             0x000000003ba936c8
                            257
             0x000000003ba937ca
             0x000000003ba937cc
             0x000000003ba937d0
             0x000000003ba937d8
             0x000000003ba937da
ODBC: EXIT SQLDescribeCol with return code 0 (SQL_SUCCESS)
             0x00000000140b21b0
                              1
             0x000000003ba936c8 [      12] "count_star()"
                            257
             0x000000003ba937ca (12)
             0x000000003ba937cc (-5) <SQL_BIGINT>
             0x000000003ba937d0 (20)
             0x000000003ba937d8 (0)
             0x000000003ba937da (2)
ODBC: ENTER SQLColAttribute
             0x00000000140b21b0
                              1
                              9 <SQL_DESC_FIXED_PREC_SCALE>
             0x0000000000000000
                              0
             0x0000000000000000
             0x000000003ba93810
ODBC: EXIT SQLColAttribute with return code -1 (SQL_ERROR)
             0x00000000140b21b0
                              1
                              9 <SQL_DESC_FIXED_PREC_SCALE>
             0x0000000000000000
                              0
             0x0000000000000000
             0x000000003ba93810 (0)
ODBC: ENTER SQLColAttributes
             0x00000000140b21b0
                              1
                              9 <SQL_COLUMN_MONEY>
             0x0000000000000000
                              0
             0x0000000000000000
             0x000000003ba93810
ODBC: EXIT SQLColAttributes with return code -1 (SQL_ERROR)
             0x00000000140b21b0
                              1
                              9 <SQL_COLUMN_MONEY>
             0x0000000000000000
                              0
             0x0000000000000000
             0x000000003ba93810 (0)
ODBC: ENTER SQLFreeHandle
                              3 <SQL_HANDLE_STMT>
             0x00000000140b21b0
ODBC: EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
                              3 <SQL_HANDLE_STMT>
             0x00000000140b21b0
ERROR: CLI describe error: ODBC_DuckDB->DuckDB->GetColAttribute
Unsupported attribute type
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
93   
94   disconnect from myconn;
NOTE: Statement not executed due to NOEXEC option.
95   quit;
ODBC: ENTER SQLGetConnectAttr
             0x0000000014096d60
                            102 <SQL_ATTR_AUTOCOMMIT>
             0x00000000213c4988
                             -6 <SQL_IS_INTEGER>
ODBC: EXIT SQLGetConnectAttr with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
                            102 <SQL_ATTR_AUTOCOMMIT>
             0x00000000213c4988 (1) <SQL_AUTCOMMIT_ON>
                             -6 <SQL_IS_INTEGER>
ODBC: ENTER SQLFreeHandle
                              3 <SQL_HANDLE_STMT>
             0x0000000014165220
ODBC: EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
                              3 <SQL_HANDLE_STMT>
             0x0000000014165220
ODBC: ENTER SQLDisconnect
             0x0000000014096d60
ODBC: EXIT SQLDisconnect with return code 0 (SQL_SUCCESS)
             0x0000000014096d60
ODBC: ENTER SQLFreeHandle
                              1 <SQL_HANDLE_ENV>
             0x0000000014096be0
ODBC: EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
                              1 <SQL_HANDLE_ENV>
             0x0000000014096be0
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.10 seconds
      cpu time            0.14 seconds

To Reproduce

Execute the following code in a SAS environment with ODBC driver configured as per instructions.

proc sql;
   connect to odbc as myconn("dsn=DuckDB;database=/mnt/viya-share/data/abisen/tlc/duck.db");
	
   SELECT *
   FROM connection TO myconn   
	  (SELECT * FROM t1); 

disconnect from myconn;
quit;

OS:

Linux

DuckDB Version:

0.5

DuckDB Client:

SAS ODBC (unixODBC)

Full Name:

Anand Bisen

Affiliation:

SAS

Have you tried this on the latest master branch?

  • I agree

Have you tried the steps to reproduce? Do they include all relevant data and configuration? Does the issue you report still appear there?

  • I agree

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions