1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
test_that("custom scalar functions translated correctly", {
local_con(simulate_oracle())
expect_equal(translate_sql(as.character(x)), sql("CAST(`x` AS VARCHAR2(255))"))
expect_equal(translate_sql(as.integer64(x)), sql("CAST(`x` AS NUMBER(19))"))
expect_equal(translate_sql(as.double(x)), sql("CAST(`x` AS NUMBER)"))
expect_equal(translate_sql(as.Date(x)), sql("DATE `x`"))
})
test_that("paste and paste0 translate correctly", {
local_con(simulate_oracle())
expect_equal(translate_sql(paste(x, y)), sql("`x` || ' ' || `y`"))
expect_equal(translate_sql(paste0(x, y)), sql("`x` || `y`"))
expect_equal(translate_sql(str_c(x, y)), sql("`x` || `y`"))
})
test_that("queries translate correctly", {
mf <- lazy_frame(x = 1, con = simulate_oracle())
expect_snapshot(mf %>% head())
})
test_that("queries do not use *", {
lf <- lazy_frame(x = 1L, con = simulate_oracle())
expect_equal(
lf %>% mutate(y = x) %>% remote_query(),
sql("SELECT `x`, `x` AS `y`\nFROM (`df`) ")
)
})
test_that("`sql_query_upsert()` is correct", {
df_y <- lazy_frame(
a = 2:3, b = c(12L, 13L), c = -(2:3), d = c("y", "z"),
con = simulate_oracle(),
.name = "df_y"
) %>%
mutate(c = c + 1)
expect_snapshot(
sql_query_upsert(
con = simulate_oracle(),
x_name = ident("df_x"),
y = df_y,
by = c("a", "b"),
update_cols = c("c", "d"),
returning_cols = c("a", b2 = "b"),
method = "merge"
)
)
})
test_that("generates custom sql", {
con <- simulate_oracle()
expect_snapshot(sql_table_analyze(con, in_schema("schema", "tbl")))
expect_snapshot(sql_query_explain(con, sql("SELECT * FROM foo")))
lf <- lazy_frame(x = 1, con = con)
expect_snapshot(left_join(lf, lf, by = "x", na_matches = "na"))
expect_snapshot(sql_query_save(con, sql("SELECT * FROM foo"), in_schema("schema", "tbl")))
expect_snapshot(sql_query_save(con, sql("SELECT * FROM foo"), in_schema("schema", "tbl"), temporary = FALSE))
expect_snapshot(slice_sample(lf, n = 1))
})
test_that("copy_inline uses UNION ALL", {
con <- simulate_oracle()
y <- tibble::tibble(id = 1L, arr = "{1,2,3}")
types <- c(id = "bigint", arr = "integer[]")
expect_snapshot({
copy_inline(con, y %>% slice(0)) %>% remote_query()
copy_inline(con, y) %>% remote_query()
# with `types`
copy_inline(con, y %>% slice(0), types = types) %>% remote_query()
copy_inline(con, y, types = types) %>% remote_query()
})
})
|