B
    ©0H[Ò  ã               @   s,   d dl mZ d dlmZ G dd„ deƒZdS )é    )ÚBaseDatabaseFeatures)Úcached_propertyc               @   sð   e 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!e"dd„ ƒZ#e"dd	„ ƒZ$e"d
d„ ƒZ%e"dd„ ƒZ&dd„ Z'e"dd„ ƒZ(e"dd„ ƒZ)e"dd„ ƒZ*e"dd„ ƒZ+dS )ÚDatabaseFeatures© FTz…
        CREATE PROCEDURE test_procedure ()
        BEGIN
            DECLARE V_I INTEGER;
            SET V_I = 1;
        END;
    z’
        CREATE PROCEDURE test_procedure (P_I INTEGER)
        BEGIN
            DECLARE V_I INTEGER;
            SET V_I = P_I;
        END;
    c          	   C   s0   | j  ¡ �}| d¡ | ¡ }W dQ R X |d S )zGInternal method used in Django tests. Don't rely on this from your codezGSELECT ENGINE FROM INFORMATION_SCHEMA.ENGINES WHERE SUPPORT = 'DEFAULT'Nr   )Ú
connectionÚcursorÚexecuteÚfetchone)Úselfr   Úresultr   r   úeC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\db\backends\mysql\features.pyÚ_mysql_storage_engine2   s    
z&DatabaseFeatures._mysql_storage_enginec             C   s
   | j dkS )z-Confirm support for introspected foreign keysÚMyISAM)r   )r
   r   r   r   Úcan_introspect_foreign_keys:   s    z,DatabaseFeatures.can_introspect_foreign_keysc             C   s   | j jdkS )N)é   é   é   )r   Úmysql_version)r
   r   r   r   Úsupports_microsecond_precision?   s    z/DatabaseFeatures.supports_microsecond_precisionc          	   C   s,   | j  ¡ �}| d¡ | ¡ d k	S Q R X d S )Nz%SELECT 1 FROM mysql.time_zone LIMIT 1)r   r   r   r	   )r
   r   r   r   r   Úhas_zoneinfo_databaseC   s    
z&DatabaseFeatures.has_zoneinfo_databasec             O   s   dS )NZIntegerFieldr   )r
   ÚargsÚkwargsr   r   r   Úintrospected_boolean_field_typeJ   s    z0DatabaseFeatures.introspected_boolean_field_typec          	   C   s8   | j  ¡ �$}| d¡ | ¡ }|o,|d dkS Q R X d S )NzSELECT @@SQL_AUTO_IS_NULLr   é   )r   r   r   r	   )r
   r   r   r   r   r   Úis_sql_auto_is_null_enabledM   s    
z,DatabaseFeatures.is_sql_auto_is_null_enabledc             C   s   | j jdkS )N)é   r   é   )r   r   )r
   r   r   r   Úsupports_over_clauseT   s    z%DatabaseFeatures.supports_over_clausec             C   s
   | j dkS )zI
        All storage engines except MyISAM support transactions.
        r   )r   )r
   r   r   r   Úsupports_transactionsX   s    z&DatabaseFeatures.supports_transactionsc          	   C   s8   | j  ¡ �$}| d¡ | ¡ }|o,|d dkS Q R X d S )NzSELECT @@LOWER_CASE_TABLE_NAMESr   )r   r   r   r	   )r
   r   r   r   r   r   Úignores_table_name_case_   s    
z(DatabaseFeatures.ignores_table_name_caseN),Ú__name__Ú
__module__Ú__qualname__Zempty_fetchmany_valueZupdate_can_self_selectZallows_group_by_pkZrelated_fields_match_typeZallow_sliced_subqueriesZhas_select_for_updateZhas_select_for_update_nowaitZsupports_forward_referencesZsupports_regex_backreferencingZ!supports_date_lookup_using_stringZcan_introspect_autofieldZcan_introspect_binary_fieldZ"can_introspect_small_integer_fieldZ%can_introspect_positive_integer_fieldZsupports_index_column_orderingZsupports_timezonesZ-requires_explicit_null_ordering_when_groupingZallows_auto_pk_0Zuses_savepointsZcan_release_savepointsZatomic_transactionsZ!supports_column_check_constraintsZcan_clone_databasesZsupports_temporal_subtractionZsupports_select_intersectionZsupports_select_differenceZ%supports_slicing_ordering_in_compoundZsupports_index_on_text_fieldZhas_case_insensitive_likeZ(create_test_procedure_without_params_sqlZ(create_test_procedure_with_int_param_sqlr   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sP   r   N)Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   r   r   r   r   r   Ú<module>   s   