- Fix performance degragation about handling connection on v4.4.0 and earlier v4 releases.
- Support activerecord v5.2.1
- Fix sql parser error when inserting boolean value with rails version 5.2.0 or later
- Fix
NoMethodError
on boot with production env - Fix not working patches for activerecord-import
- Support activerecord v5.2.0
- Support activerecord versions v5.0.6, v5.0.7 and v5.1.6
- Remove unneeded monkey patches
- Add
ActiveRecord::Base.turntable_pool_list
instead ofActiveRecord::Base.turntable_connections
- Fix connection leaks on fork
- Supported rails versions are
- 5.0.0 to 5.0.5
- 5.1.0 to 5.1.5
- Configuration
- Added DSL configuration file: config/turntable.rb
- Added a new algorithm:
hash_slot
- distributes like redis cluster.
- Added a new sequencer:
katsubushi
- Support katsubushi as a sequencer backend.
- Support slave(read replica) connection. (Experimental feature)
RangeAlgorithm
is integrated toRangeBsearchAlgorithm
.- Changed
ConnectionProxy#with_master
behavior toFix connection to primary master database
.- Old
ConnectionProxy#with_master
behavior(default model connection) is renamed toConnectionProxy#with_default_shard
- Old
- Changed
AR::Base.turntable_configuration
to useActiveRecord::Turntable::Configuration
class instead of Hash.
- Support activerecord v5.1.x
- Fix schema dumper to dump sequence table options correctly (activerecord >= 5.0.1)
- Restore LogSubscriber log format to the same as 2.x
- Fix ActiveRecord 5.0.x compatibilities
- Fixes SchemaDumper fails dumping sequence tables on v5.0.0
- Follow AbstractAdapter#log implementation changes on v5.0.3
- Fix QueryCache to work with v5.0.1 or later
- Fixes schema dumper patches that dumps tables options incorrectly.
- Re-enable the
AR::LogSubscriber::IGNORE_PAYLOAD_NAMES
(thx @misoobu) - Make cluster transaction helpers to preserve transaction options(e.g. :requires_new)
- Fixes shard names are not written to logs correctly (thx @i2bskn)
- Fixes ConnectionNotEstablished Error with STI subclasses #48
- Update activerecord-import patches for performance improvements (thx @misoobu)
- Disable statement cache when adding shard conditions automatically
- Fix to propagate shard conditions to
AssociationRelation
too
- Rails5 compatibility
- Minimum ruby requirement version is
2.2.2
- Rails 4.x support has been dropped.
- Minimum ruby requirement version is
- Fix to propagate shard conditions to
AssociationRelation
too
- Drop support for ruby 1.9.3
- Update activerecord 4.2 patches
- Fixes optimistic locking with a serialized column causes JSON::Error.
- Fallback
sequence_name
to parent modules, because ar-import expects originalsequence_name
result(= nil)
- ActiveRecord::Import follow ActiveRecord 5 (thx mitaku)
- ConnectionProxy uses a method_missing, so it should adapt respond_to? (thx, misoobu)
- Support index hint
- Fix imcomplete bugfix for #30
- Fixes #30 undefined local variable with
db:structure:(dump|load)
- Add
modulo
algorithm (thx tatsuma)
- Add err detail to Building Fader exception log (thx tatsuma)
- Fix building cluster with mysql sequencer (fixes #25) (thx tatsuma)
- Fix seqeucner example (thx akicho8, tatsuma)
- Fix
ActiveRecord::Fixtures
doesn't working - Fix
ActiveRecord::Base.clear_active_connections!
to release connections established by turntable at development env
Support activerecord 4.2.0
- Fix cluster helper methods(i.e xxxx_cluster_transaction helper) on lazy load environments(development, test)
- Move migration tasks as Migrator extension to fix rake actions(added by other gems) ordering problem
- Fixes migration dsl:
clusters
is not working (thx macks) - Fixes migration dsl:
shards
is not working
- Fix not to destroy other database extension's connection proxy object
Add dependency: ruby >= 1.9.3 from this release
- Fix incorrect insert sql with binary literal
- Fix parse error on sql with binary string literal:
x'...'
- Fix method definition bug on 2.0.1
- support
update_columns
First release for ActiveRecord 4.x
If you are using AR 3.x, use turntable 1.x.
Migration had been executed to only master database on turntable 1.x.
On turntable 2.x, migration is executed to all shards as default behavior.
Multiple sequencers supported.
Please pass sequencer's name Symbol to sequencer
DSL:
sequencer :user_seq
Supported barrage gem as sequencer
When using association(or association preloading), Turntable would add shard key condition to relation object if associated models has the same shard key name.
If two related models has different named keys(but same meaning), you can pass option foreign_shard_key
to association option.
Example:
class UserReceivedItemHistory < ActiveRecord::Base
has_many :user, foreign_shard_key: :receiver_user_id
end
On development environment, you can receive exception about queries that may cause a performance problem.
Add follow option to turntable.yml
:
- raise_on_not_specified_shard_query(default: false)
- raise_on_not_specified_shard_update(default: false)
To create transaction to all shards on the cluster:
User.user_cluster_transaction do
# transaction opened on all shards in 'user_cluster'
end
- Fix thread-safety bug
- Increase sequence table performance (by hanabokuro)
- Enable query caching
-
AR::Base.clear_active_connections! should be proxied to all shards
-
Reduce unnecessary query when reloading
- Added missing setting for sequences at README and turntable.yml template.
- First Release!