You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexei Kaigorodov (JIRA)" <ji...@apache.org> on 2017/04/14 09:52:41 UTC

[jira] [Comment Edited] (IGNITE-4182) Improve error output when query parsing failed.

    [ 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)