[Rd] S4 coercion responsibility
    Paul Gilbert 
    pgilbert at bank-banque-canada.ca
       
    Mon Sep 15 14:56:06 CEST 2008
    
    
  
Should functions or the user be responsible for coercing an S4 object 
argument containing the proper object (and thus should below be 
considered a bug in the packages or not)?
The example is  with RSQLite but the same thing happens with RMySQL, and 
other DBI packages.
 > library("RSQLite")  Loading required package: DBI
 > m <- dbDriver("SQLite")
 > con <- dbConnect(m)
 > setClass("SQLConPlus", contains=c("SQLiteConnection","integer"))
[1] "SQLConPlus"
 > conPlus <- new("SQLConPlus", con, 1)
 > dbListTables(con)
character(0)
 > dbListTables(conPlus)
Error in sqliteExecStatement(con, statement, bind.data) :
 RS-DBI driver: (invalid dbManager handle)
 > dbListTables(as(conPlus, "SQLiteConnection"))
character(0)
 >
The problem is happening in sqliteExecStatement which does
   conId <- as(con, "integer")
but con only *contains* an SQLiteConnection and the other integer
causes confusion. If the line were
   conId <- as(as(con, "SQLiteConnection"), "integer")
everything works.
I can work around this, but I am curious where  responsibility for this 
coercion should be.
Paul Gilbert
====================================================================================
La version française suit le texte anglais.
------------------------------------------------------------------------------------
This email may contain privileged and/or confidential in...{{dropped:26}}
    
    
More information about the R-devel
mailing list