- 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).

