Skip to content

Commit 5935964

Browse files
authored
feat(cubesql): QueryRouter - remove some MySQL functionality (#8818)
1 parent 8be688c commit 5935964

File tree

4 files changed

+22
-129
lines changed

4 files changed

+22
-129
lines changed

rust/cubesql/cubesql/src/compile/mod.rs

-20
Original file line numberDiff line numberDiff line change
@@ -5324,26 +5324,6 @@ ORDER BY
53245324
Ok(())
53255325
}
53265326

5327-
#[tokio::test]
5328-
async fn test_show_processlist() -> Result<(), CubeError> {
5329-
insta::assert_snapshot!(
5330-
"show_processlist",
5331-
execute_query("SHOW processlist".to_string(), DatabaseProtocol::MySQL).await?
5332-
);
5333-
5334-
Ok(())
5335-
}
5336-
5337-
#[tokio::test]
5338-
async fn test_show_warnings() -> Result<(), CubeError> {
5339-
insta::assert_snapshot!(
5340-
"show_warnings",
5341-
execute_query("SHOW warnings".to_string(), DatabaseProtocol::MySQL).await?
5342-
);
5343-
5344-
Ok(())
5345-
}
5346-
53475327
#[tokio::test]
53485328
async fn test_information_schema_collations() -> Result<(), CubeError> {
53495329
insta::assert_snapshot!(

rust/cubesql/cubesql/src/compile/router.rs

+22-89
Original file line numberDiff line numberDiff line change
@@ -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(

rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__show_processlist.snap

-10
This file was deleted.

rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__show_warnings.snap

-10
This file was deleted.

0 commit comments

Comments
 (0)