fix: distinct respect in range (#5015)

* fix: distinct respect in range

* tests: sqlness

* chore: newline
This commit is contained in:
discord9
2024-11-18 20:11:07 +08:00
committed by GitHub
parent c199604ece
commit 4402f638cd
3 changed files with 80 additions and 2 deletions

View File

@@ -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!(
@@ -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,
@@ -801,7 +803,7 @@ impl RangeSelect {
&input_schema,
name,
false,
false,
distinct,
),
}
}

View File

@@ -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

View File

@@ -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;