| <?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="update__schema_8h" kind="file" language="C++"> |
| <compoundname>update_schema.h</compoundname> |
| <includes local="no">memory</includes> |
| <includes local="no">optional</includes> |
| <includes local="no">span</includes> |
| <includes local="no">string</includes> |
| <includes local="no">string_view</includes> |
| <includes local="no">unordered_map</includes> |
| <includes local="no">unordered_set</includes> |
| <includes refid="iceberg__export_8h" local="yes">iceberg/iceberg_export.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="pending__update_8h" local="yes">iceberg/update/pending_update.h</includes> |
| <includedby refid="table_8cc" local="yes">iceberg/table.cc</includedby> |
| <includedby refid="name__mapping__update__test_8cc" local="yes">iceberg/test/name_mapping_update_test.cc</includedby> |
| <includedby refid="update__schema__test_8cc" local="yes">iceberg/test/update_schema_test.cc</includedby> |
| <includedby refid="transaction_8cc" local="yes">iceberg/transaction.cc</includedby> |
| <includedby refid="update__schema_8cc" local="yes">iceberg/update/update_schema.cc</includedby> |
| <incdepgraph> |
| <node id="9"> |
| <label>iceberg/iceberg_export.h</label> |
| <link refid="iceberg__export_8h_source"/> |
| </node> |
| <node id="10"> |
| <label>iceberg/result.h</label> |
| <link refid="result_8h_source"/> |
| <childnode refid="11" relation="include"> |
| </childnode> |
| <childnode refid="12" relation="include"> |
| </childnode> |
| <childnode refid="5" relation="include"> |
| </childnode> |
| <childnode refid="9" relation="include"> |
| </childnode> |
| </node> |
| <node id="13"> |
| <label>iceberg/type_fwd.h</label> |
| <link refid="type__fwd_8h"/> |
| </node> |
| <node id="14"> |
| <label>iceberg/update/pending_update.h</label> |
| <link refid="pending__update_8h"/> |
| <childnode refid="2" relation="include"> |
| </childnode> |
| <childnode refid="3" relation="include"> |
| </childnode> |
| <childnode refid="9" relation="include"> |
| </childnode> |
| <childnode refid="10" relation="include"> |
| </childnode> |
| <childnode refid="13" relation="include"> |
| </childnode> |
| <childnode refid="15" relation="include"> |
| </childnode> |
| </node> |
| <node id="1"> |
| <label>iceberg/update/update_schema.h</label> |
| <link refid="update__schema_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="10" relation="include"> |
| </childnode> |
| <childnode refid="13" relation="include"> |
| </childnode> |
| <childnode refid="14" relation="include"> |
| </childnode> |
| </node> |
| <node id="15"> |
| <label>iceberg/util/error_collector.h</label> |
| <link refid="error__collector_8h"/> |
| <childnode refid="5" relation="include"> |
| </childnode> |
| <childnode refid="16" relation="include"> |
| </childnode> |
| <childnode refid="9" relation="include"> |
| </childnode> |
| <childnode refid="10" relation="include"> |
| </childnode> |
| </node> |
| <node id="11"> |
| <label>expected</label> |
| </node> |
| <node id="12"> |
| <label>format</label> |
| </node> |
| <node id="2"> |
| <label>memory</label> |
| </node> |
| <node id="3"> |
| <label>optional</label> |
| </node> |
| <node id="4"> |
| <label>span</label> |
| </node> |
| <node id="5"> |
| <label>string</label> |
| </node> |
| <node id="6"> |
| <label>string_view</label> |
| </node> |
| <node id="7"> |
| <label>unordered_map</label> |
| </node> |
| <node id="8"> |
| <label>unordered_set</label> |
| </node> |
| <node id="16"> |
| <label>vector</label> |
| </node> |
| </incdepgraph> |
| <innerclass refid="classiceberg_1_1UpdateSchema" prot="public">iceberg::UpdateSchema</innerclass> |
| <innerclass refid="structiceberg_1_1UpdateSchema_1_1Move" prot="public">iceberg::UpdateSchema::Move</innerclass> |
| <innerclass refid="structiceberg_1_1UpdateSchema_1_1ApplyResult" prot="public">iceberg::UpdateSchema::ApplyResult</innerclass> |
| <innernamespace refid="namespaceiceberg">iceberg</innernamespace> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| <para>API for schema evolution. </para> |
| </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/>"License");<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/>"AS<sp/>IS"<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="24"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="25"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><memory></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><optional></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><span></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="28"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><string></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="29"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><string_view></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><unordered_map></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="31"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><unordered_set></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="32"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="33"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"iceberg/iceberg_export.h"</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="34"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"iceberg/result.h"</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="35"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="type__fwd_8h" kindref="compound">iceberg/type_fwd.h</ref>"</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="36"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="pending__update_8h" kindref="compound">iceberg/update/pending_update.h</ref>"</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="37"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="38"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">iceberg<sp/>{</highlight></codeline> |
| <codeline lineno="39"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="48" refid="classiceberg_1_1UpdateSchema" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal">ICEBERG_EXPORT<sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1PendingUpdate" kindref="compound">PendingUpdate</ref><sp/>{</highlight></codeline> |
| <codeline lineno="49"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> |
| <codeline lineno="50"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>Result<std::shared_ptr<UpdateSchema>><sp/>Make(</highlight></codeline> |
| <codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr<Transaction><sp/>transaction);</highlight></codeline> |
| <codeline lineno="52"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="53"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">~UpdateSchema</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal">;</highlight></codeline> |
| <codeline lineno="54"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="69"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>AllowIncompatibleChanges();</highlight></codeline> |
| <codeline lineno="70"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="88"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>AddColumn(std::string_view<sp/>name,<sp/>std::shared_ptr<Type><sp/>type,</highlight></codeline> |
| <codeline lineno="89"><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/>std::string_view<sp/>doc<sp/>=<sp/></highlight><highlight class="stringliteral">""</highlight><highlight class="normal">);</highlight></codeline> |
| <codeline lineno="90"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="113"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>AddColumn(std::optional<std::string_view><sp/>parent,<sp/>std::string_view<sp/>name,</highlight></codeline> |
| <codeline lineno="114"><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/>std::shared_ptr<Type><sp/>type,<sp/>std::string_view<sp/>doc<sp/>=<sp/></highlight><highlight class="stringliteral">""</highlight><highlight class="normal">);</highlight></codeline> |
| <codeline lineno="115"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="135"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>AddRequiredColumn(std::string_view<sp/>name,<sp/>std::shared_ptr<Type><sp/>type,</highlight></codeline> |
| <codeline lineno="136"><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/>std::string_view<sp/>doc<sp/>=<sp/></highlight><highlight class="stringliteral">""</highlight><highlight class="normal">);</highlight></codeline> |
| <codeline lineno="137"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="162"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>AddRequiredColumn(std::optional<std::string_view><sp/>parent,</highlight></codeline> |
| <codeline lineno="163"><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/>std::string_view<sp/>name,<sp/>std::shared_ptr<Type><sp/>type,</highlight></codeline> |
| <codeline lineno="164"><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/>std::string_view<sp/>doc<sp/>=<sp/></highlight><highlight class="stringliteral">""</highlight><highlight class="normal">);</highlight></codeline> |
| <codeline lineno="165"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="181"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>RenameColumn(std::string_view<sp/>name,<sp/>std::string_view<sp/>new_name);</highlight></codeline> |
| <codeline lineno="182"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="198"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>UpdateColumn(std::string_view<sp/>name,</highlight></codeline> |
| <codeline lineno="199"><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/>std::shared_ptr<PrimitiveType><sp/>new_type);</highlight></codeline> |
| <codeline lineno="200"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="211"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>UpdateColumnDoc(std::string_view<sp/>name,<sp/>std::string_view<sp/>new_doc);</highlight></codeline> |
| <codeline lineno="212"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="217"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>MakeColumnOptional(std::string_view<sp/>name);</highlight></codeline> |
| <codeline lineno="218"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="226"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>RequireColumn(std::string_view<sp/>name);</highlight></codeline> |
| <codeline lineno="227"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="237"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>DeleteColumn(std::string_view<sp/>name);</highlight></codeline> |
| <codeline lineno="238"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="247"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>MoveFirst(std::string_view<sp/>name);</highlight></codeline> |
| <codeline lineno="248"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="262"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>MoveBefore(std::string_view<sp/>name,<sp/>std::string_view<sp/>before_name);</highlight></codeline> |
| <codeline lineno="263"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="277"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>MoveAfter(std::string_view<sp/>name,<sp/>std::string_view<sp/>after_name);</highlight></codeline> |
| <codeline lineno="278"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="301"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>UnionByNameWith(std::shared_ptr<Schema><sp/>new_schema);</highlight></codeline> |
| <codeline lineno="302"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="310"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>SetIdentifierFields(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::span<std::string_view>&<sp/>names);</highlight></codeline> |
| <codeline lineno="311"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="318"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>CaseSensitive(</highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>case_sensitive);</highlight></codeline> |
| <codeline lineno="319"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="321" refid="structiceberg_1_1UpdateSchema_1_1Move" refkind="compound"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structiceberg_1_1UpdateSchema_1_1Move" kindref="compound">Move</ref><sp/>{</highlight></codeline> |
| <codeline lineno="322"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">enum<sp/>class</highlight><highlight class="normal"><sp/>MoveType<sp/>{<sp/><ref refid="sort__field_8h_1a7d2f6c79654ba49df0d36c1724041283a9fda60ba14f0809e152bc08409aa2737" kindref="member">kFirst</ref>,<sp/>kBefore,<sp/>kAfter<sp/>};</highlight></codeline> |
| <codeline lineno="323"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="324"><highlight class="normal"><sp/><sp/><sp/><sp/>int32_t<sp/>field_id;</highlight></codeline> |
| <codeline lineno="325"><highlight class="normal"><sp/><sp/><sp/><sp/>int32_t<sp/>reference_field_id;<sp/><sp/></highlight><highlight class="comment">//<sp/>Only<sp/>used<sp/>for<sp/>kBefore<sp/>and<sp/>kAfter</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/>MoveType<sp/>type;</highlight></codeline> |
| <codeline lineno="327"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structiceberg_1_1UpdateSchema_1_1Move" kindref="compound">Move</ref><sp/>First(int32_t<sp/>field_id);</highlight></codeline> |
| <codeline lineno="329"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structiceberg_1_1UpdateSchema_1_1Move" kindref="compound">Move</ref><sp/>Before(int32_t<sp/>field_id,<sp/>int32_t<sp/>reference_field_id);</highlight></codeline> |
| <codeline lineno="331"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structiceberg_1_1UpdateSchema_1_1Move" kindref="compound">Move</ref><sp/>After(int32_t<sp/>field_id,<sp/>int32_t<sp/>reference_field_id);</highlight></codeline> |
| <codeline lineno="333"><highlight class="normal"><sp/><sp/>};</highlight></codeline> |
| <codeline lineno="334"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="335" refid="classiceberg_1_1UpdateSchema_1a6e69f3190d5c89c1c76ca357f39c7af5" refkind="member"><highlight class="normal"><sp/><sp/>Kind<sp/><ref refid="classiceberg_1_1UpdateSchema_1a6e69f3190d5c89c1c76ca357f39c7af5" kindref="member">kind</ref>()<sp/>const<sp/>final<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>Kind::kUpdateSchema;<sp/>}</highlight></codeline> |
| <codeline lineno="336"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="337" refid="structiceberg_1_1UpdateSchema_1_1ApplyResult" refkind="compound"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structiceberg_1_1UpdateSchema_1_1ApplyResult" kindref="compound">ApplyResult</ref><sp/>{</highlight></codeline> |
| <codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/>std::shared_ptr<Schema><sp/>schema;</highlight></codeline> |
| <codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/>int32_t<sp/>new_last_column_id;</highlight></codeline> |
| <codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/>std::unordered_map<std::string,<sp/>std::string><sp/>updated_props;</highlight></codeline> |
| <codeline lineno="341"><highlight class="normal"><sp/><sp/>};</highlight></codeline> |
| <codeline lineno="342"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="348"><highlight class="normal"><sp/><sp/>Result<ApplyResult><sp/>Apply();</highlight></codeline> |
| <codeline lineno="349"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="350"><highlight class="normal"><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> |
| <codeline lineno="351"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>(std::shared_ptr<Transaction><sp/>transaction);</highlight></codeline> |
| <codeline lineno="352"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="361"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>AddColumnInternal(std::optional<std::string_view><sp/>parent,</highlight></codeline> |
| <codeline lineno="362"><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/>std::string_view<sp/>name,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>is_optional,</highlight></codeline> |
| <codeline lineno="363"><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/>std::shared_ptr<Type><sp/>type,<sp/>std::string_view<sp/>doc);</highlight></codeline> |
| <codeline lineno="364"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="370"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>UpdateColumnRequirementInternal(std::string_view<sp/>name,<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>is_optional);</highlight></codeline> |
| <codeline lineno="371"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="373"><highlight class="normal"><sp/><sp/>int32_t<sp/>AssignNewColumnId();</highlight></codeline> |
| <codeline lineno="374"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="376"><highlight class="normal"><sp/><sp/>Result<std::optional<std::reference_wrapper<const<sp/>SchemaField>>><sp/>FindField(</highlight></codeline> |
| <codeline lineno="377"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::string_view<sp/>name)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> |
| <codeline lineno="378"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="387"><highlight class="normal"><sp/><sp/>Result<std::optional<std::reference_wrapper<const<sp/>SchemaField>>><sp/>FindFieldForUpdate(</highlight></codeline> |
| <codeline lineno="388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>std::string_view<sp/>name)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> |
| <codeline lineno="389"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="397"><highlight class="normal"><sp/><sp/>std::string<sp/>CaseSensitivityAwareName(std::string_view<sp/>name)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> |
| <codeline lineno="398"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="400"><highlight class="normal"><sp/><sp/>Result<int32_t><sp/>FindFieldIdForMove(std::string_view<sp/>name)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> |
| <codeline lineno="401"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="403"><highlight class="normal"><sp/><sp/><ref refid="classiceberg_1_1UpdateSchema" kindref="compound">UpdateSchema</ref>&<sp/>MoveInternal(std::string_view<sp/>name,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structiceberg_1_1UpdateSchema_1_1Move" kindref="compound">Move</ref>&<sp/>move);</highlight></codeline> |
| <codeline lineno="404"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="405"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>Internal<sp/>state</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="406"><highlight class="normal"><sp/><sp/>std::shared_ptr<Schema><sp/>schema_;</highlight></codeline> |
| <codeline lineno="407"><highlight class="normal"><sp/><sp/>int32_t<sp/>last_column_id_;</highlight></codeline> |
| <codeline lineno="408"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>allow_incompatible_changes_{</highlight><highlight class="keyword">false</highlight><highlight class="normal">};</highlight></codeline> |
| <codeline lineno="409"><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="410"><highlight class="normal"><sp/><sp/>std::vector<std::string><sp/>identifier_field_names_;</highlight></codeline> |
| <codeline lineno="411"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="412"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>Tracking<sp/>changes</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="413"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>field<sp/>ID<sp/>-><sp/>parent<sp/>field<sp/>ID</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="414"><highlight class="normal"><sp/><sp/>std::unordered_map<int32_t,<sp/>int32_t><sp/>id_to_parent_;</highlight></codeline> |
| <codeline lineno="415"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>field<sp/>IDs<sp/>to<sp/>delete</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="416"><highlight class="normal"><sp/><sp/>std::unordered_set<int32_t><sp/>deletes_;</highlight></codeline> |
| <codeline lineno="417"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>field<sp/>ID<sp/>-><sp/>updated<sp/>field</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="418"><highlight class="normal"><sp/><sp/>std::unordered_map<int32_t,<sp/>std::shared_ptr<SchemaField>><sp/>updates_;</highlight></codeline> |
| <codeline lineno="419"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>parent<sp/>ID<sp/>-><sp/>added<sp/>child<sp/>IDs</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="420"><highlight class="normal"><sp/><sp/>std::unordered_map<int32_t,<sp/>std::vector<int32_t>><sp/>parent_to_added_ids_;</highlight></codeline> |
| <codeline lineno="421"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>full<sp/>name<sp/>-><sp/>field<sp/>ID<sp/>for<sp/>added<sp/>fields</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="422"><highlight class="normal"><sp/><sp/>std::unordered_map<std::string,<sp/>int32_t><sp/>added_name_to_id_;</highlight></codeline> |
| <codeline lineno="423"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>parent<sp/>ID<sp/>-><sp/>move<sp/>operations</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="424"><highlight class="normal"><sp/><sp/>std::unordered_map<int32_t,<sp/>std::vector<Move>><sp/>moves_;</highlight></codeline> |
| <codeline lineno="425"><highlight class="normal">};</highlight></codeline> |
| <codeline lineno="426"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="427"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>iceberg</highlight><highlight class="normal"></highlight></codeline> |
| </programlisting> |
| <location file="iceberg/update/update_schema.h"/> |
| </compounddef> |
| </doxygen> |