blob: dd8bc838292618b6780993745700fbef5a32f738 [file] [log] [blame]
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.8" xml:lang="en-US">
<compounddef id="table__scan_8h" kind="file" language="C++">
<compoundname>table_scan.h</compoundname>
<includes local="no">functional</includes>
<includes local="no">memory</includes>
<includes local="no">optional</includes>
<includes local="no">string</includes>
<includes local="no">unordered_map</includes>
<includes local="no">unordered_set</includes>
<includes local="no">vector</includes>
<includes refid="arrow__c__data_8h" local="yes">iceberg/arrow_c_data.h</includes>
<includes refid="result_8h" local="yes">iceberg/result.h</includes>
<includes refid="type__fwd_8h" local="yes">iceberg/type_fwd.h</includes>
<includes refid="error__collector_8h" local="yes">iceberg/util/error_collector.h</includes>
<includedby refid="manifest__group_8cc" local="yes">iceberg/manifest/manifest_group.cc</includedby>
<includedby refid="table_8cc" local="yes">iceberg/table.cc</includedby>
<includedby refid="table__scan_8cc" local="yes">iceberg/table_scan.cc</includedby>
<includedby refid="file__scan__task__test_8cc" local="yes">iceberg/test/file_scan_task_test.cc</includedby>
<includedby refid="manifest__group__test_8cc" local="yes">iceberg/test/manifest_group_test.cc</includedby>
<includedby refid="table__scan__test_8cc" local="yes">iceberg/test/table_scan_test.cc</includedby>
<incdepgraph>
<node id="9">
<label>iceberg/arrow_c_data.h</label>
<link refid="arrow__c__data_8h"/>
<childnode refid="10" relation="include">
</childnode>
</node>
<node id="14">
<label>iceberg/iceberg_export.h</label>
<link refid="iceberg__export_8h_source"/>
</node>
<node id="11">
<label>iceberg/result.h</label>
<link refid="result_8h_source"/>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="1">
<label>iceberg/table_scan.h</label>
<link refid="table__scan_8h"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
</node>
<node id="15">
<label>iceberg/type_fwd.h</label>
<link refid="type__fwd_8h"/>
</node>
<node id="16">
<label>iceberg/util/error_collector.h</label>
<link refid="error__collector_8h"/>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
</node>
<node id="10">
<label>cstdint</label>
</node>
<node id="12">
<label>expected</label>
</node>
<node id="13">
<label>format</label>
</node>
<node id="2">
<label>functional</label>
</node>
<node id="3">
<label>memory</label>
</node>
<node id="4">
<label>optional</label>
</node>
<node id="5">
<label>string</label>
</node>
<node id="6">
<label>unordered_map</label>
</node>
<node id="7">
<label>unordered_set</label>
</node>
<node id="8">
<label>vector</label>
</node>
</incdepgraph>
<innerclass refid="classiceberg_1_1ScanTask" prot="public">iceberg::ScanTask</innerclass>
<innerclass refid="classiceberg_1_1FileScanTask" prot="public">iceberg::FileScanTask</innerclass>
<innerclass refid="classiceberg_1_1ChangelogScanTask" prot="public">iceberg::ChangelogScanTask</innerclass>
<innerclass refid="structiceberg_1_1internal_1_1TableScanContext" prot="public">iceberg::internal::TableScanContext</innerclass>
<innerclass refid="classiceberg_1_1TableScanBuilder" prot="public">iceberg::TableScanBuilder</innerclass>
<innerclass refid="classiceberg_1_1TableScan" prot="public">iceberg::TableScan</innerclass>
<innerclass refid="classiceberg_1_1DataTableScan" prot="public">iceberg::DataTableScan</innerclass>
<innerclass refid="classiceberg_1_1IncrementalScan" prot="public">iceberg::IncrementalScan</innerclass>
<innerclass refid="classiceberg_1_1IncrementalAppendScan" prot="public">iceberg::IncrementalAppendScan</innerclass>
<innerclass refid="classiceberg_1_1IncrementalChangelogScan" prot="public">iceberg::IncrementalChangelogScan</innerclass>
<innernamespace refid="namespaceiceberg">iceberg</innernamespace>
<innernamespace refid="namespaceiceberg_1_1internal">iceberg::internal</innernamespace>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="comment">/*</highlight></codeline>
<codeline lineno="2"><highlight class="comment"><sp/>*<sp/>Licensed<sp/>to<sp/>the<sp/>Apache<sp/>Software<sp/>Foundation<sp/>(ASF)<sp/>under<sp/>one</highlight></codeline>
<codeline lineno="3"><highlight class="comment"><sp/>*<sp/>or<sp/>more<sp/>contributor<sp/>license<sp/>agreements.<sp/><sp/>See<sp/>the<sp/>NOTICE<sp/>file</highlight></codeline>
<codeline lineno="4"><highlight class="comment"><sp/>*<sp/>distributed<sp/>with<sp/>this<sp/>work<sp/>for<sp/>additional<sp/>information</highlight></codeline>
<codeline lineno="5"><highlight class="comment"><sp/>*<sp/>regarding<sp/>copyright<sp/>ownership.<sp/><sp/>The<sp/>ASF<sp/>licenses<sp/>this<sp/>file</highlight></codeline>
<codeline lineno="6"><highlight class="comment"><sp/>*<sp/>to<sp/>you<sp/>under<sp/>the<sp/>Apache<sp/>License,<sp/>Version<sp/>2.0<sp/>(the</highlight></codeline>
<codeline lineno="7"><highlight class="comment"><sp/>*<sp/>&quot;License&quot;);<sp/>you<sp/>may<sp/>not<sp/>use<sp/>this<sp/>file<sp/>except<sp/>in<sp/>compliance</highlight></codeline>
<codeline lineno="8"><highlight class="comment"><sp/>*<sp/>with<sp/>the<sp/>License.<sp/><sp/>You<sp/>may<sp/>obtain<sp/>a<sp/>copy<sp/>of<sp/>the<sp/>License<sp/>at</highlight></codeline>
<codeline lineno="9"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="10"><highlight class="comment"><sp/>*<sp/><sp/><sp/>http://www.apache.org/licenses/LICENSE-2.0</highlight></codeline>
<codeline lineno="11"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="12"><highlight class="comment"><sp/>*<sp/>Unless<sp/>required<sp/>by<sp/>applicable<sp/>law<sp/>or<sp/>agreed<sp/>to<sp/>in<sp/>writing,</highlight></codeline>
<codeline lineno="13"><highlight class="comment"><sp/>*<sp/>software<sp/>distributed<sp/>under<sp/>the<sp/>License<sp/>is<sp/>distributed<sp/>on<sp/>an</highlight></codeline>
<codeline lineno="14"><highlight class="comment"><sp/>*<sp/>&quot;AS<sp/>IS&quot;<sp/>BASIS,<sp/>WITHOUT<sp/>WARRANTIES<sp/>OR<sp/>CONDITIONS<sp/>OF<sp/>ANY</highlight></codeline>
<codeline lineno="15"><highlight class="comment"><sp/>*<sp/>KIND,<sp/>either<sp/>express<sp/>or<sp/>implied.<sp/><sp/>See<sp/>the<sp/>License<sp/>for<sp/>the</highlight></codeline>
<codeline lineno="16"><highlight class="comment"><sp/>*<sp/>specific<sp/>language<sp/>governing<sp/>permissions<sp/>and<sp/>limitations</highlight></codeline>
<codeline lineno="17"><highlight class="comment"><sp/>*<sp/>under<sp/>the<sp/>License.</highlight></codeline>
<codeline lineno="18"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="19"><highlight class="normal"></highlight></codeline>
<codeline lineno="20"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="21"><highlight class="normal"></highlight></codeline>
<codeline lineno="22"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;functional&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="23"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;memory&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="24"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;optional&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="25"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;string&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;unordered_map&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;unordered_set&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;vector&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="arrow__c__data_8h" kindref="compound">iceberg/arrow_c_data.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;iceberg/result.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="type__fwd_8h" kindref="compound">iceberg/type_fwd.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="33"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="error__collector_8h" kindref="compound">iceberg/util/error_collector.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="34"><highlight class="normal"></highlight></codeline>
<codeline lineno="35"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">iceberg<sp/>{</highlight></codeline>
<codeline lineno="36"><highlight class="normal"></highlight></codeline>
<codeline lineno="38" refid="classiceberg_1_1ScanTask" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1ScanTask" kindref="compound">ScanTask</ref><sp/>{</highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="40"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">enum<sp/>class</highlight><highlight class="normal"><sp/>Kind<sp/>:<sp/>uint8_t<sp/>{</highlight></codeline>
<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/>kFileScanTask,</highlight></codeline>
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/>kChangelogScanTask,</highlight></codeline>
<codeline lineno="43"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="44"><highlight class="normal"></highlight></codeline>
<codeline lineno="46" refid="classiceberg_1_1ScanTask_1a3e223ab9964f78b6e99791567c82e1b6" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>Kind<sp/><ref refid="classiceberg_1_1ScanTask_1a3e223ab9964f78b6e99791567c82e1b6" kindref="member">kind</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="47"><highlight class="normal"></highlight></codeline>
<codeline lineno="49" refid="classiceberg_1_1ScanTask_1a196044bb4a1fc867fb9dbece6ae3f47c" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>int64_t<sp/><ref refid="classiceberg_1_1ScanTask_1a196044bb4a1fc867fb9dbece6ae3f47c" kindref="member">size_bytes</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="50"><highlight class="normal"></highlight></codeline>
<codeline lineno="52" refid="classiceberg_1_1ScanTask_1a014e83fb779a07601b71dd503871986b" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>int32_t<sp/><ref refid="classiceberg_1_1ScanTask_1a014e83fb779a07601b71dd503871986b" kindref="member">files_count</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="53"><highlight class="normal"></highlight></codeline>
<codeline lineno="55" refid="classiceberg_1_1ScanTask_1a1065f2e9db3b7d9d42f861bfca839232" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>int64_t<sp/><ref refid="classiceberg_1_1ScanTask_1a1065f2e9db3b7d9d42f861bfca839232" kindref="member">estimated_row_count</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="56"><highlight class="normal"></highlight></codeline>
<codeline lineno="57"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1ScanTask" kindref="compound">~ScanTask</ref>();</highlight></codeline>
<codeline lineno="58"><highlight class="normal">};</highlight></codeline>
<codeline lineno="59"><highlight class="normal"></highlight></codeline>
<codeline lineno="61" refid="classiceberg_1_1FileScanTask" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1FileScanTask" kindref="compound">FileScanTask</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1ScanTask" kindref="compound">ScanTask</ref><sp/>{</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1FileScanTask" kindref="compound">FileScanTask</ref>(std::shared_ptr&lt;DataFile&gt;<sp/>data_file,</highlight></codeline>
<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::vector&lt;std::shared_ptr&lt;DataFile&gt;&gt;<sp/>delete_files<sp/>=<sp/>{},</highlight></codeline>
<codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;Expression&gt;<sp/>filter<sp/>=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="71"><highlight class="normal"></highlight></codeline>
<codeline lineno="73" refid="classiceberg_1_1FileScanTask_1aa01703278a2d290967f5bfcb887a0c49" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;DataFile&gt;&amp;<sp/><ref refid="classiceberg_1_1FileScanTask_1aa01703278a2d290967f5bfcb887a0c49" kindref="member">data_file</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>data_file_;<sp/>}</highlight></codeline>
<codeline lineno="74"><highlight class="normal"></highlight></codeline>
<codeline lineno="76" refid="classiceberg_1_1FileScanTask_1ac460cab44912a93e186703987d3bd6e7" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::vector&lt;std::shared_ptr&lt;DataFile&gt;&gt;&amp;<sp/><ref refid="classiceberg_1_1FileScanTask_1ac460cab44912a93e186703987d3bd6e7" kindref="member">delete_files</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>delete_files_;</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="79"><highlight class="normal"></highlight></codeline>
<codeline lineno="81" refid="classiceberg_1_1FileScanTask_1aa4a9be432f54a1dcf932cdbb3b1180e5" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;Expression&gt;&amp;<sp/><ref refid="classiceberg_1_1FileScanTask_1aa4a9be432f54a1dcf932cdbb3b1180e5" kindref="member">residual_filter</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>residual_filter_;<sp/>}</highlight></codeline>
<codeline lineno="82"><highlight class="normal"></highlight></codeline>
<codeline lineno="83" refid="classiceberg_1_1FileScanTask_1a98a4912bc062e02fcdb26b71b9e79480" refkind="member"><highlight class="normal"><sp/><sp/>Kind<sp/><ref refid="classiceberg_1_1FileScanTask_1a98a4912bc062e02fcdb26b71b9e79480" kindref="member">kind</ref>()</highlight><highlight class="keyword"><sp/>const<sp/>override<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>Kind::kFileScanTask;<sp/>}</highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/>int64_t<sp/>size_bytes()<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="85"><highlight class="normal"><sp/><sp/>int32_t<sp/>files_count()<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/><sp/>int64_t<sp/>estimated_row_count()<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="87"><highlight class="normal"></highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/><sp/>Result&lt;ArrowArrayStream&gt;<sp/>ToArrow(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;FileIO&gt;&amp;<sp/>io,</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;Schema&gt;<sp/>projected_schema)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="97"><highlight class="normal"></highlight></codeline>
<codeline lineno="98"><highlight class="normal"><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;DataFile&gt;<sp/>data_file_;</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/>std::vector&lt;std::shared_ptr&lt;DataFile&gt;&gt;<sp/>delete_files_;</highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;Expression&gt;<sp/>residual_filter_;</highlight></codeline>
<codeline lineno="102"><highlight class="normal">};</highlight></codeline>
<codeline lineno="103"><highlight class="normal"></highlight></codeline>
<codeline lineno="105" refid="classiceberg_1_1ChangelogScanTask" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1ChangelogScanTask" kindref="compound">ChangelogScanTask</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1ScanTask" kindref="compound">ScanTask</ref><sp/>{</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="107" refid="classiceberg_1_1ChangelogScanTask_1ace10d0cf9753b1b3dbb0289071c2d155" refkind="member"><highlight class="normal"><sp/><sp/>Kind<sp/><ref refid="classiceberg_1_1ChangelogScanTask_1ace10d0cf9753b1b3dbb0289071c2d155" kindref="member">kind</ref>()</highlight><highlight class="keyword"><sp/>const<sp/>override<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>Kind::kChangelogScanTask;<sp/>}</highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>TODO():<sp/>Return<sp/>actual<sp/>values<sp/>once<sp/>member<sp/>fields<sp/>are<sp/>implemented</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="109" refid="classiceberg_1_1ChangelogScanTask_1a0a3b4dd22854acb631e33271dd9a1250" refkind="member"><highlight class="normal"><sp/><sp/>int64_t<sp/><ref refid="classiceberg_1_1ChangelogScanTask_1a0a3b4dd22854acb631e33271dd9a1250" kindref="member">size_bytes</ref>()</highlight><highlight class="keyword"><sp/>const<sp/>override<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;<sp/>}</highlight></codeline>
<codeline lineno="110" refid="classiceberg_1_1ChangelogScanTask_1af173a61632f2b88e4da007a0859100f4" refkind="member"><highlight class="normal"><sp/><sp/>int32_t<sp/><ref refid="classiceberg_1_1ChangelogScanTask_1af173a61632f2b88e4da007a0859100f4" kindref="member">files_count</ref>()</highlight><highlight class="keyword"><sp/>const<sp/>override<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;<sp/>}</highlight></codeline>
<codeline lineno="111" refid="classiceberg_1_1ChangelogScanTask_1a84246b65ec7e10024d3bdf159aea243f" refkind="member"><highlight class="normal"><sp/><sp/>int64_t<sp/><ref refid="classiceberg_1_1ChangelogScanTask_1a84246b65ec7e10024d3bdf159aea243f" kindref="member">estimated_row_count</ref>()</highlight><highlight class="keyword"><sp/>const<sp/>override<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;<sp/>}</highlight></codeline>
<codeline lineno="112"><highlight class="normal">};</highlight></codeline>
<codeline lineno="113"><highlight class="normal"></highlight></codeline>
<codeline lineno="114"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">internal<sp/>{</highlight></codeline>
<codeline lineno="115"><highlight class="normal"></highlight></codeline>
<codeline lineno="116"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Internal<sp/>table<sp/>scan<sp/>context<sp/>used<sp/>by<sp/>different<sp/>scan<sp/>implementations.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="117" refid="structiceberg_1_1internal_1_1TableScanContext" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">TableScanContext</ref><sp/>{</highlight></codeline>
<codeline lineno="118"><highlight class="normal"><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>snapshot_id;</highlight></codeline>
<codeline lineno="119"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;Expression&gt;<sp/>filter;</highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>ignore_residuals{</highlight><highlight class="keyword">false</highlight><highlight class="normal">};</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>case_sensitive{</highlight><highlight class="keyword">true</highlight><highlight class="normal">};</highlight></codeline>
<codeline lineno="122"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>return_column_stats{</highlight><highlight class="keyword">false</highlight><highlight class="normal">};</highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/>std::unordered_set&lt;int32_t&gt;<sp/>columns_to_keep_stats;</highlight></codeline>
<codeline lineno="124"><highlight class="normal"><sp/><sp/>std::vector&lt;std::string&gt;<sp/>selected_columns;</highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;Schema&gt;<sp/>projected_schema;</highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/>std::unordered_map&lt;std::string,<sp/>std::string&gt;<sp/>options;</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>from_snapshot_id_inclusive{</highlight><highlight class="keyword">false</highlight><highlight class="normal">};</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>from_snapshot_id;</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>to_snapshot_id;</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/>std::string<sp/>branch{};</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>min_rows_requested;</highlight></codeline>
<codeline lineno="132"><highlight class="normal"></highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>Validate<sp/>the<sp/>context<sp/>parameters<sp/>to<sp/>see<sp/>if<sp/>they<sp/>have<sp/>conflicts.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="134"><highlight class="normal"><sp/><sp/>[[nodiscard]]<sp/>Status<sp/>Validate()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="135"><highlight class="normal">};</highlight></codeline>
<codeline lineno="136"><highlight class="normal"></highlight></codeline>
<codeline lineno="137"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>internal</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="138"><highlight class="normal"></highlight></codeline>
<codeline lineno="139"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Concept<sp/>to<sp/>check<sp/>if<sp/>a<sp/>type<sp/>is<sp/>an<sp/>incremental<sp/>scan</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="140"><highlight class="normal"></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>T&gt;</highlight></codeline>
<codeline lineno="141" refid="concepticeberg_1_1IsIncrementalScan" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">concept<sp/></highlight><highlight class="normal"><ref refid="concepticeberg_1_1IsIncrementalScan" kindref="compound">IsIncrementalScan</ref><sp/>=<sp/>std::is_base_of_v&lt;IncrementalScan&lt;FileScanTask&gt;,<sp/>T&gt;<sp/>||</highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::is_base_of_v&lt;IncrementalScan&lt;ChangelogScanTask&gt;,<sp/>T&gt;;</highlight></codeline>
<codeline lineno="143"><highlight class="normal"></highlight></codeline>
<codeline lineno="145"><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>ScanType<sp/>=<sp/>DataTableScan&gt;</highlight></codeline>
<codeline lineno="146" refid="classiceberg_1_1TableScanBuilder" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1ErrorCollector" kindref="compound">ErrorCollector</ref><sp/>{</highlight></codeline>
<codeline lineno="147"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>Result&lt;std::unique_ptr&lt;TableScanBuilder&lt;ScanType&gt;&gt;&gt;<sp/>Make(</highlight></codeline>
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata,<sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io);</highlight></codeline>
<codeline lineno="153"><highlight class="normal"></highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>Option(std::string<sp/>key,<sp/>std::string<sp/>value);</highlight></codeline>
<codeline lineno="159"><highlight class="normal"></highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>Project(std::shared_ptr&lt;Schema&gt;<sp/>schema);</highlight></codeline>
<codeline lineno="163"><highlight class="normal"></highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>CaseSensitive(</highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>case_sensitive);</highlight></codeline>
<codeline lineno="168"><highlight class="normal"></highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>IncludeColumnStats();</highlight></codeline>
<codeline lineno="173"><highlight class="normal"></highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>IncludeColumnStats(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::vector&lt;std::string&gt;&amp;<sp/>requested_columns);</highlight></codeline>
<codeline lineno="181"><highlight class="normal"></highlight></codeline>
<codeline lineno="188"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>Select(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::vector&lt;std::string&gt;&amp;<sp/>column_names);</highlight></codeline>
<codeline lineno="189"><highlight class="normal"></highlight></codeline>
<codeline lineno="192"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>Filter(std::shared_ptr&lt;Expression&gt;<sp/>filter);</highlight></codeline>
<codeline lineno="193"><highlight class="normal"></highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>IgnoreResiduals();</highlight></codeline>
<codeline lineno="196"><highlight class="normal"></highlight></codeline>
<codeline lineno="204"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>MinRowsRequested(int64_t<sp/>num_rows);</highlight></codeline>
<codeline lineno="205"><highlight class="normal"></highlight></codeline>
<codeline lineno="209"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>UseSnapshot(int64_t<sp/>snapshot_id);</highlight></codeline>
<codeline lineno="210"><highlight class="normal"></highlight></codeline>
<codeline lineno="215"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>UseRef(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&amp;<sp/>ref);</highlight></codeline>
<codeline lineno="216"><highlight class="normal"></highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>AsOfTime(int64_t<sp/>timestamp_millis);</highlight></codeline>
<codeline lineno="223"><highlight class="normal"></highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>FromSnapshot(int64_t<sp/>from_snapshot_id,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>inclusive<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">)</highlight></codeline>
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="concepticeberg_1_1IsIncrementalScan" kindref="compound">IsIncrementalScan&lt;ScanType&gt;</ref>;</highlight></codeline>
<codeline lineno="236"><highlight class="normal"></highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>FromSnapshot(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&amp;<sp/>ref,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>inclusive<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">)</highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="concepticeberg_1_1IsIncrementalScan" kindref="compound">IsIncrementalScan&lt;ScanType&gt;</ref>;</highlight></codeline>
<codeline lineno="249"><highlight class="normal"></highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>ToSnapshot(int64_t<sp/>to_snapshot_id)</highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="concepticeberg_1_1IsIncrementalScan" kindref="compound">IsIncrementalScan&lt;ScanType&gt;</ref>;</highlight></codeline>
<codeline lineno="260"><highlight class="normal"></highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>ToSnapshot(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&amp;<sp/>ref)</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="concepticeberg_1_1IsIncrementalScan" kindref="compound">IsIncrementalScan&lt;ScanType&gt;</ref>;</highlight></codeline>
<codeline lineno="271"><highlight class="normal"></highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>&amp;<sp/>UseBranch(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&amp;<sp/>branch)</highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="concepticeberg_1_1IsIncrementalScan" kindref="compound">IsIncrementalScan&lt;ScanType&gt;</ref>;</highlight></codeline>
<codeline lineno="278"><highlight class="normal"></highlight></codeline>
<codeline lineno="281"><highlight class="normal"><sp/><sp/>Result&lt;std::unique_ptr&lt;ScanType&gt;&gt;<sp/>Build();</highlight></codeline>
<codeline lineno="282"><highlight class="normal"></highlight></codeline>
<codeline lineno="283"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="284"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScanBuilder" kindref="compound">TableScanBuilder</ref>(std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata,<sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io);</highlight></codeline>
<codeline lineno="285"><highlight class="normal"></highlight></codeline>
<codeline lineno="286"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>Return<sp/>the<sp/>schema<sp/>bound<sp/>to<sp/>the<sp/>specified<sp/>snapshot.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="287"><highlight class="normal"><sp/><sp/>Result&lt;std::reference_wrapper&lt;const<sp/>std::shared_ptr&lt;Schema&gt;&gt;&gt;<sp/>ResolveSnapshotSchema();</highlight></codeline>
<codeline lineno="288"><highlight class="normal"></highlight></codeline>
<codeline lineno="289"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata_;</highlight></codeline>
<codeline lineno="290"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io_;</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref><sp/>context_;</highlight></codeline>
<codeline lineno="292"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;Schema&gt;<sp/>snapshot_schema_;</highlight></codeline>
<codeline lineno="293"><highlight class="normal">};</highlight></codeline>
<codeline lineno="294"><highlight class="normal"></highlight></codeline>
<codeline lineno="296" refid="classiceberg_1_1TableScan" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1TableScan" kindref="compound">TableScan</ref><sp/>{</highlight></codeline>
<codeline lineno="297"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="298"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1TableScan" kindref="compound">~TableScan</ref>();</highlight></codeline>
<codeline lineno="299"><highlight class="normal"></highlight></codeline>
<codeline lineno="301"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;TableMetadata&gt;&amp;<sp/>metadata()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="302"><highlight class="normal"></highlight></codeline>
<codeline lineno="304"><highlight class="normal"><sp/><sp/>Result&lt;std::shared_ptr&lt;Snapshot&gt;&gt;<sp/>snapshot()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="305"><highlight class="normal"></highlight></codeline>
<codeline lineno="307"><highlight class="normal"><sp/><sp/>Result&lt;std::shared_ptr&lt;Schema&gt;&gt;<sp/>schema()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="308"><highlight class="normal"></highlight></codeline>
<codeline lineno="310"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref>&amp;<sp/>context()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="311"><highlight class="normal"></highlight></codeline>
<codeline lineno="313"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;FileIO&gt;&amp;<sp/>io()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="314"><highlight class="normal"></highlight></codeline>
<codeline lineno="316"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;Expression&gt;&amp;<sp/>filter()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="317"><highlight class="normal"></highlight></codeline>
<codeline lineno="319"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>is_case_sensitive()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="320"><highlight class="normal"></highlight></codeline>
<codeline lineno="321"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="322"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1TableScan" kindref="compound">TableScan</ref>(std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata,<sp/>std::shared_ptr&lt;Schema&gt;<sp/>schema,</highlight></codeline>
<codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io,<sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref><sp/>context);</highlight></codeline>
<codeline lineno="324"><highlight class="normal"></highlight></codeline>
<codeline lineno="325"><highlight class="normal"><sp/><sp/>Result&lt;std::reference_wrapper&lt;const<sp/>std::shared_ptr&lt;Schema&gt;&gt;&gt;<sp/>ResolveProjectedSchema()</highlight></codeline>
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="327"><highlight class="normal"></highlight></codeline>
<codeline lineno="328"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::vector&lt;std::string&gt;&amp;<sp/>ScanColumns()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="329"><highlight class="normal"></highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata_;</highlight></codeline>
<codeline lineno="331"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;Schema&gt;<sp/>schema_;</highlight></codeline>
<codeline lineno="332"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io_;</highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref><sp/>context_;</highlight></codeline>
<codeline lineno="334"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">mutable</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;Schema&gt;<sp/>projected_schema_;</highlight></codeline>
<codeline lineno="335"><highlight class="normal">};</highlight></codeline>
<codeline lineno="336"><highlight class="normal"></highlight></codeline>
<codeline lineno="338" refid="classiceberg_1_1DataTableScan" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1DataTableScan" kindref="compound">DataTableScan</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1TableScan" kindref="compound">TableScan</ref><sp/>{</highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1DataTableScan" kindref="compound">~DataTableScan</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal"><sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="341"><highlight class="normal"></highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>Result&lt;std::unique_ptr&lt;DataTableScan&gt;&gt;<sp/>Make(</highlight></codeline>
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata,<sp/>std::shared_ptr&lt;Schema&gt;<sp/>schema,</highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io,<sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref><sp/>context);</highlight></codeline>
<codeline lineno="346"><highlight class="normal"></highlight></codeline>
<codeline lineno="349"><highlight class="normal"><sp/><sp/>Result&lt;std::vector&lt;std::shared_ptr&lt;FileScanTask&gt;&gt;&gt;<sp/>PlanFiles()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="350"><highlight class="normal"></highlight></codeline>
<codeline lineno="351"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="352"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal">TableScan::TableScan;</highlight></codeline>
<codeline lineno="353"><highlight class="normal">};</highlight></codeline>
<codeline lineno="354"><highlight class="normal"></highlight></codeline>
<codeline lineno="357"><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>ScanTaskType&gt;</highlight></codeline>
<codeline lineno="358" refid="classiceberg_1_1IncrementalScan" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1IncrementalScan" kindref="compound">IncrementalScan</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1TableScan" kindref="compound">TableScan</ref><sp/>{</highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="360"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1IncrementalScan" kindref="compound">~IncrementalScan</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal"><sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="361"><highlight class="normal"></highlight></codeline>
<codeline lineno="364" refid="classiceberg_1_1IncrementalScan_1ac00b462f2e751f4adacc0c21a9d77a37" refkind="member"><highlight class="normal"><sp/><sp/>Result&lt;std::vector&lt;std::shared_ptr&lt;ScanTaskType&gt;&gt;&gt;<sp/><ref refid="classiceberg_1_1IncrementalScan_1ac00b462f2e751f4adacc0c21a9d77a37" kindref="member">PlanFiles</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>NotImplemented(</highlight><highlight class="stringliteral">&quot;IncrementalScan::PlanFiles<sp/>is<sp/>not<sp/>implemented&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="367"><highlight class="normal"></highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>Result&lt;std::vector&lt;std::shared_ptr&lt;ScanTaskType&gt;&gt;&gt;<sp/>PlanFiles(</highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>from_snapshot_id_exclusive,</highlight></codeline>
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>int64_t<sp/>to_snapshot_id_inclusive)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="372"><highlight class="normal"></highlight></codeline>
<codeline lineno="373"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal">TableScan::TableScan;</highlight></codeline>
<codeline lineno="374"><highlight class="normal">};</highlight></codeline>
<codeline lineno="375"><highlight class="normal"></highlight></codeline>
<codeline lineno="377" refid="classiceberg_1_1IncrementalAppendScan" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1IncrementalAppendScan" kindref="compound">IncrementalAppendScan</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1IncrementalScan" kindref="compound">IncrementalScan</ref>&lt;FileScanTask&gt;<sp/>{</highlight></codeline>
<codeline lineno="378"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="380"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>Result&lt;std::unique_ptr&lt;IncrementalAppendScan&gt;&gt;<sp/>Make(</highlight></codeline>
<codeline lineno="381"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata,<sp/>std::shared_ptr&lt;Schema&gt;<sp/>schema,</highlight></codeline>
<codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io,<sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref><sp/>context);</highlight></codeline>
<codeline lineno="383"><highlight class="normal"></highlight></codeline>
<codeline lineno="384"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1IncrementalAppendScan" kindref="compound">~IncrementalAppendScan</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal"><sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="385"><highlight class="normal"></highlight></codeline>
<codeline lineno="386"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="387"><highlight class="normal"><sp/><sp/>Result&lt;std::vector&lt;std::shared_ptr&lt;FileScanTask&gt;&gt;&gt;<sp/>PlanFiles(</highlight></codeline>
<codeline lineno="388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>from_snapshot_id_exclusive,</highlight></codeline>
<codeline lineno="389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>int64_t<sp/>to_snapshot_id_inclusive)<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="390"><highlight class="normal"></highlight></codeline>
<codeline lineno="391"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal">IncrementalScan::IncrementalScan;</highlight></codeline>
<codeline lineno="392"><highlight class="normal">};</highlight></codeline>
<codeline lineno="393"><highlight class="normal"></highlight></codeline>
<codeline lineno="395" refid="classiceberg_1_1IncrementalChangelogScan" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1IncrementalChangelogScan" kindref="compound">IncrementalChangelogScan</ref></highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1IncrementalScan" kindref="compound">IncrementalScan</ref>&lt;ChangelogScanTask&gt;<sp/>{</highlight></codeline>
<codeline lineno="397"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="399"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>Result&lt;std::unique_ptr&lt;IncrementalChangelogScan&gt;&gt;<sp/>Make(</highlight></codeline>
<codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;TableMetadata&gt;<sp/>metadata,<sp/>std::shared_ptr&lt;Schema&gt;<sp/>schema,</highlight></codeline>
<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;FileIO&gt;<sp/>io,<sp/><ref refid="structiceberg_1_1internal_1_1TableScanContext" kindref="compound">internal::TableScanContext</ref><sp/>context);</highlight></codeline>
<codeline lineno="402"><highlight class="normal"></highlight></codeline>
<codeline lineno="403"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1IncrementalChangelogScan" kindref="compound">~IncrementalChangelogScan</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal"><sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="404"><highlight class="normal"></highlight></codeline>
<codeline lineno="405"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="406"><highlight class="normal"><sp/><sp/>Result&lt;std::vector&lt;std::shared_ptr&lt;ChangelogScanTask&gt;&gt;&gt;<sp/>PlanFiles(</highlight></codeline>
<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::optional&lt;int64_t&gt;<sp/>from_snapshot_id_exclusive,</highlight></codeline>
<codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>int64_t<sp/>to_snapshot_id_inclusive)<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="409"><highlight class="normal"></highlight></codeline>
<codeline lineno="410"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal">IncrementalScan::IncrementalScan;</highlight></codeline>
<codeline lineno="411"><highlight class="normal">};</highlight></codeline>
<codeline lineno="412"><highlight class="normal"></highlight></codeline>
<codeline lineno="413"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>iceberg</highlight><highlight class="normal"></highlight></codeline>
</programlisting>
<location file="iceberg/table_scan.h"/>
</compounddef>
</doxygen>