Commit Graph

4271 Commits

Author SHA1 Message Date
Rafael Mendonça França
b4d4d93d6c Merge pull request #14372 from arthurnn/fix_query_cache_binds
Make select_all on query cache accept a Relation without binds.
2014-03-13 16:28:08 -03:00
Lauro Caetano
a9023eccd6 Add test for deprecation warning for passing an AR object to find. 2014-03-13 16:10:04 -03:00
Arthur Neves
433b19d7e8 Make select_all on query cache accept a Relation without binds.
[fixes #14361]
[related #13886]
2014-03-13 15:01:37 -04:00
Lauro Caetano
d3d3d07d99 Test deprecation warning for passing an ActiveRecord object to
`exists?`
2014-03-13 15:59:54 -03:00
Aaron Patterson
d35f0033c7 passing an instance of an AR object to find is deprecated
please pass the id of the AR object by calling `.id` on the model first.
2014-03-13 11:47:12 -07:00
Aaron Patterson
d92ae6ccca passing an ActiveRecord object to exists? is deprecated.
Pass the id of the object to the method by calling `.id` on the AR
object.
2014-03-13 11:40:35 -07:00
Arthur Neves
7058321725
Change usec to 0 on tests that compare seconds
Avoid rounding problems with `.usec` method rounding the seconds when the
field doesn't persist the `.usec` piece.
2014-03-12 11:52:39 -04:00
Arthur Neves
66d61ab63b
Unit test for mysql quote time usec 2014-03-12 11:50:50 -04:00
Rafael Mendonça França
591b8f395d Merge pull request #13040 from kamipo/case_sensitive_comparison
Only use BINARY for mysql case sensitive uniqueness check when column has a case insensitive collation.

Conflicts:
	activerecord/CHANGELOG.md
2014-03-12 10:51:10 -03:00
Arthur Neves
5a934e6787
Test microsecond on mysql 5.6 2014-03-12 09:06:12 -04:00
Arthur Neves
3c23f76844
Remove mocking on save, when not necessary 2014-03-11 14:07:29 -04:00
Godfrey Chan
ccaf0ed791 Merge pull request #14345 from arthurnn/revert_14052
Fixes STI when 2+ levels deep.
2014-03-11 07:25:36 -07:00
Yves Senn
3f5339f48e change_table supports citext. Follow up to #12523. 2014-03-11 08:27:59 +01:00
lsylvester
b3e0da3062 register OID for PostgreSQL citex datatype [Troy Kruthoff & Lachlan Sylvester]
citext makes it possible to use AR Hash finders for case-insensitive matching as sql UPPER/LOWER functions are not needed.
2014-03-11 08:14:03 +11:00
Arthur Neves
e5f15a8365
Fixes STI when 2+ levels deep.
PR #14052 Added a regression where it was only looking for methods in one
level up, So when the method was defined in a 2+ levels up the
inheritance chain, the method was not found as defined.
2014-03-10 14:10:46 -04:00
Rafael Mendonça França
6e3ab3e15f Merge pull request #8313 from alan/only_save_changed_has_one_objects
Save has_one associations only if record has changes

Conflicts:
	activerecord/CHANGELOG.md
2014-03-10 11:41:55 -03:00
Rafael Mendonça França
39e07b64ce current_adapter? accepts multiple arguments 2014-03-10 11:09:39 -03:00
Rafael Mendonça França
d50f75367b mysql adapter also fails with a number bigger than int 2014-03-10 11:07:10 -03:00
Rafael Mendonça França
d547b23754 Change the assertions depending in the database adapter
This will avoid the confusing flunk logic
2014-03-10 10:23:17 -03:00
Rafael Mendonça França
18b9595814 Do proper adapter check 2014-03-10 10:20:27 -03:00
Guo Xiang Tan
5ade4b0593 Cleanup Parrot after each test. 2014-03-09 20:37:31 -07:00
Andrew White
ec23277124 Merge pull request #14262 from sferik/flat_map
Replace additional instances of map.flatten with flat_map
2014-03-09 10:04:57 +00:00
Yves Senn
f6aeb8b1a3 we only need to support asc and ASC. No need for mixed cases. #14263
This is a result of the discussion at https://github.com/rails/rails/pull/14263/files#r10291489
2014-03-05 10:24:13 +01:00
Yves Senn
5f7f3bb1df Merge pull request #14263 from robin850/allow_passing_string_to_order_hash
Follow up of #10732 - Allow string hash values on AR order method
2014-03-05 09:05:15 +01:00
Aaron Patterson
ef7e7ad7e9 Merge pull request #14261 from MSch/bound-parameters-for-exists
Make exists? use bound values.
2014-03-04 19:59:58 -08:00
Marcelo Casiraghi
acbd7ab22e Allow string hash values on AR order method
This behavior has almost no performance impact:

String not allowed  66.910000   0.030000  66.940000 ( 67.024976)
String allowed      69.360000   0.030000  69.390000 ( 69.503096)

Benchmarked with http://git.io/Y0YuRw.
2014-03-04 18:20:00 +01:00
Carlos Antonio da Silva
8ed0f542dd Inline block to fix indent [ci skip] 2014-03-04 09:50:39 -03:00
Vipul A M
6e66de6091 Fix enum test unused variable warning.
Related - 5c55aafd38
2014-03-04 18:06:19 +05:30
Dieter Komendera
5c55aafd38 Add Enum type to postgresql adapter's oids to prevent unknown OID warnings. 2014-03-04 10:32:20 +01:00
Martin Schürrer
f317cc8bc0 Make exists? use bound values.
When we build a query with an inline value that is a numeric (e.g.
because it's out of range for an int4) PostgreSQL doesn't use an index
on the column, since it's now comparing numerics and not int4s.

This leads to a _very_ slow query.

When we use bound parameters instead of inline values PostgreSQL
raises numeric_value_out_of_range since no automatic coercion happens.
2014-03-04 10:05:30 +01:00
Erik Michaels-Ober
3413b88a3d Replace map.flatten with flat_map in activerecord 2014-03-03 19:23:22 -08:00
Vipul A M
398b4de011 Fix warnings due to:
- unused variable in PG Adapter.
- Ambiguous argument warning from range_test for use - to + Infinity range without brackets.
2014-03-03 02:35:42 +05:30
Arthur Neves
774160b9ad
Remove unnecessary db call when replacing.
When replacing a has_many association with the same one, there is no
need to do a round-trip to the db to create/and drop a new transaction.

[fixes #14220]
2014-02-28 17:00:38 -05:00
Yves Senn
d1e7cd14c2 includes uses SQL parsing when String joins are involved.
This is a partial revert of 22b3481ba2aa55fad1f9a5db94072312b345fb55.
The current implementation of `references_eager_loaded_tables?` needs to know
every table involved in the query. With the current API this is not possible
without SQL parsing.

While a2dab46cae35a06fd5c5500037177492a047c252 deprecated SQL parsing for `includes`.
It did not issue deprecation warnings when String joins are involved. This resulted
in a breaking change after the deprecated behavior was removed (22b3481ba2aa55fad1f9a5db94072312b345fb55).

We will need to rethink the usage of `includes`, `preload` and `eager_load` but for now,
this brings back the old *working* behavior.
2014-02-28 09:56:07 +01:00
TheMonster
6e53d92498 Fix a bug affecting validations of enum attributes
This fixes a bug where any enum attribute of a model
would be evaluated always as 0 when calling the
database on validations.

This fix converts the value of the enum attribute
to its integer value rather than the string before
building the relation as the bug occured when the
string finally gets converted to integer using
string.to_i which converts it to 0.

[Vilius Luneckas, Ahmed AbouElhamayed]
2014-02-27 23:54:49 +02:00
Yves Senn
671e997e5a extract common code in uuid_test.rb. 2014-02-26 16:09:55 +01:00
Yves Senn
50be1d0d20 move PostgreSQL UUID tests from datatype_test.rb to uuid_test.rb. 2014-02-26 16:09:55 +01:00
Yves Senn
cfb2238145 test case for custom PostgreSQL enum type.
This test currently outputs the following warning:

```
unknown OID: current_mood(3567879) (SELECT  "postgresql_enums".* FROM "postgresql_enums"   ORDER BY "postgresql_enums"."id" ASC LIMIT 1)
unknown OID: current_mood(3567879) (SELECT  "postgresql_enums".* FROM "postgresql_enums"  WHERE "postgresql_enums"."id" = $1 LIMIT 1)
```

We have an open PR to deal with this issue. It will dynamically
register the OID for enum columns. This test case is merely to exhibit
the current behavior of PostgreSQL enum columns.
2014-02-26 14:20:14 +01:00
Aaron Patterson
b1656fa630 let insert_record actuall save the object.
`before_add` callbacks are fired before the record is saved on
`has_and_belongs_to_many` assocations *and* on `has_many :through`
associations.  Before this change, `before_add` callbacks would be fired
before the record was saved on `has_and_belongs_to_many` associations, but
*not* on `has_many :through` associations.

Fixes #14144
2014-02-25 14:57:49 -08:00
Jon Leighton
90ba6a762c Merge remote-tracking branch 'chancancode/fix_instance_method_already_implemented'
Conflicts:
	activerecord/CHANGELOG.md
2014-02-25 22:21:56 +00:00
Aaron Patterson
b189f2846a Merge pull request #14152 from schneems/schneems/fix-ar-wtf-why-is-there-no-environment
Handle missing environment from non empty config
2014-02-25 08:34:16 -08:00
Yasuo Honda
d64673c8fe Skip test_migrate_revert_add_index_with_name if databases
do not allow to create duplicate indexes on the same columns
2014-02-25 21:53:30 +09:00
Godfrey Chan
41554319f8 Fixed STI classes not defining an attribute method if there is a
conflicting private method defined on its ancestors.

The problem is that `method_defined_within?(name, klass, superklass)`
only works correclty when `klass` and `superklass` are both `Class`es.

If both `klass` and `superklass` are both `Class`es, they share the
same inheritance chain, so if a method is defined on `klass` but not
`superklass`, this method must be introduced at some point between
`klass` and `superklass`.

This does not work when `superklass` is a `Module`. A `Module`'s
inheritance chain contains just itself. So if a method is defined on
`klass` but not on `superklass`, the method could still be defined
somewhere upstream, e.g. in `Object`.

This fix works by avoiding calling `method_defined_within?` with a
module while still fufilling the requirement (checking that the
method is defined withing `superclass` but not is not a generated
attribute method).

4d8ee288 is likely an attempted partial fix for this problem. This
unrolls that fix and properly check the `superclass` as intended.

Fixes #11569.
2014-02-23 11:00:55 -08:00
Yves Senn
d9314b4c0a Coerce strings when reading attributes. 2014-02-23 13:42:16 +01:00
Yves Senn
91949e48cf deprecate support for pg ranges with excluding beginnings.
The Ruby Range object does not support excluding beginnings.
We currently support excluding beginnings for some subtypes using
manually by incrementing them (now using the `#succ` method).
This is approach is flawed as it's not equal to an excluding beginning.

This commit deprecates the current support for excluding beginnings.
It also raises an `ArgumentError` for subtypes that do not implement the `succ`
method.

This is a temporary solution to get rid of the broken state. We might still
add complete support for excluding beginnings afterwards. (Probably with a
new `PGRange` object, which acts like a `Range` but has excluding beginnings.
2014-02-23 12:47:30 +01:00
Yves Senn
4cb47167e7 dynamically define PostgreSQL OID range types.
This gets AR working with custom defined range types. It also
removes the need for subtype specific branches in `OID::Range`.

This expands the interface of all `OID` types with the `infinity` method.
It's responsible to provide a value for positive and negative infinity.
2014-02-23 12:47:30 +01:00
Jon Leighton
40a9d89877 Add tests for default scope behaviour change
See #13875
2014-02-23 11:14:05 +00:00
schneems
283a2edec2 Handle missing environment from non empty config
If using a `DATABASE_URL` and a `database.yml`. The connection information in `DATABASE_URL` should be merged into whatever environment we are in. As released in 4.1.0rc1 if someone has a database.yml but is missing a key like production:

```yml
development:
  host: localhost

```

Then the check for blank config will return false so the information from the `DATABASE_URL` will not be used when attempting to connect to the `production` database and the connection will incorrectly fail.

This commit fixes this problem and adds a test for the behavior.

In addition the ability to specify a connection url in a `database.yml` like this:

```
production: postgres://localhost/foo
```

Was introduced in 4.1.0rc1 though should not be used, instead using a url sub key

```
production:
  url: postgres://localhost/foo
```

This url sub key was also introduced in 4.1.0rc1 though the `production: postgres://localhost/foo` was not removed. As a result we should not test this behavior.
2014-02-21 16:18:10 -06:00
Aaron Patterson
7eaebd8579 adding a test for #14106 2014-02-20 11:26:07 -08:00
Aaron Patterson
358802b850 Revert "context in validation goes through has many relationship"
This reverts commit 5e3d466d52fa4e9a42c3a1f8773a7c31da875e48.
2014-02-20 11:26:07 -08:00