@@ -17,7 +17,7 @@ use sqlparser::ast::{AlterColumnOperation, AlterTableOperation, ColumnOption, Ob
1717use std:: borrow:: Cow ;
1818
1919use super :: { attach_span_if_absent, is_valid_identifier, Binder } ;
20- use crate :: binder:: lower_case_name;
20+ use crate :: binder:: { lower_case_name, lower_ident } ;
2121use crate :: catalog:: TableName ;
2222use crate :: errors:: DatabaseError ;
2323use crate :: expression:: ScalarExpression ;
@@ -137,11 +137,11 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
137137 old_column_name,
138138 new_column_name,
139139 } => {
140- let old_column_name = old_column_name . value . to_lowercase ( ) ;
141- let new_column_name = new_column_name. value . to_lowercase ( ) ;
140+ let old_column_name = lower_ident ( old_column_name ) ;
141+ let new_column_name = lower_ident ( new_column_name) . into_owned ( ) ;
142142 let old_column = table
143- . get_column_by_name ( & old_column_name)
144- . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. clone ( ) ) ) ?;
143+ . get_column_by_name ( old_column_name. as_ref ( ) )
144+ . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. to_string ( ) ) ) ?;
145145
146146 if !is_valid_identifier ( & new_column_name) {
147147 return Err ( DatabaseError :: invalid_column (
@@ -152,7 +152,7 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
152152 LogicalPlan :: new (
153153 Operator :: ChangeColumn ( ChangeColumnOperator {
154154 table_name,
155- old_column_name,
155+ old_column_name : old_column_name . into_owned ( ) ,
156156 new_column_name,
157157 data_type : old_column. datatype ( ) . clone ( ) ,
158158 default_change : DefaultChange :: NoChange ,
@@ -162,10 +162,10 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
162162 )
163163 }
164164 AlterTableOperation :: AlterColumn { column_name, op } => {
165- let old_column_name = column_name . value . to_lowercase ( ) ;
165+ let old_column_name = lower_ident ( column_name ) ;
166166 let old_column = table
167- . get_column_by_name ( & old_column_name)
168- . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. clone ( ) ) ) ?;
167+ . get_column_by_name ( old_column_name. as_ref ( ) )
168+ . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. to_string ( ) ) ) ?;
169169 let old_data_type = old_column. datatype ( ) . clone ( ) ;
170170
171171 let ( data_type, default_change, not_null_change) = match op {
@@ -213,8 +213,8 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
213213 LogicalPlan :: new (
214214 Operator :: ChangeColumn ( ChangeColumnOperator {
215215 table_name,
216- new_column_name : old_column_name. clone ( ) ,
217- old_column_name,
216+ new_column_name : old_column_name. to_string ( ) ,
217+ old_column_name : old_column_name . into_owned ( ) ,
218218 data_type,
219219 default_change,
220220 not_null_change,
@@ -233,10 +233,11 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
233233 "MODIFY COLUMN does not currently support column positions" . to_string ( ) ,
234234 ) ) ;
235235 }
236- let old_column_name = col_name . value . to_lowercase ( ) ;
236+ let old_column_name = lower_ident ( col_name ) ;
237237 let _ = table
238- . get_column_by_name ( & old_column_name)
239- . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. clone ( ) ) ) ?;
238+ . get_column_by_name ( old_column_name. as_ref ( ) )
239+ . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. to_string ( ) ) ) ?;
240+ let old_column_name = old_column_name. into_owned ( ) ;
240241 let data_type = LogicalType :: try_from ( data_type. clone ( ) ) ?;
241242 let ( default_change, not_null_change) =
242243 self . bind_change_column_options ( options, & data_type) ?;
@@ -265,11 +266,11 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
265266 "CHANGE COLUMN does not currently support column positions" . to_string ( ) ,
266267 ) ) ;
267268 }
268- let old_column_name = old_name . value . to_lowercase ( ) ;
269- let new_column_name = new_name. value . to_lowercase ( ) ;
269+ let old_column_name = lower_ident ( old_name ) ;
270+ let new_column_name = lower_ident ( new_name) . into_owned ( ) ;
270271 let _ = table
271- . get_column_by_name ( & old_column_name)
272- . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. clone ( ) ) ) ?;
272+ . get_column_by_name ( old_column_name. as_ref ( ) )
273+ . ok_or_else ( || DatabaseError :: column_not_found ( old_column_name. to_string ( ) ) ) ?;
273274
274275 if !is_valid_identifier ( & new_column_name) {
275276 return Err ( DatabaseError :: invalid_column (
@@ -283,7 +284,7 @@ impl<T: Transaction, A: AsRef<[(&'static str, DataValue)]>> Binder<'_, '_, T, A>
283284 LogicalPlan :: new (
284285 Operator :: ChangeColumn ( ChangeColumnOperator {
285286 table_name,
286- old_column_name,
287+ old_column_name : old_column_name . into_owned ( ) ,
287288 new_column_name,
288289 data_type,
289290 default_change,
0 commit comments