Changes for version 0.01 - 2026-03-15
- Core:
- Async queries via HTTP protocol (port 8123)
- Native TCP binary protocol (port 9000, revision 54459)
- TLS/SSL support via OpenSSL (both protocols)
- LZ4 compression for native protocol (with CityHash checksums)
- Gzip compression for HTTP protocol (request and response)
- HTTP chunked transfer encoding
- Connection URI parsing (clickhouse[+native]://user:pass@host:port/db)
- Per-query and connection-level ClickHouse settings
- Parameterized queries via params => { name => value }
- Keepalive ping timer for idle native connections
- Auto-reconnect with exponential backoff (reconnect_delay, reconnect_max_delay)
- Graceful drain callback (fires when all pending queries complete)
- Query cancellation and skip_pending
- Query features:
- TabSeparated format parser for HTTP responses
- INSERT with TSV string or arrayref data (both protocols)
- Raw query mode for HTTP (return unparsed response body)
- on_data streaming callback for native protocol (per-block delivery)
- on_progress callback for native protocol progress packets
- query_id tracking via last_query_id accessor
- query_timeout per-query with automatic cancellation
- Native protocol type support:
- Int8/16/32/64/128/256, UInt8/16/32/64/128/256
- Float32/Float64, Bool
- String, FixedString(N)
- Date, Date32, DateTime, DateTime64 (with timezone support)
- Decimal32/64/128 (with optional scaling via decode_decimal)
- Enum8/16 (with optional label decoding via decode_enum)
- UUID, IPv4, IPv6
- Nullable(T), Array(T), Tuple(T...), Map(K,V)
- LowCardinality(T) with cross-block shared dictionary support
- SimpleAggregateFunction(func, T), Nested(...)
- Nothing type
- Accessors:
- column_names, column_types — schema metadata from last query
- last_error_code — ClickHouse error code (both protocols)
- last_totals, last_extremes — WITH TOTALS / extremes results
- profile_rows, profile_bytes, profile_rows_before_limit
- server_info, server_version, server_timezone
- is_connected, pending_count
Modules
Async ClickHouse client using EV