'Return a Unicode SHOW TABLES from a given schema.'

@reflection.cache
def get_table_names(self, connection, schema=None, **kw):

    if (schema is not None):
        current_schema = schema
    else:
        current_schema = self.default_schema_name
    charset = self._connection_charset
    if (self.server_version_info < (5, 0, 2)):
        rp = connection.execute(('SHOW    TABLES    FROM    %s' % self.identifier_preparer.quote_identifier(current_schema)))
        return [row[0] for row in self._compat_fetchall(rp, charset=charset)]
    else:
        rp = connection.execute(('SHOW    FULL    TABLES    FROM    %s' % self.identifier_preparer.quote_identifier(current_schema)))
        return [row[0] for row in self._compat_fetchall(rp, charset=charset) if (row[1] == 'BASE    TABLE')]
