fix(mysql): use database-specific catalog switching
This commit is contained in:
1 parent
9571519179
commit
2152f8cde8
31 files changed
+818
-182
No files matched your search
@@ -25,6 +25,7 @@ pub async fn execute_query(
|
||||
database: String,
|
||||
sql: String,
|
||||
schema: Option<String>,
|
||||
catalog: Option<String>,
|
||||
execution_id: Option<String>,
|
||||
max_rows: Option<usize>,
|
||||
fetch_size: Option<usize>,
|
||||
@@ -54,6 +55,7 @@ pub async fn execute_query(
|
||||
max_rows,
|
||||
fetch_size,
|
||||
page_size,
|
||||
catalog,
|
||||
result_session_id,
|
||||
client_session_id,
|
||||
timeout_secs,
|
||||
@@ -74,6 +76,7 @@ pub async fn execute_multi(
|
||||
database: String,
|
||||
sql: String,
|
||||
schema: Option<String>,
|
||||
catalog: Option<String>,
|
||||
execution_id: Option<String>,
|
||||
max_rows: Option<usize>,
|
||||
fetch_size: Option<usize>,
|
||||
@@ -125,6 +128,7 @@ pub async fn execute_multi(
|
||||
max_rows,
|
||||
fetch_size,
|
||||
page_size,
|
||||
catalog,
|
||||
result_session_id,
|
||||
client_session_id,
|
||||
timeout_secs,
|
||||
@@ -167,9 +171,17 @@ pub async fn close_query_session(
|
||||
database: String,
|
||||
session_id: String,
|
||||
client_session_id: Option<String>,
|
||||
catalog: Option<String>,
|
||||
) -> Result<bool, String> {
|
||||
dbx_core::query::close_query_session(&state, &connection_id, &database, &session_id, client_session_id.as_deref())
|
||||
.await
|
||||
dbx_core::query::close_query_session(
|
||||
&state,
|
||||
&connection_id,
|
||||
&database,
|
||||
&session_id,
|
||||
client_session_id.as_deref(),
|
||||
catalog.as_deref(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
@@ -178,11 +190,20 @@ pub async fn close_client_connection_session(
|
||||
connection_id: String,
|
||||
database: String,
|
||||
client_session_id: String,
|
||||
catalog: Option<String>,
|
||||
) -> Result<bool, String> {
|
||||
let database = if database.trim().is_empty() { None } else { Some(database.as_str()) };
|
||||
let database = query_session_database(&database, catalog.as_deref());
|
||||
state.close_client_session_pool(&connection_id, database, &client_session_id).await
|
||||
}
|
||||
|
||||
fn query_session_database<'a>(database: &'a str, catalog: Option<&str>) -> Option<&'a str> {
|
||||
if database.trim().is_empty() || catalog.is_some() {
|
||||
None
|
||||
} else {
|
||||
Some(database)
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn execute_batch(
|
||||
state: State<'_, Arc<AppState>>,
|
||||
@@ -230,6 +251,7 @@ pub async fn execute_in_transaction(
|
||||
database: String,
|
||||
statements: Vec<String>,
|
||||
schema: Option<String>,
|
||||
catalog: Option<String>,
|
||||
) -> Result<db::QueryResult, String> {
|
||||
dbx_core::query::execute_statements_in_transaction(
|
||||
&state,
|
||||
@@ -237,6 +259,7 @@ pub async fn execute_in_transaction(
|
||||
&database,
|
||||
&statements,
|
||||
schema.as_deref(),
|
||||
catalog.as_deref(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
@@ -274,8 +297,10 @@ pub async fn begin_manual_transaction(
|
||||
connection_id: String,
|
||||
database: String,
|
||||
schema: Option<String>,
|
||||
catalog: Option<String>,
|
||||
) -> Result<String, String> {
|
||||
dbx_core::query::begin_manual_transaction(&state, &connection_id, &database, schema.as_deref()).await
|
||||
dbx_core::query::begin_manual_transaction(&state, &connection_id, &database, schema.as_deref(), catalog.as_deref())
|
||||
.await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
|
||||
Reference in new issue
Block a user