Is it true that "System.QueryException: non-selective query" is only ever thrown from a trigger?
If so, where is this documented and what happens when an identical query (one that throws "System.QueryException: non-selective query" from a trigger execution context) is run in a different type of execution context?
Why is the behaviour different?