Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions integration_tests/src/main/python/iceberg/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@


runtime_iceberg_version = os.environ.get("EXPECTED_ICEBERG_VERSION")
iceberg_192_rest_deletion_vector_skip_mark = pytest.mark.skipif(

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would treat 1.9.2's dv support as incomplete, why not just fix supports_iceberg_v3 to be >1.9.2?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed. Iceberg 1.9.2 predates the upstream S3InputStream connection-leak fix, and there is no 1.9.3 release. The first release containing the fix is 1.10.0, so I changed the v3 support gate to require Iceberg 1.10.0 or later.

is_iceberg_rest_catalog() and runtime_iceberg_version == "1.9.2",
reason=(
"Iceberg 1.9.2 leaks S3 connections when reading deletion vectors: "
"https://github.com/NVIDIA/cudf-spark/issues/15970"))
Comment thread
res-life marked this conversation as resolved.
Outdated
supports_iceberg_v3 = (
runtime_iceberg_version is not None and
tuple(int(part) for part in runtime_iceberg_version.split(".")[:2]) >= (1, 9))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from iceberg import (create_iceberg_table, get_full_table_name, iceberg_write_enabled_conf,
iceberg_base_table_cols, iceberg_gens_list, iceberg_nested_write_gens_list,
iceberg_unsupported_mark, delete_partition_transforms_distributed,
iceberg_192_rest_deletion_vector_skip_mark,
_build_tblprops, assert_iceberg_files_use_codec,
supports_iceberg_v3, ICEBERG_V3_UNSUPPORTED_REASON,
supports_iceberg_row_lineage_inheritance,
Expand Down Expand Up @@ -144,7 +145,11 @@ def test_iceberg_delete_unpartitioned_table(spark_tmp_table_factory, delete_mode
condition=is_spark_35x(),
reason="https://github.com/NVIDIA/cudf-spark/issues/15680"),
id='cow'),
pytest.param('merge-on-read', 'WriteDeltaExec', id='mor')
pytest.param(
'merge-on-read',
'WriteDeltaExec',
marks=iceberg_192_rest_deletion_vector_skip_mark,
id='mor')
])
@allow_non_gpu_conditional(is_spark_400_or_later(), "EmptyRelationExec")
def test_iceberg_delete_v3_table_fallback(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
representative_eq_column_combinations, eq_reader_canary_pairs, \
iceberg_unsupported_mark, create_iceberg_table, \
iceberg_base_table_cols, iceberg_gens_list, get_full_table_name, \
iceberg_192_rest_deletion_vector_skip_mark, \
supports_iceberg_v3, ICEBERG_V3_UNSUPPORTED_REASON, \
supports_iceberg_row_lineage_inheritance, \
ICEBERG_ROW_LINEAGE_INHERITANCE_UNSUPPORTED_REASON
Expand Down Expand Up @@ -180,6 +181,7 @@ def test_iceberg_v2_mixed_deletes(spark_tmp_table_factory, spark_tmp_path, reade
[pytest.param(reader_type, True, id=reader_type) for reader_type in rapids_reader_types] +
[pytest.param('PERFILE', False, id='PERFILE-one-shot')])
@pytest.mark.skipif(not supports_iceberg_v3, reason=ICEBERG_V3_UNSUPPORTED_REASON)
@iceberg_192_rest_deletion_vector_skip_mark
@validate_execs_in_gpu_plan('GpuBatchScanExec')
def test_iceberg_v3_deletion_vector(
spark_tmp_table_factory, reader_type, use_chunked_reader):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from iceberg import (create_iceberg_table, get_full_table_name, iceberg_write_enabled_conf,
iceberg_base_table_cols, iceberg_gens_list, iceberg_nested_write_gens_list,
iceberg_unsupported_mark, merge_partition_transforms_distributed,
iceberg_192_rest_deletion_vector_skip_mark,
supports_iceberg_v3, ICEBERG_V3_UNSUPPORTED_REASON,
supports_iceberg_row_lineage_inheritance,
ICEBERG_ROW_LINEAGE_INHERITANCE_UNSUPPORTED_REASON,
Expand Down Expand Up @@ -188,7 +189,11 @@ def test_iceberg_merge(spark_tmp_table_factory, partition_col_sql, merge_mode):
@ignore_order(local=True)
@pytest.mark.parametrize('merge_mode,fallback_exec', [
pytest.param('copy-on-write', 'ReplaceDataExec', id='cow'),
pytest.param('merge-on-read', 'WriteDeltaExec', id='mor')
pytest.param(
'merge-on-read',
'WriteDeltaExec',
marks=iceberg_192_rest_deletion_vector_skip_mark,
id='mor')
])
def test_iceberg_merge_v3_table_fallback(
spark_tmp_table_factory, merge_mode, fallback_exec):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from iceberg import (create_iceberg_table, get_full_table_name, iceberg_write_enabled_conf,
iceberg_base_table_cols, iceberg_gens_list, iceberg_nested_write_gens_list,
iceberg_unsupported_mark, update_partition_transforms_distributed,
iceberg_192_rest_deletion_vector_skip_mark,
supports_iceberg_v3, ICEBERG_V3_UNSUPPORTED_REASON,
supports_iceberg_row_lineage_inheritance,
ICEBERG_ROW_LINEAGE_INHERITANCE_UNSUPPORTED_REASON, row_lineage_df,
Expand Down Expand Up @@ -136,7 +137,11 @@ def test_iceberg_update_unpartitioned_table_single_column(spark_tmp_table_factor
@ignore_order(local=True)
@pytest.mark.parametrize('update_mode,fallback_exec', [
pytest.param('copy-on-write', 'ReplaceDataExec', id='cow'),
pytest.param('merge-on-read', 'WriteDeltaExec', id='mor')
pytest.param(
'merge-on-read',
'WriteDeltaExec',
marks=iceberg_192_rest_deletion_vector_skip_mark,
id='mor')
])
@allow_non_gpu_conditional(is_spark_400_or_later(), "EmptyRelationExec")
def test_iceberg_update_v3_table_fallback(
Expand Down
Loading