Repository navigation
Description
What happened?
HyperDX can display the wrong request when SELECT contains only timestamp .
Steps to reproduce
Only necessary fields for the bug are here:
CREATE TABLE default.hyperdx_row_repro
(
timestamp DateTime('UTC'),
event JSON(max_dynamic_paths=0, `@request_id` Nullable(String))
)
ENGINE = MergeTree
PARTITION BY toDate(timestamp)
ORDER BY timestamp;
INSERT INTO default.hyperdx_row_repro VALUES
('2026-11-02 12:53:33', '{"@request_id":"request-A"}'),
('2026-11-02 12:53:33', '{"@request_id":"request-B"}');Reproduces on play.hyperdx.io? didn't try
- Create a HyperDX log source for this table.
- Set Timestamp Column to
timestamp. - Set the absolute time range to
2026-11-02 12:53:00–12:54:00 UTC. - Apply this SQL filter:
event.`@request_id` = 'request-B'
- Set SELECT to timestamp .
- Open the row details.
- Check the returned
@request_id. If there are too little rows it could getrequest-BBut it's not because of the filter, it's just because random sometimes could return what you asked. In case of 2 rows it's 50/50.
Actual: the production test returned another request from the same second. The detail query omitted the request filter:
SELECT * FROM default.hyperdx_row_repro
WHERE timestamp = parseDateTime64BestEffort('2026-11-02T12:53:33Z', 9)
AND toDate(timestamp) = parseDateTime64BestEffort('2026-11-02', 9)
LIMIT 1;This query can return either request in the fixture. The captured production response contained the wrong request ID.
Expected: display the selected event. If the query cannot identify one event, display an error.
How are you running HyperDX?
Clickhouse Cloud
Where does it show up?
Debug info
frontend: 2.41.0-sha38acb5a
backend: 2.41.0-sha38acb5a
mode: cloud
user: 6aad226315bbfa844bbf9fe3
team: 6ae883cb114b02c912d4515b
features: alertDetails, aiAssistant
url: /team
screen: 1800x1169 (viewport 1800x1066, dpr 2)
platform: MacIntel
language: en-US
ua: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:153.0) Gecko/20100101 Firefox/153.0
session: 85d51be394f63b7343630a8509512844
Logs
Activity
pulpdrew commentedon Nov 2, 2026
Thanks for reporting @libbkmz. This is a known issue. The recommended fix for ensuring that the side panel opens the correct clicked row is to apply the following settings to your source table:
enable_block_number_column = 1andenable_block_offset_column = 1.This ensures that each row has a unique ID that can be looked up by the side panel query, see: #2071
libbkmz commentedon Nov 2, 2026
Are there any ways how to point the HyperDX to a custom column that uniquely identifies row? Like in that example we have
event.`@request_id`field which could serve that purpose.I guess
enable_block_number_columnandenable_block_offset_columnare table engine level settings and would require ALTER call to enable, which I currently can't afford on that heavy table I use, are there any other options?pulpdrew commentedon Nov 2, 2026
Another option would be to add additional distinguishing columns to your select expression
ALTER TABLE ... MODIFY SETTING on a MergeTree table just updates the table’s stored settings. It doesn’t rewrite or mutate any existing parts, and it doesn’t schedule merges or a mutation. It’s not like MATERIALIZE COLUMN or ADD COLUMN plus MATERIALIZE.
The change applies as part writing happens:
libbkmz commentedon Nov 2, 2026
I tried, but it breaks other parts of the HyperDX #3519