Hello Zoltan Borok-Nagy, Impala Public Jenkins,

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/24088

to look at the new patch set (#3).

Change subject: IMPALA-14589: Add support for Iceberg V3 default values
......................................................................

IMPALA-14589: Add support for Iceberg V3 default values

Iceberg V3 introduces two types of default values to enable non-blocking
schema evolution, this patch adds support for them in Impala.

1. **initial-default**: Applied when READING old data files that were
   written before a column was added to the schema. This allows adding
   columns with defaults without rewriting existing data files. The
   default value is materialized at read time for missing columns.

2. **write-default**: Applied when WRITING new rows that don't specify a
   value for a column. This ensures consistent defaults across all
   engines writing to the table, regardless of whether they're inserting
   via Spark, Flink, or Impala.

How Default Values Work:
- Default values are stored in the Iceberg table's schema metadata
  (not in files)
- When scanning a file missing a column, Impala checks the schema for
  initial-default
- If present, the value is materialized in the template tuple before
  scanning
- For writes, InsertStmt checks for write-default on unmentioned columns
- Both default types are represented as JSON-serialized literals in the schema

Testing:
- Updated iceberg-v3-negative.test with schema evolution expectations
- Extended iceberg-v3-default-values.test with comprehensive coverage:
  * Read path: SELECT, WHERE, scanner and predicate pushdown with compound
    predicates
  * Write path: INSERT, INSERT OVERWRITE, with partial columns
  * Time travel: Schema evolution across snapshots

Change-Id: I9f1be994a336b30b17b17819091417d777a39be9
---
M be/src/exec/avro/hdfs-avro-scanner.cc
M be/src/exec/file-metadata-utils.cc
M be/src/exec/file-metadata-utils.h
M be/src/exec/hdfs-scan-node-base.cc
M be/src/exec/hdfs-scan-node-base.h
M be/src/exec/orc/hdfs-orc-scanner.cc
M be/src/exec/parquet/hdfs-parquet-scanner.cc
M be/src/runtime/descriptors.cc
M be/src/runtime/descriptors.h
M common/thrift/CatalogObjects.thrift
M common/thrift/Descriptors.thrift
M fe/src/main/java/org/apache/impala/analysis/InsertStmt.java
M fe/src/main/java/org/apache/impala/catalog/Column.java
M fe/src/main/java/org/apache/impala/catalog/IcebergColumn.java
M fe/src/main/java/org/apache/impala/planner/IcebergScanPlanner.java
M fe/src/main/java/org/apache/impala/util/IcebergSchemaConverter.java
M 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value/metadata/v4.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/data/00000-3-e9b0ad3b-49a1-4da4-a830-8e39b42a2731-0-00001.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/data/00000-4-809b106d-737e-4ec3-a49d-814716a2b794-0-00001.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/90885e58-806c-4b63-b088-39f06e1fd90c-m0.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/da4c8917-801b-42db-913a-c9f3a006d771-m0.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/snap-1138771512771688056-1-90885e58-806c-4b63-b088-39f06e1fd90c.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/snap-2819462914350205316-1-da4c8917-801b-42db-913a-c9f3a006d771.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/v1.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/v2.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/v3.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/v4.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_avro/metadata/version-hint.text
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/data/00000-0-ab2ce281-9c77-4045-aec4-8338f184d93e-0-00001.orc
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/data/00000-1-01c07679-b344-4993-aaa7-1c0aa90555ed-0-00001.orc
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/16d77afa-0e7f-4de8-945a-a3df191625f3-m0.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/2e7e1961-217f-424b-a485-75827f5741a9-m0.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/snap-1536392834658079256-1-2e7e1961-217f-424b-a485-75827f5741a9.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/snap-4321940050961723411-1-16d77afa-0e7f-4de8-945a-a3df191625f3.avro
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/v1.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/v2.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/v3.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/v4.metadata.json
A 
testdata/data/iceberg_test/iceberg_v3/iceberg_v3_default_value_orc/metadata/version-hint.text
A 
testdata/workloads/functional-query/queries/QueryTest/iceberg-v3-default-values.test
M testdata/workloads/functional-query/queries/QueryTest/iceberg-v3-negative.test
M tests/common/file_utils.py
M tests/query_test/test_iceberg.py
43 files changed, 486 insertions(+), 60 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/88/24088/3
--
To view, visit http://gerrit.cloudera.org:8080/24088
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I9f1be994a336b30b17b17819091417d777a39be9
Gerrit-Change-Number: 24088
Gerrit-PatchSet: 3
Gerrit-Owner: Arnab Karmakar <[email protected]>
Gerrit-Reviewer: Impala Public Jenkins <[email protected]>
Gerrit-Reviewer: Zoltan Borok-Nagy <[email protected]>

Reply via email to