github-actions[bot] commented on code in PR #69949:
URL: https://github.com/apache/doris/pull/69949#discussion_r4444976891
##########
be/src/core/column/column_map.cpp:
##########
@@ -741,12 +741,6 @@ bool ColumnMap::has_enough_capacity(const IColumn& src)
const {
offsets_column->has_enough_capacity(*src_concrete.offsets_column);
}
-ColumnPtr ColumnMap::convert_to_full_column_if_const() const {
Review Comment:
[P1] Detach sink Maps before removing their wrapper isolation
Removing this override makes ordinary conversion retain the same Map parent,
but `OlapTableBlockConvertor::_validate_data()` still calls it before TYPE_MAP
validation replaces key/value pointers during non-strict VARCHAR truncation
(`vtablet_block_convertor.cpp:517`). For a non-null source `m
MAP<INT,VARCHAR(10)>` containing `{1:'abcdef'}`, insert `SELECT k,m,m` into
non-null `MAP<INT,VARCHAR(3)>` and `MAP<INT,VARCHAR(10)>` outputs with
`enable_insert_strict=false`. Both outputs can retain one parent: BE
`DataTypeString::equals()` ignores length, making the FE-inserted Map cast an
identity cast, and projection/sink output preserves shared pointers. Validating
the narrow slot installs a replacement values child containing `'abc'` on that
parent, so the wider slot also stores `'abc'` instead of `'abcdef'`. The
deleted implementation gave each slot a separate parent and isolated this
replacement. Detach the owned Map at the mutating sink boundary and cover this
shared-input narrow/wi
de case in the same change.
--
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]