diff --git a/be/src/vec/exprs/vliteral.cpp b/be/src/vec/exprs/vliteral.cpp index 673c8237b1..c1dc68b545 100644 --- a/be/src/vec/exprs/vliteral.cpp +++ b/be/src/vec/exprs/vliteral.cpp @@ -144,53 +144,57 @@ std::string VLiteral::debug_string() const { out << ", value = "; if (_column_ptr.get()->size() > 0) { StringRef ref = _column_ptr.get()->get_data_at(0); - switch (_type.type) { - case TYPE_BOOLEAN: - case TYPE_TINYINT: - case TYPE_SMALLINT: - case TYPE_INT: { - out << *(reinterpret_cast(ref.data)); - break; - } - case TYPE_BIGINT: { - out << *(reinterpret_cast(ref.data)); - break; - } - case TYPE_LARGEINT: { - out << fmt::format("{}", *(reinterpret_cast(ref.data))); - break; - } - case TYPE_FLOAT: { - out << *(reinterpret_cast(ref.data)); - break; - } - case TYPE_TIME: - case TYPE_DOUBLE: { - out << *(reinterpret_cast(ref.data)); - break; - } - case TYPE_DATE: - case TYPE_DATETIME: { - auto value = *(reinterpret_cast(ref.data)); - auto date_value = (VecDateTimeValue*)&value; - out << date_value; - break; - } - case TYPE_STRING: - case TYPE_CHAR: - case TYPE_VARCHAR: { - out << ref; - break; - } - case TYPE_DECIMALV2: { - DecimalV2Value value(*(reinterpret_cast(ref.data))); - out << value; - break; - } - default: { - out << "UNKNOWN TYPE: " << int(_type.type); - break; - } + if (ref.data == nullptr) { + out << "null"; + } else { + switch (_type.type) { + case TYPE_BOOLEAN: + case TYPE_TINYINT: + case TYPE_SMALLINT: + case TYPE_INT: { + out << *(reinterpret_cast(ref.data)); + break; + } + case TYPE_BIGINT: { + out << *(reinterpret_cast(ref.data)); + break; + } + case TYPE_LARGEINT: { + out << fmt::format("{}", *(reinterpret_cast(ref.data))); + break; + } + case TYPE_FLOAT: { + out << *(reinterpret_cast(ref.data)); + break; + } + case TYPE_TIME: + case TYPE_DOUBLE: { + out << *(reinterpret_cast(ref.data)); + break; + } + case TYPE_DATE: + case TYPE_DATETIME: { + auto value = *(reinterpret_cast(ref.data)); + auto date_value = (VecDateTimeValue*)&value; + out << date_value; + break; + } + case TYPE_STRING: + case TYPE_CHAR: + case TYPE_VARCHAR: { + out << ref; + break; + } + case TYPE_DECIMALV2: { + DecimalV2Value value(*(reinterpret_cast(ref.data))); + out << value; + break; + } + default: { + out << "UNKNOWN TYPE: " << int(_type.type); + break; + } + } } } out << ")";