3
[                 @   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f 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ddhZ#e$d	d
 Z%e$dd Z&e$dd Z'e$dd Z(e$dd Z)e$dd Z*e*Z+e$dd Z,e$dd Z-e$dd Z.dS )DatabaseFeaturesFTZIntegerFieldz
        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;
    ZJSONZTEXTZTRADITIONALc          	   C   s0   | j j }|jd |j }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   result r   E/tmp/pip-install-j7i95hgp/django/django/db/backends/mysql/features.py_mysql_storage_engine6   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 }|jd |j 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          	   C   s8   | j j $}|jd |j }|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_enabledJ   s    
z,DatabaseFeatures.is_sql_auto_is_null_enabledc             C   s   | j jdkS )N   r      )r   r   r   )r   mysql_version)r	   r   r   r   supports_over_clauseQ   s    z%DatabaseFeatures.supports_over_clausec             C   s   | j jdkS )Nr   r   r   )r   r   r   )r   r   )r	   r   r   r   !has_select_for_update_skip_lockedU   s    z2DatabaseFeatures.has_select_for_update_skip_lockedc             C   s   | j jdk S )N      )r   r   )r   r   )r	   r   r   r   needs_explain_extended[   s    z'DatabaseFeatures.needs_explain_extendedc             C   s
   | j dkS )zI
        All storage engines except MyISAM support transactions.
        r   )r   )r	   r   r   r   supports_transactions`   s    z&DatabaseFeatures.supports_transactionsc          	   C   s8   | j j $}|jd |j }|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_caseg   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_subqueries_with_inZhas_select_for_updateZ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introspected_boolean_field_typeZ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_sqlZ!db_functions_convert_bytes_to_strZsupported_explain_formatsr   r   r   r   r   r   r   Zhas_select_for_update_nowaitr   r   r   r   r   r   r   r      sV   
r   N)Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   r   r   r   r   r   <module>   s   