2025-02-13 14:30:50 +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 ' )
2025-02-13 14:46:14 +01:00
self . validate_identity (
" SELECT DISTINCT DepartmentName, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianCont FROM dbo.DimEmployee "
)
2025-02-13 14:30:50 +01:00
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:37:25 +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:30:50 +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:37:25 +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) " ,
} ,
)
2025-02-13 14:47:39 +01:00
def test_charindex ( self ) :
self . validate_all (
" CHARINDEX(x, y, 9) " ,
write = {
" spark " : " LOCATE(x, y, 9) " ,
} ,
)
self . validate_all (
" CHARINDEX(x, y) " ,
write = {
" spark " : " LOCATE(x, y) " ,
} ,
)
self . validate_all (
" CHARINDEX( ' sub ' , ' testsubstring ' , 3) " ,
write = {
" spark " : " LOCATE( ' sub ' , ' testsubstring ' , 3) " ,
} ,
)
self . validate_all (
" CHARINDEX( ' sub ' , ' testsubstring ' ) " ,
write = {
" spark " : " LOCATE( ' sub ' , ' testsubstring ' ) " ,
} ,
)