diff --git a/src/optimizer/OptimizerUtils.cpp b/src/optimizer/OptimizerUtils.cpp index 2865d55f272acefbc565cb1f628bdc8128a73609..bca8c779e2d5aead3201384cbc362398943028c2 100644 --- a/src/optimizer/OptimizerUtils.cpp +++ b/src/optimizer/OptimizerUtils.cpp @@ -441,7 +441,10 @@ Value OptimizerUtils::normalizeValue(const meta::cpp2::ColumnDef& col, const Val if (!col.type.type_length_ref().has_value()) { return Value::kNullBadType; } - auto len = static_cast<size_t>(*col.get_type().type_length_ref()); + if (!v.isStr()) { + return v; + } + auto len = static_cast<size_t>(*col.get_type().get_type_length()); if (v.getStr().size() > len) { return Value(v.getStr().substr(0, len)); } else { diff --git a/tests/tck/features/match/Base.feature b/tests/tck/features/match/Base.feature index 5c11ece8cbe6cc9f2ff91790680ad8fc03ea9a5f..1be11df3e72ed74640bf0c1e1f1b14bb44f592c2 100644 --- a/tests/tck/features/match/Base.feature +++ b/tests/tck/features/match/Base.feature @@ -66,6 +66,18 @@ Feature: Basic match | 'Ray Allen' | 43 | | 'David West' | 38 | | 'Tracy McGrady' | 39 | + When executing query: + """ + MATCH (v:player) where v.name == null RETURN v + """ + Then the result should be, in any order, with relax comparison: + | v | + When executing query: + """ + MATCH (v:player) where v.name == 3 RETURN v + """ + Then the result should be, in any order, with relax comparison: + | v | Scenario: One step When executing query: