Thanks for working on this issue. However, there are a few process problems with: a) It is customary not to RTBC your issue however as others reviewed it and it's quite simple, that's fine b) in order to make sure we do not regress bugs are first fixed in Drupal 8. That's more of a problem. A c) would be to add tests but I am not too keen on demanding a test for every isset() in core.

This is really due to the #conjunction key in the return array of $query->conditions() being a string, not because field is not set.

It would be nice if Drupal\Core\Database\Query\Condition implemented the Iterator interface, that way we could iterate over this cleanly and provide another method to access #conjunction. That would also allow us to get rid of the return-by-reference.

Eh, silly PHP... I wish we could have gone with the original patch here, since isset() is more self-documenting, but PHP can return TRUE for that even when it's a string, so yeah, I think the newer one works better.