Merge pull request #10437 from neerajdotname/10419

raise IrreversibleMigration if no column given
Conflicts:
	activerecord/CHANGELOG.md
let rake tasks be robust to a missing RDoc in Rubinius [Fixes #10462]

See the comment in the rescue clause towards the top of the patch for the rationale.
Merge pull request #10488 from neerajdotname/10419-b

fix failing test caused by 3771e4d511
Merge pull request #10352 from zohlgren/fix_activerecord_sanitization_sanitize_sql_hash

Fix bug in ActiveRecord::Sanitization#sanitize_sql_hash_for_conditions
Conflicts:
	activerecord/CHANGELOG.md
Fix test asserting the sanitized SQL hash differently to some adapters
Merge pull request #10478 from cainlevy/patch-1

use canonical #controller_path logic in controller test cases
Merge pull request #10489 from greenriver/ar_counter_cache_multiple_destroy

Confirm a record has not already been destroyed before decrementing counter cache

Conflicts:
	activerecord/CHANGELOG.md

Conflicts:
	activerecord/CHANGELOG.md
Merge pull request #10377 from bricker/template_digest_ending_with_number

Allow numbers in partial name for digesting
Conflicts:
	actionpack/CHANGELOG.md
Test that #fresh_when accepts an array

https://github.com/rails/etagger/pull/3
Merge pull request #10455 from patricksrobertson/bigserial_id_not_identifying_pk

Add PK constraint on bigserial ID columns on postgres adapter
Revert "Merge pull request #10455 from patricksrobertson/bigserial_id_not_identifying_pk"

This reverts commit 3043d45eefc3776d5f3a9e7d212a01f99d869ef8, reversing
changes made to ca0275d36b395631725c4583db5a45c06443fdb9.
Revert "Fixes skipping object callback filters"

This reverts commit 8e1d3cd4909c83bbceb7df00da71ec1393a90f6e.

Conflicts:
	activesupport/CHANGELOG.md
	activesupport/lib/active_support/callbacks.rb
Fix that JSON and XML exception responses should give the HTTP error message for their status, by default, not the message from the underlying exception
"rails" -> "Rails" [ci skip]
Fix that #exists? can produce invalid SQL: "SELECT DISTINCT DISTINCT"

The combination of a :uniq => true association and the #distinct call
in #construct_limited_ids_condition combine to create invalid SQL, because
we're explicitly selecting DISTINCT, and also sending #distinct on to AREL,
via the relation#distinct_value.

Rather than build a select distinct clause in #construct_limited_ids_condition,
I set #distinct! and pass just the columns into the select statement.
This requires introducing a #columns_for_distinct method to return the
select columns but not the statement itself.
Don't try to EXPLAIN select_db calls
Set the inverse when association queries are refined

Suppose Man has_many interests, and inverse_of is used.

Man.first.interests.first.man will correctly execute two queries,
avoiding the need for a third query when Interest#man is called. This is
because CollectionAssociation#first calls set_inverse_instance.

However Man.first.interests.where("1=1").first.man will execute three
queries, even though this is obviously a subset of the records in the
association.

This is because calling where("1=1") spawns a new Relation object from
the CollectionProxy object, and the Relation has no knowledge of the
association, so it cannot set the inverse instance.

This commit solves the problem by making relations spawned from
CollectionProxies return a new Relation subclass called
AssociationRelation, which does know about associations. Records loaded
from this class will get the inverse instance set properly.

Fixes #5717.

Live commit from La Conf! :sparkles:
Move #proxy_association method to AssociationRelation
Merge pull request #10554 from dasch/dasch/dont-try-to-explain-it-dont-matter

Don't try to EXPLAIN select_db calls
Don't modify args in TableDefinition#primary_key

Previously, if you reused a hash that was passed into a table definition,
then subsequent tables' primary keys would be set to "true" instead of "id".