-
Notifications
You must be signed in to change notification settings - Fork 722
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Есть таблица:
SHOW CREATE table test_table
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────┬──────────┐
│ CreateQuery │ Path │ PathType │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────┼──────────┤
│ "CREATE TABLE `test_table` (\n `timestamp` Timestamp NOT NULL,\n `resource_type` Utf8 NOT NULL,\n `resource_id` Utf8 NOT NULL,\n `stream_name` Utf8 NOT NULL,\n `parti │ "test_table" │ "Table" │
│ tion` Uint32 NOT NULL,\n `offset` Uint64 NOT NULL,\n `index` Uint32 NOT NULL,\n `level` Int32,\n `message` Utf8,\n `json_payload` JsonDocument,\n `ingested_at` Tim │ │ │
│ estamp,\n `saved_at` Timestamp,\n `request_id` Utf8,\n PRIMARY KEY (`timestamp`, `resource_type`, `resource_id`, `stream_name`, `partition`, `offset`, `index`)\n)\nPARTITIO │ │ │
│ N BY HASH (`timestamp`, `partition`, `offset`, `index`)\nWITH (\n STORE = COLUMN,\n AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 1\n);\n\nALTER OBJECT `/Root/testdb/test_table` (T │ │ │
│ YPE TABLE) SET (ACTION = UPSERT_OPTIONS, `COMPACTION_PLANNER.CLASS_NAME` = 'lc-buckets', `COMPACTION_PLANNER.FEATURES` = `{\\\"levels\\\":[{\\\"class_name\\\":\\\"Zero\\\",\\\"expec │ │ │
│ ted_blobs_size\\\":20971520},{\\\"class_name\\\":\\\"Zero\\\",\\\"expected_blobs_size\\\":20971520},{\\\"class_name\\\":\\\"Zero\\\",\\\"expected_blobs_size\\\":20971520}]}`);\n" │ │ │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────┴──────────┘
в которой есть данные и они сохранены следующим образом:
SELECT PortionId, EntityName, Rows, ChunkIdx FROM `test_table/.sys/primary_index_stats`;
┌───────────┬──────────────────┬───────┬──────────┐
│ PortionId │ EntityName │ Rows │ ChunkIdx │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "timestamp" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "resource_type" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "resource_id" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "stream_name" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "partition" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "offset" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "index" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "message" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "json_payload" │ 13281 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "json_payload" │ 13282 │ 1 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "_yql_plan_step" │ 26563 │ 0 │
├───────────┼──────────────────┼───────┼──────────┤
│ 11 │ "_yql_tx_id" │ 26563 │ 0 │
└───────────┴──────────────────┴───────┴──────────┘
Обратите внимание, что колонка json_payload разбита на 2 чанка в 1 порции.
При чтении данных на границе этого чанка (чтобы в выдачу попали данные из 0 и 1) результат будет отличаться, если не читать колонку json_payload и читать:
SELECT timestamp
FROM `test_table`
WHERE timestamp > Timestamp("2025-10-08T11:00:02.193382Z")
ORDER by timestamp ASC
limit 5;
┌───────────────────────────────┐
│ timestamp │
├───────────────────────────────┤
│ "2025-10-08T11:00:02.193445Z" │
├───────────────────────────────┤
│ "2025-10-08T11:00:02.193858Z" │
├───────────────────────────────┤
│ "2025-10-08T11:00:02.201664Z" │
├───────────────────────────────┤
│ "2025-10-08T11:00:02.201744Z" │
├───────────────────────────────┤
│ "2025-10-08T11:00:02.207683Z" │
└───────────────────────────────┘
SELECT timestamp, json_payload
FROM `test_table`
WHERE timestamp > Timestamp("2025-10-08T11:00:02.193382Z")
ORDER by timestamp ASC
limit 5;
┌───────────────────────────────┬──────────────┐
│ timestamp │ json_payload │
├───────────────────────────────┼──────────────┤
│ "2025-10-08T11:00:02.193445Z" │ "{...}" │
├───────────────────────────────┼──────────────┤
│ "2025-10-08T11:00:02.193445Z" │ "{...}" │
├───────────────────────────────┼──────────────┤
│ "2025-10-08T11:00:02.193858Z" │ "{...}" │
├───────────────────────────────┼──────────────┤
│ "2025-10-08T11:00:02.201664Z" │ "{...}" │
├───────────────────────────────┼──────────────┤
│ "2025-10-08T11:00:02.201744Z" │ "{...}" │
└───────────────────────────────┴──────────────┘
Обратите внимание на дублирующийся timestamp. Так же могут побиться данные в других колонках, если их читать с json_payload
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working