-
Notifications
You must be signed in to change notification settings - Fork 1.6k
EXPLAIN is broken for some cases #6194
Copy link
Copy link
Closed
Labels
SQLIssues or changes relating to SQL executionIssues or changes relating to SQL executioninternalregression
Description
To reproduce
Go to demo and try these three queries:
EXPLAIN CREATE TABLE trades AS
(
SELECT
rnd_symbol('a', 'b') symbol,
rnd_symbol('Buy', 'Sell') side,
rnd_double() price,
rnd_double() amount,
x::timestamp timestamp
FROM long_sequence(10)
) TIMESTAMP(timestamp) PARTITION BY DAY;
EXPLAIN INSERT INTO trades
SELECT
rnd_symbol('a', 'b') symbol,
rnd_symbol('Buy', 'Sell') side,
rnd_double() price,
rnd_double() amount,
x::timestamp timestamp
FROM long_sequence(10);
EXPLAIN UPDATE trades SET amount = 0 WHERE timestamp IN '2022-11-11';
The INSERT and UPDATE versions complain about permissions, but we are just explaining. We should be good.
Now, for a second issue. Run the same queries on your local instance with permissions. The last query breaks with this trace
2025-09-26T10:47:10.924606Z C i.q.c.h.p.JsonQueryProcessorState [1685774664889] internal error [ex=
java.lang.UnsupportedOperationException
at io.questdb.cairo.sql.RecordCursorFactory.getCursor(RecordCursorFactory.java:154)
at io.questdb.griffin.engine.table.FilteredRecordCursorFactory.getCursor(FilteredRecordCursorFactory.java:59)
at io.questdb.griffin.engine.table.VirtualRecordCursorFactory.getCursor(VirtualRecordCursorFactory.java:106)
at io.questdb.griffin.SqlCodeGenerator$RecordCursorFactoryStub.getCursor(SqlCodeGenerator.java:6807)
at io.questdb.griffin.engine.ExplainPlanFactory$ExplainPlanRecordCursor.of(ExplainPlanFactory.java:141)
at io.questdb.griffin.engine.ExplainPlanFactory.getCursor(ExplainPlanFactory.java:60)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.executeSelect0(JsonQueryProcessor.java:686)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.executeExplain(JsonQueryProcessor.java:627)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.compileAndExecuteQuery(JsonQueryProcessor.java:513)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.execute0(JsonQueryProcessor.java:215)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.onRequestComplete(JsonQueryProcessor.java:292)
at io.questdb.cutlass.http.HttpConnectionContext.handleClientRecv(HttpConnectionContext.java:910)
at io.questdb.cutlass.http.HttpConnectionContext.handleClientOperation(HttpConnectionContext.java:307)
at io.questdb.cutlass.http.HttpServer.handleClientOperation(HttpServer.java:343)
at io.questdb.cutlass.http.HttpServer$1.lambda$$0(HttpServer.java:129)
at io.questdb.network.AbstractIODispatcher.processIOQueue(AbstractIODispatcher.java:217)
at io.questdb.cutlass.http.HttpServer$1.run(HttpServer.java:133)
at io.questdb.mp.Worker.run(Worker.java:152)
I checked and this has been broken for a while. Back in QuestDB 7.0.0 it was working. As of QuestDB 8.0.1 it breaks. So it happened somewhere in between.
QuestDB version:
8.0.0 and higher
OS, in case of Docker specify Docker and the Host OS:
ubuntu and mac
File System, in case of Docker specify Host File System:
ext4
Full Name:
javier
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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
SQLIssues or changes relating to SQL executionIssues or changes relating to SQL executioninternalregression