From 0d81400bb41e8aefd392c306e1c5ae298618fcff Mon Sep 17 00:00:00 2001 From: dennis zhuang Date: Tue, 3 Jun 2025 10:32:19 +0800 Subject: [PATCH] feat: supports select @@session.time_zone (#6212) --- src/servers/src/mysql/federated.rs | 2 +- tests-integration/tests/sql.rs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/servers/src/mysql/federated.rs b/src/servers/src/mysql/federated.rs index b1ceff311d..fccca58b2a 100644 --- a/src/servers/src/mysql/federated.rs +++ b/src/servers/src/mysql/federated.rs @@ -183,7 +183,7 @@ fn select_variable(query: &str, query_context: QueryContextRef) -> Option query_context.timezone().to_string(), + "session.time_zone" | "time_zone" => query_context.timezone().to_string(), "system_time_zone" => system_timezone_name(), _ => VAR_VALUES .get(var_as[0]) diff --git a/tests-integration/tests/sql.rs b/tests-integration/tests/sql.rs index c5a1b441d3..8cc9f80dd5 100644 --- a/tests-integration/tests/sql.rs +++ b/tests-integration/tests/sql.rs @@ -339,6 +339,8 @@ pub async fn test_mysql_timezone(store_type: StorageType) { let timezone = conn.fetch_all("SELECT @@time_zone").await.unwrap(); assert_eq!(timezone[0].get::(0), "Asia/Shanghai"); + let timezone = conn.fetch_all("SELECT @@session.time_zone").await.unwrap(); + assert_eq!(timezone[0].get::(0), "Asia/Shanghai"); let timezone = conn.fetch_all("SELECT @@system_time_zone").await.unwrap(); assert_eq!(timezone[0].get::(0), "UTC"); let _ = conn.execute("SET time_zone = 'UTC'").await.unwrap(); @@ -367,6 +369,8 @@ pub async fn test_mysql_timezone(store_type: StorageType) { let _ = conn.execute("SET time_zone = '+08:00'").await.unwrap(); let timezone = conn.fetch_all("SELECT @@time_zone").await.unwrap(); assert_eq!(timezone[0].get::(0), "+08:00"); + let timezone = conn.fetch_all("SELECT @@session.time_zone").await.unwrap(); + assert_eq!(timezone[0].get::(0), "+08:00"); let rows2 = conn.fetch_all("select ts from demo").await.unwrap(); // we use Utc here for format only @@ -391,6 +395,8 @@ pub async fn test_mysql_timezone(store_type: StorageType) { ); let timezone = conn.fetch_all("SELECT @@time_zone").await.unwrap(); assert_eq!(timezone[0].get::(0), "-07:00"); + let timezone = conn.fetch_all("SELECT @@session.time_zone").await.unwrap(); + assert_eq!(timezone[0].get::(0), "-07:00"); let _ = fe_mysql_server.shutdown().await; guard.remove_all().await;