|
21 | 21 | from sqlglot.tokens import TokenType |
22 | 22 |
|
23 | 23 |
|
24 | | -def _date_add_sql(self: SQLite.Generator, expression: exp.DateAdd) -> str: |
25 | | - modifier = expression.expression |
26 | | - modifier = modifier.name if modifier.is_string else self.sql(modifier) |
27 | | - unit = expression.args.get("unit") |
28 | | - modifier = f"'{modifier} {unit.name}'" if unit else f"'{modifier}'" |
29 | | - return self.func("DATE", expression.this, modifier) |
30 | | - |
31 | | - |
32 | | -def _json_extract_sql(self: SQLite.Generator, expression: exp.JSONExtract) -> str: |
33 | | - if expression.expressions: |
34 | | - return self.function_fallback_sql(expression) |
35 | | - return arrow_json_extract_sql(self, expression) |
36 | | - |
37 | | - |
38 | 24 | def _build_strftime(args: t.List) -> exp.Anonymous | exp.TimeToStr: |
39 | 25 | if len(args) == 1: |
40 | 26 | args.append(exp.CurrentTimestamp()) |
@@ -182,11 +168,9 @@ class Generator(generator.Generator): |
182 | 168 | exp.CurrentTime: lambda *_: "CURRENT_TIME", |
183 | 169 | exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", |
184 | 170 | exp.ColumnDef: transforms.preprocess([_generated_to_auto_increment]), |
185 | | - exp.DateAdd: _date_add_sql, |
186 | 171 | exp.DateStrToDate: lambda self, e: self.sql(e, "this"), |
187 | 172 | exp.If: rename_func("IIF"), |
188 | 173 | exp.ILike: no_ilike_sql, |
189 | | - exp.JSONExtract: _json_extract_sql, |
190 | 174 | exp.JSONExtractScalar: arrow_json_extract_sql, |
191 | 175 | exp.Levenshtein: unsupported_args("ins_cost", "del_cost", "sub_cost", "max_dist")( |
192 | 176 | rename_func("EDITDIST3") |
@@ -224,6 +208,18 @@ class Generator(generator.Generator): |
224 | 208 |
|
225 | 209 | LIMIT_FETCH = "LIMIT" |
226 | 210 |
|
| 211 | + def jsonextract_sql(self, expression: exp.JSONExtract) -> str: |
| 212 | + if expression.expressions: |
| 213 | + return self.function_fallback_sql(expression) |
| 214 | + return arrow_json_extract_sql(self, expression) |
| 215 | + |
| 216 | + def dateadd_sql(self, expression: exp.DateAdd) -> str: |
| 217 | + modifier = expression.expression |
| 218 | + modifier = modifier.name if modifier.is_string else self.sql(modifier) |
| 219 | + unit = expression.args.get("unit") |
| 220 | + modifier = f"'{modifier} {unit.name}'" if unit else f"'{modifier}'" |
| 221 | + return self.func("DATE", expression.this, modifier) |
| 222 | + |
227 | 223 | def cast_sql(self, expression: exp.Cast, safe_prefix: t.Optional[str] = None) -> str: |
228 | 224 | if expression.is_type("date"): |
229 | 225 | return self.func("DATE", expression.this) |
|
0 commit comments