activerecord-jdbc-adapter
activerecord-jdbc-adapter copied to clipboard
todo list for 1.4
if you're using our master branch (1.4 pre-release) and you do like where it's heading please salt the project.
AR-JDBC 1.4.x releases aim to finally provide performance improvements that should much up the AR query execution time with MRI (and beyond). Historically optimization has not been done much as most of the time is spent hustling with AR compatibility and supported adapter variability. There's certainly a lot of room for improvement and for most production adapters such as MySQL, PostgreSQL the results should be noticeable. There's also plenty of refactoring (and maybe even some new features) to be done, that has been simply avoided on the 1.3 stable line.
- [ ] performance improvements
- [x] try to resolve byte ruby String when possible
- [ ] covert to ruby Time directly from native part
- [ ] review adapters whether they really need binary/char stream reading
- [ ] ...
- [x] rewrite JDBCError (support cause compat with 2.1)
- [x] do not wrap runtime exceptions into JDBCErrors
- [x] allow for lazy JDBC connection initialization (should be default for JNDI)
- [x] support disabling
configure_connectioncalls using a config value - [ ] try to log transaction begin/commit happening similar to core
- [ ] review savepoint tracking (avoid map instantiation and/or use internal variable)
- [ ] SQLite3 now has working savepoint API
- [ ] no longer use (extend) our JDBC/JNDI callbacks ...
- [ ] stop filling in
:adapter_specif there's an adapter class - [ ] stop filling in
:adapter_classand pass it down as a jdbc_connection arg - [ ] we shall handle some translate_exception overrides ?! e.g. oracle-enhanced does :
def translate_exception(exception, message) #:nodoc:
case @connection.error_code(exception)
when 1
RecordNotUnique.new(message, exception)
when 2291
InvalidForeignKey.new(message, exception)
else
super
end
end
- [ ] refactor Column(s) to have the same super class as core
- [x] introduce Column impl class convention e.g.
ArJdbc::MySQL::Column - [ ] review adapter class names to be JdbcXxx by default ...
- [ ] ~~patch log to print cause's error (maybe try Rails itself)~~
- [x] refactor our AR benchmarking app
- [ ] benchmarking 4 all (most - as time permits)
- [ ] MySQL
- [ ] PostgreSQL
- [ ] maybe Oracle
- [x] log the driver version used with
debugon (e.g. due #472) - [x] PostgreSQL functionality sharing with AR (since 4.2)
- [ ] remove
attr_writer :limit, :precisioninJdbcColumn - [ ] instance cache
usesType(runtime)if they're to stay! - [ ] do call site caching of Java made Ruby method calls
- [ ] warn with
jndi:configuration when using pool default size ? - [ ] [feature] implement procedural
exec_procsupport ? - [x] support for auto-compiling jar extension with
:gitpaths in Gemfile (.jar no longer commited) - [ ] warn on using mimer, sybase and informix adapters - possibly asking users to help ...
- [ ] [postgres] avoid PGobject in adapter.rb
- [x] [postgres] move
unescape_byteainto native
:ice_cream: :ice_cream: :shaved_ice:
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.