github-actions[bot] commented on code in PR #66413:
URL: https://github.com/apache/doris/pull/66413#discussion_r3712067485
##########
fe/fe-core/src/main/java/org/apache/doris/planner/PluginDrivenTableSink.java:
##########
@@ -178,6 +194,13 @@ public String getExplainString(String prefix,
TExplainLevel explainLevel) {
@Override
public void bindDataSink(Optional<InsertCommandContext> insertCtx)
throws AnalysisException {
+ if (writeOperation == WriteOperation.MERGE && !writesDataFiles
+ && Config.be_exec_version <
SUPPORT_ICEBERG_VARIANT_EXEC_VERSION) {
Review Comment:
[P1] Keep non-Variant delete-only MERGE available during rolling upgrades
`writesDataFiles` is false for every delete-only MERGE, so this rejects even
tables whose schema has no Variant whenever `be_exec_version` is 11. Those
queries were supported before this change: an old BE opens the table writer,
but with no insert rows it creates no partition writers or data files; only a
Variant schema makes the old parser fail. The matching BE check is equally
schema-blind, and the new test uses an empty/non-Variant column list, so it
pins this regression instead of the intended Variant-only fence. Please apply
the version fence only when the omitted writer schema contains Variant, and
retain coverage that ordinary delete-only MERGE remains allowed at version 11.
##########
be/src/core/column/variant_v2/column_variant_v2.cpp:
##########
@@ -808,6 +911,21 @@ void ColumnVariantV2::insert_indices_from( //
NOLINT(readability-function-size)
return;
}
+ if (_shredded) {
Review Comment:
[P1] Do not buffer incomplete Variant states across the exchange
The first indexed selection into an empty destination adopts
`source._shredded`, but the next batch reaches this branch and calls
`ensure_encoded()`; a leaf-only Parquet projection cannot materialize and
throws. This is reachable when `v['n']` is projected above a partitioned hash
join: nested pruning sends the raw partial `v` through the child shuffle, where
one channel buffers selections from consecutive scan blocks. Adding the
`insert_range_from()`-style `try_append()` only fixes identical schemas:
Parquet permits different files to shred the same path with incompatible types,
while `try_append()` requires exact schema equality and the incomplete fallback
still cannot encode. Please consume the leaf into a common logical
representation before exchange, or use an accumulator that preserves
heterogeneous partial states; cover both two same-schema blocks and two files
with conflicting shredded leaf types.
--
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]