This is an automated email from the ASF dual-hosted git repository.
fresh-borzoni pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss-rust.git
The following commit(s) were added to refs/heads/main by this push:
new 90d7f724 Support FixedSizeBinary in python (#538)
90d7f724 is described below
commit 90d7f724135725df8a7828f1b55545992e63affc
Author: Kaiqi Dong <[email protected]>
AuthorDate: Sat May 9 22:46:53 2026 +0200
Support FixedSizeBinary in python (#538)
---
bindings/python/src/utils.rs | 1 +
bindings/python/test/test_kv_table.py | 3 +++
website/docs/user-guide/python/data-types.md | 1 +
3 files changed, 5 insertions(+)
diff --git a/bindings/python/src/utils.rs b/bindings/python/src/utils.rs
index 5efcf5e7..e0771397 100644
--- a/bindings/python/src/utils.rs
+++ b/bindings/python/src/utils.rs
@@ -57,6 +57,7 @@ impl Utils {
ArrowDataType::Float64 => DataTypes::double(),
ArrowDataType::Utf8 | ArrowDataType::LargeUtf8 =>
DataTypes::string(),
ArrowDataType::Binary | ArrowDataType::LargeBinary =>
DataTypes::bytes(),
+ ArrowDataType::FixedSizeBinary(n) => DataTypes::binary(*n as
usize),
ArrowDataType::Date32 => DataTypes::date(),
ArrowDataType::Date64 => DataTypes::date(),
ArrowDataType::Time32(unit) => match unit {
diff --git a/bindings/python/test/test_kv_table.py
b/bindings/python/test/test_kv_table.py
index 36aa3e46..39407375 100644
--- a/bindings/python/test/test_kv_table.py
+++ b/bindings/python/test/test_kv_table.py
@@ -358,6 +358,7 @@ async def test_all_supported_datatypes(connection, admin):
pa.field("col_timestamp_ntz", pa.timestamp("us")),
pa.field("col_timestamp_ltz", pa.timestamp("us", tz="UTC")),
pa.field("col_bytes", pa.binary()),
+ pa.field("col_binary", pa.binary(16)),
]
),
primary_keys=["pk_int"],
@@ -385,6 +386,7 @@ async def test_all_supported_datatypes(connection, admin):
"col_timestamp_ntz": datetime(2026, 1, 23, 10, 13, 47, 123000),
"col_timestamp_ltz": datetime(2026, 1, 23, 10, 13, 47, 123000),
"col_bytes": b"binary data",
+ "col_binary": b"binary_data_0123",
}
handle = upsert_writer.upsert(row_data)
@@ -411,6 +413,7 @@ async def test_all_supported_datatypes(connection, admin):
2026, 1, 23, 10, 13, 47, 123000, tzinfo=timezone.utc
)
assert result["col_bytes"] == b"binary data"
+ assert result["col_binary"] == b"binary_data_0123"
# Test with null values for all nullable columns
null_row = {"pk_int": 2}
diff --git a/website/docs/user-guide/python/data-types.md
b/website/docs/user-guide/python/data-types.md
index 99677038..8e4371e2 100644
--- a/website/docs/user-guide/python/data-types.md
+++ b/website/docs/user-guide/python/data-types.md
@@ -12,6 +12,7 @@ The Python client uses PyArrow types for schema definitions:
| `pa.float32()` / `float64()` | Float / Double
| `float` |
| `pa.string()` | String
| `str` |
| `pa.binary()` | Bytes
| `bytes` |
+| `pa.binary(n)` | Binary(n)
| `bytes` |
| `pa.date32()` | Date
| `datetime.date` |
| `pa.time32("ms")` | Time
| `datetime.time` |
| `pa.timestamp("us")` | Timestamp (NTZ)
| `datetime.datetime` |