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

Alexei Kaigorodov edited comment on IGNITE-4182 at 4/14/17 9:51 AM:
--------------------------------------------------------------------

I was wrong sayng the poor diagnostics goes from the H2 jdbc driver.
Actually, if we look deeper into "caused by" chain, we can see original H2 
message Table "B" not found:

Exception in thread "main" javax.cache.CacheException: class 
org.apache.ignite.IgniteException: Failed to parse query: select A from B
        at 
org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:806)
        at 
org.apache.ignite.examples.datagrid.CacheQueryExample.sqlQueryWithError(CacheQueryExample.java:318)
        at 
org.apache.ignite.examples.datagrid.CacheQueryExample.main(CacheQueryExample.java:112)
Caused by: class org.apache.ignite.IgniteException: Failed to parse query: 
select A from B
        at 
org.apache.ignite.internal.processors.query.GridQueryProcessor.queryTwoStep(GridQueryProcessor.java:414)
        at 
org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:794)
        ... 2 more
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to parse 
query: select A from B
        at 
org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:832)
        at 
org.apache.ignite.internal.processors.query.GridQueryProcessor.queryTwoStep(GridQueryProcessor.java:407)
        ... 3 more
Caused by: class 
org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to parse 
query: select A from B
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep(IgniteH2Indexing.java:1447)
        at 
org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:409)
        at 
org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:407)
        at 
org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
        at 
org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:809)
        ... 4 more
Caused by: org.h2.jdbc.JdbcSQLException: Таблица "B" не найдена
Table "B" not found; SQL statement:
select A from B [42102-191]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
        at org.h2.message.DbException.get(DbException.java:179)
        at org.h2.message.DbException.get(DbException.java:155)
        at org.h2.command.Parser.readTableOrView(Parser.java:5349)
        at org.h2.command.Parser.readTableFilter(Parser.java:1245)
        at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1884)
        at org.h2.command.Parser.parseSelectSimple(Parser.java:2032)
        at org.h2.command.Parser.parseSelectSub(Parser.java:1878)
        at org.h2.command.Parser.parseSelectUnion(Parser.java:1699)
        at org.h2.command.Parser.parseSelect(Parser.java:1687)
        at org.h2.command.Parser.parsePrepared(Parser.java:443)
        at org.h2.command.Parser.parse(Parser.java:315)
        at org.h2.command.Parser.parse(Parser.java:287)
        at org.h2.command.Parser.prepareCommand(Parser.java:252)
        at org.h2.engine.Session.prepareLocal(Session.java:560)
        at org.h2.engine.Session.prepareCommand(Session.java:501)
        at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1188)
        at 
org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:73)
        at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:276)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.prepareStatement(IgniteH2Indexing.java:446)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep(IgniteH2Indexing.java:1431)
        ... 8 more

Process finished with exit code 1



was (Author: rfq):
the poor diagnostics goes from the H2 jdbc driver.

> Improve error output when query parsing failed.
> -----------------------------------------------
>
>                 Key: IGNITE-4182
>                 URL: https://issues.apache.org/jira/browse/IGNITE-4182
>             Project: Ignite
>          Issue Type: Task
>    Affects Versions: 1.7
>            Reporter: Igor Sapego
>            Priority: Minor
>             Fix For: 2.1
>
>
> There is no enough information in the exception when SLQ query can not be 
> parsed. In most cases we get something like this:
> {noformat}
> Failed to execute SQL query [reqId=2, req=OdbcQueryExecuteRequest 
> [cacheName=cache, sqlQry=SELECT a FROM B, args=[]]]
> javax.cache.CacheException: class org.apache.ignite.IgniteException: Failed 
> to parse query: SELECT a FROM B
>         at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:740)
>         at 
> org.apache.ignite.internal.processors.odbc.OdbcRequestHandler.executeQuery(OdbcRequestHandler.java:193)
>         at 
> org.apache.ignite.internal.processors.odbc.OdbcRequestHandler.handle(OdbcRequestHandler.java:104)
>         at 
> org.apache.ignite.internal.processors.odbc.OdbcNioListener.onMessage(OdbcNioListener.java:124)
>         at 
> org.apache.ignite.internal.processors.odbc.OdbcNioListener.onMessage(OdbcNioListener.java:33)
>         at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:270)
>         at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:107)
>         at 
> org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:95)
>         at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>         at 
> org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: class org.apache.ignite.IgniteException: Failed to parse query: 
> SELECT a FROM B
>         at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.queryTwoStep(GridQueryProcessor.java:749)
>         at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:728)
>         ... 12 more
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to parse 
> query: SELECT a FROM B
>         at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:1695)
>         at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.queryTwoStep(GridQueryProcessor.java:742)
>         ... 13 more
> Caused by: class 
> org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
> parse query: SELECT a FROM B
>         at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep0(IgniteH2Indexing.java:1887)
>         at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep(IgniteH2Indexing.java:1793)
>         at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:744)
>         at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:742)
>         at 
> org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
>         at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:1672)
>         ... 14 more
> {noformat}
> In this particular case, for example, we do not have table "B", nor we have 
> column "a", but you can't get it from the exception.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to