Fix JOIN in author_search_vector_trigger, add missing WHERE clause

This commit is contained in:
Adeodato Simó 2023-11-25 01:49:14 -03:00
parent 416a6caf2d
commit bcb3a343d4
No known key found for this signature in database
GPG key ID: CDF447845F1A986F
3 changed files with 4 additions and 5 deletions

View file

@ -32,8 +32,8 @@ class Migration(migrations.Migration):
trigger=pgtrigger.compiler.Trigger( trigger=pgtrigger.compiler.Trigger(
name="reset_search_vector_on_author_edit", name="reset_search_vector_on_author_edit",
sql=pgtrigger.compiler.UpsertTriggerSql( sql=pgtrigger.compiler.UpsertTriggerSql(
func="WITH book AS (SELECT bookwyrm_book.id AS row_id FROM bookwyrm_author LEFT OUTER JOIN bookwyrm_book_authors ON bookwyrm_book_authors.id = new.id LEFT OUTER JOIN bookwyrm_book ON bookwyrm_book.id = bookwyrm_book_authors.book_id) UPDATE bookwyrm_book SET search_vector = '' FROM book WHERE id = book.row_id;RETURN NEW;", func="WITH book AS (SELECT bookwyrm_book.id AS row_id FROM bookwyrm_author LEFT OUTER JOIN bookwyrm_book_authors ON bookwyrm_book_authors.author_id = bookwyrm_author.id LEFT OUTER JOIN bookwyrm_book ON bookwyrm_book.id = bookwyrm_book_authors.book_id WHERE bookwyrm_author.id = new.id ) UPDATE bookwyrm_book SET search_vector = '' FROM book WHERE id = book.row_id;RETURN NEW;",
hash="9c0a472e2bf60e63d593cce49f47972c7b227a00", hash="abc8ea76fa1bf02a0f56aaae390c1b970bef1278",
operation='UPDATE OF "name"', operation='UPDATE OF "name"',
pgid="pgtrigger_reset_search_vector_on_author_edit_a447c", pgid="pgtrigger_reset_search_vector_on_author_edit_a447c",
table="bookwyrm_author", table="bookwyrm_author",

View file

@ -81,9 +81,10 @@ class Author(BookDataModel):
SELECT bookwyrm_book.id AS row_id SELECT bookwyrm_book.id AS row_id
FROM bookwyrm_author FROM bookwyrm_author
LEFT OUTER JOIN bookwyrm_book_authors LEFT OUTER JOIN bookwyrm_book_authors
ON bookwyrm_book_authors.id = new.id ON bookwyrm_book_authors.author_id = bookwyrm_author.id
LEFT OUTER JOIN bookwyrm_book LEFT OUTER JOIN bookwyrm_book
ON bookwyrm_book.id = bookwyrm_book_authors.book_id ON bookwyrm_book.id = bookwyrm_book_authors.book_id
WHERE bookwyrm_author.id = new.id
) )
UPDATE bookwyrm_book UPDATE bookwyrm_book
SET search_vector = '' SET search_vector = ''

View file

@ -1,6 +1,5 @@
""" test searching for books """ """ test searching for books """
import datetime import datetime
from unittest import expectedFailure
from django.db import connection from django.db import connection
from django.test import TestCase from django.test import TestCase
from django.utils import timezone from django.utils import timezone
@ -207,7 +206,6 @@ class SearchVectorTriggers(TestCase):
self.assertEqual(self.edition, self._search_first("Mozilla")) self.assertEqual(self.edition, self._search_first("Mozilla"))
self.assertEqual(self.edition, self._search_first("Name")) self.assertEqual(self.edition, self._search_first("Name"))
@expectedFailure
def test_search_after_updated_author_name(self): def test_search_after_updated_author_name(self):
"""book found under new author name""" """book found under new author name"""
self.assertEqual(self.edition, self._search_first("Name")) self.assertEqual(self.edition, self._search_first("Name"))