morningman opened a new pull request, #68073:
URL: https://github.com/apache/doris/pull/68073
Cherry-picked from #65805, #67813
Batch pick of every merged PR carrying the `incremental-computation` label
that `branch-incremental-computation` does not have yet (no
`incremental-computation-picked` label), in the order they landed on master
(`git log --first-parent`). One commit per PR, each created with `git
cherry-pick -x` so the message ends with `(cherry picked from commit <master
sha>)`. Follows the same convention as #67830 and #68017.
| # | Master commit | PR | Title |
|---|---|---|---|
| 1 | ec886f33e1e | #65805 | [fix](nereids) Disambiguate NULL/OFFSET
metadata from same-named nested fields |
| 2 | 3dbe4d3ca53 | #67813 | [fix](cloud) Invalidate version caches on
visible commit retries |
Not included on purpose:
- The 17 labelled PRs that already carry `incremental-computation-picked`
(#62606 in the fork point, #67508 via #67712, the nine of #67830, the six of
#68017).
- #68012 carries the label but is a PR against this branch itself (merged as
`6f7c87fa892`); nothing to pick.
- #67820 is still open on master; this branch already carries its content
via #67861.
### Prerequisite check
- **#65805** lists #65591 and #66380 as related PRs: #65591 is still open
and #66380 was closed unmerged, both superseded by #65805 itself. The
nested-column-pruning series it builds on (#59263, #61888, #64535) is before
the fork point, so it is already on this branch. No master commit between the
fork point and #65805 touches `column_reader.{cpp,h}`, `descriptors.cpp`, the
nereids pruning rules or the BE tests. The only overlap is the unrelated #66761
(TIMESTAMP_NS), which touches `Descriptors.thrift` (a different struct) and
adds an unrelated test plus its `Config` import to
`DescriptorToThriftConverterTest.java`; that caused the one conflict, see below.
- **#67813** declares no related PR (closes #67099). Its behavior does not
depend on any master commit missing here. The one unlabelled master commit that
touches the same main files, #66296 ("Reduce cloud version sync config"), only
adds `maxAttempts` overloads that none of #67813's main-code hunks use. The
other drift in `CloudGlobalTransactionMgr.java` /
`CloudGlobalTransactionMgrTest.java` is this branch's own #67861 (the
branch-side version of the still-open #67820), which lives in `commitTxn` /
`releaseFinishedTso` / `afterAbortTxnResp` and does not intersect the two hunks
#67813 adds (`checkTransactionStateBeforeCommit` and the empty-partition-list
branch of the commit response handling).
Neither #66761 nor #66296 was picked; three mechanical adaptations were
needed instead, each recorded in the pick's commit message:
- **#65805** conflicted only in the import block of
`DescriptorToThriftConverterTest.java` (the master hunk sits next to the
`Config` import that #66761 added). Resolved by adding only `import
org.apache.doris.thrift.DescriptorsConstants;`. Everything else is
byte-identical to the master commit.
- **#67813** conflicted only in the import block of
`CloudGlobalTransactionMgrTest.java`: the branch already has `import
org.apache.doris.rpc.RpcException;` through #67861, so that line became
context; the other ten imports were taken as-is.
- **#67813**, test-only: the master helper `mockVersionHelper()` stubs
`VersionHelper.getVersionFromMeta(request, maxAttempts)`, an overload that only
exists on master because of #66296, so `fe-core` test compilation failed
(`method getVersionFromMeta ... cannot be applied to given types`). On this
branch every read goes through the single-argument overload, so the helper now
just returns `Mockito.mockStatic(VersionHelper.class)`. No main-code hunk of
#67813 uses the `maxAttempts` overloads.
### Drift check against master
For each pick, the diff of the touched files against the master commit's
parent before the pick and against the master commit after the pick have
identical `+`/`-` lines (only the import context lines differ as described
above), i.e. each pick added exactly its master hunks. Leftover differences to
master after the picks are:
- #65805's files: `DescriptorToThriftConverterTest.java` and
`Descriptors.thrift` differ from master by exactly #66761's hunks.
- #67813's files: `OlapTable.java`, `CloudPartition.java`,
`CloudGlobalTransactionMgr.java` and `CloudGlobalTransactionMgrTest.java`.
Applying #66296 forward and #67861 in reverse in a temporary index brings the
four main files to zero diff against master `3dbe4d3ca53`; the test file's
remaining difference is the `RpcException` import overlap plus the
`mockVersionHelper()` adaptation. `CloudFEVersionSynchronizer.java` is
byte-identical to master.
### Verification
- FE: `run-fe-ut.sh --run` on this branch (regenerates thrift/protobuf,
compiles fe-core main + test) with the test classes touched by the picks plus
the two related cloud version-cache classes:
5 classes, 139 tests, 0 failures, 0 errors, BUILD SUCCESS (2:12 min) —
`PruneNestedColumnTest` 61, `DescriptorToThriftConverterTest` 21,
`CloudGlobalTransactionMgrTest` 37 (all 13 tests #67813 adds included),
`CloudPartitionTest` 3, `OlapTableTest` 17. (`VersionHelperTest` from #67813's
checklist does not exist on this branch; #66296 added it.)
- FE checkstyle on fe-core: 0 violations.
- BE: `-fsyntax-only` with the flags of the Release build
(`compile_commands.json`, regenerated `gen_cpp` headers) passes for
`storage/segment/column_reader.cpp`, `runtime/descriptors.cpp`, and with
`-DBE_TEST -fno-access-control` for
`test/storage/segment/column_reader_test.cpp` and
`test/runtime/descriptor_test.cpp`.
- The three touched groovy suites (`lambda_null_pruning`,
`left_join_not_null_column`, `null_column_pruning`) parse cleanly (groovy
parser check).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]