- Added function
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 takedplyr::join_by()
asby
argument when nona_by
argument is given (#156). -
SCDB
has been made backwards compatibility to R >= 3.6 (#164).
- A vignette including benchmarks of
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).
- Deprecated
check_from
argument no longer used indbplyr
calls (#136).
- Improved tests for
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 ofget_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 ofDBI::dbCreateTable()
(#93).If you wish to overwrite this, use
...
arguments which are passed toDBI::dbCreateTable()
. -
The
%notin%
operator has been removed from the package (#96). -
The
db_table_id
argument increate_table()
,get_table()
,table_exists()
andid()
is renamed todb_table
(#115). Any object coercible byid()
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). Theconn
argument is now before thelog_table
argument. -
The arguments of
Logger
has been updated (#98):-
db_tablestring
is replaced with thedb_table
argument.This argument takes any input coercible by
id()
instead of only allowing a character string. -
ts
is replaced with thetimestamp
argument to align withupdate_snapshot()
.
-
-
The order of input arguments to
Logger
is changed (#98). -
The
interlace_sql()
function is deprecated in favor of the S3 genericinterlace()
(#113).
-
Added support for DuckDB (#121).
-
The S3 method
as.character.Id()
is added which convertsDBI::Id()
tocharacter
(#93). -
A new
id.data.frame()
which convertsdata.frame
toDBI::Id()
(#108). Useful in combination withget_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 unexporteddbplyr:::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()
andunlock_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 forport
is allowed if it is a string of digits. -
Now checks if
timezone
andtimezone_out
is an IANA time zone.
-
-
digest_to_checksum()
has improved performance on Microsoft SQL Server by use of the built-inHashBytes
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 fromDBIConnections
.
-
-
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 withdefer_db_cleanup()
(#89) -
update_snapshot()
now attempts to get a lock on the table being updated before updating (#104). -
Logger$log_info()
now usesmessage()
instead ofcat()
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()
, andcreate_table()
(#93). -
Improved tests for
Logger
(#98).
- Added support for Microsoft SQL Server using ODBC (#77).
-
Implementation of
*_join
s improved, now extendingdplyr::*_join
s rather than masking them (#77). -
Added S3 method for
id.tbl_dbi()
, returning aDBI::Id()
instance matching the table (#72).- Calling
id()
on atbl_dbi
thus allows to retrieve aschema
even when not initially given.
- Calling
-
Fixed
update_snapshot()
not working with aDBI::Id()
instance asdb_table
argument (#72). -
Suppressed recurring messages from dbplyr >= 2.4.0 about table names containing
.
(#72). -
Added
show_temp
option toget_tables()
to allow retrieving temporary tables (#72).
- Maintainer changed to Rasmus Skytte Randløv (@RasmusSkytte).
-
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 thelog_file
in the database when not writing to a file (#66).
- Maintainer changed to Marcus Munch Grünewald (#59).
-
update_snapshot()
now take aLogger
object through thelogger
argument instead oflog_path
andlog_table_id
arguments (#24). -
Logger\$log_filename
has been changed toLogger\$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 callstranslate_sql
withcon = NULL
(#37). -
Package description has been updated to not use a footnote on CRAN.
- As
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 compliantnrow()
-
%notin%
- negated%in%
-
- Most package functions are tested here.
- The functions are fully documented.