code: func (ijHelper *indexJoinBuildHelper) findUsefulEqAndInFilters(innerPlan *DataSource) (usefulEqOrInFilters, uselessFilters, remainingRangeCandidates []expression.Expression) {
  	uselessFilters = make([]expression.Expression, 0, len(innerPlan.pushedDownConds))
  	var remainedEqOrIn []expression.Expression
  	// Extract the eq/in functions of possible join key.
  	// you can see the comment of ExtractEqAndInCondition to get the meaning of the second return value.
  	usefulEqOrInFilters, remainedEqOrIn, remainingRangeCandidates, _ = ranger.ExtractEqAndInCondition(
  		innerPlan.ctx, innerPlan.pushedDownConds,
  		ijHelper.curNotUsedIndexCols,
  		ijHelper.curNotUsedColLens,
  	)
  	uselessFilters = append(uselessFilters, remainedEqOrIn...)
  	return usefulEqOrInFilters, uselessFilters, remainingRangeCandidates
  }
docs: // findUsefulEqAndInFilters analyzes the pushedDownConds held by inner child and split them to three parts.
  // usefulEqOrInFilters is the continuous eq/in conditions on current unused index columns.
  // uselessFilters is the conditions which cannot be used for building ranges.
  // remainingRangeCandidates is the other conditions for future use.