From beba715b97dd2349e01dde9b077d2535680ebdca Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 May 2023 08:44:58 +0200 Subject: Merging upstream version 12.2.0. Signed-off-by: Daniel Baumann --- docs/sqlglot/dialects/tsql.html | 304 ++++++++++++++++++++-------------------- 1 file changed, 154 insertions(+), 150 deletions(-) (limited to 'docs/sqlglot/dialects/tsql.html') diff --git a/docs/sqlglot/dialects/tsql.html b/docs/sqlglot/dialects/tsql.html index d1c2096..dedf090 100644 --- a/docs/sqlglot/dialects/tsql.html +++ b/docs/sqlglot/dialects/tsql.html @@ -94,7 +94,7 @@ 3import re 4import typing as t 5 - 6from sqlglot import exp, generator, parser, tokens + 6from sqlglot import exp, generator, parser, tokens, transforms 7from sqlglot.dialects.dialect import ( 8 Dialect, 9 max_or_greatest, @@ -554,52 +554,53 @@ 463 exp.DateDiff: generate_date_delta_with_unit_sql, 464 exp.CurrentDate: rename_func("GETDATE"), 465 exp.CurrentTimestamp: rename_func("GETDATE"), -466 exp.If: rename_func("IIF"), -467 exp.NumberToStr: _format_sql, -468 exp.TimeToStr: _format_sql, -469 exp.GroupConcat: _string_agg_sql, -470 exp.Max: max_or_greatest, -471 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), -472 exp.Min: min_or_least, +466 exp.GroupConcat: _string_agg_sql, +467 exp.If: rename_func("IIF"), +468 exp.Max: max_or_greatest, +469 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), +470 exp.Min: min_or_least, +471 exp.NumberToStr: _format_sql, +472 exp.Select: transforms.preprocess([transforms.eliminate_distinct_on]), 473 exp.SHA: lambda self, e: self.func("HASHBYTES", exp.Literal.string("SHA1"), e.this), 474 exp.SHA2: lambda self, e: self.func( 475 "HASHBYTES", exp.Literal.string(f"SHA2_{e.args.get('length', 256)}"), e.this 476 ), -477 } -478 -479 TRANSFORMS.pop(exp.ReturnsProperty) -480 -481 PROPERTIES_LOCATION = { -482 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -483 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, -484 } -485 -486 LIMIT_FETCH = "FETCH" -487 -488 def offset_sql(self, expression: exp.Offset) -> str: -489 return f"{super().offset_sql(expression)} ROWS" -490 -491 def systemtime_sql(self, expression: exp.SystemTime) -> str: -492 kind = expression.args["kind"] -493 if kind == "ALL": -494 return "FOR SYSTEM_TIME ALL" -495 -496 start = self.sql(expression, "this") -497 if kind == "AS OF": -498 return f"FOR SYSTEM_TIME AS OF {start}" -499 -500 end = self.sql(expression, "expression") -501 if kind == "FROM": -502 return f"FOR SYSTEM_TIME FROM {start} TO {end}" -503 if kind == "BETWEEN": -504 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" -505 -506 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" -507 -508 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: -509 table = expression.args.get("table") -510 table = f"{table} " if table else "" -511 return f"RETURNS {table}{self.sql(expression, 'this')}" +477 exp.TimeToStr: _format_sql, +478 } +479 +480 TRANSFORMS.pop(exp.ReturnsProperty) +481 +482 PROPERTIES_LOCATION = { +483 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +484 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +485 } +486 +487 LIMIT_FETCH = "FETCH" +488 +489 def offset_sql(self, expression: exp.Offset) -> str: +490 return f"{super().offset_sql(expression)} ROWS" +491 +492 def systemtime_sql(self, expression: exp.SystemTime) -> str: +493 kind = expression.args["kind"] +494 if kind == "ALL": +495 return "FOR SYSTEM_TIME ALL" +496 +497 start = self.sql(expression, "this") +498 if kind == "AS OF": +499 return f"FOR SYSTEM_TIME AS OF {start}" +500 +501 end = self.sql(expression, "expression") +502 if kind == "FROM": +503 return f"FOR SYSTEM_TIME FROM {start} TO {end}" +504 if kind == "BETWEEN": +505 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +506 +507 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" +508 +509 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: +510 table = expression.args.get("table") +511 table = f"{table} " if table else "" +512 return f"RETURNS {table}{self.sql(expression, 'this')}" @@ -951,52 +952,53 @@ 464 exp.DateDiff: generate_date_delta_with_unit_sql, 465 exp.CurrentDate: rename_func("GETDATE"), 466 exp.CurrentTimestamp: rename_func("GETDATE"), -467 exp.If: rename_func("IIF"), -468 exp.NumberToStr: _format_sql, -469 exp.TimeToStr: _format_sql, -470 exp.GroupConcat: _string_agg_sql, -471 exp.Max: max_or_greatest, -472 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), -473 exp.Min: min_or_least, +467 exp.GroupConcat: _string_agg_sql, +468 exp.If: rename_func("IIF"), +469 exp.Max: max_or_greatest, +470 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), +471 exp.Min: min_or_least, +472 exp.NumberToStr: _format_sql, +473 exp.Select: transforms.preprocess([transforms.eliminate_distinct_on]), 474 exp.SHA: lambda self, e: self.func("HASHBYTES", exp.Literal.string("SHA1"), e.this), 475 exp.SHA2: lambda self, e: self.func( 476 "HASHBYTES", exp.Literal.string(f"SHA2_{e.args.get('length', 256)}"), e.this 477 ), -478 } -479 -480 TRANSFORMS.pop(exp.ReturnsProperty) -481 -482 PROPERTIES_LOCATION = { -483 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -484 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, -485 } -486 -487 LIMIT_FETCH = "FETCH" -488 -489 def offset_sql(self, expression: exp.Offset) -> str: -490 return f"{super().offset_sql(expression)} ROWS" -491 -492 def systemtime_sql(self, expression: exp.SystemTime) -> str: -493 kind = expression.args["kind"] -494 if kind == "ALL": -495 return "FOR SYSTEM_TIME ALL" -496 -497 start = self.sql(expression, "this") -498 if kind == "AS OF": -499 return f"FOR SYSTEM_TIME AS OF {start}" -500 -501 end = self.sql(expression, "expression") -502 if kind == "FROM": -503 return f"FOR SYSTEM_TIME FROM {start} TO {end}" -504 if kind == "BETWEEN": -505 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" -506 -507 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" -508 -509 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: -510 table = expression.args.get("table") -511 table = f"{table} " if table else "" -512 return f"RETURNS {table}{self.sql(expression, 'this')}" +478 exp.TimeToStr: _format_sql, +479 } +480 +481 TRANSFORMS.pop(exp.ReturnsProperty) +482 +483 PROPERTIES_LOCATION = { +484 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +485 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +486 } +487 +488 LIMIT_FETCH = "FETCH" +489 +490 def offset_sql(self, expression: exp.Offset) -> str: +491 return f"{super().offset_sql(expression)} ROWS" +492 +493 def systemtime_sql(self, expression: exp.SystemTime) -> str: +494 kind = expression.args["kind"] +495 if kind == "ALL": +496 return "FOR SYSTEM_TIME ALL" +497 +498 start = self.sql(expression, "this") +499 if kind == "AS OF": +500 return f"FOR SYSTEM_TIME AS OF {start}" +501 +502 end = self.sql(expression, "expression") +503 if kind == "FROM": +504 return f"FOR SYSTEM_TIME FROM {start} TO {end}" +505 if kind == "BETWEEN": +506 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +507 +508 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" +509 +510 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: +511 table = expression.args.get("table") +512 table = f"{table} " if table else "" +513 return f"RETURNS {table}{self.sql(expression, 'this')}" @@ -1318,52 +1320,53 @@ Default: "nulls_are_small" 464 exp.DateDiff: generate_date_delta_with_unit_sql, 465 exp.CurrentDate: rename_func("GETDATE"), 466 exp.CurrentTimestamp: rename_func("GETDATE"), -467 exp.If: rename_func("IIF"), -468 exp.NumberToStr: _format_sql, -469 exp.TimeToStr: _format_sql, -470 exp.GroupConcat: _string_agg_sql, -471 exp.Max: max_or_greatest, -472 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), -473 exp.Min: min_or_least, +467 exp.GroupConcat: _string_agg_sql, +468 exp.If: rename_func("IIF"), +469 exp.Max: max_or_greatest, +470 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), +471 exp.Min: min_or_least, +472 exp.NumberToStr: _format_sql, +473 exp.Select: transforms.preprocess([transforms.eliminate_distinct_on]), 474 exp.SHA: lambda self, e: self.func("HASHBYTES", exp.Literal.string("SHA1"), e.this), 475 exp.SHA2: lambda self, e: self.func( 476 "HASHBYTES", exp.Literal.string(f"SHA2_{e.args.get('length', 256)}"), e.this 477 ), -478 } -479 -480 TRANSFORMS.pop(exp.ReturnsProperty) -481 -482 PROPERTIES_LOCATION = { -483 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -484 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, -485 } -486 -487 LIMIT_FETCH = "FETCH" -488 -489 def offset_sql(self, expression: exp.Offset) -> str: -490 return f"{super().offset_sql(expression)} ROWS" -491 -492 def systemtime_sql(self, expression: exp.SystemTime) -> str: -493 kind = expression.args["kind"] -494 if kind == "ALL": -495 return "FOR SYSTEM_TIME ALL" -496 -497 start = self.sql(expression, "this") -498 if kind == "AS OF": -499 return f"FOR SYSTEM_TIME AS OF {start}" -500 -501 end = self.sql(expression, "expression") -502 if kind == "FROM": -503 return f"FOR SYSTEM_TIME FROM {start} TO {end}" -504 if kind == "BETWEEN": -505 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" -506 -507 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" -508 -509 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: -510 table = expression.args.get("table") -511 table = f"{table} " if table else "" -512 return f"RETURNS {table}{self.sql(expression, 'this')}" +478 exp.TimeToStr: _format_sql, +479 } +480 +481 TRANSFORMS.pop(exp.ReturnsProperty) +482 +483 PROPERTIES_LOCATION = { +484 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +485 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +486 } +487 +488 LIMIT_FETCH = "FETCH" +489 +490 def offset_sql(self, expression: exp.Offset) -> str: +491 return f"{super().offset_sql(expression)} ROWS" +492 +493 def systemtime_sql(self, expression: exp.SystemTime) -> str: +494 kind = expression.args["kind"] +495 if kind == "ALL": +496 return "FOR SYSTEM_TIME ALL" +497 +498 start = self.sql(expression, "this") +499 if kind == "AS OF": +500 return f"FOR SYSTEM_TIME AS OF {start}" +501 +502 end = self.sql(expression, "expression") +503 if kind == "FROM": +504 return f"FOR SYSTEM_TIME FROM {start} TO {end}" +505 if kind == "BETWEEN": +506 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +507 +508 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" +509 +510 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: +511 table = expression.args.get("table") +512 table = f"{table} " if table else "" +513 return f"RETURNS {table}{self.sql(expression, 'this')}" @@ -1422,8 +1425,8 @@ Default: True -
489        def offset_sql(self, expression: exp.Offset) -> str:
-490            return f"{super().offset_sql(expression)} ROWS"
+            
490        def offset_sql(self, expression: exp.Offset) -> str:
+491            return f"{super().offset_sql(expression)} ROWS"
 
