[
https://issues.apache.org/jira/browse/HIVE-30123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Denys Kuzmenko updated HIVE-30123:
----------------------------------
Description:
- HiveBatchIterator marks "the file has no _row_id column" by setting
vector[0] = -1L once, in its constructor
(RowLineageUtils.initializeRowLineageColumns).
- The first batch overwrites vector[0] with a real ID. From the second batch
on, the iterator assumes the values came from the file and only fills nulls, so
the batch keeps the first batch's IDs.
LAST__UPDATED__SEQUENCE__NUMBER has the same pattern.
- It affects every V3 file written without _row_id, which includes every
freshly inserted file.
*Repro:*
insert 3,000 rows into a V3 table, then compare count(distinct
ROW__LINEAGE__ID) with vectorization on and off. Vectorized gives 1,024
(0–1023); non-vectorized gives 3,000.
was:
- HiveBatchIterator marks "the file has no _row_id column" by setting
vector[0] = -1L once, in its constructor
(RowLineageUtils.initializeRowLineageColumns).
- The first batch overwrites vector[0] with a real ID. From the second batch
on, the iterator assumes the values came from the file and only fills nulls, so
the batch keeps the first batch's IDs.
LAST__UPDATED__SEQUENCE__NUMBER has the same pattern.
- It affects every V3 file written without _row_id, which includes every
freshly inserted file.
Repro:
insert 3,000 rows into a V3 table, then compare count(distinct
ROW__LINEAGE__ID) with vectorization on and off. Vectorized gives 1,024
(0–1023); non-vectorized gives 3,000.
> Iceberg: vectorized read returns wrong row lineage values after the first
> batch of a file
> -----------------------------------------------------------------------------------------
>
> Key: HIVE-30123
> URL: https://issues.apache.org/jira/browse/HIVE-30123
> Project: Hive
> Issue Type: Bug
> Reporter: Denys Kuzmenko
> Priority: Major
>
> - HiveBatchIterator marks "the file has no _row_id column" by setting
> vector[0] = -1L once, in its constructor
> (RowLineageUtils.initializeRowLineageColumns).
>
> - The first batch overwrites vector[0] with a real ID. From the second
> batch on, the iterator assumes the values came from the file and only fills
> nulls, so the batch keeps the first batch's IDs.
> LAST__UPDATED__SEQUENCE__NUMBER has the same pattern.
>
>
> - It affects every V3 file written without _row_id, which includes every
> freshly inserted file.
>
>
> *Repro:*
> insert 3,000 rows into a V3 table, then compare count(distinct
> ROW__LINEAGE__ID) with vectorization on and off. Vectorized gives 1,024
> (0–1023); non-vectorized gives 3,000.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)