| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Active Record detects when the process has forked and automatically
creates a new connection pool to avoid sharing file descriptors.
If the existing connection pool had a schema cache associated with it,
the new pool should copy it to avoid unnecessarily querying the database
for its schema.
The code to detect that the process has forked is in ConnectionHandler,
but the existing test for it was in the ConnectionManagement test file.
I moved it to the right place while I was writing the new test for this
change.
|
|\
| |
| | |
Reducing AR::ConPool's critical (synchronized) section
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Renamed `@reserved_connections` -> `@thread_cached_conns`. New name
clearly conveys the purpose of the cache, which is to speed-up
`#connection` method.
The new `@thread_cached_conns` now also uses `Thread` objects as keys
(instead of previously `Thread.current.object_id`).
Since there is no longer any synchronization around
`@thread_cached_conns`, `disconnect!` and `clear_reloadable_connections!`
methods now pre-emptively obtain ownership (via `checkout`) of all
existing connections, before modifying internal data structures.
A private method `release` has been renamed `thread_conn_uncache` to
clear-up its purpose.
Fixed some brittle `thread.status == "sleep"` tests (threads can go
into sleep even without locks).
|
| | |
|
| |
| |
| |
| | |
Move post checkout connection verification out of mutex.synchronize.
|
| | |
|
|\ \
| |/
|/| |
[ci skip] Remove comments about Rails 3.1
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Stems from https://github.com/rails/rails/pull/20105#issuecomment-100900939
where @senny said:
> From my point of view, all the docs (guides, API) are version bound.
> They should describe that version and continue to be available when newer versions are released.
> The cross referencing can be done by the interested user.
|
|\ \
| | |
| | | |
Remove call to sanitize_sql_hash_for_conditions
|
| | | |
|
| |/
| |
| |
| | |
This method has already been removed.
|
| |
| |
| |
| |
| |
| |
| | |
This can resolve confusing situation when a top level constant exists
but a namespaced version is identified.
Related to #19531.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
https://github.com/agrobbin/rails into agrobbin-sti-subclass-from-attributes
Conflicts:
activerecord/CHANGELOG.md
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If your STI class looks like this:
```ruby
class Company < ActiveRecord::Base
self.store_full_sti_class = false
class GoodCo < Company
end
class BadCo < Company
end
end
```
The expectation (which is valid) is that the `type` in the database is saved as
`GoodCo` or `BadCo`. However, another expectation should be that setting `type`
to `GoodCo` would correctly instantiate the object as a `Company::GoodCo`. That
second expectation is what this should fix.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Add full set of MySQL CLI options to support SSL authentication when using db:structure dump and load
|
| | |/
| |/|
| | |
| | | |
db:structure dump and load
|
|\ \ \
| | | |
| | | | |
Add more detailed comment about _assign_attribute method [ci skip]
|
| |/ /
| | |
| | |
| | | |
fix minor problems
|
|/ / |
|
|/ |
|
|
|
|
|
| |
Now that master points at Rails 5, we might not need to explain how
things used to work in Rails 3. Or we might… up to you :grin:
|
| |
|
|
|
|
| |
the module name was changed in 8e814a0ac0768816974d2bfd68d33d931592751e
|
|
|
|
|
| |
Its already doc'ed in
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
|
|\
| |
| | |
make AbstractAdapter#subquery_for private
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Use `select_value` for avoid `ActiveRecord::Result` instance creating
|
| | |
| | |
| | |
| | |
| | | |
`exec_query` create `ActiveRecord::Result` instance. It is better to use
`select_value` instead of `exec_query` for performance.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/use_select_rows_instead_of_select_one_in_select_values
Use `select_rows` instead of `select_one` in `select_value`
|
| |/ /
| | |
| | |
| | |
| | | |
`select_one` create `ActiveRecord::Result` instance. It is better to use
`select_rows` instead of `select_one` for performance.
|
|\ \ \
| |/ /
|/| | |
Apply schema cache dump when creating connections
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The `db:schema:cache:dump` rake task dumps the database schema structure
to `db/schema_cache.dump`. If this file is present, the schema details
are loaded into the currently checked out connection by a railtie while
Rails is booting, to avoid having to query the database for its schema.
The schema cache dump is only applied to the initial connection used to
boot the application though; other connections from the same pool are
created with an empty schema cache, and still have to load the structure
of each table directly from the database.
With this change, a copy of the schema cache is associated with the
connection pool and applied to connections as they are created.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
MySQL does not support partial index. And, the create index algorithm in
create table can not be specified.
|
|\ \ \
| | | |
| | | |
| | | | |
Dump indexes in `create_table` instead of `add_index`
|
| | | |
| | | |
| | | |
| | | |
| | | | |
If the adapter supports indexes in create table, generated SQL is
slightly more efficient.
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
yuki24/change-record-not-saved-and-not-destroyed-to-include-error-msg
AR::RecordNotSaved & RecordNotDestroyed from save!/destroy! should include an error message
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When `AR::Base.save!` or `AR::Base.destroy!` is called and an exception
is raised, the exception doesn't have any error message or has a weird
message like `#<FailedBulb:0x0000000907b4b8>`. Give a better message so
we can easily understand why it's failing to save/destroy.
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
Correctly dump `:options` on `create_table` for MySQL
|
| |/ / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
PostgreSQL: `:collation` support for string and text columns
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Example:
create_table :foos do |t|
t.string :string_en, collation: 'en_US.UTF-8'
t.text :text_ja, collation: 'ja_JP.UTF-8'
end
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Some databases like MySQL allow defining collation charset for specific
columns.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Change the `visit_AddColumn` visiblity for the internal API
|
| | |_|/ / /
| |/| | | | |
|
| |/ / / /
|/| | | | |
|
|\ \ \ \ \
| |_|_|_|/
|/| | | | |
Move comment about microseconds [ci skip]
|
| |/ / /
| | | |
| | | |
| | | | |
The microseconds handling was already moved to `Quoting#quoted_date`.
|