in nl2sql_src/nl2sql_generic.py [0:0]
def case_handler_transform(self, sql_query: str) -> str:
"""
This function implements case-handling mechanism transformation
for a SQL query.
Parameters:
- sql_query (str): The original SQL query.
Returns:
str: The transformed SQL query with case-handling mechanism applied,
or the original query if no transformation is needed.
"""
# print("Case handller transform", sql_query)
node = sqlglot.parse_one(sql_query)
if (
isinstance(node, sqlglot.expressions.EQ) and
node.find_ancestor(sqlglot.expressions.Where) and
len(operands := list(node.unnest_operands())) == 2 and
isinstance(
literal := operands.pop(), sqlglot.expressions.Literal
) and
isinstance(predicate := operands.pop(), sqlglot.expressions.Column)
):
transformed_query =\
sqlglot.parse_one(f"LOWER({predicate}) =\
'{literal.this.lower()}'")
return str(transformed_query)
else:
return sql_query