[ 
https://issues.apache.org/jira/browse/IMPALA-15433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zoltán Borók-Nagy resolved IMPALA-15433.
----------------------------------------
    Resolution: Fixed

> [DOCS] Document Iceberg V3 table support (row lineage, deletion vectors, DML)
> -----------------------------------------------------------------------------
>
>                 Key: IMPALA-15433
>                 URL: https://issues.apache.org/jira/browse/IMPALA-15433
>             Project: IMPALA
>          Issue Type: Documentation
>            Reporter: Zoltán Borók-Nagy
>            Assignee: Zoltán Borók-Nagy
>            Priority: Major
>              Labels: impala-iceberg
>             Fix For: Impala 5.0.0
>
>
> Impala 5.0 supports Iceberg format-version 3 tables, but docs/ never mentions 
> V3: a grep for "V3", "row lineage", "deletion vector" and _row_id under docs/ 
> finds nothing. Add a concept (suggested id iceberg_v3) in 
> docs/topics/impala_iceberg.xml next to iceberg_v2, covering:
> - Creating V3 tables: CREATE TABLE ... STORED BY ICEBERG 
> TBLPROPERTIES('format-version'='3'), upgrading an existing table with ALTER 
> TABLE ... SET TBLPROPERTIES('format-version'='3'), and ALTER TABLE ... 
> CONVERT TO ICEBERG TBLPROPERTIES('format-version'='3') (IMPALA-15071; 
> accepted values are 1, 2 and 3). CREATE TABLE LIKE keeps the
>   source table's format version (IMPALA-14836).
> - Row lineage (IMPALA-14592, IMPALA-14825): the virtual columns _row_id and 
> _last_updated_sequence_number (BIGINT), which exist only on V3 tables, are 
> not returned by SELECT *, need qualifying when several V3 tables are in 
> scope, and lose to a real column of the same name. Underneath are the hidden 
> columns _file_row_id and
>   _file_last_updated_sequence_number plus the virtual column 
> ICEBERG__FIRST__ROW__ID; the definitions are COALESCE(_file_row_id, 
> ICEBERG__FIRST__ROW__ID + FILE__POSITION) and 
> COALESCE(_file_last_updated_sequence_number, 
> ICEBERG__DATA__SEQUENCE__NUMBER). The hidden columns can be selected but not 
> altered, dropped, inserted into or reused
>   as column names, and COMPUTE STATS skips them.
> - How the values change: INSERT assigns new row ids; UPDATE and MERGE keep 
> _row_id and assign a new _last_updated_sequence_number; OPTIMIZE preserves 
> both.
> - DML on V3 (IMPALA-14588 DELETE, IMPALA-14913 UPDATE, IMPALA-14937 MERGE): 
> row-level changes write deletion vectors in Puffin files instead of Parquet 
> position delete files, at most one per data file. They show up in the files 
> metadata table as content=1, file_format='PUFFIN'. The Parquet rule still 
> applies: write.delete.format.default
>   must be PARQUET.
> - The upgrade restriction: on a V3 table that still has V2 position delete 
> files, DELETE, UPDATE and MERGE fail with "... is not allowed on Iceberg 
> format version 3 table '<t>' as it has existing version 2 position delete 
> file(s) ... Run 'OPTIMIZE TABLE <t>'".
> Text elsewhere that belongs to the same work:
> - impala_iceberg.xml: iceberg_delete (~line 600) and iceberg_update (~line 
> 699) say "against Iceberg V2 tables", and the iceberg_update limitation "Only 
> writes position delete files" doesn't hold for V3.
> - impala_iceberg.xml iceberg_v2 (~line 258) still tells the reader to set 
> 'format-version'='2' to get a V2 table, which has been the default since the 
> Iceberg 1.5 upgrade.
> - impala_dml.xml:88: "For Iceberg V2 tables, Impala supports the DELETE ... 
> UPDATE ... MERGE ..." — add V3.
> - impala_langref_unsupported.xml:314: "Impala does not provide virtual 
> columns." Wrong since 4.2 (INPUT__FILE__NAME), and more so now. Consider 
> adding a list of the Iceberg virtual columns: INPUT__FILE__NAME, 
> FILE__POSITION, PARTITION__SPEC__ID, ICEBERG__PARTITION__SERIALIZED, 
> ICEBERG__DATA__SEQUENCE__NUMBER, ICEBERG__FIRST__ROW__ID,
>   plus _row_id and _last_updated_sequence_number on V3.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to