Add Postgresql warning when using DROP INDEX without CONCURRENTLY keyword

This commit is contained in:
David Wobrock committed 2021-06-19 18:15:40 +02:00
1 parent 70db245df3
commit 2bf87c0659
2 files changed
+20 -3

No files matched your search

+13 -3
View File
@@ -13,9 +13,11 @@ class SqlAnalyserTestCase(unittest.TestCase):
sql_statements=sql, database_vendor=self.database_vendor
)
def assertValidSql(self, sql):
errors, _, _ = self.analyse_sql(sql)
def assertValidSql(self, sql, allow_warnings=False):
errors, _, warnings = self.analyse_sql(sql)
self.assertEqual(0, len(errors), "Found errors in sql: {}".format(errors))
if not allow_warnings:
self.assertEqual(0, len(warnings), "Found warnings in sql: {}".format(errors))
def assertBackwardIncompatibleSql(self, sql):
errors, _, _ = self.analyse_sql(sql)
@@ -187,7 +189,7 @@ class PostgresqlAnalyserTestCase(SqlAnalyserTestCase):
'CREATE INDEX "app_add_manytomany_field_b_many_to_many_b_id_953b185b" ON "app_add_manytomany_field_b_many_to_many"("b_id");',
'CREATE INDEX "app_add_manytomany_field_b_many_to_many_a_id_4b44832a" ON "app_add_manytomany_field_b_many_to_many"("a_id");',
]
self.assertValidSql(sql)
self.assertValidSql(sql, allow_warnings=True)
def test_make_column_not_null_with_django_default(self):
sql = [
@@ -219,3 +221,11 @@ class PostgresqlAnalyserTestCase(SqlAnalyserTestCase):
self.assertValidSql(sql)
sql = "CREATE UNIQUE INDEX CONCURRENTLY title_idx ON films (title);"
self.assertValidSql(sql)
def test_drop_index_non_concurrently(self):
sql = "DROP INDEX ON films"
self.assertWarningSql(sql)
def test_drop_index_concurrently(self):
sql = "DROP INDEX CONCURRENTLY ON films;"
self.assertValidSql(sql)