'Extract column details.
Falls back to a \'minimal support\' variant if full parse fails.
:param line: Any column-bearing line from SHOW CREATE TABLE'

def _parse_column(self, line, state):

    spec = None
    m = self._re_column.match(line)
    if m:
        spec = m.groupdict()
        spec['full'] = True
    else:
        m = self._re_column_loose.match(line)
        if m:
            spec = m.groupdict()
            spec['full'] = False
    if (not spec):
        util.warn(('Unknown    column    definition    %r' % line))
        return
    if (not spec['full']):
        util.warn(('Incomplete    reflection    of    column    definition    %r' % line))
    (name, type_, args, notnull) = (spec['name'], spec['coltype'], spec['arg'], spec['notnull'])
    try:
        col_type = self.dialect.ischema_names[type_]
    except KeyError:
        util.warn(("Did    not    recognize    type    '%s'    of    column    '%s'" % (type_, name)))
        col_type = sqltypes.NullType
    if ((args is None) or (args == '')):
        type_args = []
    elif ((args[0] == "'") and (args[(-1)] == "'")):
        type_args = self._re_csv_str.findall(args)
    else:
        type_args = [int(v) for v in self._re_csv_int.findall(args)]
    type_kw = {}
    for kw in ('unsigned', 'zerofill'):
        if spec.get(kw, False):
            type_kw[kw] = True
    for kw in ('charset', 'collate'):
        if spec.get(kw, False):
            type_kw[kw] = spec[kw]
    if issubclass(col_type, _EnumeratedValues):
        type_args = _EnumeratedValues._strip_values(type_args)
    type_instance = col_type(*type_args, **type_kw)
    (col_args, col_kw) = ([], {})
    col_kw['nullable'] = True
    if spec.get('notnull', False):
        col_kw['nullable'] = False
    if spec.get('autoincr', False):
        col_kw['autoincrement'] = True
    elif issubclass(col_type, sqltypes.Integer):
        col_kw['autoincrement'] = False
    default = spec.get('default', None)
    if (default == 'NULL'):
        default = None
    col_d = dict(name=name, type=type_instance, default=default)
    col_d.update(col_kw)
    state.columns.append(col_d)
