@@ -230,101 +230,34 @@ impl QueryRouter {
230230 variable : & Vec < ast:: Ident > ,
231231 span_id : Option < Arc < SpanId > > ,
232232 ) -> CompilationResult < QueryPlan > {
233- let name = variable. to_vec ( ) [ 0 ] . value . clone ( ) ;
234- if self . state . protocol == DatabaseProtocol :: PostgreSQL {
235- let full_variable = variable. iter ( ) . map ( |v| v. value . to_lowercase ( ) ) . join ( "_" ) ;
236- let full_variable = match full_variable. as_str ( ) {
237- "transaction_isolation_level" => "transaction_isolation" ,
238- x => x,
239- } ;
240- let stmt = if name. eq_ignore_ascii_case ( "all" ) {
241- parse_sql_to_statement (
242- & "SELECT name, setting, short_desc as description FROM pg_catalog.pg_settings"
243- . to_string ( ) ,
244- self . state . protocol . clone ( ) ,
245- & mut None ,
246- ) ?
247- } else {
248- parse_sql_to_statement (
249- // TODO: column name might be expected to match variable name
250- & format ! (
251- "SELECT setting FROM pg_catalog.pg_settings where name = '{}'" ,
252- escape_single_quote_string( full_variable) ,
253- ) ,
254- self . state . protocol . clone ( ) ,
255- & mut None ,
256- ) ?
257- } ;
233+ let full_variable = variable. iter ( ) . map ( |v| v. value . to_lowercase ( ) ) . join ( "_" ) ;
234+ let full_variable = match full_variable. as_str ( ) {
235+ "transaction_isolation_level" => "transaction_isolation" ,
236+ x => x,
237+ } ;
258238
259- self . create_df_logical_plan ( stmt, & mut None , span_id. clone ( ) )
260- . await
261- } else if name. eq_ignore_ascii_case ( "databases" ) || name. eq_ignore_ascii_case ( "schemas" ) {
262- Ok ( QueryPlan :: MetaTabular (
263- StatusFlags :: empty ( ) ,
264- Box :: new ( dataframe:: DataFrame :: new (
265- vec ! [ dataframe:: Column :: new(
266- "Database" . to_string( ) ,
267- ColumnType :: String ,
268- ColumnFlags :: empty( ) ,
269- ) ] ,
270- vec ! [
271- dataframe:: Row :: new( vec![ dataframe:: TableValue :: String ( "db" . to_string( ) ) ] ) ,
272- dataframe:: Row :: new( vec![ dataframe:: TableValue :: String (
273- "information_schema" . to_string( ) ,
274- ) ] ) ,
275- dataframe:: Row :: new( vec![ dataframe:: TableValue :: String (
276- "mysql" . to_string( ) ,
277- ) ] ) ,
278- dataframe:: Row :: new( vec![ dataframe:: TableValue :: String (
279- "performance_schema" . to_string( ) ,
280- ) ] ) ,
281- dataframe:: Row :: new( vec![ dataframe:: TableValue :: String ( "sys" . to_string( ) ) ] ) ,
282- ] ,
283- ) ) ,
284- ) )
285- } else if name. eq_ignore_ascii_case ( "processlist" ) {
286- let stmt = parse_sql_to_statement (
287- & "SELECT * FROM information_schema.processlist" . to_string ( ) ,
239+ let name = variable. to_vec ( ) [ 0 ] . value . clone ( ) ;
240+ let stmt = if name. eq_ignore_ascii_case ( "all" ) {
241+ parse_sql_to_statement (
242+ & "SELECT name, setting, short_desc as description FROM pg_catalog.pg_settings"
243+ . to_string ( ) ,
288244 self . state . protocol . clone ( ) ,
289245 & mut None ,
290- ) ?;
291-
292- self . create_df_logical_plan ( stmt, & mut None , span_id. clone ( ) )
293- . await
294- } else if name. eq_ignore_ascii_case ( "warnings" ) {
295- Ok ( QueryPlan :: MetaTabular (
296- StatusFlags :: empty ( ) ,
297- Box :: new ( dataframe:: DataFrame :: new (
298- vec ! [
299- dataframe:: Column :: new(
300- "Level" . to_string( ) ,
301- ColumnType :: VarStr ,
302- ColumnFlags :: NOT_NULL ,
303- ) ,
304- dataframe:: Column :: new(
305- "Code" . to_string( ) ,
306- ColumnType :: Int32 ,
307- ColumnFlags :: NOT_NULL | ColumnFlags :: UNSIGNED ,
308- ) ,
309- dataframe:: Column :: new(
310- "Message" . to_string( ) ,
311- ColumnType :: VarStr ,
312- ColumnFlags :: NOT_NULL ,
313- ) ,
314- ] ,
315- vec ! [ ] ,
316- ) ) ,
317- ) )
246+ ) ?
318247 } else {
319- self . create_df_logical_plan (
320- ast:: Statement :: ShowVariable {
321- variable : variable. clone ( ) ,
322- } ,
248+ parse_sql_to_statement (
249+ // TODO: column name might be expected to match variable name
250+ & format ! (
251+ "SELECT setting FROM pg_catalog.pg_settings where name = '{}'" ,
252+ escape_single_quote_string( full_variable) ,
253+ ) ,
254+ self . state . protocol . clone ( ) ,
323255 & mut None ,
324- span_id. clone ( ) ,
325- )
256+ ) ?
257+ } ;
258+
259+ self . create_df_logical_plan ( stmt, & mut None , span_id. clone ( ) )
326260 . await
327- }
328261 }
329262
330263 fn explain_to_plan (
0 commit comments