mirror of
https://github.com/apache/doris.git
synced 2026-11-04 07:31:17 +00:00
### What problem does this PR solve? Issue Number: N/A Related PR: #69551 Problem Summary: Doris Iceberg DELETE, UPDATE, and MERGE all used the non-standard `delete_isolation_level` property. As a result, the standard per-operation table properties `write.delete.isolation-level`, `write.update.isolation-level`, and `write.merge.isolation-level` were ignored. A table configured for `snapshot` isolation therefore still performed serializable data-file conflict validation and rejected normal concurrent appends. This change selects the Iceberg `TableProperties` key based on `WriteOperation` and parses it with `IsolationLevel.fromName()`. The existing delete-file, base-snapshot, conflict-filter, and referenced-data-file validations remain enabled; only `validateNoConflictingDataFiles` is gated on serializable isolation. Invalid isolation-level values now fail explicitly instead of being treated as snapshot isolation. The three disabled regressions from #69551 are enabled. Unit coverage also verifies per-operation key selection, serializable defaults, and invalid values. ### Release note Iceberg DELETE, UPDATE, and MERGE now honor their standard per-operation isolation-level table properties. ### Check List (For Author) - Test - [ ] Regression test - [x] Unit Test: `IcebergConnectorTransactionTest` and `IcebergWriteKnownBugsTest` pass, including all three concurrent-append snapshot-isolation regressions. - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [x] Yes. Snapshot isolation now permits concurrent data-file appends while retaining the other row-delta validations. - Does this need documentation? - [x] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # fe-common This module is used to store some common classes of other modules. # spark-dpp This module is Spark DPP program, used for Spark Load function. Depends: fe-common # fe-core This module is the main process module of FE. Depends: fe-common, spark-dpp