Repository navigation
Conversation
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
run buildall |
|
/review |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
There was a problem hiding this comment.
Request changes: this review found 11 actionable correctness and rolling-compatibility defects.
The blocking paths group into four areas: external-file report ownership can delete committed Iceberg files or strand Hive multipart uploads; mixed-version Hive/Iceberg writes can fail after staging or silently use the wrong partition source; Scanner V2 loses or misinterprets Iceberg requiredness and initial defaults; and current nested non-identity merge routing constructs transforms from the wrong type.
Critical-checkpoint summary: reader lifecycle and collection parent-null handling were cleared; async reservation transfer, spill accounting, and dependency wakeups were cleared; overwrite OCC/branch behavior and the orphan-file action remained fail-closed; but schema mapping/default materialization, external compatibility, nested partition routing, and report ownership have the inline blockers below. No additional user-provided focus was supplied. The review converged in Round 2 after both full-scope passes and the separate risk challenge returned no new valuable findings. Per the review workflow, no builds or source modifications were performed.
|
run buildall |
|
/review |
There was a problem hiding this comment.
Request changes: this review found seven additional actionable defects.
Critical-checkpoint summary:
- Correctness and data safety: top-level non-finite Iceberg defaults fail in FE before the new BE parser is reachable; orphan deletion can race a concurrent commit; and rejected final reports can leave prepared Paimon files without an abort owner.
- Resource lifetime and admission: cold partition fan-out and the final spill merger can both allocate far beyond their successful reservations.
- External compatibility and performance: a positive equality-delete summary still causes unnecessary remote manifest traversal during rolling-upgrade checks.
- Tests: the expanded complex-evolution suite has stale and missing golden results, so its checked-in expectations cannot pass.
The final-report state machine for the other inspected Iceberg/Hive/MaxCompute paths, nested partition routing, object-store publication, branch overwrite/OCC, reader lifecycle, and collection null handling were cleared. All 115 changed paths were reviewed, all 11 existing inline threads were duplicate-fenced, and two additional concerns were dismissed as pre-existing after authoritative-preimage checks. No additional user-provided focus was supplied. Three full rounds converged unanimously with no new valuable findings in the final round. Per the review instructions, no builds or source modifications were performed.
FE UT Coverage ReportIncrement line coverage |
|
run buildall |
|
/review |
There was a problem hiding this comment.
Request changes: seven additional, distinct defects remain (five P1, two P2).
Findings:
- [P1] Failed rewrite actions can permanently retain the new Iceberg commit fence.
- [P1] Target-file rollover can invoke a full sort without reserving destination/permutation workspace.
- [P1] Nontrivial ARRAY/MAP rematerialization still allocates an entry-sized parent mask when no descendant consumes it.
- [P1] Paimon backend close failures are discarded after FE has accepted commit payloads.
- [P1] Cold-writer reserve estimation copies a potentially huge first value before memory admission.
- [P2] The V2 gate rejects selected-snapshot/ref scans based on schemas that cannot contribute reachable files.
- [P2] The V2 gate expands a nested-pruned root to unrequested descendants, so an unused sibling can reject a V1-safe scan.
Review checkpoints:
- Architecture and layer boundaries: traced Scanner/TableReader/mapper/file-reader responsibilities and FE-to-Thrift-to-BE ownership. No separate boundary inversion survived review; the schema-gate and materialization defects are called out inline.
- Reader and transaction lifecycle/contracts: checked split/EOF/error cleanup, async queue tokens, report ACK/retry/finalizers, Iceberg fence/OCC paths, and writer close/rollback. The rewrite-fence leak and post-ACK Paimon close regression remain blocking.
- Schema mapping/materialization: checked stable field IDs, recursive defaults/optionality/binary markers, nested projection, ARRAY/MAP offsets/null maps, selected schemas, and partition paths. Three projection/materialization defects remain inline.
- Filtering, deletes, and pushdown: traced predicates plus equality/position-delete paths and row/schema alignment; no additional nonduplicate issue survived beyond prior live threads and the V2 projection gates above.
- Format boundaries and external compatibility: checked Iceberg V1/V2 rolling upgrade, time travel/refs, external schema evolution, Hive/Paimon reporting, nested partitions, and Azure/S3 multipart identity. The two mixed-version false rejections are inline; other reproduced compatibility concerns are already threaded.
- Performance and observability: reviewed admission, sorter rollover/spill/final merge, hot-path collection masks, report-size handling, counters, and cleanup visibility. Three unreserved/unbounded allocation paths remain inline.
- Tests: reviewed all changed BE/FE/regression tests. Coverage does not exercise the seven reported witnesses; no builds or tests were run, as required by the review prompt.
- User focus: no additional user-provided focus was supplied.
Status: capped/incomplete after the maximum three rounds because the final normal and final risk passes both produced new distinct findings; this is not a convergence claim.
FE UT Coverage ReportIncrement line coverage |
|
run buildall |
|
/review |
FE UT Coverage ReportIncrement line coverage |
|
/review |
|
Codex automated review failed and did not complete. Error: Review context preparation failed before Codex ran; inspect the 'Prepare authoritative PR context and required AGENTS guides' step. Please inspect the workflow logs and rerun the review after the underlying issue is resolved. |
|
run buildall |
|
/review |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
|
Codex automated review failed and did not complete. Error: Review step was failure (possibly timeout or cancelled) Please inspect the workflow logs and rerun the review after the underlying issue is resolved. |
There was a problem hiding this comment.
Request changes: five additional, distinct P1 defects remain.
Findings:
- Iceberg admission still misses the pre-append per-column capacity rollover sort.
- A new BE can mistake a legacy FE's transport OK for durable Hive/Paimon/MaxCompute ownership acceptance.
- Expiring an ancestor snapshot can truncate the schema-provenance walk while files written under that schema remain live.
- Rewrite cache invalidation can report failure after the remote Iceberg commit is already durable.
- A swallowed rewrite-group failure can be counted as success, allowing source files to be deleted without replacements.
Critical-checkpoint summary:
- Architecture and lifecycle: external-report ownership and both rewrite transaction boundaries have the three blocking defects above; new-FE retry identity/publication and the other writer-finalizer paths were cleared.
- Schema mapping and mixed-version scanning: recursive defaults, requiredness transport, collection null propagation, projected IDs, and backend selection were cleared, but expired-parent provenance can under-gate V2 semantics.
- Memory and performance: cold-writer fanout, target-size/EOS/final-merge accounting, async reservation transfer, and prior allocation issues were rechecked; the separate pre-append capacity rollover remains unreserved.
- Filtering, deletes, and destructive/object-store paths: equality/position-delete handling, local maintenance fencing, and exact Azure block identity yielded no new nonduplicate issue beyond existing live threads.
- Tests: the changed tests do not exercise the five reported witnesses; no builds or tests were run, as required.
- User focus: no additional user-provided focus was supplied.
Status: converged in Round 3 after both normal full-scope passes and the final risk challenge returned NO_NEW_VALUABLE_FINDINGS.
FE UT Coverage ReportIncrement line coverage |
|
run buildall |
|
/review |
|
Codex automated review failed and did not complete. Error: Review step was failure (possibly timeout or cancelled) Please inspect the workflow logs and rerun the review after the underlying issue is resolved. |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
|
run buildall |
|
|
||
| namespace doris { | ||
|
|
||
| inline bool report_transfers_external_file_ownership(const TReportExecStatusParams& params) { |
| namespace doris { | ||
| #include "common/compile_check_begin.h" | ||
|
|
||
| void ReservedMemoryToken::release() { |
| } | ||
| // The writer can be destroyed before the final RPC result; the cleanup owns only the client | ||
| // and immutable upload identity needed when FE explicitly rejects ownership. | ||
| _state->add_rejected_external_file_report_cleanup(s3_writer->rejected_report_cleanup()); |
ab93c54 to
05e3922
Compare
|
run buildall |
|
/review |
There was a problem hiding this comment.
Review verdict
Request changes. I reviewed the authoritative 135-file diff at 05e3922d491113e1e803a9e77d9978ee8e282388. The five new inline findings are three P1s (Paimon rejected-report cleanup, Iceberg EOS spill reservation, and MTMV retry snapshots) and two P2s (Iceberg metadata traversal and unrelated-table lock contention). Ten existing P1 threads remain applicable and are carried by ID below, without duplicate comments. This was a static review; the review contract prohibited builds and tests, so changed tests and expected outputs were inspected but not executed.
Convergence status: A distinct issue surfaced in round 3, the maximum permitted round. I verified and included it, resolved every candidate, and the final same-round recheck found no further finding. The requested no-new-findings convergence across a subsequent full round therefore was not demonstrated; this review is incomplete in that specific sense. There was no additional user-provided focus.
Critical checkpoints
- Goal and proof: The PR adds explicit external-file report ownership/ACK handling, Iceberg maintenance and write safeguards, nested partition and evolved-reader behavior, and bounded memory admission. The changed unit and regression cases exercise selected happy and negative paths, but they do not prove the five new failure cases or close the ten existing blockers.
- Scope: This is a broad change across BE pipeline, writers, memory accounting, FE transactions, planner, Iceberg procedures, Thrift, and regression assets. The paths are related through write and read correctness, but their breadth raises integration risk; the complete 135-path list was reviewed.
- Concurrency and shared state: Pipeline tasks share the final-report state; asynchronous writers carry reservation and cleanup tokens; FE report handlers and transactions coordinate acceptance; Iceberg uses a location-derived
StampedLock. Their concrete ownership and interleavings were traced. M6 and existing 3794720941/3844888607 show remaining concurrency gaps. - Lock work and order: BE reserve/revoke takes writer, table-dispatch, and sorter locks in a consistent observed order; no new BE lock cycle was substantiated. The FE maintenance write stamp spans remote metadata reads, prefix listing, and deletion, so M6 blocks unrelated colliding tables for the entire operation.
- Lifecycle and static initialization: Report finalizers and sink owners are released on terminal outcomes, but M1 and existing 3844888590/3844888596/3844888607 leave reachable cleanup-owner gaps. The new Java lock array initializes internally; inspected C++ changes showed no cross-translation-unit static initializer dependency or circular ownership defect beyond the listed issues.
- Configuration and dynamic behavior: The FE's existing Thrift message limit and ACK capability are set on per-query
TQueryOptions; a changed limit is picked up by later queries. No new mutable server configuration requiring a separate refresh mechanism was found. The preflight allocation itself remains covered by 3842933259. - Compatibility and formats: I traced V1/V2/V3 reader and writer gates, nested partition IDs, Paimon and Hive protocol handling, and mixed-version query options. Existing 3840874520, 3841511699, and 3844888600 remain semantic compatibility blockers; the prior static-nested and V1 position-delete concerns are fixed on this head.
- Thrift: All four touched definitions were checked on HEAD and available 3.1, 4.0, 4.1, 4.2, and master refs.
THiveTableSink.13,TReportExecStatusResult.2,TQueryOptions.235/236, andTIcebergPartitionField.6are optional with no conflicting IDs found. - Parallel paths: Hive, Iceberg, Paimon, and MaxCompute ownership paths; Iceberg insert, merge, delete, rewrite and orphan cleanup; and ordinary versus position-delete reads were compared. The surviving path-specific defects are reported here or in carried threads.
- Conditional checks: The V1/V2 semantic gates and nested-source rejection were checked against historical behavior. The V2 physically present NULL collection case and dropped-source V1 void case still escape their intended conditions, as recorded in existing threads.
- Test coverage: Changed BE/FE unit tests cover selected reserve arithmetic, report ACK, transactions, schema mapping, and storage helpers; the Spark-created nested-partition regression covers parent NULL/non-NULL rows. Missing or insufficient cases include failed Paimon abort, one-to-two-run EOS, MTMV retry after source advancement, long metadata chains, colliding table locations, and the existing blockers.
- Test results: The changed regression
.outrows were compared with the changed query and expected nested values; no mismatch was substantiated. No build, test, or runtime result was produced in this review. - Observability: Report paths have status/log context and maintenance emits errors, but M1's abort failure is only logged before ownership is dropped. No separate logging or metric defect was substantiated; the actionable failure is the loss of retryable state.
- Transactions, persistence, and failover: FE acceptance and rollback ordering, writable table leases, Iceberg OCC/rewrite cancellation, and MTMV snapshot handoff were traced. No new Doris EditLog field or replay path is introduced by these changes. FE-local maintenance fencing does not survive cross-FE/external writers (existing 3794720941); M3 and 3844888596 remain transaction-consistency concerns.
- Write atomicity and crashes: A final report may transfer file ownership before commit, and rejected/ambiguous outcomes require durable cleanup ownership. M1 and the carried S3, Iceberg, and late-owner P1s show remaining leak windows; no additional concrete crash path survived review.
- FE/BE variables: The new query options and optional Thrift fields are populated and consumed on the inspected ordinary execution paths, with old-BE gates. The unresolved report-size and projection-admission issues are separately carried under 3842933259 and 3841511711.
- Performance and memory: M2 under-reserves a final merge, M5 can traverse unbounded historical metadata before the index budget, and M6 holds a shared stripe over remote IO. The oversized-row merge gap is covered by 3802593698. Other admission, sorter, and IO paths did not yield a distinct substantiated finding.
- Other issues and final sweep: I reconciled all 135 changed paths and every candidate: M1/M2/M3/M5/M6 are inline, M4 was dismissed after verifying Iceberg retention semantics, and SC1/BE3 duplicate M3/3802593698. No unresolved candidate remains.
Still-applicable existing P1 comments: 3794720941 (cross-FE/external orphan race), 3802593698 (oversized spill row), 3840874520 (required collection entries, present-NULL case), 3841511699 (V1 void source), 3841511711 (post-admission expression growth), 3842933259 (full-report serialization), 3844888590 (failed S3 abort), 3844888596 (acknowledged Iceberg rollback files), 3844888600 (V3 lineage slots), and 3844888607 (late owner after ambiguous report). Each still applies to this head; none is reposted inline.
Existing P0/P1 findings confirmed for this head: #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment)
|
|
||
| private ReachableIndex collectReachableFiles(Table table) throws IOException, UserException { | ||
| ReachableIndex reachable = new ReachableIndex(MAX_REACHABLE_FILES, MAX_REACHABLE_INDEX_BYTES); | ||
| reachable.addAll(ReachableFileUtil.metadataFileLocations(table, true)); |
There was a problem hiding this comment.
[P2] Bound metadata traversal before building the orphan index. This recursive=true helper reads every older metadata JSON recursively before ReachableIndex.addAll() can enforce the new 5M-entry/256 MiB limit. With write.metadata.previous-versions-max=1 and the default disabled post-commit metadata deletion, a streaming table can accumulate thousands of one-link metadata versions; this call can exhaust the FE stack or heap and prevent cleanup. Iceberg's own orphan action uses the current metadata log without recursion. Use that direct log or an iterative bounded walk, and cover a long metadata chain.
Adapt the remaining applicable fixes from apache#66529 to the legacy Iceberg implementation. Scope review for apache#66750 found that branch-4.1 already preserves the Paimon system-table diagnostic capitalization.
05e3922 to
563fbf0
Compare
|
run buildall |
|
/review |
There was a problem hiding this comment.
Review result
Complete static review of the pinned 30-file diff at 563fbf06d7c011c102aa0c055ffaddc238d2cdeb. I found no distinct new inline issue. The following previously reported P1 issues still affect this head, so I am carrying their existing comment IDs without reposting them:
3793865794: nested partition writes have no old-BE capability gate during a rolling upgrade. Current older writers fail explicitly on the nested source ID; the original comment's silent-mispartition example is stale, but the mixed-version write failure remains.3840599264: semantics-V1 position-deleterowprojection can reach the inner column mapper with a missing nested child and no typed initial-default expression.3841511699: a V1voidpartition field whose source was dropped still fails writer initialization before the void transform can emit NULL.3844888600: V3 lineage slots invalidate the positional root-ID map, causing transformed or nested merge insert images to lose intended partition routing.4244425677: an INSERT planner retry clears MTMV task-injected source snapshots, so the retried plan can read a different source snapshot from the one used to choose refresh partitions.
Critical checkpoints
- Goal, scope, and evidence: The changes add schema-wide nested Iceberg partition-source resolution, FE-to-BE child paths for merge routing, nested identity filter binding, non-finite initial defaults, and position-delete V2 default/requiredness handling. The writer and exchange now traverse the same legal STRUCT path and combine nullable ancestor masks. Focused FE/BE unit cases and an Iceberg evolution regression were inspected; they support the intended cases but are not runtime proof. The change is mostly focused, with the INSERT retry snapshot adjustment addressing the same planning lifecycle.
- Concurrency and lifecycle: Schema/path metadata is built once and read by writer or partitioner instances; no new lock order, shared mutable map, cross-translation-unit initializer, or retained cycle was found. The planner retry has the existing MTMV snapshot-fence failure above. Writer field references remain owned by the retained partition spec; split-specific position-delete defaults are prepared before mapper construction for V2.
- Configuration and compatibility: No configuration item or EditLog/persistent format was added. Thrift field 6 is optional; it does not reuse an ID in the checked 4.2, 4.1, 4.0, or 3.1 branches. The old-BE nested-write gate and semantics-V1 position-delete default gaps remain the existing P1 issues above. FE passes the new field through the translator and data partition; BE reads it and preserves it on partition-function clone.
- Parallel paths, writes, and data correctness: Checked INSERT, UPDATE/MERGE exchange routing, dynamic/static partition branches, identity and transformed fields, null ancestors, ordinary V2 data scans, and position-delete row projection. Static nested labels are rejected before writing so they cannot disagree with stored rows. The evolved V1 void path and V3 routing path remain covered by existing comments. No new transaction, commit, or visible-version implementation was introduced by this diff.
- Errors, performance, observability, and tests: The new path returns status or throws on invalid field/type structure; no newly ignored
Statuswas found. Nested traversal/mask construction occurs per block without a substantiated new hot-path regression. Existing identifiers and errors provide the needed context; no new metric or log requirement was established. Expected regression output was compared with the changed suite. No build or test was run because the review contract prohibits them; the position-delete unit test checks expression preparation rather than an actual file read.
User focus: none was supplied. All three normal reviewers and two separate risk-focused reviewers returned NO_NEW_VALUABLE_FINDINGS; the main-agent final sweep matched all 30 changed paths to the authoritative diff and closed every risk item. This review is complete, static-only, with the listed existing P1 blockers still open.
Existing P0/P1 findings confirmed for this head: #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment)
|
run buildall |
|
/review |
There was a problem hiding this comment.
Static review complete for head 551160ae931c7fb77d36df0927cf2725e512b950 (base 6834ca13b3fc2004201e9f7adeee898e40884021). One new P2 retry failure is reported inline. The existing P1 threads listed below still describe reachable issues on this checkout; I did not repost them. Two full coverage rounds and focused risk scans converged with no other new valuable findings.
Goal, scope, and tests. The backport adds nested Iceberg partition-source ID/path binding through FE, Thrift, exchange routing, and the BE writer; it also refreshes planner MVCC metadata on INSERT retries and prepares V2 non-finite and position-delete row defaults. The changes are focused on those paths, though the retry reset leaves a relation-local selector behind (inline finding). I inspected the changed BE/FE unit tests and the Iceberg complex-evolution regression and expected output. They cover ID routing, parent NULLs, V3 lineage, retry snapshot reinjection, and literal/default construction. The position-delete test does not run an evolved delete file end to end, and the pruning query checks rows rather than proving pruning. No build, test, or external-cluster run was performed in this review; these are static conclusions, not runtime validation. There was no additional user-provided focus.
Correctness, compatibility, and parallel paths. For a valid pinned schema, FE and BE walk the same STRUCT child order and combine nullable ancestor maps before using the same partition transforms; I found no new router/writer divergence. The new TIcebergPartitionField field 6 is optional and has no ID collision in the inspected 4.1/4.2 release definitions (3.1/4.0 lack this struct). Older inspected 4.1/4.2 writers reject a nested source ID before committing, so the older silent-corruption wording in thread 3793865794 was not independently confirmed for those heads; mixed-version nested writes can still fail until BEs are upgraded. Static nested labels are explicitly rejected. Ordinary V2 and position-delete V2 paths both prepare typed defaults and reject absent required fields; the known V1 position-delete case remains below. No storage-format or internal visible-version/delete-bitmap change was introduced.
Concurrency, lifecycle, writes, and resources. Snapshot maps are statement-owned and the new retry path restores injected MTMV fences; no new thread, lock, global initializer, configuration item, EditLog record, or FE/BE variable send path was missed in the changed code. The new failure is a cache-generation mismatch on a reused unbound relation. Parsed Iceberg schema fields remain owned by the writer while their paths are used. Existing transaction/cleanup and reserve concerns below remain material to write safety. Error returns and context were checked through the modified paths; no new logging or metric gap was substantiated. The nested extraction allocates a row-sized null mask per nested source, but no material performance regression was established beyond the already reported reserve issues.
Confirmed existing P1 threads, not reposted: 3840599264 (old-FE/V1 position-delete complex defaults); 3840874514 (partial Hive multipart report can be completed); 3840874517 (non-EOS Iceberg target rollover lacks merge-output reservation); 3840874520 (present historical NULL collection entries bypass current requiredness); 3841511699 (V1 void partition field after source removal); 3841511711 (sink-expression materialization exceeds preflight reservation); 3844888596 (Iceberg rollback leaves successful BE-staged files); 4244425670 (failed Paimon abort loses cleanup ownership). Prior MTMV retry, V3 lineage, EOS stream-count, and golden-output findings are fixed or not applicable to this head, as recorded in the review ledger.
Existing P0/P1 findings confirmed for this head: #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment), #66825 (comment)
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
FE UT Coverage ReportIncrement line coverage |
FE Regression Coverage ReportIncrement line coverage |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
BE Regression && UT Coverage ReportIncrement line coverage Increment coverage report
|
…4.1 (#66825) ### What problem does this PR solve? Backport the remaining applicable fixes from #66529 to the legacy Iceberg implementation on `branch-4.1`. The requested scope is limited to #66529 and #66750. | Source PR | Applicability on branch-4.1 | | --- | --- | | #66529 | Port nested partition-source handling, INSERT retry metadata reset, format V2 non-finite initial defaults and position-delete row defaults/requiredness. Adapt the changes to the existing synchronous writer and statement-pinned schema. | | #66750 | No code change needed: its lowercase system-table diagnostic regression belongs to the connector-provider implementation. The legacy Paimon scan paths already use `Paimon` in these diagnostics. Keep the branch's existing engine metadata and routing behavior. | Format V1 reader bug fixes and compatibility changes are outside this PR. ### Changes - Accept nested primitive partition sources in the pinned writer schema; resolve them by stable field IDs and pass the root slot plus child path through FE/BE routing. - Preserve parent NULLs in writer and UPDATE/MERGE exchange partition transforms. Bind nested identity predicates by their full schema path and reject static nested partition labels that cannot be validated against row contents. - Refresh planner-loaded MVCC metadata on INSERT retries while retaining caller-injected source snapshot fences across every attempt. A new execution still clears all snapshots. - Exclude Iceberg V3 lineage columns from positional field-ID binding so transformed and nested partitions retain partition-aware UPDATE/MERGE routing. - In the format V2 reader, materialize Iceberg `NaN`, `Infinity`, and `-Infinity` initial defaults without sending them through Doris's finite-only numeric parser. Prepare typed nested defaults and enforce required-field checks for position-delete row projections. - Include the source regression coverage and focused tests for nested writer metadata, field-ID routing, parent NULLs, static partition rejection, retry snapshot ownership, V3 routing, and default materialization. ### Validation - The new retry-snapshot and V3 routing tests each reproduced the reported failure before their corresponding fixes. - FE focused tests: 231 passed, with no failures, errors, or skipped tests. - ASAN BE focused tests: 257 passed from 27 suites, including nested partition routing, format V2 non-finite defaults, and position-delete row defaults. - FE Checkstyle: passed. - clang-format 16: all 16 affected C/C++ files passed, including the restored V1 files. - Full update-diff self-review and whitespace checks: passed. Full external-cluster regressions were not run locally. Existing regression output is retained from the earlier backport; it was not regenerated during this update.
What problem does this PR solve?
Backport the remaining applicable fixes from #66529 to the legacy Iceberg implementation on
branch-4.1. The requested scope is limited to #66529 and #66750.Paimonin these diagnostics. Keep the branch's existing engine metadata and routing behavior.Format V1 reader bug fixes and compatibility changes are outside this PR.
Changes
NaN,Infinity, and-Infinityinitial defaults without sending them through Doris's finite-only numeric parser. Prepare typed nested defaults and enforce required-field checks for position-delete row projections.Validation
Full external-cluster regressions were not run locally. Existing regression output is retained from the earlier backport; it was not regenerated during this update.