diff --git a/R/backend-mssql.R b/R/backend-mssql.R index 1850e6d89..1415151f7 100644 --- a/R/backend-mssql.R +++ b/R/backend-mssql.R @@ -294,7 +294,8 @@ simulate_mssql <- function(version = "15.0") { is.na = mssql_is_null, runif = function(n = n(), min = 0, max = 1) { - sql_runif(RAND(), n = {{ n }}, min = min, max = max) + # https://stackoverflow.com/a/9039661 + sql_runif(RAND(CHECKSUM(NEWID())), n = {{ n }}, min = min, max = max) }, # string functions ------------------------------------------------ @@ -659,4 +660,4 @@ bit_to_boolean <- function(x_expr) { } } -utils::globalVariables(c("BIT", "CAST", "%AS%", "%is%", "convert", "DATE", "DATEADD", "DATEFROMPARTS", "DATEDIFF", "DATENAME", "DATEPART", "IIF", "NOT", "SUBSTRING", "LTRIM", "RTRIM", "CHARINDEX", "SYSDATETIME", "SECOND", "MINUTE", "HOUR", "DAY", "DAYOFWEEK", "DAYOFYEAR", "MONTH", "QUARTER", "YEAR", "BIGINT", "INT", "%AND%", "%BETWEEN%")) +utils::globalVariables(c("BIT", "CAST", "%AS%", "%is%", "convert", "DATE", "DATEADD", "DATEFROMPARTS", "DATEDIFF", "DATENAME", "DATEPART", "IIF", "NOT", "SUBSTRING", "LTRIM", "RTRIM", "CHARINDEX", "SYSDATETIME", "SECOND", "MINUTE", "HOUR", "DAY", "DAYOFWEEK", "DAYOFYEAR", "MONTH", "QUARTER", "YEAR", "BIGINT", "INT", "%AND%", "%BETWEEN%", "CHECKSUM", "NEWID")) diff --git a/tests/testthat/_snaps/backend-mssql.md b/tests/testthat/_snaps/backend-mssql.md index f17f8175c..0fd81d2a8 100644 --- a/tests/testthat/_snaps/backend-mssql.md +++ b/tests/testthat/_snaps/backend-mssql.md @@ -231,7 +231,7 @@ SELECT `x` FROM ( - SELECT `df`.*, ROW_NUMBER() OVER (ORDER BY RAND()) AS `col01` + SELECT `df`.*, ROW_NUMBER() OVER (ORDER BY RAND(CHECKSUM(NEWID()))) AS `col01` FROM `df` ) AS `q01` WHERE (`col01` <= 1)