fix output expr and select expr error in link scan
This commit is contained in:
		@ -5757,6 +5757,8 @@ int ObStaticEngineCG::generate_spec(ObLogLinkScan &op, ObLinkScanSpec &spec, con
 | 
			
		||||
    LOG_WARN("failed to set param infos", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(spec.set_stmt_fmt(op.get_stmt_fmt_buf(), op.get_stmt_fmt_len()))) {
 | 
			
		||||
    LOG_WARN("failed to set stmt fmt", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(spec.select_exprs_.init(op.get_select_exprs().count()))) {
 | 
			
		||||
    LOG_WARN("init fixed array failed", K(ret), K(op.get_select_exprs().count()));
 | 
			
		||||
  } else if (OB_ISNULL(op.get_plan())) {
 | 
			
		||||
    ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
    LOG_WARN("unexpected null ptr", K(ret));
 | 
			
		||||
@ -5767,6 +5769,18 @@ int ObStaticEngineCG::generate_spec(ObLogLinkScan &op, ObLinkScanSpec &spec, con
 | 
			
		||||
    spec.has_for_update_ = op.get_plan()->get_stmt()->has_for_update();
 | 
			
		||||
    spec.is_reverse_link_ = op.get_reverse_link();
 | 
			
		||||
    spec.dblink_id_ = op.get_dblink_id();
 | 
			
		||||
    for (int64_t i = 0; OB_SUCC(ret) && i < op.get_select_exprs().count(); ++i) {
 | 
			
		||||
      ObExpr *rt_expr = nullptr;
 | 
			
		||||
      const ObRawExpr* select_expr = op.get_select_exprs().at(i);
 | 
			
		||||
      if (OB_ISNULL(select_expr)) {
 | 
			
		||||
        ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
        LOG_WARN("unexpect null expr", K(ret));
 | 
			
		||||
      } else if (OB_FAIL(generate_rt_expr(*select_expr, rt_expr))) {
 | 
			
		||||
        LOG_WARN("failed to generate rt expr", K(ret));
 | 
			
		||||
      } else if (OB_FAIL(spec.select_exprs_.push_back(rt_expr))) {
 | 
			
		||||
        LOG_WARN("failed to push back expr", K(ret));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user