rdblue commented on code in PR #6145: URL: https://github.com/apache/iceberg/pull/6145#discussion_r1017251652
########## python/pyiceberg/table/__init__.py: ########## @@ -90,3 +119,53 @@ def snapshot_by_name(self, name: str) -> Optional[Snapshot]: def history(self) -> List[SnapshotLogEntry]: """Get the snapshot history of this table.""" return self.metadata.snapshot_log + + +class TableScan: + table: Table + row_filter: BooleanExpression + partition_filter: BooleanExpression + selected_fields: Tuple[str] + case_sensitive: bool + snapshot_id: Optional[int] + options: Properties + + def __init__( + self, + table: Table, + row_filter: Optional[BooleanExpression], + partition_filter: Optional[BooleanExpression], + selected_fields: Tuple[str] = ("*",), + case_sensitive: bool = True, + snapshot_id: Optional[int] = None, + options: Properties = EMPTY_DICT, + ): + self.table = table + self.row_filter = row_filter or AlwaysTrue() + self.partition_filter = partition_filter or AlwaysTrue() + self.selected_fields = selected_fields + self.case_sensitive = case_sensitive + self.snapshot_id = snapshot_id + self.options = options + + def snapshot(self) -> Optional[Snapshot]: + if self.snapshot_id: + return self.table.snapshot_by_id(self.snapshot_id) + return self.table.current_snapshot() + + def projection(self) -> Schema: + snapshot_schema = self.table.schema() + if snapshot := self.snapshot(): + if snapshot_schema_id := snapshot.schema_id: + snapshot_schema = self.table.schemas()[snapshot_schema_id] + + if "*" in self.selected_fields: + return snapshot_schema + + return snapshot_schema.select(*self.selected_fields, case_sensitive=self.case_sensitive) + + def plan_files(self): Review Comment: I think this also needs the rest of the methods that can be used to refine the scan: https://github.com/apache/iceberg/pull/6131/files#diff-893817e2d326eb9fad68cc96f7742b3ca654a2e05355f9d80ed59886b36ac121R155-R186 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org