- Fix this problem: library("org.Mm.eg.db") x <- org.Mm.egREFSEQ2EG mapped_seqs <- mappedkeys(x) y <- x[mapped_seqs] as.list(y) It occurs because the SQL statement is too long (the max length supported by SQLite seems to be 1000000 characters). For example, this will work: zz <- as.list(x[mapped_seqs[1:77403]]) but not this zz <- as.list(x[mapped_seqs[1:77404]]) nchar(toSQLStringSet(mapped_seqs[1:77404])) is 999869! - fix dbInfo() - in addition to dbschema(), provide a way to retrieve a high-level description of a given schema (UML? XML? via some S4 classes?) - add AnnotationDbi.Rnw vignette (main vignette) with more focus on the Bimap interface - fix the current INDEX mess (mix of old and new CREATE INDEX statements that lead to duplicated indices and an sqlite file bigger in size), I think all the old CREATE INDEX statements can be removed (they are the same as the new ones) except in GO_DB where some useful indices are missing in 0.9 - try adding a "go" (or "go_all") VIEW in the schema that contains the UNION of the go_[bp|cc|mf] (or go_[bp|cc|mf]_all) tables. 2 things to check carefully: the impact on the size of the SQLite file and the impact on the speed of the GO, GO2PROBES and GO2ALLPROBES maps (their definitions would first need to be modified to make them GoAnnDbBimap instances and have them use this new view as the right table instead of the 3 original tables). - look at subListExtract in Biobase and see where it can be used to improve speed in AnnotationDbi - pluggable maps -------------- If [to.tablename(x1),to.colname(x1)] (the right table/colname for a direct map, the left table/colname for a reverse map) is the same as [from.tablename(x2)|from.colname(x2)] (the left table/colname for a direct map, the right/colname table for a reverse map), and if inslot.to.keys(x1) and inslot.from.keys(x2) are both NAs, then x1 and x2 are "pluggable". x <- plugmaps(x1, x2), the result of the "plug" operation, is a map that goes from [from.tablename(x1),from.colname(x1)] to [to.tablename(x2)|to.colname(x2)]. Of course, only maps that belong to the same package will be pluggable this way (e.g. hgu95av2PATH2PROBE and hgu95av2ACCNUM, x1 is a reverse map and x2 a direct map). So, in fact, something else to check before to decide whether x1 and x2 are pluggable is that dbfile(x1) == dbfile(x2).