fix simplify_expr bug
This commit is contained in:
		@ -2408,21 +2408,27 @@ int ObTransformSimplifyExpr::canonicalize_conditions(ObDMLStmt *stmt, bool &tran
 | 
				
			|||||||
        //simplify semi info
 | 
					        //simplify semi info
 | 
				
			||||||
        OPT_TRACE("canonicalize semi_info condition start:");
 | 
					        OPT_TRACE("canonicalize semi_info condition start:");
 | 
				
			||||||
        for (int64_t i = 0; OB_SUCC(ret) && i < stmt->get_semi_infos().count(); ++i) {
 | 
					        for (int64_t i = 0; OB_SUCC(ret) && i < stmt->get_semi_infos().count(); ++i) {
 | 
				
			||||||
 | 
					          bool is_happended = false;
 | 
				
			||||||
          if (OB_ISNULL(stmt->get_semi_infos().at(i))) {
 | 
					          if (OB_ISNULL(stmt->get_semi_infos().at(i))) {
 | 
				
			||||||
            ret = OB_ERR_UNEXPECTED;
 | 
					            ret = OB_ERR_UNEXPECTED;
 | 
				
			||||||
            LOG_WARN("unexpect null semi info", K(stmt->get_semi_infos().at(i)), K(ret));
 | 
					            LOG_WARN("unexpect null semi info", K(stmt->get_semi_infos().at(i)), K(ret));
 | 
				
			||||||
          } else if (OB_FAIL(do_canonicalize(stmt, stmt->get_semi_infos().at(i)->semi_conditions_, canonicalize_semi_info))) {
 | 
					          } else if (OB_FAIL(do_canonicalize(stmt, stmt->get_semi_infos().at(i)->semi_conditions_, is_happended))) {
 | 
				
			||||||
            LOG_WARN("canonicalize_semi_info failed", K(ret));
 | 
					            LOG_WARN("canonicalize_semi_info failed", K(ret));
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					            canonicalize_semi_info |= is_happended;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        OPT_TRACE("canonicalize join condition start:");
 | 
					        OPT_TRACE("canonicalize join condition start:");
 | 
				
			||||||
        //simplify join condition expr
 | 
					        //simplify join condition expr
 | 
				
			||||||
        for (int64_t i = 0; OB_SUCC(ret) && i < stmt->get_joined_tables().count(); i++) {
 | 
					        for (int64_t i = 0; OB_SUCC(ret) && i < stmt->get_joined_tables().count(); i++) {
 | 
				
			||||||
 | 
					          bool is_happended = false;
 | 
				
			||||||
          if (OB_ISNULL(stmt->get_joined_tables().at(i))) {
 | 
					          if (OB_ISNULL(stmt->get_joined_tables().at(i))) {
 | 
				
			||||||
            ret = OB_ERR_UNEXPECTED;
 | 
					            ret = OB_ERR_UNEXPECTED;
 | 
				
			||||||
            LOG_WARN("unexpect null joined table item", K(stmt->get_joined_tables().at(i)), K(ret));
 | 
					            LOG_WARN("unexpect null joined table item", K(stmt->get_joined_tables().at(i)), K(ret));
 | 
				
			||||||
          } else if (OB_FAIL(recursive_canonicalize_join_conditions(stmt, stmt->get_joined_tables().at(i), canonicalize_join))) {
 | 
					          } else if (OB_FAIL(recursive_canonicalize_join_conditions(stmt, stmt->get_joined_tables().at(i), is_happended))) {
 | 
				
			||||||
            LOG_WARN("canonicalize_join_condition_expr failed", K(ret));
 | 
					            LOG_WARN("canonicalize_join_condition_expr failed", K(ret));
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					            canonicalize_join |= is_happended;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user