code: func (ijHelper *indexJoinBuildHelper) buildLastColManager(nextCol *expression.Column,
  	innerPlan *DataSource, cwc *ColWithCmpFuncManager) []expression.Expression {
  	var lastColAccesses []expression.Expression
  loopOtherConds:
  	for _, filter := range ijHelper.join.OtherConditions {
  		sf, ok := filter.(*expression.ScalarFunction)
  		if !ok || !(sf.FuncName.L == ast.LE || sf.FuncName.L == ast.LT || sf.FuncName.L == ast.GE || sf.FuncName.L == ast.GT) {
  			continue
  		}
  		var funcName string
  		var anotherArg expression.Expression
  		if lCol, ok := sf.GetArgs()[0].(*expression.Column); ok && lCol.Equal(nil, nextCol) {
  			anotherArg = sf.GetArgs()[1]
  			funcName = sf.FuncName.L
  		} else if rCol, ok := sf.GetArgs()[1].(*expression.Column); ok && rCol.Equal(nil, nextCol) {
  			anotherArg = sf.GetArgs()[0]
  			// The column manager always build expression in the form of col op arg1.
  			// So we need use the symmetric one of the current function.
  			funcName = symmetricOp[sf.FuncName.L]
  		} else {
  			continue
  		}
  		affectedCols := expression.ExtractColumns(anotherArg)
  		if len(affectedCols) == 0 {
  			continue
  		}
  		for _, col := range affectedCols {
  			if innerPlan.schema.Contains(col) {
  				continue loopOtherConds
  			}
  		}
  		lastColAccesses = append(lastColAccesses, sf)
  		cwc.appendNewExpr(funcName, anotherArg, affectedCols)
  	}
  	return lastColAccesses
  }
docs: // buildLastColManager analyze the `OtherConditions` of join to see whether there're some filters can be used in manager.
  // The returned value is just for outputting explain information