From c602c3a547d9e8e97d9852400f3aabce8a8c8a9e Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Wed, 1 Mar 2023 21:33:42 +0800 Subject: [PATCH 1/2] refactor: `LikeExpr::str()` is being deprecated --- src/expr.rs | 2 +- tests/mysql/query.rs | 2 +- tests/postgres/query.rs | 2 +- tests/sqlite/query.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/expr.rs b/src/expr.rs index 052a53833..3773f8952 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -1095,7 +1095,7 @@ impl Expr { /// let query = Query::select() /// .columns([Char::Character, Char::SizeW, Char::SizeH]) /// .from(Char::Table) - /// .and_where(Expr::col((Char::Table, Char::Character)).like(LikeExpr::str(r"|_Our|_").escape('|'))) + /// .and_where(Expr::col((Char::Table, Char::Character)).like(LikeExpr::new(r"|_Our|_").escape('|'))) /// .to_owned(); /// /// assert_eq!( diff --git a/tests/mysql/query.rs b/tests/mysql/query.rs index a3516026b..238db726d 100644 --- a/tests/mysql/query.rs +++ b/tests/mysql/query.rs @@ -995,7 +995,7 @@ fn select_58() { Query::select() .column(Char::Character) .from(Char::Table) - .and_where(Expr::col(Char::Character).like(LikeExpr::str("A").escape('\\'))) + .and_where(Expr::col(Char::Character).like(LikeExpr::new("A").escape('\\'))) .build(MysqlQueryBuilder), ( r#"SELECT `character` FROM `character` WHERE `character` LIKE ? ESCAPE '\\'"# diff --git a/tests/postgres/query.rs b/tests/postgres/query.rs index ec8a579f1..70480903a 100644 --- a/tests/postgres/query.rs +++ b/tests/postgres/query.rs @@ -1058,7 +1058,7 @@ fn select_61() { Query::select() .column(Char::Character) .from(Char::Table) - .and_where(Expr::col(Char::Character).like(LikeExpr::str("A").escape('\\'))) + .and_where(Expr::col(Char::Character).like(LikeExpr::new("A").escape('\\'))) .build(PostgresQueryBuilder), ( r#"SELECT "character" FROM "character" WHERE "character" LIKE $1 ESCAPE E'\\'"# diff --git a/tests/sqlite/query.rs b/tests/sqlite/query.rs index afaaa3401..1b67fc454 100644 --- a/tests/sqlite/query.rs +++ b/tests/sqlite/query.rs @@ -983,7 +983,7 @@ fn select_58() { Query::select() .column(Char::Character) .from(Char::Table) - .and_where(Expr::col(Char::Character).like(LikeExpr::str("A").escape('\\'))) + .and_where(Expr::col(Char::Character).like(LikeExpr::new("A").escape('\\'))) .build(SqliteQueryBuilder), ( r#"SELECT "character" FROM "character" WHERE "character" LIKE ? ESCAPE '\'"#.to_owned(), From 5dd08414480e69263336962bb3b0ab7d296bd2d9 Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Wed, 1 Mar 2023 21:34:21 +0800 Subject: [PATCH 2/2] refactor: hard coded quotes --- src/backend/mysql/foreign_key.rs | 18 ++++++++++++++++-- src/backend/mysql/query.rs | 1 - src/backend/postgres/foreign_key.rs | 18 ++++++++++++++++-- src/backend/postgres/query.rs | 1 - src/backend/query_builder.rs | 4 ++-- src/backend/sqlite/foreign_key.rs | 9 ++++++++- src/backend/sqlite/query.rs | 1 - 7 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/backend/mysql/foreign_key.rs b/src/backend/mysql/foreign_key.rs index c39826061..6dc749cd7 100644 --- a/src/backend/mysql/foreign_key.rs +++ b/src/backend/mysql/foreign_key.rs @@ -24,7 +24,14 @@ impl ForeignKeyBuilder for MysqlQueryBuilder { write!(sql, "DROP FOREIGN KEY ").unwrap(); if let Some(name) = &drop.foreign_key.name { - write!(sql, "`{name}`").unwrap(); + write!( + sql, + "{}{}{}", + self.quote().left(), + name, + self.quote().right() + ) + .unwrap(); } } @@ -48,7 +55,14 @@ impl ForeignKeyBuilder for MysqlQueryBuilder { write!(sql, "CONSTRAINT ").unwrap(); if let Some(name) = &create.foreign_key.name { - write!(sql, "`{name}`").unwrap(); + write!( + sql, + "{}{}{}", + self.quote().left(), + name, + self.quote().right() + ) + .unwrap(); } write!(sql, " FOREIGN KEY ").unwrap(); diff --git a/src/backend/mysql/query.rs b/src/backend/mysql/query.rs index 7f01653c5..d9ac461ec 100644 --- a/src/backend/mysql/query.rs +++ b/src/backend/mysql/query.rs @@ -51,7 +51,6 @@ impl QueryBuilder for MysqlQueryBuilder { } if !matches!(order_expr.order, Order::Field(_)) { self.prepare_simple_expr(&order_expr.expr, sql); - write!(sql, " ").unwrap(); } self.prepare_order(order_expr, sql); } diff --git a/src/backend/postgres/foreign_key.rs b/src/backend/postgres/foreign_key.rs index 4081f54d6..4be44d1dd 100644 --- a/src/backend/postgres/foreign_key.rs +++ b/src/backend/postgres/foreign_key.rs @@ -17,7 +17,14 @@ impl ForeignKeyBuilder for PostgresQueryBuilder { write!(sql, "DROP CONSTRAINT ").unwrap(); if let Some(name) = &drop.foreign_key.name { - write!(sql, "\"{name}\"").unwrap(); + write!( + sql, + "{}{}{}", + self.quote().left(), + name, + self.quote().right() + ) + .unwrap(); } } @@ -41,7 +48,14 @@ impl ForeignKeyBuilder for PostgresQueryBuilder { if let Some(name) = &create.foreign_key.name { write!(sql, "CONSTRAINT ").unwrap(); - write!(sql, "\"{name}\" ").unwrap(); + write!( + sql, + "{}{}{} ", + self.quote().left(), + name, + self.quote().right() + ) + .unwrap(); } write!(sql, "FOREIGN KEY (").unwrap(); diff --git a/src/backend/postgres/query.rs b/src/backend/postgres/query.rs index 1921f18de..4a51ac081 100644 --- a/src/backend/postgres/query.rs +++ b/src/backend/postgres/query.rs @@ -95,7 +95,6 @@ impl QueryBuilder for PostgresQueryBuilder { fn prepare_order_expr(&self, order_expr: &OrderExpr, sql: &mut dyn SqlWriter) { if !matches!(order_expr.order, Order::Field(_)) { self.prepare_simple_expr(&order_expr.expr, sql); - write!(sql, " ").unwrap(); } self.prepare_order(order_expr, sql); match order_expr.nulls { diff --git a/src/backend/query_builder.rs b/src/backend/query_builder.rs index 37f520318..2117b66a4 100644 --- a/src/backend/query_builder.rs +++ b/src/backend/query_builder.rs @@ -845,8 +845,8 @@ pub trait QueryBuilder: QuotedBuilder + EscapeBuilder + TableRefBuilder { /// Translate [`Order`] into SQL statement. fn prepare_order(&self, order_expr: &OrderExpr, sql: &mut dyn SqlWriter) { match &order_expr.order { - Order::Asc => write!(sql, "ASC").unwrap(), - Order::Desc => write!(sql, "DESC").unwrap(), + Order::Asc => write!(sql, " ASC").unwrap(), + Order::Desc => write!(sql, " DESC").unwrap(), Order::Field(values) => self.prepare_field_order(order_expr, values, sql), } } diff --git a/src/backend/sqlite/foreign_key.rs b/src/backend/sqlite/foreign_key.rs index 23f7f2f11..ab138144e 100644 --- a/src/backend/sqlite/foreign_key.rs +++ b/src/backend/sqlite/foreign_key.rs @@ -20,7 +20,14 @@ impl ForeignKeyBuilder for SqliteQueryBuilder { write!(sql, "DROP FOREIGN KEY ").unwrap(); if let Some(name) = &drop.foreign_key.name { - write!(sql, "`{name}`").unwrap(); + write!( + sql, + "{}{}{}", + self.quote().left(), + name, + self.quote().right() + ) + .unwrap(); } } diff --git a/src/backend/sqlite/query.rs b/src/backend/sqlite/query.rs index 5dbfb27ed..f89d207d8 100644 --- a/src/backend/sqlite/query.rs +++ b/src/backend/sqlite/query.rs @@ -62,7 +62,6 @@ impl QueryBuilder for SqliteQueryBuilder { fn prepare_order_expr(&self, order_expr: &OrderExpr, sql: &mut dyn SqlWriter) { if !matches!(order_expr.order, Order::Field(_)) { self.prepare_simple_expr(&order_expr.expr, sql); - write!(sql, " ").unwrap(); } self.prepare_order(order_expr, sql); match order_expr.nulls {