From 39f30fd0b6ceff3a29668d3b88b5cb062601f047 Mon Sep 17 00:00:00 2001 From: Marco Neumann Date: Tue, 3 Aug 2021 14:45:23 +0200 Subject: [PATCH] test: make test queries easier to understand --- server/src/db/replay.rs | 79 ++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 48 deletions(-) diff --git a/server/src/db/replay.rs b/server/src/db/replay.rs index e145d60cc9..d83858f70b 100644 --- a/server/src/db/replay.rs +++ b/server/src/db/replay.rs @@ -1449,6 +1449,19 @@ mod tests { ])]), Step::Persist(vec![("table_1", "tag_partition_by_a")]), Step::Restart, + Step::Assert(vec![ + // single chunk for table_1 was restored + Check::Query( + "select table_name, storage, count(*) as n from system.chunks group by table_name, storage order by table_name, storage", + vec![ + "+------------+-----------------+---+", + "| table_name | storage | n |", + "+------------+-----------------+---+", + "| table_1 | ObjectStoreOnly | 1 |", + "+------------+-----------------+---+", + ], + ), + ]), Step::Replay, Step::Assert(vec![ Check::Query( @@ -1471,21 +1484,16 @@ mod tests { "+-----+------------------+----------------------+", ], ), + // no additional chunk for table_1 was created Check::Query( - "explain select * from table_1 order by bar", + "select table_name, storage, count(*) as n from system.chunks group by table_name, storage order by table_name, storage", vec![ - "+---------------+-------------------------------------------------------------------------------------------------+", - "| plan_type | plan |", - "+---------------+-------------------------------------------------------------------------------------------------+", - "| logical_plan | Sort: #table_1.bar ASC NULLS FIRST |", - "| | Projection: #table_1.bar, #table_1.tag_partition_by, #table_1.time |", - "| | TableScan: table_1 projection=Some([0, 1, 2]) |", - "| physical_plan | SortExec: [bar@0 ASC] |", - "| | CoalescePartitionsExec |", - "| | ProjectionExec: expr=[bar@0 as bar, tag_partition_by@1 as tag_partition_by, time@2 as time] |", - "| | RepartitionExec: partitioning=RoundRobinBatch(4) |", - "| | IOxReadFilterNode: table_name=table_1, chunks=1 predicate=Predicate |", - "+---------------+-------------------------------------------------------------------------------------------------+", + "+------------+-------------------+---+", + "| table_name | storage | n |", + "+------------+-------------------+---+", + "| table_1 | ObjectStoreOnly | 1 |", + "| table_2 | OpenMutableBuffer | 1 |", + "+------------+-------------------+---+", ], ), ]), @@ -1563,43 +1571,18 @@ mod tests { "+-----+------------------+--------------------------------+", ], ), + // chunks do not overlap Check::Query( - "explain select * from table_1 order by bar", + "select table_name, storage, min_value, max_value, row_count from system.chunk_columns where column_name = 'time' order by table_name, storage", vec![ - "+---------------+-------------------------------------------------------------------------------------------------+", - "| plan_type | plan |", - "+---------------+-------------------------------------------------------------------------------------------------+", - "| logical_plan | Sort: #table_1.bar ASC NULLS FIRST |", - "| | Projection: #table_1.bar, #table_1.tag_partition_by, #table_1.time |", - "| | TableScan: table_1 projection=Some([0, 1, 2]) |", - "| physical_plan | SortExec: [bar@0 ASC] |", - "| | CoalescePartitionsExec |", - "| | ProjectionExec: expr=[bar@0 as bar, tag_partition_by@1 as tag_partition_by, time@2 as time] |", - "| | ExecutionPlan(PlaceHolder) |", - "| | RepartitionExec: partitioning=RoundRobinBatch(4) |", - "| | DeduplicateExec: [tag_partition_by@1 ASC,time@2 ASC] |", - "| | SortExec: [tag_partition_by@1 ASC,time@2 ASC] |", - "| | IOxReadFilterNode: table_name=table_1, chunks=1 predicate=Predicate |", - "| | RepartitionExec: partitioning=RoundRobinBatch(4) |", - "| | IOxReadFilterNode: table_name=table_1, chunks=1 predicate=Predicate |", - "+---------------+-------------------------------------------------------------------------------------------------+", - ], - ), - Check::Query( - "explain select * from table_1 where bar <= 10", - vec![ - "+---------------+----------------------------------------------------------------------------------------------------------+", - "| plan_type | plan |", - "+---------------+----------------------------------------------------------------------------------------------------------+", - "| logical_plan | Projection: #table_1.bar, #table_1.tag_partition_by, #table_1.time |", - "| | Filter: #table_1.bar LtEq Int64(10) |", - "| | TableScan: table_1 projection=Some([0, 1, 2]), filters=[#table_1.bar LtEq Int64(10)] |", - "| physical_plan | ProjectionExec: expr=[bar@0 as bar, tag_partition_by@1 as tag_partition_by, time@2 as time] |", - "| | CoalesceBatchesExec: target_batch_size=500 |", - "| | FilterExec: bar@0 <= CAST(10 AS Float64) |", - "| | RepartitionExec: partitioning=RoundRobinBatch(4) |", - "| | IOxReadFilterNode: table_name=table_1, chunks=1 predicate=Predicate exprs: [#bar LtEq Int64(10)] |", - "+---------------+----------------------------------------------------------------------------------------------------------+", + "+------------+-------------------+-----------+-----------+-----------+", + "| table_name | storage | min_value | max_value | row_count |", + "+------------+-------------------+-----------+-----------+-----------+", + "| table_1 | ObjectStoreOnly | 0 | 0 | 1 |", + "| table_1 | OpenMutableBuffer | 10 | 10 | 1 |", + "| table_2 | OpenMutableBuffer | 0 | 0 | 1 |", + "| table_3 | ObjectStoreOnly | 10 | 10 | 1 |", + "+------------+-------------------+-----------+-----------+-----------+", ], ), ]),