o 3a5@s*ddlmZddlmZGdddZdS))ProgrammingError)cached_propertyc@s2eZdZdZdZdZdZgZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dddddd d d d d ddddddZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZdZ?dZ@dZAdZBdZCdZDeEZFdZGdZHdZIdZJdZKdZLdZMdZNdZOdZPdZQdZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\dZ]e^Z_dZ`dZadZbdZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqdZrdZsdZtdZudddddZve^ZwiZxddZyezddZ{ezddZ|ddZ}dS)BaseDatabaseFeaturesFTN AutoField BigAutoFieldBigIntegerField BinaryField BooleanField CharField DurationFieldGenericIPAddressField IntegerFieldPositiveBigIntegerFieldPositiveIntegerFieldPositiveSmallIntegerFieldSmallAutoFieldSmallIntegerField TimeField)rrrrr r r r r rrrrrr)cics non_default swedish_cicCs ||_dS)N) connection)selfrrB/usr/lib/python3/dist-packages/django/db/backends/base/features.py__init__Qs zBaseDatabaseFeatures.__init__cCs|jjjduS)z5Does this backend support explaining query execution?N)ropsexplain_prefix)rrrr#supports_explaining_query_executionTsz8BaseDatabaseFeatures.supports_explaining_query_executioncCs|j5}|d|jd|d|j|jd|d|\}|dWd|dkS1s=wY|dkS) z!Confirm support for transactions.z"CREATE TABLE ROLLBACK_TEST (X INT)Fz(INSERT INTO ROLLBACK_TEST (X) VALUES (8)Tz"SELECT COUNT(X) FROM ROLLBACK_TESTzDROP TABLE ROLLBACK_TESTNr)rcursorexecuteset_autocommitrollbackfetchone)rr"countrrrsupports_transactionsYs            z*BaseDatabaseFeatures.supports_transactionscCs|jsdS|jjS)NF)allows_group_by_selected_pks_metamanaged)rmodelrrr%allows_group_by_selected_pks_on_modelgsz:BaseDatabaseFeatures.allows_group_by_selected_pks_on_model)~__name__ __module__ __qualname__ gis_enabledallows_group_by_loballows_group_by_pkr)empty_fetchmany_valueupdate_can_self_select!interprets_empty_strings_as_nulls$supports_nullable_unique_constraints.supports_partially_nullable_unique_constraints&supports_deferrable_unique_constraintscan_use_chunked_readscan_return_columns_from_insert can_return_rows_from_bulk_inserthas_bulk_insertuses_savepointscan_release_savepointsrelated_fields_match_typeallow_sliced_subqueries_with_inhas_select_for_updatehas_select_for_update_nowait!has_select_for_update_skip_lockedhas_select_for_update_ofhas_select_for_no_key_updateselect_for_update_of_column#test_db_allows_multiple_connectionssupports_unspecified_pksupports_forward_referencestruncates_nameshas_real_datatypesupports_subqueries_in_group_byhas_native_uuid_fieldhas_native_duration_fieldsupports_temporal_subtractionsupports_regex_backreferencing!supports_date_lookup_using_stringsupports_timezoneshas_zoneinfo_database-requires_explicit_null_ordering_when_groupingnulls_order_largest supports_order_by_nulls_modifierorder_by_nulls_firstmax_query_paramsallows_auto_pk_0can_defer_constraint_checks(supports_mixed_date_datetime_comparisonssupports_tablespacessupports_sequence_resetcan_introspect_defaultcan_introspect_foreign_keysintrospected_field_typessupports_index_column_ordering!can_introspect_materialized_viewscan_distinct_on_fieldsatomic_transactionscan_rollback_ddl!supports_atomic_references_renamesupports_combined_alterssupports_foreign_keyscan_create_inline_fkindexes_foreign_keys!supports_column_check_constraints supports_table_check_constraints can_introspect_check_constraintssupports_paramstyle_pyformatrequires_literal_defaultsconnection_persists_old_columnsrclosed_cursor_error_classhas_case_insensitive_likebare_select_suffiximplied_column_null%supports_select_for_update_with_limitgreatest_least_ignores_nullscan_clone_databasesignores_table_name_casefor_update_after_fromsupports_select_unionsupports_select_intersectionsupports_select_difference%supports_slicing_ordering_in_compound supports_parentheses_in_compound supports_aggregate_filter_clausesupports_index_on_text_fieldsupports_over_clause#supports_frame_range_fixed_distance4only_supports_unbounded_with_preceding_and_followingsupports_cast_with_precisiontime_cast_precision(create_test_procedure_without_params_sql(create_test_procedure_with_int_param_sqlsupports_callproc_kwargssetsupported_explain_formatsvalidates_explain_optionssupports_default_in_lead_lagsupports_ignore_conflictsrequires_casted_case_in_updatessupports_partial_indexes%supports_functions_in_partial_indexessupports_covering_indexessupports_expression_indexescollate_as_index_expression*allows_multiple_constraints_on_same_fields&supports_boolean_expr_in_select_clausesupports_json_fieldcan_introspect_json_field!supports_primitives_in_json_fieldhas_native_json_fieldhas_json_operatorssupports_json_field_contains-json_key_contains_list_matching_requires_listhas_json_object_functionsupports_collation_on_charfieldsupports_collation_on_textfield%supports_non_deterministic_collationstest_collationsdjango_test_expected_failuresdjango_test_skipsrrr!r(r-rrrrrs    rN) django.dbrdjango.utils.functionalrrrrrrs