I'm trying to fix Mapper support for Oracle and I've run into an issue. Oracle's JDBC drivers support returning autoGenerated keys, but not the way that Lift expects. The way that Lift currently works, it just calls executeUpdate with Statement.RETURN_GENERATED_KEYS set. In Oracle, this will simply return the ROWID of the inserted row, which means that we would have to do a second select to get the actual value. Alternatively, Oracle does support fetching the inserted value from a column if you use the executeUpdate(String, Array[String]) method (the Array is a set of column names to fetch). What I'm getting at is that support for autogenerated keys is very driver-specific right now, but the DriverTypes class essentially is just using some flags to control behavior in MetaMapper. I'm wondering if it would make more sense to move the support for insert queries into DriverTypes so that we have things tied directly to the drivers instead of splitting it up between two files. I'm thinking of adding something like:
def performUpdate(conn : Connection, stmt : String, primaryKeyColumn : String) def performUpdate(conn : Connection, stmt : PreparedStatement, primaryKeyColumn : String) to DriverTypes, which would then allow us to define driver-specific key fetching in place. I could move the base functionality into DriverTypes itself, and then we could override as needed on specific vendor classes. The current situation with flags for brokenAutogeneratedKeys_? and wickedBrokenAutogeneratedKeys_?, while amusingly named, feels untenable in the long term as we continue to find corner cases for vendor drivers. I could add a "notQuiteBrokenButDifferentAutogeneratedKeys_?" flag for Oracle, but that doesn't feel right. Thoughts? Derek --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
