code: func (s *propConstSolver) pickNewEQConds(visited []bool) (retMapper map[int]*Constant) {
  	retMapper = make(map[int]*Constant)
  	for i, cond := range s.conditions {
  		if visited[i] {
  			continue
  		}
  		col, con := validEqualCond(cond)
  		// Then we check if this CNF item is a false constant. If so, we will set the whole condition to false.
  		var ok bool
  		if col == nil {
  			if con, ok = cond.(*Constant); ok {
  				value, _, err := EvalBool(s.ctx, []Expression{con}, chunk.Row{})
  				if err != nil {
  					terror.Log(err)
  					return nil
  				}
  				if !value {
  					s.setConds2ConstFalse()
  					return nil
  				}
  			}
  			continue
  		}
  		visited[i] = true
  		updated, foreverFalse := s.tryToUpdateEQList(col, con)
  		if foreverFalse {
  			s.setConds2ConstFalse()
  			return nil
  		}
  		if updated {
  			retMapper[s.getColID(col)] = con
  		}
  	}
  	return
  }
docs: // pickNewEQConds tries to pick new equal conds and puts them to retMapper.