aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #25877 from kamipo/delegate_to_scope_rather_than_mergeMatthew Draper2017-02-213-24/+29
|\ | | | | Delegate to `scope` rather than `merge!` for collection proxy
| * Define `respond_to_missing?` instead of `respond_to?`Ryuta Kamizono2017-02-211-4/+4
| |
| * Cache target scope for collection proxyRyuta Kamizono2016-12-252-3/+4
| |
| * No need to cache collection proxies separatelyRyuta Kamizono2016-12-251-7/+1
| | | | | | | | Because merging the association scope was removed.
| * Delegate to `scope` rather than `merge!` for collection proxyRyuta Kamizono2016-12-252-14/+24
| | | | | | | | | | `merge! association.scope(nullify: false)` is expensive but most methods do not need the merge.
* | Merge pull request #27925 from robin850/hwia-removalKasper Timm Hansen2017-02-201-3/+3
|\ \ | | | | | | Remove the top-level `HashWithIndifferentAccess` contant
| * | Deprecate the top-level `HashWithIndifferentAccess` contantRobin Dupret2017-02-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | This constant was kept for the sake of backward compatibility; it is still available under `ActiveSupport::HashWithIndifferentAccess`. Furthermore, since Ruby 2.5 (https://bugs.ruby-lang.org/issues/11547) won't support top level constant lookup, people would have to update their code anyway.
* | | Improve `create_table force: true`Ryuta Kamizono2017-02-201-2/+2
|/ / | | | | | | | | Extra `data_source_exists?(table_name)` is unneeded if `drop_table(table_name, if_exists: true)` directly.
* | change ActiveModel::Validation to ActiveModel::Validations in commentsSen Zhang2017-02-151-1/+1
| |
* | Should keep the primary key column orderRyuta Kamizono2017-02-141-0/+1
| | | | | | | | | | | | Fixes CI failure caused by #27961. https://travis-ci.org/rails/rails/jobs/201472146#L2390-L2409
* | Merge pull request #27961 from jordanlewis/simplify-postgres-primary-keys-v2Sean Griffin2017-02-141-10/+10
|\ \ | | | | | | Simplify and optimize Postgres query for primary_keys()
| * | Simplify and optimize Postgres query for primary_keys()Jordan Lewis2017-02-131-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | primary_keys(table) needs to query various metadata tables in Postgres to determine the primary key for the table. Previously, it did so using a complex common table expression against pg_constraint and pg_attribute. This patch simplifies the query by using information_schema tables. This simplifies the logic, making the query far easier to understand, and additionally avoids an expensive unnest, window function query, and common table expression.
* | | Add `default_index_type?` to the generic schema dumper doesn't have the ↵Ryuta Kamizono2017-02-144-1/+13
|/ / | | | | | | knowledge about an index type
* | Merge pull request #26655 from kamipo/fix_remove_expression_indexRafael França2017-02-131-12/+16
|\ \ | | | | | | Fix `remove_index` to be able to remove expression indexes
| * | Fix `remove_index` to be able to remove expression indexesRyuta Kamizono2016-12-251-12/+16
| | | | | | | | | | | | Fixes #26635, #26641.
* | | Omit redundant `using: :btree` for schema dumpingRyuta Kamizono2017-02-131-1/+1
| | |
* | | Merge pull request #27122 from kamipo/fix_unscope_with_subqueryRafael França2017-02-131-14/+26
|\ \ \ | | | | | | | | Fix unscope with subquery
| * | | Refactor `except_predicates_and_binds` to avoid `tap`Ryuta Kamizono2017-02-131-12/+15
| | | |
| * | | Fix unscope with subqueryRyuta Kamizono2016-12-051-10/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently cannot unscope subquery properly. This commit fixes the issue. Fixes #26323.
* | | | Merge pull request #26930 from kamipo/index_name_exists_defaultRafael França2017-02-133-9/+15
|\ \ \ \ | | | | | | | | | | The `default` arg of `index_name_exists?` makes to optional
| * | | | Deprecate passing `default` to `index_name_exists?`Ryuta Kamizono2017-02-132-0/+10
| | | | |
| * | | | The `default` arg of `index_name_exists?` makes to optionalRyuta Kamizono2017-02-133-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `default` arg of `index_name_exists?` is only used the adapter does not implemented `indexes`. But currently all adapters implemented `indexes` (See #26688). Therefore the `default` arg is never used.
* | | | | Merge pull request #26630 from kamipo/quoted_binaryRafael França2017-02-134-20/+17
|\ \ \ \ \ | |/ / / / |/| | | | Extract `quoted_binary` and use it rather than override `_quote`
| * | | | Extract `quoted_binary` and use it rather than override `_quote`Ryuta Kamizono2016-09-274-20/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each databases have different binary representation. Therefore all adapters overrides `_quote` for quoting binary. Extract `quoted_binary` for quoting binary and use it rather than override `_quote`.
* | | | | Schema dumping support for PostgreSQL oid typeRyuta Kamizono2017-02-124-1/+20
| | | | | | | | | | | | | | | | | | | | Closes #27980
* | | | | Schema dumping support for PostgreSQL interval typeRyuta Kamizono2017-02-124-4/+12
| | | | | | | | | | | | | | | | | | | | Closes #27979
* | | | | Deprecate `supports_primary_key?`Ryuta Kamizono2017-02-124-17/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `supports_primary_key?` was added to determine if `primary_key` is implemented in the adapter in f060221. But we already use `primary_key` without `supports_primary_key?` (207f266, 5f3cf42) and using `supports_primary_key?` has been removed in #1318. This means that `supports_primary_key?` is no longer used in the internal and Active Record doesn't work without `primary_key` is implemented (all adapters must implement `primary_key`). Closes #27977
* | | | | Remove unused requireRyuta Kamizono2017-02-121-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These files are not using `strip_heredoc`. Closes #27976
* | | | | Make `table_name=` reset current statement cachenamusyaka2017-02-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So queries are not run against the previous table name. Closes #27953
* | | | | Deprecate calling `attr_will_change!` with non-attributesSean Griffin2017-02-112-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was never really intended to work (at least not without calling `define_attribute_methods`, which is less common with Active Record). As we move forward the intention is to require the use of `attribute` over `attr_accessor` for more complex model behavior both on Active Record and Active Model, so this behavior is deprecated. Fixes #27956. Close #27963. [Alex Serban & Sean Griffin]
* | | | | Fix bigint primary key with unsignedRyuta Kamizono2017-02-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently schema dumper lost the unsigned option when primary key is defined as bigint with unsigned. This commit fixes the issue. Closes #27960
* | | | | Merge pull request #27904 from ↵Eileen M. Uchitelle2017-02-101-0/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | kenta-s/add-methods-back-to-array-delegation-from-ar-relation Delegate `to_sentence` and `to_fomatted_s` to `records`
| * | | | | Delegate `to_sentence` and `to_fomatted_s` to `records`kenta-s2017-02-041-0/+1
| | | | | |
* | | | | | Revert "Simplify and speed up Postgres query for primary_keys"Ryuta Kamizono2017-02-101-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d6529af2954a67bd57fda45286fa9cfd0ff6b5ac.
* | | | | | Simplify and speed up Postgres query for primary_keysJordan Lewis2017-02-091-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | primary_keys(table) needs to query various metadata tables in Postgres to determine the primary key for the table. Previously, it did so using a complex common table expression against pg_constraint and pg_attribute. This patch simplifies the query by joining pg_index against pg_attribute instead of going through pg_constraint. This avoids an expensive unnest, window function query, and common table expression. EXPLAINing these queries in Postgres against a database with a single table with a composite primary key shows a 66% reduction in the plan and execute latencies. This is significant during application startup time, especially against very large schemas, where these queries would be even slower and more numerous. Closes #27949
* | | | | | Refactor `ColumnDefinition` to contain `options` hashRyuta Kamizono2017-02-0911-109/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Column options are passed as an hash args then used as `options` hash in `add_column_options!`. Converting args to attributes is inconvinient for using options as an hash.
* | | | | | Merge pull request #27945 from betesh/allow-frozen-hashes-to-as_jsonRafael Mendonça França2017-02-081-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Allow ActiveRecord::Base.as_json to accept a frozen Hash
| * | | | | | Allow ActiveRecord::Base.as_json to accept a frozen HashIsaac Betesh2017-02-081-1/+1
| | | | | | |
* | | | | | | Fix inspection behavior when the :id column is not primary keynamusyaka2017-02-091-1/+1
|/ / / / / /
* | | | | | Merge pull request #25873 from schuetzm/warn_about_dirty_lockRafael Mendonça França2017-02-071-1/+10
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Deprecate locking of dirty records
| * | | | | | Deprecate locking of dirty recordsMarc Schütz2017-02-071-1/+10
| | | | | | |
* | | | | | | Remove deprecated behavior that halts callbacks when the return is falseRafael Mendonça França2017-02-071-1/+0
|/ / / / / /
* | | | | | Revert "Remove useless `column_alias` in `subquery_for_count`"Ryuta Kamizono2017-02-071-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 28977f1fa3d7b15c1608174a165e60b71ddf3995.
* | | | | | Merge pull request #27334 from ↵Jeremy Daer2017-02-075-9/+51
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/pk_and_ref_columns_should_be_identical_type `primary_key` and `references` columns should be identical type
| * | | | | | `primary_key` and `references` columns should be identical typeRyuta Kamizono2017-02-075-9/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up to #26266. The default type of `primary_key` and `references` were changed to `bigint` since #26266. But legacy migration and sqlite3 adapter should keep its previous behavior.
* | | | | | | Merge pull request #26378 from ↵Jeremy Daer2017-02-064-41/+51
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/decouple_building_arel_ast_for_uniqueness_validator Decouple the building Arel ASTs for uniqueness validator
| * | | | | | | Add `:nodoc:` to `case_sensitive_comparison` and `case_insensitive_comparison`Ryuta Kamizono2017-01-202-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These methods are obviously for internal use.
| * | | | | | | Decouple the building Arel ASTs for uniqueness validatorRyuta Kamizono2016-12-254-38/+48
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently uniqueness validator is coupled with building Arel ASTs. This commit extracts `WhereClauseFactory#build_for_case_sensitive` for decouple the building Arel ASTs.
* | | | | | | Remove useless `column_alias` in `subquery_for_count`Ryuta Kamizono2017-02-061-3/+2
| |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If select clause is specified and last column has a column alias, additional column alias causes a statement invalid. Add test coverage for counting a single column with NULL values. Fixes #27676, #27682, and #27705.
* | | | | | Merge pull request #27389 from kamipo/fix_mysql_pk_dumping_correctlyJeremy Daer2017-02-066-18/+25
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Restore the behaviour of the compatibility layer for integer-like PKs * kamipo/fix_mysql_pk_dumping_correctly: Restore custom primary key tests lost at #26266 Restore the behaviour of the compatibility layer for integer-like PKs Correctly dump integer-like primary key with default nil