From 96df40583576d6a00dd585628bb9569996d038b5 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Wed, 15 Jan 2020 15:33:22 -0800 Subject: fatcatd: fix corner-case in abstracts insertion Both the release_abstract relation table and the abstracts table inserts were being gated by a check on new abstracts table rows. I *think* the chance of this having caused problems is low. The most likely would have been updates to exiting entities that somehow removed the abstracts content, but not the sha1 keys. This is not the default behavior of the API: either the entire abstract (content and hash) is returned, or the abstracts are hidden entirely (via `hide` flag). Still, best to be careful! --- rust/src/entity_crud.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'rust/src') diff --git a/rust/src/entity_crud.rs b/rust/src/entity_crud.rs index c0c9e30b..83dd26c9 100644 --- a/rust/src/entity_crud.rs +++ b/rust/src/entity_crud.rs @@ -2395,7 +2395,8 @@ impl EntityCrud for ReleaseEntity { .execute(conn)?; } - // limit is much smaller for abstracts, so don't need to batch + // abstracts-per-release limit is much smaller for abstracts (won't ever hit 65k row + // limit), so don't need to chunk these inserts if !abstract_rows.is_empty() { // Sort of an "upsert"; only inserts new abstract rows if they don't already exist insert_into(abstracts::table) @@ -2403,6 +2404,8 @@ impl EntityCrud for ReleaseEntity { .on_conflict(abstracts::sha1) .do_nothing() .execute(conn)?; + } + if !release_abstract_rows.is_empty() { insert_into(release_rev_abstract::table) .values(release_abstract_rows) .execute(conn)?; -- cgit v1.2.3