mirror of
https://github.com/django/django.git
synced 2025-09-23 02:33:31 +00:00

An index on TextField results in a warning message when running tests
on MySQL or SQLite, and the test using the TextField was PostgreSQL
only in any case.
Backpatch of 13a2b11425
27 lines
1.2 KiB
Python
27 lines
1.2 KiB
Python
from django.core.management.color import no_style
|
|
from django.db import connections, DEFAULT_DB_ALIAS
|
|
from django.test import TestCase
|
|
from django.utils.unittest import skipUnless
|
|
|
|
from .models import Article
|
|
|
|
|
|
class IndexesTests(TestCase):
|
|
def test_index_together(self):
|
|
connection = connections[DEFAULT_DB_ALIAS]
|
|
index_sql = connection.creation.sql_indexes_for_model(Article, no_style())
|
|
self.assertEqual(len(index_sql), 1)
|
|
|
|
@skipUnless(connections[DEFAULT_DB_ALIAS].vendor == 'postgresql',
|
|
"This is a postgresql-specific issue")
|
|
def test_postgresql_text_indexes(self):
|
|
"""Test creation of PostgreSQL-specific text indexes (#12234)"""
|
|
from .models import IndexedArticle
|
|
connection = connections[DEFAULT_DB_ALIAS]
|
|
index_sql = connection.creation.sql_indexes_for_model(IndexedArticle, no_style())
|
|
self.assertEqual(len(index_sql), 5)
|
|
self.assertIn('("headline" varchar_pattern_ops)', index_sql[1])
|
|
self.assertIn('("body" text_pattern_ops)', index_sql[3])
|
|
# unique=True and db_index=True should only create the varchar-specific
|
|
# index (#19441).
|
|
self.assertIn('("slug" varchar_pattern_ops)', index_sql[4])
|