// Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #[macro_use] mod test_utils; use test_utils::*; use sqlparser::ast::*; use sqlparser::dialect::RedshiftSqlDialect; #[test] fn test_square_brackets_over_db_schema_table_name() { let select = redshift().verified_only_select("SELECT [col1] FROM [test_schema].[test_table]"); assert_eq!( select.projection[0], SelectItem::UnnamedExpr(Expr::Identifier(Ident { value: "col1".to_string(), quote_style: Some('[') })), ); assert_eq!( select.from[0], TableWithJoins { relation: TableFactor::Table { name: ObjectName(vec![ Ident { value: "test_schema".to_string(), quote_style: Some('[') }, Ident { value: "test_table".to_string(), quote_style: Some('[') } ]), alias: None, args: None, with_hints: vec![], }, joins: vec![], } ); } #[test] fn brackets_over_db_schema_table_name_with_whites_paces() { match redshift().parse_sql_statements("SELECT [ col1 ] FROM [ test_schema].[ test_table]") { Ok(statements) => { assert_eq!(statements.len(), 1); } _ => unreachable!(), } } #[test] fn test_double_quotes_over_db_schema_table_name() { let select = redshift().verified_only_select("SELECT \"col1\" FROM \"test_schema\".\"test_table\""); assert_eq!( select.projection[0], SelectItem::UnnamedExpr(Expr::Identifier(Ident { value: "col1".to_string(), quote_style: Some('"') })), ); assert_eq!( select.from[0], TableWithJoins { relation: TableFactor::Table { name: ObjectName(vec![ Ident { value: "test_schema".to_string(), quote_style: Some('"') }, Ident { value: "test_table".to_string(), quote_style: Some('"') } ]), alias: None, args: None, with_hints: vec![], }, joins: vec![], } ); } fn redshift() -> TestedDialects { 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] ); }