diff --git a/src/dialect/redshift.rs b/src/dialect/redshift.rs index e2faed39..c85f3dc2 100644 --- a/src/dialect/redshift.rs +++ b/src/dialect/redshift.rs @@ -44,10 +44,12 @@ impl Dialect for RedshiftSqlDialect { } fn is_identifier_start(&self, ch: char) -> bool { - PostgreSqlDialect {}.is_identifier_start(ch) + // Extends Postgres dialect with sharp + PostgreSqlDialect {}.is_identifier_start(ch) || ch == '#' } fn is_identifier_part(&self, ch: char) -> bool { - PostgreSqlDialect {}.is_identifier_part(ch) + // Extends Postgres dialect with sharp + PostgreSqlDialect {}.is_identifier_part(ch) || ch == '#' } } diff --git a/tests/sqlparser_redshift.rs b/tests/sqlparser_redshift.rs index 0c216a49..ce818a98 100644 --- a/tests/sqlparser_redshift.rs +++ b/tests/sqlparser_redshift.rs @@ -100,3 +100,13 @@ fn redshift() -> TestedDialects { dialects: vec![Box::new(RedshiftSqlDialect {})], } } + +#[test] +fn test_sharp() { + let sql = "SELECT #_of_values"; + let select = redshift().verified_only_select(sql); + assert_eq!( + SelectItem::UnnamedExpr(Expr::Identifier(Ident::new("#_of_values"))), + select.projection[0] + ); +}