From 13b22525b2c2a85958027a59a979c7b3ecf3555e Mon Sep 17 00:00:00 2001 From: Thomas Hulst Date: Thu, 16 May 2024 13:55:08 +0200 Subject: [PATCH 1/3] fix mssql sql_runif() to return random number for each row in result set --- R/backend-mssql.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/backend-mssql.R b/R/backend-mssql.R index 1850e6d89..b64493ed4 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 ------------------------------------------------ From 36e7498731ff8ffe7bc119fb22a167b549d9c281 Mon Sep 17 00:00:00 2001 From: Thomas Hulst Date: Thu, 16 May 2024 14:31:11 +0200 Subject: [PATCH 2/3] CHECKSUM and NEWID to globalVariables() --- R/backend-mssql.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/backend-mssql.R b/R/backend-mssql.R index b64493ed4..1415151f7 100644 --- a/R/backend-mssql.R +++ b/R/backend-mssql.R @@ -660,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")) From 9b93c4cf003b5f55dc2ee1393c94f17bb401484e Mon Sep 17 00:00:00 2001 From: Thomas Hulst Date: Thu, 16 May 2024 14:36:24 +0200 Subject: [PATCH 3/3] update snapshot --- tests/testthat/_snaps/backend-mssql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)