
     hb5                     B    d dl Z d dlmZ d dlmZ  G d de          ZdS )    N)BaseDatabaseFeatures)cached_propertyc                       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ed             Zed             Zed             Z d	Z!ed
             Z"ed             Z#ed             Z$ed             Z%ed             Z&e fd            Z'ed             Z( e) e*j+        d                    Z,ed             Z-ed             Z.ed             Z/ e) e*j+        d                    Z0ed             Z1 e) e*j+        d                    Z2ed             Z3ed             Z4ed             Z5ed             Z6ed             Z7ed             Z8ed             Z9 e) e*j+        d                    Z: e) e*j+        d                    Zed              Z;ed!             Z<ed"             Z=ed#             Z>ed$             Z?ed%             Z@ed&             ZA xZBS )'DatabaseFeatures TFz
        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        rdS dS )N)
      )      
connectionmysql_is_mariadbselfs    ]/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/django/db/backends/mysql/features.pyminimum_database_versionz)DatabaseFeatures.minimum_database_version4   s    ?+ 	76    c                 z    | j         j        r| j         j        dk     s| j         j        s| j         j        dk     rdS dS )Nr	         z
 FROM DUAL r   r   mysql_versionr   s    r   bare_select_suffixz#DatabaseFeatures.bare_select_suffix;   sL     O,	 151NQX1X1X0 2Y -44<rr   c                     d}| j         j        r| j         j        dk    s| j         j        s| j         j        dk    rd}| d| d| ddS )	Nutf8r	      )r   r      utf8mb3_general_ci_esperanto_ci_swedish_ci)cinon_default
swedish_cir   )r   charsets     r   test_collationsz DatabaseFeatures.test_collationsF   s}    O,	 -880 9 -;;  G)))%444$111
 
 	
r   UTC_TIMESTAMPc                    ddhddhdhdhddhd	}d
| j         j        v r|                    dddhi           | j         j        s,| j         j        dk     r|                    ddhddhd           | j         j        r2d| j         j        cxk     rdk     rn n|                    ddhi           | j         j        r2d| j         j        cxk     rdk     rn n|                    ddhi           | j         j        r| j         j        dk     s| j         j        s)| j         j        dk     r|                    dh di           | j        s|                    dd hi           |S )!NzLdb_functions.comparison.test_greatest.GreatestTests.test_coalesce_workaroundzFdb_functions.comparison.test_least.LeastTests.test_coalesce_workaroundz5model_fields.test_textfield.TextFieldTests.test_emojiz4model_fields.test_charfield.TestCharField.test_emojiz;schema.tests.SchemaTests.test_func_index_json_key_transformzDexpressions.tests.FTimeDeltaTests.test_durationfield_multiply_dividezGupdate.tests.AdvancedTests.test_update_ordered_by_inline_m2m_annotationz@update.tests.AdvancedTests.test_update_ordered_by_m2m_annotation)zThis doesn't work on MySQL.z4Running on MySQL requires utf8mb4 encoding (#18392).zHMySQL doesn't support functional indexes on a function that returns JSONzkMySQL supports multiplying and dividing DurationFields by a scalar value but it's not implemented (#25287).zWUPDATE ... ORDER BY syntax on MySQL/MariaDB does not support ordering byrelated fields.ONLY_FULL_GROUP_BYzjGROUP BY optimization does not work properly when ONLY_FULL_GROUP_BY mode is enabled on MySQL, see #31331.zTaggregation.tests.AggregateTestCase.test_aggregation_subquery_annotation_multivaluedzSannotations.tests.NonAggregateAnnotationTestCase.test_annotation_aggregate_with_m2or   zSaggregation.tests.AggregateTestCase.test_aggregation_default_using_time_from_pythonzWaggregation.tests.AggregateTestCase.test_aggregation_default_using_datetime_from_pythonzUaggregation.tests.AggregateTestCase.test_aggregation_default_using_time_from_databasezYaggregation.tests.AggregateTestCase.test_aggregation_default_using_datetime_from_database)zBCasting to datetime/time is not supported by MySQL < 8.0. (#30224)zBMySQL < 8.0 returns string type instead of datetime/time. (#30224))r	   r   r
   r	   r      z*https://jira.mariadb.org/browse/MDEV-19598zCschema.tests.SchemaTests.test_alter_not_unique_field_to_primary_key)r	   r      )r	   r   z*https://jira.mariadb.org/browse/MDEV-22775zBschema.tests.SchemaTests.test_alter_pk_with_self_referential_fieldr   zPParenthesized combined queries are not supported on MySQL < 8 and MariaDB < 10.4>   Lqueries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_subqueryQqueries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_with_ordering]queries.test_qs_combinators.QuerySetSetOperationTests.test_union_in_subquery_related_outerrefz%MariaDB and MySQL >= 8.0.18 specific.z4queries.test_explain.ExplainTests.test_mysql_analyze)r   sql_modeupdater   r   supports_explain_analyze)r   skipss     r   django_test_skipsz"DatabaseFeatures.django_test_skipsZ   s   ++, HFE N
 W@
