2025-02-13 14:31:47 +01:00
|
|
|
from tests.dialects.test_dialect import Validator
|
|
|
|
|
|
|
|
|
|
|
|
class TestTSQL(Validator):
|
|
|
|
dialect = "tsql"
|
|
|
|
|
|
|
|
def test_tsql(self):
|
|
|
|
self.validate_identity('SELECT "x"."y" FROM foo')
|
|
|
|
|
|
|
|
self.validate_all(
|
|
|
|
"SELECT CAST([a].[b] AS SMALLINT) FROM foo",
|
|
|
|
write={
|
|
|
|
"tsql": 'SELECT CAST("a"."b" AS SMALLINT) FROM foo',
|
|
|
|
"spark": "SELECT CAST(`a`.`b` AS SHORT) FROM foo",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
2025-02-13 14:40:43 +01:00
|
|
|
self.validate_all(
|
|
|
|
"CONVERT(INT, CONVERT(NUMERIC, '444.75'))",
|
|
|
|
write={
|
|
|
|
"mysql": "CAST(CAST('444.75' AS DECIMAL) AS INT)",
|
|
|
|
"tsql": "CAST(CAST('444.75' AS NUMERIC) AS INTEGER)",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
2025-02-13 14:31:47 +01:00
|
|
|
def test_types(self):
|
|
|
|
self.validate_identity("CAST(x AS XML)")
|
|
|
|
self.validate_identity("CAST(x AS UNIQUEIDENTIFIER)")
|
|
|
|
self.validate_identity("CAST(x AS MONEY)")
|
|
|
|
self.validate_identity("CAST(x AS SMALLMONEY)")
|
|
|
|
self.validate_identity("CAST(x AS ROWVERSION)")
|
|
|
|
self.validate_identity("CAST(x AS IMAGE)")
|
|
|
|
self.validate_identity("CAST(x AS SQL_VARIANT)")
|
|
|
|
self.validate_identity("CAST(x AS BIT)")
|
2025-02-13 14:40:43 +01:00
|
|
|
self.validate_all(
|
|
|
|
"CAST(x AS DATETIME2)",
|
|
|
|
read={
|
|
|
|
"": "CAST(x AS DATETIME)",
|
|
|
|
},
|
|
|
|
write={
|
|
|
|
"mysql": "CAST(x AS DATETIME)",
|
|
|
|
"tsql": "CAST(x AS DATETIME2)",
|
|
|
|
},
|
|
|
|
)
|