code: func getNewJoinKeysByOffsets(oldJoinKeys []*expression.Column, offsets []int) []*expression.Column {
  	newKeys := make([]*expression.Column, 0, len(oldJoinKeys))
  	for _, offset := range offsets {
  		newKeys = append(newKeys, oldJoinKeys[offset])
  	}
  	for pos, key := range oldJoinKeys {
  		isExist := false
  		for _, p := range offsets {
  			if p == pos {
  				isExist = true
  				break
  			}
  		}
  		if !isExist {
  			newKeys = append(newKeys, key)
  		}
  	}
  	return newKeys
  }
docs: // Change JoinKeys order, by offsets array
  // offsets array is generate by prop check