This change appears to be based on the assumption that each row from a NestLoopIndex Join's first child scan will produce one or more output rows. That is only safe under certain conditions, and there is only ONE such condition that I can think of that would be easy to validate, here. 

In any case, if there is a projection, it would still make sense to enforce the limit before applying the projection to reduce the size of the projection temp table. Ideally even this case would be implemented as an inline limit, but that would require extending the EE.

Also, does the ability to push a limit down through a join like this depend at all on whether it has a sort direction?