aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/quoting_test.rb
Commit message (Collapse)AuthorAgeFilesLines
* Fix failing `QuotingTest#test_quoted_time_utc`bogdanvlviv2018-03-191-2/+2
| | | | | | | | | | | | | | | | | | | | This test fails in specific time. Example: If run this test on the machine with time 01:00 am UTC+2, this test will fail. Changing representing of 2000-01-01 01:00 am UTC+2 to UTC+0 change the day, month and even year in our case, so substitution `"2000-01-01 "` to `""` isn't possible. ``` Failure: ActiveRecord::ConnectionAdapters::QuotingTest#test_quoted_time_utc Expected: "1999-12-31 23:01:27" Actual: "23:01:27" ``` Related to 7c479cbf
* Ensure that leading date is stripped by quoted_timeAndrew White2018-03-111-3/+36
| | | | | | | | In #24542, quoted_time was introduced to strip the leading date component for time columns because it was having a significant effect in mariadb. However, it assumed that the date component was always 2000-01-01 which isn't the case, especially if the source wasn't another time column.
* Suppress `warning: BigDecimal.new is deprecated` in activerecordYasuo Honda2017-12-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `BigDecimal.new` has been deprecated in BigDecimal 1.3.3 which will be a default for Ruby 2.5. Refer https://github.com/ruby/bigdecimal/commit/533737338db915b00dc7168c3602e4b462b23503 ``` $ cd rails/activerecord/ $ git grep -l BigDecimal.new | grep \.rb | xargs sed -i -e "s/BigDecimal.new/BigDecimal/g" ``` - Changes made only to Active Record. Will apply the same change to other module once this commit is merged. - The following deprecation has not been addressed because it has been reported at `ActiveRecord::Result.new`. `ActiveRecord::Result.ancestors` did not show `BigDecimal`. * Not addressed ```ruby /path/to/rails/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb:34: warning: BigDecimal.new is deprecated ``` * database_statements.rb:34 ```ruby ActiveRecord::Result.new(result.fields, result.to_a) if result ``` * ActiveRecord::Result.ancestors ```ruby [ActiveRecord::Result, Enumerable, ActiveSupport::ToJsonWithActiveSupportEncoder, Object, Metaclass::ObjectMethods, Mocha::ObjectMethods, PP::ObjectMixin, ActiveSupport::Dependencies::Loadable, ActiveSupport::Tryable, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject] ``` This commit has been tested with these Ruby and BigDecimal versions - ruby 2.5 and bigdecimal 1.3.3 ``` $ ruby -v ruby 2.5.0dev (2017-12-14 trunk 61217) [x86_64-linux] $ gem list |grep bigdecimal bigdecimal (default: 1.3.3, default: 1.3.2) ``` - ruby 2.4 and bigdecimal 1.3.0 ``` $ ruby -v ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux-gnu] $ gem list |grep bigdecimal bigdecimal (default: 1.3.0) ``` - ruby 2.3 and bigdecimal 1.2.8 ``` $ ruby -v ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux] $ gem list |grep -i bigdecimal bigdecimal (1.2.8) ``` - ruby 2.2 and bigdecimal 1.2.6 ``` $ ruby -v ruby 2.2.8p477 (2017-09-14 revision 59906) [x86_64-linux] $ gem list |grep bigdecimal bigdecimal (1.2.6) ```
* Remove deprecated support to `quoted_id` when typecasting an Active Record ↵Rafael Mendonça França2017-10-231-37/+0
| | | | object
* Use frozen-string-literal in ActiveRecordKir Shatrov2017-07-191-0/+2
|
* Don't convert dates to strings when using prepared statements in mysqlSean Griffin2017-07-181-3/+11
| | | | | | | | Dates are able to be natively handled by the mysql2 gem. libmysql (and the wire protocol) represent each portion of the date as an integer, which is significantly faster to encode and decode. By passing the Ruby date objects through directly, we can save a good bit of time and memory.
* Change sqlite3 boolean serialization to use 1 and 0Lisa Ugray2017-07-111-2/+2
| | | | | | | | | | | | | | | | | | | | Abstract boolean serialization has been using 't' and 'f', with MySQL overriding that to use 1 and 0. This has the advantage that SQLite natively recognizes 1 and 0 as true and false, but does not natively recognize 't' and 'f'. This change in serialization requires a migration of stored boolean data for SQLite databases, so it's implemented behind a configuration flag whose default false value is deprecated. The flag itself can be deprecated in a future version of Rails. While loaded models will give the correct result for boolean columns without migrating old data, where() clauses will interact incorrectly with old data. While working in this area, also change the abstract adapter to use `"TRUE"` and `"FALSE"` as quoted values and `true` and `false` for unquoted. These are supported by PostreSQL, and MySQL remains overriden.
* Revert "Merge pull request #29540 from kirs/rubocop-frozen-string"Matthew Draper2017-07-021-1/+0
| | | | | This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
* Enforce frozen string in RubocopKir Shatrov2017-07-011-0/+1
|
* Fix `warning: ambiguous first argument`Ryuta Kamizono2017-05-061-2/+2
| | | | | | | | | | | | | | | | ``` % ARCONN=sqlite3 be ruby -w -Itest test/cases/quoting_test.rb test/cases/quoting_test.rb:92: warning: ambiguous first argument; put parentheses or a space even after `/' operator test/cases/quoting_test.rb:96: warning: ambiguous first argument; put parentheses or a space even after `/' operator Using sqlite3 Run options: --seed 9495 ..................................... Finished in 0.046403s, 797.3622 runs/s, 1120.6172 assertions/s. 37 runs, 52 assertions, 0 failures, 0 errors, 0 skips ```
* Clarify deprecation message for #quoted_idMatthew Draper2017-05-051-1/+14
| | | | | In this case, it's the method definition that's more at fault, rather than the current caller.
* Deprecate using `#quoted_id` in quotingRyuta Kamizono2017-02-241-1/+1
| | | | | Originally `quoted_id` was used in legacy quoting mechanism. Now we use type casting mechanism for that. Let's deprecate `quoted_id`.
* Fix type casting AR object to respect the primary key cast type's serializationRyuta Kamizono2017-02-241-0/+27
|
* Extract `TypeCastingTest` into `test/cases/quoting_test.rb`Ryuta Kamizono2017-02-241-0/+56
|
* Remove deprecated support to passing a column to #quoteRafael Mendonça França2016-12-291-12/+12
|
* Move `test_quoting_classes` into `test/cases/quoting_test.rb`Ryuta Kamizono2016-10-291-0/+4
|
* Remove useless `test_string_with_crazy_column`Ryuta Kamizono2016-09-111-6/+2
| | | | | | Passing `FakeColumn` was removed at #15336 therefore `test_string_with_crazy_column` is duplicated with `test_quote_string_no_column`.
* applies new string literal convention in activerecord/testXavier Noria2016-08-061-7/+7
| | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* Quoting booleans should return a frozen stringRyuta Kamizono2016-07-271-0/+16
| | | | | | | | | | | | | | | | | | | If reuse `QUOTED_TRUE` and `QUOTED_FALSE` without frozen, causing the following issue. ``` Loading development environment (Rails 5.1.0.alpha) irb(main):001:0> ActiveRecord::Base.connection.quote(true) << ' foo' => "1 foo" irb(main):002:0> ActiveRecord::Base.connection.quote(true) << ' foo' => "1 foo foo" irb(main):003:0> type = ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString.new => #<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString:0x007fd40c15e018 @precision=nil, @scale=nil, @limit=nil> irb(main):004:0> type.serialize(true) << ' bar' => "1 foo foo bar" irb(main):005:0> type.cast(true) << ' bar' => "1 foo foo bar bar" ```
* Support for unified Integer class in Ruby 2.4+Jeremy Daer2016-05-181-3/+3
| | | | | | | | Ruby 2.4 unifies Fixnum and Bignum into Integer: https://bugs.ruby-lang.org/issues/12005 * Forward compat with new unified Integer class in Ruby 2.4+. * Backward compat with separate Fixnum/Bignum in Ruby 2.2 & 2.3. * Drops needless Fixnum distinction in docs, preferring Integer.
* Refactor microsecond precision to be database agnosticSean Griffin2015-02-101-5/+5
| | | | | | | | | | The various databases don't actually need significantly different handling for this behavior, and they can achieve it without knowing about the type of the object. The old implementation was returning a string, which will cause problems such as breaking TZ aware attributes, and making it impossible for the adapters to supply their logic for time objects.
* Don't default to YAML dumping when quoting valuesSean Griffin2015-01-141-8/+5
| | | | | | | This behavior exists only to support fixtures, so we should handle it there. Leaving it in `#quote` can cause very subtle bugs to slip through, by things appearing to work when they should be blowing up loudly, such as #18385.
* Always pass a column with a type object to quoteSean Griffin2014-06-281-11/+0
| | | | | | | | The only case where we got a column that was not `nil`, but did not respond to `cast_type` was when type casting the default value during schema creation. We can look up the cast type, and add that object to the column definition. Will allow us to consistently rely on the type objects for type casting in all directions.
* Don't use column object for type casting in `quoting`Sean Griffin2014-06-181-25/+0
| | | | | | | | | We're never going to be able to use the attribute object here, however, so let's just accept the ugly demeter violation here for now. Remove test cases which were either redundant with other tests in the file, or were actually testing the type objects (which are tested elsewhere)
* Remove checks against `column.type` in abstract adapter quotingSean Griffin2014-05-261-18/+10
| | | | | | The intention is to eventually remove `column` from the arguments list both for `quote` and for `type_cast` entirely. This is the first step to that end.
* prevent global timezone state from leaking out of test cases.Yves Senn2013-10-251-5/+5
|
* Remove redundant `string_to_binary` from type-castingVipul A M2013-08-091-19/+0
|
* use method with_active_record_default_timezoneNeeraj Singh2013-07-291-30/+20
|
* Revert "Merge pull request #9207 from dylanahsmith/mysql-quote-numeric"Steve Klabnik2013-02-271-7/+7
| | | | | This reverts commit 408227d9c5ed7de26310d72a1a99c1ee02311c63, reversing changes made to dca0b57d03deffc933763482e615c3cf0b9a1d97.
* active_record: Quote numeric values compared to string columns.Dylan Smith2013-02-071-7/+7
|
* fix quoting for ActiveSupport::Duration instancesFrancesco Rodriguez2012-07-041-0/+8
| | | | | | | | | | | | | | | | This patch fixes quoting for ActiveSupport::Duration instances: # before >> ActiveRecord::Base.connection.quote 30.minutes => "'--- 1800\n...\n'" # after >> ActiveRecord::Base.connection.quote 30.minutes => "1800" Also, adds a test for type casting ActiveSupport::Duration instances. Related to #1119.
* please use ruby -I lib:test path/to/test.rb, or export RUBY_OPTAaron Patterson2011-06-061-1/+1
|
* Refactor Active Record test connection setup. Please see the ↵Jon Leighton2011-06-041-1/+1
| | | | RUNNING_UNIT_TESTS file for details, but essentially you can now configure things in test/config.yml. You can also run tests directly via the command line, e.g. ruby path/to/test.rb (no rake needed, uses default db connection from test/config.yml). This will help us fix the CI by enabling us to isolate the different Rails versions to different databases.
* do not depend on to_yaml being called, but rather depend on YAML being dumpedAaron Patterson2011-04-131-6/+7
|
* Make serialized fixtures work againPratik Naik2010-12-291-2/+2
|
* all columns respond to string_to_binary, so no need to check respond_to?Aaron Patterson2010-10-121-3/+8
|
* test quoting a string with an unknown column typeAaron Patterson2010-10-121-0/+4
|
* test quoting multibyte chars objectAaron Patterson2010-10-121-0/+20
|
* test quoting strings with binary columnsAaron Patterson2010-10-121-0/+13
|
* test quoting a string with a float columnAaron Patterson2010-10-121-0/+5
|
* testing quoting a string for an int columnAaron Patterson2010-10-121-0/+12
|
* testing crazy object quotingAaron Patterson2010-10-121-0/+12
|
* test that dates / times / datetimes call quoted_dateAaron Patterson2010-10-121-0/+10
|
* test quoting of bigdecimalsAaron Patterson2010-10-121-0/+6
|
* testing floats, fixnum, and bignumsAaron Patterson2010-10-111-0/+18
|
* test quoting nils, true, false, idAaron Patterson2010-10-111-0/+20
|
* getting quoted_time under more specific testsAaron Patterson2010-10-111-0/+65
|
* starting to get the quote module under testAaron Patterson2010-10-111-0/+30