Types in be/src/core/custom_allocator.h exist to route owned memory through Doris allocation and tracking paths.
DorisVector, DorisMap, DorisUniqueBufferPtr, and related allocator-aware wrappers instead of the corresponding standard library ownership typesVectorized columns (IColumn) use intrusive-reference-counted copy-on-write.
mutate() on hot paths? Shared ownership triggers deep copyassume_mutable_ref() used only when exclusive ownership is already guaranteed?Block::mutate_columns(), columns put back with set_columns()?convert_to_full_column_if_const() materializes only ColumnConst; ordinary columns may return shared storage?be_exec_version where required?DecimalV2 original_precision/original_scale set intentionally, not left as UINT32_MAX sentinel?TScalarType optional fields filled for DECIMAL, CHAR/VARCHAR, DATETIMEV2?TTypeDesc.types traversal correct for nested complex types?MutableBlock::merge_impl() assumes nullable promotion shape without dynamic checking in release builds.