Skip to content

Commit

Permalink
Merge pull request #159 from duckdblabs/b-na
Browse files Browse the repository at this point in the history
  • Loading branch information
krlmlr committed May 7, 2024
2 parents bd739e6 + 7a179ef commit 395217a
Show file tree
Hide file tree
Showing 18 changed files with 1,558 additions and 1,112 deletions.
12 changes: 8 additions & 4 deletions R/relational.R
Original file line number Diff line number Diff line change
Expand Up @@ -196,20 +196,24 @@ rel_translate <- function(
lhs <- do_translate(expr[[2]])

if (anyNA(values)) {
cmp_base <- list(relexpr_function("is.na", list(lhs)))
has_na <- TRUE
values <- values[!is.na(values)]
if (length(values) == 0) {
return(relexpr_function("is.na", list(lhs)))
}
} else {
cmp_base <- NULL
has_na <- FALSE
}

consts <- map(values, do_translate)
ops <- map(consts, ~ list(lhs, .x))
cmp <- map(ops, relexpr_function, name = "r_base::==")
alt <- reduce(c(cmp_base, cmp), function(.x, .y) {
alt <- reduce(cmp, function(.x, .y) {
relexpr_function("|", list(.x, .y))
})
coalesce <- relexpr_function("___coalesce", list(alt, relexpr_constant(has_na)))
meta_ext_register()
return(alt)
return(coalesce)
},
error = identity
)
Expand Down
48 changes: 29 additions & 19 deletions R/tpch_raw_12.R
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,40 @@ tpch_raw_12 <- function(con, experimental) {
rel1,
list(
duckdb$expr_function(
"|",
"___coalesce",
list(
duckdb$expr_function(
"r_base::==",
"|",
list(
duckdb$expr_reference("l_shipmode"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant("MAIL", experimental = experimental)
} else {
duckdb$expr_constant("MAIL")
}
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("l_shipmode"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant("MAIL", experimental = experimental)
} else {
duckdb$expr_constant("MAIL")
}
)
),
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("l_shipmode"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant("SHIP", experimental = experimental)
} else {
duckdb$expr_constant("SHIP")
}
)
)
)
),
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("l_shipmode"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant("SHIP", experimental = experimental)
} else {
duckdb$expr_constant("SHIP")
}
)
)
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(FALSE, experimental = experimental)
} else {
duckdb$expr_constant(FALSE)
}
)
),
duckdb$expr_function(
Expand Down
72 changes: 41 additions & 31 deletions R/tpch_raw_16.R
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ tpch_raw_16 <- function(con, experimental) {
)
),
duckdb$expr_function(
"|",
"___coalesce",
list(
duckdb$expr_function(
"|",
Expand All @@ -54,24 +54,40 @@ tpch_raw_16 <- function(con, experimental) {
"|",
list(
duckdb$expr_function(
"r_base::==",
"|",
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(49, experimental = experimental)
} else {
duckdb$expr_constant(49)
}
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(49, experimental = experimental)
} else {
duckdb$expr_constant(49)
}
)
),
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(14, experimental = experimental)
} else {
duckdb$expr_constant(14)
}
)
)
)
),
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(14, experimental = experimental)
duckdb$expr_constant(23, experimental = experimental)
} else {
duckdb$expr_constant(14)
duckdb$expr_constant(23)
}
)
)
Expand All @@ -82,9 +98,9 @@ tpch_raw_16 <- function(con, experimental) {
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(23, experimental = experimental)
duckdb$expr_constant(45, experimental = experimental)
} else {
duckdb$expr_constant(23)
duckdb$expr_constant(45)
}
)
)
Expand All @@ -95,9 +111,9 @@ tpch_raw_16 <- function(con, experimental) {
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(45, experimental = experimental)
duckdb$expr_constant(19, experimental = experimental)
} else {
duckdb$expr_constant(45)
duckdb$expr_constant(19)
}
)
)
Expand All @@ -108,9 +124,9 @@ tpch_raw_16 <- function(con, experimental) {
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(19, experimental = experimental)
duckdb$expr_constant(3, experimental = experimental)
} else {
duckdb$expr_constant(19)
duckdb$expr_constant(3)
}
)
)
Expand All @@ -121,9 +137,9 @@ tpch_raw_16 <- function(con, experimental) {
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(3, experimental = experimental)
duckdb$expr_constant(36, experimental = experimental)
} else {
duckdb$expr_constant(3)
duckdb$expr_constant(36)
}
)
)
Expand All @@ -134,25 +150,19 @@ tpch_raw_16 <- function(con, experimental) {
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(36, experimental = experimental)
duckdb$expr_constant(9, experimental = experimental)
} else {
duckdb$expr_constant(36)
duckdb$expr_constant(9)
}
)
)
)
),
duckdb$expr_function(
"r_base::==",
list(
duckdb$expr_reference("p_size"),
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(9, experimental = experimental)
} else {
duckdb$expr_constant(9)
}
)
)
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
duckdb$expr_constant(FALSE, experimental = experimental)
} else {
duckdb$expr_constant(FALSE)
}
)
)
)
Expand Down
Loading

0 comments on commit 395217a

Please sign in to comment.