@@ -21,6 +21,7 @@ use std::str::Chars;
21
21
22
22
use super :: dialect:: keywords:: { Keyword , ALL_KEYWORDS , ALL_KEYWORDS_INDEX } ;
23
23
use super :: dialect:: Dialect ;
24
+ use super :: dialect:: PostgreSqlDialect ;
24
25
use super :: dialect:: SnowflakeDialect ;
25
26
#[ cfg( feature = "serde" ) ]
26
27
use serde:: { Deserialize , Serialize } ;
@@ -433,11 +434,15 @@ impl<'a> Tokenizer<'a> {
433
434
'|' => {
434
435
chars. next ( ) ; // consume the '|'
435
436
match chars. peek ( ) {
436
- Some ( '/' ) => self . consume_and_return ( chars, Token :: SquareRoot ) ,
437
+ Some ( '/' ) if dialect_of ! ( self is PostgreSqlDialect ) => {
438
+ self . consume_and_return ( chars, Token :: SquareRoot )
439
+ }
437
440
Some ( '|' ) => {
438
441
chars. next ( ) ; // consume the second '|'
439
442
match chars. peek ( ) {
440
- Some ( '/' ) => self . consume_and_return ( chars, Token :: CubeRoot ) ,
443
+ Some ( '/' ) if dialect_of ! ( self is PostgreSqlDialect ) => {
444
+ self . consume_and_return ( chars, Token :: CubeRoot )
445
+ }
441
446
_ => Ok ( Some ( Token :: StringConcat ) ) ,
442
447
}
443
448
}
@@ -457,7 +462,9 @@ impl<'a> Tokenizer<'a> {
457
462
chars. next ( ) ; // consume
458
463
match chars. peek ( ) {
459
464
Some ( '=' ) => self . consume_and_return ( chars, Token :: Neq ) ,
460
- Some ( '!' ) => self . consume_and_return ( chars, Token :: DoubleExclamationMark ) ,
465
+ Some ( '!' ) if dialect_of ! ( self is PostgreSqlDialect ) => {
466
+ self . consume_and_return ( chars, Token :: DoubleExclamationMark )
467
+ }
461
468
_ => Ok ( Some ( Token :: ExclamationMark ) ) ,
462
469
}
463
470
}
@@ -466,7 +473,9 @@ impl<'a> Tokenizer<'a> {
466
473
match chars. peek ( ) {
467
474
Some ( '=' ) => self . consume_and_return ( chars, Token :: LtEq ) ,
468
475
Some ( '>' ) => self . consume_and_return ( chars, Token :: Neq ) ,
469
- Some ( '<' ) => self . consume_and_return ( chars, Token :: ShiftLeft ) ,
476
+ Some ( '<' ) if dialect_of ! ( self is PostgreSqlDialect ) => {
477
+ self . consume_and_return ( chars, Token :: ShiftLeft )
478
+ }
470
479
_ => Ok ( Some ( Token :: Lt ) ) ,
471
480
}
472
481
}
@@ -501,9 +510,15 @@ impl<'a> Tokenizer<'a> {
501
510
comment,
502
511
} ) ) )
503
512
}
504
- '~' => self . consume_and_return ( chars, Token :: Tilde ) ,
505
- '#' => self . consume_and_return ( chars, Token :: Sharp ) ,
506
- '@' => self . consume_and_return ( chars, Token :: Ampersat ) ,
513
+ '~' if dialect_of ! ( self is PostgreSqlDialect ) => {
514
+ self . consume_and_return ( chars, Token :: Tilde )
515
+ }
516
+ '#' if dialect_of ! ( self is PostgreSqlDialect ) => {
517
+ self . consume_and_return ( chars, Token :: Sharp )
518
+ }
519
+ '@' if dialect_of ! ( self is PostgreSqlDialect ) => {
520
+ self . consume_and_return ( chars, Token :: Ampersat )
521
+ }
507
522
other => self . consume_and_return ( chars, Token :: Char ( other) ) ,
508
523
} ,
509
524
None => Ok ( None ) ,
0 commit comments