From f91cd250f8752f215b8157c468afd01012f2bd35 Mon Sep 17 00:00:00 2001 From: Zou Wei <47681251+QuenKar@users.noreply.github.com> Date: Fri, 9 Jun 2023 11:38:52 +0800 Subject: [PATCH] feat:make version() show greptime info. (#1749) * feat:impl get_version() to return greptime info. * fix: refactor test case. --- src/servers/src/mysql/federated.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/servers/src/mysql/federated.rs b/src/servers/src/mysql/federated.rs index 18ff814433..f6c0909e11 100644 --- a/src/servers/src/mysql/federated.rs +++ b/src/servers/src/mysql/federated.rs @@ -16,6 +16,7 @@ //! Inspired by Databend's "[mysql_federated.rs](https://github.com/datafuselabs/databend/blob/ac706bf65845e6895141c96c0a10bad6fdc2d367/src/query/service/src/servers/mysql/mysql_federated.rs)". use std::collections::HashMap; +use std::env; use std::sync::Arc; use common_query::Output; @@ -30,8 +31,6 @@ use regex::bytes::RegexSet; use regex::Regex; use session::context::QueryContextRef; -const MYSQL_VERSION: &str = "8.0.26"; - static SELECT_VAR_PATTERN: Lazy = Lazy::new(|| Regex::new("(?i)^(SELECT @@(.*))").unwrap()); static MYSQL_CONN_JAVA_PATTERN: Lazy = Lazy::new(|| Regex::new("(?i)^(/\\* mysql-connector-j(.*))").unwrap()); @@ -284,7 +283,7 @@ fn check_others(query: &str, query_ctx: QueryContextRef) -> Option { } let recordbatches = if SELECT_VERSION_PATTERN.is_match(query) { - Some(select_function("version()", MYSQL_VERSION)) + Some(select_function("version()", &get_version())) } else if SELECT_DATABASE_PATTERN.is_match(query) { let schema = query_ctx.current_schema(); Some(select_function("database()", &schema)) @@ -317,8 +316,16 @@ pub(crate) fn check(query: &str, query_ctx: QueryContextRef) -> Option { .or_else(|| check_others(query, query_ctx)) } +// get GreptimeDB's version. +fn get_version() -> String { + format!( + "{}-greptime", + env::var("CARGO_PKG_VERSION").unwrap_or_else(|_| "unknown".to_string()), + ) +} #[cfg(test)] mod test { + use session::context::QueryContext; use super::*; @@ -344,13 +351,15 @@ mod test { } let query = "select version()"; - let expected = "\ -+-----------+ -| version() | -+-----------+ -| 8.0.26 | -+-----------+"; - test(query, expected); + let expected = format!( + r#"+----------------+ +| version() | ++----------------+ +| {}-greptime | ++----------------+"#, + env::var("CARGO_PKG_VERSION").unwrap_or_else(|_| "unknown".to_string()) + ); + test(query, &expected); let query = "SELECT @@version_comment LIMIT 1"; let expected = "\