Lukas Lalinsky created CALCITE-1049:
---------------------------------------

             Summary: SQLException not correctly propagated
                 Key: CALCITE-1049
                 URL: https://issues.apache.org/jira/browse/CALCITE-1049
             Project: Calcite
          Issue Type: Bug
          Components: avatica
    Affects Versions: 1.5.0
            Reporter: Lukas Lalinsky
            Assignee: Julian Hyde


When using the Phoenix (master) and it raises a SQLException, this is returned 
from the Avatica RPC server:

{code}
{
  "response":"error",
  "exceptions":[
    "java.lang.RuntimeException: ERROR 202 (22012): Divide by zero.\n"
    "\tat 
org.apache.calcite.avatica.jdbc.JdbcMeta.propagate(JdbcMeta.java:651)\n"
    "\tat 
org.apache.calcite.avatica.jdbc.JdbcMeta.prepareAndExecute(JdbcMeta.java:715)\n"
    "\tat 
org.apache.calcite.avatica.remote.LocalService.apply(LocalService.java:179)\n"
    "\tat 
org.apache.calcite.avatica.remote.Service$PrepareAndExecuteRequest.accept(Service.java:1049)\n"
    "\tat 
org.apache.calcite.avatica.remote.Service$PrepareAndExecuteRequest.accept(Service.java:1023)\n"
    "\tat 
org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:100)\n"
    "\tat 
org.apache.calcite.avatica.remote.JsonHandler.apply(JsonHandler.java:43)\n"
    "\tat 
org.apache.calcite.avatica.server.AvaticaHandler.handle(AvaticaHandler.java:68)\n"
    "\tat 
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)\n"
    "\tat 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\n"
    "\tat org.eclipse.jetty.server.Server.handle(Server.java:497)\n"
    "\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)\n"
    "\tat 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:245)\n"
    "\tat 
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\n"
    "\tat 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n"
    "\tat 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n"
    "\tat java.lang.Thread.run(Thread.java:745)\n"
  ],
  "errorMessage":"ERROR 202 (22012): Divide by zero.",
  "errorCode":-1,
  "sqlState":"00000",
  "severity":"UNKNOWN"
}
{code}

The SQLException is translated to RuntimeException and the errorCode and 
sqlState fields are set to "unknown" values, even though the codes were 
originally set in the SQLException.

I'd expect that 
https://github.com/apache/calcite/blob/calcite-1.5.0/avatica-server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java#L645
 would have a special case for SQLException and translate it to 
AvaticaRuntimeException. I'm not sure if that is the correct solution.



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

Reply via email to