Just one more data point: drivers do allow users to execute queries in a free form.
Shat is the user might execute /*comment*/commit/*comment*/ as a free-form SQL, and they would expect that the resulting
behaviour should be exactly the same as .commit() API call (==silent rollback is converted to an exception).
That is drivers can add extra logic into .commit() API implementation, however, turning free-form SQL into exceptions
is hard to do consistently from the driver side.
It is not like "check the response from .commit() result".
It is more like "don't forget to parse user-provided SQL and verify if it is semantically equivalent to commit"
Pushing full SQL parser to the driver is not the best idea taking into the account the extensibility the core has.