zulip/pgroonga/migrations/0003_v2_api_upgrade.py

65 lines
1.9 KiB
Python

from django.conf import settings
from django.db import migrations
class Migration(migrations.Migration):
atomic = False
dependencies = [
("pgroonga", "0002_html_escape_subject"),
]
database_setting = settings.DATABASES["default"]
operations = [
# This migration does the following things:
# * Undoes the `search_path` changes from the original migration 0001,
# which are no longer necessary with the modern PGroonga API.
# (Note that we've deleted those changes from the current version of the
# 0001 migration).
# * Drops a legacy-format v1 index if present (will be only if upgrading
# an old server).
# * Does a CREATE INDEX CONCURRENTLY to add a PGroonga v2 search index
# on the message.search_pgroonga column (which was populated in
# migration 0002).
migrations.RunSQL(
[
(
"""
DO $$BEGIN
EXECUTE format('ALTER ROLE %%I SET search_path TO %%L,public', %(USER)s, %(SCHEMA)s);
SET search_path = %(SCHEMA)s,public;
DROP INDEX IF EXISTS zerver_message_search_pgroonga;
END$$
""",
database_setting,
),
"""
CREATE INDEX CONCURRENTLY zerver_message_search_pgroonga ON zerver_message
USING pgroonga(search_pgroonga pgroonga_text_full_text_search_ops_v2);
""",
],
[
(
"""
DO $$BEGIN
EXECUTE format('ALTER ROLE %%I SET search_path TO %%L,public,pgroonga,pg_catalog', %(USER)s, %(SCHEMA)s);
SET search_path = %(SCHEMA)s,public,pgroonga,pg_catalog;
DROP INDEX IF EXISTS zerver_message_search_pgroonga;
END$$
""",
database_setting,
),
"""
CREATE INDEX CONCURRENTLY zerver_message_search_pgroonga ON zerver_message
USING pgroonga(search_pgroonga pgroonga.text_full_text_search_ops);
""",
],
),
]