code: def invalidates_reflection_cache(f):
      
  
      @functools.wraps(f)
      def wrapped(self, *args, **kwargs):
          result = f(self, *args, **kwargs)
  
          # only invalidate the cache after we've succesfully called the wrapped
          # function
          self._reflection_cache_is_dirty = True
          return result
  
      return wrapped
docs: Invalidate the SQLAlchemy reflection cache if `f` performs an operation
      that mutates database or table metadata such as ``CREATE TABLE``,
      ``DROP TABLE``, etc.
  
      Parameters
      ----------
      f : callable
          A method on :class:`ibis.sql.alchemy.AlchemyClient`