code: func (p *PhysicalMergeJoin) ResolveIndices() (err error) {
  	err = p.physicalSchemaProducer.ResolveIndices()
  	if err != nil {
  		return err
  	}
  	lSchema := p.children[0].Schema()
  	rSchema := p.children[1].Schema()
  	for i, col := range p.LeftKeys {
  		newKey, err := col.ResolveIndices(lSchema)
  		if err != nil {
  			return err
  		}
  		p.LeftKeys[i] = newKey.(*expression.Column)
  	}
  	for i, col := range p.RightKeys {
  		newKey, err := col.ResolveIndices(rSchema)
  		if err != nil {
  			return err
  		}
  		p.RightKeys[i] = newKey.(*expression.Column)
  	}
  	for i, expr := range p.LeftConditions {
  		p.LeftConditions[i], err = expr.ResolveIndices(lSchema)
  		if err != nil {
  			return err
  		}
  	}
  	for i, expr := range p.RightConditions {
  		p.RightConditions[i], err = expr.ResolveIndices(rSchema)
  		if err != nil {
  			return err
  		}
  	}
  	for i, expr := range p.OtherConditions {
  		p.OtherConditions[i], err = expr.ResolveIndices(expression.MergeSchema(lSchema, rSchema))
  		if err != nil {
  			return err
  		}
  	}
  	return
  }
docs: // ResolveIndices implements Plan interface.