clickhouse-odbc-bridge

Simple HTTP-server which works like a proxy for ODBC driver. The main motivation
was possible segfaults or another faults in ODBC implementations, which can
crash whole clickhouse-server process.

This tool works via HTTP, not via pipes, shared memory, or TCP because:
- It’s simpler to implement
- It’s simpler to debug
- jdbc-bridge can be implemented in the same way

Usage

clickhouse-server use this tool inside odbc table function and StorageODBC.
However it can be used as standalone tool from command line with the following
parameters in POST-request URL:
- connection_string — ODBC connection string.
- columns — columns in ClickHouse NamesAndTypesList format, name in backticks,
type as string. Name and type are space separated, rows separated with
newline.
- max_block_size — optional parameter, sets maximum size of single block.
Query is send in post body. Response is returned in RowBinary format.

Example:

  1. $ clickhouse-odbc-bridge --http-port 9018 --daemon
  2. $ curl -d "query=SELECT PageID, ImpID, AdType FROM Keys ORDER BY PageID, ImpID" --data-urlencode "connection_string=DSN=ClickHouse;DATABASE=stat" --data-urlencode "columns=columns format version: 1
  3. 3 columns:
  4. \`PageID\` String
  5. \`ImpID\` String
  6. \`AdType\` String
  7. " "http://localhost:9018/" > result.txt
  8. $ cat result.txt
  9. 12246623837185725195925621517