
    h<                     :    d dl Z d dlmZ d dlmZ  G d de      Zy)    N)BaseDatabaseFeatures)cached_propertyc                   P   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        Z%e$d        Z&e$d	        Z'e$d
        Z( e) e*jV                  d            Z,e$d        Z-e$d        Z.e$d        Z/ e) e*jV                  d            Z0e$d        Z1 e) e*jV                  d            Z2e$d        Z3e$d        Z4e$d        Z5e$d        Z6e$d        Z7e$d        Z8e$d        Z9e$d        Z:e$d        Z;e$d        Z<e$d        Z=y)DatabaseFeatures TF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                     | j                   j                         5 }|j                  d       |j                         }ddd       |d   S # 1 sw Y   d   S xY w)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   results      d/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/db/backends/mysql/features.py_mysql_storage_enginez&DatabaseFeatures._mysql_storage_engine8   sW     __##% 	'NNde__&F	' ay	' ays   "A

Ac                 d    | j                   j                  xr | j                   j                  dk\  S )N)
         r   mysql_is_mariadbmysql_versionr   s    r   update_can_self_selectz'DatabaseFeatures.update_can_self_select@   '    //_DOO4Q4QU_4__    c                      | j                   dk7  S )z-Confirm support for introspected foreign keysMyISAMr   r   s    r   can_introspect_foreign_keysz,DatabaseFeatures.can_introspect_foreign_keysD   s     ))X55r   c                 d    | j                   j                  xr | j                   j                  dk\  S )N)r      r   r   r   s    r   can_return_columns_from_insertz/DatabaseFeatures.can_return_columns_from_insertI   r   r   r%   c                     | j                   j                         5 }|j                  d       |j                         d   d ucd d d        S # 1 sw Y   y xY w)Nz6SELECT CONVERT_TZ('2001-01-01 01:00:00', 'UTC', 'UTC')r   r
   )r   r   s     r   has_zoneinfo_databasez&DatabaseFeatures.has_zoneinfo_databaseO   sL     __##% 	4NNST??$Q't3	4 	4 	4s   &AAc                     | j                   j                         5 }|j                  d       |j                         }|xr |d   dk(  cd d d        S # 1 sw Y   y xY w)NzSELECT @@SQL_AUTO_IS_NULLr      r
   r   s      r   is_sql_auto_is_null_enabledz,DatabaseFeatures.is_sql_auto_is_null_enabledW   sR    __##% 	-NN67__&F,fQi1n	- 	- 	-   -AAc                 b    | j                   j                  ry| j                   j                  dk\  S )NT)   r   r   r   r   s    r   supports_over_clausez%DatabaseFeatures.supports_over_clause^   s'    ??++,,	99r   r.   c                     | j                   j                  r| j                   j                  dk\  S | j                   j                  dk\  S )N)r   r   r)   r-   r      r   r   s    r   !supports_column_check_constraintsz2DatabaseFeatures.supports_column_check_constraintsf   s9    ??++??00J>>,,
