diff --git a/src/sql/engine/basic/ob_pushdown_filter.cpp b/src/sql/engine/basic/ob_pushdown_filter.cpp index eed940adf..e92b5c709 100644 --- a/src/sql/engine/basic/ob_pushdown_filter.cpp +++ b/src/sql/engine/basic/ob_pushdown_filter.cpp @@ -163,12 +163,18 @@ int ObPushdownFilterConstructor::is_white_mode(const ObRawExpr* raw_expr, bool & } else if (ObRawExpr::EXPR_COLUMN_REF != child->get_expr_class()) { need_check = false; } else { + const ObObjMeta &col_meta = child->get_result_meta(); for (int64_t i = 1; OB_SUCC(ret) && need_check && i < raw_expr->get_param_count(); i++) { if (OB_ISNULL(child = raw_expr->get_param_expr(i))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("Unexpected null child expr", K(ret), K(i)); } else { need_check = child->is_const_expr(); + if (need_check) { + const ObObjMeta ¶m_meta = child->get_result_meta(); + need_check = param_meta.is_null() || + (col_meta.get_type() == param_meta.get_type() && col_meta.get_collation_type() == param_meta.get_collation_type()); + } } } } diff --git a/src/storage/ob_col_map.cpp b/src/storage/ob_col_map.cpp index b9c10c412..01be938e9 100644 --- a/src/storage/ob_col_map.cpp +++ b/src/storage/ob_col_map.cpp @@ -32,7 +32,7 @@ int ObColMap::init(const int64_t col_count) STORAGE_LOG(WARN, "ObColMap init twice", K(ret)); } else if (count <= FINAL_LEVEL_MAX_COL_NUM) { if (OB_UNLIKELY(count > FIRST_LEVEL_MAX_COL_NUM)) { - if (NULL == (ptr = ob_malloc(sizeof(ColMapFinal)))) { + if (NULL == (ptr = ob_malloc(sizeof(ColMapFinal), ObModIds::OB_COL_MAP))) { ret = OB_ALLOCATE_MEMORY_FAILED; STORAGE_LOG(ERROR, "fail to allocate memory for column_ids map", K(ret)); } else {