morningman opened a new pull request, #68151:
URL: https://github.com/apache/doris/pull/68151

   Cherry-picked from #67783, #68034, #68033, #68057, #68094, #68087
   
   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, #68017 and #68073.
   
   | # | Master commit | PR | Title |
   |---|---|---|---|
   | 1 | e545b13e089 | #67783 | [fix](policy) Enforce row policies on MOW time 
travel |
   | 2 | f7a0842f968 | #68034 | [fix](binlog) Fix missing DELETE events in row 
binlog |
   | 3 | e85575e3ad6 | #68033 | [fix](binlog) Preserve row binlog compaction 
policy |
   | 4 | 21160d78b42 | #68057 | [fix](binlog) Decouple row binlog compaction 
from CCR binlog config |
   | 5 | 04aa5a11584 | #68094 | [fix](binlog) Persist row binlog config updates 
in cloud mode |
   | 6 | da8feed859d | #68087 | [fix](binlog) Report streams with missing base 
tables as stale |
   
   Not included on purpose:
   - The 20 labelled PRs that already carry `incremental-computation-picked` 
(#62606 in the fork point, #67508 via #67712, the nine of #67830, the six of 
#68017, the two of #68073, and #68050 whose content this branch got directly 
through #68012).
   - #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
   
   For every pick I listed the master commits between the fork point 
(`efedf10c7e3`) and the pick that touch the same files and are not on this 
branch, and checked whether the pick's behavior depends on them.
   
   - **#67783** declares no related PR. It builds on the MOW time-travel 
rewrite (`BindRelation.buildMowTimeTravelUnion`, #67480) which is already here. 
Two unlabelled master commits overlap: #66770 (authorization plugin SPI: 
reworks the data-mask / row-filter API of `LogicalCheckPolicy` and its test) 
and #67811 (removes the `isPlayNereidsDump()` check in `CheckPolicy`). Neither 
is a functional prerequisite: the fix consists of `getPolicyTable()` unwrapping 
`OlapTableWrapper`, `CheckPolicy` collecting the whole filter chain below the 
policy mask, and `BindRelation` putting a `LogicalCheckPolicy` above each union 
branch — none of that uses the #66770 API. Not picked; adapted instead (see 
below).
   - **#68034**, **#68033**, **#68087** (#68087 relates to #67173, which is 
before the fork point): no unpicked master commit touches any of their files; 
the picks applied cleanly and are byte-identical to master.
   - **#68057**: only `be/test/cloud/cloud_compaction_test.cpp` overlaps with 
the unrelated #67972 (refresh tablet meta of continuously ingested tablets); 
auto-merged, the pick only adds new `TEST_F` blocks. Main-code hunks are 
byte-identical to master.
   - **#68094**: overlaps with #68090 / #67972 / #66598 (`cloud_tablet.cpp`), 
#67295 / #67618 / #68090 (`base_tablet.{h,cpp}`), #66598 / #67637 
(`meta_service.cpp`), #66598 (`cloud.proto`, `cloud_tablet_test.cpp`) and 
#67761 / #66598 / #67637 (`meta_service_test.cpp`). All auto-merged. The fix — 
`BaseTablet::binlog_config()` under the meta lock, `BinlogConfig::operator==`, 
`CloudTablet::sync_meta()` refreshing the binlog config, `update_tablet` in the 
meta service accepting `binlog_config`, and `CloudSchemaChangeHandler` routing 
ROW-binlog property updates through it — does not use anything those commits 
add. Its hunks are byte-identical to master except one trailing context line in 
`sync_meta()` (`last_sync_tablet_meta_time_s` comes from #67972).
   
   Only #67783 needed adaptation, recorded in its commit message:
   - `LogicalCheckPolicy.java`: the conflicting context was master's 
`parsePolicyExpression()` helper (#66770), which does not exist here; the new 
`getPolicyTable()` is inserted in the same place without it.
   - `CheckRowPolicyTest.java`: the data-mask mock is written against this 
branch's per-column `AccessControllerManager.evalDataMaskPolicy(..., column) -> 
Optional<DataMaskPolicy>` instead of master's `evalDataMaskPolicies(..., 
Set<String>) -> Map<String, DataMaskSpec>`. The masks are the same (concat for 
the random-distribution table; the non-movable `k2` mask plus identity masks 
for the hidden reconstruction columns of the MOW table). The master-only `Or` 
import (#66770) is not carried; `Collections` / `Locale` imports were added 
because they arrive with #66770 on master.
   
   ### Drift check against master
   
   Each pick's `+`/`-` lines are identical to the master commit's, except for 
the #67783 adaptation above. After the six picks, the touched files still 
differ from master at `da8feed859d` in: `cloud_tablet.cpp`, 
`base_tablet.{h,cpp}`, `cloud_compaction_test.cpp`, `cloud_tablet_test.cpp`, 
`meta_service.cpp`, `meta_service_test.cpp`, `cloud.proto`, `CheckPolicy.java`, 
`LogicalCheckPolicy.java`, `CheckRowPolicyTest.java`. Replaying the nine 
unpicked master commits listed above (#67637, #67618, #66770, #66598, #67972, 
#67811, #67761, #67295, #68090) in a temporary index and removing this branch's 
own #67861 (`GetTsoRecoveryTransactions` in `cloud.proto` / 
`meta_service_test.cpp`) brings every file to zero diff against master, except 
the two `LogicalCheckPolicy.java` / `CheckRowPolicyTest.java` hunks of #66770 
that overlap the adaptation. Nothing else is left over.
   
   ### 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 
`DeleteFromCommandTest` from #68034's checklist: 5 classes, 58 tests, 0 
failures, 0 errors, BUILD SUCCESS — `CheckRowPolicyTest` 9 (the three tests 
#67783 adds included), `ExplainTableStreamPlanTest` 24, 
`CloudSchemaChangeHandlerTest` 18 (the tests of #68033 and #68094 included), 
`DropTableStreamTest` 5, `DeleteFromCommandTest` 2.
   - FE checkstyle on fe-core: 0 violations.
   - BE: `-fsyntax-only` with the flags of the Release build 
(`compile_commands.json`, regenerated `gen_cpp` headers incl. the new 
`TabletMetaInfoPB.binlog_config`) passes for `cloud/cloud_tablet.cpp`, 
`cloud/cloud_storage_engine.cpp`, `storage/olap_server.cpp`, 
`storage/tablet/tablet.cpp`, `storage/tablet/base_tablet.cpp`, and with 
`-DBE_TEST -fno-access-control` for `test/cloud/cloud_compaction_test.cpp`, 
`test/cloud/cloud_tablet_test.cpp`, 
`test/storage/compaction/compaction_task_test.cpp`, 
`test/storage/tablet/tablet_test.cpp`.
   - Meta service: the two-line `update_tablet` hunk of #68094 only uses the 
generated `TabletMetaInfoPB::has_binlog_config()/binlog_config()` and 
`TabletMetaCloudPB::mutable_binlog_config()` accessors, all present in the 
regenerated headers.
   - The two new groovy suites 
(`row_binlog_p0/test_row_binlog_mow_light_delete`, 
`time_travel_p0/test_mow_time_travel_row_policy`) parse cleanly (groovy parser 
check).
   


-- 
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]

Reply via email to