Skip to content

Commit 8d6ebaf

Browse files
authored
chore(ast): unify all of {escape,unescape,quote,unquote}_{string/at_string/ident} (#15548)
* chore(ast): unify all of {escape,unescape,quote,unquote}_{string/at_string/ident} * fix * fix
1 parent 83183bd commit 8d6ebaf

File tree

20 files changed

+433
-426
lines changed

20 files changed

+433
-426
lines changed

src/query/ast/src/ast/common.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use databend_common_exception::Span;
1919
use derive_visitor::Drive;
2020
use derive_visitor::DriveMut;
2121

22-
use crate::parser::quote::quote_ident;
22+
use crate::ast::quote::QuotedIdent;
2323

2424
// Identifier of table name or column name.
2525
#[derive(Debug, Clone, PartialEq, Eq, Drive, DriveMut)]
@@ -62,9 +62,8 @@ impl Display for Identifier {
6262
fn fmt(&self, f: &mut Formatter) -> std::fmt::Result {
6363
if self.is_hole {
6464
write!(f, "IDENTIFIER(:{})", self.name)
65-
} else if let Some(c) = self.quote {
66-
let quoted = quote_ident(&self.name, c, true);
67-
write!(f, "{}", quoted)
65+
} else if let Some(quote) = self.quote {
66+
write!(f, "{}", QuotedIdent(&self.name, quote))
6867
} else {
6968
write!(f, "{}", self.name)
7069
}

src/query/ast/src/ast/escape.rs

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/query/ast/src/ast/expr.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -471,11 +471,11 @@ impl Display for Expr {
471471
min_precedence: Precedence,
472472
f: &mut Formatter,
473473
) -> std::fmt::Result {
474-
let precedence = expr.precedence();
475-
let need_parentheses = precedence.map(|p| p < min_precedence).unwrap_or(false);
476-
let inner_precedence = precedence.unwrap_or(Precedence(0));
474+
let prec = expr.precedence();
475+
let need_paren = prec.map(|p| p < min_precedence).unwrap_or(false);
476+
let min_prec = prec.unwrap_or(Precedence(0));
477477

478-
if need_parentheses {
478+
if need_paren {
479479
write!(f, "(")?;
480480
}
481481

@@ -488,7 +488,7 @@ impl Display for Expr {
488488
}
489489
}
490490
Expr::IsNull { expr, not, .. } => {
491-
write_expr(expr, inner_precedence, f)?;
491+
write_expr(expr, min_prec, f)?;
492492
write!(f, " IS")?;
493493
if *not {
494494
write!(f, " NOT")?;
@@ -498,19 +498,19 @@ impl Display for Expr {
498498
Expr::IsDistinctFrom {
499499
left, right, not, ..
500500
} => {
501-
write_expr(left, inner_precedence, f)?;
501+
write_expr(left, min_prec, f)?;
502502
write!(f, " IS")?;
503503
if *not {
504504
write!(f, " NOT")?;
505505
}
506506
write!(f, " DISTINCT FROM ")?;
507-
write_expr(right, inner_precedence, f)?;
507+
write_expr(right, min_prec, f)?;
508508
}
509509

510510
Expr::InList {
511511
expr, list, not, ..
512512
} => {
513-
write_expr(expr, inner_precedence, f)?;
513+
write_expr(expr, min_prec, f)?;
514514
if *not {
515515
write!(f, " NOT")?;
516516
}
@@ -524,7 +524,7 @@ impl Display for Expr {
524524
not,
525525
..
526526
} => {
527-
write_expr(expr, inner_precedence, f)?;
527+
write_expr(expr, min_prec, f)?;
528528
if *not {
529529
write!(f, " NOT")?;
530530
}
@@ -537,7 +537,7 @@ impl Display for Expr {
537537
not,
538538
..
539539
} => {
540-
write_expr(expr, inner_precedence, f)?;
540+
write_expr(expr, min_prec, f)?;
541541
if *not {
542542
write!(f, " NOT")?;
543543
}
@@ -547,28 +547,28 @@ impl Display for Expr {
547547
match op {
548548
// TODO (xieqijun) Maybe special attribute are provided to check whether the symbol is before or after.
549549
UnaryOperator::Factorial => {
550-
write_expr(expr, inner_precedence, f)?;
550+
write_expr(expr, min_prec, f)?;
551551
write!(f, " {op}")?;
552552
}
553553
_ => {
554554
write!(f, "{op} ")?;
555-
write_expr(expr, inner_precedence, f)?;
555+
write_expr(expr, min_prec, f)?;
556556
}
557557
}
558558
}
559559
Expr::BinaryOp {
560560
op, left, right, ..
561561
} => {
562-
write_expr(left, inner_precedence, f)?;
562+
write_expr(left, min_prec, f)?;
563563
write!(f, " {op} ")?;
564-
write_expr(right, inner_precedence, f)?;
564+
write_expr(right, min_prec, f)?;
565565
}
566566
Expr::JsonOp {
567567
op, left, right, ..
568568
} => {
569-
write_expr(left, inner_precedence, f)?;
569+
write_expr(left, min_prec, f)?;
570570
write!(f, " {op} ")?;
571-
write_expr(right, inner_precedence, f)?;
571+
write_expr(right, min_prec, f)?;
572572
}
573573
Expr::Cast {
574574
expr,
@@ -577,7 +577,7 @@ impl Display for Expr {
577577
..
578578
} => {
579579
if *pg_style {
580-
write_expr(expr, inner_precedence, f)?;
580+
write_expr(expr, min_prec, f)?;
581581
write!(f, "::{target_type}")?;
582582
} else {
583583
write!(f, "CAST({expr} AS {target_type})")?;
@@ -680,7 +680,7 @@ impl Display for Expr {
680680
write!(f, "({subquery})")?;
681681
}
682682
Expr::MapAccess { expr, accessor, .. } => {
683-
write_expr(expr, inner_precedence, f)?;
683+
write_expr(expr, min_prec, f)?;
684684
match accessor {
685685
MapAccessor::Bracket { key } => write!(f, "[{key}]")?,
686686
MapAccessor::DotNumber { key } => write!(f, ".{key}")?,
@@ -729,7 +729,7 @@ impl Display for Expr {
729729
}
730730
}
731731

732-
if need_parentheses {
732+
if need_paren {
733733
write!(f, ")")?;
734734
}
735735

src/query/ast/src/ast/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414

1515
#[allow(clippy::module_inception)]
1616
mod common;
17-
mod escape;
1817
mod expr;
1918
mod format;
2019
mod query;
20+
pub mod quote;
2121
mod statements;
2222
mod visitors;
2323

0 commit comments

Comments
 (0)