- Adjust datetime format in
dbQuoteLiteral()
forMySQLConnection
(@jjaeschke, #353).
- Correctly detect branch protection (#354).
dbQuoteIdentifier()
removes thedef
catalog component again, regression introduced in RMariaDB 1.3.1 (#337, #339).
- Add back SSL support for MariaDB 5.5.68 (@d-hansen, #336, #338).
- Improve enforcement of SSL for
dbConnect()
and the output when printing connections (@d-hansen, #328). - Breaking change: Avoid appending a numeric suffix to duplicate column names (#321, #327).
- Breaking change: Deprecate
dbConnect(groups = )
in favor ofdbConnect(group = )
, with a warning and compatibility code (@rorynolan, #258).
dbWriteTable()
anddbAppendTable()
on a connection withload_data_local_infile = TRUE
uses theutf8mb4
instead of the more restrictedutf8mb3
encoding (@ecoffingould, #332, #333).dbConnect()
can enable SSL based onclient_flag
again (@d-hansen, #322).- Fix
dbQuoteIdentifier()
forId()
objects (#323).
- Improve
dbQuoteIdentifier()
forId()
objects (#324). - Avoid deprecated
mysql_ssl_set()
(#319).
- Turn off Windows for now (#326).
- Use dbitemplate (@maelle, #320).
- Test for quoting columns with
dbQuoteIdentifier()
(@dpprdan, #254, #255).
- Support
dbSendStatement(immediate = TRUE)
anddbExecute(immediate = TRUE)
, needsCLIENT_MULTI_STATEMENTS
(#147, #312).
- Fix memory leak (#309, #311).
- Fix compilation on CentOS 7 (#310).
dbConnection(groups = )
works as documented again, regression introduced in RMariaDB 1.3.0 (@pekkarr, #306).
- Update docs for client flags (#313).
- Connections now inherit from
"MySQLConnection"
if a MySQL server is detected (server version < 10.0 or server description contains"MariaDB"
). The newmysql
argument todbConnect()
allows overriding the autodetection (#303). - Use string as default for JSON (#296) and all unknown column types (@LeeMendelowitz, #260).
- Support
TIME
columns with subsecond precision (@renkun-ken, #288, #289).
- Better
MAX_NO_FIELD_TYPES
error message.
- Update Windows libs to new location (#301).
- Replace Rcpp by cpp11 (@Antonov548, #286).
- Add decor as a dependency.
- Skip tests if packages are not available (#304).
- Use testthat edition 3 (#285).
-
dbAppendTable()
acceptsId
(#262, @renkun-ken). -
dbConnect()
gainsreconnect
argument that sets theMYSQL_OPT_RECONNECT
option (#261, @renkun-ken).
- Actually enable
LOAD LOCAL INFILE
by setting theMYSQL_OPT_LOCAL_INFILE
flag (#265, #267).
- Upgrade to mariadb-connector-c 3.2.5 on Windows, with built-in support for the
caching_sha2_password
plugin (#134, #248, @jeroen).
- Make method definition more similar to S3. All
setMethod()
calls refer to top-level functions (#250).
- BLOBs are returned as
blob::blob()
objects (#126, #243). dbWriteTable()
anddbAppendTable()
are much faster thanks toLOAD DATA LOCAL INFILE
. To activate this,load_data_local_infile = TRUE
must be passed todbConnect()
. The readr package is required (#11, #223).
- Writing dates prior to 1970 no longer crashes on Windows (#232, #245).
- Add test for reading and writing JSON data type as string (#127, #246).
- Update for compatibility with DBItest 1.7.2 (#228).
- RMariaDB is now licensed under the MIT license (#213).
dbConnect()
normalizes all input paths (#197, @twentytitus).dbDataType()
returnsTIME(6)
fordifftime
, andDATETIME(6)
forPOSIXt
columns, to create columns with microsecond precision by default (#214).
- Now referring to the
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 theRMARIADB_FORCE_MARIADBCONFIG
andRMARIADB_FORCE_MYSQLCONFIG
environment variables to force use ofmariadb_config
ormysql_config
, respectively (#218).
NULL
is mapped toNA
forbit(1)
columns (#201, @dirkschumacher).
- Remove BH dependency by inlining the header files (#208).
dbConnect()
now supports atimezone_out
argument. Explicitly settingtimezone
toNULL
tries to detect the database time zone (#116).BIT(1)
columns are returned aslogical
(#84).dbQuoteLiteral()
now correctly quotes difftime values (#188).
- Timestamp values are now written correctly if the database connection uses a time zone other than UTC. Deviations still might occur at DST boundaries, therefore it is still safer to use UTC as the database connection (#116).
- Timestamp roundtrip no longer fails on Windows i386 (#117).
dbBind()
also works for"Date"
values that are stored as integers (#187).
- Windows: update to libmariadbclient 3.1.11
- Add
timezone
argument todbConnect()
(#184, @ycphs). dbWriteTable()
anddbBind()
correctly interpret difftime values with units other than"secs"
.
./configure
no longer requiresbash
(@jeroen).- Switch to GitHub Actions (#185, thanks @ankane).
dbConnect()
gains atimeout
argument, defaults to 10. UseInf
or a negative value for no timeout (#169).- Support fractional seconds in datetime values for reading and writing (#157).
dbDataType()
returnsVARCHAR(1)
for length-0 character vectors.dbDataType()
returnsVARCHAR()
for factors.dbSendQuery()
anddbSendStatement()
clear the result set ifdbBind()
throws an error.- Check that input to
dbWriteTable()
is a data frame (#160, @rossholmberg).
- Use
VARCHAR
as data type for string columns (#159). - Encode column names as UTF-8 (#109).
- Implement
dbGetInfo()
according to the specification. - Include information about
libssl-dev
inconfigure
andDESCRIPTION
(#101).
- Get rid of
auto_ptr
, which causesR CMD check
warnings on R-devel.
- Add support for
bigint
argument todbConnect()
, supported values are"integer64"
,"integer"
,"numeric"
and"character"
. Large integers are returned as values of that type (r-dbi/DBItest#133). - Data frames resulting from a query always have unique non-empty column names (r-dbi/DBItest#137).
- New arguments
temporary
andfail_if_missing
(default:TRUE
) todbRemoveTable()
(r-dbi/DBI#141, r-dbi/DBI#197). - Using
dbCreateTable()
anddbAppendTable()
internally (r-dbi/DBI#74). - Implement
format()
method forMariaDBConnection
(r-dbi/DBI#163). - Reexporting
Id()
,DBI::dbIsReadOnly()
andDBI::dbCanConnect()
. - Now imports DBI 1.0.0.
dbGetException()
is no longer reexported from DBI.NaN
andInf
are converted toNULL
when writing to the database (#77).- Values of class
"integer64"
are now supported fordbWriteTable()
anddbBind()
(#87). - Schema support, as specified by DBI:
dbListObjects()
,dbUnquoteIdentifier()
andId()
. - Names in the
x
argument todbQuoteIdentifier()
are preserved in the output (r-lib/DBI#173). - Replace non-portable
timegm()
with private implementation (#78). - Update libmariadbclient to version 2.3.5 on Windows (#92, @jeroen).
- Attempt to fix Solaris builds by redefining
timegm
symbol if the macrosun
is defined. - Fix examples running on CRAN by using only temporary tables and
overwrite = TRUE
. - Refactor connection and result handling to be more similar to other backends.
- Add support for R 3.1, but DBI >= 0.5 is required (#68).
- Queries that bypass the prepared statement framework (like
SHOW PLUGINS
) return data (#70, @nbenn). - A temporary table can be created via
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.
- Test almost all test cases of the DBI specification.
- Fully support parametrized queries (#22, #27, #39).
- Queries not supported by the prepared statement protocol still can be run via
dbExecute()
ordbSendStatement()
, the functionmariadbExecQuery()
has been removed (#28). - Spec-compliant transactions (#38, #49).
- 64-bit integers are now supported through the
bit64
package. Unfortunately, this also means that numeric literals (as inSELECT 1
) are returned as 64-bit integers (#12). - Correct handling of DATETIME and TIME columns (#52, @noahwilliamsson). Support timestamp values with sub-second precision on output, and with year beyond 2038 (#56).
- The connection now uses the "utf8mb4" charset by default (#7).
- New default
row.names = FALSE
. - New SSL-related arguments to
dbConnect()
:ssl.key
,ssl.cert
,ssl.ca
,ssl.capath
,ssl.cipher
(#131, #148, @adamchainz). - CI for Linux, Windows, and OS X (#25).
- Support for Connector/C from both MariaDB and MySQL.
-
RMariaDB fully supports DATE and DATETIME columns. On output, DATE columns will be converted to vectors of
Date
s and DATETIME will be converted toPOSIXct
. 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 withdbBind()
.dbSendQuery()
anddbGetQuery()
also support inline parameterised queries, likedbGetQuery(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 usedbColumnInfo()
instead. -
dbGetInfo()
has been removed. Please use the individual metadata functions. -
Information formerly contain in
summary()
methods has now been integrated intoshow()
methods. -
make.db.names()
has been deprecated. UsedbQuoteIdentifier()
instead. -
isIdCurrent()
has been deprecated. UsedbIsValid()
instead. -
dbApply()
,dbMoreResults()
anddbNextResults()
have been removed. These were always flagged as experimental, and now the experiment is over. -
dbEscapeStrings()
has been deprecated. Please usedbQuoteStrings()
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