aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
* add factory methods for empty alias trackersAaron Patterson2014-02-143-23/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we know the alias tracker is empty, we can create one that doesn't use a hash with default block for counting. ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') ActiveRecord::Schema.define do create_table :posts, force: true do |t| t.integer :comments_count end create_table :comments, force: true do |t| t.integer :post_id end end class Post < ActiveRecord::Base; has_many :comments; end class Comment < ActiveRecord::Base; belongs_to :post, counter_cache: true; end 10.times { Comment.create!(post: Post.create!) } record = Post.first association_name = :comments Benchmark.ips do |x| reflection = record.class.reflect_on_association(association_name) association = reflection.association_class.new(record, reflection) x.report('assoc') do reflection.association_class.new(record, reflection) end x.report('reader') do association.reader;nil end x.report('combined') do reflection.association_class.new(record, reflection).reader;nil end end [aaron@higgins rails (tracker)]$ TEST=ips bundle exec ruby ../1bb5456b5e035343df9d/gistfile1.rb -- create_table(:posts, {:force=>true}) -> 0.0062s -- create_table(:comments, {:force=>true}) -> 0.0003s Calculating ------------------------------------- assoc 833 i/100ms reader 28703 i/100ms combined 839 i/100ms ------------------------------------------------- assoc 9010.3 (±3.8%) i/s - 44982 in 5.000022s reader 3214523.4 (±5.5%) i/s - 16016274 in 5.001136s combined 8841.0 (±5.8%) i/s - 44467 in 5.049269s [aaron@higgins rails (tracker)]$ TEST=ips bundle exec ruby ../1bb5456b5e035343df9d/gistfile1.rb -- create_table(:posts, {:force=>true}) -> 0.0060s -- create_table(:comments, {:force=>true}) -> 0.0003s Calculating ------------------------------------- assoc 888 i/100ms reader 29217 i/100ms combined 900 i/100ms ------------------------------------------------- assoc 9674.3 (±3.3%) i/s - 48840 in 5.054022s reader 2988474.8 (±6.9%) i/s - 14842236 in 4.998230s combined 9674.0 (±3.1%) i/s - 48600 in 5.028694s
* guarantee a list in the alias tracker so we can remove a conditionalAaron Patterson2014-02-143-6/+12
|
* stop exposing table_joinsAaron Patterson2014-02-141-4/+3
|
* make most parameters to the AliasTracker requiredAaron Patterson2014-02-142-6/+4
| | | | | This helps with our sanity. The class is internal, we can refactor to a "nice" API later.
* make a singleton for AssociationScopeAaron Patterson2014-02-142-1/+7
| | | | | AssociationScope no longer maintains state, so we're safe to keep a singleton and save on GC time
* pass the association and connection to the scope methodAaron Patterson2014-02-142-9/+3
|
* pass the tracker down the stack and construct it in the scope methodAaron Patterson2014-02-141-18/+18
|
* clean up add_constraints signatureAaron Patterson2014-02-141-8/+9
|
* remove the reflection delegateAaron Patterson2014-02-141-15/+14
|
* remove klass delegatorAaron Patterson2014-02-141-10/+11
|
* remove chain delegateAaron Patterson2014-02-141-5/+6
|
* remove scope_chain delegateAaron Patterson2014-02-141-3/+3
|
* Merge pull request #14048 from pcreux/better-error-message-db-migrate-downCarlos Antonio da Silva2014-02-141-1/+1
|\ | | | | Add hint to error message of task db:migrate:down
| * Add hint to error message of task db:migrate:downPhilippe Creux2014-02-131-1/+1
| |
* | remove more delegate methodsAaron Patterson2014-02-131-7/+9
| |
* | :scissors: whitespaceAaron Patterson2014-02-131-1/+0
| |
* | rm delegate methods that are not actually usedAaron Patterson2014-02-131-2/+2
| |
* | JoinHelper is never reused, so there is no need to separateAaron Patterson2014-02-133-42/+25
| |
* | speed up the collection proxy reader method, but slow down the constructorAaron Patterson2014-02-131-1/+5
| |
* | Merge pull request #14034 from ↵Yves Senn2014-02-131-1/+6
|\ \ | | | | | | | | | | | | hdabrows/drop-correct-index-when-reverting-migration Drop the correct index after reverting a migration
| * | Drop the correct index after reverting a migrationHubert Dąbrowski2014-02-131-1/+6
| | | | | | | | | | | | | | | | | | Previously when reverting a migration which added a named index it would instead drop a corresponding index with matching columns but without a name.
* | | Dont use Enumarator on join_associationArthur Neves2014-02-131-2/+4
| | |
* | | `execute` is a hotspot, so let's reduce branchesAaron Patterson2014-02-121-6/+2
|/ /
* | adding missed changekayvan2014-02-111-1/+1
| |
* | adding connection parameter to check_pending for migrationskayvan2014-02-111-5/+5
| |
* | Avoid using deprecated arel constantsRafael Mendonça França2014-02-102-3/+3
| |
* | move alias method `sanitize_conditions` to a correct placeDmitry Polushkin2014-02-091-2/+1
| |
* | Merge pull request #13981 from Fortisque/kevin/postgresql_reaper_threadsafeAaron Patterson2014-02-083-2/+13
|\ \ | | | | | | Reaper has access to threadsafe active? call
| * | Reaper has access to threadsafe active? callKevin Casey2014-02-083-2/+13
| | |
* | | context in validation goes through has many relationshipKevin Casey2014-02-081-1/+1
|/ /
* | Merge branch 'dump-schema-after-migration-flag' of ↵Xavier Noria2014-02-062-1/+10
|\ \ | | | | | | | | | | | | | | | | | | git://github.com/emilsoman/rails into emilsoman-dump-schema-after-migration-flag Conflicts: activerecord/CHANGELOG.md
| * | Add config to disable schema dump after migrationEmil Soman2014-02-062-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Add a config on Active Record named `dump_schema_after_migration` * Schema dump doesn't happen if the config is set to false * Set default value of the config to true * Set config in generated production environment file to false * Update configuration guide * Update CHANGELOG
* | | Return sized enumerator from Batches#find_eachMarc-Andre Lafortune2014-02-052-2/+4
| | |
* | | Return sized enumerator from Batches#find_in_batchesMarc-Andre Lafortune2014-02-051-4/+9
| | |
* | | docs, AR already auto-detects primary keys. Closes #13946. [ci skip]Yves Senn2014-02-051-3/+3
| | | | | | | | | | | | | | | This behavior was introduced since Rails 3.1 (207f266ccaaa9cd04cd2a7513ae5598c4358b510) but the docs were still out of date.
* | | Document that enum conditions must use the ordinal valueRafael Mendonça França2014-02-041-0/+2
|/ / | | | | | | [ci skip]
* | Merge pull request #13935 from arthurnn/fix_12566Rafael Mendonça França2014-02-041-1/+1
|\ \ | | | | | | Make sure transaction state resets after commit
| * | Make sure transaction state resets after commitArthur Neves2014-02-031-1/+1
| | | | | | | | | | | | [fixes #12566]
* | | Merge pull request #13899 from ↵Rafael Mendonça França2014-02-041-1/+1
|\ \ \ | |/ / |/| | | | | | | | Fortisque/kevin/active_record_HABTM_with_belongs_to destruction errors out on HABTM w/out primary key
| * | fix HABTM w/out primary key errors on destructionKevin Casey2014-02-021-1/+1
| | |
* | | some wording format changes. [ci skip]Yves Senn2014-02-031-1/+1
| | |
* | | pass `habtm :autosave` to underlying `hm:t` association. Closes #13923.Yves Senn2014-02-031-1/+1
| | |
* | | docs, revisit polymorphic associations with STI example. [ci skip]Yves Senn2014-02-031-2/+5
| | | | | | | | | | | | | | | | | | This is a follow up to #13926. /cc @fxn
* | | Fixes the camelCase variable name in the docs [ci skip]Fred Wu2014-02-031-2/+2
| | |
* | | Make arel methods private APIRafael Mendonça França2014-02-012-6/+5
| | | | | | | | | | | | | | | | | | Since its conception arel was made to be private API of Active Record. If users want to use arel features directly we should provide a way using the Active Record API without exposing the arel implementation.
* | | Merge pull request #13688 from jbaudanza/psql-index-existsRafael Mendonça França2014-02-011-0/+13
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | PostgreSQL implementation of SchemaStatements#index_name_exists? Conflicts: activerecord/CHANGELOG.md
| * | | psql implementation of #index_name_exists?Jonathan Baudanza2014-01-161-0/+13
| | | |
* | | | Fixes issue with parsing whitespace content back from database - fixes #13907Mauricio Linhares2014-02-011-2/+3
| | | |
* | | | this class depends on JoinHelper, so we should require itAaron Patterson2014-01-311-0/+2
| |/ / |/| |
* | | Associations now raise `ArgumentError` on name conflicts.Lauro Caetano2014-01-311-0/+6
| | | | | | | | | | | | | | | Dangerous association names conflicts include instance or class methods already defined by `ActiveRecord::Base`.