def METHOD_NAME(table_name: str, schema_name: Optional[str] = None, dblink_name: Optional[str] = None) -> DataTypes:
    """ Grab column names and database data types. """
    sql = """
        select    attname as column_name,
                  pg_catalog.format_type(atttypid, atttypmod) as data_type,
                  attnotnull as not_nullable
        from      pg_attribute
        where     attnum > 0 and attisdropped is false and attrelid = '{table}'::regclass
        order by  attnum
    """
    rows = _get_whatever(table_name, schema_name, dblink_name, sql, _data_types)
    return OrderedDict(
        tuple(
            (
                r["column_name"],
                ColumnDefinition(name=r["column_name"], data_type=r["data_type"], not_nullable=r["not_nullable"]),
            )
            for r in rows
        )
    )