Changes for version 0.02 - 2026-07-31
- Fix the bundled CityHash128 for inputs of 128 bytes or more, so compressed blocks of a realistic size checksum correctly. All compression paths were affected.
- Fix RowBinary NULL framing: a Nullable value is written only when the flag says not-null.
- Harden the decoder against malformed blocks: bound the variant slot table, cap type and JSON nesting depth, bound allocations driven by wire counts, and free partially-built columns on croak.
- Reject out-of-range Date, Date32, DateTime64, Enum and FixedString values instead of wrapping or truncating them.
- Set CLONE_SKIP on the encoder, streamer and bulk inserter.
- decode_stream / select_blocks: stop re-parsing a partial block on every chunk, and stop mistaking one for a corrupt header.
- parse_create_table accepts `show create table` as it arrives over HTTP; add a read timeout to TCP read_packet; reject '@' in HTTP hosts and accept bracketed IPv6 literals.
- Declare Encode and POSIX; suggest Time::Moment.
- Extend fuzz, leak, thread and hardening test coverage.
Modules
Fast XS encoder for ClickHouse Native format
Pack/unpack a useful subset of the ClickHouse native TCP protocol
Provides
in lib/ClickHouse/Encoder.pm
in lib/ClickHouse/Encoder.pm
Examples
- eg/async_insert.pl
- eg/clickhouse_replication.pl
- eg/csv_export.pl
- eg/etl_dbi.pl
- eg/for_table.pl
- eg/from_csv.pl
- eg/geo_from_wkt.pl
- eg/insert_async_ev.pl
- eg/insert_clickhouse_local.pl
- eg/insert_compressed.pl
- eg/insert_http.pl
- eg/insert_streaming.pl
- eg/insert_with_lowcardinality.pl
- eg/insert_with_settings.pl
- eg/json_aggregate.pl
- eg/json_lines_ingest.pl
- eg/json_path_projection.pl
- eg/json_query.pl
- eg/json_streaming.pl
- eg/migrate_table.pl
- eg/migrate_with_transform.pl
- eg/native_to_jsonl.pl
- eg/observability.pl
- eg/parallel_loader.pl
- eg/ping_healthcheck.pl
- eg/postgres_to_clickhouse.pl
- eg/redis_to_clickhouse.pl
- eg/replay.pl
- eg/replay_pcap.pl
- eg/rowbinary_insert.pl
- eg/schema_migrate.pl
- eg/select_blocks_streaming.pl
- eg/streaming_aggregate.pl
- eg/syslog_ingest.pl
- eg/tcp_compressed_pipeline.pl