@@ -163,19 +163,22 @@ func (m *MariaDB) resolveAssets(assets []knowledge.AssetKey, registry *AssetRegi
163
163
164
164
stmt , err := tx .PrepareContext (context .Background (), "SELECT id FROM assets WHERE type = ? AND value = ?" )
165
165
if err != nil {
166
+ tx .Rollback ()
166
167
return fmt .Errorf ("Unable to prepare statement: %v" , err )
167
168
}
168
169
169
170
for _ , a := range assets {
170
171
q , err := stmt .QueryContext (context .Background (), a .Type , a .Key )
171
172
if err != nil {
173
+ tx .Rollback ()
172
174
return fmt .Errorf ("Unable to query asset %v: %v" , a , err )
173
175
}
174
176
defer q .Close ()
175
177
176
178
for q .Next () {
177
179
var idx int64
178
180
if err := q .Scan (& idx ); err != nil {
181
+ tx .Rollback ()
179
182
return fmt .Errorf ("Unable to retrieve id for %v: %v" , a , err )
180
183
}
181
184
registry .Set (knowledge .AssetKey (a ), idx )
@@ -223,10 +226,12 @@ INSERT INTO assets (type, value) VALUES (?, ?)`)
223
226
224
227
res , err := insertQuery .ExecContext (context .Background (), a .Type , a .Key )
225
228
if err != nil {
229
+ tx .Rollback ()
226
230
return 0 , fmt .Errorf ("Unable to insert asset %v: %v" , a , err )
227
231
}
228
232
idx , err := res .LastInsertId ()
229
233
if err != nil {
234
+ tx .Rollback ()
230
235
return 0 , fmt .Errorf ("Unable to retrieve last inserted ID: %v" , err )
231
236
}
232
237
registry .Set (knowledge .AssetKey (a ), idx )
@@ -262,6 +267,7 @@ func (m *MariaDB) upsertRelations(source string, relations []knowledge.Relation,
262
267
q , err := tx .PrepareContext (context .Background (),
263
268
"INSERT INTO relations (from_id, to_id, type, source) VALUES (?, ?, ?, ?)" )
264
269
if err != nil {
270
+ tx .Rollback ()
265
271
return 0 , fmt .Errorf ("Unable to prepare relation insertion query: %v" , err )
266
272
}
267
273
defer q .Close ()
@@ -286,6 +292,7 @@ func (m *MariaDB) upsertRelations(source string, relations []knowledge.Relation,
286
292
bar .Increment ()
287
293
continue
288
294
}
295
+ tx .Rollback ()
289
296
return 0 , fmt .Errorf ("Unable to insert relation %v (%d -> %d): %v" , r , idxFrom , idxTo , err )
290
297
}
291
298
bar .Increment ()
@@ -318,6 +325,7 @@ INNER JOIN assets a ON r.from_id = a.id
318
325
INNER JOIN assets b ON r.to_id = b.id
319
326
WHERE a.type = ? AND a.value = ? AND b.type = ? AND b.value = ? AND r.type = ? AND r.source = ?` )
320
327
if err != nil {
328
+ tx .Rollback ()
321
329
return 0 , 0 , err
322
330
}
323
331
defer stmt .Close ()
@@ -326,11 +334,13 @@ WHERE a.type = ? AND a.value = ? AND b.type = ? AND b.value = ? AND r.type = ? A
326
334
res , err := stmt .ExecContext (context .Background (),
327
335
r .From .Type , r .From .Key , r .To .Type , r .To .Key , r .Type , source )
328
336
if err != nil {
337
+ tx .Rollback ()
329
338
return 0 , 0 , fmt .Errorf ("Unable to detete relation %v: %v" , r , err )
330
339
}
331
340
bar .Increment ()
332
341
rCount , err := res .RowsAffected ()
333
342
if err != nil {
343
+ tx .Rollback ()
334
344
return 0 , 0 , fmt .Errorf ("Unable to count rows affected by relations deletion: %v" , err )
335
345
}
336
346
removedCount += rCount
@@ -342,11 +352,13 @@ DELETE a FROM assets a
342
352
WHERE id NOT IN (select from_id from relations)
343
353
AND id NOT IN (select to_id from relations)` )
344
354
if err != nil {
355
+ tx .Rollback ()
345
356
return 0 , 0 , fmt .Errorf ("Unable to delete assets: %v" , err )
346
357
}
347
358
348
359
removedAssetsCount , err := res .RowsAffected ()
349
360
if err != nil {
361
+ tx .Rollback ()
350
362
return 0 , 0 , fmt .Errorf ("Unable to count rows affected by assets deletion: %v" , err )
351
363
}
352
364
0 commit comments