dbConnect()
and the output when printing connections (@d-hansen, #328).dbConnect(groups = )
in favor of dbConnect(group = )
, with a warning and compatibility code (@rorynolan, #258).dbWriteTable()
and dbAppendTable()
on a connection with load_data_local_infile = TRUE
uses the utf8mb4
instead of the more restricted utf8mb3
encoding (@ecoffingould, #332, #333).dbConnect()
can enable SSL based on client_flag
again (@d-hansen, #322).dbQuoteIdentifier()
for Id()
objects (#323).dbQuoteIdentifier()
for Id()
objects (#324).mysql_ssl_set()
(#319).dbQuoteIdentifier()
(@dpprdan, #254, #255).dbSendStatement(immediate = TRUE)
and dbExecute(immediate = TRUE)
, needs CLIENT_MULTI_STATEMENTS
(#147, #312).dbConnection(groups = )
works as documented again, regression introduced in RMariaDB 1.3.0 (@pekkarr, #306)."MySQLConnection"
if a MySQL server is detected (server version < 10.0 or server description contains "MariaDB"
). The new mysql
argument to dbConnect()
allows overriding the autodetection (#303).TIME
columns with subsecond precision (@renkun-ken, #288, #289).MAX_NO_FIELD_TYPES
error message.dbAppendTable()
accepts Id
(#262, @renkun-ken).
dbConnect()
gains reconnect
argument that sets the MYSQL_OPT_RECONNECT
option (#261, @renkun-ken).
LOAD LOCAL INFILE
by setting the MYSQL_OPT_LOCAL_INFILE
flag (#265, #267).caching_sha2_password
plugin (#134, #248, @jeroen).setMethod()
calls refer to top-level functions (#250).blob::blob()
objects (#126, #243).dbWriteTable()
and dbAppendTable()
are much faster thanks to LOAD DATA LOCAL INFILE
. To activate this, load_data_local_infile = TRUE
must be passed to dbConnect()
. The readr package is required (#11, #223).dbConnect()
normalizes all input paths (#197, @twentytitus).dbDataType()
returns TIME(6)
for difftime
, and DATETIME(6)
for POSIXt
columns, to create columns with microsecond precision by default (#214).libmariadb-dev
Debian/Ubuntu package in documentation and configuration scripts (#219).?dbConnect
gains a section on secure passwords and the .mylogin.cnf
file (#156).Test MySQL and MariaDB Server and client libraries in all combinations on GitHub Actions (#224).
The configure
script now queries the RMARIADB_FORCE_MARIADBCONFIG
and RMARIADB_FORCE_MYSQLCONFIG
environment variables to force use of mariadb_config
or mysql_config
, respectively (#218).
NULL
is mapped to NA
for bit(1)
columns (#201, @dirkschumacher).dbConnect()
now supports a timezone_out
argument. Explicitly setting timezone
to NULL
tries to detect the database time zone (#116).BIT(1)
columns are returned as logical
(#84).dbQuoteLiteral()
now correctly quotes difftime values (#188).dbBind()
also works for "Date"
values that are stored as integers (#187).timezone
argument to dbConnect()
(#184, @ycphs).dbWriteTable()
and dbBind()
correctly interpret difftime values with units other than "secs"
../configure
no longer requires bash
(@jeroen).dbConnect()
gains a timeout
argument, defaults to 10. Use Inf
or a negative value for no timeout (#169).dbDataType()
returns VARCHAR(1)
for length-0 character vectors.dbDataType()
returns VARCHAR()
for factors.dbSendQuery()
and dbSendStatement()
clear the result set if dbBind()
throws an error.dbWriteTable()
is a data frame (#160, @rossholmberg).VARCHAR
as data type for string columns (#159).dbGetInfo()
according to the specification.libssl-dev
in configure
and DESCRIPTION
(#101).auto_ptr
, which causes R CMD check
warnings on R-devel.bigint
argument to dbConnect()
, supported values are "integer64"
, "integer"
, "numeric"
and "character"
. Large integers are returned as values of that type (r-dbi/DBItest#133).temporary
and fail_if_missing
(default: TRUE
) to dbRemoveTable()
(r-dbi/DBI#141, r-dbi/DBI#197).dbCreateTable()
and dbAppendTable()
internally (r-dbi/DBI#74).format()
method for MariaDBConnection
(r-dbi/DBI#163).Id()
, DBI::dbIsReadOnly()
and DBI::dbCanConnect()
.dbGetException()
is no longer reexported from DBI.NaN
and Inf
are converted to NULL
when writing to the database (#77)."integer64"
are now supported for dbWriteTable()
and dbBind()
(#87).dbListObjects()
, dbUnquoteIdentifier()
and Id()
.x
argument to dbQuoteIdentifier()
are preserved in the output (r-lib/DBI#173).timegm()
with private implementation (#78).timegm
symbol if the macro sun
is defined.overwrite = TRUE
.SHOW PLUGINS
) return data (#70, @nbenn).dbWriteTable()
if a table by the same name exists. If a temporary table of the same name exists, the error will be raised by the database itself, because this condition cannot be checked beforehand.Initial release, compliant to the DBI specification.
dbExecute()
or dbSendStatement()
, the function mariadbExecQuery()
has been removed (#28).bit64
package. Unfortunately, this also means that numeric literals (as in SELECT 1
) are returned as 64-bit integers (#12).row.names = FALSE
.dbConnect()
: ssl.key
, ssl.cert
, ssl.ca
, ssl.capath
, ssl.cipher
(#131, #148, @adamchainz).RMariaDB fully supports DATE and DATETIME columns. On output, DATE columns will be converted to vectors of Date
s and DATETIME will be converted to POSIXct
. To faciliate correct computation of time zone, RMariaDB always sets the session timezone to UTC.
RMariaDB has been rewritten (essentially from scratch) in C++ with Rcpp. This has considerably reduced the amount of code, and allow us to take advantage of the more sophisticated memory management tools available in Rcpp. This rewrite should yield some minor performance improvements, but most importantly protect against memory leaks and crashes. It also provides a better base for future development.
Support for prepared queries: create prepared query with dbSendQuery()
and bind values with dbBind()
. dbSendQuery()
and dbGetQuery()
also support inline parameterised queries, like dbGetQuery(mariadbDefault(), "SELECT * FROM mtcars WHERE cyl = :cyl", params = list(cyl = 4))
. This has no performance benefits but protects you from SQL injection attacks.
dbListFields()
has been removed. Please use dbColumnInfo()
instead.
dbGetInfo()
has been removed. Please use the individual metadata functions.
Information formerly contain in summary()
methods has now been integrated into show()
methods.
make.db.names()
has been deprecated. Use dbQuoteIdentifier()
instead.
isIdCurrent()
has been deprecated. Use dbIsValid()
instead.
dbApply()
, dbMoreResults()
and dbNextResults()
have been removed. These were always flagged as experimental, and now the experiment is over.
dbEscapeStrings()
has been deprecated. Please use dbQuoteStrings()
instead.
dbObjectId compatibility shim removed
Add SSL support on Windows.
Fix repetition of strings in subsequent rows (@peternowee, #125).
Always set connection character set to utf-8
Backport build system improvements from stable branch
Reenable Travis-CI, switch to R Travis, collect coverage