Skip to content

Commit

Permalink
fix: Fix oracle connector update parser (#2386)
Browse files Browse the repository at this point in the history
  • Loading branch information
chubei authored Feb 9, 2024
1 parent e2692ac commit 3df4727
Showing 1 changed file with 21 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ pub struct Parser {
impl Parser {
pub fn new() -> Self {
let regex =
Regex::new(r#"^update "(\w+)"\."(\w+)"\n *set\n(?s)(.+) *where\n(?s)(.+)$"#).unwrap();
Regex::new(r#"^update "(\w+)"\."(\w+)"\n *(?s)(.+) *where\n(?s)(.+)$"#).unwrap();
Self {
regex,
new_row_parser: row::Parser::new(",", "\n"),
Expand Down Expand Up @@ -61,32 +61,37 @@ fn test_parse() {
use super::ParsedValue;

let parser = Parser::new();
let sql_redo = r#"update "OE"."PRODUCT_INFORMATION"
set
"WARRANTY_PERIOD" = 'TO_YMINTERVAL('+05-00')'
let sql_redo = r#"update "DOZER"."TRANSACTIONS"
"TYPE" = 'REBATE'
where
"PRODUCT_ID" = '1799' and
"WARRANTY_PERIOD" = 'TO_YMINTERVAL('+01-00')';
"TRANSACTION_ID" = 12001 and
"CUSTOMER_ID" = 63147 and
"TYPE" = 'Withdrawal' and
"AMOUNT" = 9691.34 and
"CURRENCY" = 'USD' and
"TRANSACTION_DATE" = '28-JAN-24' and
"STATUS" = 'Completed' and
"DESCRIPTION" = 'Yeah become language inside purpose.';
"#;
let (old, new) = parser
.parse(sql_redo, &("HR".to_string(), "EMPLOYEES".to_string()))
.unwrap();
assert_eq!(old.len(), 2);
assert_eq!(new.len(), 2);
assert_eq!(old.len(), 8);
assert_eq!(new.len(), 8);
assert_eq!(
old.get("PRODUCT_ID").unwrap(),
&ParsedValue::String("1799".to_string())
old.get("TRANSACTION_ID").unwrap(),
&ParsedValue::Number("12001".parse().unwrap())
);
assert_eq!(
new.get("PRODUCT_ID").unwrap(),
&ParsedValue::String("1799".to_string())
new.get("TRANSACTION_ID").unwrap(),
&ParsedValue::Number("12001".parse().unwrap())
);
assert_eq!(
old.get("WARRANTY_PERIOD").unwrap(),
&ParsedValue::String("TO_YMINTERVAL('+01-00')".to_string())
old.get("TYPE").unwrap(),
&ParsedValue::String("Withdrawal".to_string())
);
assert_eq!(
new.get("WARRANTY_PERIOD").unwrap(),
&ParsedValue::String("TO_YMINTERVAL('+05-00')".to_string())
new.get("TYPE").unwrap(),
&ParsedValue::String("REBATE".to_string())
);
}

0 comments on commit 3df4727

Please sign in to comment.