@@ -1441,22 +1444,22 @@ Default: True
-
492        def systemtime_sql(self, expression: exp.SystemTime) -> str:
-493            kind = expression.args["kind"]
-494            if kind == "ALL":
-495                return "FOR SYSTEM_TIME ALL"
-496
-497            start = self.sql(expression, "this")
-498            if kind == "AS OF":
-499                return f"FOR SYSTEM_TIME AS OF {start}"
-500
-501            end = self.sql(expression, "expression")
-502            if kind == "FROM":
-503                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
-504            if kind == "BETWEEN":
-505                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
-506
-507            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
+            
493        def systemtime_sql(self, expression: exp.SystemTime) -> str:
+494            kind = expression.args["kind"]
+495            if kind == "ALL":
+496                return "FOR SYSTEM_TIME ALL"
+497
+498            start = self.sql(expression, "this")
+499            if kind == "AS OF":
+500                return f"FOR SYSTEM_TIME AS OF {start}"
+501
+502            end = self.sql(expression, "expression")
+503            if kind == "FROM":
+504                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
+505            if kind == "BETWEEN":
+506                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
+507
+508            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
 
@@ -1474,10 +1477,10 @@ Default: True
-
509        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
-510            table = expression.args.get("table")
-511            table = f"{table} " if table else ""
-512            return f"RETURNS {table}{self.sql(expression, 'this')}"
+            
510        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
+511            table = expression.args.get("table")
+512            table = f"{table} " if table else ""
+513            return f"RETURNS {table}{self.sql(expression, 'this')}"
 
@@ -1607,7 +1610,7 @@ Default: True
where_sql
window_sql
partition_by_sql
-
window_spec_sql
+
windowspec_sql
withingroup_sql
between_sql
bracket_sql
@@ -1616,6 +1619,7 @@ Default: True
exists_sql
case_sql
constraint_sql
+
nextvaluefor_sql
extract_sql
trim_sql
concat_sql
-- cgit v1.2.3