Skip to content
Advertisement

Ignite: Failed to run reduce query locally

Ignite version:2.7.0

Here are the expressions I use:

SELECT
    CASE WHEN YEAR(A1) = 2016 THEN SUM(A2) END 
FROM 
    table1

I got such a mistake:

org.jkiss.dbeaver.model.sql.DBSQLException: SQL 错误 [1] [50000]: javax.cache.CacheException: Failed to run reduce query locally.
    at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:134)
    at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:467)
    at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:407)
    at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:146)
    at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:405)
    at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:849)
    at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:2776)
    at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:98)
    at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:146)
    at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:96)
    at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$17.run(ResultSetViewer.java:3271)
    at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:102)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.sql.SQLException: javax.cache.CacheException: Failed to run reduce query locally.
    at org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:750)
    at org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute0(JdbcThinStatement.java:212)
    at org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute(JdbcThinStatement.java:475)
    at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:338)
    at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:131)
    ... 12 more

I tried the same SQL in other databases, such as MySQL, and it worked.

In Oracle, I must add A1 in GROUP BY clause.

Then, I tried to add GROUP BY clause to SQL.Oracle can execute, but Ignite still returns the same error.

Actually, I don’t know what the mistake is.

Advertisement

Answer

It doesn’t seem to like the SUM inside the CASE statement. This works, though:

select sum(case when a1 = 2016 then a2 end) from table1;

I’m not familiar with the SQL spec so I’m not sure whether this is a bug, though clearly it could do with better error messages.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement