module ActiveRecord::ConnectionAdapters::Savepoints

def create_savepoint(name = current_savepoint_name)

def create_savepoint(name = current_savepoint_name)
  execute("SAVEPOINT #{name}", "TRANSACTION")
end

def current_savepoint_name

def current_savepoint_name
  current_transaction.savepoint_name
end

def exec_rollback_to_savepoint(name = current_savepoint_name)

def exec_rollback_to_savepoint(name = current_savepoint_name)
  execute("ROLLBACK TO SAVEPOINT #{name}", "TRANSACTION")
end

def release_savepoint(name = current_savepoint_name)

def release_savepoint(name = current_savepoint_name)
  execute("RELEASE SAVEPOINT #{name}", "TRANSACTION")
end