aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
Commit message (Collapse)AuthorAgeFilesLines
* Fix CI failure due to invalid `up_only` for MySQLRyuta Kamizono2017-11-151-5/+7
| | | | | | | | `oldie = 'true'` to `tinyint(1)` column is invalid value for MySQL: ``` Mysql2::Error: Incorrect integer value: 'true' for column 'oldie' at row 1: update horses set oldie = 'true' ```
* Add a #populate method to migrations (#31082)Rich2017-11-141-0/+25
| | | | | | | | | | | * Add a #populate method to migrations * Address rubocop issues * Rename to #up_only and use #execute in the examples intead of the model * Update CHANGELOG [Rich Daley & Rafael Mendonça França]
* Merge pull request #27947 from mastahyeti/unsafe_raw_sqlMatthew Draper2017-11-145-31/+330
|\ | | | | | | Disallow raw SQL in dangerous AR methods
| * use database agnostic function/quoting in testBen Toews2017-11-091-4/+4
| |
| * push order arg checks down to allow for bindsBen Toews2017-11-091-0/+36
| |
| * deal with Array arguments to #orderBen Toews2017-11-091-3/+3
| |
| * convert order arg to string before checking if we can reverse itBen Toews2017-11-091-2/+2
| |
| * use << instead of #concat in #reverse_sql_order because we might be working ↵Ben Toews2017-11-091-1/+1
| | | | | | | | with Arel SQL literator which overrides #concat
| * try using regexesBen Toews2017-11-0917-85/+82
| |
| * allow table name and direction in string order argBen Toews2017-11-0916-194/+234
| |
| * work around deprecation warnings in a bunch of testsBen Toews2017-11-0920-271/+274
| |
| * remove :enabled optionBen Toews2017-11-091-54/+50
| |
| * make tests more verbose/explicitBen Toews2017-11-091-78/+96
| |
| * allow Arel.sql() for pluckBen Toews2017-11-093-33/+69
| |
| * add config to check arguments to unsafe AR methodsBen Toews2017-11-091-0/+177
| |
* | Properly cast input in `update_all`Sean Griffin2017-11-131-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The documentation claims that given values go through "normal AR type casting and serialization", which to me implies `serialize(cast(value))`, not just serialization. The docs were changed to use this wording in #22492. The tests I cited in that PR (which is the same test modified in this commit), is worded in a way that implies it should be using `cast` as well. It's possible that I originally meant "normal type casting" to imply just the call to `serialize`, but given that `update_all(archived: params['archived'])` seems to be pretty common, I'm inclined to make this change as long as no tests are broken from it.
* | Merge pull request #30980 from sobrinho/sobrinho/arel-star-ignored-columnsRafael França2017-11-135-45/+66
|\ \ | | | | | | Do not use `Arel.star` when `ignored_columns`
| * | Fix postgres ordering issue on default scoping testGabriel Sobrinho2017-11-131-15/+15
| | |
| * | Change tests to use models which don't ignore any columnsJon Moss2017-11-133-30/+30
| | |
| * | Do not use `Arel.star` when `ignored_columns`Jon Moss2017-11-131-0/+21
| | | | | | | | | | | | | | | | | | | | | If there are any ignored columns, we will now list out all columns we want to be returned from the database. Includes a regression test.
* | | Add new error class `StatementTimeout` which will be raised when statement ↵Ryuta Kamizono2017-11-132-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timeout exceeded (#31129) We are sometimes using The MAX_EXECUTION_TIME hint for MySQL depending on the situation. It will prevent catastrophic performance down by wrong performing queries. The new error class `StatementTimeout` will make to be easier to handle that case. https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer-hints-execution-time
* | | Raise `TransactionTimeout` when lock wait timeout exceeded for PG adapterRyuta Kamizono2017-11-112-1/+30
| | | | | | | | | | | | Follow up of #30360.
* | | Should test actual error which is raised from the databaseRyuta Kamizono2017-11-111-1/+23
| | |
* | | Relation merging should keep joining orderRyuta Kamizono2017-11-111-0/+9
| | | | | | | | | | | | | | | | | | | | | `joins_values.partition` will break joins values order. It should be kept as user intended order. Fixes #15488.
* | | Fix random CI failure due to non-deterministic sorting orderRyuta Kamizono2017-11-101-1/+1
| | | | | | | | | | | | https://travis-ci.org/rails/rails/jobs/300163487#L1974
* | | Ensure `apply_join_dependency` for subqueries in `from` and `where`Ryuta Kamizono2017-11-101-0/+12
| | | | | | | | | | | | Fixes #21577.
* | | Merge pull request #30414 from bogdanvlviv/clear-mysql_database_tasksRafael França2017-11-091-74/+5
|\ \ \ | | | | | | | | Simplify implementation of `MySQLDatabaseTasks`
| * | | Simplify implementation of `MySQLDatabaseTasks`bogdanvlviv2017-10-301-72/+3
| | | | | | | | | | | | | | | | | | | | | | | | Don't process MySQL ERROR 1045, raise error instead Make behavior of `MySQLDatabaseTasks` more consistent with behavior of `PostgreSQLDatabaseTasks`
| * | | Raise error if unsupported charset for mysqlbogdanvlviv2017-10-301-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `blog$ bin/rails db:create` Before: ``` Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf42", "pool"=>5, "username"=>"root", "password"=>nil, "socket"=>"/var/run/mysqld/mysqld.sock", "database"=>"blog_development"}, {:charset=>"utf42"} (If you set the charset manually, make sure you have a matching collation) Created database 'blog_development' Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf42", "pool"=>5, "username"=>"root", "password"=>nil, "socket"=>"/var/run/mysqld/mysqld.sock", "database"=>"blog_test"}, {:charset=>"utf42"} (If you set the charset manually, make sure you have a matching collation) Created database 'blog_test' ``` After: ``` Unsupported charset: '"utf42"' Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf42", "pool"=>5, "username"=>"root", "password"=>nil, "socket"=>"/var/run/mysqld/mysqld.sock", "database"=>"blog_development"} rails aborted! Mysql2::Error: Unsupported charset: '"utf42"' ... (stack trace) ... bin/rails:4:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace) ``` Closes #29683 Related to #27398
* | | | Merge pull request #25346 from bogdan/correct-tags-count-in-fixturesRafael França2017-11-093-11/+11
|\ \ \ \ | | | | | | | | | | Set counter caches to correct values in fixtures
| * | | | Set counter caches to correct values in fixturesBogdan Gusiev2017-11-083-11/+11
| | | | |
* | | | | Move Attribute and AttributeSet to ActiveModelLisa Ugray2017-11-092-510/+0
| |_|_|/ |/| | | | | | | | | | | | | | | Use these to back the attributes API. Stop automatically including ActiveModel::Dirty in ActiveModel::Attributes, and make it optional.
* | | | Should pass `test_no_locks_no_wait` not only on `PostgreSQLAdapter` and ↵Ryuta Kamizono2017-11-091-8/+5
| | | | | | | | | | | | | | | | `OracleAdapter`
* | | | Run `ConcurrentTransactionTest` if `supports_transaction_isolation?`Yasuo Honda2017-11-081-15/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | returns true Not only postgresql or mysql2 adapter, Oracle enhanced adapter whose default isolation level is read commited, passes these two test cases. `ConcurrentTransactionTest#test_transaction_per_thread` `ConcurrentTransactionTest#test_transaction_isolation__read_committed` ```ruby $ ARCONN=oracle bin/test test/cases/transactions_test.rb:961 -v Using oracle Run options: -v --seed 18865 ConcurrentTransactionTest#test_transaction_per_thread = 0.98 s = . Finished in 1.061036s, 0.9425 runs/s, 5.6549 assertions/s. 1 runs, 6 assertions, 0 failures, 0 errors, 0 skips ``` ```ruby $ ARCONN=oracle bin/test test/cases/transactions_test.rb:979 -v Using oracle Run options: -v --seed 13341 ConcurrentTransactionTest#test_transaction_isolation__read_committed = 1.85 s = . Finished in 1.928637s, 0.5185 runs/s, 10.3700 assertions/s. 1 runs, 20 assertions, 0 failures, 0 errors, 0 skips $ ``` Also, regardless it is a file based or memory based these tests could fail with SQLite3Adapter. (Extra CR added to make lines shorter) ```ruby $ ARCONN=sqlite3 bin/test test/cases/transactions_test.rb:961 -v Using sqlite3 Run options: -v --seed 18815 ConcurrentTransactionTest#test_transaction_per_thread = /home/yahonda/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `step': SQLite3::BusyException: database is locked: UPDATE "topics" SET "approved" = ?, "updated_at" = ? WHERE "topics"."id" = ? (ActiveRecord::StatementInvalid) ``` ```ruby $ ARCONN=sqlite3 bin/test test/cases/transactions_test.rb:979 -v Using sqlite3 Run options: -v --seed 25520 ConcurrentTransactionTest#test_transaction_isolation__read_committed = 0.12 s = E /home/yahonda/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `step': SQLite3::BusyException: database is locked: UPDATE "developers" SET "salary" = ?, "updated_at" = ?, "updated_on" = ? WHERE "developers"."id" = ? (ActiveRecord::StatementInvalid) ```
* | | | `Mysql2Adapter` should pass `ConcurrentTransactionTest`Ryuta Kamizono2017-11-091-1/+1
| | | |
* | | | Consolidate redundant `if` and `unless` with the same conditionRyuta Kamizono2017-11-091-3/+1
|/ / /
* | | Fix `bin/rails db:migrate` with specified `VERSION`bogdanvlviv2017-11-062-4/+165
| | | | | | | | | | | | | | | | | | Ensure that `bin/rails db:migrate` with specified `VERSION` reverts all migrations only if `VERSION` is `0`. Raise error if target migration doesn't exist.
* | | `scoping` should respect current class and STI constraint (#29199)Ryuta Kamizono2017-11-061-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | A relation includes `klass`, so it can not be used as it is if current class is different from `current_scope.klass`. It should be created new relation by current class to respect the klass and STI constraint. Fixes #17603. Fixes #23576.
* | | Fix preloading polymorphic multi-level through associationRyuta Kamizono2017-11-061-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is partially fixed by e617fb57 when through association has already loaded. Otherwise, second level through association should respect `preload_scope`. Fixes #30242. Closes #30076. [Ryuta Kamizono & CicholGricenchos]
* | | Fix preloading polymorphic association when through association has already ↵Ryuta Kamizono2017-11-061-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | loaded If through association has already loaded, `source_type` is ignored to loaded through records. The loaded records should be filtered by `source_type` in that case. Fixes #30904.
* | | Ensure `apply_join_dependency` for `update_all` and `delete_all` if ↵Ryuta Kamizono2017-11-061-19/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | eager-loading is needed If a relation has eager-loading values, `count` and `exists?` works properly, but `update_all` and `delete_all` doesn't work due to missing `apply_join_dependency`. It should be applied to work consistently. Fixes #28863.
* | | Ensure `apply_join_dependency` for `collection_cache_key` if eager-loading ↵Ryuta Kamizono2017-11-061-0/+10
| | | | | | | | | | | | | | | | | | is needed Fixes #30315.
* | | Enable `Style/RedundantReturn` rubocop rule, and fixed a couple moreRyuta Kamizono2017-11-011-1/+1
| | | | | | | | | | | | Follow up of #31004.
* | | Address incorrect number of queries executed at Oracle enhanced adapterYasuo Honda2017-10-311-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This pull request addresses these 17 failures when tested with Oracle enhanced adapter. All of these failures are due to the incorrect number of queries. Here is the first one. ```ruby $ ARCONN=oracle bin/test test/cases/nested_attributes_test.rb:1086 Using oracle Run options: --seed 27985 F Finished in 0.874514s, 1.1435 runs/s, 1.1435 assertions/s. 1) Failure: TestHasManyAutosaveAssociationWhichItselfHasAutosaveAssociations#test_circular_references_do_not_perform_unnecessary_queries [/home/yahonda/git/rails/activerecord/test/cases/nested_attributes_test.rb:1086]: 6 instead of 3 queries were executed. Queries: select us.sequence_name from all_sequences us where us.sequence_owner = :owner and us.sequence_name = :sequence_name INSERT INTO "SHIPS" ("NAME", "ID") VALUES (:a1, :a2) select us.sequence_name from all_sequences us where us.sequence_owner = :owner and us.sequence_name = :sequence_name INSERT INTO "SHIP_PARTS" ("NAME", "SHIP_ID", "UPDATED_AT", "ID") VALUES (:a1, :a2, :a3, :a4) select us.sequence_name from all_sequences us where us.sequence_owner = :owner and us.sequence_name = :sequence_name INSERT INTO "TREASURES" ("LOOTER_ID", "LOOTER_TYPE", "SHIP_ID", "ID") VALUES (:a1, :a2, :a3, :a4). Expected: 3 Actual: 6 1 runs, 1 assertions, 1 failures, 0 errors, 0 skips $ ``` Since https://github.com/rsim/oracle-enhanced/pull/1490 Oracle enhanced adapter drops its own schema caching called OracleEnhancedAdapter.cache_columns` to use Rails scehema cache generated by `db:schema:cache:dump`. By this change some extra sql statements executed at ActiveRecord unit test, which can be fixed by adding the sql statement to `oracle_ignored`. * All 17 failures fixed by this pull request: ```ruby ARCONN=oracle bin/test test/cases/nested_attributes_test.rb:1086 ARCONN=oracle bin/test test/cases/locking_test.rb:308 ARCONN=oracle bin/test test/cases/locking_test.rb:365 ARCONN=oracle bin/test test/cases/dirty_test.rb:351 ARCONN=oracle bin/test test/cases/dirty_test.rb:334 ARCONN=oracle bin/test test/cases/autosave_association_test.rb:192 ARCONN=oracle bin/test test/cases/associations/has_many_associations_test.rb:950 ARCONN=oracle bin/test test/cases/associations/has_many_associations_test.rb:1059 ARCONN=oracle bin/test test/cases/autosave_association_test.rb:627 ARCONN=oracle bin/test test/cases/autosave_association_test.rb:607 ARCONN=oracle bin/test test/cases/autosave_association_test.rb:617 ARCONN=oracle bin/test test/cases/autosave_association_test.rb:641 ARCONN=oracle bin/test test/cases/associations/has_many_through_associations_test.rb:546 ARCONN=oracle bin/test test/cases/associations/has_many_through_associations_test.rb:297 ARCONN=oracle bin/test test/cases/associations/has_many_through_associations_test.rb:586 ARCONN=oracle bin/test test/cases/associations/has_many_through_associations_test.rb:172 ARCONN=oracle bin/test test/cases/associations/has_many_through_associations_test.rb:269 ```
* | `source_type_scope` should respect correct table aliasRyuta Kamizono2017-10-301-0/+14
| | | | | | | | | | | | | | | | | | `join_scopes` in `PolymorphicReflection` is passed aliased `table`, so it should be respected for `source_type_scope`. Closes #13969. Fixes #13920. Fixes #15190.
* | removed unnecessary semicolonsShuhei Kitagawa2017-10-282-2/+2
| |
* | Fix all `s/trough/through/`Ryuta Kamizono2017-10-271-1/+1
| | | | | | | | | | | | | | ``` % git grep -n trough activerecord/test/cases/associations/has_many_through_associations_test.rb:1253: def test_has_many_trough_with_scope_that_has_joined_same_table_with_parent_relation ```
* | Fix typo `s/trough/through/`Ryuta Kamizono2017-10-271-1/+1
| |
* | Merge pull request #30682 from ahorek/fix_scope_forRyuta Kamizono2017-10-271-0/+5
|\ \ | | | | | | delegate scope_for on PolymorphicReflection
| * | delegate scope forpavel2017-10-271-0/+5
| | |