feat: Convert IS TRUE|FALSE to expression (#499)

This commit is contained in:
Dmitry Patsura 2022-05-24 16:26:50 +03:00 committed by GitHub
parent a6d7a35dac
commit 4070f3ec6e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 20 deletions

View file

@ -4768,21 +4768,30 @@ fn parse_position_negative() {
#[test]
fn parse_is_boolean() {
one_statement_parses_to(
"SELECT f from foo where field is true",
"SELECT f FROM foo WHERE field = true",
use self::Expr::*;
let sql = "a IS FALSE";
assert_eq!(
IsFalse(Box::new(Identifier(Ident::new("a")))),
verified_expr(sql)
);
one_statement_parses_to(
"SELECT f from foo where field is false",
"SELECT f FROM foo WHERE field = false",
let sql = "a IS TRUE";
assert_eq!(
IsTrue(Box::new(Identifier(Ident::new("a")))),
verified_expr(sql)
);
verified_stmt("SELECT f FROM foo WHERE field IS TRUE");
verified_stmt("SELECT f FROM foo WHERE field IS FALSE");
let sql = "SELECT f from foo where field is 0";
let res = parse_sql_statements(sql);
assert_eq!(
ParserError::ParserError(
"Expected [NOT] NULL or [NOT] DISTINCT FROM TRUE FALSE after IS, found: 0".to_string()
"Expected [NOT] NULL or TRUE|FALSE or [NOT] DISTINCT FROM after IS, found: 0"
.to_string()
),
res.unwrap_err()
);