iceberg-cpp
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | List of all members
iceberg::FileScanTask Class Reference

Task representing a data file and its corresponding delete files. More...

#include <table_scan.h>

Inheritance diagram for iceberg::FileScanTask:
iceberg::ScanTask

Public Member Functions

 FileScanTask (std::shared_ptr< DataFile > data_file, std::vector< std::shared_ptr< DataFile > > delete_files={}, std::shared_ptr< Expression > filter=nullptr)
 Construct with data file, delete files, and residual filter.
 
int64_t start () const
 The inclusive byte offset where this task starts, or zero for a whole file.
 
int64_t length () const
 The byte length of this task, or the size of a whole file.
 
bool is_split () const
 Whether this task reads a proper subset of its data file.
 
const std::shared_ptr< DataFile > & data_file () const
 The data file that should be read by this scan task.
 
const std::vector< std::shared_ptr< DataFile > > & delete_files () const
 Delete files that apply to this data file.
 
const std::shared_ptr< Expression > & residual_filter () const
 Residual filter to apply after reading.
 
Kind kind () const override
 The kind of scan task.
 
int64_t size_bytes () const override
 The number of bytes that should be read by this scan task.
 
int32_t files_count () const override
 The number of files that should be read by this scan task.
 
int64_t estimated_row_count () const override
 The estimated number of rows in this task, prorated by byte range. For valid, non-overlapping splits covering a file with unchanged metadata, the estimates sum to the file's record_count.
 

Static Public Member Functions

static Result< std::shared_ptr< FileScanTask > > MakeSplit (std::shared_ptr< DataFile > data_file, int64_t start, int64_t length, std::vector< std::shared_ptr< DataFile > > delete_files={}, std::shared_ptr< Expression > filter=nullptr)
 Make a task for a validated half-open byte range [start, start + length).
 

Additional Inherited Members

- Public Types inherited from iceberg::ScanTask
enum class  Kind : uint8_t { kFileScanTask , kChangelogScanTask }
 

Detailed Description

Task representing a data file and its corresponding delete files.

Constructor & Destructor Documentation

◆ FileScanTask()

iceberg::FileScanTask::FileScanTask ( std::shared_ptr< DataFile >  data_file,
std::vector< std::shared_ptr< DataFile > >  delete_files = {},
std::shared_ptr< Expression >  filter = nullptr 
)
explicit

Construct with data file, delete files, and residual filter.

Parameters
data_fileThe data file to read.
delete_filesDelete files that apply to this data file.
filterOptional residual filter to apply after reading.
Note
The shared data file, delete files, and residual filter must remain unchanged for this task's lifetime. Metadata changes require rebuilding tasks.

Member Function Documentation

◆ estimated_row_count()

int64_t iceberg::FileScanTask::estimated_row_count ( ) const
overridevirtual

The estimated number of rows in this task, prorated by byte range. For valid, non-overlapping splits covering a file with unchanged metadata, the estimates sum to the file's record_count.

Implements iceberg::ScanTask.

◆ files_count()

int32_t iceberg::FileScanTask::files_count ( ) const
overridevirtual

The number of files that should be read by this scan task.

Implements iceberg::ScanTask.

◆ kind()

Kind iceberg::FileScanTask::kind ( ) const
inlineoverridevirtual

The kind of scan task.

Implements iceberg::ScanTask.

◆ MakeSplit()

static Result< std::shared_ptr< FileScanTask > > iceberg::FileScanTask::MakeSplit ( std::shared_ptr< DataFile >  data_file,
int64_t  start,
int64_t  length,
std::vector< std::shared_ptr< DataFile > >  delete_files = {},
std::shared_ptr< Expression >  filter = nullptr 
)
static

Make a task for a validated half-open byte range [start, start + length).

A range covering the entire file is represented as a whole-file task. An empty range is valid only for an empty whole file. The data file, delete files, and residual filter are shared with the resulting task and must remain unchanged for its lifetime. Metadata changes require rebuilding tasks.

◆ size_bytes()

int64_t iceberg::FileScanTask::size_bytes ( ) const
overridevirtual

The number of bytes that should be read by this scan task.

Implements iceberg::ScanTask.


The documentation for this class was generated from the following file: