1818use sqlparser:: ast:: helpers:: attached_token:: AttachedToken ;
1919use sqlparser:: ast:: * ;
2020use sqlparser:: dialect:: { DatabricksDialect , GenericDialect } ;
21- use sqlparser:: parser:: ParserError ;
21+ use sqlparser:: parser:: { ParserError , ParserOptions } ;
2222use test_utils:: * ;
2323
2424#[ macro_use]
@@ -28,6 +28,13 @@ fn databricks() -> TestedDialects {
2828 TestedDialects :: new ( vec ! [ Box :: new( DatabricksDialect { } ) ] )
2929}
3030
31+ fn databricks_no_unescape ( ) -> TestedDialects {
32+ TestedDialects :: new_with_options (
33+ vec ! [ Box :: new( DatabricksDialect { } ) ] ,
34+ ParserOptions :: new ( ) . with_unescape ( false ) ,
35+ )
36+ }
37+
3138fn databricks_and_generic ( ) -> TestedDialects {
3239 TestedDialects :: new ( vec ! [
3340 Box :: new( DatabricksDialect { } ) ,
@@ -54,6 +61,22 @@ fn test_databricks_identifiers() {
5461 ) ;
5562}
5663
64+ // Test examples from https://docs.databricks.com/aws/en/sql/language-manual/data-types/string-type#examples
65+ //
66+ // Note: string literals are broken on DBx when unescape in turned on (the default).
67+ #[ test]
68+ fn test_databricks_string_literals ( ) {
69+ databricks_no_unescape ( ) . verified_expr ( r"'O\'Connell'" ) ;
70+ databricks_no_unescape ( ) . verified_expr ( r"'Some\nText'" ) ;
71+ databricks_no_unescape ( ) . verified_expr ( "'서울시'" ) ;
72+ databricks_no_unescape ( ) . verified_expr ( r"'\\'" ) ;
73+
74+ // FIXME: raw strings are broken
75+ // databricks_no_unescape().verified_query(r"SELECT 'Hou$e', 'Hou\$e', r'Hou$e', r'Hou\$e'");
76+ // databricks_no_unescape().verified_expr(r"r'Some\nText'");
77+ // databricks_no_unescape().verified_expr(r"r'\\'");
78+ }
79+
5780#[ test]
5881fn test_databricks_exists ( ) {
5982 // exists is a function in databricks
0 commit comments