aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | Setting an association replaces records with the same id in memorySean Griffin2014-11-252-2/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The records weren't being replaced since equality in Active Record is defined in terms of `id` only. It is reasonable to expect that the references would be replaced in memory, even if no queries are actually executed. This change did not appear to affect any other parts of the code base. I chose not to execute callbacks since we're not actually modifying the association in a way that will be persisted. Fixes #17730
* | | | | Merge pull request #17754 from eileencodes/refactor-aliased_table_forSantiago Pastorino2014-11-252-13/+4
|\ \ \ \ \ | |/ / / / |/| | | | Combine aliased_table_for and aliased_name_for
| * | | | Combine aliased_table_for and aliased_name_foreileencodes2014-11-242-13/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This refactoring reduces the number of conditionals needed to build `aliased_table_for` and removes `aliased_name_for` because it's no longer necessary. `aliased_name_for` was also used in `JoinDependency#initialize` so that was replaced with `aliased_table_for` as well.
* | | | | Fix out of range error messageRyuta Kamizono2014-11-251-1/+1
|/ / / /
* | | | allow types to be passed in for USING castsAaron Patterson2014-11-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us so abstract the migration from the type that is actually used by Rails. For example, ":string" may be a varchar or something, but the framework does that translation, and the app shouldn't need to know.
* | | | oops, forgot to add the real assertion!Aaron Patterson2014-11-241-0/+1
| | | |
* | | | allow the "USING" statement to be specified on change column callsAaron Patterson2014-11-242-1/+28
| | | |
* | | | Merge pull request #17682 from ReneB/docs/update_allRafael Mendonça França2014-11-241-5/+5
|\ \ \ \ | | | | | | | | | | Explain that default_scope also influences update_all
| * | | | Reword documentation for update_allRené van den Berg2014-11-241-8/+1
| | | | | | | | | | | | | | | It now contains a carefully formulated reference to the "current relation" which might help clarify that the receiving will generate its own scope, escaping the need for explicitly referencing `default_scope` which is, after all, just another way of specifying a scope and nothing special.
| * | | | Explain that default_scope also influences update_allRené van den Berg2014-11-201-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | This was not explicitly stated before and I needed to try it out to be certain. A little explicit statement in the API docs might help here.
* | | | | Mark comments that should not be in the docsclaudiob2014-11-244-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some comments that are meant to separate blocks of code in a file show up on http://api.rubyonrails.org as though they were part of the documentation. This commit hides those comments from the documentation. Stems from the discussion with @zzak at https://github.com/voloko/sdoc/issues/79#issuecomment-64158738 [ci skip]
* | | | | Ensure the type map's cache is thread safeSean Griffin2014-11-241-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | Thanks to @thedarkone for pointing out that an instance of this object is used in a shared context.
* | | | | Merge pull request #17678 from siddharth28/includes_with_scope_with_joinsSantiago Pastorino2014-11-245-12/+17
|\ \ \ \ \ | | | | | | | | | | | | Fix includes on association with a scope
| * | | | | Fix includes on association with a scope containing joins along with conditionssiddharth@vinsol.com2014-11-215-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | on the joined assoiciation
* | | | | | cleanup, remove trailing whitespace [ci skip]Yves Senn2014-11-241-2/+2
| | | | | |
* | | | | | Add a test for reflection keys as Strings, fixes #16928Zachary Scott2014-11-231-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | See also PR: #17610
* | | | | | Update reflections public API docArthur Neves2014-11-221-1/+1
| | | | | |
* | | | | | Add changelog entry for .reflections API changeArthur Neves2014-11-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `.reflections` public API changed to return a String instead of a Symbol as keys. see commit 1f31488499111fdfce79d8dc1cc8fb008f7cdb25 and 6259e4e2dcca9a79f22f96658c33efe81936bc0d [fixes #16928] [fixes #17610]
* | | | | | Fix build failuresSean Griffin2014-11-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some reason changing `.find` to `.unscoped.find` in https://github.com/rails/rails/commit/f766abd4cf3eb75469d3646cfb6d85e668c619f3 caused `scoping` to leak in some tests when run in isolation (looks like a concurrency issue?). `relation_scoping_test.rb` is a case that failed. From what I can tell it should not be possible, but changing to the block form fixes it. There is a deeper issue that I can't seem to find. /cc @senny
* | | | | | Rename the primary key index when renaming a table in pgSean Griffin2014-11-223-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also checked to make sure this does not affect foreign key constraints. (It doesn't). Fixes #12856 Closes #14088
* | | | | | ConnectionAdapter#substitute_at is technically public API...Sean Griffin2014-11-211-1/+1
|/ / / / / | | | | | | | | | | | | | | | We can't change the signature without a deprecation cycle.
* | | | | make it possible to access fixtures excluded by a `default_scope`.Yves Senn2014-11-214-1/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this patch you'd end up with an error like: ``` ActiveRecord::RecordNotFound: Couldn't find <Model> with 'id'=<id> [WHERE (<default_scope condition>)] ```
* | | | | Merge pull request #17695 from claudiob/replace-all-backticks-with-plusesYves Senn2014-11-214-6/+6
|\ \ \ \ \ | | | | | | | | | | | | Wrap code snippets in +, not backticks, in sdoc [ci skip]
| * | | | | Wrap code snippets in +, not backticks, in sdocclaudiob2014-11-204-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I grepped the source code for code snippets wrapped in backticks in the comments and replaced the backticks with plus signs so they are correctly displayed in the Rails documentation. [ci skip]
* | | | | | raise a better exception for renaming long indexesAaron Patterson2014-11-203-0/+20
|/ / / / /
* | | | | Merge pull request #17669 from SamSaffron/optimise_memorySean Griffin2014-11-201-1/+6
|\ \ \ \ \ | | | | | | | | | | | | PERF: avoid string allocations
| * | | | | PERF: avoid string allocationsSam2014-11-201-1/+6
| | | | | |
* | | | | | synchronize code and docs for `timestamps` and `add_timestamps`.Yves Senn2014-11-206-10/+22
| |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the following changes: * warn if `:null` is not passed to `add_timestamps` * `timestamps` method docs link to `add_timestamps` docs * explain where additional options go * adjust examples to include `null: false` (to prevent deprecation warnings)
* | | | | Merge pull request #17575 from shikshachauhan/make-habtm-consistentRafael Mendonça França2014-11-192-1/+11
|\ \ \ \ \ | |_|/ / / |/| | | | Allow class_name option in habtm to be consistent with other association...
| * | | | Allow habtm class_name option to be consistent with other associationsshiksha2014-11-132-1/+11
| | | | |
* | | | | Reintroduce cache with testsSean Griffin2014-11-193-14/+56
| | | | |
* | | | | Add tests for `TypeMap#fetch` and push up to `TypeMap`Sean Griffin2014-11-193-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't make sense for the subclass to implement this method, and not have it on the parent. We can also DRY up the implementation of `#lookup` to be defined in terms of fetch, which will give us a single point of entry
* | | | | That last test was incorrect... ☕Sean Griffin2014-11-191-10/+0
| | | | |
* | | | | Revert "PERF: optimise type lookup to avoid invoking procs"Sean Griffin2014-11-192-32/+8
| | | | | | | | | | | | | | | | | | | | This reverts commit da99a2a2982d35f670ad9647463e09bfe9032b70.
* | | | | Introduce test to demonstrate regression caused by da99a2a2Sean Griffin2014-11-191-0/+10
| | | | |
* | | | | Merge pull request #17662 from ↵Rafael Mendonça França2014-11-192-1/+9
|\ \ \ \ \ | |_|_|/ / |/| | | | | | | | | | | | | | dtaniwaki/support-symbol-foreign-key-column-to-delete Support symbol foreign key to delete
| * | | | Support symbol foreign key to deletedtaniwaki2014-11-192-1/+9
| | | | |
| * | | | Revert "[PERF] Speed up integer type casting from DB"Godfrey Chan2014-11-171-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6f7910a and 52c70d4. Query params are type cased through the same method, so this approach doesn't work.
| * | | | :nail_care: Put escape clause first, keeps @sgrif happy :grin:Godfrey Chan2014-11-171-1/+2
| | | | | | | | | | | | | | | | | | | | See comment on 6f7910a
| * | | | [PERF] Speed up integer type casting from DBGodfrey Chan2014-11-171-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't have the check the range when the value is coming from the DB, so override type_cast_from_database to short-circuit the extra work. type_cast_from_database (small) 3437507.5 (±29.2%) i/s - 14223135 in 4.996973s type_cast_from_database (large) 3158588.7 (±28.3%) i/s - 13265628 in 4.992121s type_cast (small) 481984.8 (±14.2%) i/s - 2352012 in 5.005694s type_cast (large) 477331.8 (±14.2%) i/s - 2332824 in 5.012365s Comparison: type_cast_from_database (small): 3437507.5 i/s type_cast_from_database (large): 3158588.7 i/s - 1.09x slower type_cast (small): 481984.8 i/s - 7.13x slower type_cast (large): 477331.8 i/s - 7.20x slower The difference is huge but the absolute gain is quite small. That being said this is a hotspot and it showed up on the radar when benchmarking discourse.
* | | | | Improve the performance of reading attributesSean Griffin2014-11-1812-18/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We added a comparison to "id", and call to `self.class.primary_key` a *lot*. We also have performance hits from `&block` all over the place. We skip the check in a new method, in order to avoid breaking the behavior of `read_attribute`
* | | | | pull the preloader allocation in to a factory methodAaron Patterson2014-11-181-1/+5
| | | | |
* | | | | Speed up integer casting from DBSean Griffin2014-11-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't have the check the range when the value is coming from the DB, so override type_cast_from_database to short-circuit the extra work. The difference is huge but the absolute gain is quite small. That being said this is a hotspot and it showed up on the radar when benchmarking discourse.
* | | | | Remove needless call to `key?` when building attributesSean Griffin2014-11-181-2/+4
| | | | | | | | | | | | | | | | | | | | This appears to be a performance hotspot, see #17655.
* | | | | LazyAttributeHash is privateSean Griffin2014-11-181-1/+1
| | | | |
* | | | | Remove call to `key?` in `LazyAttributeHash#[]`Sean Griffin2014-11-181-5/+1
| |_|/ / |/| | | | | | | | | | | Performance improvement, as well as improved code clarity
* | | | PERF: stop allocating the string "id" over and overSam2014-11-181-1/+3
|/ / /
* | | Remove the unused second argument to `substitute_at`Sean Griffin2014-11-1711-25/+12
| | | | | | | | | | | | Oh hey, we got to remove some code because of that!
* | | rm `reorder_bind_params`Sean Griffin2014-11-179-25/+7
| | | | | | | | | | | | | | | | | | Arel handles this for us automatically. Updated tests, as BindParam is no longer a subclass of SqlLiteral. We should remove the second argument to substitute_at entirely, as it's no longer used
* | | Force table creation in testsSean Griffin2014-11-171-2/+2
| | | | | | | | | | | | | | | | | | If something causes the teardown block to not get run (errors, interrupting test runs), we have to manually delete them, which is a pain.