'context manager entering in a new savepoint'

@contextmanager
@check
def savepoint(self):

    name = uuid.uuid1().hex
    self.execute(('SAVEPOINT    "%s"' % name))
    try:
        (yield)
    except Exception:
        self.execute(('ROLLBACK    TO    SAVEPOINT    "%s"' % name))
        raise
    else:
        self.execute(('RELEASE    SAVEPOINT    "%s"' % name))
