code: func (b *planBuilder) buildInnerApply(outerPlan, innerPlan LogicalPlan) LogicalPlan {
  	join := &Join{
  		JoinType:        InnerJoin,
  		baseLogicalPlan: newBaseLogicalPlan(Jn, b.allocator),
  	}
  	ap := &Apply{Join: *join}
  	ap.initIDAndContext(b.ctx)
  	ap.self = ap
  	addChild(ap, outerPlan)
  	addChild(ap, innerPlan)
  	ap.SetSchema(expression.MergeSchema(outerPlan.GetSchema(), innerPlan.GetSchema()))
  	for i := outerPlan.GetSchema().Len(); i < ap.GetSchema().Len(); i++ {
  		ap.schema.Columns[i].IsAggOrSubq = true
  	}
  	ap.SetCorrelated()
  	return ap
  }
docs: // buildInnerApply builds apply plan with outerPlan and innerPlan, which apply inner-join for every row from outerPlan and the whole innerPlan.