apache / apache/pinot

Gapfill function fails if datatype in lastwithtime is not uppercased

Open
#11,322 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
6.1k
Forks
1.5k
Avg merge
2d 55m
Merged PRs (30d)
182

Description

NullPointerException at GapFillProcessor.java:109 for the following

Fix is to uppercase DOUBLE within the lastwithvalue aggregate

```
SELECT GAPFILL(time_col,'1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS','2021-10-01 09:00:00.000',

'2021-10-01 12:00:00.000','30:MINUTES', FILL(status, 'FILL_PREVIOUS_VALUE'),

TIMESERIESON(lotId)), lotId, status

FROM (

SELECT DATETIMECONVERT(event_time,'1:MILLISECONDS:EPOCH',

'1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS','30:MINUTES') AS time_col,

lotId, lastWithTime(is_occupied, event_time, 'double') AS status -- issue here

FROM parking_data

WHERE event_time >= 1633078800000 AND event_time <= 1633089600000

GROUP BY 1, 2

ORDER BY 1

LIMIT 100)

LIMIT 100)

```

Also time column must be the first column in the select statement else we get a time conversion exception.

Contributor guide

Open the contributing guide

Research direction

Start at GapFillProcessor.java:109 and reproduce the supplied GAPFILL query using lastWithTime(..., 'double'). Trace how the datatype is handled in the lastWithValue aggregate and verify the query no longer throws a NullPointerException; also check the reported requirement that time_col is the first selected column.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.