a
    xd<                     @   s4   d dl Z d dlmZ d dlmZ G dd deZdS )    N)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!dZ"dZ#e$dd Z%e$d	d
 Z&e$dd Z'e$dd Z(e)e*+dZ,e$dd Z-e$dd Z.e$dd Z/e)e*+dZ0e$dd Z1e)e*+dZ2e$dd Z3e$dd Z4e$dd Z5e$d d! Z6e$d"d# Z7e$d$d% Z8e$d&d' Z9e$d(d) Z:e$d*d+ Z;e$d,d- Z<e$d.d/ Z=d0S )1DatabaseFeatures TFZ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;
    c                 C   sD   | j  "}|d | }W d   n1 s20    Y  |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executeZfetchoneselfr   resultr   r   Y/var/www/html/Ranjet/env/lib/python3.9/site-packages/django/db/backends/mysql/features.py_mysql_storage_engine8   s    
&z&DatabaseFeatures._mysql_storage_enginec                 C   s   | j jo| j jdkS )N)
         r   mysql_is_mariadbmysql_versionr   r   r   r   update_can_self_select@   s    z'DatabaseFeatures.update_can_self_selectc                 C   s
   | j dkS )z-Confirm support for introspected foreign keysMyISAMr   r   r   r   r   can_introspect_foreign_keysD   s    z,DatabaseFeatures.can_introspect_foreign_keysc                 C   s   | j jo| j jdkS )N)r      r   r   r   r   r   r   can_return_columns_from_insertI   s    z/DatabaseFeatures.can_return_columns_from_insertr   c                 C   sH   | j  *}|d | d d uW  d    S 1 s:0    Y  d S )Nz6SELECT CONVERT_TZ('2001-01-01 01:00:00', 'UTC', 'UTC')r   r   )r   r   r   r   r   has_zoneinfo_databaseO   s    
z&DatabaseFeatures.has_zoneinfo_databasec                 C   sP   | j  2}|d | }|o,|d dkW  d    S 1 sB0    Y  d S )NzSELECT @@SQL_AUTO_IS_NULLr      r   r
   r   r   r   is_sql_auto_is_null_enabledW   s    
z,DatabaseFeatures.is_sql_auto_is_null_enabledc                 C   s   | j jrdS | j jdkS )NT)   r   r   r   r   r   r   r   supports_over_clause^   s    z%DatabaseFeatures.supports_over_clauser    c                 C   s    | j jr| j jdkS | j jdkS )N)r   r   r   r   r      r   r   r   r   r   !supports_column_check_constraintsf   s    z2DatabaseFeatures.supports_column_check_constraintsr#   c                 C   s4   | j jr(| j j}|dkr |dk p&|dkS | j jdkS )N)r   r      )r   r   )r   r   r   r!   r   )r   versionr   r   r    can_introspect_check_constraintsn   s    z1DatabaseFeatures.can_introspect_check_constraintsc                 C   s   | j j o| j jdkS )N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r| j jdkS | j jdkS )N)r   r   r   r'   r   r   r   r   r   has_select_for_update_nowaity   s    z-DatabaseFeatures.has_select_for_update_nowaitc                 C   s   | j j o| j jdk S )N)r      r   r   r   r   r   needs_explain_extended   s    z'DatabaseFeatures.needs_explain_extendedc                 C   s   | j jp| j jdkS )N)r   r      r   r   r   r   r   supports_explain_analyze   s    z)DatabaseFeatures.supports_explain_analyzec                 C   s*   h d}| j js&| j jdkr&|d |S )N>   ZJSONZTRADITIONALZTEXTr!   ZTREE)r   r   r   add)r   formatsr   r   r   supported_explain_formats   s    
z*DatabaseFeatures.supported_explain_formatsc                 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   sP   | j  2}|d | }|o,|d dkW  d    S 1 sB0    Y  d S )NzSELECT @@LOWER_CASE_TABLE_NAMESr   r   r
   r   r   r   ignores_table_name_case   s    
z(DatabaseFeatures.ignores_table_name_casec                 C   s
   | j j S N)r   r   r   r   r   r   supports_default_in_lead_lag   s    z-DatabaseFeatures.supports_default_in_lead_lagc                 C   s    | j jr| j jdkS | j jdkS )N)r   r   r*   )r   r*   r   r   r   r   r   r   supports_json_field   s    z$DatabaseFeatures.supports_json_fieldc                 C   s   | j jr| jo| jS | jS r3   )r   r   r5   r&   r   r   r   r   can_introspect_json_field   s    z*DatabaseFeatures.can_introspect_json_fieldN)>__name__
__module____qualname__Zempty_fetchmany_valueZ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_duration_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can_release_savepointsZatomic_transactionsZ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supports_partial_indexesZ supports_order_by_nulls_modifierZorder_by_nulls_firstr   r   r   r   r   propertyoperator
attrgetterZ can_return_rows_from_bulk_insertr   r   r    Z#supports_frame_range_fixed_distancer#   Z supports_table_check_constraintsr&   r(   r)   r+   r-   r0   r1   r2   r4   r5   r6   r   r   r   r   r      s   

















r   )r;   Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   r   r   r   r   r   <module>   s   