File tree 3 files changed +25
-2
lines changed
3 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -704,8 +704,9 @@ impl<'a> Tokenizer<'a> {
704
704
}
705
705
Ok ( Some ( Token :: Whitespace ( Whitespace :: Newline ) ) )
706
706
}
707
- // BigQuery uses b or B for byte string literal
708
- b @ 'B' | b @ 'b' if dialect_of ! ( self is BigQueryDialect | GenericDialect ) => {
707
+ // BigQuery and MySQL use b or B for byte string literal, Postgres for bit strings
708
+ b @ 'B' | b @ 'b' if dialect_of ! ( self is BigQueryDialect | PostgreSqlDialect | MySqlDialect | GenericDialect ) =>
709
+ {
709
710
chars. next ( ) ; // consume
710
711
match chars. peek ( ) {
711
712
Some ( '\'' ) => {
Original file line number Diff line number Diff line change @@ -2960,3 +2960,14 @@ fn parse_logical_xor() {
2960
2960
select. projection[ 3 ]
2961
2961
) ;
2962
2962
}
2963
+
2964
+ #[ test]
2965
+ fn parse_bitstring_literal ( ) {
2966
+ let select = mysql_and_generic ( ) . verified_only_select ( "SELECT B'111'" ) ;
2967
+ assert_eq ! (
2968
+ select. projection,
2969
+ vec![ SelectItem :: UnnamedExpr ( Expr :: Value (
2970
+ Value :: SingleQuotedByteStringLiteral ( "111" . to_string( ) )
2971
+ ) ) ]
2972
+ ) ;
2973
+ }
Original file line number Diff line number Diff line change @@ -5098,3 +5098,14 @@ fn parse_create_type_as_enum() {
5098
5098
_ => unreachable ! ( ) ,
5099
5099
}
5100
5100
}
5101
+
5102
+ #[ test]
5103
+ fn parse_bitstring_literal ( ) {
5104
+ let select = pg_and_generic ( ) . verified_only_select ( "SELECT B'111'" ) ;
5105
+ assert_eq ! (
5106
+ select. projection,
5107
+ vec![ SelectItem :: UnnamedExpr ( Expr :: Value (
5108
+ Value :: SingleQuotedByteStringLiteral ( "111" . to_string( ) )
5109
+ ) ) ]
5110
+ ) ;
5111
+ }
You can’t perform that action at this time.
0 commit comments