3
(h                 @   s^   d dl mZ d dlmZ ddlmZ yd dlZW n ek
rH   dZY nX G dd deZdS )    )BaseDatabaseFeatures)cached_property   )DatabaseNc               @   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edd Zedd Zedd Zed	d
 Zdd Zedd Z dS )DatabaseFeaturesFTc          	   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-q3hcpn_q/Django/django/db/backends/mysql/features.py_mysql_storage_engine%   s    
z&DatabaseFeatures._mysql_storage_enginec             C   s
   | j dkS )z-Confirm support for introspected foreign keysZMyISAM)r   )r   r   r   r   can_introspect_foreign_keys-   s    z,DatabaseFeatures.can_introspect_foreign_keysc             C   s   | j jdkotjdkS )N         r      )r   r   r   )r   r   r   )r   Zmysql_versionr   version_info)r   r   r   r   supports_microsecond_precision2   s    z/DatabaseFeatures.supports_microsecond_precisionc          	   C   s8   t d krdS | jj }|jd |j d k	S Q R X d S )NFz%SELECT 1 FROM mysql.time_zone LIMIT 1)pytzr   r   r	   r
   )r   r   r   r   r   has_zoneinfo_database8   s
    
z&DatabaseFeatures.has_zoneinfo_databasec             O   s   dS )NZIntegerFieldr   )r   argskwargsr   r   r   introspected_boolean_field_typeG   s    z0DatabaseFeatures.introspected_boolean_field_typec          	   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   r   is_sql_auto_is_null_enabledJ   s    
z,DatabaseFeatures.is_sql_auto_is_null_enabledN)!__name__
__module____qualname__Zempty_fetchmany_valueZupdate_can_self_selectZallows_group_by_pkZrelated_fields_match_typeZallow_sliced_subqueriesZhas_bulk_insertZ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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_subtractionr   r   r   r   r   r   r   r   r   r   r   r      s:   r   )	Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   baser   r   ImportErrorr   r   r   r   r   <module>   s   
