mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed cached_properties that share a common property.
The aliases aren't cached and thus the old usage will be an error after refs #29478.
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							11bcb57ee2
						
					
				
				
					commit
					80ba7a881f
				
			| @@ -1,3 +1,5 @@ | |||||||
|  | import operator | ||||||
|  |  | ||||||
| from django.db.backends.base.features import BaseDatabaseFeatures | from django.db.backends.base.features import BaseDatabaseFeatures | ||||||
| from django.utils.functional import cached_property | from django.utils.functional import cached_property | ||||||
|  |  | ||||||
| @@ -91,7 +93,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): | |||||||
|     def has_select_for_update_skip_locked(self): |     def has_select_for_update_skip_locked(self): | ||||||
|         return not self.connection.mysql_is_mariadb and self.connection.mysql_version >= (8, 0, 1) |         return not self.connection.mysql_is_mariadb and self.connection.mysql_version >= (8, 0, 1) | ||||||
|  |  | ||||||
|     has_select_for_update_nowait = has_select_for_update_skip_locked |     has_select_for_update_nowait = property(operator.attrgetter('has_select_for_update_skip_locked')) | ||||||
|  |  | ||||||
|     @cached_property |     @cached_property | ||||||
|     def needs_explain_extended(self): |     def needs_explain_extended(self): | ||||||
|   | |||||||
| @@ -1,3 +1,5 @@ | |||||||
|  | import operator | ||||||
|  |  | ||||||
| from django.db.backends.base.features import BaseDatabaseFeatures | from django.db.backends.base.features import BaseDatabaseFeatures | ||||||
| from django.db.utils import InterfaceError | from django.db.utils import InterfaceError | ||||||
| from django.utils.functional import cached_property | from django.utils.functional import cached_property | ||||||
| @@ -64,10 +66,10 @@ class DatabaseFeatures(BaseDatabaseFeatures): | |||||||
|     def is_postgresql_10(self): |     def is_postgresql_10(self): | ||||||
|         return self.connection.pg_version >= 100000 |         return self.connection.pg_version >= 100000 | ||||||
|  |  | ||||||
|     has_select_for_update_skip_locked = is_postgresql_9_5 |     has_select_for_update_skip_locked = property(operator.attrgetter('is_postgresql_9_5')) | ||||||
|     has_brin_index_support = is_postgresql_9_5 |     has_brin_index_support = property(operator.attrgetter('is_postgresql_9_5')) | ||||||
|     has_jsonb_agg = is_postgresql_9_5 |     has_jsonb_agg = property(operator.attrgetter('is_postgresql_9_5')) | ||||||
|     has_brin_autosummarize = is_postgresql_10 |     has_brin_autosummarize = property(operator.attrgetter('is_postgresql_10')) | ||||||
|     has_gin_pending_list_limit = is_postgresql_9_5 |     has_gin_pending_list_limit = property(operator.attrgetter('is_postgresql_9_5')) | ||||||
|     supports_ignore_conflicts = is_postgresql_9_5 |     supports_ignore_conflicts = property(operator.attrgetter('is_postgresql_9_5')) | ||||||
|     has_phraseto_tsquery = is_postgresql_9_6 |     has_phraseto_tsquery = property(operator.attrgetter('is_postgresql_9_6')) | ||||||
|   | |||||||
| @@ -219,14 +219,14 @@ class SchemaTests(PostgreSQLTestCase): | |||||||
|             editor.remove_index(IntegerArrayModel, index) |             editor.remove_index(IntegerArrayModel, index) | ||||||
|         self.assertNotIn(index_name, self.get_constraints(IntegerArrayModel._meta.db_table)) |         self.assertNotIn(index_name, self.get_constraints(IntegerArrayModel._meta.db_table)) | ||||||
|  |  | ||||||
|  |     @mock.patch('django.db.backends.postgresql.features.DatabaseFeatures.has_gin_pending_list_limit', False) | ||||||
|     def test_gin_parameters_exception(self): |     def test_gin_parameters_exception(self): | ||||||
|         index_name = 'gin_options_exception' |         index_name = 'gin_options_exception' | ||||||
|         index = GinIndex(fields=['field'], name=index_name, gin_pending_list_limit=64) |         index = GinIndex(fields=['field'], name=index_name, gin_pending_list_limit=64) | ||||||
|         msg = 'GIN option gin_pending_list_limit requires PostgreSQL 9.5+.' |         msg = 'GIN option gin_pending_list_limit requires PostgreSQL 9.5+.' | ||||||
|         with self.assertRaisesMessage(NotSupportedError, msg): |         with self.assertRaisesMessage(NotSupportedError, msg): | ||||||
|             with mock.patch('django.db.connection.features.has_gin_pending_list_limit', False): |             with connection.schema_editor() as editor: | ||||||
|                 with connection.schema_editor() as editor: |                 editor.add_index(IntegerArrayModel, index) | ||||||
|                     editor.add_index(IntegerArrayModel, index) |  | ||||||
|         self.assertNotIn(index_name, self.get_constraints(IntegerArrayModel._meta.db_table)) |         self.assertNotIn(index_name, self.get_constraints(IntegerArrayModel._meta.db_table)) | ||||||
|  |  | ||||||
|     @skipUnlessDBFeature('has_brin_index_support') |     @skipUnlessDBFeature('has_brin_index_support') | ||||||
| @@ -259,7 +259,7 @@ class SchemaTests(PostgreSQLTestCase): | |||||||
|         index_name = 'brin_index_exception' |         index_name = 'brin_index_exception' | ||||||
|         index = BrinIndex(fields=['field'], name=index_name) |         index = BrinIndex(fields=['field'], name=index_name) | ||||||
|         with self.assertRaisesMessage(NotSupportedError, 'BRIN indexes require PostgreSQL 9.5+.'): |         with self.assertRaisesMessage(NotSupportedError, 'BRIN indexes require PostgreSQL 9.5+.'): | ||||||
|             with mock.patch('django.db.connection.features.has_brin_index_support', False): |             with mock.patch('django.db.backends.postgresql.features.DatabaseFeatures.has_brin_index_support', False): | ||||||
|                 with connection.schema_editor() as editor: |                 with connection.schema_editor() as editor: | ||||||
|                     editor.add_index(CharFieldModel, index) |                     editor.add_index(CharFieldModel, index) | ||||||
|         self.assertNotIn(index_name, self.get_constraints(CharFieldModel._meta.db_table)) |         self.assertNotIn(index_name, self.get_constraints(CharFieldModel._meta.db_table)) | ||||||
| @@ -269,7 +269,7 @@ class SchemaTests(PostgreSQLTestCase): | |||||||
|         index_name = 'brin_options_exception' |         index_name = 'brin_options_exception' | ||||||
|         index = BrinIndex(fields=['field'], name=index_name, autosummarize=True) |         index = BrinIndex(fields=['field'], name=index_name, autosummarize=True) | ||||||
|         with self.assertRaisesMessage(NotSupportedError, 'BRIN option autosummarize requires PostgreSQL 10+.'): |         with self.assertRaisesMessage(NotSupportedError, 'BRIN option autosummarize requires PostgreSQL 10+.'): | ||||||
|             with mock.patch('django.db.connection.features.has_brin_autosummarize', False): |             with mock.patch('django.db.backends.postgresql.features.DatabaseFeatures.has_brin_autosummarize', False): | ||||||
|                 with connection.schema_editor() as editor: |                 with connection.schema_editor() as editor: | ||||||
|                     editor.add_index(CharFieldModel, index) |                     editor.add_index(CharFieldModel, index) | ||||||
|         self.assertNotIn(index_name, self.get_constraints(CharFieldModel._meta.db_table)) |         self.assertNotIn(index_name, self.get_constraints(CharFieldModel._meta.db_table)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user