Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | implements a much faster auto EXPLAIN, closes #3843 [José Valim & Xavier Noria] | Xavier Noria | 2011-12-04 | 1 | -29/+31 | |
|/ | | | | | | | | | | | | | | | | | | | | | | | | | This commit vastly reduces the impact of auto explain logging when enabled, while keeping a negligible cost when disabled. The first implementation was based on the idea of subscribing to "sql.active_record" when needed, and unsubscribing once done. This is the idea behind AR::Relation#explain. Subscribe, collect, unsubscribe. But with the current implementation of notifications unsubscribing is costly, because it wipes an internal cache and that puts a penalty on the next event. So we are switching to an approach where a long-running subscriber is listening. Instead of collecting the queries with a closure in a dedicated subscriber, now we setup a thread local. If the feature is disabled by setting the threshold to nil, the subscriber will call a method that does nothing. That's totally cheap. | |||||
* | Add missing require | Jon Leighton | 2011-12-03 | 1 | -0/+2 | |
| | ||||||
* | Avoid postgres 9.X syntax | Jon Leighton | 2011-12-03 | 1 | -1/+5 | |
| | ||||||
* | Fix #3837. | Jon Leighton | 2011-12-03 | 1 | -0/+12 | |
| | | | | | We also need to time zone convert time zone aware attributes when accessed via read_attribute, not only when via direct access. | |||||
* | removes the convenience instance version of AR::Base.silence_auto_explain | Xavier Noria | 2011-12-03 | 1 | -5/+2 | |
| | | | | | | | Rationale: As discussed with José and Jon, this convenience shortcut is not clearly justified and it could let the user thing the disabled EXPLAINs are related to the model instance rather than being globally disabled. | |||||
* | Merge pull request #3820 from jaylevitt/nested_loading_through_assoc | Jon Leighton | 2011-12-03 | 1 | -0/+35 | |
|\ | | | | | reintroduce patch from #726 to handle nested eager loading via associations | |||||
| * | reintroduce patch from #726 to handle nested eager loading via associations | Jay Levitt | 2011-11-30 | 1 | -0/+35 | |
| | | ||||||
* | | implements AR::Base(.|#)silence_auto_explain | Xavier Noria | 2011-12-02 | 1 | -0/+11 | |
| | | ||||||
* | | implements automatic EXPLAIN logging for slow queries | Xavier Noria | 2011-12-02 | 1 | -0/+91 | |
| | | ||||||
* | | Create method with known identifier then alias into place. | Jon Leighton | 2011-12-01 | 1 | -0/+2 | |
| | | | | | | | | | | | | | | | | This means we never have to rely on define_method (which is slower and uses more memory), even when we have attributes containing characters that are not allowed in standard method names. (I am mainly changing this because the duplication annoys me, though.) | |||||
* | | Add test for read_attribute(:id) with non-standard PK. | Jon Leighton | 2011-12-01 | 1 | -0/+5 | |
| | | | | | | | | | | | | | | | | Also make it actually work. It slows down all read_attribute accesses to map 'id' to whatever the PK actually is, inside read_attribute. So instead make sure the necessary methods are defined and that they redirect wherever they need to go. | |||||
* | | Fix up test altering global state that was causing me grief | Jon Leighton | 2011-12-01 | 1 | -2/+4 | |
| | | ||||||
* | | Get rid of the underscore versions of attribute methods! | Jon Leighton | 2011-12-01 | 1 | -0/+5 | |
| | | | | | | | | This makes me happy! | |||||
* | | Add hackery to make Syck use encode_with/init_with. Fixes 1.8 after recent ↵ | Jon Leighton | 2011-12-01 | 1 | -0/+5 | |
| | | | | | | | | changes to attribute serialization. | |||||
* | | don't alter global state in test | Jon Leighton | 2011-11-30 | 1 | -2/+3 | |
| | | ||||||
* | | If the table behind has no primary key, do not ask again and just return nil. | Julius de Bruijn | 2011-11-30 | 1 | -0/+5 | |
| | | ||||||
* | | omg computer science! | Jon Leighton | 2011-11-30 | 1 | -5/+1 | |
| | | | | | | | | | | | | | | Implement a mini state machine for serialized attributes. This means we do not have to deserialize the values upon initialization, which means that if we never actually access the attribute, we never have to deserialize it. | |||||
* | | Fix typo | Jon Leighton | 2011-11-30 | 1 | -2/+2 | |
| | | ||||||
* | | Use inheritance to avoid special-case code for the 'id' method | Jon Leighton | 2011-11-30 | 1 | -1/+1 | |
|/ | ||||||
* | ActiveRecord::Relation#pluck method | Bogdan Gusiev | 2011-11-30 | 1 | -0/+25 | |
| | ||||||
* | Automatic closure of connections in threads is deprecated. For example | Aaron Patterson | 2011-11-29 | 2 | -26/+8 | |
| | | | | | | | | | | | | | | | | | the following code is deprecated: Thread.new { Post.find(1) }.join It should be changed to close the database connection at the end of the thread: Thread.new { Post.find(1) Post.connection.close }.join Only people who spawn threads in their application code need to worry about this change. | |||||
* | AbstractAdapter#close can be called to add the connection back to the | Aaron Patterson | 2011-11-29 | 1 | -0/+16 | |
| | | | | pool. | |||||
* | expire will set in_use to false | Aaron Patterson | 2011-11-29 | 1 | -0/+7 | |
| | ||||||
* | last_use is set on connection lease | Aaron Patterson | 2011-11-29 | 1 | -0/+6 | |
| | ||||||
* | Leased connections return false on second lease | Aaron Patterson | 2011-11-29 | 1 | -2/+11 | |
| | ||||||
* | Adapters keep in_use flag when leased | Aaron Patterson | 2011-11-29 | 1 | -0/+16 | |
| | ||||||
* | namespace the adapter test | Aaron Patterson | 2011-11-29 | 1 | -121/+123 | |
| | ||||||
* | Deprecated `define_attr_method` in `ActiveModel::AttributeMethods` | Jon Leighton | 2011-11-29 | 2 | -22/+15 | |
| | | | | | This only existed to support methods like `set_table_name` in Active Record, which are themselves being deprecated. | |||||
* | Deprecate set_locking_column in favour of self.locking_column= | Jon Leighton | 2011-11-29 | 2 | -2/+42 | |
| | ||||||
* | Deprecate set_primary_key in favour of self.primary_key= | Jon Leighton | 2011-11-29 | 15 | -22/+43 | |
| | ||||||
* | Make sure the original_foo accessor still works (but deprecated) if we are ↵ | Jon Leighton | 2011-11-29 | 1 | -7/+55 | |
| | | | | using self.foo= | |||||
* | Deprecate set_sequence_name in favour of self.sequence_name= | Jon Leighton | 2011-11-29 | 2 | -3/+7 | |
| | ||||||
* | Add tests for set_sequence_name etc | Jon Leighton | 2011-11-29 | 1 | -0/+22 | |
| | ||||||
* | Deprecate set_inheritance_column in favour of self.inheritance_column= | Jon Leighton | 2011-11-29 | 3 | -5/+11 | |
| | ||||||
* | Deprecate set_table_name in favour of self.table_name= or defining your own ↵ | Jon Leighton | 2011-11-29 | 16 | -39/+52 | |
| | | | | method. | |||||
* | respond_to? information of AR is not the responsibility of the spec | Aaron Patterson | 2011-11-29 | 1 | -1/+1 | |
| | | | | resolver. | |||||
* | Merge pull request #3636 from joshsusser/master | Jon Leighton | 2011-11-29 | 5 | -2/+50 | |
|\ | | | | | association methods are now generated in modules | |||||
| * | don't change class definition in test case | Josh Susser | 2011-11-29 | 2 | -6/+4 | |
| | | ||||||
| * | use GeneratedFeatureMethods module for associations | Josh Susser | 2011-11-27 | 3 | -2/+30 | |
| | | ||||||
| * | add test for super-ing to association methods | Josh Susser | 2011-11-15 | 1 | -2/+12 | |
| | | ||||||
| * | association methods are now generated in modules | Josh Susser | 2011-11-15 | 1 | -0/+12 | |
| | | | | | | | | | | | | | | | | | | | | Instead of generating association methods directly in the model class, they are generated in an anonymous module which is then included in the model class. There is one such module for each association. The only subtlety is that the generated_attributes_methods module (from ActiveModel) must be forced to be included before association methods are created so that attribute methods will not shadow association methods. | |||||
* | | Fix resolver_test.rb on travis (postgresql isn't setup, so it can't load the ↵ | Jon Leighton | 2011-11-29 | 1 | -6/+6 | |
| | | | | | | | | connection adapter) | |||||
* | | Fix schema_cache_test.rb for sqlite3_mem | Jon Leighton | 2011-11-29 | 1 | -6/+0 | |
| | | ||||||
* | | Move connection resoluion logic to it's own testable class. | Aaron Patterson | 2011-11-28 | 2 | -34/+41 | |
| | | ||||||
* | | pools are 1:1 with spec now rather than 1:1 with class | Aaron Patterson | 2011-11-28 | 2 | -3/+0 | |
| | | ||||||
* | | break establish_connection to smaller methods | Aaron Patterson | 2011-11-28 | 1 | -3/+3 | |
| | | ||||||
* | | Merge pull request #3768 from janv/master | Aaron Patterson | 2011-11-28 | 1 | -0/+11 | |
|\ \ | | | | | | | Test and fix for Issue 3450 | |||||
| * | | Test case and fix for rails/rails#3450 | Jan Varwig | 2011-11-27 | 1 | -0/+11 | |
| | | | | | | | | | | | | Asssigning a parent id to a belongs_to association actually updates the object that is validated when the association has :validates => true | |||||
* | | | Merge pull request #3748 from samsonasu/has_many_custom_pk_new_record | Jon Leighton | 2011-11-27 | 1 | -1/+28 | |
|\ \ \ | |/ / |/| | | New records should load has_many relationships with custom primary keys | |||||
| * | | load has_many associations keyed off a custom primary key if that key is ↵ | Brian Samson | 2011-11-25 | 1 | -1/+28 | |
| | | | | | | | | | | | | present but the record is unsaved |