Skip to content

Commit 043ac2a

Browse files
committed
feat: add test for arrow C stream schema selection in DataFrame
1 parent 10f970d commit 043ac2a

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

python/tests/test_dataframe.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,6 +1637,37 @@ def test_arrow_c_stream_reader(df):
16371637
assert table.equals(expected)
16381638

16391639

1640+
def test_arrow_c_stream_schema_selection(fail_collect):
1641+
ctx = SessionContext()
1642+
1643+
batch = pa.RecordBatch.from_arrays(
1644+
[
1645+
pa.array([1, 2]),
1646+
pa.array([3, 4]),
1647+
pa.array([5, 6]),
1648+
],
1649+
names=["a", "b", "c"],
1650+
)
1651+
df = ctx.create_dataframe([[batch]])
1652+
1653+
requested_schema = pa.schema([("c", pa.int64()), ("a", pa.int64())])
1654+
schema_capsule = requested_schema._export_to_c()
1655+
1656+
reader = pa.RecordBatchReader._import_from_c_capsule(
1657+
df.__arrow_c_stream__(schema_capsule)
1658+
)
1659+
1660+
assert reader.schema == requested_schema
1661+
1662+
batches = list(reader)
1663+
1664+
assert len(batches) == 1
1665+
expected_batch = pa.record_batch(
1666+
[pa.array([5, 6]), pa.array([1, 2])], names=["c", "a"]
1667+
)
1668+
assert batches[0].equals(expected_batch)
1669+
1670+
16401671
def test_to_pylist(df):
16411672
# Convert datafusion dataframe to Python list
16421673
pylist = df.to_pylist()

0 commit comments

Comments
 (0)