?R )
 
4  4?#;;;LLOK=Q
 
 
 / 	DO4Q U
 5
 5
 LLJN!LP!   $ ?+ 	 1
 O)	17 17 17 17 -7	17 17 17 17 17
 LL@EC   ?+ 	 1
 O)	14 14 14 14 -4	14 14 14 14 14
 LL@DC   O,	151NQX1X1X0 2Y -44LL%' ' '
   , 	LL;N>   r   c                 &    | j         j        d         S )zGInternal method used in Django tests. Don't rely on this from your codedefault_storage_enginer   mysql_server_datar   s    r   _mysql_storage_enginez&DatabaseFeatures._mysql_storage_engine   s     01IJJr   c                     d| j         j        v S )zt
        Autoincrement primary key can be set to 0 if it doesn't generate new
        autoincrement values.
        NO_AUTO_VALUE_ON_ZERO)r   r5   r   s    r   allows_auto_pk_0z!DatabaseFeatures.allows_auto_pk_0   s     '$/*BBBr   c                 :    | j         j        o| j         j        dk    S )N)r	   r
   r0   r   r   s    r   update_can_self_selectz'DatabaseFeatures.update_can_self_select   &    / 
DO4Q V
 5
 	
r   c                     | j         dk    S )z-Confirm support for introspected foreign keysMyISAMr>   r   s    r   can_introspect_foreign_keysz,DatabaseFeatures.can_introspect_foreign_keys   s     )X55r   c                 <    i t                      j        dddddS )N	TextFieldIntegerFieldBigIntegerField	CharField)BinaryFieldBooleanFieldDurationFieldGenericIPAddressField)superintrospected_field_types)r   	__class__s    r   rS   z)DatabaseFeatures.introspected_field_types   s7    
gg.
&*.%0
 
 
 	
