Fix parsing CLOB, BINARY, VARBINARY, BLOB data type (#618)

* fix(parser): parse clob, binary, varbinary, blob data type

* feat(tests): parse_cast tests for LOB, BINARY datatype
This commit is contained in:
ding-young 2022-09-28 20:02:30 +09:00 committed by GitHub
parent 6afd194e94
commit 6c8f31c367
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 0 deletions

View file

@ -1649,6 +1649,46 @@ fn parse_cast() {
},
expr_from_projection(only(&select.projection))
);
let sql = "SELECT CAST(id AS CLOB(50)) FROM customer";
let select = verified_only_select(sql);
assert_eq!(
&Expr::Cast {
expr: Box::new(Expr::Identifier(Ident::new("id"))),
data_type: DataType::Clob(50)
},
expr_from_projection(only(&select.projection))
);
let sql = "SELECT CAST(id AS BINARY(50)) FROM customer";
let select = verified_only_select(sql);
assert_eq!(
&Expr::Cast {
expr: Box::new(Expr::Identifier(Ident::new("id"))),
data_type: DataType::Binary(50)
},
expr_from_projection(only(&select.projection))
);
let sql = "SELECT CAST(id AS VARBINARY(50)) FROM customer";
let select = verified_only_select(sql);
assert_eq!(
&Expr::Cast {
expr: Box::new(Expr::Identifier(Ident::new("id"))),
data_type: DataType::Varbinary(50)
},
expr_from_projection(only(&select.projection))
);
let sql = "SELECT CAST(id AS BLOB(50)) FROM customer";
let select = verified_only_select(sql);
assert_eq!(
&Expr::Cast {
expr: Box::new(Expr::Identifier(Ident::new("id"))),
data_type: DataType::Blob(50)
},
expr_from_projection(only(&select.projection))
);
}
#[test]