atomic_cell: fix operator<< for atomic_cell_or_collection

operator<< used the wrong criterium for deciding whether the data is
stored as atomic_cell or collection_mutation, resulting in
catastrophical failure if it was used with frozen collections or UDTs.
Since frozen collections and UDTs are stored as atomic_cell, not
collection_mutation, the correct criterium is not is_collection(),
but is_multi_cell().

Closes #8134
This commit is contained in:
Michał Chojnowski
2021-02-22 10:26:57 +01:00
committed by Avi Kivity
parent d2378129a3
commit a24f83852e

View File

@@ -193,7 +193,7 @@ std::ostream& operator<<(std::ostream& os, const atomic_cell_or_collection::prin
return os << "{ null atomic_cell_or_collection }";
}
os << "{ ";
if (p._cdef.type->is_collection()) {
if (p._cdef.type->is_multi_cell()) {
os << "collection ";
auto cmv = p._cell.as_collection_mutation();
os << collection_mutation_view::printer(*p._cdef.type, cmv);