[ 
https://issues.apache.org/jira/browse/CALCITE-1213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15257189#comment-15257189
 ] 

Julian Hyde commented on CALCITE-1213:
--------------------------------------

That did the trick. My regression test now succeeds.

It's worth running Calcite suite against the latest Avatica snapshot from time 
to time, to check compatibility. And definitely as a prerequisite for an 
Avatica release.

> Changing AvaticaDatabaseMetaData from class to interface breaks compatibility
> -----------------------------------------------------------------------------
>
>                 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
>            Assignee: Josh Elser
>             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