| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
[ci skip] Fix typos
|
|/ |
|
|
|
|
|
|
|
| |
That is happened with `distinct`, and that is not only happened on MyS
L, but also on PostgreSQL, SQL Server, and Oracle.
[ci skip]
|
| |
|
| |
|
|\
| |
| | |
[ci skip]Fix typo: constaint -> constraint
|
|/ |
|
|\
| |
| | |
Fix including/excluding flattening
|
| | |
|
|\ \
| | |
| | | |
Update links and code examples in the guides to use HTTPS
|
| |/
| |
| |
| | |
supports it.
|
| | |
|
|\ \
| | |
| | | |
Load YAML for rake tasks without parsing ERB
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This change adds a new method that loads the YAML for the database
config without parsing the ERB. This may seem odd but bear with me:
When we added the ability to have rake tasks for multiple databases we
started looping through the configurations to collect the namespaces so
we could do `rake db:create:my_second_db`. See #32274.
This caused a problem where if you had `Rails.config.max_threads` set in
your database.yml it will blow up because the environment that defines
`max_threads` isn't loaded during `rake -T`. See #35468.
We tried to fix this by adding the ability to just load the YAML and
ignore ERB all together but that caused a bug in GitHub's YAML loading
where if you used multi-line ERB the YAML was invalid. That led us to
reverting some changes in #33748.
After trying to resolve this a bunch of ways `@tenderlove` came up with
replacing the ERB values so that we don't need to load the environment
but we also can load the YAML.
This change adds a DummyCompiler for ERB that will replace all the
values so we can load the database yaml and create the rake tasks.
Nothing else uses this method so it's "safe".
DO NOT use this method in your application.
Fixes #35468
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Although the old name had a certain persistence, this ain't the kind of
file we're in now.
|
| | | |
|
| |/
|/|
| |
| |
| |
| |
| | |
Foreign keys could be created to the same table.
So `remove_foreign_key :from_table, :to_table` is sometimes ambiguous.
This allows `remove_foreign_key` to remove the select one on the same
table with giving both `to_table` and `options`.
|
|\ \
| | |
| | | |
[ci skip] Fix typo `beacuse` -> `because`
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To avoid newly adding the warnings, which are frequently addressed.
ac721c855203ac7570545c0e85fe086f8e94d94a
951383bd9afa4a71c17e56d1d4eb5866da851483
8a0f235fd3bd3f3c813fa7034c6d741831e55c3e
c33c03e80cbe9f27274b45fe55f93bad3af988fb
424b2019830ea4c08e86ba9ff9600aa23a54cb4f
|
| |
| |
| |
| | |
https://github.com/rails/rails/pull/35451#discussion_r262746834
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since #23461, all adapters supports prepared statements, so that clears
the prepared statements cache is no longer database specific.
Actually, I struggled to identify the cause of random CI failure in
#23461, that was missing `@statements.clear` in `clear_cache!`.
This extracts `clear_cache!` to ensure the common concerns in the
abstract adapter.
|
|/ /
| |
| |
| | |
Enumerable#excluding
|
|/
|
|
|
| |
Adds a method to ActiveRecord allowing records to be inserted in bulk without instantiating ActiveRecord models. This method supports options for handling uniqueness violations by skipping duplicate records or overwriting them in an UPSERT operation.
ActiveRecord already supports bulk-update and bulk-destroy actions that execute SQL UPDATE and DELETE commands directly. It also supports bulk-read actions through `pluck`. It makes sense for it also to support bulk-creation.
|
|
|
|
|
|
|
|
|
| |
Most existing tests expects `connection_handlers` has only one default
handler, but the test added at #34779 dirties that.
We need to reset `connection_handlers` to default in that case.
Closes #35471.
|
| |
|
|\
| |
| |
| |
| | |
Fix Getting Started guide to state the correct number of files created by the controller generator
[ci skip]
|
| |
| |
| |
| |
| |
| |
| |
| | |
In e8546aba904fb6685ef2e61f1623c64e699a2c9c, the Getting Started guide
was updated to reflect the removal of CoffeeScript stubs being generated
by the controller generator. However, the comment above the table of
generated files wasn't updated, so it incorrectly remained "This creates
five files and one empty directory". This fixes it to now say "This
creates four files and one empty directory".
|
|\ \
| |/
|/| |
Fix typo in test name
|
|/ |
|
|\
| |
| | |
Copy the forking isolated test runner from railties
|
| | |
|
| |
| |
| |
| |
| |
| | |
All the tests have a substantial chunk of identical setup effort (in
cases/helper.rb); this makes isolated tests run much faster, without any
change to the variety of how we load files.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Add `ActiveRecord::Base.connection.truncate` for SQLite3 adapter.
SQLite doesn't support `TRUNCATE TABLE`, but SQLite3 adapter can support
`ActiveRecord::Base.connection.truncate` by using `DELETE FROM`.
`DELETE` without `WHERE` uses "The Truncate Optimization",
see https://www.sqlite.org/lang_delete.html.
* Add `rails db:seed:replant` that truncates database tables and loads the seeds
Closes #34765
|
|\ \
| | |
| | | |
Fix typo in CHANGELOG.md [ci skip]
|
|/ / |
|
|\ \
| | |
| | |
| | |
| | | |
kamipo/deprecate_validate_uniqueness_mismatched_collation
Deprecate mismatched collation comparison for uniquness validator
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In MySQL, the default collation is case insensitive. Since the
uniqueness validator enforces case sensitive comparison by default, it
frequently causes mismatched collation issues (performance, weird
behavior, etc) to MySQL users.
https://grosser.it/2009/12/11/validates_uniqness_of-mysql-slow/
https://github.com/rails/rails/issues/1399
https://github.com/rails/rails/pull/13465
https://github.com/gitlabhq/gitlabhq/commit/c1dddf8c7d947691729f6d64a8ea768b5c915855
https://github.com/huginn/huginn/pull/1330#discussion_r55152573
I'd like to deprecate the implicit default enforcing since I frequently
experienced the problems in code reviews.
Note that this change has no effect to sqlite3, postgresql, and
oracle-enhanced adapters which are implemented as case sensitive by
default, only affect to mysql2 adapter (I can take a work if sqlserver
adapter will support Rails 6.0).
|
|\ \
| | |
| | |
| | |
| | | |
bogdanvlviv/move-changelog-entry-about-reselect-method
Move changelog entry about `reselect` method to the section of the next release [ci skip]
|
|/ /
| |
| |
| |
| |
| |
| | |
Fixes https://github.com/rails/rails/pull/33611#discussion_r261549790
Related to https://3.basecamp.com/3076981/buckets/24956/chats/12416418@1631552581
[ci skip]
|
| |
| |
| |
| | |
Ref: https://travis-ci.org/rails/rails/jobs/501220262#L1194
|
| |
| |
| | |
Similarly to https://github.com/rails/webpacker/pull/1976
|
|\ \
| | |
| | | |
Fixed reselect throwing NoMethodError on ActiveRecord.
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Remove unnecessary `current_adapter?(:OracleAdapter)` for index length
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Follow up #35455, there are two more test cases unnecessary `if current_adapter?(:OracleAdapter)`
```ruby
$ ARCONN=oracle bin/test test/cases/associations/eager_test.rb -n test_include_has_many_using_primary_key
Using oracle
Run options: -n test_include_has_many_using_primary_key --seed 62842
.
Finished in 50.280024s, 0.0199 runs/s, 0.0398 assertions/s.
1 runs, 2 assertions, 0 failures, 0 errors, 0 skips
$
```
```
$ ARCONN=oracle bin/test test/cases/migration/index_test.rb -n test_add_index
Using oracle
Run options: -n test_add_index --seed 52034
.
Finished in 13.152620s, 0.0760 runs/s, 0.0000 assertions/s.
1 runs, 0 assertions, 0 failures, 0 errors, 0 skips
$
```
|
|\ \
| | |
| | | |
Oracle database can run `delete` with `order by` and`fetch first n rows only`
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
rows only`
Since https://github.com/rails/arel/pull/337 Oracle adapter uses better
top N query using `fetch first n rows only`, which can remove this
unless condition.
* This commit passes with Oracle database
```ruby
$ ARCONN=oracle bin/test test/cases/relation/delete_all_test.rb -n test_delete_all_with_order_and_limit_deletes_subset_only
Using oracle
Run options: -n test_delete_all_with_order_and_limit_deletes_subset_only --seed 1081
.
Finished in 8.068626s, 0.1239 runs/s, 0.6197 assertions/s.
1 runs, 5 assertions, 0 failures, 0 errors, 0 skips
$
```
* SQL statement includes `ORDER BY` and `FETCH FIRST n ROWS ONLY`
```sql
Post Destroy (12.5ms) DELETE FROM "POSTS" WHERE "POSTS"."ID" IN (SELECT "POSTS"."ID" FROM "POSTS" WHERE "POSTS"."AUTHOR_ID" = :a1 ORDER BY "POSTS"."ID" ASC FETCH FIRST :a2 ROWS ONLY) [["author_id", 1], ["LIMIT", 1]]
```
|