mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
This query doesn't add any value, because it'll be overwritten in migration 0002 anyway. And because it isn't batched, it can take several minutes to run on servers with hundreds of thousands to millions of messages of history. During that time, it's in a transaction, and thus one can't send messages, so it forces downtime.
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from django.db import models, migrations
|
|
from django.contrib.postgres import operations
|
|
from django.conf import settings
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('zerver', '0001_initial'),
|
|
]
|
|
|
|
database_setting = settings.DATABASES["default"]
|
|
if "postgres" in database_setting["ENGINE"]:
|
|
operations = [
|
|
migrations.RunSQL("""
|
|
ALTER ROLE %(USER)s SET search_path TO %(SCHEMA)s,public,pgroonga,pg_catalog;
|
|
|
|
SET search_path = %(SCHEMA)s,public,pgroonga,pg_catalog;
|
|
|
|
ALTER TABLE zerver_message ADD COLUMN search_pgroonga text;
|
|
|
|
-- TODO: We want to use CREATE INDEX CONCURRENTLY but it can't be used in
|
|
-- transaction. Django uses transaction implicitly.
|
|
-- Django 1.10 may solve the problem.
|
|
CREATE INDEX zerver_message_search_pgroonga ON zerver_message
|
|
USING pgroonga(search_pgroonga pgroonga.text_full_text_search_ops);
|
|
""" % database_setting,
|
|
"""
|
|
SET search_path = %(SCHEMA)s,public,pgroonga,pg_catalog;
|
|
|
|
DROP INDEX zerver_message_search_pgroonga;
|
|
ALTER TABLE zerver_message DROP COLUMN search_pgroonga;
|
|
|
|
SET search_path = %(SCHEMA)s,public;
|
|
|
|
ALTER ROLE %(USER)s SET search_path TO %(SCHEMA)s,public;
|
|
""" % database_setting),
|
|
]
|
|
else:
|
|
operations = []
|