Skip to content

optimiser fails with unary minus on column targeted for aggregation #6403

@nwoolmer

Description

@nwoolmer

To reproduce

SELECT symbol, sum(-amount) FROM trades;
2025-11-17T10:37:01.615962Z C i.q.c.h.p.JsonQueryProcessorState [1114544014041] internal error [ex=
java.lang.NullPointerException: Cannot read field "type" because "n" is null
	at io.questdb.griffin.SqlOptimiser.isIntegerConstant(SqlOptimiser.java:2593)
	at io.questdb.griffin.SqlOptimiser.rewriteAggregate(SqlOptimiser.java:4264)
	at io.questdb.griffin.SqlOptimiser.rewriteSelectClause0(SqlOptimiser.java:6010)
	at io.questdb.griffin.SqlOptimiser.rewriteSelectClause(SqlOptimiser.java:5925)
	at io.questdb.griffin.SqlOptimiser.optimise(SqlOptimiser.java:7238)
	at io.questdb.griffin.SqlCompilerImpl.compileExecutionModel0(SqlCompilerImpl.java:2533)
	at io.questdb.griffin.SqlCompilerImpl.compileExecutionModel(SqlCompilerImpl.java:2521)
	at io.questdb.griffin.SqlCompilerImpl.compileUsingModel(SqlCompilerImpl.java:3236)
	at io.questdb.griffin.SqlCompilerImpl.compileInner(SqlCompilerImpl.java:2623)
	at io.questdb.griffin.SqlCompilerImpl.compile(SqlCompilerImpl.java:394)
	at io.questdb.cairo.pool.SqlCompilerPool$C.compile(SqlCompilerPool.java:141)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.compileAndExecuteQuery(JsonQueryProcessor.java:514)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.execute0(JsonQueryProcessor.java:216)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.onRequestComplete(JsonQueryProcessor.java:298)
	at io.questdb.cutlass.http.HttpConnectionContext.handleClientRecv(HttpConnectionContext.java:986)
	at io.questdb.cutlass.http.HttpConnectionContext.handleClientOperation(HttpConnectionContext.java:323)
	at io.questdb.cutlass.http.HttpServer.handleClientOperation(HttpServer.java:331)
	at io.questdb.cutlass.http.HttpServer$1.lambda$$0(HttpServer.java:114)
	at io.questdb.network.AbstractIODispatcher.processIOQueue(AbstractIODispatcher.java:224)
	at io.questdb.cutlass.http.HttpServer$1.run(HttpServer.java:118)
	at io.questdb.mp.Worker.run(Worker.java:152)
, q=`SELECT symbol, sum(-amount) FROM trades`]

QuestDB version:

Master (9.2.0+)

OS, in case of Docker specify Docker and the Host OS:

N/A

File System, in case of Docker specify Host File System:

N/A

Full Name:

Nick Woolmer

Affiliation:

QuestDB

Have you followed Linux, MacOs kernel configuration steps to increase Maximum open files and Maximum virtual memory areas limit?

  • Yes, I have

Additional context

No response

Metadata

Metadata

Assignees

Labels

BugIncorrect or unexpected behaviorSQLIssues or changes relating to SQL executionexternal

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions