Skip to content

Commit

Permalink
fix: distinct respect in range (#5015)
Browse files Browse the repository at this point in the history
* fix: distinct respect in range

* tests: sqlness

* chore: newline
  • Loading branch information
discord9 authored Nov 18, 2024
1 parent c199604 commit 4402f63
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/query/src/range_select/plan.rs
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,8 @@ impl RangeSelect {
} else {
vec![]
};
let distinct = aggr.distinct;
// TODO(discord9): add default null treatment?

let input_phy_exprs = self.create_physical_expr_list(
matches!(
Expand All @@ -786,7 +788,7 @@ impl RangeSelect {
match &aggr.func_def {
AggregateFunctionDefinition::BuiltIn(fun) => create_aggr_expr(
fun,
false,
distinct,
&input_phy_exprs,
&order_by,
&input_schema,
Expand All @@ -801,7 +803,7 @@ impl RangeSelect {
&input_schema,
name,
false,
false,
distinct,
),
}
}
Expand Down
50 changes: 50 additions & 0 deletions tests/cases/standalone/common/range/by.result
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,53 @@ DROP TABLE host;

Affected Rows: 0

CREATE TABLE grpc_latencies (
ts TIMESTAMP TIME INDEX,
host STRING,
method_name STRING,
latency DOUBLE,
PRIMARY KEY (host, method_name)
) with('append_mode'='true');

Affected Rows: 0

INSERT INTO grpc_latencies (ts, host, method_name, latency) VALUES
('2024-07-11 20:00:06', 'host1', 'GetUser', 103.0),
('2024-07-11 20:00:06', 'host2', 'GetUser', 113.0),
('2024-07-11 20:00:07', 'host1', 'GetUser', 103.5),
('2024-07-11 20:00:07', 'host2', 'GetUser', 107.0),
('2024-07-11 20:00:08', 'host1', 'GetUser', 104.0),
('2024-07-11 20:00:08', 'host2', 'GetUser', 96.0),
('2024-07-11 20:00:09', 'host1', 'GetUser', 104.5),
('2024-07-11 20:00:09', 'host2', 'GetUser', 114.0);

Affected Rows: 8

SELECT ts, count(distinct host) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);

+---------------------+---+
| ts | h |
+---------------------+---+
| 2024-07-11T20:00:05 | 2 |
+---------------------+---+

SELECT ts, count(*) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);

+---------------------+---+
| ts | h |
+---------------------+---+
| 2024-07-11T20:00:05 | 8 |
+---------------------+---+

select date_bin(INTERVAL '5s', ts) as t, count(distinct host) as count from grpc_latencies group by t;

+---------------------+-------+
| t | count |
+---------------------+-------+
| 2024-07-11T20:00:05 | 2 |
+---------------------+-------+

DROP TABLE grpc_latencies;

Affected Rows: 0

26 changes: 26 additions & 0 deletions tests/cases/standalone/common/range/by.sql
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,29 @@ INSERT INTO TABLE host VALUES
SELECT ts, max(val) RANGE '5s' FROM host ALIGN '20s' ORDER BY ts;

DROP TABLE host;

CREATE TABLE grpc_latencies (
ts TIMESTAMP TIME INDEX,
host STRING,
method_name STRING,
latency DOUBLE,
PRIMARY KEY (host, method_name)
) with('append_mode'='true');

INSERT INTO grpc_latencies (ts, host, method_name, latency) VALUES
('2024-07-11 20:00:06', 'host1', 'GetUser', 103.0),
('2024-07-11 20:00:06', 'host2', 'GetUser', 113.0),
('2024-07-11 20:00:07', 'host1', 'GetUser', 103.5),
('2024-07-11 20:00:07', 'host2', 'GetUser', 107.0),
('2024-07-11 20:00:08', 'host1', 'GetUser', 104.0),
('2024-07-11 20:00:08', 'host2', 'GetUser', 96.0),
('2024-07-11 20:00:09', 'host1', 'GetUser', 104.5),
('2024-07-11 20:00:09', 'host2', 'GetUser', 114.0);

SELECT ts, count(distinct host) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);

SELECT ts, count(*) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);

select date_bin(INTERVAL '5s', ts) as t, count(distinct host) as count from grpc_latencies group by t;

DROP TABLE grpc_latencies;

0 comments on commit 4402f63

Please sign in to comment.