Skip to content

Commit 975fef0

Browse files
committed
fix: correct query feed into handler
1 parent 90eba67 commit 975fef0

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

datafusion-postgres/src/handlers.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,8 @@ impl SimpleQueryHandler for DfSessionService {
324324
statement = rewrite(statement, &self.sql_rewrite_rules);
325325

326326
// TODO: improve statement check by using statement directly
327-
let query_lower = statement.to_string().to_lowercase().trim().to_string();
327+
let query = statement.to_string();
328+
let query_lower = query.to_lowercase().trim().to_string();
328329

329330
// Check permissions for the query (skip for SET, transaction, and SHOW statements)
330331
if !query_lower.starts_with("set")
@@ -336,7 +337,7 @@ impl SimpleQueryHandler for DfSessionService {
336337
&& !query_lower.starts_with("abort")
337338
&& !query_lower.starts_with("show")
338339
{
339-
self.check_query_permission(client, query).await?;
340+
self.check_query_permission(client, &query).await?;
340341
}
341342

342343
if let Some(resp) = self.try_respond_set_statements(&query_lower).await? {
@@ -366,7 +367,7 @@ impl SimpleQueryHandler for DfSessionService {
366367
)));
367368
}
368369

369-
let df_result = self.session_context.sql(query).await;
370+
let df_result = self.session_context.sql(&query).await;
370371

371372
// Handle query execution errors and transaction state
372373
let df = match df_result {

datafusion-postgres/src/sql.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,14 @@ mod tests {
170170
statement.to_string(),
171171
"SELECT t1.oid, t2.* FROM tbl1 AS t1 JOIN tbl2 AS t2 ON t1.id = t2.id"
172172
);
173+
174+
let sql = "SELECT n.oid,n.*,d.description FROM pg_catalog.pg_namespace n LEFT OUTER JOIN pg_catalog.pg_description d ON d.objoid=n.oid AND d.objsubid=0 AND d.classoid='pg_namespace' ORDER BY nspsname";
175+
let statement = parse(sql).expect("Failed to parse").remove(0);
176+
177+
let statement = rewrite(statement, &rules);
178+
assert_eq!(
179+
statement.to_string(),
180+
"SELECT n.oid AS __alias_oid, n.*, d.description FROM pg_catalog.pg_namespace AS n LEFT OUTER JOIN pg_catalog.pg_description AS d ON d.objoid = n.oid AND d.objsubid = 0 AND d.classoid = 'pg_namespace' ORDER BY nspsname"
181+
);
173182
}
174183
}

0 commit comments

Comments
 (0)