Skip to content

Commit 6e4afed

Browse files
authored
chore(query): all queryies should generate hash (#15560)
* fix(query): all query should generate hash * fix clippy
1 parent 0993fe0 commit 6e4afed

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed

src/query/service/src/interpreters/interpreter.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -234,22 +234,24 @@ fn log_query_finished(ctx: &QueryContext, error: Option<ErrorCode>, has_profiles
234234
pub async fn interpreter_plan_sql(ctx: Arc<QueryContext>, sql: &str) -> Result<(Plan, PlanExtras)> {
235235
let mut planner = Planner::new(ctx.clone());
236236
let result = planner.plan_sql(sql).await;
237-
238-
if let Ok((_, extras)) = &result {
239-
let mut stmt = extras.statement.clone();
240-
attach_query_hash(&ctx, &mut stmt);
237+
let short_sql = short_sql(sql.to_string());
238+
let mut stmt = if let Ok((_, extras)) = &result {
239+
Some(extras.statement.clone())
241240
} else {
242241
// Only log if there's an error
243-
ctx.attach_query_str(QueryKind::Unknown, short_sql(sql.to_string()));
242+
ctx.attach_query_str(QueryKind::Unknown, short_sql.to_string());
244243
log_query_start(&ctx);
245244
log_query_finished(&ctx, result.as_ref().err().cloned(), false);
246-
}
245+
None
246+
};
247+
248+
attach_query_hash(&ctx, &mut stmt, &short_sql);
247249

248250
result
249251
}
250252

251-
fn attach_query_hash(ctx: &Arc<QueryContext>, stmt: &mut Statement) {
252-
if let Statement::Query(_) = stmt {
253+
fn attach_query_hash(ctx: &Arc<QueryContext>, stmt: &mut Option<Statement>, sql: &str) {
254+
let (query_hash, query_parameterized_hash) = if let Some(stmt) = stmt {
253255
let query_hash = format!("{:x}", Md5::digest(stmt.to_string()));
254256
// Use Literal::Null replace literal. Ignore Literal.
255257
// SELECT * FROM t1 WHERE name = 'data' => SELECT * FROM t1 WHERE name = NULL
@@ -267,7 +269,11 @@ fn attach_query_hash(ctx: &Arc<QueryContext>, stmt: &mut Statement) {
267269
let mut visitor = AstVisitor {};
268270
stmt.drive_mut(&mut visitor);
269271

270-
let query_parameterized_hash = format!("{:x}", Md5::digest(stmt.to_string()));
271-
ctx.attach_query_hash(query_hash, query_parameterized_hash);
272-
}
272+
(query_hash, format!("{:x}", Md5::digest(stmt.to_string())))
273+
} else {
274+
let hash = format!("{:x}", Md5::digest(sql));
275+
(hash.to_string(), hash)
276+
};
277+
278+
ctx.attach_query_hash(query_hash, query_parameterized_hash);
273279
}

tests/sqllogictests/suites/base/01_system/01_0002_system_query_log.test

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@ drop table if exists tbl_01_0002 all
1717
statement ok
1818
create table tbl_01_0002(a int)
1919

20+
statement ok
21+
insert into tbl_01_0002 values (1)
22+
23+
statement error
24+
insert into tbl_01_0002 values (?,?,?)
25+
26+
query TTT
27+
select query_text, query_hash, query_parameterized_hash from system.query_log where query_text='INSERT INTO tbl_01_0002 VALUES (?,?,?)' limit 1;
28+
----
29+
INSERT INTO tbl_01_0002 VALUES (?,?,?) 56531330ce650af109dc38ae2fe2a6a3 56531330ce650af109dc38ae2fe2a6a3
30+
2031
statement ok
2132
insert into tbl_01_0002 values(1)
2233

@@ -56,6 +67,16 @@ select count(query_text)>1 from system.query_log where query_text like 'SELECT *
5667
----
5768
1
5869

70+
query TTT
71+
select query_text, query_hash, query_parameterized_hash from system.query_log where query_hash='932d5555e275c38b46574f4adfa5e01b' limit 1;
72+
----
73+
INSERT INTO tbl_01_0002 VALUES (1) 932d5555e275c38b46574f4adfa5e01b 932d5555e275c38b46574f4adfa5e01b
74+
75+
query B
76+
select count(query_text)>1 from system.query_log where query_text like 'INSERT INTO tbl_01_0002%' group by query_parameterized_hash having query_parameterized_hash='932d5555e275c38b46574f4adfa5e01b';
77+
----
78+
1
79+
5980
query TTT
6081
select query_text, query_hash, query_parameterized_hash from system.query_log where query_text like 'SELECT * FROM tbl_01_0002 WHERE a = 200' and log_type_name='Finish' limit 1;
6182
----

0 commit comments

Comments
 (0)