Skip to content

Commit 97a27b8

Browse files
authored
Merge pull request #10656 from SkyFan2002/exclude
fix(exclude): column name case issue
2 parents 0e9a047 + af0c0f0 commit 97a27b8

File tree

3 files changed

+92
-14
lines changed

3 files changed

+92
-14
lines changed

src/query/sql/src/planner/binder/project.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,13 @@ impl Binder {
168168
// Handle qualified name as select target
169169
let mut exclude_cols: HashSet<String> = HashSet::new();
170170
if let Some(cols) = exclude {
171+
let is_unquoted_ident_case_sensitive =
172+
self.name_resolution_ctx.unquoted_ident_case_sensitive;
171173
for col in cols {
172-
exclude_cols.insert(col.name.clone());
174+
let name = is_unquoted_ident_case_sensitive
175+
.then(|| col.name.clone())
176+
.unwrap_or_else(|| col.name.to_lowercase());
177+
exclude_cols.insert(name);
173178
}
174179
if exclude_cols.len() < cols.len() {
175180
// * except (id, id)

src/query/sql/src/planner/optimizer/rule/rewrite/rule_push_down_filter_eval_scalar.rs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ use crate::plans::PatternPlan;
3434
use crate::plans::RelOp;
3535
use crate::plans::ScalarExpr;
3636
use crate::plans::ScalarItem;
37-
use crate::plans::Unnest;
3837
use crate::plans::WindowFunc;
3938

4039
pub struct RulePushDownFilterEvalScalar {
@@ -249,18 +248,6 @@ impl RulePushDownFilterEvalScalar {
249248
func_name: func.func_name.clone(),
250249
}))
251250
}
252-
ScalarExpr::Unnest(unnest) => {
253-
let arg = Self::replace_predicate(
254-
&unnest.argument,
255-
items,
256-
eval_scalar_columns,
257-
eval_scalar_child_columns,
258-
)?;
259-
Ok(ScalarExpr::Unnest(Unnest {
260-
argument: Box::new(arg),
261-
return_type: unnest.return_type.clone(),
262-
}))
263-
}
264251
ScalarExpr::CastExpr(cast) => {
265252
let arg = Self::replace_predicate(
266253
&cast.argument,

tests/sqllogictests/suites/base/03_common/03_0034_select_exclude_list

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,92 @@ statement error 1065
140140
select * exclude (id, id) from db.t
141141

142142

143+
query I
144+
select * exclude C1 from db.t
145+
----
146+
1
147+
148+
149+
query T
150+
select * exclude (ID) from db.t
151+
----
152+
(0,0)
153+
154+
155+
query T
156+
select t.* exclude (ID) from db.t
157+
----
158+
(0,0)
159+
160+
161+
query T
162+
select db.t.* exclude (ID) from db.t
163+
----
164+
(0,0)
165+
166+
167+
statement error 1065
168+
select db.t.* exclude (ID, C1) from db.t
169+
170+
171+
query T
172+
select c.* exclude (ID) from db.t as c
173+
----
174+
(0,0)
175+
176+
177+
statement error 1065
178+
select db.c.* exclude (ID) from db.t as c
179+
180+
181+
statement error 1065
182+
select * exclude ID from (select t.id as id, t.c1 as id from db.t) t1
183+
184+
185+
statement error 1065
186+
select t1.* exclude ID from (select t.id as id, t.c1 as id from db.t) t1
187+
188+
189+
query ITITITIIT
190+
select *, t.* exclude C1, t1.* exclude (C1), t2.* exclude ID from db.t join db.t1 on t.id != t1.id join default.t as t2 on t.id=t2.id
191+
----
192+
1 (0,0) 2 (0,0) 1 (100,100) 1 2 (100,100)
193+
194+
195+
query IT
196+
select db.t.* exclude (C1), default.t1.* exclude ID from db.t join default.t1
197+
----
198+
1 (200,200)
199+
200+
201+
statement error 1065
202+
select * exclude ID from default.t1 join db.t
203+
204+
205+
statement error 1065
206+
select db.t.* exclude (C1), default.t1.* exclude IDCC from db.t join default.t1
207+
208+
209+
statement error 1065
210+
select * exclude C10 from (select * from db.t) t1
211+
212+
213+
statement error 1065
214+
select * exclude (ID, C1) from (select * from db.t) t1
215+
216+
217+
statement error 1065
218+
select t1.* exclude (ID, C1) from (select * from db.t) t1
219+
220+
221+
statement error 1065
222+
select * exclude (C1, C1) from db.t
223+
224+
225+
statement error 1065
226+
select * exclude (ID, ID) from db.t
227+
228+
143229
statement ok
144230
drop database if exists db
145231

0 commit comments

Comments
 (0)