from django.conf import settings from django.db import migrations class Migration(migrations.Migration): dependencies = [ ('zerver', '0001_initial'), ] database_setting = settings.DATABASES["default"] if "postgres" in database_setting["ENGINE"]: operations = [ migrations.RunSQL([(""" 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; 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); END$$ """, database_setting)], [(""" DO $$BEGIN 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; EXECUTE format('ALTER ROLE %%I SET search_path TO %%L,public', %(USER)s, %(SCHEMA)s); END$$ """, database_setting)]), ] else: operations = []