Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

todo list for 1.4 #572

Open
11 of 36 tasks
kares opened this issue Aug 6, 2014 · 0 comments
Open
11 of 36 tasks

todo list for 1.4 #572

kares opened this issue Aug 6, 2014 · 0 comments
Labels
Milestone

Comments

@kares
Copy link
Member

kares commented Aug 6, 2014

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
    • 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
    • ...
  • rewrite JDBCError (support cause compat with 2.1)
  • do not wrap runtime exceptions into JDBCErrors
  • allow for lazy JDBC connection initialization (should be default for JNDI)
  • 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
  • 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)
  • refactor our AR benchmarking app
  • benchmarking 4 all (most - as time permits)
    • MySQL
    • PostgreSQL
    • maybe Oracle
  • log the driver version used with debug on (e.g. due "Returning autogenerated keys is not supported" error when running rails db:migrate #472)
  • 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 ?
  • 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
  • [postgres] move unescape_bytea into native

🍨 🍨 🍧


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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant