diff --git a/core/translate/alter.rs b/core/translate/alter.rs index 513f4e0ec..806db8aae 100644 --- a/core/translate/alter.rs +++ b/core/translate/alter.rs @@ -24,7 +24,7 @@ pub fn translate_alter_table( ) -> Result { let (table_name, alter_table) = alter; let table_name = table_name.name.as_str(); - if schema.table_has_indexes(&table_name) && !schema.indexes_enabled() { + if schema.table_has_indexes(table_name) && !schema.indexes_enabled() { // Let's disable altering a table with indices altogether instead of checking column by // column to be extra safe. crate::bail_parse_error!( @@ -32,10 +32,7 @@ pub fn translate_alter_table( ); } - let Some(original_btree) = schema - .get_table(&table_name) - .and_then(|table| table.btree()) - else { + let Some(original_btree) = schema.get_table(table_name).and_then(|table| table.btree()) else { return Err(LimboError::ParseError(format!( "no such table: {table_name}" ))); @@ -56,7 +53,7 @@ pub fn translate_alter_table( ))); } - let (dropped_index, column) = btree.get_column(&column_name).ok_or_else(|| { + let (dropped_index, column) = btree.get_column(column_name).ok_or_else(|| { LimboError::ParseError(format!("no such column: \"{column_name}\"")) })?; @@ -70,7 +67,7 @@ pub fn translate_alter_table( || btree.unique_sets.as_ref().is_some_and(|set| { set.iter().any(|set| { set.iter() - .any(|(name, _)| name == &normalize_ident(&column_name)) + .any(|(name, _)| name == &normalize_ident(column_name)) }) }) { @@ -218,13 +215,13 @@ pub fn translate_alter_table( let rename_from = old.as_str(); let rename_to = new.as_str(); - if btree.get_column(&rename_from).is_none() { + if btree.get_column(rename_from).is_none() { return Err(LimboError::ParseError(format!( "no such column: \"{rename_from}\"" ))); }; - if btree.get_column(&rename_to).is_some() { + if btree.get_column(rename_to).is_some() { return Err(LimboError::ParseError(format!( "duplicate column name: \"{rename_from}\"" ))); @@ -311,7 +308,7 @@ pub fn translate_alter_table( ast::AlterTableBody::RenameTo(new_name) => { let new_name = new_name.as_str(); - if schema.get_table(&new_name).is_some() { + if schema.get_table(new_name).is_some() { return Err(LimboError::ParseError(format!( "there is already another table or index with this name: {new_name}" ))); diff --git a/core/translate/display.rs b/core/translate/display.rs index 6f409376f..295a3dc86 100644 --- a/core/translate/display.rs +++ b/core/translate/display.rs @@ -560,7 +560,7 @@ impl ToTokens for UpdatePlan { .unwrap(); ast::Set { - col_names: ast::DistinctNames::single(ast::Name::from_str(&col_name)), + col_names: ast::DistinctNames::single(ast::Name::from_str(col_name)), expr: set_expr.clone(), } }), diff --git a/core/translate/insert.rs b/core/translate/insert.rs index 82a62bcac..8cf3220a2 100644 --- a/core/translate/insert.rs +++ b/core/translate/insert.rs @@ -279,7 +279,7 @@ pub fn translate_insert( // allocate cursor id's for each btree index cursor we'll need to populate the indexes // (idx name, root_page, idx cursor id) let idx_cursors = schema - .get_indices(&table_name.as_str()) + .get_indices(table_name.as_str()) .iter() .map(|idx| { ( @@ -445,7 +445,7 @@ pub fn translate_insert( }); let index = schema - .get_index(&table_name.as_str(), &index_col_mapping.idx_name) + .get_index(table_name.as_str(), &index_col_mapping.idx_name) .expect("index should be present"); let record_reg = program.alloc_register(); diff --git a/core/translate/mod.rs b/core/translate/mod.rs index d9439b4a3..cd129f419 100644 --- a/core/translate/mod.rs +++ b/core/translate/mod.rs @@ -158,7 +158,7 @@ pub fn translate_inner( ast::Stmt::DropIndex { if_exists, idx_name, - } => translate_drop_index(&idx_name.name.as_str(), if_exists, schema, program)?, + } => translate_drop_index(idx_name.name.as_str(), if_exists, schema, program)?, ast::Stmt::DropTable { if_exists, tbl_name, diff --git a/core/translate/pragma.rs b/core/translate/pragma.rs index 49b443165..88aa93707 100644 --- a/core/translate/pragma.rs +++ b/core/translate/pragma.rs @@ -234,7 +234,7 @@ fn update_pragma( if let Some(table) = &opts.table() { // make sure that we have table created program = translate_create_table( - QualifiedName::single(ast::Name::from_str(&table)), + QualifiedName::single(ast::Name::from_str(table)), false, ast::CreateTableBody::columns_and_constraints_from_definition( turso_cdc_table_columns(), diff --git a/core/translate/schema.rs b/core/translate/schema.rs index b3a2dfc06..a0b05e09f 100644 --- a/core/translate/schema.rs +++ b/core/translate/schema.rs @@ -290,7 +290,7 @@ fn check_automatic_pk_index_required( bail_parse_error!("No such column: {}", name.as_str()); } Ok(PrimaryKeyColumnInfo { - name: &name.as_str(), + name: name.as_str(), is_descending: matches!( col.order, Some(ast::SortOrder::Desc) diff --git a/core/util.rs b/core/util.rs index 4835427bd..4e7e7e942 100644 --- a/core/util.rs +++ b/core/util.rs @@ -1100,7 +1100,7 @@ pub fn parse_pragma_bool(expr: &Expr) -> Result { #[cfg(test)] pub mod tests { use super::*; - use turso_sqlite3_parser::ast::{self, Expr, Id, Literal, Name, Operator::*, Type}; + use turso_sqlite3_parser::ast::{self, Expr, Literal, Name, Operator::*, Type}; #[test] fn test_normalize_ident() { diff --git a/vendored/sqlite3-parser/src/parser/ast/mod.rs b/vendored/sqlite3-parser/src/parser/ast/mod.rs index 114456462..bf2c09b0a 100644 --- a/vendored/sqlite3-parser/src/parser/ast/mod.rs +++ b/vendored/sqlite3-parser/src/parser/ast/mod.rs @@ -1117,20 +1117,6 @@ pub struct GroupBy { pub having: Option>, // HAVING clause on a non-aggregate query } -/// identifier or one of several keywords or `INDEXED` -#[derive(Clone, Debug, PartialEq, Eq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct Id(pub String); - -impl Id { - /// Constructor - pub fn from_token(ty: YYCODETYPE, token: Token) -> Self { - Self(from_token(ty, token)) - } -} - -// TODO ids (identifier or string) - /// identifier or string or `CROSS` or `FULL` or `INNER` or `LEFT` or `NATURAL` or `OUTER` or `RIGHT`. #[derive(Clone, Debug, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -1180,6 +1166,7 @@ impl Name { } /// Identifying from a string + #[allow(clippy::should_implement_trait)] pub fn from_str(s: &str) -> Self { let bytes = s.as_bytes(); if s.is_empty() {