code: def rename(self, new_relation):
          
          # Relations store this stuff inside their `path` dict. But they
          # also store a table_name, and usually use it in their  .render(),
          # so we need to update that as well. It doesn't appear that
          # table_name is ever anything but the identifier (via .create())
          self.inner = self.inner.incorporate(
              path={
                  'database': new_relation.inner.database,
                  'schema': new_relation.inner.schema,
                  'identifier': new_relation.inner.identifier
              },
              table_name=new_relation.inner.identifier
          )
docs: Rename this cached relation to new_relation.
          Note that this will change the output of key(), all refs must be
          updated!
  
          :param _CachedRelation new_relation: The new name to apply to the
              relation