@@ -252,42 +252,44 @@ Status convert(const vectorized::DataTypePtr& data_type, const std::list<std::st
252252 v.size = sizeof (tmp); \
253253 switch (res.condition_op ) { \
254254 case PredicateType::EQ: \
255- predicate = \
256- create_comparison_predicate0<PredicateType::EQ>(index, type, v, true , arena); \
255+ predicate = create_comparison_predicate0<PredicateType::EQ>(index, col_name, type, v, \
256+ true , arena); \
257257 return Status::OK (); \
258258 case PredicateType::NE: \
259- predicate = \
260- create_comparison_predicate0<PredicateType::NE>(index, type, v, true , arena); \
259+ predicate = create_comparison_predicate0<PredicateType::NE>(index, col_name, type, v, \
260+ true , arena); \
261261 return Status::OK (); \
262262 case PredicateType::GT: \
263- predicate = \
264- create_comparison_predicate0<PredicateType::GT>(index, type, v, true , arena); \
263+ predicate = create_comparison_predicate0<PredicateType::GT>(index, col_name, type, v, \
264+ true , arena); \
265265 return Status::OK (); \
266266 case PredicateType::GE: \
267- predicate = \
268- create_comparison_predicate0<PredicateType::GE>(index, type, v, true , arena); \
267+ predicate = create_comparison_predicate0<PredicateType::GE>(index, col_name, type, v, \
268+ true , arena); \
269269 return Status::OK (); \
270270 case PredicateType::LT: \
271- predicate = \
272- create_comparison_predicate0<PredicateType::LT>(index, type, v, true , arena); \
271+ predicate = create_comparison_predicate0<PredicateType::LT>(index, col_name, type, v, \
272+ true , arena); \
273273 return Status::OK (); \
274274 case PredicateType::LE: \
275- predicate = \
276- create_comparison_predicate0<PredicateType::LE>(index, type, v, true , arena); \
275+ predicate = create_comparison_predicate0<PredicateType::LE>(index, col_name, type, v, \
276+ true , arena); \
277277 return Status::OK (); \
278278 default : \
279279 return Status::Error<ErrorCode::INVALID_ARGUMENT>( \
280280 " invalid condition operator. operator={}" , type_to_op_str (res.condition_op )); \
281281 } \
282282 }
283- Status parse_to_predicate (const uint32_t index, const vectorized::DataTypePtr& type,
283+ Status parse_to_predicate (const uint32_t index, const std::string col_name,
284+ const vectorized::DataTypePtr& type,
284285 DeleteHandler::ConditionParseResult& res, vectorized::Arena& arena,
285286 std::shared_ptr<ColumnPredicate>& predicate) {
286287 DCHECK_EQ (res.value_str .size (), 1 );
287288 if (res.condition_op == PredicateType::IS_NULL ||
288289 res.condition_op == PredicateType::IS_NOT_NULL) {
289- predicate = NullPredicate::create_shared (
290- index, res.condition_op == PredicateType::IS_NOT_NULL, type->get_primitive_type ());
290+ predicate = NullPredicate::create_shared (index, col_name,
291+ res.condition_op == PredicateType::IS_NOT_NULL,
292+ type->get_primitive_type ());
291293 return Status::OK ();
292294 }
293295 StringRef v;
@@ -318,28 +320,28 @@ Status parse_to_predicate(const uint32_t index, const vectorized::DataTypePtr& t
318320 RETURN_IF_ERROR (convert<TYPE_STRING>(type, res.value_str .front (), arena, v));
319321 switch (res.condition_op ) {
320322 case PredicateType::EQ:
321- predicate =
322- create_comparison_predicate0<PredicateType::EQ>(index, type, v, true , arena);
323+ predicate = create_comparison_predicate0<PredicateType::EQ>(index, col_name, type, v,
324+ true , arena);
323325 return Status::OK ();
324326 case PredicateType::NE:
325- predicate =
326- create_comparison_predicate0<PredicateType::NE>(index, type, v, true , arena);
327+ predicate = create_comparison_predicate0<PredicateType::NE>(index, col_name, type, v,
328+ true , arena);
327329 return Status::OK ();
328330 case PredicateType::GT:
329- predicate =
330- create_comparison_predicate0<PredicateType::GT>(index, type, v, true , arena);
331+ predicate = create_comparison_predicate0<PredicateType::GT>(index, col_name, type, v,
332+ true , arena);
331333 return Status::OK ();
332334 case PredicateType::GE:
333- predicate =
334- create_comparison_predicate0<PredicateType::GE>(index, type, v, true , arena);
335+ predicate = create_comparison_predicate0<PredicateType::GE>(index, col_name, type, v,
336+ true , arena);
335337 return Status::OK ();
336338 case PredicateType::LT:
337- predicate =
338- create_comparison_predicate0<PredicateType::LT>(index, type, v, true , arena);
339+ predicate = create_comparison_predicate0<PredicateType::LT>(index, col_name, type, v,
340+ true , arena);
339341 return Status::OK ();
340342 case PredicateType::LE:
341- predicate =
342- create_comparison_predicate0<PredicateType::LE>(index, type, v, true , arena);
343+ predicate = create_comparison_predicate0<PredicateType::LE>(index, col_name, type, v,
344+ true , arena);
343345 return Status::OK ();
344346 default :
345347 return Status::Error<ErrorCode::INVALID_ARGUMENT>(
@@ -356,21 +358,24 @@ Status parse_to_predicate(const uint32_t index, const vectorized::DataTypePtr& t
356358#undef CONVERT_CASE
357359}
358360
359- Status parse_to_in_predicate (const uint32_t index, const vectorized::DataTypePtr& type,
361+ Status parse_to_in_predicate (const uint32_t index, const std::string& col_name,
362+ const vectorized::DataTypePtr& type,
360363 DeleteHandler::ConditionParseResult& res, vectorized::Arena& arena,
361364 std::shared_ptr<ColumnPredicate>& predicate) {
362365 DCHECK_GT (res.value_str .size (), 1 );
363366 switch (res.condition_op ) {
364367 case PredicateType::IN_LIST: {
365368 std::shared_ptr<HybridSetBase> set;
366369 RETURN_IF_ERROR (convert (type, res.value_str , arena, set));
367- predicate = create_in_list_predicate<PredicateType::IN_LIST>(index, type, set, true );
370+ predicate =
371+ create_in_list_predicate<PredicateType::IN_LIST>(index, col_name, type, set, true );
368372 break ;
369373 }
370374 case PredicateType::NOT_IN_LIST: {
371375 std::shared_ptr<HybridSetBase> set;
372376 RETURN_IF_ERROR (convert (type, res.value_str , arena, set));
373- predicate = create_in_list_predicate<PredicateType::NOT_IN_LIST>(index, type, set, true );
377+ predicate = create_in_list_predicate<PredicateType::NOT_IN_LIST>(index, col_name, type, set,
378+ true );
374379 break ;
375380 }
376381 default :
@@ -741,7 +746,7 @@ Status DeleteHandler::_parse_column_pred(TabletSchemaSPtr complete_schema,
741746 const auto & column = complete_schema->column_by_uid (col_unique_id);
742747 uint32_t index = complete_schema->field_index (col_unique_id);
743748 std::shared_ptr<ColumnPredicate> predicate;
744- RETURN_IF_ERROR (parse_to_predicate (index, column.get_vec_type (), condition,
749+ RETURN_IF_ERROR (parse_to_predicate (index, column.name (), column. get_vec_type (), condition,
745750 _predicate_arena, predicate));
746751 if (predicate != nullptr ) {
747752 delete_conditions->column_predicate_vec .push_back (predicate);
@@ -800,8 +805,8 @@ Status DeleteHandler::init(TabletSchemaSPtr tablet_schema,
800805 const auto & column = tablet_schema->column_by_uid (col_unique_id);
801806 uint32_t index = tablet_schema->field_index (col_unique_id);
802807 std::shared_ptr<ColumnPredicate> predicate;
803- RETURN_IF_ERROR (parse_to_in_predicate (index, column.get_vec_type (), condition ,
804- _predicate_arena, predicate));
808+ RETURN_IF_ERROR (parse_to_in_predicate (index, column.name (), column. get_vec_type () ,
809+ condition, _predicate_arena, predicate));
805810 temp.column_predicate_vec .push_back (predicate);
806811 }
807812
0 commit comments