Julian Hyde created CALCITE-1213:
------------------------------------

             Summary: Changing AvaticaDatabaseMetaData from class to interface 
breaks compatability
                 Key: CALCITE-1213
                 URL: https://issues.apache.org/jira/browse/CALCITE-1213
             Project: Calcite
          Issue Type: Bug
          Components: avatica
    Affects Versions: avatica-1.8.0
            Reporter: Julian Hyde
             Fix For: avatica-1.8.0


Changing AvaticaDatabaseMetaData from class to interface breaks compatability. 
I am getting javadoc errors like the following:

{noformat}
[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
{noformat}

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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to