The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
update_snapshot() no longer collapses continuous
records by default (#183, @kjakobse). To preserve this behavior, use
collapse_continuous_records = TRUE. In return,
update_snapshot() is now faster by default.Intermediary tables are now being cleaned up (#174).
update_snapshot() now handles the given
timestamp more consistently (#187). Thanks to @kjakobse for discovering
the issue.
?Logger$finalize() is now a private method (#180).
Required as of R6 v2.4.0.
create_index() to allow easy creating of
an index on a table (#137).update_snapshot() has been optimized and now runs
faster on all the supported backends (#137).
*_joins() can now take dplyr::join_by()
as by argument when no na_by argument is given
(#156).
SCDB has been made backwards compatibility to R
>= 3.6 (#164).
nrow() now always returns integers (#163).
interlace_sql has been fully deprecated and removed
(#169).
update_snapshot()
across various backends is added (#138).Logger now correctly writes to the “catalog” field
on backends that support it (#149).
get_schema() now correctly returns the temporary
schema on PostgreSQL backends (#139).
get_tables() now returns catalog on DuckDB backends
(#145).
unique_table_names() now uses random alphanumerics
to form the unique name instead of tracking via options (#158).
check_from argument no longer used in
dbplyr calls (#136).get_tables() (#145).Table identification is now more specific (#93).
Most SCDB functions allow for tables to be specified by a character representation of “[catalog].schema.table”.
Before, if no schema was implied in this context, SCDB would attempt to match the table among both permanent and temporary tables.
Now, it will always assume that a lack of schema means the default
schema should be used. This is also the case if DBI::Id()
is used without a schema specification.
The show_temporary argument of
get_tables() is now a simple logical (#93).
In addition, schema is always returned in the list of tables (no longer NA for default schema).
Tables created with create_table() will now be
temporary or permanent dependent on the default value of
DBI::dbCreateTable() (#93).
If you wish to overwrite this, use ... arguments which
are passed to DBI::dbCreateTable().
The %notin% operator has been removed from the
package (#96).
The db_table_id argument in
create_table(), get_table(),
table_exists() and id() is renamed to
db_table (#115). Any object coercible by id()
can now be passed to these functions.
The order of arguments in create_logs_if_missing()
has been swapped to match the rest of the package (#96). The
conn argument is now before the log_table
argument.
The arguments of Logger has been updated (#98):
db_tablestring is replaced with the
db_table argument.
This argument takes any input coercible by id() instead
of only allowing a character string.
ts is replaced with the timestamp
argument to align with update_snapshot().
The order of input arguments to Logger is changed
(#98).
The interlace_sql() function is deprecated in favor
of the S3 generic interlace() (#113).
Added support for DuckDB (#121).
The S3 method as.character.Id() is added which
converts DBI::Id() to character
(#93).
A new id.data.frame() which converts
data.frame to DBI::Id() (#108). Useful in
combination with get_tables(conn, pattern).
A new get_catalog() function is added to give more
specific table identification (#99).
A new clean up function, defer_db_cleanup(), is
added (#89).
By passing a tbl_sql object to this function, the
corresponding table will be deleted once the parent function
exits.
A new function, unique_table_name(), to generate
unique table names is added (#89). This function is heavily inspired by
the unexported dbplyr:::unique_table_name().
A logger is introduced LoggerNull (#98):
Logger facilitates logging to file/console and
logging to database.
LoggerNull is “no-logging” logger that can be used
to suppress all logging.
Added a set of helper functions to prevent race conditions when writing to data bases (#104).
See lock_table() and
unlock_table().
Improvements for create_table() (#93):
now writes the table if a remote connection is given. Before, it would only create the table with corresponding columns.
can now create temporary tables for Microsoft SQL Server.
Improved checks on get_connection() (#83):
If given, host does not need to look like an IP
address (e.g. “localhost” is not unrealistic).
A character input for port is allowed
if it is a string of digits.
Now checks if timezone and timezone_out
is an IANA time zone.
digest_to_checksum() has improved performance on
Microsoft SQL Server by use of the built-in HashBytes
function (#97).
table_exists() now correctly gives ambiguity warning
on Microsoft SQL Server and PostgreSQL backends (#80).
get_tables() now supports temporary tables for
Microsoft SQL Server (#93).
get_schema() has been updated (#107):
It will now always return a schema (either directly from the
object or inferred by id()).
A temporary argument is added to get the temporary
schemas from DBIConnections.
id() now includes information of catalog in more
cases (#99, #107).
Fixed dplyr joins failing if testthat is not
installed (#90).
The footprint of update_snapshot() is reduced by
cleaning up intermediate tables with defer_db_cleanup()
(#89)
update_snapshot() now attempts to get a lock on the
table being updated before updating (#104).
Logger$log_info() now uses message()
instead of cat() to write to console (#98). The message
written is now also returned invisibly.
Added missing tests for create_logs_if_missing()
(#93).
Added missing tests for get_schema() (#99).
Added missing tests for get_catalog()
(#107).
Improved tests for get_tables(),
table_exists(), and create_table()
(#93).
Improved tests for Logger (#98).
Implementation of *_joins improved, now extending
dplyr::*_joins rather than masking them (#77).
Added S3 method for id.tbl_dbi(), returning a
DBI::Id() instance matching the table (#72).
id() on a tbl_dbi thus allows to
retrieve a schema even when not initially given.Fixed update_snapshot() not working with a
DBI::Id() instance as db_table argument
(#72).
Suppressed recurring messages from dbplyr >= 2.4.0 about table
names containing . (#72).
Added show_temp option to get_tables()
to allow retrieving temporary tables (#72).
SQLite connections now support schemata similar to other backends (#67).
The package logo has been slightly altered to have a readable clock (#49).
Added a vignette describing the concept of a slowly changing dimension using examples (#53).
Added a Logger$finalize method, which removes the
log_file in the database when not writing to a file
(#66).
update_snapshot() now take a Logger
object through the logger argument instead of
log_path and log_table_id arguments
(#24).
Logger\$log_filename has been changed to
Logger\$log_basename to reduce ambiguity.
Package functions are now also tested with
RPostgres::Postgres(), which is therefore now
officially supported (#31).
get_connection() shows a warning if an unsupported
backend is used (#26).
Increased flexibility for the Logger object (#21
#24):
A Logger instance may now be created with no
arguments.
Suppress console output with output_to_console
(TRUE by default).
If no log_path is set, Logger does not
fail before trying to write to a file.
Logger\$log_realpath gives the full path to log file
being written.
schema_exists correctly detects a schema with no
tables (#30).
db_timestamps now newer calls
translate_sql with con = NULL (#37).
Package description has been updated to not use a footnote on CRAN.
schema_exists on an empty schema tests by creating a
new table, this may cause issues if the user does not have sufficient
privileges.Functions to handle database connections:
get_connection(), close_connection(),
id()Functions to interface with database:
get_tables(), table_exists(),
get_schema(), schema_exists()Functions to create “historical” tables and logs:
create_table(),
create_logs_if_missing()Function to maintain “historical” tables:
update_snapshot()Functions to interface with “historical” tables:
get_table(), slice_time(),
is.historical()Functions to facilitate faster joins with NAs on SQL backends:
full_join(), inner_join(),
left_join(), right_join()Functions to manipulate tables on SQL backends:
filter_keys(), unite.tbl_dbi(),
interlace_sql()A logging object to facilitate logging:
Logger()Function to generate checksums:
digest_to_checksum()Function to write timestamps to tables on SQL backends:
db_timestamp()Helper functions:
nrow() - database compliant
nrow()
%notin% - negated %in%
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.