Skip to content

Commit 7968c11

Browse files
authored
Merge pull request #155 from duckdblabs/f-ext-5
2 parents b33c429 + 5c90da9 commit 7968c11

File tree

20 files changed

+671
-926
lines changed

20 files changed

+671
-926
lines changed

R/relational.R

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,23 @@ rel_translate <- function(
192192
if (length(values) == 0) {
193193
return(relexpr_constant(FALSE))
194194
}
195-
consts <- map(values, do_translate, in_window = in_window)
196-
ops <- map(consts, list, do_translate(expr[[2]]))
197-
cmp <- map(ops, relexpr_function, name = "___eq_na_matches_na")
198-
alt <- reduce(cmp, function(.x, .y) {
195+
196+
lhs <- do_translate(expr[[2]])
197+
198+
if (anyNA(values)) {
199+
cmp_base <- list(relexpr_function("is.na", list(lhs)))
200+
values <- values[!is.na(values)]
201+
} else {
202+
cmp_base <- NULL
203+
}
204+
205+
consts <- map(values, do_translate)
206+
ops <- map(consts, ~ list(lhs, .x))
207+
cmp <- map(ops, relexpr_function, name = "r_base::==")
208+
alt <- reduce(c(cmp_base, cmp), function(.x, .y) {
199209
relexpr_function("|", list(.x, .y))
200210
})
211+
meta_ext_register()
201212
return(alt)
202213
},
203214
error = identity

R/tpch_raw_12.R

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,25 @@ tpch_raw_12 <- function(con, experimental) {
99
"|",
1010
list(
1111
duckdb$expr_function(
12-
"___eq_na_matches_na",
12+
"r_base::==",
1313
list(
14+
duckdb$expr_reference("l_shipmode"),
1415
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
1516
duckdb$expr_constant("MAIL", experimental = experimental)
1617
} else {
1718
duckdb$expr_constant("MAIL")
18-
},
19-
duckdb$expr_reference("l_shipmode")
19+
}
2020
)
2121
),
2222
duckdb$expr_function(
23-
"___eq_na_matches_na",
23+
"r_base::==",
2424
list(
25+
duckdb$expr_reference("l_shipmode"),
2526
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
2627
duckdb$expr_constant("SHIP", experimental = experimental)
2728
} else {
2829
duckdb$expr_constant("SHIP")
29-
},
30-
duckdb$expr_reference("l_shipmode")
30+
}
3131
)
3232
)
3333
)

R/tpch_raw_16.R

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,103 +54,103 @@ tpch_raw_16 <- function(con, experimental) {
5454
"|",
5555
list(
5656
duckdb$expr_function(
57-
"___eq_na_matches_na",
57+
"r_base::==",
5858
list(
59+
duckdb$expr_reference("p_size"),
5960
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
6061
duckdb$expr_constant(49, experimental = experimental)
6162
} else {
6263
duckdb$expr_constant(49)
63-
},
64-
duckdb$expr_reference("p_size")
64+
}
6565
)
6666
),
6767
duckdb$expr_function(
68-
"___eq_na_matches_na",
68+
"r_base::==",
6969
list(
70+
duckdb$expr_reference("p_size"),
7071
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
7172
duckdb$expr_constant(14, experimental = experimental)
7273
} else {
7374
duckdb$expr_constant(14)
74-
},
75-
duckdb$expr_reference("p_size")
75+
}
7676
)
7777
)
7878
)
7979
),
8080
duckdb$expr_function(
81-
"___eq_na_matches_na",
81+
"r_base::==",
8282
list(
83+
duckdb$expr_reference("p_size"),
8384
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
8485
duckdb$expr_constant(23, experimental = experimental)
8586
} else {
8687
duckdb$expr_constant(23)
87-
},
88-
duckdb$expr_reference("p_size")
88+
}
8989
)
9090
)
9191
)
9292
),
9393
duckdb$expr_function(
94-
"___eq_na_matches_na",
94+
"r_base::==",
9595
list(
96+
duckdb$expr_reference("p_size"),
9697
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
9798
duckdb$expr_constant(45, experimental = experimental)
9899
} else {
99100
duckdb$expr_constant(45)
100-
},
101-
duckdb$expr_reference("p_size")
101+
}
102102
)
103103
)
104104
)
105105
),
106106
duckdb$expr_function(
107-
"___eq_na_matches_na",
107+
"r_base::==",
108108
list(
109+
duckdb$expr_reference("p_size"),
109110
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
110111
duckdb$expr_constant(19, experimental = experimental)
111112
} else {
112113
duckdb$expr_constant(19)
113-
},
114-
duckdb$expr_reference("p_size")
114+
}
115115
)
116116
)
117117
)
118118
),
119119
duckdb$expr_function(
120-
"___eq_na_matches_na",
120+
"r_base::==",
121121
list(
122+
duckdb$expr_reference("p_size"),
122123
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
123124
duckdb$expr_constant(3, experimental = experimental)
124125
} else {
125126
duckdb$expr_constant(3)
126-
},
127-
duckdb$expr_reference("p_size")
127+
}
128128
)
129129
)
130130
)
131131
),
132132
duckdb$expr_function(
133-
"___eq_na_matches_na",
133+
"r_base::==",
134134
list(
135+
duckdb$expr_reference("p_size"),
135136
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
136137
duckdb$expr_constant(36, experimental = experimental)
137138
} else {
138139
duckdb$expr_constant(36)
139-
},
140-
duckdb$expr_reference("p_size")
140+
}
141141
)
142142
)
143143
)
144144
),
145145
duckdb$expr_function(
146-
"___eq_na_matches_na",
146+
"r_base::==",
147147
list(
148+
duckdb$expr_reference("p_size"),
148149
if ("experimental" %in% names(formals(duckdb$expr_constant))) {
149150
duckdb$expr_constant(9, experimental = experimental)
150151
} else {
151152
duckdb$expr_constant(9)
152-
},
153-
duckdb$expr_reference("p_size")
153+
}
154154
)
155155
)
156156
)

0 commit comments

Comments
 (0)