|
|
@ -53,10 +53,14 @@ const (
|
|
|
|
numRestores = "num_restores"
|
|
|
|
numRestores = "num_restores"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// BackupFormat represents the format of database backup.
|
|
|
|
type BackupFormat int
|
|
|
|
type BackupFormat int
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
const (
|
|
|
|
|
|
|
|
// BackupSQL is the plaintext SQL command format.
|
|
|
|
BackupSQL BackupFormat = iota
|
|
|
|
BackupSQL BackupFormat = iota
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// BackupBinary is a SQLite file backup format.
|
|
|
|
BackupBinary
|
|
|
|
BackupBinary
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
@ -501,7 +505,7 @@ func (s *Store) Execute(ex *ExecuteRequest) ([]*sql.Result, error) {
|
|
|
|
|
|
|
|
|
|
|
|
// ExecuteOrAbort executes the requests, but aborts any active transaction
|
|
|
|
// ExecuteOrAbort executes the requests, but aborts any active transaction
|
|
|
|
// on the underlying database in the case of any error.
|
|
|
|
// on the underlying database in the case of any error.
|
|
|
|
func (s *Store) ExecuteOrAbort(ex *ExecuteRequest) (results []*sql.Result, ret_err error) {
|
|
|
|
func (s *Store) ExecuteOrAbort(ex *ExecuteRequest) (results []*sql.Result, retErr error) {
|
|
|
|
defer func() {
|
|
|
|
defer func() {
|
|
|
|
var errored bool
|
|
|
|
var errored bool
|
|
|
|
for i := range results {
|
|
|
|
for i := range results {
|
|
|
@ -510,7 +514,7 @@ func (s *Store) ExecuteOrAbort(ex *ExecuteRequest) (results []*sql.Result, ret_e
|
|
|
|
break
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ret_err != nil || errored {
|
|
|
|
if retErr != nil || errored {
|
|
|
|
if err := s.db.AbortTransaction(); err != nil {
|
|
|
|
if err := s.db.AbortTransaction(); err != nil {
|
|
|
|
s.logger.Printf("WARNING: failed to abort transaction: %s", err.Error())
|
|
|
|
s.logger.Printf("WARNING: failed to abort transaction: %s", err.Error())
|
|
|
|
}
|
|
|
|
}
|
|
|
|