0.02  2026-04-30
    - Bug fixes: keepalive PING/PONG callback routing; last_error_code
      now reports the top-level exception code; IPv6 URI literals;
      skip_pending socket teardown.
    - HTTP arrayref insert() croaks on nested refs; nested Array/Tuple/Map
      columns require the native protocol.
    - POD rewrite; expanded t/, xt/, and eg/.

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
