| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
| | | |
| | | |
| | | | |
This makes to ease testing `QUERYING_METHODS`.
|
|/ / / |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
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`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
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.
|
| | |
|
|\ \
| | |
| | | |
Copy the forking isolated test runner from railties
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* 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
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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).
|
|\ \ \
| | | |
| | | | |
Fixed reselect throwing NoMethodError on ActiveRecord.
|
| | | | |
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]]
```
|
|\ \ \ \
| | | | |
| | | | | |
Rails `DateTime` type is mapped to Oracle `TIMESTAMP` since Rails 5.0
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Kind of reverting https://github.com/rails/rails/commit/3a1cbc5c3b3bcb2de4be6e4469bb87b99759dc59
```
From: test/cases/date_test.rb @ line 26 :
21:
22: invalid_dates = [[2007, 11, 31], [1993, 2, 29], [2007, 2, 29]]
23:
24: valid_dates.each do |date_src|
25: topic = Topic.new("last_read(1i)" => date_src[0].to_s, "last_read(2i)" => date_src[1].to_s, "last_read(3i)" => date_src[2].to_s)
=> 26: binding.irb
27: assert_equal(topic.last_read, Date.new(*date_src))
28: end
29:
30: invalid_dates.each do |date_src|
31: assert_nothing_raised do
irb(#<DateTest:0x0000556618194668>):001:0> topic.last_read.class
=> Date
```
Refer rsim/oracle-enhanced#845
rails/rails#25897
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
```ruby
$ ARCONN=oracle bin/test test/cases/migration/columns_test.rb -n test_rename_column_with_multi_column_index
... snip ...
F
Failure:
ActiveRecord::Migration::ColumnsTest#test_rename_column_with_multi_column_index [/home/yahonda/git/rails/activerecord/test/cases/migration/columns_test.rb:113]:
--- expected
+++ actual
@@ -1 +1 @@
-["i_test_models_hat_style_size"]
+["index_test_models_on_hat_style_and_size"]
```
Kind of reverting #9395
Refer https://github.com/rsim/oracle-enhanced/pull/1703
|
| | |
| | |
| | |
| | |
| | | |
This was using a model without a default scope what made the test don't
break anymore if the code is removed.
|
|\ \ \
| | | |
| | | | |
Relax table name detection in `from` to allow any extension like INDEX hint
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
#35360 allows table name qualified if `from` has original table name.
But that is still too strict. We have a valid use case that `from` with
INDEX hint (e.g. `from("comments USE INDEX (PRIMARY)")`).
So I've relaxed the table name detection in `from` to allow any
extension like INDEX hint.
Fixes #35359.
|
|\ \ \ \
| |/ / /
|/| | | |
Enable SQL statement cache for `find` on base class as with `find_by`
|
| | | |
| | | |
| | | |
| | | | |
Related and follows d333d85254d27cd572e6ecce8ee850c107a4f340.
|
|\ \ \ \
| | | | |
| | | | | |
Add reselect method
|
| |\ \ \ \ |
|
| |\ \ \ \ \ |
|
| |\ \ \ \ \ \ |
|
| | | | | | | | |
|
| |_|_|_|/ / /
|/| | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
`require "bcrypt"` is unsed since #15431.
`require "models/topic"` is unused since 893c647da37189543b2c2d55b07d414b1ba8b0d0.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This is an alternative of 65c4b1b50df3fa59198de2d45d1f54b61ecc7864.
https://buildkite.com/rails/rails/builds/59147#117e9445-23e8-455a-b486-ea0ae9636405/120-129
|
| |_|_|_|/ /
|/| | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Some untransactional tests (e.g. `CallbacksOnMultipleActionsTest`) makes
`topics` table dirty.
We should reset dirty `topics` table before `SerializedAttributeTest` is
run.
https://travis-ci.org/rails/rails/jobs/499719624#L1209-L1215
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This fixes both #34555 and #34738.
Revert "Merge pull request #34900 from gmcgibbon/fix_test_find_only_some_columns"
This reverts commit ff807f823b869d3491935a096183ee2bebd58e7b, reversing
changes made to 9f1a07af0499080c9fd8815705a03a4c7e8fb506.
Revert "Merge pull request #34560 from gmcgibbon/fix_decorate_leak_on_serial_attr_test"
This reverts commit bd62389307e138ee0f274a9d62697567a3334ea0, reversing
changes made to ec66c6a2fa4ee200259341a18ecd96310f388ba3.
Revert "Fix unstable `test_serialized_attribute_works_under_concurrent_initial_access` test"
This reverts commit 65c4b1b50df3fa59198de2d45d1f54b61ecc7864.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
https://travis-ci.org/rails/rails/jobs/499061043#L1187-L1193
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When the middle association doesn't have any records and the inner
association is not an empty scope the owner will be `nil` so we can't
try to reset the inverse association.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
[ci skip]
|
| |_|_|_|/
|/| | | |
| | | | | |
Add negative scopes for all enum values
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Caching `find_by` statements on STI subclasses is unsafe, since
`type IN (?,?,?,?)` part is dynamic, and we don't have SQL statements
cache invalidation when a STI subclass is created or removed for now.
|
| | | | |
| | | | |
| | | | |
| | | | | |
Also, max precision (= 6) isn't regarded as unlimited precision for now.
|
| | | | |
| | | | |
| | | | |
| | | | | |
https://buildkite.com/rails/rails/builds/59106#596284a1-4692-4640-8a50-c4286e173bbb/115-126
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
jvillarejo/fix_wrong_size_query_with_distinct_select
Fix different `count` calculation when using `size` with DISTINCT `select`
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
DISTINCT
When using `select` with `'DISTINCT( ... )'` if you use method `size` on a non loaded relation it overrides the column selected by passing `:all` so it returns different value than count.
This fixes #35214
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Support read queries with leading characters while preventing writes
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* The READ_QUERY regex would consider reads to be writes if they started with
spaces or parens. For example, a UNION query might have parens around each
SELECT - (SELECT ...) UNION (SELECT ...).
* It will now correctly treat these queries as reads.
|