Daniel Barclay (Drill) created DRILL-2769:
---------------------------------------------
Summary: many(?) JDBC methods throw non-SQLException exceptions
(e.g., UnsupportedOperationException, RuntimeException)
Key: DRILL-2769
URL: https://issues.apache.org/jira/browse/DRILL-2769
Project: Apache Drill
Issue Type: Bug
Reporter: Daniel Barclay (Drill)
It seems that many JDBC methods throw exceptions of type
{{UnsupportedOperationException}} or {{RuntimeException}} to indicate that they
are not applicable (e.g., Drill's implementation of {{Connection.commit()}},
since Drill isn't transactional) or not implemented yet (and some throw other
{{RuntimeException}}s to indicate other problems ).
However, these methods should be throwing exceptions of type {{SQLException}}
(or subclasses thereof).
The JDBC pattern is to throw {{SQLException}}s, not {{RuntimeException}}s, so
JDBC client code is not likely to handle {{RuntimeException}}s well.
(For example, it is suspected that {{Connection.commit()}}'s throwing of
{{UnsupportedOperationException}} is causing a hang in the JDBC client
Spotfire.)
JDBC does provide a {{SQLFeatureNotSupportedException}}. However, it is
specified to be for when "the JDBC driver does does not support an optional
JDBC feature." It's not clear how risky it would be to use this exception when
Drill does not support a _non_-optional JDBC feature.
(Possibly, some methods that can't really do what JDBC specifies might need to
just return silently without throwing any exception.)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)