3
j6b#                 @   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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dZdZddddZed	d
 Zedd Zedd Z edd Z!edd Z"e fddZ#edd Z$e%e&j'dZ(edd Z)edd Z*edd Z+e%e&j'dZ,edd  Z-e%e&j'd!Z.ed"d# Z/ed$d% Z0ed&d' Z1ed(d) Z2ed*d+ Z3ed,d- Z4ed.d/ Z5ed0d1 Z6ed2d3 Z7ed4d5 Z8ed6d7 Z9ed8d9 Z:ed:d; Z;  Z<S )<DatabaseFeaturesTFz
        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utf8_general_ciZutf8_esperanto_ciZutf8_swedish_ci)ciZnon_defaultZ
swedish_cic             C   s   ddhddhdhd}d| j jkr4|jdd	d
hi | j jrhd| j j  k oRdk n  rh|jddhi | j jrd| j j  k odk n  r|jddhi | js|j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_transform)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 JSONZ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_m2o
               z*https://jira.mariadb.org/browse/MDEV-19598zCschema.tests.SchemaTests.test_alter_not_unique_field_to_primary_key   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)r   r   r   )r   r	   r
   )r   r   r   )r   r	   )
connectionsql_modeupdatemysql_is_mariadbmysql_versionsupports_explain_analyze)selfskips r   `/var/www/html/sandeepIITI/myenv/lib/python3.6/site-packages/django/db/backends/mysql/features.pydjango_test_skips8   s2    




z"DatabaseFeatures.django_test_skipsc             C   s   | j jd S )zGInternal method used in Django tests. Don't rely on this from your codeZdefault_storage_engine)r   mysql_server_data)r   r   r   r   _mysql_storage_enginej   s    z&DatabaseFeatures._mysql_storage_enginec             C   s   d| j jkS )zt
        Autoincrement primary key can be set to 0 if it doesn't generate new
        autoincrement values.
        ZNO_AUTO_VALUE_ON_ZERO)r   r   )r   r   r   r   allows_auto_pk_0o   s    z!DatabaseFeatures.allows_auto_pk_0c             C   s   | j jo| j jdkS )Nr   r   r
   )r   r   r
   )r   r   r   )r   r   r   r   update_can_self_selectw   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_keys{   s    z,DatabaseFeatures.can_introspect_foreign_keysc                s   t  jdddddS )NZ	TextFieldZIntegerFieldZBigIntegerFieldZ	CharField)ZBinaryFieldZBooleanFieldZDurationFieldZGenericIPAddressField)superintrospected_field_types)r   )	__class__r   r   r      s
    z)DatabaseFeatures.introspected_field_typesc             C   s   | j jo| j jdkS )Nr   r	   r   )r   r	   r   )r   r   r   )r   r   r   r   can_return_columns_from_insert   s    z/DatabaseFeatures.can_return_columns_from_insertr    c             C   s   | j jd S )Nhas_zoneinfo_database)r   r   )r   r   r   r   r!      s    z&DatabaseFeatures.has_zoneinfo_databasec             C   s   | j jd S )NZsql_auto_is_null)r   r   )r   r   r   r   is_sql_auto_is_null_enabled   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   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 )	Nr   r
      r#   r      )r   r
   r%   )r#   r   r&   )r   r   r   )r   r   r   r   !supports_column_check_constraints   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 )Nr   r
      r   r#   r   r&   )r   r
   r(   )r   r   )r   r   r   )r#   r   r&   )r   r   r   )r   versionr   r   r    can_introspect_check_constraints   s    z1DatabaseFeatures.can_introspect_check_constraintsc             C   s   | j j o| j jdkS )Nr#   r   r%   )r#   r   r%   )r   r   r   )r   r   r   r   !has_select_for_update_skip_locked   s    z2DatabaseFeatures.has_select_for_update_skip_lockedc             C   s    | j jr| j jdkS | j jdkS )Nr   r   r   r#   r%   )r   r   r   )r#   r   r%   )r   r   r   )r   r   r   r   has_select_for_update_nowait   s    z-DatabaseFeatures.has_select_for_update_nowaitc             C   s   | j j o| j jdkS )Nr#   r   r%   )r#   r   r%   )r   r   r   )r   r   r   r   has_select_for_update_of   s    z)DatabaseFeatures.has_select_for_update_ofc             C   s   | j jp| j jdkS )Nr#   r      )r#   r   r.   )r   r   r   )r   r   r   r   r      s    z)DatabaseFeatures.supports_explain_analyzec             C   s.   dddh}| j j r*| j jdkr*|jd |S )	NZJSONZTEXTZTRADITIONALr#   r   r&   ZTREE)r#   r   r&   )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   s   | j jd S )NZlower_case_table_names)r   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 )Nr   r
      r	   r#   )r   r
   r5   )r	   r5   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 )N)r   r   r6   r*   )r   r   r   r   can_introspect_json_field   s    z*DatabaseFeatures.can_introspect_json_fieldc             C   s   | j j o| j jdkS )Nr#   r   r%   )r#   r   r%   )r   r   r   )r   r   r   r   supports_index_column_ordering   s    
z/DatabaseFeatures.supports_index_column_orderingc             C   s   | j j o| j jdkS )Nr#   r      )r#   r   r9   )r   r   r   )r   r   r   r   supports_expression_indexes   s    
z,DatabaseFeatures.supports_expression_indexes)=__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supports_timezonesZ-requires_explicit_null_ordering_when_groupingZ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supports_partial_indexesZcollate_as_index_expressionZ supports_order_by_nulls_modifierZorder_by_nulls_firstZtest_collationsr   r   r   r   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   r1   r2   r3   r4   r6   r7   r8   r:   __classcell__r   r   )r   r   r      sn   2
	r   )r?   Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   r   r   r   r   r   <module>   s   