Skip to content

Releases: r-dbi/odbc

odbc 1.3.1

17 Mar 18:03
Compare
Choose a tag to compare
  • Fixed warnings about anonymous unions (@detule, #440)
  • Fixed invalid descriptor issues when retrieving results from SQL Server +
    Microsoft's ODBC driver, using parametrized queries. (@detule, #414)
  • Fixed null handling in SQL Server / Azure result sets retrieved with
    Microsoft's ODBC driver. (@detule, #408)
  • Hive uses C-style escaping for string literals (single quotes are
    backslash-escaped, note single quote-escaped). dbQuoteString now respects
    this when called on a connection of class Hive. (@rnorberg, #184)
  • When calling sqlCreateTable(con, ..., temporary = TRUE) and con is a
    connection of class DB2/AIX64, the CREATE TABLE statement that is generated
    properly creates a temporary table in DB2. The statement begins with
    DECLARE GLOBAL TEMPORARY TABLE
    and ends with ON COMMIT PRESERVE ROWS (DB2's default behavior is
    ON COMMIT DELETE ROWS, which results in the inserted data being
    deleted as soon as dbWriteTable completes). (@rnorberg, #426)

odbc 1.3.0

28 Oct 13:26
Compare
Choose a tag to compare

Major changes

  • odbc can now be compiled again with Rtools35 (gcc 4.9.3) on Windows (#383)
  • invalid descriptor errors from drivers such as Microsoft SQLServer driver and the freeTDS driver which do not support out of order retrieval are now avoided.
    This is done by unbinding any nanodbc buffer past the long column.
    Performance for the unbound columns in these cases will be reduced, but the retrieval will work without error (@detule, #381)
  • dbBind() and dbFetch() now support multiple result sets (@vkapartzianis, #234)

Minor improvements and fixes

  • New dbAppendTable() method for OdbcConnection objects (#335)
  • dbQuoteIdentifier() now uses the input names (if any).
  • dbWriteTable() and dbBind() now default to a batch_rows of NA, which sets the batch size to be the length of the input.
    This avoids problems with drivers that don't support batch sizes larger than the input size.
    To restore the behavior prior to this release pass batch_rows = 1024 or set options(odbc.batch_rows = 1024) (#391).
  • dbWriteTable() now handles data.table::IDate() objects (#388)
  • dbWriteTable(field.types=) now issues a warning rather than an error for missing columns (#342)
  • odbcConnectionColumns() now works as intended with DBI::Id() objects (#389)
  • dbFetch() now verifies that n is a valid input.
  • Dates are now always interpreted as being in the database's local time zone, regardless of the timezone parameter (#398)
  • Oracle connections now support Date and POSIXct types via DATE and TIMESTAMP data types (#324, #349, #350)
  • Oracle connections now use VARCHAR2 rather than VARCHAR, as recommended by Oracle's documentation (#189)

odbc v1.2.3

16 Oct 14:02
Compare
Choose a tag to compare
  • dbWriteTable() now executes immediately, which fixes issues with temporary tables and the FreeTDS SQL Server driver (@krlmlr).

  • blob roundtrips now work in more cases (#364, @krlmlr).

  • The BH dependency has been removed (#326)

odbc 1.2.2

26 Jan 18:38
Compare
Choose a tag to compare
  • The configure script now again uses iodbc-config on macOS, if available.

  • Fix errors with drivers who do not fully implement SQLGetInfo (#325).

odbc 1.2.1

09 Dec 21:26
Compare
Choose a tag to compare
  • Fix the unicode character width issues with the macOS odbc CRAN binary. (#283)

  • The configure script now works on systems whose /bin/sh does not support
    command substitution, such as Solaris 10.

odbc 1.2.0

29 Nov 15:32
Compare
Choose a tag to compare

Features

  • sqlCreateTable() and dbWriteTable() now throw an error if you mistakenly
    include field.types names which do not exist in the input data. (#271)

  • The error message when trying to write tables with unsupported types now
    includes the column name (#238).

  • dbConnect() now has a new param timezone_out which is useful if the user
    wants the datetime values be marked with a specific timezone instead of UTC
    (@shrektan, #294).

  • dbGetQuery(), dbSendQuery() and dbSendStatement() gain a immediate
    argument to execute the statement or query immediately instead of preparing,
    then executing the statement. (#272, @krlmlr)

  • dbGetQuery(), dbSendQuery() and dbSendStatement() gain a params
    argument, which allows them to be used (indirectly) by DBI::dbAppendTable()
    (#210, #215, #261).

  • dbWriteTable() and dbBind() methods gain a batch_rows argument, to
    control how many rows are bound in each batch. The default can be set
    globally with options(odbc.batch_rows). This is useful if your database
    performs better with a larger or smaller number of rows per batch than the
    default of 1024. (#297)

  • New odbcConnectionColumns() function to describe the column types. This
    data is used when binding columns, which allows drivers which do not support
    the SQLDescribeParam() ODBC function, such as freeTDS to work better with
    bound columns. (#313, @detule)

  • Added a Teradata odbcDataType() to support writing logical data to Teradata
    servers (#240, @blarj09).

  • Added a Access odbcDataType() method to support writing to Access databases
    (#262, @vh-d)

  • odbcListDrivers() gains a keep and filter argument and global options
    odbc.drivers_keep, odbc.drivers_filter to keep and filter the drivers
    returned. This is useful if system administrators want to reduce the number
    of drivers shown to users. (@blairj09, #274)

  • Subseconds are now retained when inserting POSIXct objects (#130, #208)

  • The RStudio Connections Pane now shows the DSN, when available (#304,
    @davidchall).

Bugfixes

  • SQL Server ODBC's now supports the '-155' data type, and its losing
    sub-second precision on timestamps; this still returns type DATETIMEOFFSET
    as a character, but it preserves sub-seconds and has a numeric timezone
    offset (@r2evans, #207).

  • dbExistsTable() now handles the case-sensitivity consistently as
    other methods (@shrektan, #285).

  • dbExistsTable() now works for SQL Server when specifying schemas but not
    catalogs using the freeTDS and Simba drivers. (#197)

  • DBI::dbListFields() no longer fails when used with a
    a qualified Id object (using both schema and table) (#226).

  • dbWriteTable() now always writes NA_character as NULL for
    data.frame with only one row (@shrektan, #288).

  • Fix an issue that the date value fetched from the database may be one
    day before its real value (@shrektan, #295).

odbc v1.1.2

20 Mar 18:19
Compare
Choose a tag to compare
  • Fix the return value for dbQuoteIdentifier() when given a length 0 input
    (#146 @edgararuiz).

odbc v1.1.1

08 Aug 17:27
Compare
Choose a tag to compare
  • Workaround for drivers which do not implement SQLGetInfo, such as the Access
    driver. (#78)

  • Fix for installation error for systems without GNU Make as the default make, such as
    Solaris.

odbc 1.1.0

23 Jun 15:08
Compare
Choose a tag to compare
  • Provide a fall backs for drivers which do not support SQLDescribeParam and
    those which do not support transactions.

  • sqlCreateTable() gains a fieldTypes argument, which allows one to
    override a column type for a given table, if the default type is not
    appropriate.

  • Support for databases with non UTF-8 encodings. Use the encoding parameter
    to dbConnect() to specify the database encoding.

  • Support for the SQL Connection Pane in the RStudio IDE.

  • Unknown fields no longer throw a warning, instead they signal a custom
    condition, which can be caught if desired with

    withCallingHandlers(expr, odbc_unknown_field_type = function(e) {...} )

  • Conversion to and from timezones is handled by the
    cctz library. If the database is in a non-UTC
    timezone it can be specified with the timezone parameter to dbConnect().

  • Time objects are converted to and from hms objects.

  • 64 bit integers are converted to and from bit64 objects.

  • Support table creation for Impala and Hive Databases (# 38, @edgararuiz).