[R-sig-DB] Implementation of RMySQL

David James dj @end|ng |rom re@e@rch@be||-|@b@@com
Fri Jan 21 23:09:45 CET 2005


Jeffrey Horner wrote:
> I noticed that this package stores pointers to MySQL related data 
> structures i R objects as an integer vector of up to length 3:
> 
> (from RMySQL/src/RS-DBI.h):
> /* In R/S a dbObject is a foreign reference consisting of a vector
>   * of 1, 2 or 3 integers.  In the C implementation we use these
>   * R/S vectors as handles (we could have use pointers).
>   */
> 
> Why were they not stored in the R object using the R External Pointer 
> interface, described here:
> 
> http://www.stat.uiowa.edu/~luke/R/references/weakfinex.html
> 
> On a related note, the connection is not closed when assigning NULL to 
> the connection object. This could be accomplished by using the 
> Finalization Interface described in the above reference... Any reason 
> this was not used?
> 
> Also, in light of a recent discussion on the R-devel mailing list(see 
> S3/S4 classes performance comparison), does the S4 implemented DBI 
> package hinder performance in any way for the RMySQL package?
> 
> -- 
> Jeffrey Horner       Computer Systems Analyst         School of Medicine
> 615-322-8606         Department of Biostatistics   Vanderbilt University
> 

The original implementation predates external pointers/weak
references.  Moreover, at that time I decided to make the package
(plus ROracle and RSQLite) compatible with S-Plus both at the S
level and the C underlying code (this is a decision I now regret).
I expect to change the implementation, time permitting, in a
future version.

Re: S4 performance, I haven't noticed any disadvantages, perhaps
because the delays due to running SQL queries on remote severs and/or
data transmissions tend to be much larger than S4 object creation.
I do feel that the S4 classes and methods provide a better mechanism
than S3 instance-based methods for this type of packages.

Regards,

--
David




More information about the R-sig-DB mailing list