This is an automated email from the ASF dual-hosted git repository.

jonah pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new f7efd2d31a fix: upper case qualifier wildcard bug (#12426)
f7efd2d31a is described below

commit f7efd2d31adb51a67dc6bfb6d6eae6a525d60482
Author: JasonLi <[email protected]>
AuthorDate: Thu Sep 12 10:31:15 2024 +0800

    fix: upper case qualifier wildcard bug (#12426)
---
 datafusion/sql/src/expr/mod.rs                  |  4 ++--
 datafusion/sql/src/select.rs                    |  6 ++----
 datafusion/sqllogictest/test_files/wildcard.slt | 25 +++++++++++++++++++++++++
 3 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/datafusion/sql/src/expr/mod.rs b/datafusion/sql/src/expr/mod.rs
index 6e975d8557..c79c6358be 100644
--- a/datafusion/sql/src/expr/mod.rs
+++ b/datafusion/sql/src/expr/mod.rs
@@ -27,7 +27,7 @@ use sqlparser::ast::{
 
 use datafusion_common::{
     internal_datafusion_err, internal_err, not_impl_err, plan_err, DFSchema, 
Result,
-    ScalarValue, TableReference,
+    ScalarValue,
 };
 use datafusion_expr::expr::ScalarFunction;
 use datafusion_expr::expr::{InList, WildcardOptions};
@@ -562,7 +562,7 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
                 options: WildcardOptions::default(),
             }),
             SQLExpr::QualifiedWildcard(object_name) => Ok(Expr::Wildcard {
-                qualifier: Some(TableReference::from(object_name.to_string())),
+                qualifier: 
Some(self.object_name_to_table_reference(object_name)?),
                 options: WildcardOptions::default(),
             }),
             SQLExpr::Tuple(values) => self.parse_tuple(schema, 
planner_context, values),
diff --git a/datafusion/sql/src/select.rs b/datafusion/sql/src/select.rs
index 8a26671fcb..500932b468 100644
--- a/datafusion/sql/src/select.rs
+++ b/datafusion/sql/src/select.rs
@@ -18,9 +18,7 @@
 use std::collections::HashSet;
 use std::sync::Arc;
 
-use crate::planner::{
-    idents_to_table_reference, ContextProvider, PlannerContext, SqlToRel,
-};
+use crate::planner::{ContextProvider, PlannerContext, SqlToRel};
 use crate::utils::{
     check_columns_satisfy_exprs, extract_aliases, rebase_expr, 
resolve_aliases_to_exprs,
     resolve_columns, resolve_positions_to_exprs, transform_bottom_unnests,
@@ -590,7 +588,7 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
             }
             SelectItem::QualifiedWildcard(object_name, options) => {
                 Self::check_wildcard_options(&options)?;
-                let qualifier = idents_to_table_reference(object_name.0, 
false)?;
+                let qualifier = 
self.object_name_to_table_reference(object_name)?;
                 let planned_options = self.plan_wildcard_options(
                     plan,
                     empty_from,
diff --git a/datafusion/sqllogictest/test_files/wildcard.slt 
b/datafusion/sqllogictest/test_files/wildcard.slt
index 9285bdbf23..7c076f040f 100644
--- a/datafusion/sqllogictest/test_files/wildcard.slt
+++ b/datafusion/sqllogictest/test_files/wildcard.slt
@@ -108,6 +108,31 @@ SELECT t1.*, tb2.* FROM t1 JOIN t2 tb2 ON t2_id = t1_id 
ORDER BY t1_id
 statement error Error during planning: Invalid qualifier agg
 SELECT agg.* FROM aggregate_simple ORDER BY c1
 
+# select_upper_case_qualified_wildcard
+query ITI
+SELECT PUBLIC.t1.* FROM PUBLIC.t1
+----
+11 a 1
+22 b 2
+33 c 3
+44 d 4
+
+query ITI
+SELECT PUBLIC.t1.* FROM public.t1
+----
+11 a 1
+22 b 2
+33 c 3
+44 d 4
+
+query ITI
+SELECT public.t1.* FROM PUBLIC.t1
+----
+11 a 1
+22 b 2
+33 c 3
+44 d 4
+
 ########
 # Clean up after the test
 ########


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to