- If the blacklist contains
NA
, only prevent caching rows that have all missing values.
- Fixed a few places where we should have used
drop = FALSE
.
- Fixed a bug when running a 1x1 dataframe through a blacklist.
- Fix a typo that would result in a crash if
dplyr::bind_rows
didn't work (instead of handing over torbind.fill
as intended).
- Add Remotes to DESCRIPTION.
- Re-replaces dplyr::bind_rows with plyr::rbind.fill because plyr::rbind.fill allows the combination of dataframes with alike content but different classes (e.g., "FALSE" and FALSE), which happens due to type coercion the cached data.
- Implements a blacklist of values that are to be returned but not cached.
- Clean up how
safe_columns
is passed along in the function environment.
- Fix
last_cached_at
bug for existing shards.
- Fix
safe_column
logic to do what it actually intended.
- Add
last_cached_at
column in each shard.
- Update the update_cache_salt utility to be more proof.
- Add a utility to update cache salts.
- Switched to using dbtest::db_test_that from the latest version of dbtest.
- Adds
safe_columns
, which, when TRUE will crash when (a) column tables already exist for a given cache and (b) new columns are found and added. - Restructures the codebase to allow this hard crash to not be discarded by the myriad of
try
blocks.
- Moved the db testing infrastructure to another package, syberia/dbtest.
- Use batchman parallelism and add
dry.
parameter tocache
.
- Using
double precision
types during appends, as well as correctly setting database types upon table creation due to RPostgres bug.
- Numeric values were being recorded using the
real
data type, which only supports 6 digits of precision. This was fixed by switching these column types to thenumeric
data type.
- Restore column names from existing cache db when using
force.
.
- Debug mode, triggered by
cachemeifyoucan.debug
option. Set it to true to see the gory metadata internals of underlying postgres tables.
- Ensure uniqueness of the response of the caching layer.
- On second thought, don't store the shards in legacy cache warnings in globalenv for debugging, since they could be huge.
- Introduce some changes to the
merge2
helper that will ensure legacy caches that have discrepancy between shards will not truncate their output.
- Added cache migrations and slightly refactored how new shards are created.
- Important bugfix for sharding.
- Replace RPostgreSQL with rstats-db/RPostgres.
- Fix an issue with invalid index names.
- Fixed some bugs and added new ones.
- Re-define
uncached
as simply stripping the caching layer, after some confusion as to what the correct definition should be.
- Fixed a bug in
uncached
.
- Added column sharding, which allows to store data frames with large number of columns.
- Rocco documentation.
- Automatically create indexes on shards, which greatly improves read times.
- Integrated batchman v1.0.0.9000, which fixes robust functionality.
- If two users are populating the caching layer at the same time, the uncached function will not be run twice by both functions. Instead, each attempt to run the uncached function will query the database for whether those records have been cached. This leads to a speed-up during parallel cache population.
- Added
cachemeifyoucan.verbose
global option for whether to display batch caching progress.
- Batchman integration now uses
robust_batch
.
- Simple generic bug fix.
- Critical fix for usage of the
force.
parameter.
-
Integration with batchman. If a call to a cached function procures uncached data of row count in excess that of the parameter
batch_size
to thecachemeifyoucan::cache
call, caching progress will automatically happen in batches ofbatch_size
(by default 100). In other words, data will be cached on abatch_size
record by record basis, instead of all at once, which is very susceptible to failures.Note this feature will only trigger if the batchman package is installed.
- Bug fix release.
- Better support and fixes for MonetDB adapter.
- Initial creation of the package.