Skip to content

Commit 80af2ae

Browse files
committed
fix
1 parent 542c44b commit 80af2ae

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

paimon-python/pypaimon/read/reader/iface/record_batch_reader.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,12 @@ def replace_iterator(self, iterator: Iterator[tuple]) -> Optional[RecordIterator
126126

127127
def __next__(self):
128128
return self.next()
129+
130+
131+
class EmptyRecordBatchReader(RecordBatchReader):
132+
133+
def read_arrow_batch(self) -> Optional[RecordBatch]:
134+
return None
135+
136+
def close(self):
137+
return None

paimon-python/pypaimon/read/split_read.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from pypaimon.common.predicate import Predicate
2626
from pypaimon.deletionvectors import ApplyDeletionVectorReader
2727
from pypaimon.deletionvectors.deletion_vector import DeletionVector
28+
from pypaimon.globalindex import Range
2829
from pypaimon.manifest.schema.data_file_meta import DataFileMeta
2930
from pypaimon.read.interval_partition import IntervalPartition, SortedRun
3031
from pypaimon.read.partition_info import PartitionInfo
@@ -44,7 +45,7 @@
4445
from pypaimon.read.reader.format_lance_reader import FormatLanceReader
4546
from pypaimon.read.reader.format_pyarrow_reader import FormatPyArrowReader
4647
from pypaimon.read.reader.iface.record_batch_reader import (RecordBatchReader,
47-
RowPositionReader)
48+
RowPositionReader, EmptyRecordBatchReader)
4849
from pypaimon.read.reader.iface.record_reader import RecordReader
4950
from pypaimon.read.reader.key_value_unwrap_reader import \
5051
KeyValueUnwrapRecordReader
@@ -592,14 +593,19 @@ def _create_union_reader(self, need_merge_files: List[DataFileMeta]) -> RecordRe
592593

593594
def _create_file_reader(self, file: DataFileMeta, read_fields: [str]) -> Optional[RecordReader]:
594595
"""Create a file reader for a single file."""
595-
record_reader = self.file_reader_supplier(
596-
file=file,
597-
for_merge_read=False,
598-
read_fields=read_fields,
599-
row_tracking_enabled=True)
596+
def create_record_reader():
597+
return self.file_reader_supplier(
598+
file=file,
599+
for_merge_read=False,
600+
read_fields=read_fields,
601+
row_tracking_enabled=True)
600602
if self.row_ranges is None:
601-
return record_reader
602-
return RowIdFilterRecordBatchReader(record_reader, file.first_row_id, self.row_ranges)
603+
return create_record_reader()
604+
file_range = Range(file.first_row_id, file.first_row_id + file.row_count - 1)
605+
row_ranges = Range.and_(self.row_ranges, [file_range])
606+
if len(row_ranges) == 0:
607+
return EmptyRecordBatchReader()
608+
return RowIdFilterRecordBatchReader(create_record_reader(), file.first_row_id, row_ranges)
603609

604610
def _split_field_bunches(self, need_merge_files: List[DataFileMeta]) -> List[FieldBunch]:
605611
"""Split files into field bunches."""

0 commit comments

Comments
 (0)