| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Add schema cache to new connection pool after fork
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | | |
Divide methods for handling column options separately
|
| |/ |
|
|\ \
| | |
| | | |
Fix `serial?` with quoted sequence name
|
| |/ |
|
|/
|
|
|
|
|
|
|
| |
This patch
- reduces the duplication among the `reference`-family methods.
- better explains all the optians available for `add_reference`.
- redirects to user from `references` to `add_reference`.
Originated by #20184.
|
|\
| |
| | |
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.
|
|/ |
|
| |
|
| |
|
|
|
|
|
| |
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.
|
|\ \ \
| | | |
| | | |
| | | | |
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`.
|
| | | |
| | | |
| | | |
| | | | |
Follow up #18914.
|
|/ / /
| | |
| | |
| | |
| | | |
Its nodoc'ed for the other implementations, and doc'ed in the base
class, just like the other change_column* methods.
|
|/ /
| |
| |
| |
| |
| | |
`change_column_null` is doc'ed only in
ActiveRecord::ConnectionAdapters::SchemaStatements, so it would make
sense to :nodoc: it elsewhere.
|
|\ \
| | |
| | | |
Nodoc validate_index_length! method
|
| |/
| |
| |
| | |
- This method is used only by adapters to validate length of new index names.
|
|/
|
|
|
|
| |
- Added documentation for index_name_exists? and rename_index.
- Also changed rails to \Rails in documentation of
allowed_index_name_length.
|
|
|
|
| |
Also added reference for to_date, as it belongs historically.
|
|
|
|
| |
follow up to 107526e809ea2b6de8b2775ecf83e55d60833206
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The `index` option used with `timestamps` should be passed to both
`column` definitions for `created_at` and `updated_at` rather than just
the first.
This was happening because `Hash#delete` is used to extract the `index`
option passed to `timestamps`, thereby mutating the `options` hash
in-place. Now take a copy of the `options` before deleting so that the
original is not modified.
|
|
|
|
| |
Fixes #18106
|
|
|
|
|
|
| |
We should document current behavior, and this is design of API for now.
Closes #17597
|
|
|
|
|
|
| |
The implementation of the generation of the foreign key name was changed
between Rails 4.2.0 and 4.2.1 from a random to a deterministic behavior,
however the documentation still describes the old randomized behavior.
|
|\
| |
| |
| | |
Add charset and collation options support for MySQL string and text columns.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
columns
Example:
create_table :foos do |t|
t.string :string_utf8_bin, charset: 'utf8', collation: 'utf8_bin'
t.text :text_ascii, charset: 'ascii'
end
|