activerecord-jdbc-adapter icon indicating copy to clipboard operation
activerecord-jdbc-adapter copied to clipboard

todo list for 1.4

Open kares opened this issue 11 years ago • 0 comments

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_connection calls 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_spec if there's an adapter class
  • [ ] stop filling in :adapter_class and 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 debug on (e.g. due #472)
  • [x] PostgreSQL functionality sharing with AR (since 4.2)
  • [ ] remove attr_writer :limit, :precision in JdbcColumn
  • [ ] 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_proc support ?
  • [x] support for auto-compiling jar extension with :git paths 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_bytea into 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.

kares avatar Aug 06 '14 08:08 kares