Clarify usage by reducing duplication (#400).
Tweak developer vignette.
New flights_df()
used instead of palmerpenguins::penguins
(#408).
New duck_sql()
(duckdb/duckdb-r#32, #397).
New duckparquet()
, duckcsv()
, duckjson()
and duckfile()
, deprecating duckplyr_df_from_*()
and df_from_*()
functions (#210, #396).
Deprecate is_duckplyr_df()
(#392).
New is_ducktbl()
(#391).
Add "lazy_duckplyr_df"
class that requires collect()
(#381, #390).
as_ducktbl()
for dbplyr lazy tables (#395).New duck_sql()
(duckdb/duckdb-r#32, #397).
New duckparquet()
, duckcsv()
, duckjson()
and duckfile()
, deprecating duckplyr_df_from_*()
and df_from_*()
functions (#210, #396).
Deprecate is_duckplyr_df()
(#392).
New is_ducktbl()
(#391).
Add "lazy_duckplyr_df"
class that requires collect()
(#381, #390).
Use as_duckplyr_df_impl()
in verbs (#386).
Use as_ducktbl()
in touchstone script (#385).
New as_ducktbl()
, replaces as_duckplyr_tibble()
and as_duckplyr_df()
(#383).
New ducktbl()
(#382).
New last_rel()
to retrieve the last relation object used in materialization (#209, #375).
Improve as_duckplyr_df()
error message for invalid .data
(@maelle, #339).
Tweak as_ducktbl()
for dbplyr lazy tables (#395).
Fix comment in touchstone script (#387).
Use as_duckplyr_df_impl()
in generated code (#384).
Legacy duckdb script.
Add read-only markers for overwrite + restore.
Cleanup (#377).
Avoid "duckdb.materialize_message"
option (#376).
Update TPCH outputs to account for data changes in duckdb 0.8.0 (#294).
Sync.
Bump duckdb dependency.
Fix rendering in vanilla session.
Tweak method and behavior (#373).
Printing a duckplyr frame no longer materializes (#255, #378).
Comparison expressions are translated in a way that allows them to be pushed down to Parquet (@toppyy, #270).
Use ducktbl()
in tests (#388).
Avoid as_duckplyr_df()
(#389).
Skip test that requires dplyr > 1.1.4.
Add snapshot test for conversion error in as_duckplyr_df()
.
Use as_duckplyr_df_impl()
in verbs (#386).
Use as_ducktbl()
in touchstone script (#385).
New as_ducktbl()
, replaces as_duckplyr_tibble()
and as_duckplyr_df()
(#383).
New ducktbl()
(#382).
Fix comment in touchstone script (#387).
Use as_duckplyr_df_impl()
in generated code (#384).
Legacy duckdb script.
Use ducktbl()
in tests (#388).
Avoid as_duckplyr_df()
(#389).
Skip test that requires dplyr > 1.1.4.
New last_rel()
to retrieve the last relation object used in materialization (#209, #375).
Improve as_duckplyr_df()
error message for invalid .data
(@maelle, #339).
Add read-only markers for overwrite + restore.
Cleanup (#377).
Avoid "duckdb.materialize_message"
option (#376).
Update TPCH outputs to account for data changes in duckdb 0.8.0 (#294).
Sync.
Fix rendering in vanilla session.
as_duckplyr_df()
.check_duplicate_names()
(#317).
Check perfect roundtrip for constants again (#307).
Correctly handle missing values in if_else()
.
Use relational operators from the rfuns extension as aliases, not as macros (#291).
Compute ptype only for join columns in a safe way without materialization, not for the entire data frame (#289).
Edge case for count()
(#282).
Attaching duckplyr via library()
overwrites all dplyr methods again (#217, #276).
expr_scrub()
can handle function-definitions (@toppyy, #268, #271).
mutate()
constructs intermediate data frames for each new variable (#332).
Harden telemetry code against invalid arguments (#321).
across()
tweaks (#318).
Fall back to dplyr when passing multiple
with joins (#323).
Limit number of items that can be handled with %in%
(#319).
Use Ubuntu noble for touchstone (#314).
Enable touchstone (#313).
Use touchstone for continuous benchmarking (#311).
More complete across()
(#306).
Add more tests from dplyr (#305).
Partial support for across()
in mutate()
and summarise()
(#296).
Rely on duckdb to check const feasibility (#293).
Allow R 4.0 (#285).
Avoid resetting expression depth, now in duckdb (#280).
Record and replay functionality now includes the top-level function being called (#273).
Set the duckdb.materialize_message
option on load only if not previously specified (@stefanlinner, #220).
Configure IDE.
Comment design choice.
explain()
returns the input, invisibly (#331).
Sync (#329).
Nicer fallback error when function cannot be translated (#324).
Fix glue syntax.
Tweak workflow (#316).
Test touchstone (#315).
Avoid copying copy.
Sync tests with dplyr dev version (#304).
Update snapshots.
Fix sync (#290).
Apply styler (#281).
Sync patches (#277).
Fix typo.
Sync docs.
Sync docs branch (#266).
Avoid failure in fledge workflow if no changes (#368).
Fetch tags for fledge workflow to avoid unnecessary NEWS entries (#366).
Use styler PR (#362).
Run in Ubuntu Noble to support r-universe binaries (#352).
Correctly detect branch protection (#345).
Use stable pak (#344).
Latest changes (#328).
Revert to status workflow (#326).
Trigger run (#288).
Trigger run (#287).
Updates from duckdb (#286).
Install local package for pkgdown builds (#258).
Fix condition for fledge workflow (#248).
Use curl.
Use gh to download artifact.
Don't need to unzip artifact.
Restrict commit again to own PRs.
Include section on code generation in contributing guide (#24, #348).
Update README.
Sync.
Sync.
Sync.
Move logo.
Need file, not link, for logo on GitHub.
Fix logo on GitHub.
Use downlit only for GitHub README (#262).
Fix cut-and-paste typo (@joakimlinde, #240).
Use new URL for pkgdown (#247).
Snapshot updates for rcc-smoke (null) (#356).
Add snapshot instead of output (#346).
Snapshot updates for rcc-smoke (null) (#302).
Test telemetry code (#275).
Adapt tests to duckdb release candidate (#261).
Detect functions from the duckplyr package (#246).
Avoid failures if artifact is missing.
Store SHA as artifact.
Move towards external status updates.
Tweak status workflow.
Use token.
Add external workflow to update commit statuses.
Avoid manually installing package for pkgdown (#245).
Fix fledge (#243).
Use proper remote repo (#241).
Add permissions to fledge workflow (#238).
Fix tests without suggested packages (#236).
Add permissions to fledge workflow (#235).
Add permissions to fledge workflow (#234).
Add input to fledge workflow (#233).
Use proper token for fledge (#232).
Fix fledge workflow (#231).
Bump version via PR (#230).
Sync with duckdb.
df_from_file()
and related functions support multiple files (#194, #195), show a clear error message for non-string path
arguments (#182), and create a tibble by default (#177).as_duckplyr_tibble()
to convert a data frame to a duckplyr tibble (#177).?df_from_file
shows how to read multiple files (#181, #186) and how to specify CSV column types (#140, #189), and is shown correctly in reference index (#173, #190).as.integer()
, NA
and %in%
(#83, #154, #148, #155, #159, #160).library(duckplyr)
calls methods_overwrite()
(#164).grepl()
.intersect()
, setdiff()
, symdiff()
, union()
, and union_all()
(#169).NA
and those used in an expression (#157).head(-1)
forwards to the default implementation (#131, #156).left_join()
and other join functions call auto_copy()
.row_number()
returns integer.is.na(NaN)
is TRUE
.summarise(count = n(), count = n())
creates only one column named count
.?df_from_file
(@andreranza, #133, #134).vec_ptype()
does not materialize (#149).expect_identical()
to capture differences between doubles and integers.df_to_parquet()
to write to Parquet, new convenience functions df_from_csv()
, duckdb_df_from_csv()
, df_from_parquet()
and duckdb_df_from_parquet()
(#87, #89, #96, #128).summarise()
(#72, #106).summarise()
no longer restores subclass.log10()
and log()
.fallback_sitrep()
and related functionality for collecting telemetry data (#102, #107, #110, #111, #115). No data is collected by default, only a message is displayed once per session and then every eight hours. Opt in or opt out by setting environment variables.group_by()
and other methods to collect fallback information (#94, #104, #105).suppressWarnings()
as the identity function.cli::cli_abort()
over stop()
or rlang::abort()
(#114)..data$a
and .env$a
.integer
, numeric
, logical
, Date
, POSIXct
, and difftime
for now.DUCKPLYR_METHODS_OVERWRITE
is set to TRUE
, loading duckplyr automatically calls methods_overwrite()
.log()
and log10()
.methods_overwrite()
and methods_restore()
show a message.grepl(x = NA)
gives correct results.auto_copy()
for non-data-frame input.distinct()
now preserves order in corner cases (#77, #78).log(0)
and log(-1)
(#75, #76).mutate()
that are actually representable in duckdb (#73).ifelse()
, support if_else()
(#79).dplyr_reconstruct()
method (#48).meta_replay()
.arrange()
in case of ties.slice_sample()
, not sample_n()
or sample_frac()
(#74).IS NOT DISTINCT FROM
for faster execution (duckdb/duckdb-r#41, #68).Skip tests that give different output on dev tidyselect.
Import utils::globalVariables()
.
Improve documentation.
Work around problem with dplyr_reconstruct()
in R 4.3.
Rename duckdb_from_file()
to df_from_file()
.
Unexport private duckdb_rel_from_df()
, rel_from_df()
, wrap_df()
and wrap_integer()
.
Reexport %>%
and tibble()
.
R CMD check
.relexpr_window()
for now.Initial version, exporting:
new_relational()
to construct objects of class "relational"
rel_aggregate()
, rel_distinct()
, rel_filter()
, rel_join()
, rel_limit()
, rel_names()
, rel_order()
, rel_project()
, rel_set_diff()
, rel_set_intersect()
, rel_set_symdiff()
, rel_to_df()
, rel_union_all()
new_relexpr()
to construct objects of class "relational_relexpr"
relexpr_constant()
, relexpr_function()
, relexpr_reference()
, relexpr_set_alias()
, relexpr_window()