trino
trino copied to clipboard
SQL Error: Query failed: inputPositions is negative
I encountered an error while executing a SQL query in Trino. The error message is as follows:
java.sql.SQLException: Query failed (#20240430_083808_16183_r9uem): inputPositions is negative at io.trino.jdbc.AbstractTrinoResultSet.resultsException(AbstractTrinoResultSet.java:1937) at io.trino.jdbc.TrinoResultSet.getColumns(TrinoResultSet.java:319) at io.trino.jdbc.TrinoResultSet.create(TrinoResultSet.java:62) at io.trino.jdbc.TrinoStatement.internalExecute(TrinoStatement.java:262) at io.trino.jdbc.TrinoStatement.execute(TrinoStatement.java:240) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:330) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:131) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:601) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$2(SQLQueryJob.java:504) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:190) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:511) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:963) at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:4134) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:123) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:190) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:121) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:5148) at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:114) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: java.lang.IllegalArgumentException: inputPositions is negative at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143) at io.trino.operator.OperatorStats.<init>(OperatorStats.java:165) at io.trino.operator.OperatorContext.getOperatorStats(OperatorContext.java:593) at io.trino.operator.OperatorContext.lambda$getNestedOperatorStats$1(OperatorContext.java:515) at java.base/java.util.Optional.orElseGet(Optional.java:364) at io.trino.operator.OperatorContext.getNestedOperatorStats(OperatorContext.java:515) at io.trino.operator.DriverContext.lambda$getOperatorStats$0(DriverContext.java:308) at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.trino.operator.DriverContext.getOperatorStats(DriverContext.java:310) at io.trino.operator.DriverContext.getDriverStats(DriverContext.java:332) at io.trino.operator.PipelineContext.getPipelineStats(PipelineContext.java:411) at com.google.common.collect.Iterators$6.transform(Iterators.java:829) at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:52) at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:278) at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:239) at io.trino.operator.TaskContext.getTaskStats(TaskContext.java:450) at io.trino.execution.SqlTask.getTaskStats(SqlTask.java:409) at io.trino.execution.SqlTask.createTaskInfo(SqlTask.java:433) at io.trino.execution.SqlTask.getTaskInfo(SqlTask.java:274) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.trino.execution.SqlTaskManager.getAllTaskInfo(SqlTaskManager.java:377) at io.trino.connector.system.TaskSystemTable.cursor(TaskSystemTable.java:109) at io.trino.spi.connector.SystemTable.cursor(SystemTable.java:47) at io.trino.connector.system.SystemPageSourceProvider$1.cursor(SystemPageSourceProvider.java:140) at io.trino.plugin.base.MappedRecordSet.cursor(MappedRecordSet.java:53) at io.trino.spi.connector.RecordPageSource.<init>(RecordPageSource.java:37) at io.trino.connector.system.SystemPageSourceProvider.createPageSource(SystemPageSourceProvider.java:119) at io.trino.split.PageSourceManager.createPageSource(PageSourceManager.java:61) at io.trino.operator.TableScanOperator.getOutput(TableScanOperator.java:263) at io.trino.operator.Driver.processInternal(Driver.java:398) at io.trino.operator.Driver.lambda$process$8(Driver.java:301) at io.trino.operator.Driver.tryWithLock(Driver.java:704) at io.trino.operator.Driver.process(Driver.java:293) at io.trino.operator.Driver.processForDuration(Driver.java:264) at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:887) at io.trino.execution.executor.timesharing.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:187) at io.trino.execution.executor.timesharing.TimeSharingTaskExecutor$TaskRunner.run(TimeSharingTaskExecutor.java:565) at io.trino.$gen.Trino_435____20240430_054533_2.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583)
Error Details:
Query: SELECT * FROM SYSTEM.runtime.tasks
Trino version: 435
Context: I am attempting to retrieve information about currently executing tasks in my Trino cluster using the SYSTEM.runtime.tasks system table. However, the query failed with the mentioned error message. This error seems to be related to inputPositions being negative, but I'm unsure about the root cause.
I think that this is an overflow when merging OperatorStats. PTAL @sopel39 @lukasz-stec:
inputPositions is negative at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
at io.trino.operator.OperatorStats.<init>(OperatorStats.java:165)
at io.trino.operator.OperatorContext.getOperatorStats(OperatorContext.java:593)
at io.trino.operator.OperatorContext.lambda$getNestedOperatorStats$1(OperatorContext.java:515)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at io.trino.operator.OperatorContext.getNestedOperatorStats(OperatorContext.java:515)
at io.trino.operator.DriverContext.lambda$getOperatorStats$0(DriverContext.java:308)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.trino.operator.DriverContext.getOperatorStats(DriverContext.java:310)
at io.trino.operator.DriverContext.getDriverStats(DriverContext.java:332)
at io.trino.operator.PipelineContext.getPipelineStats(PipelineContext.java:411)
at com.google.common.collect.Iterators$6.transform(Iterators.java:829)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:52)
at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:278)
at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:239)
at io.trino.operator.TaskContext.getTaskStats(TaskContext.java:450)
I think that this is an overflow when merging OperatorStats
That is unlikely given the positions are kept in long
.
@lukasz-stec is inputPositions == 0 a valid value?
@lukasz-stec is inputPositions == 0 a valid value?
Yes it is
@lukasz-stec Do you have any idea why I am getting this error anytime I want to query the SYSTEM.runtime.tasks
? Any info would be helpful. Thanks
@lukasz-stec Do you have any idea why I am getting this error anytime I want to query the SYSTEM.runtime.tasks?
Does it happen also on empty cluster without running queries?
@iphyjon I've created https://github.com/trinodb/trino/pull/21835. You might want to try your queries with it so that we could trace the issue better