retrying because of overquoting.
Unfortunately in my specially created example I of course can do that, but original query hasn't any hints and without them chose the access path that led to incorrect results. I of course can give some hint(-s) to force another access path, but this is somehow very unpleasing :(
It appears that Oracle is taking your hint quite seriously.
As there is no data in idx2 due to the only value in the id2 column being null, Oracle is not returning any rows.
Take idx2 out of the hint, and you get data.