aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | Merge pull request #26154 from ↵Rafael Mendonça França2016-08-196-84/+70
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | kamipo/remove_text_default_treated_as_empty_string Remove text default treated as an empty string in non-strict mode
| * | | | Remove text default treated as an empty string in non-strict modeRyuta Kamizono2016-08-196-84/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Strict mode controls how MySQL handles invalid or missing values in data-change statements such as INSERT or UPDATE. If strict mode is not in effect, MySQL inserts adjusted values for invalid or missing values and produces warnings. ```ruby def test_mysql_not_null_defaults_non_strict using_strict(false) do with_mysql_not_null_table do |klass| record = klass.new assert_nil record.non_null_integer assert_nil record.non_null_string assert_nil record.non_null_text assert_nil record.non_null_blob record.save! record.reload assert_equal 0, record.non_null_integer assert_equal "", record.non_null_string assert_equal "", record.non_null_text assert_equal "", record.non_null_blob end end end ``` It is inconsistent with other types that only text/blob defaults treated as an empty string. This commit fixes the inconsistency.
* | | | | Merge pull request #26217 from kamipo/revert_23067Rafael França2016-08-191-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Revert "`sql_for_insert` returns values for passing to `exec_insert`"
| * | | | | Revert "`sql_for_insert` returns values for passing to `exec_insert`"Ryuta Kamizono2016-08-191-1/+1
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts #23067. #23067 is for propagating `pk` value from `sql_for_insert` to `exec_insert` (avoiding extra query for pg adapter). Now `exec_insert` includes `sql_for_insert` since #26002 therefore this propagating is no longer needed.
* | | | | Merge pull request #25989 from ↵Rafael França2016-08-192-11/+6
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | kamipo/remove_unnecessary_select_for_collection_proxy Remove unnecessary `select` method for `CollectionProxy`
| * | | | | Remove unnecessary `select` method for `CollectionProxy`Ryuta Kamizono2016-08-182-11/+6
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently `CollectionProxy` inherits `Relation` and `Relation` includes `QueryMethods`. This method is completely duplicated. https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/relation/query_methods.rb#L271-L275
* | | | | Merge pull request #26089 from travisoneill/sqlite_rollback_fixRafael Mendonça França2016-08-194-5/+31
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | Sqlite3 Migration Error Fixed (issue #26087)
| * | | | Added nil case handling to allow rollback migration in case oftravis.h.oneill@gmail.com2016-08-174-5/+31
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | invalid column type /activerecord/lib/active_record/connection_adapters /abstract/schema_definitions.rb:306 type = type.to_sym Changed to the following to handle nil case: type = type.to_sym if type Added regression test for this case: /activerecord/test/cases/migration_test.rb:554 if current_adapter?(:SQLite3Adapter) def test_allows_sqlite3_rollback_on_invalid_column_type Person.connection.create_table :something, force: true do |t| t.column :number, :integer t.column :name, :string t.column :foo, :bar end assert Person.connection.column_exists?(:something, :foo) assert_nothing_raised { Person.connection.remove_column :something, :foo, :bar } assert !Person.connection.column_exists?(:something, :foo) assert Person.connection.column_exists?(:something, :name) assert Person.connection.column_exists?(:something, :number) ensure Person.connection.drop_table :something, if_exists: true end end
* | | | Merge pull request #24099 from k0kubun/preserve-readonlyRafael Mendonça França2016-08-185-4/+31
|\ \ \ \ | | | | | | | | | | | | | | | Preserve readonly flag only for readonly association
| * | | | Preserve readonly flag only for readonly associationTakashi Kokubun2016-07-305-4/+29
| | | | | | | | | | | | | | | | | | | | Fixes #24093
* | | | | Merge pull request #26200 from kamipo/remove_unnecessary_ordinal_methodsRafael França2016-08-183-93/+84
|\ \ \ \ \ | | | | | | | | | | | | Remove unnecessary ordinal methods for collection association
| * | | | | Remove unnecessary ordinal methods for collection associationRyuta Kamizono2016-08-183-93/+84
| | |/ / / | |/| | | | | | | | | | | | | | | | | | Currently `CollectionProxy` inherits `Relation` therefore we can use its own methods rather than delegating to collection association.
* | | | | Merge pull request #25999 from kamipo/remove_sanitize_conditionsRafael França2016-08-183-4/+8
|\ \ \ \ \ | | | | | | | | | | | | Remove `sanitize_conditions` and use `sanitize_sql` instead of `sanitize_conditions`
| * | | | | Deprecate `sanitize_conditions`. Use `sanitize_sql` insteadRyuta Kamizono2016-08-183-4/+8
| |/ / / / | | | | | | | | | | | | | | | Because `sanitize_conditions` protected method is only used in one place.
* / / / / Remove unnecessary `test_sql_for_insert_with_returning_disabled`Ryuta Kamizono2016-08-182-9/+2
|/ / / / | | | | | | | | | | | | | | | | Because `sql_for_insert` is only called in `use_insert_returning?` is true since #26002.
* | | | Merge pull request #25396 from ↵Rafael França2016-08-171-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/fix_error_message_for_out_of_range_integer_value Fix error message for out of range byte size integer value for consistency
| * | | | Fix error message for out of range byte size integer value for consistencyRyuta Kamizono2016-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | Related f27a932, #25391.
* | | | | Merge pull request #25976 from kamipo/pluck_uses_loaded_targetRafael França2016-08-173-2/+20
|\ \ \ \ \ | | | | | | | | | | | | `pluck` should use `records` (`load_target`) when `loaded?` is true
| * | | | | `pluck` should use `records` (`load_target`) when `loaded?` is trueRyuta Kamizono2016-08-043-2/+20
| | | | | |
* | | | | | Fix indentationRafael Mendonça França2016-08-171-3/+3
| | | | | |
* | | | | | Merge pull request #25987 from aquajach/masterRafael Mendonça França2016-08-172-1/+10
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Fix does_not_support_reverse? to find sql functions with commas in nested brackets
| * | | | | | check if order contains comma first in does_not_support_reverse?Jack Chen Songyong2016-07-291-1/+1
| | | | | | |
| * | | | | | have does_not_support_reverse? support sql functions with commas in nested ↵Jack2016-07-292-1/+10
| | |_|/ / / | |/| | | | | | | | | | | | | | | | brackets
* | | | | | Merge pull request #26002 from ↵Rafael França2016-08-173-8/+19
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/sql_for_insert_should_be_called_inside_exec_insert `sql_for_insert` should be called inside `exec_insert`
| * | | | | | `sql_for_insert` should be called inside `exec_insert`Ryuta Kamizono2016-08-063-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `exec_insert` cannot return last inserted id if `use_insert_returning?` is true. `sql_for_insert` should be called inside `exec_insert`.
* | | | | | | Merge pull request #26009 from kamipo/fix_inconsistent_finder_methods_signatureRafael França2016-08-173-49/+38
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix inconsistent the signature of finder methods for collection association
| * | | | | | | Fix inconsistent the signature of finder methods for collection associationRyuta Kamizono2016-08-163-49/+38
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `#second`, `#third`, etc finder methods was added in 03855e790de2224519f55382e3c32118be31eeff. But the signature of these methods is inconsistent with the original finder methods. And also the signature of `#first` and `#last` methods is different from the original. This commit fixes the inconsistency.
* | | | | | | Merge pull request #26021 from ↵Rafael França2016-08-172-16/+56
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/finder_bang_method_should_call_non_bang_method Finder bang method should call non bang method
| * | | | | | | Finder bang method should call non bang methodRyuta Kamizono2016-08-162-16/+56
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | Otherwise CollectionProxy's bang methdos cannot respect dirty target.
* | | | | | | Merge pull request #26037 from monmonmon/masterRafael França2016-08-171-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Check if the logger is not nil before using it
| * | | | | | | Check if the logger exists before trying to use itmonmon2016-08-031-1/+1
| | | | | | | |
* | | | | | | | Merge pull request #26072 from kamipo/extract_case_sensitive_handlerRafael Mendonça França2016-08-176-51/+51
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Extract `PredicateBuilder::CaseSensitiveHandler`
| * | | | | | | | Extract `PredicateBuilder::CaseSensitiveHandler`Ryuta Kamizono2016-08-166-51/+51
| | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently uniqueness validator is coupled with building Arel ASTs. This commit extracts `PredicateBuilder::CaseSensitiveHandler` for decouple the building Arel ASTs.
* | | | | | | | Merge pull request #26121 from MaxLap/fix_count_with_left_joinsRafael Mendonça França2016-08-164-16/+28
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix count which would sometimes force a DISTINCT
| * | | | | | | | Fix count which would sometimes force a DISTINCTMaxime Lapointe2016-08-164-16/+28
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current behaviour of checking if there is a LEFT OUTER JOIN arel node to detect if we are doing eager_loading is wrong. This problem wasn't frequent before as only some pretty specific cases would add a LEFT OUTER JOIN arel node. However, the recent new feature left_outer_joins also add this node and made this problem happen frequently. Since in the perform_calculation function, we don't have access to eager_loading information, I had to extract the logic for the distinct out to the calculate method. As I was in the file for left_outer_join tests, I fixed a few that had bugs and I replaced some that were really weak with something that will catch more issues. In relation tests, the first test I changed would have failed if it had validated the hash returned by count instead of just checking how many pairs were in it. This is because this merge of join currently transforms the join node into an outer join node, which then made count do a distinct. So before this change, the return was {1=>1, 4=>1, 5=>1}.
* | | | | | | | Merge pull request #25671 from ↵Rafael França2016-08-165-5/+16
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/dont_handle_as_associated_predicate_if_table_has_column Do not handle as an associated predicate if a table has the column
| * | | | | | | | Do not handle as an associated predicate if a table has the columnRyuta Kamizono2016-08-165-5/+16
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If handled as an associated predicate even though a table has the column, will generate invalid SQL by valid column name treated as a table name.
* | | | | | | | Merge pull request #26000 from kamipo/remove_sanitizeRafael França2016-08-162-13/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Remove internal `sanitize` method
| * | | | | | | | Remove internal `sanitize` methodRyuta Kamizono2016-07-312-13/+1
| | |_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently internal `sanitize`/`quote_value` method is only used for `quoted_id`. Simply it is enough to use `connection.quote` public API instead.
* | | | | | | | Merge pull request #26183 from Shopify/fix-no-touching-touch-laterRafael França2016-08-163-1/+14
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Makes touch_later respects no_touching policy
| * | | | | | | Makes touch_later respects no_touching policyJean Boussier2016-08-163-1/+14
| | | | | | | |
* | | | | | | | Add array column documentationoss922016-08-161-0/+4
| |_|_|_|_|_|/ |/| | | | | |
* | | | | | | Merge pull request #26117 from kamipo/make_association_quary_to_preparable_step1Rafael Mendonça França2016-08-161-11/+11
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Make association queries to preparable: Step 1
| * | | | | | | Make association queries to preparable: Step 1Ryuta Kamizono2016-08-111-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently association queries cannot be preparable. ```ruby Post.where(author_id: 1).to_a # => SELECT "posts".* FROM "posts" WHERE "posts"."author_id" = ? [["author_id", 1]] Post.where(author: 1).to_a # => SELECT "posts".* FROM "posts" WHERE "posts"."author_id" = 1 ``` To make association queries to preparable, it should be handled in `create_binds_for_hash`. This change is a first step for it.
* | | | | | | | Merge pull request #26074 from kamipo/where_by_attribute_with_array_or_rangeRafael França2016-08-163-7/+23
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | `where` by `array|range` attribute with array or range value
| * | | | | | | | `where` by `array|range` attribute with array or range valueRyuta Kamizono2016-08-113-7/+23
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently predicate builder cannot build a predicate for `array|range` attribute. This commit fixes the issue. Related #25671.
* | | | | | | | Merge pull request #26097 from Dagnan/fix_recordnotfound_args_rebasedRafael França2016-08-164-4/+33
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | When calling association.find RecordNotFound is now raised with the s…
| * | | | | | | | When calling association.find RecordNotFound is now raised with the same ↵Michel Pigassou2016-08-134-4/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | argument as when we do it in Record.find (primary_key, id and model).
* | | | | | | | | Merge pull request #26151 from kamipo/avoid_to_allow_unused_splat_argsRafael França2016-08-163-6/+4
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Avoid to allow unused splat args for `t.timestamps` in `create_table`
| * | | | | | | | | Avoid to allow unused splat args for `t.timestamps` in `create_table`Ryuta Kamizono2016-08-143-6/+4
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately `t.timestamps` in `create_table` allows unused splat args. But the same one in `change_table` does not allow them. This commit fixes the inconsistent behavior.