ClickHouse / clickhouse-odbc

ODBC driver for ClickHouse
https://clickhouse.tech
Apache License 2.0
239 stars 84 forks source link

The last working release on Ubuntu 22.04 is 1.1.6 #439

Open Felixoid opened 5 months ago

Felixoid commented 5 months ago

Here's what I am doing to test it.

curl -O https://s3.amazonaws.com/clickhouse-builds/PRs/59953/b42de2bb6800e40d76d0272d580bec1e4255eaf0/package_release/clickhouse-common-static_24.2.1.1182_amd64.deb
dpkg-deb -R clickhouse-common-static_24.2.1.1182_amd64.deb clickhouse
docker run --name=broken-odbc --rm -it -v ${PWD}/:/usr/fake-bin clickhouse/stateless-test:ac6dc7b41795 /usr/fake-bin/clickhouse/usr/bin/clickhouse-odbc-bridge --http-port 9018 --listen-host 127.0.0.1 --http-timeout 60000000 http-max-field-value-size 99999999999999999

In a second terminal

docker exec -it broken-odbc /usr/fake-bin/clickhouse/usr/bin/clickhouse server

And in a third, 1.1.6 works

$ docker exec -it broken-odbc bash
root@f2dd5e6e2de8:/# curl -sLO https://github.com/ClickHouse/clickhouse-odbc/releases/download/v1.1.6.20200320/clickhouse-odbc-1.1.6-Linux.tar.gz
root@f2dd5e6e2de8:/# tar xf clickhouse-odbc-*-Linux.tar.gz && mv clickhouse-odbc-*-Linux/lib64/* /usr/local/lib64/ && /usr/fake-bin/clickhouse/usr/bin/clickhouse client -q "select count() > 1 as ok from (select * from odbc('DSN={ClickHouse DSN (ANSI)}','system','tables'))" ; /usr/fake-bin/clickhouse/usr/bin/clickhouse client -q "select count() > 1 as ok from (select * from odbc('DSN={ClickHouse DSN (UNICODE)}','system','tables'))"
1
1

And every version after 1.1.7 does not

root@08ad8abeb527:/# curl -sLO https://github.com/ClickHouse/clickhouse-odbc/releases/download/v1.1.7.20200414/clickhouse-odbc-1.1.7-Linux.tar.gz
root@08ad8abeb527:/# tar xf clickhouse-odbc-*-Linux.tar.gz && mv clickhouse-odbc-*-Linux/lib64/* /usr/local/lib64/ && /usr/fake-bin/clickhouse/usr/bin/clickhouse client -q "select count() > 1 as ok from (select * from odbc('DSN={ClickHouse DSN (ANSI)}','system','tables'))" ; /usr/fake-bin/clickhouse/usr/bin/clickhouse client -q "select count() > 1 as ok from (select * from odbc('DSN={ClickHouse DSN (UNICODE)}','system','tables'))"
Received exception from server (version 24.2.1):
Code: 86. DB::Exception: Received from localhost:9000. DB::HTTPException. DB::HTTPException: Received error from remote server /columns_info?use_connection_pooling=1&version=1&connection_string=DSN%3D%7BClickHouse%20DSN%20%28ANSI%29%7D&schema=system&table=tables&external_table_functions_use_nulls=1. HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'std::exception. Code: 1001, type: nanodbc::database_error, e.what() = contrib/nanodbc/nanodbc/nanodbc.cpp:1046: 0100: [unixODBC][Driver Manager]Can't open lib '/usr/local/lib64/libclickhouseodbc.so' : file not found  (version 24.2.1.1182)'
. (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER)
(query: select count() > 1 as ok from (select * from odbc('DSN={ClickHouse DSN (ANSI)}','system','tables')))
Received exception from server (version 24.2.1):
Code: 86. DB::Exception: Received from localhost:9000. DB::HTTPException. DB::HTTPException: Received error from remote server /columns_info?use_connection_pooling=1&version=1&connection_string=DSN%3D%7BClickHouse%20DSN%20%28UNICODE%29%7D&schema=system&table=tables&external_table_functions_use_nulls=1. HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'std::exception. Code: 1001, type: nanodbc::database_error, e.what() = contrib/nanodbc/nanodbc/nanodbc.cpp:1046: 0100: [unixODBC][Driver Manager]Can't open lib '/usr/local/lib64/libclickhouseodbcw.so' : file not found  (version 24.2.1.1182)'
. (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER)
(query: select count() > 1 as ok from (select * from odbc('DSN={ClickHouse DSN (UNICODE)}','system','tables')))

Be aware, the container must restart between tests.

I suspect the missing library

ldd /usr/local/lib64/libclickhouseodbc.so
        linux-vdso.so.1 (0x00007fff6c162000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x000071e991bb6000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x000071e991bb1000)
        libodbcinst.so.2 => /lib/x86_64-linux-gnu/libodbcinst.so.2 (0x000071e991b9c000)
        libicuuc.so.50 => not found
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x000071e991b97000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000071e991aae000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000071e990fd7000)
        /lib64/ld-linux-x86-64.so.2 (0x000071e991bc2000)
        libltdl.so.7 => /lib/x86_64-linux-gnu/libltdl.so.7 (0x000071e991aa3000)

Looks like it's related to https://github.com/ClickHouse/clickhouse-odbc/issues/428