Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/db/backends/postgresql/features.py: 95%

61 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1import operator 

2 

3from django.db import InterfaceError 

4from django.db.backends.base.features import BaseDatabaseFeatures 

5from django.utils.functional import cached_property 

6 

7 

8class DatabaseFeatures(BaseDatabaseFeatures): 

9 allows_group_by_selected_pks = True 

10 can_return_columns_from_insert = True 

11 can_return_rows_from_bulk_insert = True 

12 has_real_datatype = True 

13 has_native_uuid_field = True 

14 has_native_duration_field = True 

15 has_native_json_field = True 

16 can_defer_constraint_checks = True 

17 has_select_for_update = True 

18 has_select_for_update_nowait = True 

19 has_select_for_update_of = True 

20 has_select_for_update_skip_locked = True 

21 has_select_for_no_key_update = True 

22 can_release_savepoints = True 

23 supports_tablespaces = True 

24 supports_transactions = True 

25 can_introspect_materialized_views = True 

26 can_distinct_on_fields = True 

27 can_rollback_ddl = True 

28 supports_combined_alters = True 

29 nulls_order_largest = True 

30 closed_cursor_error_class = InterfaceError 

31 has_case_insensitive_like = False 

32 greatest_least_ignores_nulls = True 

33 can_clone_databases = True 

34 supports_temporal_subtraction = True 

35 supports_slicing_ordering_in_compound = True 

36 create_test_procedure_without_params_sql = """ 

37 CREATE FUNCTION test_procedure () RETURNS void AS $$ 

38 DECLARE 

39 V_I INTEGER; 

40 BEGIN 

41 V_I := 1; 

42 END; 

43 $$ LANGUAGE plpgsql;""" 

44 create_test_procedure_with_int_param_sql = """ 

45 CREATE FUNCTION test_procedure (P_I INTEGER) RETURNS void AS $$ 

46 DECLARE 

47 V_I INTEGER; 

48 BEGIN 

49 V_I := P_I; 

50 END; 

51 $$ LANGUAGE plpgsql;""" 

52 requires_casted_case_in_updates = True 

53 supports_over_clause = True 

54 only_supports_unbounded_with_preceding_and_following = True 

55 supports_aggregate_filter_clause = True 

56 supported_explain_formats = {"JSON", "TEXT", "XML", "YAML"} 

57 supports_deferrable_unique_constraints = True 

58 has_json_operators = True 

59 json_key_contains_list_matching_requires_list = True 

60 test_collations = { 

61 "non_default": "sv-x-icu", 

62 "swedish_ci": "sv-x-icu", 

63 } 

64 test_now_utc_template = "STATEMENT_TIMESTAMP() AT TIME ZONE 'UTC'" 

65 

66 django_test_skips = { 

67 "opclasses are PostgreSQL only.": { 

68 "indexes.tests.SchemaIndexesNotPostgreSQLTests." 

69 "test_create_index_ignores_opclasses", 

70 }, 

71 } 

72 

73 @cached_property 

74 def introspected_field_types(self): 

75 return { 

76 **super().introspected_field_types, 

77 "PositiveBigIntegerField": "BigIntegerField", 

78 "PositiveIntegerField": "IntegerField", 

79 "PositiveSmallIntegerField": "SmallIntegerField", 

80 } 

81 

82 @cached_property 

83 def is_postgresql_11(self): 

84 return self.connection.pg_version >= 110000 

85 

86 @cached_property 

87 def is_postgresql_12(self): 

88 return self.connection.pg_version >= 120000 

89 

90 @cached_property 

91 def is_postgresql_13(self): 

92 return self.connection.pg_version >= 130000 

93 

94 has_websearch_to_tsquery = property(operator.attrgetter("is_postgresql_11")) 

95 supports_covering_indexes = property(operator.attrgetter("is_postgresql_11")) 

96 supports_covering_gist_indexes = property(operator.attrgetter("is_postgresql_12")) 

97 supports_non_deterministic_collations = property( 

98 operator.attrgetter("is_postgresql_12") 

99 )