From 59c5374497dd25cc0c56b669e84cbfec72c76af6 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Mon, 5 Jan 2026 16:36:14 +0000 Subject: [PATCH 1/3] chore[py]: duckdb py test for timestamp xfail Signed-off-by: Joe Isaacs --- vortex-python/test/test_duckdb.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 vortex-python/test/test_duckdb.py diff --git a/vortex-python/test/test_duckdb.py b/vortex-python/test/test_duckdb.py new file mode 100644 index 00000000000..7cd8dc3b4df --- /dev/null +++ b/vortex-python/test/test_duckdb.py @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +"""Test for timestamp filtering with DuckDB via vortex extension and PyArrow dataset interface.""" + +from datetime import datetime + +import duckdb +import pyarrow as pa +import pytest + +import vortex as vx + + +@pytest.mark.xfail(reason="is_not_null not yet implemented in substrait conversion") +def test_duckdb_via_substrait(tmp_path): + con = duckdb.connect() + + arr = pa.array([datetime(2024, 1, 1), datetime(2024, 6, 15), datetime(2024, 12, 31)]) + table = pa.table({"ts": arr}) + vx.io.write(table, '/tmp/test_timestamp.vortex') + + ds = vx.open("/tmp/test_timestamp.vortex").to_dataset() # noqa: F841 - used by duckdb + result = con.execute("SELECT * FROM ds WHERE ts > '2024-06-01'").fetchall() + print(result) From 45ff787916348db9e9e45155d99ca12182dc8971 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Mon, 5 Jan 2026 16:47:39 +0000 Subject: [PATCH 2/3] f Signed-off-by: Joe Isaacs --- vortex-python/test/test_duckdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vortex-python/test/test_duckdb.py b/vortex-python/test/test_duckdb.py index 7cd8dc3b4df..4d3b3760e39 100644 --- a/vortex-python/test/test_duckdb.py +++ b/vortex-python/test/test_duckdb.py @@ -18,7 +18,7 @@ def test_duckdb_via_substrait(tmp_path): arr = pa.array([datetime(2024, 1, 1), datetime(2024, 6, 15), datetime(2024, 12, 31)]) table = pa.table({"ts": arr}) - vx.io.write(table, '/tmp/test_timestamp.vortex') + vx.io.write(table, "/tmp/test_timestamp.vortex") ds = vx.open("/tmp/test_timestamp.vortex").to_dataset() # noqa: F841 - used by duckdb result = con.execute("SELECT * FROM ds WHERE ts > '2024-06-01'").fetchall() From c1fad08c72b73a9316e6a3a85fa581300bc5abf0 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 6 Jan 2026 15:27:30 +0000 Subject: [PATCH 3/3] f Signed-off-by: Joe Isaacs --- vortex-python/test/test_duckdb.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/vortex-python/test/test_duckdb.py b/vortex-python/test/test_duckdb.py index 4d3b3760e39..8c48cd9a1c8 100644 --- a/vortex-python/test/test_duckdb.py +++ b/vortex-python/test/test_duckdb.py @@ -4,6 +4,7 @@ """Test for timestamp filtering with DuckDB via vortex extension and PyArrow dataset interface.""" from datetime import datetime +from pathlib import Path import duckdb import pyarrow as pa @@ -13,13 +14,14 @@ @pytest.mark.xfail(reason="is_not_null not yet implemented in substrait conversion") -def test_duckdb_via_substrait(tmp_path): +def test_duckdb_via_substrait(tmp_path: Path) -> None: con = duckdb.connect() arr = pa.array([datetime(2024, 1, 1), datetime(2024, 6, 15), datetime(2024, 12, 31)]) table = pa.table({"ts": arr}) - vx.io.write(table, "/tmp/test_timestamp.vortex") + path = str(tmp_path / "test_timestamp.vortex") + vx.io.write(table, path) - ds = vx.open("/tmp/test_timestamp.vortex").to_dataset() # noqa: F841 - used by duckdb + ds = vx.open(path).to_dataset() # noqa: F841 # pyright: ignore[reportUnusedVariable] - used by duckdb via SQL result = con.execute("SELECT * FROM ds WHERE ts > '2024-06-01'").fetchall() print(result)