Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
avatica-1.8.0
-
None
Description
Changing AvaticaDatabaseMetaData from class to interface breaks compatability. I am getting javadoc errors like the following:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.4:site (default-site) on project calcite: failed to get report for org.apache.maven.plugins:maven-javadoc-plugin: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project calcite-core: Compilation failure: Compilation failure: [ERROR] /home/jhyde/open1/calcite.3/core/src/main/java/org/apache/calcite/jdbc/CalciteJdbc41Factory.java:[259,15] no interface expected here [ERROR] /home/jhyde/open1/calcite.3/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java:[76,8] org.apache.calcite.jdbc.CalciteMetaImpl is not abstract and does not override abstract method executeBatch(org.apache.calcite.avatica.Meta.StatementHandle,java.util.List<java.util.List<org.apache.calcite.avatica.remote.TypedValue>>) in org.apache.calcite.avatica.Meta [ERROR] /home/jhyde/open1/calcite.3/core/src/main/java/org/apache/calcite/jdbc/CalciteJdbc41Factory.java:[45,8] org.apache.calcite.jdbc.CalciteJdbc41Factory is not abstract and does not override abstract method newDatabaseMetaData(org.apache.calcite.avatica.AvaticaConnection) in org.apache.calcite.avatica.AvaticaFactory [ERROR] /home/jhyde/open1/calcite.3/core/src/main/java/org/apache/calcite/jdbc/CalciteJdbc41Factory.java:[63,40] newDatabaseMetaData(org.apache.calcite.avatica.AvaticaConnection) in org.apache.calcite.jdbc.CalciteJdbc41Factory cannot implement newDatabaseMetaData(org.apache.calcite.avatica.AvaticaConnection) in org.apache.calcite.avatica.AvaticaFactory [ERROR] return type org.apache.calcite.jdbc.CalciteJdbc41Factory.CalciteJdbc41DatabaseMetaData is not compatible with org.apache.calcite.avatica.AvaticaDatabaseMetaData
This is telling us that Calcite is not compatible with the new version of Avatica. Other apps that have 'class Foo extends AvaticaDatabaseMetaData' will have the same problem.
I had reservations about making extensions to JDBC interfaces but if we are going to have interface AvaticaXxx extends DatabaseMetaData it can not be called AvaticaDatabaseMetaData – that name is already taken by a class.
Introduced by https://github.com/apache/calcite/commit/ba9783f, CALCITE-836.
Attachments
Issue Links
- breaks
-
KYLIN-1898 Upgrade to Avatica 1.8 or higher
- Closed
- is broken by
-
CALCITE-836 Provide a way for the Avatica client to query the server versions
- Closed