The reason is that the SQL parser really only supports enough of SQL to translate SQL queries to native CQEngine queries.
The thing missing in the parser is an understanding of SQL's order of precedence of evaluation.
For example:
SELECT * FROM a WHERE b = 1 OR c = 2 AND d = 3
In SQL, by default that AND statement should be evaluated before the OR statement, like:
SELECT * FROM a WHERE (b = 1 OR (c = 2 AND d = 3))
However, SQL does allow to use parentheses to request a specific or different order of evaluation:
SELECT * FROM a WHERE ((b = 1 OR c = 2) AND d = 3)
The SQL parser is currently quite strict about parentheses because I didn't want to spend time implementing all of the rules about how to infer the correct order of evaluation when parentheses are not supplied.
In CQEngine native queries, there is no order of precedence to worry about because queries are always nested appropriately. So my goal was to translate queries to the native format with minimal additional processing.
I might consider extending the SQL support to be a bit less strict about this in future, but I'd probably look for someone to help with that rather than tackle it myself. Hint, hint :)