fix: enable max_execution time for other read only statements (#6454)

Also disable the timeout when timeout is 0

Signed-off-by: evenyag <realevenyag@gmail.com>
This commit is contained in:
Yingwen
2025-07-03 21:46:02 +08:00
committed by GitHub
parent 7b2703760b
commit 76a5145def
2 changed files with 68 additions and 3 deletions

View File

@@ -317,9 +317,13 @@ impl Instance {
/// For MySQL, it applies only to read-only statements.
fn derive_timeout(stmt: &Statement, query_ctx: &QueryContextRef) -> Option<Duration> {
let query_timeout = query_ctx.query_timeout()?;
match (query_ctx.channel(), stmt) {
(Channel::Mysql, Statement::Query(_)) | (Channel::Postgres, _) => Some(query_timeout),
(_, _) => None,
if query_timeout.is_zero() {
return None;
}
match query_ctx.channel() {
Channel::Mysql if stmt.is_readonly() => Some(query_timeout),
Channel::Postgres => Some(query_timeout),
_ => None,
}
}