Skip to content

Null value in a decimal field after 'sample by and fill' leads to UnsupportedOperationException #6530

@pendyurinandrey

Description

@pendyurinandrey

To reproduce

  • Create a new table
create TABLE test1 (
  ts timestamp,
  asset_id int,
  dc decimal(38,10)
) TIMESTAMP(ts) PARTITION BY month WAL
DEDUP UPSERT KEYS(ts, asset_id);
  • Insert 2 records with time gap in 1 day
insert INTO test1(ts, asset_id, dc)
values('2025-12-15T19:07:16.914778Z', 1, '55.45');

insert INTO test1(ts, asset_id, dc)
values('2025-12-13T12:07:16.914778Z', 1, '30.45');
  • Execute query
select ts, asset_id, dc1
  from (
    select ts, asset_id, last(dc) as dc1
      from test1
      sample by 1d fill(null))
  where dc1 is null

ER: The only one record should be returned: 2025-12-14T00:00:00.00000Z; 1; null
AR: The query failed with UnsupportedOperationException

2025-12-12T19:33:26.239211Z I i.q.g.e.QueryProgress exe [id=179, sql=`select ts, asset_id, dc1
from (
select ts, asset_id, last(dc) as dc1
  from test1
  sample by 1d fill(null))
  where dc1 is null`, principal=admin, cache=true, jit=false]
2025-12-12T19:33:26.252121Z C i.q.c.h.p.JsonQueryProcessorState [109521666640] internal error [ex=
java.lang.UnsupportedOperationException
	at io.questdb.cairo.sql.Record.getDecimal128(Record.java:132)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.putDecimal128Value(JsonQueryProcessorState.java:1092)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.doQueryRecord(JsonQueryProcessorState.java:873)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.doRecordFetchLoop(JsonQueryProcessorState.java:910)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.onResumeSendRecordsLoop(JsonQueryProcessorState.java:1007)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.onResumeQueryPrefix(JsonQueryProcessorState.java:970)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.onResumeSetupFirstRecord(JsonQueryProcessorState.java:1030)
	at io.questdb.cutlass.http.processors.JsonQueryProcessorState.resume(JsonQueryProcessorState.java:1311)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.doResumeSend(JsonQueryProcessor.java:527)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.executeSelect0(JsonQueryProcessor.java:687)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.executeSelect(JsonQueryProcessor.java:661)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.executeCachedSelect(JsonQueryProcessor.java:589)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.execute0(JsonQueryProcessor.java:209)
	at io.questdb.cutlass.http.processors.JsonQueryProcessor.onRequestComplete(JsonQueryProcessor.java:306)
	at io.questdb.cutlass.http.HttpConnectionContext.handleClientRecv(HttpConnectionContext.java:985)
	at io.questdb.cutlass.http.HttpConnectionContext.handleClientOperation(HttpConnectionContext.java:323)
	at io.questdb.cutlass.http.HttpServer.handleClientOperation(HttpServer.java:350)
	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 ts, asset_id, dc1
from (
select ts, asset_id, last(dc) as dc1
  from test1
  sample by 1d fill(null))
  where dc1 is null`]

Workaround: If I remove dc1 from the last query, then everything works fine

select ts, asset_id
  from (
    select ts, asset_id, last(dc) as dc1
      from test1
      sample by 1d fill(null))
  where dc1 is null;

ER=AR: The modified query returned 2025-12-14T00:00:00.000000Z; 1

QuestDB version:

9.2.2

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

Debian 12 (Docker)

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

Host File System: APFS

Full Name:

Andrey Pendyurin

Affiliation:

Freelancer

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

  • Yes, I have

Additional context

I ran docker container using command docker run -p 9000:9000 -p 9009:9009 -p 8812:8812 -p 9003:9003 questdb/questdb:9.2.2, then reproduced the issue in QuestDB WebUI which is shipped with QuestDB.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugIncorrect or unexpected behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions