code: func (s constraintSolver) iterOnce(ctx sessionctx.Context, exprs *exprSet) {
  	for i := 0; i < len(exprs.data); i++ {
  		if exprs.tombstone[i] {
  			continue
  		}
  		for j := 0; j < len(exprs.data); j++ {
  			if exprs.tombstone[j] {
  				continue
  			}
  			if i == j {
  				continue
  			}
  			s.solve(ctx, i, j, exprs)
  		}
  	}
  }
docs: // iterOnce picks two expressions from the set, try to propagate new conditions from them.