Skip to content

Releases: cynkra/dm

dm 1.0.10

23 Jan 01:22
Compare
Choose a tag to compare

Chore

  • Establish compatibility with igraph >= 2.0.0 (#2187) and withr 3.0.0 (#2184).

  • Reexport tibble::glimpse() instead of pillar::glimpse() to avoid pillar dependency with roxygen2 7.3.0 (#2179).

dm 1.0.9

10 Jan 01:21
Compare
Choose a tag to compare

Features

  • dm_sql() now processes table_names with dbplyr::escape(), therefore also accepting dbplyr objects (#2129).

Chore

dm 1.0.8

05 Nov 01:42
Compare
Choose a tag to compare

dm 1.0.8

Bug fixes

  • copy_dm_to() creates string columns of necessary lengths for MariaDB and SQL Server. This worked before for SQL Server in dm 1.0.5, now also works on MariaDB (#311, #2066, #2082).

Features

  • Explicitly fail on compute(temporary = TRUE), which never worked correctly (#2059, #2103).

  • Warn about DuckDB not supporting autoincrementing primary keys (#2099).

Chore

  • Make check_suggested() a standalone (#2054).

Documentation

  • Tweak vignette for compute(temporary = TRUE).

  • Update documentation of check_suggested() (@olivroy, #2055).

Performance

  • Speed up dm(), new_dm(), as_dm() and dm_validate(). dm() and as_dm() no longer call dm_validate() (#2108).

Testing

  • Add test for copy_dm_to(table_names = ) (#250, #2101).

  • Work around test failures for dbplyr 2.4.0.

  • Remove most skips from tests (#2052).

dm 1.0.7

27 Oct 07:26
Compare
Choose a tag to compare

Features

  • copy_dm_to() now warns unconditionally on unsupported arguments, and fails if copy_to is provided (#1944). Use the new dm_sql() function as a replacement for copy_dm_to(copy_to = ) (#1915, #2011, @jangorecki).

  • New json_unnest() and json_unpack(), currently implemented for data frames only (#991, #997).

  • dm_rows_append() also works for local dm, with support for autoincrement primary keys (#1727, #1745).

  • Breaking change: Add check_dots_empty() calls (#1929, #1943).

  • Test MySQL on GHA (#1940).

  • Improve MySQL compatibility regarding learning of database schemas and checking of constraints (#1938).

Breaking changes

  • Breaking change: Add check_dots_empty() calls (#1929, #1943).

Bug fixes

  • Compatibility with duckdb 0.9.1.

  • Minor fixes in dm_pack_tbl() and dm_unwrap_tbl() (#1947).

Documentation

  • Use rlang::check_installed() internally to install missing suggested packages on the fly (@olivroy, #1348, #2036, #2039, #2040).

  • Use vectorized rlang::is_installed()to decide if examples should be run (@olivroy, #2043).

  • Recategorize and describe function reference.

  • Better error and information messages when querying keys.

  • collect.zoomed_dm() shows a more helpful error message (#1929, #1945).

  • Add information on default font size to ?dm_draw (#1935).

  • Add db-* rules to Makefile to simplify Docker-based database setup.

  • Remove curly braces, add \pkg (@olivroy, #2042).

Performance

Testing

  • Remove most skips from tests (#2052).

  • Add explicit unique key to dm_for_filter().

  • Add Postgres test for dm_sql().

  • Switch internal testing to MariaDB.

  • Fast offline checks with new "DM_OFFLINE" environment variable.

  • New GHA checks for the case of missing suggested packages (#1952).

Chore

Internal

  • Prefer map*() over lapply() and vapply().

  • styler::style_pkg(scope = "tokens").

  • Rename internal new_dm3() to dm_from_def() (#1225, #1949).

  • Remove dead code (#979, #1950, #1871).

  • Reorganize build_copy_queries() (#1923).

  • Avoid dbplyr::ident_q() (#1788).

  • Add ellipsis to tbl_sum() signature (#1941).

dm 1.0.5

21 Mar 01:22
Compare
Choose a tag to compare

Features

  • Progress bars for dm_wrap_tbl() and dm_unwrap_tbl() (#835, #1450).

Documentation

  • Add cheat sheet as a vignette (#1653).

  • Suggest creating a function for your database dm object (#1827, #1828).

  • Add alternative text to author images for pkgdown website (#1804).

Chore

  • Compatibility with dev jsonlite (#1837).

  • Remove tidyverse dependency (#1798, #1834).

  • Minimal patch to fix multiple match updates (@DavisVaughan, #1806).

  • Adapt to rlang 1.1.0 changes (#1817).

  • Make sure {dm} passes "noSuggests" workflow (#1659).

dm 1.0.4

12 Feb 04:13
Compare
Choose a tag to compare

Features

  • dm_add_pk() gains autoincrement argument (#1689), autoincrement primary keys are configured on the database with copy_dm_to() (#1696).

  • New dm_add_uk(), dm_rm_uk() and dm_get_all_uks() functions for explicit support of unique keys (#622, #1716).

  • dm_get_all_pks() and dm_get_all_fks() return output in the order of table or parent_table argument (#1707).

  • Improve error message for dm_add_pk() when the columns argument is missing (#1644, #1646).

Breaking changes

  • dm_get_all_pks(), dm_get_all_fks(), and dm_get_all_uks() require unquoted table names as input, for consistency with other parts of the API (#1741).

Bug fixes

  • dm_examine_constraints() works for dm objects on the database with compound keys (#1713).

Documentation

Internal

  • Require dplyr >= 1.1.0 and lifecycle >= 1.0.3 (#1771, #1637).

  • Checks pass if all suggested packages are missing (#1659).

  • Fix r-devel builds (#1776).

  • dm_unpack_tbl() sets PK before FK (#1715).

  • Clean up dm_rows_append() implementation (#1714).

  • dm() accepts tables that are of class "tbl_sql" but not "tbl_dbi" (#1695, #1710).

  • Use correctly typed missing value for lists (@DavisVaughan, #1686).

dm 1.0.3

12 Oct 15:51
Compare
Choose a tag to compare

Chore

  • Avoid running example without database connection.

dm 1.0.2

20 Sep 08:19
Compare
Choose a tag to compare

Features

  • dm_from_con() can use multiple schemata (@mgirlich, #1441, #1449).

  • pack_join(keep = TRUE) preserves order of packed columns (#1513, #1514).

  • pack_join(keep = TRUE) keeps keys of y in the resulting packed column (#1451, #1452).

  • New json_pack.tbl_lazy() and json_nest.tbl_lazy() (#969, #975).

Bug fixes

  • dm_paste() gives correct output for factor columns with many levels (#1510, #1511).

Chore

  • Fix compatibility with duckdb 0.5.0 (#1509, #1518).

  • Refactor dm_unwrap_tbl() so it builds a "unwrap plan" first (#1446, #1447).

  • Reenable dm_rows_update() test (#1437).

dm 1.0.1

06 Aug 08:02
Compare
Choose a tag to compare

Features

  • New dm_deconstruct() creates code to deconstruct a dm object into individual keyed tables via pull_tbl(keyed = TRUE) (#1354).

Bug fixes

  • Use dm_ptype() in dm_gui(), generate better code (#1353).

dm 1.0.0

22 Jul 02:40
Compare
Choose a tag to compare

Features

  • New dm_gui() for interactive editing of dm objects (#1076, #1319).

  • dm_get_tables() and pull_tbl() gain a new keyed = FALSE argument. If set to TRUE, table objects of class "dm_keyed_tbl" are returned. These objects inherit from the underlying data structure (tibble or lazy table), keep track of primary and foreign keys, and can be used later on in a call to dm() to recreate a dm object with the keys (#1187).

  • New by_position argument to check_subset(), check_set_equality(), check_cardinality_...() and examine_cardinality() (#1253).

  • dm() accepts dm objects (#1226).

  • dm_examine_constraints() honors implicit unique keys defined by foreign keys (#1131, #1209).

Breaking changes

  • dm_filter() is now stable, with a new API that avoids exposing an intermediate state with filters not yet applied, with a compatibility wrapper (#424, #426, #1236).

  • check_cardinality_...(), examine_cardinality(), check_subset() and check_set_equality() are now stable and consistently use a common interface with arguments named x, y, x_select and y_select, with compatibility wrappers (#1194, #1229).

  • dm_examine_cardinalities() and dm_examine_constraints() are now stable with a new signature and a compatibility wrapper (#1193, #1195).

  • dm_apply_filters(), dm_apply_filters_to_tbl() and dm_get_filters() are deprecated (#424, #426, #1236).

  • dm_disambiguate_cols() adds table names as a suffix by default, and gains a .position argument to restore the original behavior. Arguments sep and quiet are renamed to .sep and .quiet (#1293, #1327).

  • dm_squash_to_tbl() is deprecated in favor of the new .recursive argument to dm_flatten_to_tbl(). Arguments start and join are renamed to .start and .join (#1272, #1324).

  • dm_rm_tbl() is deprecated in favor of dm_select_tbl() (#1275).

  • dm_bind() and dm_add_tbl() are deprecated in favor of dm() (#1226).

  • rows_truncate() and dm_rows_truncate() are deprecated, because they use DDL as opposed to all other verbs that use DML (#1031, #1321).

  • All internal S3 classes now use the "dm_" prefix (#1285, #1339).

  • Add ellipses to all generics (#1298).

API

  • Reexport tibble() (#1279).

  • dm_ptype(), dm_financial() and dm_pixarfilms() are stable now (#1254).

  • Turn all "questioning" functions to "experimental" (#1030, #1237).

Performance

  • is_unique_key()uses vctrs::vec_count() on local data frames for speed (@eutwt, #1247).

  • check_key() uses vctrs::vec_duplicate_any() on local data frames for speed (@eutwt, #1234).

Bug fixes

  • dm_draw() works if a table name has a space (#1219).

  • Don't print rule in glimpse.dm() for empty dm() (#1208).

Documentation

  • Work around ANSI escape issues in CRAN rendering of vignette (#1156, #1330).

  • Fix column names in ?dm_get_all_pks (#1245).

  • Improve contrast for display of dm_financial() (#1073, #1250).

  • Add contributing guide (#1222).

Internal

  • Use sensible node and edge IDs, corresponding to the data model, in SVG graph (#1214).

  • Tests for datamodelr code (#1215).