Skip to content

Commit d9bc20c

Browse files
committed
fix: changes broken by the merge
1 parent 7e7abab commit d9bc20c

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/database/oracle/mod.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ use std::sync::Arc;
55
use async_trait::async_trait;
66
use color_eyre::eyre::Result;
77
use connect_options::OracleConnectOptions;
8-
use oracle::{pool::Pool, Connection};
8+
use oracle::{Connection, pool::Pool};
99
use sqlparser::ast::Statement;
1010
use tokio::task::JoinHandle;
1111

1212
use crate::cli::Driver;
1313

1414
use super::{Database, DbTaskResult, Header, QueryResultsWithMetadata, QueryTask, Rows};
1515

16-
type TransactionTask = JoinHandle<(QueryResultsWithMetadata, Connection)>;
16+
type TransactionTask = JoinHandle<Result<(QueryResultsWithMetadata, Connection)>>;
1717
enum OracleTask {
1818
Query(QueryTask),
1919
TxStart(TransactionTask),
@@ -45,14 +45,14 @@ impl Database for OracleDriver {
4545
Ok(())
4646
}
4747

48-
fn start_query(&mut self, query: String) -> Result<()> {
48+
async fn start_query(&mut self, query: String, bypass_parser: bool) -> Result<()> {
4949
let (first_query, statement_type) = super::get_first_query(query, Driver::Oracle)?;
5050
let pool = self.pool.clone().unwrap();
5151

5252
let task = match statement_type {
5353
Statement::Query(_) => OracleTask::Query(tokio::spawn(async move {
5454
let results = query_with_pool(&pool, &first_query);
55-
QueryResultsWithMetadata { results, statement_type }
55+
QueryResultsWithMetadata { results, statement_type: Some(statement_type) }
5656
})),
5757
_ => OracleTask::TxStart(tokio::spawn(async move {
5858
let conn = pool.get()?;
@@ -65,7 +65,7 @@ impl Database for OracleDriver {
6565
log::error!("{e:?}");
6666
},
6767
};
68-
(QueryResultsWithMetadata { results, statement_type }, conn)
68+
Ok((QueryResultsWithMetadata { results, statement_type: Some(statement_type) }, conn))
6969
})),
7070
};
7171

@@ -74,7 +74,7 @@ impl Database for OracleDriver {
7474
Ok(())
7575
}
7676

77-
fn abort_query(&mut self) -> Result<bool> {
77+
async fn abort_query(&mut self) -> Result<bool> {
7878
if let Some(task) = self.task.take() {
7979
match task {
8080
OracleTask::Query(handle) => handle.abort(),
@@ -101,7 +101,7 @@ impl Database for OracleDriver {
101101
if !handle.is_finished() {
102102
(DbTaskResult::Pending, Some(OracleTask::TxStart(handle)))
103103
} else {
104-
let (result, tx) = handle.await?;
104+
let (result, tx) = handle.await??;
105105
let rows_affected = match &result.results {
106106
Ok(rows) => rows.rows_affected,
107107
_ => None,
@@ -119,12 +119,13 @@ impl Database for OracleDriver {
119119
}
120120

121121
async fn start_tx(&mut self, query: String) -> Result<()> {
122-
Self::start_query(self, query)
122+
Self::start_query(self, query, false).await
123123
}
124124

125125
async fn commit_tx(&mut self) -> Result<Option<QueryResultsWithMetadata>> {
126126
if let Some(OracleTask::TxPending(b)) = self.task.take() {
127-
tokio::task::spawn_blocking(|| b.0.commit()).await??;
127+
let conn = b.0;
128+
tokio::task::spawn_blocking(move || conn.commit()).await??;
128129
Ok(Some(b.1))
129130
} else {
130131
Ok(None)
@@ -172,7 +173,7 @@ fn query_with_pool(pool: &Pool, query: &str) -> Result<Rows> {
172173
let mut headers = Vec::new();
173174
let rows = pool
174175
.get()?
175-
.query(&query, &[])
176+
.query(query, &[])
176177
.map_err(|e| color_eyre::eyre::eyre!("Error executing query: {}", e))?
177178
.filter_map(|row| row.ok())
178179
.map(|row| {
@@ -209,7 +210,7 @@ mod tests {
209210
use sqlparser::{ast::Statement, parser::ParserError};
210211

211212
use super::*;
212-
use crate::database::{get_execution_type, get_first_query, ExecutionType, ParseError};
213+
use crate::database::{ExecutionType, ParseError, get_execution_type, get_first_query};
213214

214215
#[test]
215216
fn test_get_first_query() {

0 commit comments

Comments
 (0)