Merge pull request #14999 from yahonda/modify_bind_variable_name

Modify assert conditions not to be affected
by each database bind variable naming conventions

Closes #14999.
Handle other pk types in PostgreSQL gracefully.

In #10410 it was noted that you can no longer create PK's with the
type of bigserial in PostgreSQL in 4.0.0.rc1. This is mostly
because the newer adapter is checking for column type with the
id column instead of just letting it pass through like it did
before.

Side effects:
You may just create a PK column of a type that you really don't
want to be your PK. As far as I can tell this was allowed in 3.2.X
and perhaps an exception should be raised if you try and do
something extremely dumb.
Merge pull request #10505 from patricksrobertson/bigserial_id_not_identifying_pk

Handle other pk types in PostgreSQL gracefully.

Closes #10505.

- rebased
- test slightly modified
pg, fix Infinity and NaN values conversion.

Before this patch `Infinity`, `-Infinity` and `Nan` were read as `0`.
Merge pull request #13334 from gregolsen/postgresql_infinity

pg, fix Infinity and NaN values conversion.

Closes #13334.

* rebased
* removed guard
* inlined guard into case statement
pg, map `char` and `name` types as string. [dark-panda & Yves Senn]

Closes #10802.
pg, `change_column_default` accepts `[]`. Closes #11586.
:scissors:
test, use `columns_hash[]` in place of `columns.find {}`.
Add multiple lines message support for SSE module
Use block parameter rather than `$1` during `gsub!` so `ActiveSupport::SafeBuffer` values aren't mangled.

Fixes #15064
Require active_support/core_ext/string/output_safety and use html_safe rather than use non-public SafeBuffer API.
Update and add tests in array_ext_test.rb

- Fix `test_to_with_instruct` typo to `test_to_xml_with_instruct`

- Rename `test_to_xml` to `test_to_xml_with_hash_elements` to make test
name more specific.

- Add `test_to_xml_with_non_hash_elements` and
`test_to_xml_with_non_hash_different_type_elements`

  `to_xml` behaves different when containing elements are same and
  different types.

- Add `test_to_xml_with_indent_set`
Update require in `array_ext_test.rb`

Removed `FIMXE` tag to require necessary file but not the whole core_ext
Hash#except is expensive and this is a hotspot, so use a dup + delete
make the module version quack the same as the instance

this way we can stop checking respond_to on every call.
extract route key translation to a method and reuse it
simplify AC:ViewPaths::_prefixes. by making it recursively traversing up the inheritance chain, classes can override local prefixes.
reduce conditionals in url_for
deprecate AbC:Base::parent_prefixes.
rename ::_local_prefixes to ::local_prefixes to state the public attribute.
document the latter.
make ::local_prefixes private, test overriding it and remove documentation for overriding ::_parent_prefixes.