3
v^.                 @   s*   d dl mZ d dlmZ G dd dZdS )    )ProgrammingError)cached_propertyc               @   s  e Zd ZdZdZdZg ZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJeKZLdZMdZNdZOdZPdZQdZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^dZ_dZ`dZadZbdZced ZedZfdZgdZhdZidZjdZkdZldZmd	d
 Zneodd Zpeodd Zqdd ZrdS )BaseDatabaseFeaturesFTNBigAutoFieldSmallAutoFieldBooleanField    c             C   s
   || _ d S )N)
connection)selfr
    r   D/usr/lib/python3.6/site-packages/django/db/backends/base/features.py__init__'  s    zBaseDatabaseFeatures.__init__c             C   s   | j jjdk	S )z5Does this backend support explaining query execution?N)r
   opsZexplain_prefix)r   r   r   r   #supports_explaining_query_execution*  s    z8BaseDatabaseFeatures.supports_explaining_query_executionc          	   C   sr   | j j Z}|jd | j jd |jd | j j  | j jd |jd |j \}|jd W dQ R X |dkS )	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_TESTzDROP TABLE ROLLBACK_TESTNr   )r
   cursorexecuteset_autocommitrollbackfetchone)r   r   countr   r   r   supports_transactions/  s    




z*BaseDatabaseFeatures.supports_transactionsc             C   s   | j s
dS |jjS )NF)allows_group_by_selected_pks_metamanaged)r   modelr   r   r   %allows_group_by_selected_pks_on_model=  s    z:BaseDatabaseFeatures.allows_group_by_selected_pks_on_model)s__name__
__module____qualname__Zgis_enabledZallows_group_by_pkr   Zempty_fetchmany_valueupdate_can_self_select!interprets_empty_strings_as_nullsZ$supports_nullable_unique_constraintsZ.supports_partially_nullable_unique_constraintscan_use_chunked_readsZcan_return_columns_from_insertZ'can_return_multiple_columns_from_insert can_return_rows_from_bulk_insertZhas_bulk_insertuses_savepointscan_release_savepointsrelated_fields_match_typeZallow_sliced_subqueries_with_inZhas_select_for_updateZhas_select_for_update_nowaitZ!has_select_for_update_skip_lockedZhas_select_for_update_ofZselect_for_update_of_column#test_db_allows_multiple_connectionssupports_unspecified_pkZsupports_forward_referencestruncates_namesZhas_real_datatypeZsupports_subqueries_in_group_byhas_native_uuid_fieldhas_native_duration_fieldsupports_temporal_subtractionZsupports_regex_backreferencingZ!supports_date_lookup_using_stringsupports_timezoneshas_zoneinfo_databaseZ-requires_explicit_null_ordering_when_groupingZnulls_order_largestmax_query_paramsZallows_auto_pk_0can_defer_constraint_checks(supports_mixed_date_datetime_comparisonsZsupports_tablespacessupports_sequence_resetZcan_introspect_defaultZcan_introspect_foreign_keyscan_introspect_autofieldZ can_introspect_big_integer_fieldZcan_introspect_binary_fieldcan_introspect_decimal_fieldcan_introspect_duration_fieldZcan_introspect_ip_address_field%can_introspect_positive_integer_field"can_introspect_small_integer_fieldZcan_introspect_time_field introspected_big_auto_field_type"introspected_small_auto_field_typeZintrospected_boolean_field_typeZsupports_index_column_orderingZ!can_introspect_materialized_viewsZcan_distinct_on_fieldsatomic_transactionscan_rollback_ddl!supports_atomic_references_renameZsupports_combined_altersZsupports_foreign_keyscan_create_inline_fkZ!supports_column_check_constraints supports_table_check_constraintsZ can_introspect_check_constraintssupports_paramstyle_pyformatZrequires_literal_defaultsZconnection_persists_old_columnsr   Zclosed_cursor_error_classZhas_case_insensitive_likeZbare_select_suffixZimplied_column_null%supports_select_for_update_with_limitZgreatest_least_ignores_nullscan_clone_databasesignores_table_name_caseZfor_update_after_fromZsupports_select_unionZsupports_select_intersectionZsupports_select_differenceZ%supports_slicing_ordering_in_compound supports_parentheses_in_compound supports_aggregate_filter_clauseZsupports_index_on_text_fieldsupports_over_clauseZ#supports_frame_range_fixed_distancesupports_cast_with_precisiontime_cast_precisionZ(create_test_procedure_without_params_sqlZ(create_test_procedure_with_int_param_sqlsupports_callproc_kwargs!db_functions_convert_bytes_to_strsetZsupported_explain_formatsZvalidates_explain_optionsZsupports_default_in_lead_lagsupports_ignore_conflictsrequires_casted_case_in_updatesZsupports_partial_indexes%supports_functions_in_partial_indexesZ*allows_multiple_constraints_on_same_fields&supports_boolean_expr_in_select_clauser   r   r   r   r   r   r   r   r   r      s   r   N)django.db.utilsr   django.utils.functionalr   r   r   r   r   r   <module>   s   