There's a lot of repetitions of 
```python
if (connection.features.can_introspect_max_length and
                not connection.features.interprets_empty_strings_as_nulls):
```
in this function now. Also, for Oracle, it doesn't check things it could check (e.g. that `ip_address_field` is a CharField). I think both issues could be addressed with a smarter field-type-asserter; perhaps this is out of scope for the PR, and should be done separately.