Xavier Noria
d22e522179
modernizes hash syntax in activerecord
2016-08-06 19:37:57 +02:00
Xavier Noria
e6ab70c439
applies new string literal convention to the rest of the project
...
The current code base is not uniform. After some discussion,
we have chosen to go with double quotes by default.
2016-08-06 19:28:46 +02:00
Xavier Noria
adca8154c6
applies new string literal convention in the gemspecs
...
The current code base is not uniform. After some discussion,
we have chosen to go with double quotes by default.
2016-08-06 19:27:12 +02:00
Xavier Noria
9617db2078
applies new string literal convention in activerecord/test
...
The current code base is not uniform. After some discussion,
we have chosen to go with double quotes by default.
2016-08-06 18:26:53 +02:00
Xavier Noria
4df2b779dd
applies new string literal convention in activerecord/lib
...
The current code base is not uniform. After some discussion,
we have chosen to go with double quotes by default.
2016-08-06 18:26:45 +02:00
Eileen M. Uchitelle
6510f9980d
Merge pull request #25998 from kamipo/enum_with_alias_attribute
...
Fix `enum` with `alias_attribute`
2016-08-06 10:30:15 -04:00
Eileen M. Uchitelle
53607c8e9f
Merge pull request #25665 from kamipo/remove_unused_table_arg
...
Remove unused `table` arg for `UniquenessValidator#scope_relation`
2016-08-05 16:41:45 -04:00
Eileen M. Uchitelle
2bd9ec6b3d
Merge pull request #26051 from kamipo/make_name_and_binds_to_optional_args
...
Make `name` and `binds` to optional args for `exec_{insert,update,delete}`
2016-08-05 16:32:14 -04:00
Sean Griffin
b63d532f1e
Don't assume all hashes are from multiparameter assignment in composed_of
...
So this bug is kinda funky. The code path is basically "if we weren't passed an
instance of the class we compose to, and we have a converter, call that".
Ignoring the hash case for a moment, everything after that was roughly intended
to be the "else" clause, meaning that we are expected to have an instance of
the class we compose to. Really, we should be blowing up in that case, as we
can give a much better error message than what they user will likely get (e.g.
`NameError: No method first for String` or something). Still, Ruby is duck
typed, so if the object you're assigning responds to the same methods as the
type you compose to, knock yourself out.
The hash case was added in 36e9be8 to remove a bunch of special cased code from
multiparameter assignment. I wrongly assumed that the only time we'd get a hash
there is in that case. Multiparameter assignment will construct a very specific
hash though, where the keys are integers, and we will have a set of keys
covering `1..part.size` exactly. I'm pretty sure this could actually be passed
around as an array, but that's a different story. Really I should convert this
to something like `class MultiParameterAssignment < Hash; end`, which I might
do soon. However for a change that I'm willing to backport to 4-2-stable, this
is what I want to go with for the time being.
Fixes #25978
2016-08-05 09:52:09 -04:00
David Heinemeier Hansson
7443a332a7
Leave internal pgsql name intact as const reference
2016-08-04 14:43:40 -07:00
David Heinemeier Hansson
ac76d551ce
The problem isn't the detection but the deadlock itself
2016-08-04 14:39:09 -07:00
Ryuta Kamizono
cdc466692c
Make name
and binds
to optional args for exec_{insert,update,delete}
...
`insert`, `update`, `delete`, and `exec_query` have a default value
against `name` and `binds`. But `exec_insert`, `exec_update`, and
`exec_delete` not have. It is an inconvenience and inconsistent.
2016-08-04 09:29:38 +09:00
Rafael Mendonça França
fac9938b91
Merge pull request #25107 from Erol/introduce-new-ar-transaction-error-classes
...
Introduce new ActiveRecord transaction error classes
Closes #26018
2016-08-03 07:05:22 -03:00
Rafael França
8ada07b2b8
Merge pull request #26026 from kamipo/tx_serialization_error_should_inherit_statement_invalid
...
`TransactionSerializationError` should inherit `StatementInvalid` for backward compatibility
2016-08-03 07:01:01 -03:00
Ryuta Kamizono
954b197056
Avoid duplicated set_inverse_instance
for target scope
...
Because `scope` (`target_scope`) is a `AssociationRelation`.
`AssociationRelation` handles `set_inverse_instance`.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/association_relation.rb#L31-L33
See also #26022 .
2016-08-03 15:20:04 +09:00
Kasper Timm Hansen
7f00b8fa97
Merge pull request #26022 from kamipo/remove_unnecessary_set_inverse_instance
...
Remove unnecessary `set_inverse_instance` in finder methods
2016-08-02 22:09:33 +02:00
Arthur Neves
88cdecc050
Remove extra connection pool creation
2016-08-02 13:46:07 -04:00
Vijay Dev
4d288f0b43
Merge branch 'master' of github.com:rails/docrails
2016-08-02 17:38:56 +00:00
Ryuta Kamizono
f78eda63ed
TransactionSerializationError
should inherit StatementInvalid
for backward compatibility
...
Originally `TransactionSerializationError` was `StatementInvalid` in
Rails 5.0. It should keep backward compatibility.
2016-08-02 23:52:02 +09:00
Ryuta Kamizono
a76ebe5019
Remove unnecessary set_inverse_instance
in finder methods
...
Because `scope` (`target_scope`) is a `AssociationRelation`.
`AssociationRelation` handles `set_inverse_instance`.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/association_relation.rb#L31-L33
2016-08-02 16:53:06 +09:00
Ryuta Kamizono
83f08647d6
Fix enum
with alias_attribute
...
Fixes #25892 .
2016-07-31 05:16:20 +09:00
Ryuta Kamizono
fa84a4d7c1
Remove unnecessary methods for NullRelation
2016-07-29 22:49:47 +09:00
Rafael França
b37bd3d52f
Merge pull request #25941 from kamipo/finder_methods_uses_load_target
...
`FinderMethods` uses `records` (`load_target`) when `loaded?` is true
2016-07-28 10:39:04 -03:00
Rafael França
519801db08
Merge pull request #25940 from kamipo/fix_collection_proxy_load
...
Fix to `CollectionProxy#load` does `load_target`
2016-07-28 10:36:50 -03:00
Rafael França
fb30df9c10
Merge pull request #25937 from kamipo/remove_prepare_binds_for_database
...
Remove `prepare_binds_for_database` internal method
2016-07-28 10:36:10 -03:00
Rafael França
be85efe8db
Merge pull request #25340 from kamipo/prevent_table_comment_query
...
Prevent `table_comment` query if a table doesn't have a comment
2016-07-28 10:33:41 -03:00
Rafael França
b3348819c5
Merge pull request #25974 from kamipo/avoid_calling_current_database_in_table_comment
...
Avoid calling `current_database` in `table_comment`
2016-07-28 10:31:38 -03:00
Ryuta Kamizono
5546f2d712
Avoid calling current_database
in table_comment
...
`current_database` executes a query and `table_comment` is called to all
tables even if a table does not have a comment. Using `current_database`
increases extra queries.
2016-07-28 16:29:26 +09:00
Ryuta Kamizono
8a3560ed1e
@quoted_{column,table}_names
should cache a frozen string
...
Caching a mutable string causes the following issue.
```
Loading development environment (Rails 5.1.0.alpha)
irb(main):001:0> ActiveRecord::Base.connection.quote_table_name('foo') << '!!'
=> "`foo`!!"
irb(main):002:0> ActiveRecord::Base.connection.quote_table_name('foo') << '!!'
=> "`foo`!!!!"
irb(main):003:0> ActiveRecord::Base.connection.quote_table_name('foo') << '!!'
=> "`foo`!!!!!!"
```
2016-07-28 16:01:30 +09:00
Ryuta Kamizono
5465508abe
Remove prepare_binds_for_database
internal method
...
To avoid relying on the connection adapter for type casting binds.
2016-07-28 14:28:44 +09:00
Ryuta Kamizono
fe48c97e26
FinderMethods
uses records
(load_target
) when loaded?
is true
2016-07-28 13:54:46 +09:00
Rafael França
70ec7feaec
Merge pull request #25767 from kamipo/association_name_is_the_same_as_join_table_name
...
Correctly return `associated_table` when `associated_with?` is true
2016-07-27 23:23:05 -03:00
Takeshi AKIMA
ea1dcbbc99
Add the TABLE_SCHEMA condition to the SELECT statement in table_comment ( #25945 )
...
[Rafael Mendonça França + Takeshi AKIMA]
2016-07-27 23:19:08 -03:00
Sean Griffin
a64d9835f1
Merge pull request #25702 from k0kubun/joins-circular-reference
...
Remove circular join references in join_dependency
2016-07-27 20:31:38 -04:00
Rafael França
c191778308
Merge pull request #25938 from kamipo/decouple_statement_cache_from_connection_adapter
...
Decouple statement cache from connection adapter
2016-07-27 20:10:31 -03:00
Takashi Kokubun
28c29973aa
Remove circular join references in join_dependency
...
Fixes #25653 .
2016-07-28 03:25:20 +09:00
Yves Senn
7e6996a1b3
Merge pull request #25958 from kamipo/should_be_target_loaded
...
Add an assertion to the tests that should be loaded the target.
2016-07-27 09:55:43 +02:00
Yves Senn
d0f8061cae
Merge pull request #25408 from kamipo/should_not_reuse_quoted_true
...
Quoting booleans should return a frozen string
2016-07-27 08:20:22 +02:00
Sean Griffin
d980abdb23
Merge pull request #25523 from kamipo/extract_quoted_binds_type_casted_binds
...
Extract `type_casted_binds` method
2016-07-26 17:38:17 -04:00
Ryuta Kamizono
a3a6d74c77
Quoting booleans should return a frozen string
...
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"
```
2016-07-27 00:44:16 +09:00
Ryuta Kamizono
92c8f01580
Add an assertion to the tests that should be loaded the target.
...
These test cases tests exactly mutating loaded target.
2016-07-27 00:32:50 +09:00
Santiago Pastorino
c4b33a7796
Merge pull request #25929 from kamipo/load_target_is_public_method
...
`load_target` is a public method
2016-07-26 11:43:47 -03:00
Ryuta Kamizono
944c7b9818
Make force_signal37_to_load_all_clients_of_firm
to private
...
This is not a test case.
2016-07-26 13:14:59 +09:00
Ryuta Kamizono
d31c2e2cf8
Extract type_casted_binds
method
...
Because `type_cast` against `binds` always requires
`attr.value_for_database` and this pattern appears frequently.
2016-07-26 09:49:53 +09:00
Sean Griffin
aa7a6047c2
Whoops, forgot the changelog entry for the previous commit
2016-07-25 11:13:01 -04:00
Sean Griffin
f0ddf87e4b
Correct the behavior of virtual attributes on models loaded from the db
...
Previously we had primarily tested the behavior of these attributes by
calling `.new`, allowing this to slip through the cracks. There were a
few ways in which they were behaving incorrectly.
The biggest issue was that attempting to read the attribute would
through a `MissingAttribute` error. We've corrected this by returning
the default value when the attribute isn't backed by a database column.
This is super special cased, but I don't see a way to avoid this
conditional. I had considered handling this higher up in
`define_default_attribute`, but we don't have the relevant information
there as users can provide new defaults for database columns as well.
Once I corrected this, I had noticed that the attributes were always
being marked as changed. This is because the behavior of
`define_default_attribute` was treating them as assigned from
`Attribute::Null`.
Finally, with our new implementation, `LazyAttributeHash` could no
longer be marshalled, as it holds onto a proc. This has been corrected
as well. I've not handled YAML in that class, as we do additional work
higher up to avoid YAML dumping it at all.
Fixes #25787
Close #25841
2016-07-25 11:12:06 -04:00
Xavier Noria
95b2a6abc7
adds missing requires
2016-07-24 21:29:29 +02:00
Ryuta Kamizono
ceee776b5d
Fix to CollectionProxy#load
does load_target
2016-07-25 00:00:38 +09:00
Ryuta Kamizono
e703de17d8
Decouple statement cache from connection adapter
...
`StatementCache` is hard-coded in `cacheable_query` and be passed
`visitor` and `collector` from connection adapter. Simply it is
enough to pass a collected value.
2016-07-24 22:18:07 +09:00
Xavier Noria
7714e83da0
removes spurious line
2016-07-24 00:50:24 +02:00