NVIDIA / NVIDIA/cudf

Preserve row counts for zero-column tables in IO readers

Open
#22,935 0 comments 0 reactions 0 assignees View on GitHub
cudf-polars feature request
Dominant language
C++
Stars
9.8k
Forks
1.1k
Avg merge
3d 6m
Merged PRs (30d)
278

Description

Follow-up to the zero-column support #22765.

The core PR made zero-column tables (shape `(N, 0)`) representable and threaded their row counts through table-producing algorithms, interop, and `plc.Table`. The remaining gap is in the IO readers, which still collapse zero-column reads to `(0, 0)` and lose the row count.

## To do

* [ ] Parquet reader (including chunked and filtered read paths)
* [ ] ORC reader (including chunked read paths)
* [ ] CSV reader
* [ ] AVRO, JSON, and experimental Parquet paths (hybrid scan, deletion vectors) where applicable
* [ ] Unskip the placeholder reader tests (`ParquetReaderTest`, `OrcReaderTest`, and `CsvReaderTest.ZeroColumnsPreservesRowCount`)
* [ ] Remove the cudf-polars workarounds: `DataFrame._num_rows_override`, the `DataFrameScan` zero-width path, `Scan._get_parquet_row_count_from_metadata`, and the related xfails in `inject_gpu_engine.py`

Contributor guide

Open the contributing guide

Research direction

Start by locating the ParquetReaderTest, OrcReaderTest, and CsvReaderTest.ZeroColumnsPreservesRowCount placeholders, then trace the Parquet, ORC, CSV, AVRO, JSON, and experimental Parquet reader paths listed in the issue. Done means zero-column reads preserve their row counts across the applicable chunked and filtered paths, all listed tests are unskipped, and the named cudf-polars workarounds and related xfails are removed.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
data
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.