aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #22345 from GUI/fix-multi-schema-structure-dumpYves Senn2015-11-301-2/+2
|\ | | | | | | | | | | | | | | | | Fix rake db:structure:dump on Postgres when multiple schemas are used Conflicts: activerecord/CHANGELOG.md Closes #22346.
| * Fix rake db:structure:dump on Postgres when multiple schemas are used.Nick Muerdter2015-11-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If postgresql is being used and there are multiple schemas listed on the `schema_search_path`, then `structure.sql` dumps (triggered by `rake db:structure:dump` or `config.active_record.schema_format = :sql`) began failing in Rails 4.2.5. This is due to the changes made in https://github.com/rails/rails/pull/17885 The problem is that multiple schemas were getting getting passed to `Kernel.system` as a single, space delimited string argument (for example, "--schema=foo --schema=bar"). However, with the updated array style of calling `Kernel.system`, these need to be passed as separate arguments (for example, "--schema=foo", "--schema=bar"). If they get passed as a single string, then the underlying pg_dump program isn't sure how to interpret that single argument and you'll get an error reporting: "pg_dump: No matching schemas were found"
* | Merge pull request #22363 from yui-knk/mv_ar_test_caseYves Senn2015-11-302-91/+94
|\ \ | | | | | | Move some bind related test cases from finder_test.rb to sanitize_t…
| * | Remove some bind related test cases from finder_test.rb to sanitize_test.rbyui-knk2015-11-212-91/+94
| | | | | | | | | | | | | | | | | | `replace_named_bind_variables` and `replace_bind_variables` are definded in `sanitization.rb`, so it is reasonable these tests are on `sanitize_test.rb`.
* | | Merge pull request #18155 from bogdan/collection_association_double_element_fixSean Griffin2015-11-292-0/+12
|\ \ \ | | | | | | | | Bugfix collection association #create method
| * | | Bugfix collection association #create method …Bogdan Gusiev2015-11-232-0/+12
| |/ / | | | | | | | | | | | | When same association is loaded in the model creation callback The new object is inserted into association twice
* | | Merge pull request #22304 from ↵Yves Senn2015-11-242-98/+145
|\ \ \ | | | | | | | | | | | | | | | | kamipo/schema_dumping_support_for_postgresql_geometric_types Add schema dumping support for PostgreSQL geometric data types
| * | | Add schema dumping support for PostgreSQL geometric data typesRyuta Kamizono2015-11-241-5/+61
| | | |
| * | | Move `migration/postgresql_geometric_types_test.rb` in ↵Ryuta Kamizono2015-11-242-93/+84
| | | | | | | | | | | | | | | | `adapters/postgresql/geometric_test.rb`
* | | | Fix more test failures caused by #21000Sean Griffin2015-11-231-1/+5
| | | |
* | | | Merge pull request #21000 from twalpole/find_or_parameter_issuesSean Griffin2015-11-232-37/+64
|\ \ \ \ | |/ / / |/| | | Update and fix forbidden attributes test issues caused by AC::Parameters change
| * | | Update and fix forbidden attributes testsThomas Walpole2015-11-032-37/+64
| | | | | | | | | | | | | | | | Add AC::Parameters tests for WhereChain#not
* | | | Remove blanket array delegation from `Relation`Sean Griffin2015-11-231-6/+0
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | As was pointed out by #17128, our blacklist of mutation methods was non-exhaustive (and would need to be kept up to date with each new version of Ruby). Now that `Relation` includes `Enumerable`, the number of methods that we actually need to delegate are pretty small. As such, we can change to explicitly delegating the few non-mutation related methods that `Array` has which aren't on `Enumerable`
* | | Fix test failure in `adapters/mysql/active_schema_test.rb`Ryuta Kamizono2015-11-202-6/+6
| |/ |/| | | | | Follow up to #21601.
* | Revert "Allow specifying the default table options for mysql adapters"Sean Griffin2015-11-191-19/+0
| | | | | | | | | | | | | | This reverts commit 8246b593bff71f2cebf274c133bb8917f1e094c8. There was concern about this modifying the behavior of past migrations. We're going to add an way to modify the migration generator instead.
* | Allow specifying the default table options for mysql adaptersSean Griffin2015-11-191-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | It's often the case that you want to have an option that you cannot specify at the database level, but want applied to *all* tables that you create. For example, you might want to specify `ROW_FORMAT=DYNAMIC` to not have to limit text columns to length 171 for indexing when using utf8mb4. This allows an easy way to specify this in your database configuration. While this change affects both MySQL and MySQL2, the test only covers MySQL2, as the legacy mysql adapter appears to always return ASCII strings, and is tangential to what we're actually doing.
* | Rename 'key' to 'lock_id' or 'lock_name' for advisory lockingSam Davies2015-11-184-47/+47
| | | | | | | | | | | | | | | | | | - key was a poor choice of name. A key implies something that will unlock a lock. The concept is actually more like a 'lock identifier' - mysql documentation calls this a 'lock name' - postgres documentation calls it a 'lock_id' - Updated variable names to reflect the preferred terminology for the database in question
* | Raise ArgumentError when passing a truthy value to mergeAndrew White2015-11-171-4/+7
| | | | | | | | | | | | In b71e08f we started raising when nil or false was passed to merge to fix #12264, however we should also do this for truthy values that are invalid like true.
* | Merge pull request #22271 from ↵Yves Senn2015-11-171-0/+32
|\ \ | | | | | | | | | | | | | | | timbreitkreutz/twb-9015-schema-dumper-test-for-prefix-and-ignore Test case for Issue #9015 - ignore_table and table_prefix at same time
| * | TWB Test case for Issue #9015 - ignore_table and table_prefix at same timeTim Breitkreutz2015-11-131-0/+32
| | |
* | | Merge pull request #22257 from yui-knk/fix_merge_to_not_call_to_proc_for_hashAndrew White2015-11-171-0/+4
|\ \ \ | | | | | | | | Make `AR::SpawnMethods#merge!` to check an arg is a Proc
| * | | Make `AR::SpawnMethods#merge!` to check an arg is a Procyui-knk2015-11-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From Ruby ( 2.3.0dev trunk 52520), `Hash#to_proc` is defined (https://github.com/ruby/ruby/commit/fbe967ec02cb65a7efa3fb8f3d747cf6f620dde1), and many tests have been failed with `ArgumentError: wrong number of arguments (given 0, expected 1)`. Because we call `Hash#to_proc` with no args in `#merge!`. This commit changes order of conditionals to not call `Hash#to_proc`.
* | | | Except keys of `build_record`'s argument from `create_scope` in ↵yui-knk2015-11-164-2/+17
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | initialize_attributes If argument of `build_record` has key and value which is same as default value of database, we should also except the key from `create_scope` in `initialize_attributes`. Because at first `build_record` initialize record object with argument of `build_record`, then assign attributes derived from Association's scope. In this case `record.changed` does not include the key, which value is same as default value of database, so we should add the key to except list. Fix #21893.
* | | Deprecate `#table_exists?`, `#tables` and passing arguments to `#talbes`yui-knk2015-11-0917-86/+117
|/ / | | | | | | | | | | | | | | | | | | Reported on #21509, how views is treated by `#tables` are differ by each adapters. To fix this different behavior, after Rails 5.0 is released, deprecate `#tables`. And `#table_exists?` would check both tables and views. To make their behavior consistent with `#tables`, after Rails 5.0 is released, deprecate `#table_exists?`.
* | Improve support for non Active Record objects on `validates_associated`Kassio Borges2015-11-081-0/+12
| | | | | | | | | | | | Skipping `marked_for_destruction?` when the associated object does not responds to it make easier to validate virtual associations built on top of Active Model objects and/or serialized objects that implement a `valid?` instance method.
* | Fix test failuresSean Griffin2015-11-071-0/+1
| | | | | | | | | | The previous commit changes the state of the class, and while we are cleaning up the database, I forgot to clean up the class
* | Ensure `#reset_column_information` clears child classes as wellSean Griffin2015-11-072-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I've added a redundant test for this under the attributes API as well, as that also causes this bug to manifest through public API (and demonstrates that calling `reset_column_information` on the child classes would be insufficient) Since children of a class should always share a table with their parent, just reloading the schema from the cache should be sufficient here. `reload_schema_from_cache` should probably become public and `# :nodoc:`, but I'd rather avoid the git churn here. Fixes #22057
* | Fix wrong `assert_equal` argument order.Kasper Timm Hansen2015-11-071-2/+2
| | | | | | | | | | It goes expected, then actual. Only changed this because the file was just touched (please don't submit pull requests :)).
* | Suppress warning (warning about assigned but unused variable)yui-knk2015-11-071-1/+1
| | | | | | | | | | These warings have been appeared from https://github.com/rails/rails/commit/92bc8cdb0771bf6ffcfb31ef58dba529527b514c
* | Avoids mutating the original response in connection management middlewareKevin Buchanan2015-11-061-0/+7
| |
* | Merge pull request #22187 from ↵Andrew White2015-11-051-1/+1
|\ \ | | | | | | | | | | | | kamipo/test_binary_data_is_not_logged_is_for_prepared_statements `test_binary_data_is_not_logged` is for prepared statements logging
| * | `test_binary_data_is_not_logged` is for prepared statements loggingRyuta Kamizono2015-11-051-1/+1
| |/
* | No need `MysqlDouble` and `MysqlDouble.reset_column_information`Ryuta Kamizono2015-11-052-24/+12
| |
* | Require the count_down_latchRafael Mendonça França2015-11-051-2/+3
| |
* | Require only necessary concurrent-ruby classes.Jerry D'Antonio2015-11-042-2/+2
|/
* Merge pull request #18774 from ↵Jeremy Daer2015-11-032-5/+14
|\ | | | | | | | | yuki24/deprecate-original-exception-infavor-of-cause Deprecate exception#original_exception in favor of exception#cause
| * Deprecate exception#original_exception in favor of exception#causeYuki Nishijima2015-11-032-5/+14
| |
* | Add test_float_limits to mysql2yui-knk2015-11-032-12/+48
|/ | | | | | This test case was definded by 51de8cee82d61541725ff4c2462b083f37e64017. `float` and `double` is registered in abstract_mysql_adapter.rb, we should test not only for mysql adapter, but mysql2 adapter.
* Fix test_database_created_by_root of mysqlyui-knk2015-11-021-1/+1
| | | | | | `DEFAULT_CHARSET` and `DEFAULT_COLLATION` in `MySQLDatabaseTasks` was changed by 322068fe85278ea26e26da6dfd7c5612dab15a72. This test case also should be changed.
* Define `sanitize_sql_for_order` for AR and use it inside `preprocess_order_args`yui-knk2015-11-022-0/+8
| | | | This commit follows up of 6a6dbb4c51fb0c58ba1a810eaa552774167b758a.
* Allow bigint with default nil for avoiding auto increment primary keyRyuta Kamizono2015-11-021-0/+26
| | | | Such as #10404, #18206.
* Remove `DEFAULT_CHARSET` and `DEFAULT_COLLATION` in `MySQLDatabaseTasks`Ryuta Kamizono2015-11-021-13/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit f6ca7e4e75408bc42f515fc7206d6c6ff0dce7c6. The default collation of utf8 in MySQL is the `utf8_general_ci`, and this should not be changed. This is because, the better collation in the all locales is not exists, optimal collation in own application is not known other than themselves. The `utf8_unicode_ci` is known as Japanese killer in Japan, there are serious impacts in search of Japanese. MySQL implements the `utf8_unicode_ci` according to the Unicode Collation Algorithm (UCA) described at http://www.unicode.org/reports/tr10/, but the `utf8_unicode_ci` have only partial support for the UCA, only primary level key comparison implemented (also known as L1 (Base characters) comparison). Because L1 (Base characters) comparison does not distinguish between the presence or absence of the accent, if distinction of the accent is important there is a serious impact (e.g. Japanese). Example: ``` > SHOW CREATE TABLE `dicts`\G *************************** 1. row *************************** Table: dicts Create Table: CREATE TABLE `dicts` ( `word` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `meaning` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 1 row in set (0.00 sec) > INSERT INTO `dicts` VALUES ('ハハ', 'mother'), ('パパ', 'father'); Query OK, 2 rows affected (0.00 sec) > SELECT * FROM `dicts` WHERE `word` = 'ハハ'; +--------+---------+ | word | meaning | +--------+---------+ | ハハ | mother | | パパ | father | +--------+---------+ 2 rows in set (0.00 sec) > CREATE UNIQUE INDEX `unique_index_word` ON `dicts`(`word`); ERROR 1062 (23000): Duplicate entry 'ハハ' for key 'unique_index_word' ``` We should omit the collation entirely rather than providing a default. Then the choice is the responsibility of the server and MySQL distribution.
* Merge pull request #22131 from yui-knk/move_test_to_inheritance_testAndrew White2015-11-022-80/+80
|\ | | | | Move some AR test cases to inheritance_test.rb
| * Move some AR test cases to inheritance_test.rbyui-knk2015-10-312-80/+80
| | | | | | | | | | | | | | | | These methods are defined in inheritance.rb * `abstract_class?` * `descends_from_active_record?` * `compute_type`
* | Merge pull request #22125 from k0kubun/left_joinsSean Griffin2015-10-302-1/+6
|\ \ | | | | | | Alias left_joins to left_outer_joins
| * | Alias left_joins to left_outer_joinsTakashi Kokubun2015-10-312-1/+6
| | |
* | | don't sleep in testsAaron Patterson2015-10-301-10/+6
| | | | | | | | | | | | | | | we should be using a countdown latch instead of rolling our own busy-loop.
* | | Merge pull request #22122 from ↵Sean Griffin2015-10-304-0/+199
|\ \ \ | | | | | | | | | | | | | | | | samphilipd/sam/manual_locking_on_schema_migrations Make migrations concurrent safe (using advisory locks)
| * | | Use advisory locks to prevent concurrent migrationsSam Davies2015-10-304-0/+199
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Addresses issue #22092 - Works on Postgres and MySQL - Uses advisory locks because of two important properties: 1. The can be obtained outside of the context of a transaction 2. They are automatically released when the session ends, so if a migration process crashed for whatever reason the lock is not left open perpetually - Adds get_advisory_lock and release_advisory_lock methods to database adapters - Attempting to run a migration while another one is in process will raise a ConcurrentMigrationError instead of attempting to run in parallel with undefined behavior. This could be rescued and the migration could exit cleanly instead. Perhaps as a configuration option? Technical Notes ============== The Migrator uses generate_migrator_advisory_lock_key to build the key for the lock. In order to be compatible across multiple adapters there are some constraints on this key. - Postgres limits us to 64 bit signed integers - MySQL advisory locks are server-wide so we have to scope to the database - To fulfil these requirements we use a Migrator salt (a randomly chosen signed integer with max length of 31 bits) that identifies the Rails migration process as the owner of the lock. We multiply this salt with a CRC32 unsigned integer hash of the database name to get a signed 64 bit integer that can also be converted to a string to act as a lock key in MySQL databases. - It is important for subsequent versions of the Migrator to use the same salt, otherwise different versions of the Migrator will not see each other's locks.
* | | | Fix test failures caused by #12071Sean Griffin2015-10-301-10/+10
| |/ / |/| | | | | | | | | | | | | | This assumes only one query was ever executed, but it appears to sometimes be loading schema information. We can just look at the array of queries, rather than the "first" one that was run