::r   r2   c                     | j                   j                  r)| j                   j                  }|dk\  xr |dk  xs |dk\  S | j                   j                  dk\  S )N)r   r      )r   r   )r   r   r   r0   r   )r   versions     r    can_introspect_check_constraintsz1DatabaseFeatures.can_introspect_check_constraintsn   sS    ??++oo33G{*@w/@[WP[E[[,,
::r   c                 f    | j                   j                   xr | j                   j                  dk\  S )Nr-   r   r)   r   r   s    r   !has_select_for_update_skip_lockedz2DatabaseFeatures.has_select_for_update_skip_lockedu   s*    ??333b8U8UYb8bbr   c                     | j                   j                  r| j                   j                  dk\  S | j                   j                  dk\  S )N)r   r   r   r8   r   r   s    r   has_select_for_update_nowaitz-DatabaseFeatures.has_select_for_update_nowaity   9    ??++??00J>>,,	99r   c                 f    | j                   j                   xr | j                   j                  dk  S )N)r$      r   r   s    r   needs_explain_extendedz'DatabaseFeatures.needs_explain_extended   s,     ??333^8U8UX^8^^r   c                 d    | j                   j                  xs | j                   j                  dk\  S )N)r-   r      r   r   s    r   supports_explain_analyzez)DatabaseFeatures.supports_explain_analyze   s'    //^4??3P3PT^3^^r   c                     h d}| j                   j                  s*| j                   j                  dk\  r|j                  d       |S )N>   JSONTEXTTRADITIONALr0   TREE)r   r   r   add)r   formatss     r   supported_explain_formatsz*DatabaseFeatures.supported_explain_formats   s9     2//DOO4Q4QU_4_KKr   c                      | j                   dk7  S )zI
        All storage engines except MyISAM support transactions.
        r    r!   r   s    r   supports_transactionsz&DatabaseFeatures.supports_transactions   s    
 ))X55r   c                     | j                   j                         5 }|j                  d       |j                         }|xr |d   dk7  cd d d        S # 1 sw Y   y xY w)NzSELECT @@LOWER_CASE_TABLE_NAMESr   r
   r   s      r   ignores_table_name_casez(DatabaseFeatures.ignores_table_name_case   sR    __##% 	-NN<=__&F,fQi1n	- 	- 	-r+   c                 0    | j                   j                   S N)r   r   r   s    r   supports_default_in_lead_lagz-DatabaseFeatures.supports_default_in_lead_lag   s     ??3333r   c                     | j                   j                  r| j                   j                  dk\  S | j                   j                  dk\  S )N)r   r   r>   )r$   r>   r-   r   r   s    r   supports_json_fieldz$DatabaseFeatures.supports_json_field   r<   r   c                 z    | j                   j                  r| j                  xr | j                  S | j                  S rP   )r   r   rS   r6   r   s    r   can_introspect_json_fieldz*DatabaseFeatures.can_introspect_json_field   s2    ??++++U0U0UU'''r   N)>__name__
__module____qualname__empty_fetchmany_valueallows_group_by_pkrelated_fields_match_typeallow_sliced_subqueries_with_inhas_select_for_updatesupports_forward_referencessupports_regex_backreferencing!supports_date_lookup_using_stringcan_introspect_autofieldcan_introspect_binary_fieldcan_introspect_duration_field"can_introspect_small_integer_field%can_introspect_positive_integer_fieldintrospected_boolean_field_typesupports_index_column_orderingsupports_timezones-requires_explicit_null_ordering_when_groupingallows_auto_pk_0can_release_savepointsatomic_transactionscan_clone_databasessupports_temporal_subtractionsupports_select_intersectionsupports_select_difference%supports_slicing_ordering_in_compoundsupports_index_on_text_fieldhas_case_insensitive_like(create_test_procedure_without_params_sql(create_test_procedure_with_int_param_sql!db_functions_convert_bytes_to_strsupports_partial_indexes supports_order_by_nulls_modifierorder_by_nulls_firstr   r   r   r"   r%   propertyoperator
attrgetter can_return_rows_from_bulk_insertr'   r*   r.   #supports_frame_range_fixed_distancer2    supports_table_check_constraintsr6   r9   r;   r?   rB   rJ   rL   rN   rQ   rS   rU   r   r   r   r   r      s    $&+# "'%*"(-%#"'$)!)-&,0)&4#%*"481!$(!#( !&,0)#(  %0,0, )-%$',$  ` ` 6 6 ` ` (00C0C0CDd0e'f$4 4 - - : :
 +33F83F3FG]3^*_'; ;
 (00C0C0CDg0h'i$; ; c c : :
 _ _ _ _   6 6 - - 4 4 : :
 ( (r   r   )r{    django.db.backends.base.featuresr   django.utils.functionalr   r   r   r   r   <module>r      s     A 3g(+ g(r   