@@ -9715,6 +9715,87 @@ test_that("relational mutate(d = NA_real_, e = is.na(d)) order-preserving", {
97159715 DBI :: dbDisconnect(con , shutdown = TRUE )
97169716})
97179717
9718+ test_that(" relational mutate(d = NaN, e = is.na(d)) order-preserving" , {
9719+ # Autogenerated
9720+ duckdb <- asNamespace(" duckdb" )
9721+ drv <- duckdb :: duckdb()
9722+ con <- DBI :: dbConnect(drv )
9723+ experimental <- FALSE
9724+ invisible (DBI :: dbExecute(con , ' CREATE MACRO "is.na"(x) AS (x IS NULL)' ))
9725+ df1 <- data.frame (a = seq(1 , 6 , by = 1 ), b = 2 , g = c(1L , 2L , 2L , 3L , 3L , 3L ))
9726+
9727+ " mutate"
9728+ rel1 <- duckdb $ rel_from_df(con , df1 , experimental = experimental )
9729+ " mutate"
9730+ rel2 <- duckdb $ rel_project(
9731+ rel1 ,
9732+ list (
9733+ {
9734+ tmp_expr <- duckdb $ expr_reference(" a" )
9735+ duckdb $ expr_set_alias(tmp_expr , " a" )
9736+ tmp_expr
9737+ },
9738+ {
9739+ tmp_expr <- duckdb $ expr_reference(" b" )
9740+ duckdb $ expr_set_alias(tmp_expr , " b" )
9741+ tmp_expr
9742+ },
9743+ {
9744+ tmp_expr <- duckdb $ expr_reference(" g" )
9745+ duckdb $ expr_set_alias(tmp_expr , " g" )
9746+ tmp_expr
9747+ },
9748+ {
9749+ tmp_expr <- if (" experimental" %in% names(formals(duckdb $ expr_constant ))) {
9750+ duckdb $ expr_constant(NaN , experimental = experimental )
9751+ } else {
9752+ duckdb $ expr_constant(NaN )
9753+ }
9754+ duckdb $ expr_set_alias(tmp_expr , " d" )
9755+ tmp_expr
9756+ }
9757+ )
9758+ )
9759+ " mutate"
9760+ rel3 <- duckdb $ rel_project(
9761+ rel2 ,
9762+ list (
9763+ {
9764+ tmp_expr <- duckdb $ expr_reference(" a" )
9765+ duckdb $ expr_set_alias(tmp_expr , " a" )
9766+ tmp_expr
9767+ },
9768+ {
9769+ tmp_expr <- duckdb $ expr_reference(" b" )
9770+ duckdb $ expr_set_alias(tmp_expr , " b" )
9771+ tmp_expr
9772+ },
9773+ {
9774+ tmp_expr <- duckdb $ expr_reference(" g" )
9775+ duckdb $ expr_set_alias(tmp_expr , " g" )
9776+ tmp_expr
9777+ },
9778+ {
9779+ tmp_expr <- duckdb $ expr_reference(" d" )
9780+ duckdb $ expr_set_alias(tmp_expr , " d" )
9781+ tmp_expr
9782+ },
9783+ {
9784+ tmp_expr <- duckdb $ expr_function(" is.na" , list (duckdb $ expr_reference(" d" )))
9785+ duckdb $ expr_set_alias(tmp_expr , " e" )
9786+ tmp_expr
9787+ }
9788+ )
9789+ )
9790+ rel3
9791+ out <- duckdb $ rel_to_altrep(rel3 )
9792+ expect_identical(
9793+ out ,
9794+ data.frame (a = seq(1 , 6 , by = 1 ), b = 2 , g = c(1L , 2L , 2L , 3L , 3L , 3L ), d = NaN , e = TRUE )
9795+ )
9796+ DBI :: dbDisconnect(con , shutdown = TRUE )
9797+ })
9798+
97189799test_that(" relational mutate(d = row_number()) order-preserving" , {
97199800 # Autogenerated
97209801 duckdb <- asNamespace(" duckdb" )
@@ -14115,6 +14196,92 @@ test_that("relational mutate(d = NA_real_, e = is.na(d)) order-enforcing", {
1411514196 DBI :: dbDisconnect(con , shutdown = TRUE )
1411614197})
1411714198
14199+ test_that(" relational mutate(d = NaN, e = is.na(d)) order-enforcing" , {
14200+ # Autogenerated
14201+ duckdb <- asNamespace(" duckdb" )
14202+ drv <- duckdb :: duckdb()
14203+ con <- DBI :: dbConnect(drv )
14204+ experimental <- FALSE
14205+ invisible (DBI :: dbExecute(con , ' CREATE MACRO "is.na"(x) AS (x IS NULL)' ))
14206+ df1 <- data.frame (a = seq(1 , 6 , by = 1 ), b = 2 , g = c(1L , 2L , 2L , 3L , 3L , 3L ))
14207+
14208+ " mutate"
14209+ rel1 <- duckdb $ rel_from_df(con , df1 , experimental = experimental )
14210+ " mutate"
14211+ rel2 <- duckdb $ rel_project(
14212+ rel1 ,
14213+ list (
14214+ {
14215+ tmp_expr <- duckdb $ expr_reference(" a" )
14216+ duckdb $ expr_set_alias(tmp_expr , " a" )
14217+ tmp_expr
14218+ },
14219+ {
14220+ tmp_expr <- duckdb $ expr_reference(" b" )
14221+ duckdb $ expr_set_alias(tmp_expr , " b" )
14222+ tmp_expr
14223+ },
14224+ {
14225+ tmp_expr <- duckdb $ expr_reference(" g" )
14226+ duckdb $ expr_set_alias(tmp_expr , " g" )
14227+ tmp_expr
14228+ },
14229+ {
14230+ tmp_expr <- if (" experimental" %in% names(formals(duckdb $ expr_constant ))) {
14231+ duckdb $ expr_constant(NaN , experimental = experimental )
14232+ } else {
14233+ duckdb $ expr_constant(NaN )
14234+ }
14235+ duckdb $ expr_set_alias(tmp_expr , " d" )
14236+ tmp_expr
14237+ }
14238+ )
14239+ )
14240+ " mutate"
14241+ rel3 <- duckdb $ rel_project(
14242+ rel2 ,
14243+ list (
14244+ {
14245+ tmp_expr <- duckdb $ expr_reference(" a" )
14246+ duckdb $ expr_set_alias(tmp_expr , " a" )
14247+ tmp_expr
14248+ },
14249+ {
14250+ tmp_expr <- duckdb $ expr_reference(" b" )
14251+ duckdb $ expr_set_alias(tmp_expr , " b" )
14252+ tmp_expr
14253+ },
14254+ {
14255+ tmp_expr <- duckdb $ expr_reference(" g" )
14256+ duckdb $ expr_set_alias(tmp_expr , " g" )
14257+ tmp_expr
14258+ },
14259+ {
14260+ tmp_expr <- duckdb $ expr_reference(" d" )
14261+ duckdb $ expr_set_alias(tmp_expr , " d" )
14262+ tmp_expr
14263+ },
14264+ {
14265+ tmp_expr <- duckdb $ expr_function(" is.na" , list (duckdb $ expr_reference(" d" )))
14266+ duckdb $ expr_set_alias(tmp_expr , " e" )
14267+ tmp_expr
14268+ }
14269+ )
14270+ )
14271+ " arrange"
14272+ rel4 <- duckdb $ rel_order(
14273+ rel3 ,
14274+ list (duckdb $ expr_reference(" a" ), duckdb $ expr_reference(" b" ), duckdb $ expr_reference(" g" ), duckdb $ expr_reference(" d" ), duckdb $ expr_reference(" e" ))
14275+ )
14276+ rel4
14277+ out <- duckdb $ rel_to_altrep(rel4 )
14278+ expect_identical(
14279+ out ,
14280+ data.frame (a = seq(1 , 6 , by = 1 ), b = 2 , g = c(1L , 2L , 2L , 3L , 3L , 3L ), d = NaN , e = TRUE )
14281+ )
14282+ DBI :: dbDisconnect(con , shutdown = TRUE )
14283+ })
14284+
1411814285test_that(" relational mutate(d = row_number()) order-enforcing" , {
1411914286 # Autogenerated
1412014287 duckdb <- asNamespace(" duckdb" )
0 commit comments