From 12973be6410e7628e2da54e819939af2d162cba8 Mon Sep 17 00:00:00 2001 From: vijaypavann-db Date: Thu, 9 Jan 2025 13:32:40 +0530 Subject: [PATCH] Removed local_expression SplitPart and refactored to sqlglot expression SplitPart --- .../remorph/transpiler/sqlglot/generator/databricks.py | 10 ---------- .../remorph/transpiler/sqlglot/local_expression.py | 4 ---- .../remorph/transpiler/sqlglot/parsers/snowflake.py | 4 ++-- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/databricks/labs/remorph/transpiler/sqlglot/generator/databricks.py b/src/databricks/labs/remorph/transpiler/sqlglot/generator/databricks.py index 8d97c1f13d..01a2c813fd 100644 --- a/src/databricks/labs/remorph/transpiler/sqlglot/generator/databricks.py +++ b/src/databricks/labs/remorph/transpiler/sqlglot/generator/databricks.py @@ -639,16 +639,6 @@ def strtok_sql(self, expression: local_expression.StrTok) -> str: return f"SPLIT_PART({expr_name}, '{delimiter}', {part_num})" - def splitpart_sql(self, expression: local_expression.SplitPart) -> str: - """ - :param expression: local_expression.SplitPart expression to be parsed - :return: Converted expression (SPLIT_PART) compatible with Databricks - """ - expr_name = self.sql(expression.this) - delimiter = self.sql(expression.expression) - part_num = self.sql(expression.args["partNum"]) - return f"SPLIT_PART({expr_name}, {delimiter}, {part_num})" - def transaction_sql(self, expression: exp.Transaction) -> str: """ Skip begin command diff --git a/src/databricks/labs/remorph/transpiler/sqlglot/local_expression.py b/src/databricks/labs/remorph/transpiler/sqlglot/local_expression.py index e61e97cbdd..d428db30d5 100644 --- a/src/databricks/labs/remorph/transpiler/sqlglot/local_expression.py +++ b/src/databricks/labs/remorph/transpiler/sqlglot/local_expression.py @@ -45,10 +45,6 @@ class TryToTimestamp(Func): arg_types = {"this": True, "format": False} -class SplitPart(Func): - arg_types = {"this": True, "expression": False, "partNum": False} - - class StrTok(Func): arg_types = {"this": True, "expression": False, "partNum": False} diff --git a/src/databricks/labs/remorph/transpiler/sqlglot/parsers/snowflake.py b/src/databricks/labs/remorph/transpiler/sqlglot/parsers/snowflake.py index 81e5604806..c319f1680e 100644 --- a/src/databricks/labs/remorph/transpiler/sqlglot/parsers/snowflake.py +++ b/src/databricks/labs/remorph/transpiler/sqlglot/parsers/snowflake.py @@ -91,7 +91,7 @@ def _parse_date_add(args: list) -> exp.DateAdd: return exp.DateAdd(this=seq_get(args, 2), expression=seq_get(args, 1), unit=seq_get(args, 0)) -def _parse_split_part(args: list) -> local_expression.SplitPart: +def _parse_split_part(args: list) -> exp.SplitPart: if len(args) != 3: err_msg = f"Error Parsing args `{args}`. Number of args must be 3, given {len(args)}" raise ParseError(err_msg) @@ -107,7 +107,7 @@ def _parse_split_part(args: list) -> local_expression.SplitPart: part_num_if = exp.If(this=cond, true=exp.Literal.number(1), false=part_num_literal) part_num = part_num_if if part_num_if is not None else part_num_literal - return local_expression.SplitPart(this=seq_get(args, 0), expression=seq_get(args, 1), partNum=part_num) + return exp.SplitPart(this=seq_get(args, 0), delimiter=seq_get(args, 1), part_index=part_num) def _div0_to_if(args: list) -> exp.If: