Adding upstream version 25.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
147b6e06e8
commit
4e506fbac7
136 changed files with 80990 additions and 72541 deletions
|
@ -1,4 +1,4 @@
|
|||
from sqlglot import exp, parse
|
||||
from sqlglot import exp, parse, parse_one
|
||||
from tests.dialects.test_dialect import Validator
|
||||
from sqlglot.errors import ParseError
|
||||
from sqlglot.optimizer.annotate_types import annotate_types
|
||||
|
@ -8,19 +8,14 @@ class TestTSQL(Validator):
|
|||
dialect = "tsql"
|
||||
|
||||
def test_tsql(self):
|
||||
self.assertEqual(
|
||||
annotate_types(self.validate_identity("SELECT 1 WHERE EXISTS(SELECT 1)")).sql("tsql"),
|
||||
"SELECT 1 WHERE EXISTS(SELECT 1)",
|
||||
)
|
||||
# https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms187879(v=sql.105)?redirectedfrom=MSDN
|
||||
# tsql allows .. which means use the default schema
|
||||
self.validate_identity("SELECT * FROM a..b")
|
||||
|
||||
self.validate_identity("CREATE view a.b.c", "CREATE VIEW b.c")
|
||||
self.validate_identity("DROP view a.b.c", "DROP VIEW b.c")
|
||||
self.validate_identity("ROUND(x, 1, 0)")
|
||||
self.validate_identity("EXEC MyProc @id=7, @name='Lochristi'", check_command_warning=True)
|
||||
# https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms187879(v=sql.105)?redirectedfrom=MSDN
|
||||
# tsql allows .. which means use the default schema
|
||||
self.validate_identity("SELECT * FROM a..b")
|
||||
|
||||
self.validate_identity("SELECT TRIM(' test ') AS Result")
|
||||
self.validate_identity("SELECT TRIM('.,! ' FROM ' # test .') AS Result")
|
||||
self.validate_identity("SELECT * FROM t TABLESAMPLE (10 PERCENT)")
|
||||
|
@ -36,9 +31,22 @@ class TestTSQL(Validator):
|
|||
self.validate_identity("1 AND true", "1 <> 0 AND (1 = 1)")
|
||||
self.validate_identity("CAST(x AS int) OR y", "CAST(x AS INTEGER) <> 0 OR y <> 0")
|
||||
self.validate_identity("TRUNCATE TABLE t1 WITH (PARTITIONS(1, 2 TO 5, 10 TO 20, 84))")
|
||||
self.validate_identity(
|
||||
"CREATE CLUSTERED INDEX [IX_OfficeTagDetail_TagDetailID] ON [dbo].[OfficeTagDetail]([TagDetailID] ASC)"
|
||||
)
|
||||
self.validate_identity(
|
||||
"CREATE INDEX [x] ON [y]([z] ASC) WITH (allow_page_locks=on) ON X([y])"
|
||||
)
|
||||
self.validate_identity(
|
||||
"CREATE INDEX [x] ON [y]([z] ASC) WITH (allow_page_locks=on) ON PRIMARY"
|
||||
)
|
||||
self.validate_identity(
|
||||
"COPY INTO test_1 FROM 'path' WITH (FORMAT_NAME = test, FILE_TYPE = 'CSV', CREDENTIAL = (IDENTITY='Shared Access Signature', SECRET='token'), FIELDTERMINATOR = ';', ROWTERMINATOR = '0X0A', ENCODING = 'UTF8', DATEFORMAT = 'ymd', MAXERRORS = 10, ERRORFILE = 'errorsfolder', IDENTITY_INSERT = 'ON')"
|
||||
)
|
||||
self.assertEqual(
|
||||
annotate_types(self.validate_identity("SELECT 1 WHERE EXISTS(SELECT 1)")).sql("tsql"),
|
||||
"SELECT 1 WHERE EXISTS(SELECT 1)",
|
||||
)
|
||||
|
||||
self.validate_all(
|
||||
"SELECT IIF(cond <> 0, 'True', 'False')",
|
||||
|
@ -1868,3 +1876,25 @@ FROM OPENJSON(@json) WITH (
|
|||
"DECLARE vendor_cursor CURSOR FOR SELECT VendorID, Name FROM Purchasing.Vendor WHERE PreferredVendorStatus = 1 ORDER BY VendorID",
|
||||
check_command_warning=True,
|
||||
)
|
||||
|
||||
def test_scope_resolution_op(self):
|
||||
# we still want to support :: casting shorthand for tsql
|
||||
self.validate_identity("x::int", "CAST(x AS INTEGER)")
|
||||
self.validate_identity("x::varchar", "CAST(x AS VARCHAR)")
|
||||
self.validate_identity("x::varchar(MAX)", "CAST(x AS VARCHAR(MAX))")
|
||||
|
||||
for lhs, rhs in (
|
||||
("", "FOO(a, b)"),
|
||||
("bar", "baZ(1, 2)"),
|
||||
("LOGIN", "EricKurjan"),
|
||||
("GEOGRAPHY", "Point(latitude, longitude, 4326)"),
|
||||
(
|
||||
"GEOGRAPHY",
|
||||
"STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326)",
|
||||
),
|
||||
):
|
||||
with self.subTest(f"Scope resolution, LHS: {lhs}, RHS: {rhs}"):
|
||||
expr = self.validate_identity(f"{lhs}::{rhs}")
|
||||
base_sql = expr.sql()
|
||||
self.assertEqual(base_sql, f"SCOPE_RESOLUTION({lhs + ', ' if lhs else ''}{rhs})")
|
||||
self.assertEqual(parse_one(base_sql).sql("tsql"), f"{lhs}::{rhs}")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue