Jeremy, Thank you very much for this release. Specially for the jruby effort. I'm counting with jruby+sequel on my wanna-be-independent-project.
Regards, Geraldo Lopes de Souza On 1 maio, 13:00, Jeremy Evans <[email protected]> wrote: > Sequel 3.35.0 has been released and should be available on the gem > mirrors. > > = New Features > > * A dirty plugin has been added, which saves the initial value of > the column when the column is changed, similar to > ActiveModel::Dirty: > > artist.name # => 'Foo' > artist.name = 'Bar' > artist.initial_value(:name) # 'Foo' > artist.column_change(:name) # ['Foo', 'Bar'] > artist.column_changes # {:name => ['Foo', 'Bar']} > artist.column_changed?(:name) # true > artist.reset_column(:name) > artist.name # => 'Foo' > artist.column_changed?(:name) # false > artist.update(:name=>'Bar') > artist.column_changes # => {} > artist.previous_changes # => {:name=>['Foo', 'Bar']} > > * Database#create_table now respects an :as option to create a > database based on the results of a query. The :as option value > should either be an SQL string or a dataset. > > DB.create_table(:new_foos, :as=>DB[:foos].where(:new=>true)) > > * The json_serializer and xml_serializer plugins can now serialize > arbitrary arrays of model objects by passing an :array option > to the to_json class method. This works around an issue in > ruby's JSON library where Array#to_json does not pass arguments > given to it to the members of the array. > > Artist.to_json(:array=>[Artist[1]], :include=>:albums) > > * You can now use the % (modulus) operator in the same way you > can use the bitwise operators in Sequel: > > :column.sql_number % 1 # (column % 1) > > * On PostgreSQL, you can now provide :only, :cascade, and :restart > options to Dataset#truncate to use ONLY, CASCADE, and > RESTART IDENTITY. Additionally, you can now truncate multiple > tables at the same time: > > DB.from(:table1, :table2).truncate(:cascade=>true) > > * The :index option when creating columns in the schema generator > can now take a hash of index options: > > DB.create_table(:foo){Integer :bar, :index=>{:unique=>true}} > > * A Database#cache_schema accessor has been added, it can be set > to false to have the Database never cache schema results. This > can be useful in Rails development mode, so that you don't need to > restart a running server to have models pick up the new schema. > > * Database#log_exception has been added for easier instrumentation. > It is called with the exception and SQL query string for all > queries that raise an exception. > > * The Sequel.migration DSL now has a transaction method that forces > transaction use for the given migration. > > = Other Improvements > > * Many theoretical thread-safety issues have been fixed for ruby > implementations that don't use a global interpreter lock. > Previously, Sequel relied on MRI's global interpreter lock for > part of its thread safety, now it does manually locking in more > places to avoid thread-safety issues on JRuby (and other ruby > implementations without a global interpreter lock). > > No Sequel user ever reported a production error related to the > previous thread-safety issues, and most of the issues fixed > were so difficult to hit that even tests specifically designed > to raise errors were unable to do so. > > * Sequel.single_threaded = true now disables the mutex > synchronization that enforces thread safety for additional > performance in single threaded mode. > > * Sequel's migrators now only attempt to use transactions by > default if the underlying database supports transactional DDL. > SQLite does support transactional DDL, but Sequel will not > use transactions for SQLite migrations as it causes issues > when emulating alter_table operations for tables with foreign > keys. > > * Errors that occur when rolling back database transactions are > now handled correctly. Previously, the underlying exception was > raised, it wasn't correctly wrapped in a Sequel::DatabaseError, > and if it was due to a database disconnection, the connection > wasn't removed from the pool. > > * Sequel no longer sets ruby instance variables on java objects, > fixing warnings on JRuby 1.7 and attempting to be forward > compatible with JRuby 2.0. > > * Sequel now uses date and timestamp formats that are multilanguage > and not DATEFORMAT dependent on Microsoft SQL Server. > > * Sequel now correctly escapes blackslash-carriage return-line feed > on Microsoft SQL Server. > > * Parsing the column default values in the oracle adapter no longer > requires database superuser privileges. > > * Sequel now correctly handles parsing schema for tables in other > databases on MySQL. Previously, it would always look in the > current database. > > * Sequel no longer doubles backslashes in strings by default. It > now only does so on MySQL, since that is the only database that > appears to use backslashes for escaping. This fixes issues with > backslashes being doubled on some of the less commonly used > adapters. > > * The pg_auto_parameterize extension now works correctly when > using cursors. > > * Dataset#truncate now raises an Error if you attempt to do so > on a dataset that uses HAVING. Previously, it only checked for > WHERE. > > * The schema dumper now recognized the identity type. > > = Backwards Compatibility > > * Association reflections now store cached information in a > separate subhash due to the thread-safety changes. Any code > accessing an association reflection should always call the > related method to get the cached data instead of checking > for a specific location in the hash. > > * Association reflection internals for many_through_many associations > changed significantly, any code that accesses the edge information > in the reflection will need to be changed to use the new methods > instead of accessing the old values directly. > > * The features deprecated in 3.34.0 have now been removed: > * Ruby <1.8.7 support > * PostgreSQL <8.2 support > * Dataset#disable_insert_returning on PostgreSQL > * Array#all_two_pairs? and #sql_expr_if_all_two_pairs > > Thanks, > Jeremy -- You received this message because you are subscribed to the Google Groups "sequel-talk" 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/sequel-talk?hl=en.
