File tree Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Original file line number Diff line number Diff line change 15
15
// specific language governing permissions and limitations
16
16
// under the License.
17
17
18
- use crate :: dialect:: Dialect ;
18
+ use crate :: dialect:: { Dialect , Precedence } ;
19
+ use crate :: parser:: { Parser , ParserError } ;
20
+ use crate :: tokenizer:: Token ;
19
21
20
22
/// A [`Dialect`] for [Databricks SQL](https://www.databricks.com/)
21
23
///
@@ -38,6 +40,15 @@ impl Dialect for DatabricksDialect {
38
40
matches ! ( ch, 'a' ..='z' | 'A' ..='Z' | '0' ..='9' | '_' )
39
41
}
40
42
43
+ fn get_next_precedence ( & self , parser : & Parser ) -> Option < Result < u8 , ParserError > > {
44
+ let token = parser. peek_token ( ) ;
45
+ // : is used for JSON path access
46
+ match token. token {
47
+ Token :: Colon => Some ( Ok ( self . prec_value ( Precedence :: Period ) ) ) ,
48
+ _ => None ,
49
+ }
50
+ }
51
+
41
52
fn supports_filter_during_aggregation ( & self ) -> bool {
42
53
true
43
54
}
Original file line number Diff line number Diff line change @@ -3567,7 +3567,8 @@ impl<'a> Parser<'a> {
3567
3567
expr: Box::new(expr),
3568
3568
})
3569
3569
} else if Token::LBracket == *tok && self.dialect.supports_partiql()
3570
- || (dialect_of!(self is SnowflakeDialect | GenericDialect) && Token::Colon == *tok)
3570
+ || (dialect_of!(self is SnowflakeDialect | GenericDialect | DatabricksDialect)
3571
+ && Token::Colon == *tok)
3571
3572
{
3572
3573
self.prev_token();
3573
3574
self.parse_json_access(expr)
You can’t perform that action at this time.
0 commit comments