On Wed, 2 Sep 2009, João Eiras wrote:
Hi everyone.
1) Currently, SqlResultSet.insertId is defined as a integer. This would
prevent user agents to use an underlying database engine that does not
rely on integers for rowids. For instance, both SQLite, MS Access,
Informix use integers it seems, DB2 uses a transparent type 17 bytes
big, Oracle uses strings, Java JDBC uses byte[].
For the sake of compatibility, it would probably be better to make
insertId either a string, or in the case of lack of agreement, a
implementation defined type, which is not desirable.
Since we're now requiring a sqlite-compatible backend, integer is right, no?
2) insertId only stores one row id. That's not very helpful for the case
of a INSERT INTO table(...) SELECT ... dml. Considering that the query
could produce an arbitrary number of rowids, the insertId field should
probably be a SqlResultSetRowList, or an array.
insertId is supposed to expose sqlite3_last_insert_rowid, which doesn't
seem to support returning an array.
--
Ian Hickson U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/ U+263A/, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'