Skip to content

SCDB 0.4.0

Choose a tag to compare

@RasmusSkytte RasmusSkytte released this 21 Mar 09:31

BREAKING CHANGES:

  • 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).

New features

  • 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 and Fixes

  • 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.

Testing

  • 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).