Add support for wildcards in tbl_file() paths (#1614, @rplsmn).
Add n_distinct(..., na.rm = TRUE) support for multiple passed columns (@lschneiderbauer, #1588).
New experimental sql_query(), sql_exec(), and default_conn() to simplify the most important operations for interactive use (#1564).
tbl_file() allows omitting the src argument, falling back to the default connection.
Full support for deep structs generated by struct_pack() for ALTREP (#1545).
Fix progress display for fractional progress values (#1499, #1505).
Extensions can be installed again.
Fix timezone conversion for invalid timestamps with tz_out_convert = "force" (#1474).
Substitute invalid UTF-8 characters in error messages to avoid a failure when reporting the error.
Fix index calculation for retrieval of arrays (#1473).
Fix conversion for retrieval of large enums.
Fix compiler error in debug build (@joakimlinde, #1368).
Add rich ErrorData-based error handling with structured error information (#1479).
Safeguard against deadlocks when accidentally issuing queries from the progress bar handler or other callbacks (#1475).
dbGetInfo() gets the version from a hard-coded value and not from a DuckDB query (#1481).
Package uses two cores by default for compilation (#1478).
local_con() test fixture for cleaner DuckDB connection management (#1476).Correct dbplyr translations for str_starts() and str_ends() (#1182, #1247).
Fix multiarch build on R 4.1 for Windows.
Update to duckdb v1.3.0, see https://github.com/duckdb/duckdb/releases/tag/v1.3.0 for details.
Add ingestion of matrices (@joakimlinde, #1150).
Fix rchk (#1173).
Fix compiler warning (@joakimlinde, #1172).
Update to duckdb v1.2.2, see https://github.com/duckdb/duckdb/releases/tag/v1.2.2 for details.
Add support for duckdb arrays in R (@joakimlinde, #102, #1090). To enable, connect with dbConnect(duckdb(), array = "matrix") (@joakimlinde, #1125).
Support fractional seconds in TIME and INTERVAL data (#1109).
The autoload_known_extensions configuration option is now enabled by default (#582, #1084, #1134).
Mention column name for conversion errors (#1108).
Types exposed through ALTREP are the same as through DBI (#1111), including STRUCT. This enables support more types in upcoming duckplyr versions.
Perform optional checks for ALTREP compatibility in rel_from_df() and expr_constant() (#1117).
Perform time zone conversion in the C++ layer where possible, to support ALTREP (#1130).
Improve developer experience: pkgload::load_all() now works, source files are rebuilt if header files change, configure clangd (#1128).
Add dots with checks to unexported functions (#1115).
Clean up edge case for fetching zero rows (#1104).
Avoid test for timings on CRAN (#1101).
dbExecute(con, "CALL ...") no longer attempts to access the resulting data frame. Use dbGetQuery(con, "CALL ...") to access the data (#1062, #1080).
Fix support for the connections pane in RStudio and Positron (@dfalbel, #1063).
New rel_to_view() (#1075).
New internal AltrepDataframeRelation, used with rel_from_altrep_df(wrap = TRUE) (#949, #1072).
Try relational materialization only once (#1066).
Update vendored cpp11 to 0.5.2 (#1068).
Avoid calls to non-API R functions.
duckdb_get_substrait(), duckdb_get_substrait_json(), duckdb_prepare_substrait(), duckdb_prepare_substrait_json() (@pdet, #1021).Update to duckdb v1.2.0, see https://github.com/duckdb/duckdb/releases/tag/v1.2.0 for details.
Progress is shown for slow operation. This is on by default in interactive mode and can be controlled by setting the "duckdb.progress_display" option to a logical scalar (#199, #951, @meztez).
Floor sub-day precision date before casting to int (@toppyy, #517, #981).
Set value returned by PRAGMA user_agent to r-dbi (#707, @elefeint).
Remove unconditional use of CPPHTTPLIB_USE_POLL to support compilation with R 4.0 and R 4.1 again (@Antonov548, #1043).
Support reading from multiple Parquet files again (#1015, #1024).
Fix translation for add_days() and add_years() clock functions (#976, @IoannaNika).
Limit automatic materialization by number of rows or number of cells (#1017).
New internal rapi_rel_to_csv(),rapi_rel_to_table(), and rapi_rel_insert(); rapi_rel_to_parquet() gains options argument (#867).
Skip tests that are about to fail.
Sync tests.
With duckdb(environment_scan = TRUE), data frame objects are available as views in duckdb SQL queries (#140, #164).
Update vendored cpp11 to 0.5.1 (#636).
Make ./cleanup script reentrant (@Antonov548, #612, #634).
Fix installation of extensions (#623).
Fix rchk and UB errors (#635).
Avoid loading rlang during startup (#601).
xz requirement in DESCRIPTION.Update to duckdb v1.1.3, see https://github.com/duckdb/duckdb/releases/tag/v1.1.3 for details.
New duckdb.materialize_callback option, supersedes get_last_rel() (#589).
New rel_explain_df() and rel_tostring() (#587).
Handle empty child values for list constants (#186, @romainfrancois).
Undef TRUE and FALSE (#595).
Remove enable_materialization argument to rel_from_altrep_df() in favor of creating a new data frame when needed (#588).
Flip argument order for expr_comparison() (#585).
Keep cleanup files to accommodate different build scenarios (#536).
Long-running queries can now be canceled immediately with Ctrl + C (terminal) or Escape (RStudio IDE and Workbench) (#514, #515).
Add col.types argument to duckdb_read_csv() (#445, @eli-daniels).
Rethrow errors with rlang if installed (#522).
Improve error message for parsing erros during statement extraction (tidyverse/duckplyr#219, #521).
Avoid RStudio IDE crashes when ending session with open objects (#520).
rfuns extension: %in% works correctly as part of a & conjunction (#528).
New interal APIs: rapi_get_last_rel_mat(), rapi_rel_to_altrep(allow_materialization = TRUE), rapi_rel_from_altrep_df(enable_materialization) (#526).
xz-compress duckdb sources in the tarball (#530).
rfuns extension: Fix signedness.
Update to duckdb v1.1.1, see https://github.com/duckdb/duckdb/releases/tag/v1.1.1 for details.
Add comparison expression to relational API (@toppyy, #457).
Temporarily change max_expression_depth during ALTREP evaluation (#101, #460).
Add temporary argument to duckdb_read_csv() (@ThomasSoeiro, #223).
Update vendored extension sources to hannes/duckdb-rfuns@20cde009b51b9355e6041b72b87105c6b45793fe.
Remove warnings for uninitialized variables.
Update to duckdb v1.1.0, see https://github.com/duckdb/duckdb/releases/tag/v1.1.0 for details.
Upgrade vendored cpp11 to 0.5.0.
Upgrade vendored cpp11 to 0.4.7 to fix compilation with R-devel.
Support dplyr::tbl(conn, I(...)).
MAP type (#61, #165).clock::date_count_between() (@edward-burn, #163, #166).round() duckdb translation uses ROUND_EVEN() instead of ROUND() (@lschneiderbauer, #146, #157).sort argument to rel_order() (@toppyy, #168).clock::add_days(), clock::add_years(), clock::get_day(), clock::get_month(), and clock::get_year() (@edward-burn, #153).win_current_group() instead of win_current_order() in SQL translation (@lschneiderbauer, #173, #175)."difftime" class is now mapped to the INTERVAL data type (#151).n_distinct() for multiple arguments using duckdb structs (@lschneiderbauer, #110, #122).NA to SQLNULL (#143).rel_sql(rel, "{{sql}}") works even on a read-only database (@Tmonster, #138).R CMD check warning regarding SETLENGTH() and SET_TRUELENGTH() (#145).duckdb(). A database file is closed (and available to be opened from another session) after the last connection that uses this file calls dbDisconnect() . The shutdown argument to dbDisconnect() or the duckdb_shutdown() functions are no longer necessary. Two database connections from the same R session can access the same file concurrently in read-write mode (#124).Fix compilation for R 4.0 and R 4.1, regression introduced in v0.10.0. Using librstrtmgr.a from UCRT build of rtools40 (#130).
The C++ core is now vendored commit by commit, once every five minutes. Vendoring stops if R CMD check fails or if a previously unreleased tag is reached.
New maintainer: Kirill Müller.
dplyr::tbl() works again when a Parquet or CSV file is passed instead of a table name (#38, #91).
DBI::dbQuoteIdentifier() correctly quotes identifiers that start with a digit (#67, #92).
Align the argument order of dbWriteTable() with the DBI specs (@eitsupi, #43, #49).
New tbl_file() and tbl_query() to explicitly access tables and queries as dbplyr lazy tables (#96). The cache argument to tbl() and to the new functions must be named.
Initial ALTREP support for LIST logical type (@romainfrancois, #77).
Update core to duckdb v0.10.0 (#90).
New private rel_to_parquet() to write a relation to parquet (@Tmonster, #46).
Change directory location for extensions and secrets for v.0.10.0 release (@Tmonster, #73).
Remove last instance of default_connection() (#50).
Use pkgdown BS5 (@maelle, #31, #70) with DuckDB logo (#76, @romainfrancois).
Link to R documentation page.
Add csv reading test for duckdb_read_csv(na.strings = ) (@Tmonster, #10).
Fix snapshot tests.
Tweak tests for compatibility with v0.10.0 (#84).
See release notes at https://github.com/duckdb/duckdb/releases/tag/v0.9.2.
See blog post at https://duckdb.org/2023/09/26/announcing-duckdb-090.html.
See release notes at https://github.com/duckdb/duckdb/releases/tag/v0.9.1.
Move sources to https://github.com/duckdb/duckdb-r (@krlmlr).
Add ADBC integration with the adbcdrivermanager package (duckdb/duckdb#8172, @paleolimbot).
Full support of lists and structs in R (duckdb/duckdb#8503, @krlmlr).
Compatibility with dbplyr.
Internal changes to support the duckplyr package.
duckdb_prepare_substrait_json().See release notes at https://github.com/duckdb/duckdb/releases/tag/v0.3.0.
See release notes at https://github.com/duckdb/duckdb/releases/tag/v0.2.9.
This preview release of DuckDB is named "Ceruttii" after a long-extinct relative of the present-day Harleqin Duck (Histrionicus Ceruttii). Binary builds are listed below. Feedback is very welcome.
Note: Again, this release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
RANGE/GENERATE_SERIES for timestamp + intervalPARQUET_METADATA and PARQUET_SCHEMA functionsRANGE framing, NTH_VALUE and other improvementsTRY_CASTThis preview release of DuckDB is named "Mollissima" after the Common Eider (Somateria mollissima). Binary builds are listed below. Feedback is very welcome.
Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
Major changes:
SQL
NEXTAFTER for float and doubleFIRST implementation for nested typesUNNEST table function & array syntax in parserQUANTILEAPIs
Engine
This preview release of DuckDB is named "Jamaicensis" after the blue-billed Ruddy Duck (Oxyura jamaicensis). Binary builds are listed below. Feedback is very welcome.
Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
Also note: Due to changes in the internal storage (#1530), databases created with this release wil require somewhat more disk space. This is transient as we are working hard to finalise the on-disk storage format.
Major changes:
Engine
SQL
#1 etc.QUANTILE variants and #1685: Temporal quantilesTIMESTAMP_NS, TIMESTAMP_MS and TIMESTAMP_NSUSING keyword in DELETE statementARRAY syntaxCURRVALSKIP as an option to READ_CSV and COPYAPIs
.parquet or .csvALTREP to speed up string column transfer to RThis preview release of DuckDB is named "Falcata" after the Falcated Duck (Mareca falcata). Binary builds are listed below. Feedback is very welcome.
Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
Major Changes:
Engine
SQL
QUANTILE aggregate variant that takes a list of quantiles & #1346: Approximate QuantilesJACCARD, #1441 LEVENSHTEIN & HAMMING distance scalar functionFACTORIAL scalar function and ! postfix operatorIS (NOT) DISTINCT FROMLIST_EXTRACT to get a single element from a listHAVING clause (fixes issue #1358)APIs:
This preview release of DuckDB is named "Jubata" after the Australian Wood Duck (Chenonetta jubata). Binary builds are listed below. Feedback is very welcome.
Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
Major changes: SQL
SAMPLE OperatorSHOW select queriesCHR and ASCII functions & #1252: Add GAMMA and LGAMMA functionsEngine
DELIM_GET and DELIM_JOIN operatorsDATE, TIME and TIMESTAMP rework: move to epoch format & microsecond supportClients
Parquet
This preview release of DuckDB is named "Serrator" after the Red-breasted merganser (Mergus serrator). Binary builds are listed below. Feedback is very welcome.
Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
Major changes:
SQL:
INTERVAL SyntaxMEDIAN and QUANTILE functionsCREATE FUNCTIONNOT) ILIKE, and optimize certain types of LIKE expressionsEngine
Clients
0.2.3-devXXX & #1176: Python binding: Add module attributes for introspecting DuckDB versionParquet Reader:
This is a preview release of DuckDB. Starting from this release, releases get named as well. Names are chosen from species of ducks (of course). We start with "Clypeata".
Note: This release introduces a backwards-incompatible change to the on-disk storage format. We suggest you use the EXPORT DATABASE command with the old version followed by IMPORT DATABASE with the new version to migrate your data. See the documentation for details.
Binary builds are listed below. Feedback is very welcome. Major changes:
SQL
Engine
Client
This is a preview release of DuckDB. Binary builds are listed below. Feedback is very welcome. Major changes:
Engine
INTERVAL Type, #858: Fixed-precision DECIMAL types & #819: HUGEINT typeAPI
CreateAggregateFunction() & #752: CreateVectorizedFunction() using only template parametersSQL
strftime and strptimeEXPORT DATABASE and IMPORT DATABASEThis is a preview release of DuckDB. Binary builds are listed below. Feedback is very welcome.
SQL:
FULL OUTER JOIN SupportNULLS FIRST/NULLS LASTLEAST/GREATEST functionsTRIM function and add optional second parameter to RTRIM/LTRIM/TRIMClients:
This is a preview release of DuckDB. Binary are listed below. Feedback is very welcome. Major changes: New website woo-ho!
Engine
SQL
EPOCH_MS function and test casesClients
This is a preview release of DuckDB. Feedback is very welcome.
SQL
IF and IFNULL #644LEFT #620 and RIGHT #631BLOB type supportLIKE escape supportClients
This is the sixth preview release of DuckDB. Feedback is very welcome. Binary builds are available as well.
SQL
READ_CSV_AUTO for dialect, data type and header detection #582SHOW & DESCRIBE Tables #501CONTAINS #488LPAD / RPAD, LTRIM / RTRIM, REPEAT, REPLACE & UNICODE #597BIT_LENGTH, BIT_COUNT, BIT_AND, BIT_OR, BIT_XOR & BIT_AGG #608Engine
LIKE optimization rules #559Clients
This is the fifth preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/alias/v0.1.6/
SQL
ALTER TABLE tbl RENAME TO tbl2LIST aggregation and unpacked with the new UNNEST operatorINSTR string function, #477 PREFIX string function, #480 SUFFIX string functionEngine
Python client
date / datetime supportdescription field for cursorread_only flag to connectpybind11R client
read_csv_duckdbdata.frame objectsThis is the fourth preview release of DuckDB. Feedback is very welcome. Note: The v0.1.4 version was skipped because of a Python packaging issue.
Binary builds can be found here: http://download.duckdb.org/rev/59f8907b5d89268c158ae1774d77d6314a5c075f/
Major changes:
DATE_TRUNC SQL functionREVERSE SQL functionSELECT table.* FROM tableindex_t to idx_tNote: This release contains a bug in the Python API that leads to crashes when fetching strings to NumPy/Pandas #447
This is the third preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/rev/59f8907b5d89268c158ae1774d77d6314a5c075f/
Major changes:
This is the third preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/rev/6fcb5ef8e91dcb3c9b2c4ca86dab3b1037446b24/
This is the second preview release of DuckDB. Feedback is very welcome. Binary builds can be found here: http://download.duckdb.org/rev/2e51e9bae7699853420851d3d2237f232fc2a9a8/
This is the first preview release of DuckDB. Feedback is very welcome.
Binary builds can be found here: http://download.duckdb.org/rev/c1cbc9d0b5f98a425bfb7edb5e6c59b5d10550e4/