o
    uvXjÛ,  ã                   @   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ZGeHZIdZJdZKdZLdZMdZNdZOdZPdZQdZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^dZ_e`ƒ ZadZbdZcdZddZedZfdZgdZhdd	„ Ziejd
d„ ƒZkejdd„ ƒZldS )ÚBaseDatabaseFeaturesFTNÚBigAutoFieldÚBooleanFieldÚ é   c                 C   s
   || _ d S )N)Ú
connection)Úselfr	   © r   ú]/var/www/html/myproject/venv/lib/python3.10/site-packages/django/db/backends/base/features.pyÚ__init__   s   
zBaseDatabaseFeatures.__init__c                 C   s   | j jjduS )z5Does this backend support explaining query execution?N)r	   ÚopsÚexplain_prefix)r
   r   r   r   Ú#supports_explaining_query_execution#  s   z8BaseDatabaseFeatures.supports_explaining_query_executionc                 C   sŒ   | j  ¡ �5}| d¡ | j  d¡ | d¡ | j  ¡  | j  d¡ | d¡ | ¡ \}| d¡ W d  ƒ |dkS 1 s=w   Y  |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_transactions)mÚ__name__Ú
__module__Ú__qualname__Úgis_enabledÚallows_group_by_pkÚallows_group_by_selected_pksÚempty_fetchmany_valueÚupdate_can_self_selectÚ!interprets_empty_strings_as_nullsÚ$supports_nullable_unique_constraintsÚ.supports_partially_nullable_unique_constraintsÚcan_use_chunked_readsÚcan_return_id_from_insertÚcan_return_ids_from_bulk_insertÚhas_bulk_insertÚuses_savepointsÚcan_release_savepointsÚrelated_fields_match_typeÚallow_sliced_subqueries_with_inÚhas_select_for_updateÚhas_select_for_update_nowaitÚ!has_select_for_update_skip_lockedÚhas_select_for_update_ofÚselect_for_update_of_columnÚ#test_db_allows_multiple_connectionsÚsupports_unspecified_pkÚsupports_forward_referencesÚtruncates_namesÚhas_real_datatypeÚsupports_subqueries_in_group_byÚhas_native_uuid_fieldÚhas_native_duration_fieldÚsupports_temporal_subtractionÚsupports_regex_backreferencingÚ!supports_date_lookup_using_stringÚsupports_timezonesÚhas_zoneinfo_databaseÚ-requires_explicit_null_ordering_when_groupingÚnulls_order_largestÚmax_query_paramsÚallows_auto_pk_0Úcan_defer_constraint_checksÚ(supports_mixed_date_datetime_comparisonsÚsupports_tablespacesÚsupports_sequence_resetÚcan_introspect_defaultÚcan_introspect_foreign_keysÚcan_introspect_autofieldÚ can_introspect_big_integer_fieldÚcan_introspect_binary_fieldÚcan_introspect_decimal_fieldÚcan_introspect_duration_fieldÚcan_introspect_ip_address_fieldÚ%can_introspect_positive_integer_fieldÚ"can_introspect_small_integer_fieldÚcan_introspect_time_fieldÚ introspected_big_auto_field_typeÚintrospected_boolean_field_typeÚsupports_index_column_orderingÚ!can_introspect_materialized_viewsÚcan_distinct_on_fieldsÚ"autocommits_when_autocommit_is_offÚatomic_transactionsÚcan_rollback_ddlÚ!supports_atomic_references_renameÚsupports_combined_altersÚsupports_foreign_keysÚ!supports_column_check_constraintsÚ supports_table_check_constraintsÚsupports_paramstyle_pyformatÚrequires_literal_defaultsÚconnection_persists_old_columnsr   Úclosed_cursor_error_classÚhas_case_insensitive_likeÚbare_select_suffixÚimplied_column_nullÚ%supports_select_for_update_with_limitÚgreatest_least_ignores_nullsÚcan_clone_databasesÚignores_table_name_caseÚfor_update_after_fromÚsupports_select_unionÚsupports_select_intersectionÚsupports_select_differenceÚ%supports_slicing_ordering_in_compoundÚ supports_parentheses_in_compoundÚ supports_aggregate_filter_clauseÚsupports_index_on_text_fieldÚsupports_over_clauseÚsupports_cast_with_precisionÚtime_cast_precisionÚ(create_test_procedure_without_params_sqlÚ(create_test_procedure_with_int_param_sqlÚsupports_callproc_kwargsÚ!db_functions_convert_bytes_to_strÚsetÚsupported_explain_formatsÚvalidates_explain_optionsÚsupports_default_in_lead_lagÚsupports_ignore_conflictsÚrequires_casted_case_in_updatesÚsupports_partial_indexesÚ%supports_functions_in_partial_indexesÚ*allows_multiple_constraints_on_same_fieldsr   r   r   r   r   r   r   r   r      sÔ    
r   N)Údjango.db.utilsr   Údjango.utils.functionalr   r   r   r   r   r   Ú<module>   s    