| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
| |
[ci skip]
|
| |
|
|\
| |
| | |
ActiveRecord initialization optimizations
|
| |
| |
| |
| |
| |
| | |
This change preserves the speedup made in a24912cb1d3 (by avoiding
the wasted shallow dup of @attributes) while ensuring that the
performance of #deep_dup won't be tied to the performance of #initialize
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Memoize the #column_defaults class property, as ActiveRecord does
for other properties in this module.
This change addresses slowness in ActiveRecord initialization
introduced starting in Rails 5.0. This method's performance has not
changed with Rails 5, but it is now called much more frequently than
before: every time an STI model is instantiated.
|
| |
| |
| |
| |
| | |
This change addresses slowness in ActiveRecord initialization
introduced starting in Rails 5.0.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Skip the call to #dup, since it does a shallow copy of attributes,
which is wasted effort, since #deep_dup then replaces that
shallow copy with a #deep_dup of the given attributes.
This change addresses slowness in ActiveRecord initialization
introduced starting in Rails 5.0.
|
|\ \
| | |
| | | |
Add a Monitor to ModelSchema#load_schema
|
| |/
| |
| |
| | |
[Vikrant Chaudhary, David Abdemoulaie, Matthew Draper]
|
|\ \
| |/
|/| |
Fix crashing on circular left join references with scoping
|
| |
| |
| |
| | |
Follow up of #25702.
|
|/ |
|
|\
| |
| | |
Both reference id and type should be `NOT NULL` if `null: false` is specified
|
| |
| |
| |
| |
| |
| | |
This is a regression due to #28282.
Fixes #29136.
|
|\ \
| | |
| | | |
Adding Foreing Key - Don't worry about building the identifier if name is already present.
|
| | |
| | |
| | |
| | | |
present.
|
|\ \ \
| | | |
| | | | |
Remove unused `JoinPart#name`
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Remove unused `left_joins_values` generation
|
| |/ / /
| | | |
| | | |
| | | | |
This was added at #22125 but `left_joins_values` is never used.
|
|\ \ \ \
| | | | |
| | | | | |
Refactor making join constraints
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
The only difference between `make_inner_joins` and
`make_left_outer_joins` is the `join_type`.
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Make `VALID_DIRECTIONS` to `Set`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
```ruby
require "benchmark/ips"
require "set"
array = [:asc, :desc, :ASC, :DESC, "asc", "desc", "ASC", "DESC"]
set = array.to_set
item = "DESC"
Benchmark.ips do |x|
x.report "array" do
array.include?(item)
end
x.report "set" do
set.include?(item)
end
end
```
```
% ruby array_vs_set.rb
Warming up --------------------------------------
array 188.441k i/100ms
set 229.531k i/100ms
Calculating -------------------------------------
array 3.508M (± 9.0%) i/s - 17.525M in 5.043058s
set 5.134M (± 7.6%) i/s - 25.707M in 5.038921s
```
|
|/ / / |
|
| |/
|/|
| |
| |
| |
| | |
This retains the existing behavior of
ActiveSupport::Cache.expand_cache_key (as used by etaging) where the
cache key includes the version.
|
| | |
|
| |
| |
| |
| |
| | |
Since 86390c3 all associations have `reset_scope` so `respond_to?` is
unneeded.
|
| |
| |
| |
| |
| |
| |
| | |
The object inside the scope is of the class that define the association
not the associated class.
[ci skip]
|
| |
| |
| |
| |
| |
| | |
* Use NOT IN in SQL query
* Quote table names propertly
* Use array form of command invocation
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
When using `sql` as the schema format, or even just doing `rake
db:structure:dump`, it would be good to respect the list of ignored
tables that has been configured.
|
|\ \
| | |
| | |
| | |
| | | |
meinac/fix_ambigious_exception_message_of_select_query_method
Fix ambigious error message of select query method [ci skip]
|
| | | |
|
|\ \ \
| | | |
| | | | |
Don't eager loading if unneeded for `FinderMethods#exists?`
|
| | |/
| |/|
| | |
| | | |
Fixes #29025.
|
|/ /
| |
| |
| |
| |
| | |
Because we don't need to load tasks for DBs that we don't use for the current app.
Also, these Tasks classes load AR::Base in their class level, and so immediately kick :active_record on_load hooks.
This used to happen when we were loading tasks, not when we run a task.
|
|\ \
| | |
| | | |
Clarify deprecation message for #quoted_id
|
| | |
| | |
| | |
| | |
| | | |
In this case, it's the method definition that's more at fault, rather
than the current caller.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The argument of `Arel::SelectManager.new` is `table`, not `engine`.
https://github.com/rails/arel/blob/v8.0.0/lib/arel/select_manager.rb#L10
|
|/ /
| |
| |
| | |
Since through association is always loaded by `preloader.preload`.
|
| |
| |
| |
| |
| | |
Since we have been using this `Arel::Table` since 111ccc832bc977b15af12c14e7ca078dad2d4373,
in order to properly handle queries, it's important that we properly type cast arguments.
|
|\ \
| | |
| | | |
Deprecate `supports_statement_cache?`
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
`supports_statement_cache?` was introduced in 3.1.0.beta1 (104d0b2) for
bind parameter substitution, but it is no longer used in 3.1.0.rc1
(73ff679). Originally it should respect `prepared_statements` rather
than `supports_statement_cache?` (fd39847).
One more thing, named `supports_statement_cache?` is pretty misreading.
We have `StatementCache` and `StatementPool`. However,
`supports_statement_cache?` doesn't mean `StatementCache`, but
`StatementPool` unlike its name.
https://github.com/rails/rails/blob/v5.1.0/activerecord/lib/active_record/statement_cache.rb
https://github.com/rails/rails/blob/v5.1.0/activerecord/lib/active_record/connection_adapters/statement_pool.rb
|
|/ / |
|
| |
| |
| |
| | |
Fix #28905
|
|/ |
|