diff --git a/Cargo.lock b/Cargo.lock index 78bf4b7..5676d73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -934,7 +934,7 @@ dependencies = [ [[package]] name = "columnq" -version = "0.5.0" +version = "0.6.0" dependencies = [ "anyhow", "arrow-schema", diff --git a/columnq/Cargo.toml b/columnq/Cargo.toml index 04135bb..5eb9697 100644 --- a/columnq/Cargo.toml +++ b/columnq/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "columnq" -version = "0.5.0" +version = "0.6.0" homepage = "https://github.com/roapi/roapi" license = "MIT" authors = ["QP Hou "] diff --git a/roapi/src/server/postgres.rs b/roapi/src/server/postgres.rs index 87be5f2..edf04fd 100644 --- a/roapi/src/server/postgres.rs +++ b/roapi/src/server/postgres.rs @@ -42,6 +42,12 @@ pub struct RoapiContextEngine { pub ctx: Arc, } +impl RoapiContextEngine { + fn ignored_statement(statement: &Statement) -> bool { + !matches!(statement, Statement::Query { .. }) + } +} + #[async_trait] impl Engine for RoapiContextEngine { type PortalType = DataFusionPortal; @@ -50,6 +56,9 @@ impl Engine for RoapiContextEngine { &mut self, statement: &Statement, ) -> Result, ErrorResponse> { + if RoapiContextEngine::::ignored_statement(statement) { + return Ok(vec![]); + } let query = statement.to_string(); info!("preparing query: {}", &query); let df = self.ctx.sql_to_df(&query).await.map_err(df_err_to_sql)?; @@ -60,9 +69,19 @@ impl Engine for RoapiContextEngine { &mut self, statement: &Statement, ) -> Result { - let query = statement.to_string(); - let df = self.ctx.sql_to_df(&query).await.map_err(df_err_to_sql)?; - Ok(DataFusionPortal { df }) + if RoapiContextEngine::::ignored_statement(statement) { + Ok(DataFusionPortal { + df: self + .ctx + .sql_to_df("SELECT 1 WHERE 1 = 2") + .await + .map_err(df_err_to_sql)?, + }) + } else { + let query = statement.to_string(); + let df = self.ctx.sql_to_df(&query).await.map_err(df_err_to_sql)?; + Ok(DataFusionPortal { df }) + } } }