You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by al...@apache.org on 2026/10/11 20:08:40 UTC
(parquet-site) branch production updated: Add ClickHouse to the implementation status page (#211)
This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch production
in repository https://gitbox.apache.org/repos/asf/parquet-site.git
The following commit(s) were added to refs/heads/production by this push:
new 1f9d76a6 Add ClickHouse to the implementation status page (#211)
1f9d76a6 is described below
commit 1f9d76a6f1fad3fa68ded942bf7f921add809ad2
Author: Alexey Milovidov <mi...@clickhouse.com>
AuthorDate: Sun Oct 11 22:08:35 2026 +0200
Add ClickHouse to the implementation status page (#211)
Document Parquet feature support of the native ClickHouse reader and
writer as of version 26.9, and list ClickHouse among the open source
Parquet implementations.
---
.../en/docs/File Format/implementationstatus.md | 1 +
content/en/docs/Overview/_index.md | 1 +
data/implementations/engines.yaml | 19 +++
data/implementations/support/clickhouse.yaml | 148 +++++++++++++++++++++
4 files changed, 169 insertions(+)
diff --git a/content/en/docs/File Format/implementationstatus.md b/content/en/docs/File Format/implementationstatus.md
index 09f24fe9..14c8a29c 100644
--- a/content/en/docs/File Format/implementationstatus.md
+++ b/content/en/docs/File Format/implementationstatus.md
@@ -23,6 +23,7 @@ The value in each box means:
* [parquet-java](https://github.com/apache/parquet-java) (Java)
* [arrow-go](https://github.com/apache/arrow-go/tree/main/parquet) (Go)
* [arrow-rs](https://github.com/apache/arrow-rs/blob/main/parquet/README.md) (Rust)
+* [ClickHouse](https://github.com/ClickHouse/ClickHouse/tree/master/src/Processors/Formats/Impl/Parquet) (C++)
* [cudf](https://github.com/rapidsai/cudf) (cuDF C++)
* [hyparquet](https://github.com/hyparam/hyparquet) (JavaScript)
* [duckdb](https://github.com/duckdb/duckdb) (C++)
diff --git a/content/en/docs/Overview/_index.md b/content/en/docs/Overview/_index.md
index ac9d2806..491a8adb 100644
--- a/content/en/docs/Overview/_index.md
+++ b/content/en/docs/Overview/_index.md
@@ -43,6 +43,7 @@ Here is a non-exhaustive list of open source Parquet implementations:
* [Parquet C++, a subproject of Arrow C++](https://github.com/apache/arrow/tree/main/cpp/src/parquet) ([documentation](https://arrow.apache.org/docs/cpp/parquet.html))
* [Parquet Go, a subproject of Arrow Go](https://github.com/apache/arrow-go/tree/main/parquet) ([documentation](https://github.com/apache/arrow-go/tree/main/parquet))
* [Parquet Rust, a subproject of Arrow Rust](https://github.com/apache/arrow-rs/blob/main/parquet/README.md)
+* [ClickHouse](https://github.com/ClickHouse/ClickHouse) ([documentation](https://clickhouse.com/docs/interfaces/formats/Parquet))
* [cuDF](https://github.com/rapidsai/cudf)
* [Apache Impala](https://github.com/apache/impala)
* [DuckDB](https://github.com/duckdb/duckdb)
diff --git a/data/implementations/engines.yaml b/data/implementations/engines.yaml
index 636e23d9..af8a51d7 100644
--- a/data/implementations/engines.yaml
+++ b/data/implementations/engines.yaml
@@ -110,6 +110,25 @@
release_date: "2026-09-15"
release_notes_url: "https://github.com/apache/arrow-rs/releases/tag/60.0.0"
+- id: clickhouse
+ name: ClickHouse
+ display_name: ClickHouse
+ language: C++
+ repo_url: https://github.com/ClickHouse/ClickHouse/tree/master/src/Processors/Formats/Impl/Parquet
+ docs_url: https://clickhouse.com/docs/interfaces/formats/Parquet
+ versions:
+ default: "26.9"
+ releases:
+ "26.5":
+ release_date: "2026-05-21"
+ release_notes_url: "https://github.com/ClickHouse/ClickHouse/releases/tag/v26.5.1.882-stable"
+ "26.8":
+ release_date: "2026-08-30"
+ release_notes_url: "https://github.com/ClickHouse/ClickHouse/releases/tag/v26.8.1.2041-lts"
+ "26.9":
+ release_date: "2026-09-21"
+ release_notes_url: "https://github.com/ClickHouse/ClickHouse/releases/tag/v26.9.1.1629-stable"
+
- id: cudf
name: cudf
display_name: cuDF
diff --git a/data/implementations/support/clickhouse.yaml b/data/implementations/support/clickhouse.yaml
new file mode 100644
index 00000000..eb6272eb
--- /dev/null
+++ b/data/implementations/support/clickhouse.yaml
@@ -0,0 +1,148 @@
+engine_id: clickhouse
+last_updated: "2026-10-11"
+support:
+ physical-boolean:
+ status: full
+ physical-int32:
+ status: full
+ physical-int64:
+ status: full
+ physical-int96:
+ status: read
+ note: Read as DateTime64(9); INT96 is never written.
+ physical-float:
+ status: full
+ physical-double:
+ status: full
+ physical-byte-array:
+ status: full
+ physical-fixed-len-byte-array:
+ status: full
+ logical-string:
+ status: full
+ logical-enum:
+ status: full
+ note: Read as String; ClickHouse Enum8/Enum16 are written as ENUM.
+ logical-uuid:
+ status: full
+ logical-int-types:
+ status: full
+ logical-decimal-int32:
+ status: read
+ note: Decimals are always written as FIXED_LEN_BYTE_ARRAY.
+ logical-decimal-int64:
+ status: read
+ note: Decimals are always written as FIXED_LEN_BYTE_ARRAY.
+ logical-decimal-byte-array:
+ status: read
+ note: Decimals are always written as FIXED_LEN_BYTE_ARRAY.
+ logical-decimal-fixed-len-byte-array:
+ status: full
+ note: Precision up to 76 digits.
+ logical-float16:
+ status: read
+ note: Read as Float32.
+ logical-date:
+ status: full
+ logical-time-int32:
+ status: read
+ note: Read as DateTime64, or as Time64 when requested explicitly; ClickHouse Time/Time64 cannot be written.
+ logical-time-int64:
+ status: read
+ note: Read as DateTime64, or as Time64 when requested explicitly; ClickHouse Time/Time64 cannot be written.
+ logical-timestamp-int64:
+ status: full
+ note: Milliseconds, microseconds and nanoseconds.
+ logical-interval:
+ status: none
+ note: Read as raw FixedString(12) bytes.
+ logical-json:
+ status: full
+ note: Read as the JSON data type by default, or as String.
+ logical-bson:
+ status: read
+ note: Read as raw bytes in a String column.
+ logical-variant:
+ status: none
+ logical-geometry:
+ status: none
+ note: GeoParquet ("geo" key-value metadata) is supported instead; WKB and WKT are read, WKB is written.
+ logical-geography:
+ status: none
+ note: GeoParquet ("geo" key-value metadata) is supported instead; WKB and WKT are read, WKB is written.
+ logical-file:
+ status: none
+ logical-list:
+ status: full
+ logical-map:
+ status: full
+ logical-unknown:
+ status: read
+ encoding-plain:
+ status: full
+ encoding-plain-dictionary:
+ status: read
+ encoding-rle-dictionary:
+ status: full
+ encoding-rle:
+ status: full
+ note: Written only for repetition and definition levels; RLE-encoded BOOLEAN values are read.
+ encoding-bit-packed:
+ status: none
+ encoding-delta-binary-packed:
+ status: read
+ encoding-delta-length-byte-array:
+ status: read
+ encoding-delta-byte-array:
+ status: read
+ encoding-byte-stream-split:
+ status: read
+ encoding-alp:
+ status: none
+ encoding-byte-stream-split-extended:
+ status: read
+ compression-uncompressed:
+ status: full
+ compression-brotli:
+ status: full
+ compression-gzip:
+ status: full
+ compression-lz4-deprecated:
+ status: read
+ note: Both Hadoop-framed and raw LZ4 blocks are read; LZ4_RAW is written instead.
+ compression-lz4-raw:
+ status: full
+ compression-lzo:
+ status: none
+ compression-snappy:
+ status: full
+ compression-zstd:
+ status: full
+ format-bloom-filters:
+ status: full
+ format-bloom-filter-length:
+ status: full
+ format-stats-min-max:
+ status: full
+ format-page-index:
+ status: full
+ format-page-crc32:
+ status: full
+ format-modular-encryption:
+ status: none
+ format-size-statistics:
+ status: full
+ format-data-page-v2:
+ status: read
+ api-parquet-summary-file:
+ status: none
+ api-sorting-columns:
+ status: none
+ api-rowgroup-pruning-stats:
+ status: full
+ api-rowgroup-pruning-bloom:
+ status: full
+ api-column-projection:
+ status: full
+ api-page-pruning-stats:
+ status: full