aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
Commit message (Collapse)AuthorAgeFilesLines
* Don't crash exception translation w/ nil result attribute.Steve Jorgensen2013-03-201-1/+1
| | | | | | Exception.result is nil when attempting a query after PostgreSQL disconnect, resulting in new exception: NoMethodError: undefined method `error_field' for nil:NilClass
* Reset postgreSQL search path in db:test:clone_structure.Alexander2013-03-191-0/+1
| | | | | | | | This patch resets the postgres search path in the structure.sql after the structure is dumped in order to find schema_migrations table when multiples schemas are used. Fixes #945
* Merge branch '3-2-13' into 3-2-stableAaron Patterson2013-03-183-3/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 3-2-13: bumping to 3.2.13 fix protocol checking in sanitization [CVE-2013-1857] JDOM XXE Protection [CVE-2013-1856] fix incorrect ^$ usage leading to XSS in sanitize_css [CVE-2013-1855] stop calling to_sym when building arel nodes [CVE-2013-1854] Merge pull request #9616 from exviva/multiple_select_name_double_square_brackets bumping to rc2 Revert "Merge pull request #8209 from senny/backport_8176" Freeze columns only once per Result Preparing for 3.2.13.rc1 release Update CHANGELOGs for 3.2.13 release. Conflicts: actionmailer/CHANGELOG.md actionpack/CHANGELOG.md activemodel/CHANGELOG.md activeresource/CHANGELOG.md activesupport/CHANGELOG.md railties/CHANGELOG.md
| * bumping to 3.2.13Aaron Patterson2013-03-181-1/+1
| |
| * stop calling to_sym when building arel nodes [CVE-2013-1854]Aaron Patterson2013-03-152-2/+2
| |
| * bumping to rc2Aaron Patterson2013-03-061-1/+1
| |
| * Freeze columns only once per ResultSantiago Pastorino2013-03-051-3/+9
| | | | | | | | | | Conflicts: activerecord/lib/active_record/result.rb
| * Preparing for 3.2.13.rc1 releaseSteve Klabnik2013-02-271-2/+2
| |
* | @target might be nil when Identity Map is enabled.Larry Lv2013-03-081-3/+8
| | | | | | | | | | | | | | * With Identity Map enabled, NameError might be raised and @target is nil. So we should always ensure `@target ||= find_target`. * Only force reload target when it is stale.
* | Fix issue #7526. Reload the target if it's stale.larrylv2013-03-054-6/+8
| | | | | | | | | | | | | | | | * This has been fixed at master via `365b8b6`, but not at 3-2-stable branch. * @stale_state should be nil when a model isn't saved. via `0f3901e`. * set @stale_state to nil when reset the target.
* | Freeze columns only once per ResultSantiago Pastorino2013-03-031-3/+9
| | | | | | | | | | Conflicts: activerecord/lib/active_record/result.rb
* | Update docs, change_table does not use TableDefinition.Yves Senn2013-02-281-2/+2
| | | | | | | | | | | | | | [ci skip] Conflicts: activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
* | Backported #6755 to 3-2-stable. Don't read csv file during executing ↵Narihiro Nakamura2013-02-281-1/+1
|/ | | | db:fixtures:load.
* Revert "Merge pull request #9208 from dylanahsmith/3-2-mysql-quote-numeric"Steve Klabnik2013-02-263-12/+4
| | | | This reverts commit 921a296a3390192a71abeec6d9a035cc6d1865c8.
* Do not override attributes on `dup` by default scopesHiroshige Umino2013-02-261-1/+0
|
* Backported #7072 to 3-2-stable. Use database value for uniqueness validation ↵Narihiro Nakamura2013-02-261-1/+1
| | | | scope.
* Sqlite preserves primary keys when copying/altering tables.Yves Senn2013-02-231-2/+6
| | | | | | | | Backport #2312. Fixes #9367. I also added a test-case to make sure that renaming or removing a column preserves the primary key.
* don't cache invalid subsets when preloading hmt associations.Yves Senn2013-02-191-1/+2
| | | | | | | | | | | | | Backport #9252. Conflicts: activerecord/CHANGELOG.md activerecord/test/cases/associations/eager_test.rb The preloader code on 3-2-stable is not based on relations but on option hashes. I had to modify the original patch and comparing the option hashes could be more fuzzy than comparing the relations. All the tests passed though.
* Fix handling of dirty time zone aware attributesLilibeth De La Cruz2013-02-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when `time_zone_aware_attributes` were enabled, after changing a datetime or timestamp attribute and then changing it back to the original value, `changed_attributes` still tracked the attribute as changed. This caused `[attribute]_changed?` and `changed?` methods to return true incorrectly. Example: in_time_zone 'Paris' do order = Order.new original_time = Time.local(2012, 10, 10) order.shipped_at = original_time order.save order.changed? # => false # changing value order.shipped_at = Time.local(2013, 1, 1) order.changed? # => true # reverting to original value order.shipped_at = original_time order.changed? # => false, used to return true end (cherry picked from commit bc982cbcb34129ea2cfe8aa1f8e0b40e444e68db) Conflicts: activerecord/CHANGELOG.md activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb Backport of #9073 Fixes #8898
* Revert "Merge pull request #9252 from senny/8423_hmt_preloading_bug"Rafael Mendonça França2013-02-151-2/+1
| | | | | | | This reverts commit c5451777b038c5e48567f69256986ae42a2cde48. Conflicts: activerecord/CHANGELOG.md
* Merge pull request #9252 from senny/8423_hmt_preloading_bugRafael Mendonça França2013-02-141-1/+2
| | | | | | | don't cache invalid subsets when preloading hmt associations Conflicts: activerecord/CHANGELOG.md activerecord/test/cases/associations/eager_test.rb
* backport of fix for issue #7630Matthew Robertson2013-02-131-0/+5
|
* Merge branch '3-2-sec' into 3-2-stableAaron Patterson2013-02-111-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 3-2-sec: bumping version remove ruby-prof Fix issue with attr_protected where malformed input could circumvent protection fixing call to columns hash. run the damn tests when you backport! Bump rack dependency to 1.4.5 Merge pull request #9224 from dylanahsmith/bigdecimal-takes-string Merge pull request #9208 from dylanahsmith/3-2-mysql-quote-numeric Conflicts: Gemfile activerecord/CHANGELOG.md
| * bumping versionAaron Patterson2013-02-101-1/+1
| |
| * fixing call to columns hash. run the damn tests when you backport!Aaron Patterson2013-02-091-1/+1
| |
| * Merge pull request #9208 from dylanahsmith/3-2-mysql-quote-numericGuillermo Iguaran2013-02-093-4/+12
| | | | | | | | | | | | [3.2] active_record: Quote numeric values compared to string columns. Conflicts: activerecord/CHANGELOG.md
* | fixing call to columns hash. run the damn tests when you backport!Aaron Patterson2013-02-091-1/+1
| |
* | active_record: Quote numeric values compared to string columns.Dylan Smith2013-02-073-4/+12
| |
* | Duplicate column_defaults properlyPiotr Sarnacki2013-02-031-1/+2
| | | | | | | | | | | | | | | | | | | | Backport c517602 to fix #6115 Deleted: activerecord/lib/active_record/core.rb Conflicts: activerecord/test/cases/base_test.rb
* | Merge pull request #9078 from senny/6865_ar_count_with_uniqRafael Mendonça França2013-02-021-1/+2
| | | | | | | | | | | | `#count` in conjunction with `#uniq` performs distinct count. Conflicts: activerecord/CHANGELOG.md
* | Merge pull request #9043 from senny/backport_7536Carlos Antonio da Silva2013-01-291-1/+1
|\ \ | | | | | | Backport: Fix pluck when columns/tables are reserved words.
| * | Fix pluck when columns/tables are reserved words.Ian Lesperance2013-01-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Backport #7536 to fix #8968. Conflicts: activerecord/CHANGELOG.md activerecord/lib/active_record/relation/calculations.rb
* | | Replaced abcs to config.Damir Gaynetdinov2013-01-251-3/+3
|/ /
* | Merge pull request #6197 from ↵Xavier Noria2013-01-222-6/+14
| | | | | | | | | | | | blakesmith/connection_adapters_without_explain_support Don't run explain on slow queries for database adapters that don't support it
* | Revert "Merge pull request #6986 from kennyj/fix_6975"Andrew White2013-01-221-14/+5
| | | | | | | | | | | | | | | | | | This reverts commit 8905c1fb496641c3cdb7b3b816ae6d3d4b2c2b73. Closes #8460 Conflicts: activerecord/test/cases/dirty_test.rb
* | Revert "Work around undiagnosed bug that's draining a relation's bind_values"Carlos Antonio da Silva2013-01-151-1/+0
| | | | | | | | This reverts commit 06cc38a2b0d4778746e8a2a2e2b6aa07e1c1c075.
* | Revert "Merge pull request #7983 from georgebrock/bug7950-squashed"Carlos Antonio da Silva2013-01-156-35/+12
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 88a296dccc401da143d90cad54b693ff06bf2b58, reversing changes made to 666a7e34f553cef4c8878362eafc79c7e3f310c3. Conflicts: activerecord/CHANGELOG.md Reason: this has been resulting in some hard to track bugs and is introducing a possible breackage in a stable version.
* | Revert "Merge pull request #7661 from ernie/build-join-records-on-unsaved-hmt"Ernie Miller2013-01-111-14/+0
| | | | | | | | | | | | | | This reverts commit ee439895759b38431ad025f3c234831f30dadcdb. It would appear that #7661 had unintended consequences to the API. Until we can sort those out, this should not be in 3.2.x, and wait for 4.0.0.
* | Ignore binds payload with nil column in AR log subscriberYasuo Honda2013-01-091-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some tests were raising the following error: Could not log "sql.active_record" event. NoMethodError: undefined method `type' for nil:NilClass` Due to the way binds were being logged, the column info was considered always present, but that is not true for some of the tests listed in the issue. Closes #8806. Conflicts: activerecord/lib/active_record/log_subscriber.rb activerecord/test/cases/log_subscriber_test.rb Conflict resolution: - Revert ruby 1.9 style hash to support ruby 1.8 - Do not include 8f59ffce into 3-2-stable
* | Merge branch '3-2-sec' into 3-2-secmergeAaron Patterson2013-01-082-2/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | * 3-2-sec: bumping version CVE-2013-0156: Safe XML params parsing. Doesn't allow symbols or yaml. * Strip nils from collections on JSON and XML posts. [CVE-2013-0155] * dealing with empty hashes. Thanks Damien Mathieu Avoid Rack security warning no secret provided Conflicts: actionpack/CHANGELOG.md activerecord/CHANGELOG.md activesupport/CHANGELOG.md
| * bumping versionAaron Patterson2013-01-081-1/+1
| |
| * * Strip nils from collections on JSON and XML posts. [CVE-2013-0155] * ↵Aaron Patterson2013-01-081-1/+6
| | | | | | | | dealing with empty hashes. Thanks Damien Mathieu
* | Refactor write attribute logic to convert number column valueCarlos Antonio da Silva2013-01-071-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an improvement for issue #8673: "Comparing a BigDecimal to true/false on write_attribute is slow" It seems to be an issue with Ruby itself, related to the "coerce" method being called in TrueClass/FalseClass due to the == condition, triggering method_missing, then raising a NameError that's later catched. This issue was also opened in Ruby tracker: https://bugs.ruby-lang.org/issues/7645. This refactoring avoid the coerce call by using a case statement, which gives us better readability as well. A simple benchmark: ---------- require 'benchmark/ips' require 'bigdecimal' Benchmark.ips do |x| x.report("== true") { BigDecimal('3') == true } x.report("TrueClass") { TrueClass === BigDecimal('3') } x.report("== 0") { BigDecimal('3') == 0 } x.report("Numeric") { Numeric === BigDecimal('3') } end Calculating ------------------------------------- == true 6427 i/100ms TrueClass 47297 i/100ms == 0 35923 i/100ms Numeric 55530 i/100ms ------------------------------------------------- == true 75878.5 (±21.6%) i/s - 359912 in 5.004392s TrueClass 1249547.0 (±13.1%) i/s - 6148610 in 5.035964s == 0 666856.3 (±13.3%) i/s - 3268993 in 5.013789s Numeric 1269300.9 (±11.3%) i/s - 6274890 in 5.028458s ---------- Master has a very different implementation, and there are apparently no similar conversions at this point, it's mainly delegated to the column type cast, but I'll check if something needs to be changed there as well. Closes #8673.
* | Fix named scope + class method exampleCarlos Antonio da Silva2013-01-071-3/+1
| | | | | | | | | | | | | | Closes #8804 [ci skip] Conflicts: activerecord/lib/active_record/scoping/named.rb
* | connection_parameters is an Array and will never haveRafael Mendonça França2013-01-061-2/+0
| | | | | | | | prepared_statements as value
* | Fix error when assigning NaN to an integer columnTristan Harward2013-01-061-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also covers any non-castable case by returning nil, which is in-line with the intention of the former implementation, but covers the odd cases which respond to to_i but raise an error when it's called, such as NaN, Infinity and -Infinity. Fixes #8757 Backport of #8781 Conflicts: activerecord/CHANGELOG.md activerecord/test/cases/column_test.rb
* | Fix undefined method `to_i' introduced since 3.2.8Jason Stirk2013-01-041-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes a bug introduced in 96a13fc7 which breaks behaviour of integer fields in 3.2.8. In 3.2.8, setting the value of an integer field to a non-integer (eg. Array, Hash, etc.) would default to 1 (true) : # 3.2.8 p = Post.new p.category_id = [ 1, 2 ] p.category_id # => 1 p.category_id = { 3 => 4 } p.category_id # => 1 In 3.2.9 and above, this will raise a NoMethodError : # 3.2.9 p = Post.new p.category_id = [ 1, 2 ] NoMethodError: undefined method `to_i' for [1, 2]:Array Whilst at first blush this appear to be sensible, it combines in bad ways with scoping. For example, it is common to use scopes to control access to data : @collection = Posts.where(:category_id => [ 1, 2 ]) @new_post = @collection.new In 3.2.8, this would work as expected, creating a new Post object (albeit with @new_post.category_id = 1). However, in 3.2.9 this will cause the NoMethodError to be raised as above. It is difficult to avoid triggering this error without descoping before calling .new, breaking any apps running on 3.2.8 that rely on this behaviour. This patch deviates from 3.2.8 in that it does not retain the somewhat spurious behaviour of setting the attribute to 1. Instead, it explicitly sets these invalid values to nil : p = Post.new p.category_id = [ 1, 2 ] p.category_id # => nil This also fixes the situation where a scope using an array will "pollute" any newly instantiated records. @new_post = @collection.new @new_post.category_id # => nil Finally, 3.2.8 exhibited a behaviour where setting an object to an integer field caused it to be coerced to "1". This has not been retained, as it is spurious and surprising in the same way that setting Arrays and Heshes was : c = Category.find(6) p = Post.new # 3.2.8 p.category_id = c p.category_id # => 1 # This patch p.category_id = c p.category_id # => nil This commit includes explicit test cases that expose the original issue with calling new on a scope that uses an Array. As this is a common situation, an explicit test case is the best way to prevent regressions in the future. It also updates and separates existing tests to be explicit about the situation that is being tested (eg. AR objects vs. other objects vs. non-integers)
* | Merge tag 'v3.2.10' into 3-2-stableMiguel2013-01-031-1/+1
|\| | | | | | | Latest released tag was not fully merged into the stable branch (missed version bumping)
| * bumping version to 3.2.10Aaron Patterson2012-12-231-1/+1
| |
* | Merge branch '3-2-sec' into 3-2-secmergeAaron Patterson2012-12-231-1/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 3-2-sec: CVE-2012-5664 options hashes should only be extracted if there are extra parameters updating changelog updating the changelogs updating the changelog for the CVE Add release date of Rails 3.2.9 to documentation Conflicts: actionmailer/CHANGELOG.md actionpack/CHANGELOG.md activemodel/CHANGELOG.md activerecord/CHANGELOG.md activeresource/CHANGELOG.md activesupport/CHANGELOG.md railties/CHANGELOG.md