ArrayIndexOutOfBoundsException on ASOF JOIN
Open
@nwoolmer is already working on this.
Since May 24, 2024.
Bug
SQL
- Dominant language
- Java
- Stars
- 17.3k
- Forks
- 1.6k
- Avg merge
- 5d 10h
- Merged PRs (30d)
- 28
Description
To reproduce
DDL (other tables are similar):
CREATE TABLE 'inverter_1' (
timestamp TIMESTAMP,
current_a LONG
) timestamp (timestamp) PARTITION BY DAY WAL;
Problematic query:
SELECT inverter_1.timestamp,
inverter_1.current_a AS current_a_1
FROM inverter_1 ASOF JOIN inverter_2
ASOF JOIN inverter_3 ASOF JOIN inverter_10
ASOF JOIN inverter_11 ASOF JOIN inverter_12
ASOF JOIN inverter_13 ASOF JOIN inverter_14
ASOF JOIN inverter_15
WHERE inverter_1.timestamp BETWEEN '2023-01-05 20:00' AND '2023-01-05 23:55'
ORDER BY timestamp DESC
Run the above query and see the error:
2024-01-16T17:17:03.634868Z C i.q.c.h.p.JsonQueryProcessorState [128] internal error [ex=
java.lang.AssertionError
at io.questdb.griffin.SqlCodeGenerator.generateTableQuery0(SqlCodeGenerator.java:4776)
at io.questdb.griffin.SqlCodeGenerator.generateTableQuery(SqlCodeGenerator.java:4314)
at io.questdb.griffin.SqlCodeGenerator.generateNoSelect(SqlCodeGenerator.java:2310)
at io.questdb.griffin.SqlCodeGenerator.generateSelect(SqlCodeGenerator.java:2902)
at io.questdb.griffin.SqlCodeGenerator.generateQuery0(SqlCodeGenerator.java:2465)
at io.questdb.griffin.SqlCodeGenerator.generateQuery(SqlCodeGenerator.java:2453)
at io.questdb.griffin.SqlCodeGenerator.generateJoins(SqlCodeGenerator.java:1643)
at io.questdb.griffin.SqlCodeGenerator.generateSelect(SqlCodeGenerator.java:2900)
at io.questdb.griffin.SqlCodeGenerator.generateQuery0(SqlCodeGenerator.java:2465)
at io.questdb.griffin.SqlCodeGenerator.generateQuery(SqlCodeGenerator.java:2453)
at io.questdb.griffin.SqlCodeGenerator.generateSubQuery(SqlCodeGenerator.java:4283)
at io.questdb.griffin.SqlCodeGenerator.generateSelectChoose(SqlCodeGenerator.java:2915)
at io.questdb.griffin.SqlCodeGenerator.generateSelect(SqlCodeGenerator.java:2885)
at io.questdb.griffin.SqlCodeGenerator.generateQuery0(SqlCodeGenerator.java:2465)
at io.questdb.griffin.SqlCodeGenerator.generateQuery(SqlCodeGenerator.java:2453)
at io.questdb.griffin.SqlCodeGenerator.generate(SqlCodeGenerator.java:203)
at io.questdb.griffin.SqlCompilerImpl.generateFactory(SqlCompilerImpl.java:2841)
at io.questdb.griffin.SqlCompilerImpl.generateWithRetries(SqlCompilerImpl.java:2858)
at io.questdb.griffin.SqlCompilerImpl.compileUsingModel(SqlCompilerImpl.java:1470)
at io.questdb.griffin.SqlCompilerImpl.compileInner(SqlCompilerImpl.java:1432)
at io.questdb.griffin.SqlCompilerImpl.compile(SqlCompilerImpl.java:234)
at io.questdb.cairo.pool.SqlCompilerPool$C.compile(SqlCompilerPool.java:104)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.compileAndExecuteQuery(JsonQueryProcessor.java:436)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.execute0(JsonQueryProcessor.java:189)
at io.questdb.cutlass.http.processors.JsonQueryProcessor.onRequestComplete(JsonQueryProcessor.java:247)
at io.questdb.cutlass.http.HttpConnectionContext.handleClientRecv(HttpConnectionContext.java:869)
at io.questdb.cutlass.http.HttpConnectionContext.handleClientOperation(HttpConnectionContext.java:253)
at io.questdb.cutlass.http.HttpServer$1.lambda$$0(HttpServer.java:81)
at io.questdb.network.AbstractIODispatcher.processIOQueue(AbstractIODispatcher.java:199)
at io.questdb.cutlass.http.HttpServer$1.run(HttpServer.java:85)
at io.questdb.mp.Worker.run(Worker.java:148)
, q=`SELECT inverter_1.timestamp,
inverter_1.current_a AS current_a_1
FROM inverter_1 ASOF JOIN inverter_2
ASOF JOIN inverter_3 ASOF JOIN inverter_10
ASOF JOIN inverter_11 ASOF JOIN inverter_12
ASOF JOIN inverter_13 ASOF JOIN inverter_14
ASOF JOIN inverter_15
WHERE inverter_1.timestamp BETWEEN '2023-01-05 20:00' AND '2023-01-05 23:55'
ORDER BY timestamp DESC`]
QuestDB version:
7.3.9
OS, in case of Docker specify Docker and the Host OS:
Linux
File System, in case of Docker specify Host File System:
ext4
Full Name:
Andrei Pechkurov
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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.