Fix hint material related cases
This commit is contained in:
		@ -636,8 +636,16 @@ int ObStaticEngineCG::check_vectorize_supported(bool &support,
 | 
			
		||||
        // dependency and breaks rownum's defination.
 | 
			
		||||
        //
 | 
			
		||||
        ObLogicalOperator *rownum_op = NULL;
 | 
			
		||||
        if (OB_SUCC(ret) && OB_SUCC(op->find_rownum_expr(op->get_op_id(), rownum_op))
 | 
			
		||||
            && rownum_op != NULL && rownum_op != op) {
 | 
			
		||||
         for (int64_t i = 0; rownum_op == NULL && OB_SUCC(ret) && i < op->get_num_of_child(); i++) {
 | 
			
		||||
          ObLogicalOperator *child = op->get_child(i);
 | 
			
		||||
          if (OB_ISNULL(child)) {
 | 
			
		||||
            ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
            LOG_WARN("op child is null", K(ret));
 | 
			
		||||
          } else if (OB_FAIL(child->find_rownum_expr(op->get_op_id(), rownum_op))) {
 | 
			
		||||
            LOG_WARN("find rownum expr error", K(ret));
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        if (NULL != rownum_op) {
 | 
			
		||||
          LOG_DEBUG("rownum expr is in count operator's subplan tree. Stop vectorization exec");
 | 
			
		||||
          disable_vectorize = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -3165,12 +3165,18 @@ int ObLogicalOperator::alloc_op_post(AllocOpContext& ctx)
 | 
			
		||||
      if (ObAllocOpHint::OB_ALL == alloc_op_hints.at(i).alloc_level_ &&
 | 
			
		||||
          OB_FAIL(alloc_nodes_above(ctx, alloc_op_hints.at(i).flags_))) {
 | 
			
		||||
        LOG_WARN("fail to alloc op at all level", K(ret));
 | 
			
		||||
      } else if (ObAllocOpHint::OB_DFO == alloc_op_hints.at(i).alloc_level_ &&
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    for (int64_t i = 0; OB_SUCC(ret) && i < alloc_op_hints.count(); ++i) {
 | 
			
		||||
      if (ObAllocOpHint::OB_DFO == alloc_op_hints.at(i).alloc_level_ &&
 | 
			
		||||
          (log_op_def::LOG_EXCHANGE == type_ &&
 | 
			
		||||
          static_cast<ObLogExchange*>(this)->is_consumer()) &&
 | 
			
		||||
          OB_FAIL(alloc_nodes_above(ctx, alloc_op_hints.at(i).flags_))) {
 | 
			
		||||
        LOG_WARN("fail to alloc op at dfo level", K(ret));
 | 
			
		||||
      } else if (ObAllocOpHint::OB_ENUMERATE == alloc_op_hints.at(i).alloc_level_ &&
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    for (int64_t i = 0; OB_SUCC(ret) && i < alloc_op_hints.count(); ++i) {
 | 
			
		||||
      if (ObAllocOpHint::OB_ENUMERATE == alloc_op_hints.at(i).alloc_level_ &&
 | 
			
		||||
          alloc_op_hints.at(i).id_ == op_id_ &&
 | 
			
		||||
          OB_FAIL(alloc_nodes_above(ctx, alloc_op_hints.at(i).flags_))) {
 | 
			
		||||
        LOG_WARN("fail to alloc op at enumerate level", K(ret));
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user