Skip to content

Commit ac97f14

Browse files
committed
Chore: simplify SEARCH Snowflake instantiation
1 parent fec2b31 commit ac97f14

File tree

2 files changed

+8
-26
lines changed

2 files changed

+8
-26
lines changed

sqlglot/dialects/snowflake.py

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -169,30 +169,12 @@ def _build_if_from_zeroifnull(args: t.List) -> exp.If:
169169

170170

171171
def _build_search(args: t.List) -> exp.Search:
172-
arg2 = seq_get(args, 2)
173-
arg3 = seq_get(args, 3)
174-
175-
analyzer_val = None
176-
search_mode_val = None
177-
178-
if arg2 and isinstance(arg2, exp.Kwarg):
179-
if arg2.this.name.lower() == "analyzer":
180-
analyzer_val = arg2
181-
elif arg2.this.name.lower() == "search_mode":
182-
search_mode_val = arg2
183-
184-
if arg3 and isinstance(arg3, exp.Kwarg):
185-
if arg3.this.name.lower() == "analyzer":
186-
analyzer_val = arg3
187-
elif arg3.this.name.lower() == "search_mode":
188-
search_mode_val = arg3
189-
190-
return exp.Search(
191-
this=seq_get(args, 0),
192-
expression=seq_get(args, 1),
193-
analyzer=analyzer_val,
194-
search_mode=search_mode_val,
195-
)
172+
kwargs = {
173+
"this": seq_get(args, 0),
174+
"expression": seq_get(args, 1),
175+
**{arg.name.lower(): arg for arg in args[2:] if isinstance(arg, exp.Kwarg)},
176+
}
177+
return exp.Search(**kwargs)
196178

197179

198180
# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull

tests/dialects/test_snowflake.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2473,7 +2473,7 @@ def test_regexp_substr(self, logger):
24732473
# AST validation tests - verify argument mapping
24742474
ast = self.validate_identity("SELECT SEARCH(line, 'king')")
24752475
search_ast = ast.find(exp.Search)
2476-
self.assertEqual(list(search_ast.args), ["this", "expression", "analyzer", "search_mode"])
2476+
self.assertEqual(list(search_ast.args), ["this", "expression"])
24772477
self.assertIsNone(search_ast.args.get("analyzer"))
24782478
self.assertIsNone(search_ast.args.get("search_mode"))
24792479

@@ -2493,7 +2493,7 @@ def test_regexp_substr(self, logger):
24932493
"SELECT SEARCH(line, 'king', ANALYZER => 'PATTERN_ANALYZER', SEARCH_MODE => 'AND')",
24942494
)
24952495
search_ast = ast.find(exp.Search)
2496-
self.assertEqual(list(search_ast.args), ["this", "expression", "analyzer", "search_mode"])
2496+
self.assertEqual(list(search_ast.args), ["this", "expression", "search_mode", "analyzer"])
24972497
analyzer = search_ast.args.get("analyzer")
24982498
self.assertIsNotNone(analyzer)
24992499
search_mode = search_ast.args.get("search_mode")

0 commit comments

Comments
 (0)