§
    Ï“Ùh¿/  ã                   ó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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¦  «        ¦  «        Z.ed„ ¦   «         Z/ e' e(j)        d¦  «        ¦  «        Z0ed„ ¦   «         Z1ed„ ¦   «         Z2ed„ ¦   «         Z3ed„ ¦   «         Z4ed„ ¦   «         Z5ed„ ¦   «         Z6ed„ ¦   «         Z7 e' e(j)        d¦  «        ¦  «        Z8 e' e(j)        d¦  «        ¦  «        Z9ed „ ¦   «         Z:ed!„ ¦   «         Z;ed"„ ¦   «         Z<ed#„ ¦   «         Z=ed$„ ¦   «         Z>ed%„ ¦   «         Z? e' e(j)        d&¦  «        ¦  «        Z@ed'„ ¦   «         ZAed(„ ¦   «         ZBˆ xZCS ))Ú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;
    z¸
        CREATE TABLE test_table_composite_pk (
            column_1 INTEGER NOT NULL,
            column_2 INTEGER NOT NULL,
            PRIMARY KEY(column_1, column_2)
        )
    c                 ó"   — | j         j        rdS dS )N)é
   é   )é   ©Ú
connectionÚmysql_is_mariadb©Úselfs    ú`/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/db/backends/mysql/features.pyÚminimum_database_versionz)DatabaseFeatures.minimum_database_version9   s   € àŒ?Ô+ð 	Ø�7à�4ó    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_ci©r   r   Úmysql_version)r   Úcharsets     r   Útest_collationsz DatabaseFeatures.test_collations@   s}   € àˆàŒOÔ,ð	 à”Ô-°Ò8Ð8à”Ô0ð 9ð ”Ô-°Ò;Ð;ð  ˆGàÐ)Ð)Ð)Ø%Ð4Ð4Ð4Ø$Ð1Ð1Ð1ð
ð 
ð 	
r   zUTC_TIMESTAMP(6)c                 ó  — ddhddhdh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        s|                     ddhi¦  «         d| j         j        v r|                     ddhi¦  «         | j         j        r(| j         j        dk    r|                     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.)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_fieldz%MariaDB and MySQL >= 8.0.18 specific.z4queries.test_explain.ExplainTests.test_mysql_analyzeÚONLY_FULL_GROUP_BYzjGROUP BY cannot contain nonaggregated column when ONLY_FULL_GROUP_BY mode is enabled on MySQL, see #34262.zOaggregation.tests.AggregateTestCase.test_group_by_nested_expression_with_paramsz„ALTER TABLE ... RENAME COLUMN statement doesn't rename inline constraints on MariaDB 10.5.2+, this is fixed in Django 5.0+ (#34320).zGschema.tests.SchemaTests.test_rename_field_with_check_to_truncated_name)r   r   r!   ÚupdateÚsupports_explain_analyzeÚsql_mode)r   Úskipss     r   Údjango_test_skipsz"DatabaseFeatures.django_test_skipsT   s  € ð+ð+ð,ð HØFðEð Nðð
 Wð@ð
?àRð ð)
ð 
ˆð4 Œ?Ô+ð 	ð 1
ð ŒOÔ)ð	17ð 17ò 17ð 17ð -7ò	17ð 17ð 17ð 17ð 17ð
 �LŠLà@ðEðCðñô ð ð Œ?Ô+ð 	ð 1
ð ŒOÔ)ð	14ð 14ò 14ð 14ð -4ò	14ð 14ð 14ð 14ð 14ð
 �LŠLà@ðDðCðñô ð ð Ô,ð 	Ø�LŠLà;ØNð>ðñô ð ð   4¤?Ô#;Ð;Ð;Ø�LŠLðOðFðQðñô ð ð Œ?Ô+ð 	°´Ô0Mð R
ò 1
ð 1
ð
 �LŠLð ðIð"ðñ	ô 	ð 	ð ˆ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   € ð ŒÔ0Ð1IÔ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   r-   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%   r(   r    r   s    r   Úupdate_can_self_selectz'DatabaseFeatures.update_can_self_selectº   ó&   € àŒÔ/ð 
°D´OÔ4Qð V
ò 5
ð 	
r   c                 ó   — | j         dk    S )z-Confirm support for introspected foreign keysÚMyISAM©r4   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   rI   z)DatabaseFeatures.introspected_field_typesÇ   s7   ø€ ð
Ý‰gŒgÔ.ð
à&Ø*Ø.Ø%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Ñ   r:   r   rL   c                 ó&   — | j         j        d         S )NÚhas_zoneinfo_databaser2   r   s    r   rN   z&DatabaseFeatures.has_zoneinfo_databaseÝ   s   € àŒÔ0Ð1HÔIÐIr   c                 ó&   — | j         j        d         S )NÚsql_auto_is_nullr2   r   s    r   Úis_sql_auto_is_null_enabledz,DatabaseFeatures.is_sql_auto_is_null_enabledá   s   € àŒÔ0Ð1CÔDÐDr   c                 ó>   — | j         j        rdS | j         j        dk    S )NT)r   r   r(   r    r   s    r   Úsupports_over_clausez%DatabaseFeatures.supports_over_clauseå   ó$   € àŒ?Ô+ð 	Ø�4ØŒÔ,°	Ò9Ð9r   rS   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ï   ó$   € àŒ?Ô+ð 	Ø�4ØŒÔ,°
Ò:Ð:r   rY   c                 ó>   — | j         j        rdS | j         j        dk    S rV   r    r   s    r   Ú can_introspect_check_constraintsz1DatabaseFeatures.can_introspect_check_constraintsù   rZ   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/   € àŒ?Ô+ð 	<Ø”?Ô0°GÒ;Ð;ØŒÔ,°	Ò9Ð9r   c                 ó>   — | j         j        rdS | j         j        dk    S )NTr^   r    r   s    r   Úhas_select_for_update_nowaitz-DatabaseFeatures.has_select_for_update_nowait  rT   r   c                 ó<   — | j         j         o| j         j        dk    S )Nr^   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   r,   z)DatabaseFeatures.supports_explain_analyze  s&   € àŒÔ/ð 
°4´?Ô3Pð U
ò 4
ð 	
r   c                 óp   — h d£}| j         j        s%| j         j        dk    r|                     d¦  «         |S )N>   ÚJSONÚTEXTÚTRADITIONALrW   ÚTREE)r   r   r!   Úadd)r   Úformatss     r   Úsupported_explain_formatsz*DatabaseFeatures.supported_explain_formats  sL   € ð 2Ð1Ð1ˆØŒÔ/ð 	 °D´OÔ4Qð V
ò 5
ð 5
ð
 �KŠK˜ÑÔÐØˆr   c                 ó   — | j         dk    S )zI
        All storage engines except MyISAM support transactions.
        r<   r=   r   s    r   Úsupports_transactionsz&DatabaseFeatures.supports_transactions'  s   € ð
 Ô)¨XÒ5Ð5r   rp   c                 ó&   — | j         j        d         S )NÚlower_case_table_namesr2   r   s    r   Úignores_table_name_casez(DatabaseFeatures.ignores_table_name_case1  s   € àŒÔ0Ð1IÔJÐJr   c                 ó   — | j         j         S )Nr   r   s    r   Úsupports_default_in_lead_lagz-DatabaseFeatures.supports_default_in_lead_lag5  s   € ð ”?Ô3Ð3Ð3r   c                 ó,   — | j         j        r| j        S dS )NT)r   r   r\   r   s    r   Úcan_introspect_json_fieldz*DatabaseFeatures.can_introspect_json_field:  s   € àŒ?Ô+ð 	9ØÔ8Ð8Øˆtr   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   r^   )r4   r   r   r!   r   s    r   Úsupports_index_column_orderingz/DatabaseFeatures.supports_index_column_ordering@  sB   € àÔ%¨Ò1Ð1Ø�5ØŒ?Ô+ð 	<Ø”?Ô0°GÒ;Ð;ØŒÔ,°	Ò9Ð9r   c                 óR   — | j         j         o| j        dk    o| j         j        dk    S )Nr<   )r   r   é   )r   r   r4   r!   r   s    r   Úsupports_expression_indexesz,DatabaseFeatures.supports_expression_indexesH  s6   € ð ”Ô0Ð0ð <ØÔ*¨hÒ6ð<à”Ô-°Ò;ð	
r   c                 ó>   — | j         j        }|p| j         j        dk    S )N)r   r   é   r    )r   Ú
is_mariadbs     r   Úsupports_select_intersectionz-DatabaseFeatures.supports_select_intersectionP  s!   € à”_Ô5ˆ
ØÐH˜Tœ_Ô:¸jÒHÐHr   r�   c                 ó>   — | j         j        r| j         j        dk    S dS )Nr&   Tr    r   s    r   Úcan_rename_indexz!DatabaseFeatures.can_rename_indexY  s$   € àŒ?Ô+ð 	?Ø”?Ô0°JÒ>Ð>Øˆtr   c                 ó:   — | j         j        rd| j         j        vS dS )Nr*   T)r   r   r-   r   s    r   Úallows_group_by_selected_pksz-DatabaseFeatures.allows_group_by_selected_pks_  s%   € àŒ?Ô+ð 	HØ'¨t¬Ô/GÐGÐGØˆtr   )DÚ__name__Ú
__module__Ú__qualname__Úempty_fetchmany_valueÚ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Úatomic_transactionsÚcan_clone_databasesÚsupports_commentsÚsupports_comments_inlineÚsupports_temporal_subtractionÚ%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Ú,create_test_table_with_composite_primary_keyÚsupports_partial_indexesÚcollate_as_index_expressionÚ supports_order_by_nulls_modifierÚorder_by_nulls_firstÚsupports_logical_xorr   r   r#   Útest_now_utc_templater/   r4   r7   r9   r>   rI   rL   ÚpropertyÚoperatorÚ
attrgetterÚ can_return_rows_from_bulk_insertrN   rQ   rS   Ú#supports_frame_range_fixed_distancerY   Ú supports_table_check_constraintsr\   r`   rb   rd   r,   rn   rp   Úuses_savepointsÚcan_release_savepointsrs   ru   rw   rz   r}   r�   Úsupports_select_differencerƒ   r…   Ú__classcell__)rJ   s   @r   r   r      s¨  ø€ € € € € ØÐØ $Ðà&+Ð#Ø ÐØ"'ÐØ%*Ð"Ø(-Ð%ØÐØ48Ð1ØÐØÐØÐØ#ÐØ$(Ð!Ø,0Ð)Ø#(Ð Ø $Ðð0Ð,ð0Ð,ð4Ð0ð  %Ðð #'Ðà',Ð$ØÐØÐàðð ñ „_ðð ð
ð 
ñ „_ð
ð" /ÐàðVð Vñ „_ðVðp ðKð Kñ „_ðKð ðCð Cñ „_ðCð ð
ð 
ñ „_ð
ð ð6ð 6ñ „_ð6ð ð
ð 
ð 
ð 
ñ „_ð
ð ð
ð 
ñ „_ð
ð (0 xØˆÔÐ<Ñ=Ô=ñ(ô (Ð$ð ðJð Jñ „_ðJð ðEð Eñ „_ðEð ð:ð :ñ „_ð:ð
 +3¨(ØˆÔÐ2Ñ3Ô3ñ+ô +Ð'ð ð;ð ;ñ „_ð;ð
 (0 xØˆÔÐ?Ñ@Ô@ñ(ô (Ð$ð ð;ð ;ñ „_ð;ð
 ð:ð :ñ „_ð:ð
 ð:ð :ñ „_ð:ð
 ð
ð 
ñ „_ð
ð ð
ð 
ñ „_ð
ð ð
ð 
ñ „_ð
ð ð6ð 6ñ „_ð6ð �hÐ2˜xÔ2Ð3JÑKÔKÑLÔL€OØ%˜XÐ&9 hÔ&9Ð:QÑ&RÔ&RÑSÔSÐàðKð Kñ „_ðKð ð4ð 4ñ „_ð4ð ðð ñ „_ðð
 ð:ð :ñ „_ð:ð ð
ð 
ñ „_ð
ð ðIð Iñ „_ðIð "* ØˆÔÐ:Ñ;Ô;ñ"ô "Ðð ðð ñ „_ðð
 ðð ñ „_ðð ð ð ð 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ð\ð \ð \ð \ð \Ð+ñ \ô \ð \ð \ð \r   