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 3038e50b feat: Add haskell dataframe support (#204)
3038e50b is described below
commit 3038e50b5b1549b06c1d7aa847ec04784b7fbb8d
Author: Michael Chavinda <[email protected]>
AuthorDate: Tue Sep 22 03:31:43 2026 -0700
feat: Add haskell dataframe support (#204)
* feat: Add haskell dataframe support
* Add entries for logical-file and encoding-alp
* Rename Haskell entry to DataHaskell
`dataframe` is very broad.
* fix: Also update engines with new DataHaskell name
---------
Co-authored-by: Andrew Lamb <[email protected]>
---
.../en/docs/File Format/implementationstatus.md | 1 +
data/implementations/engines.yaml | 19 +++
data/implementations/support/dataframe.yaml | 141 +++++++++++++++++++++
3 files changed, 161 insertions(+)
diff --git a/content/en/docs/File Format/implementationstatus.md
b/content/en/docs/File Format/implementationstatus.md
index 96cffb89..09f24fe9 100644
--- a/content/en/docs/File Format/implementationstatus.md
+++ b/content/en/docs/File Format/implementationstatus.md
@@ -27,6 +27,7 @@ The value in each box means:
* [hyparquet](https://github.com/hyparam/hyparquet) (JavaScript)
* [duckdb](https://github.com/duckdb/duckdb) (C++)
* [polars](https://github.com/pola-rs/polars) (Rust)
+* [DataHaskell](https://github.com/DataHaskell/dataframe) (Haskell)
<!-- Data driven table, see /layouts/shortcodes -->
{{< implementation-status >}}
diff --git a/data/implementations/engines.yaml
b/data/implementations/engines.yaml
index c1db67ac..636e23d9 100644
--- a/data/implementations/engines.yaml
+++ b/data/implementations/engines.yaml
@@ -185,3 +185,22 @@
"1.37.0":
release_date: "2026-01-10"
release_notes_url:
"https://github.com/pola-rs/polars/releases/tag/py-1.37.0"
+
+- id: dataframe
+ name: DataHaskell
+ display_name: DataHaskell
+ language: Haskell
+ repo_url: https://github.com/DataHaskell/dataframe
+ docs_url: https://hackage.haskell.org/package/dataframe-parquet
+ versions:
+ default: "3.6.0.0"
+ releases:
+ "3.4.0.0":
+ release_date: "2026-08-12"
+ release_notes_url:
"https://hackage.haskell.org/package/dataframe-3.4.0.0/changelog"
+ "3.5.0.0":
+ release_date: "2026-08-14"
+ release_notes_url:
"https://hackage.haskell.org/package/dataframe-3.5.0.0/changelog"
+ "3.6.0.0":
+ release_date: "2026-08-29"
+ release_notes_url:
"https://hackage.haskell.org/package/dataframe-3.6.0.0/changelog"
diff --git a/data/implementations/support/dataframe.yaml
b/data/implementations/support/dataframe.yaml
new file mode 100644
index 00000000..fd09d6c1
--- /dev/null
+++ b/data/implementations/support/dataframe.yaml
@@ -0,0 +1,141 @@
+engine_id: dataframe
+last_updated: "2026-09-09"
+support:
+ physical-boolean:
+ status: full
+ physical-int32:
+ status: full
+ physical-int64:
+ status: full
+ physical-int96:
+ status: read
+ physical-float:
+ status: full
+ physical-double:
+ status: full
+ physical-byte-array:
+ status: full
+ physical-fixed-len-byte-array:
+ status: read
+ logical-string:
+ status: full
+ logical-enum:
+ status: read
+ note: Read back as a plain string; the ENUM annotation is not surfaced.
+ logical-uuid:
+ status: none
+ logical-int-types:
+ status: read
+ note: Signed integers only; unsigned annotations are read as signed values
of the same width.
+ logical-decimal-int32:
+ status: read
+ note: Decimals are converted to Double on read, so precision above 15
digits is lost.
+ logical-decimal-int64:
+ status: read
+ note: Decimals are converted to Double on read, so precision above 15
digits is lost.
+ logical-decimal-byte-array:
+ status: none
+ logical-decimal-fixed-len-byte-array:
+ status: none
+ logical-float16:
+ status: none
+ logical-date:
+ status: read
+ note: Surfaced as the raw INT32/INT64 value; the DATE/TIME annotation is
not applied.
+ logical-time-int32:
+ status: read
+ note: Surfaced as the raw INT32/INT64 value; the DATE/TIME annotation is
not applied.
+ logical-time-int64:
+ status: read
+ note: Surfaced as the raw INT32/INT64 value; the DATE/TIME annotation is
not applied.
+ logical-timestamp-int64:
+ status: full
+ note: Milliseconds, microseconds and nanoseconds are read; the writer
always emits microseconds.
+ logical-interval:
+ status: none
+ logical-json:
+ status: read
+ note: Read back as a plain string; the JSON annotation is not surfaced.
+ logical-bson:
+ status: none
+ logical-variant:
+ status: none
+ logical-geometry:
+ status: none
+ logical-geography:
+ status: none
+ logical-file:
+ status: none
+ logical-list:
+ status: read
+ logical-map:
+ status: none
+ logical-unknown:
+ status: none
+ encoding-plain:
+ status: full
+ encoding-plain-dictionary:
+ status: read
+ encoding-rle-dictionary:
+ status: read
+ encoding-rle:
+ status: full
+ note: Used for repetition and definition levels.
+ encoding-bit-packed:
+ status: none
+ encoding-delta-binary-packed:
+ status: none
+ encoding-delta-length-byte-array:
+ status: none
+ encoding-delta-byte-array:
+ status: none
+ encoding-byte-stream-split:
+ status: none
+ encoding-alp:
+ status: none
+ encoding-byte-stream-split-extended:
+ status: none
+ compression-uncompressed:
+ status: full
+ compression-brotli:
+ status: none
+ compression-gzip:
+ status: read
+ compression-lz4-deprecated:
+ status: none
+ compression-lz4-raw:
+ status: none
+ compression-lzo:
+ status: none
+ compression-snappy:
+ status: full
+ compression-zstd:
+ status: read
+ format-bloom-filters:
+ status: none
+ format-bloom-filter-length:
+ status: none
+ format-stats-min-max:
+ status: none
+ format-page-index:
+ status: none
+ format-page-crc32:
+ status: none
+ format-modular-encryption:
+ status: none
+ format-size-statistics:
+ status: none
+ format-data-page-v2:
+ status: read
+ api-parquet-summary-file:
+ status: none
+ api-sorting-columns:
+ status: none
+ api-rowgroup-pruning-stats:
+ status: none
+ api-rowgroup-pruning-bloom:
+ status: none
+ api-column-projection:
+ status: full
+ api-page-pruning-stats:
+ status: none