Added missing test case for migrations when using sql structure
Refactor determination of max updated timestamp

`[].max # => nil`
Fix bug that make HashWithIndifferentAccess work differently of Hash

Before HashWithIndifferentAccess were doing deep_dup of the inner hashes
when Hash doesn't do. Now both are behaving in the same way.
add has_one? method and reuse instead of checking macro

Instead of checking for `macro == :has_one` throughout the
codebase we can create a `has_one?` method to match the `belongs_to?`,
`polymorphic?` and other methods.
Abstract away use of HABTM macro

By having the `:has_and_belongs_to_many` macro in the `@collection`
we are punishing `:has_many` associations because it has to allocate
the array and check the macro.

@collection is returned to `macro == :has_many` and a new reflection
class `HABTMReflection` is created to handle this case instead.
Merge pull request #15595 from eileencodes/abstract-away-habtm-macro

Abstract away use of HABTM macro
Merge pull request #15596 from eileencodes/add-has_one-method-and-reuse

add has_one? method and reuse instead of checking macro
reuse available collection? check instead of macro

Reflection has an available method that is used to check if the
reflection is a collection. Any :has_many macro is considered a
collection and `collection?` should be used instead of
`macro == :has_many`.
Merge pull request #15597 from eileencodes/reuse-available-collection-methods

reuse available collection? check instead of macro
Use HasAndBelongsToMany instead of HABTM
Merge pull request #15599 from arthurnn/HABTMAssociation

Use HasAndBelongsToMany instead of HABTM
[ci skip] Add note about type modifiers that cannot be specified in command line.
Merge pull request #15602 from JuanitoFatas/doc/type-modifier

[ci skip] Add note about type modifiers that cannot be specified in command line.
ActiveRecord::FinderMethods.find passes proc parameter #15382
Merge pull request #15584 from jamesyang124/issue_15382

ActiveRecord::FinderMethods.find doesn't pass proc parameter to array

Manual merge of #15584.

Closes #15584.
remove depricated Validatior#setup
[ci skip] Rename: Rails Database Migration to Active Record Migration.

This will need to setup permanent redirect for the old guide.
Merge pull request #15604 from JuanitoFatas/doc/migration

[ci skip] Rename: Rails Database Migration to Active Record Migration.
docs, refactor docs about column modifiers. [ci skip] [Matthew Draper & Yves Senn]

This is a follow up to #15602 which rendered the guides in a weird state:

  >  You can also specify some options just after the field type between curly
     braces. You can use the following modifiers:

  >  `null`         Allows or disallows `NULL` values in the column.

  >  NOTE: `null` and `default` cannot be specified via command line.

The modifiers are now moved into a separate section. The generator
simply referes to that section.

Related to #15583.

/cc @JuanitoFatas
test, fix typo, `create_index` does not exist.