diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2020-01-15 15:33:22 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2020-01-15 15:33:24 -0800 |
commit | 96df40583576d6a00dd585628bb9569996d038b5 (patch) | |
tree | 485d74126148c747d9685ff12c76c5f289f6dea0 | |
parent | 689da76d1c759d6368d760b4a1fa942e16095a40 (diff) | |
download | fatcat-96df40583576d6a00dd585628bb9569996d038b5.tar.gz fatcat-96df40583576d6a00dd585628bb9569996d038b5.zip |
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!
-rw-r--r-- | rust/src/entity_crud.rs | 5 |
1 files changed, 4 insertions, 1 deletions
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)?; |