r   c                 :    | j         j        o| j         j        dk    S )N)r	   r   r   r   r   s    r   can_return_columns_from_insertz/DatabaseFeatures.can_return_columns_from_insert   rD   r   rV   c                 &    | j         j        d         S )Nhas_zoneinfo_databaser<   r   s    r   rX   z&DatabaseFeatures.has_zoneinfo_database   s    01HIIr   c                 &    | j         j        d         S )Nsql_auto_is_nullr<   r   s    r   is_sql_auto_is_null_enabledz,DatabaseFeatures.is_sql_auto_is_null_enabled  s    01CDDr   c                 >    | j         j        rdS | j         j        dk    S )NT)r   r   r0   r   r   s    r   supports_over_clausez%DatabaseFeatures.supports_over_clause  $    ?+ 	4,	99r   r]   c                 >    | j         j        rdS | j         j        dk    S )NTr   r      r   r   s    r   !supports_column_check_constraintsz2DatabaseFeatures.supports_column_check_constraints  s$    ?+ 	4,
::r   rb   c                 ^    | j         j        r| j         j        }|dk    S | j         j        dk    S )N)r	   r
   r	   r`   r   )r   versions     r    can_introspect_check_constraintsz1DatabaseFeatures.can_introspect_check_constraints  s4    ?+ 	*o3Gk)),
::r   c                 Z    | j         j        r| j         j        dk    S | j         j        dk    S )Nr    r   r      r   r   s    r   !has_select_for_update_skip_lockedz2DatabaseFeatures.has_select_for_update_skip_locked!  s/    ?+ 	<?0G;;,	99r   c                 >    | j         j        rdS | j         j        dk    S )NTrg   r   r   s    r   has_select_for_update_nowaitz-DatabaseFeatures.has_select_for_update_nowait'  r^   r   c                 <    | j         j         o| j         j        dk    S )Nrg   r   r   s    r   has_select_for_update_ofz)DatabaseFeatures.has_select_for_update_of-  s&     00 ;-:	
r   c                 :    | j         j        p| j         j        dk    S )N)r   r      r   r   s    r   r7   z)DatabaseFeatures.supports_explain_analyze4  s&    / 
4?3P U
 4
 	
r   c                 p    h d}| j         j        s%| j         j        dk    r|                    d           |S )N>   JSONTEXTTRADITIONALr`   TREE)r   r   r   add)r   formatss     r   supported_explain_formatsz*DatabaseFeatures.supported_explain_formats<  sL     211/ 	 DO4Q V
 5
 5

 KKr   c                     | j         dk    S )zI
        All storage engines except MyISAM support transactions.
        rF   rG   r   s    r   supports_transactionsz&DatabaseFeatures.supports_transactionsI  s    
 )X55r   ry   c                 &    | j         j        d         S )Nlower_case_table_namesr<   r   s    r   ignores_table_name_casez(DatabaseFeatures.ignores_table_name_caseS  s    01IJJr   c                     | j         j         S Nr   r   s    r   supports_default_in_lead_lagz-DatabaseFeatures.supports_default_in_lead_lagW  s     ?333r   c                 >    | j         j        rdS | j         j        dk    S )NT)r   r   r   r   r   s    r   supports_json_fieldz$DatabaseFeatures.supports_json_field\  r^   r   c                 D    | j         j        r| j        o| j        S | j        S r~   )r   r   r   re   r   s    r   can_introspect_json_fieldz*DatabaseFeatures.can_introspect_json_fieldb  s*    ?+ 	V+U0UU''r   c                 t    | j         dk    rdS | j        j        r| j        j        dk    S | j        j        dk    S )NInnoDBF)r	   r   rg   )r>   r   r   r   r   s    r   supports_index_column_orderingz/DatabaseFeatures.supports_index_column_orderingh  sB    %115?+ 	<?0G;;,	99r   c                 R    | j         j         o| j        dk    o| j         j        dk    S )NrF   )r   r      )r   r   r>   r   r   s    r   supports_expression_indexesz,DatabaseFeatures.supports_expression_indexesp  s6     00 <*h6<-;	
r   c                 >    | j         j        r| j         j        dk    S dS )Nr/   Tr   r   s    r   can_rename_indexz!DatabaseFeatures.can_rename_indexx  s$    ?+ 	??0J>>tr   )C__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supports_timezones-requires_explicit_null_ordering_when_grouping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supports_update_conflicts(create_test_procedure_without_params_sql(create_test_procedure_with_int_param_sqlsupports_partial_indexescollate_as_index_expression supports_order_by_nulls_modifierorder_by_nulls_firstsupports_logical_xorr   r   r   r+   test_now_utc_templater9   r>   rA   rC   rH   rS   rV   propertyoperator
attrgetter can_return_rows_from_bulk_insertrX   r[   r]   #supports_frame_range_fixed_distancerb    supports_table_check_constraintsre   ri   rk   rm   r7   rw   ry   uses_savepointsr|   r   r   r   r   r   r   __classcell__)rT   s   @r   r   r      s        $&+# "'%*"(-%481!$(!#( !&,0)#(  $0,0,  % #'',$  _   _ 
 
 _
" ,q q _qf K K _K C C _C 
 
 _
 6 6 _6 
 
 
 
 _
 
 
 _
 (0x<==( ($ J J _J E E _E : : _:
 +3(233+ +' ; ; _;
 (0x?@@( ($ ; ; _; : : _:
 : : _:
 
 
 _
 
 
 _
 
 
 _
 6 6 _6 h2x23JKKLLO%X&9h&9:Q&R&RSSK K _K 4 4 _4 : : _:
 ( ( _(
 : : _: 
 
 _
   _    r   r   )r    django.db.backends.base.featuresr   django.utils.functionalr   r   r   r   r   <module>r      sq     A A A A A A 3 3 3 3 3 3u u u u u+ u u u u ur   