Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-2769

many(?) JDBC methods throw non-SQLException exceptions (e.g., UnsupportedOperationException, RuntimeException)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.4.0
    • None
    • None

    Description

      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.)

      Attachments

        Issue Links

          Activity

            People

              dsbos Daniel Barclay
              dsbos Daniel Barclay
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: