o 3a#@s4ddlZddlmZddlmZGdddeZdS)N)BaseDatabaseFeatures)cached_propertycseZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZdZdZdZdZdZdZdddd Zed d Zed d ZeddZ eddZ!eddZ"efddZ#eddZ$e%e&'dZ(eddZ)eddZ*eddZ+e%e&'dZ,ed d!Z-e%e&'d"Z.ed#d$Z/ed%d&Z0ed'd(Z1ed)d*Z2ed+d,Z3ed-d.Z4ed/d0Z5ed1d2Z6ed3d4Z7ed5d6Z8ed7d8Z9ed9d:Z:ed;d<Z;Z= 8.0.18 specific.z4queries.test_explain.ExplainTests.test_mysql_analyze) connectionsql_modeupdatemysql_is_mariadb mysql_versionsupports_explain_analyze)selfskipsrrC/usr/lib/python3/dist-packages/django/db/backends/mysql/features.pydjango_test_skips8sN z"DatabaseFeatures.django_test_skipscC |jjdS)zGInternal method used in Django tests. Don't rely on this from your codedefault_storage_enginermysql_server_datarrrr_mysql_storage_enginejs z&DatabaseFeatures._mysql_storage_enginecCs d|jjvS)zt Autoincrement primary key can be set to 0 if it doesn't generate new autoincrement values. NO_AUTO_VALUE_ON_ZERO)rrr!rrrallows_auto_pk_0os z!DatabaseFeatures.allows_auto_pk_0cC|jjo |jjdkS)N)r rrrrrr!rrrupdate_can_self_selectwz'DatabaseFeatures.update_can_self_selectcC |jdkS)z-Confirm support for introspected foreign keysMyISAMr"r!rrrcan_introspect_foreign_keys{ z,DatabaseFeatures.can_introspect_foreign_keyscsitjdddddS)N TextField IntegerFieldBigIntegerField CharField) BinaryField BooleanField DurationFieldGenericIPAddressField)superintrospected_field_typesr! __class__rrr7sz)DatabaseFeatures.introspected_field_typescCr%)N)r rrr&r!rrrcan_return_columns_from_insertr(z/DatabaseFeatures.can_return_columns_from_insertr:cCr)Nhas_zoneinfo_databaserr!rrrr; z&DatabaseFeatures.has_zoneinfo_databasecCr)Nsql_auto_is_nullrr!rrris_sql_auto_is_null_enabledr<z,DatabaseFeatures.is_sql_auto_is_null_enabledcCs|jjrdS|jjdkS)NT)rrr&r!rrrsupports_over_clauses z%DatabaseFeatures.supports_over_clauser@cC |jjr |jjdkS|jjdkS)N)r rr?rr&r!rrr!supports_column_check_constraints  z2DatabaseFeatures.supports_column_check_constraintsrEcCs4|jjr|jj}|dkr|dkp|dkS|jjdkS)N)r r)r r)r rr rCr&)rversionrrr can_introspect_check_constraintss z1DatabaseFeatures.can_introspect_check_constraintscC|jj o |jjdkSNr?rrBr&r!rrr!has_select_for_update_skip_lockedz2DatabaseFeatures.has_select_for_update_skip_lockedcCrA)N)r rrrLr&r!rrrhas_select_for_update_nowaitrFz-DatabaseFeatures.has_select_for_update_nowaitcCrJrKr&r!rrrhas_select_for_update_ofrNz)DatabaseFeatures.has_select_for_update_ofcCs|jjp |jjdkS)N)r?rr&r!rrrrr(z)DatabaseFeatures.supports_explain_analyzecCs*hd}|jjs|jjdkr|d|S)N>JSONTEXT TRADITIONALrCTREE)rrradd)rformatsrrrsupported_explain_formatss z*DatabaseFeatures.supported_explain_formatscCr))zI All storage engines except MyISAM support transactions. r*r+r!rrrsupports_transactionss z&DatabaseFeatures.supports_transactionscCr)Nlower_case_table_namesrr!rrrignores_table_name_caser<z(DatabaseFeatures.ignores_table_name_casecCs |jj SN)rrr!rrrsupports_default_in_lead_lagr-z-DatabaseFeatures.supports_default_in_lead_lagcCrA)N)r r)rr^r?r&r!rrrsupports_json_fieldrFz$DatabaseFeatures.supports_json_fieldcCs|jjr |jo |jS|jSr\)rrr_rIr!rrrcan_introspect_json_fields z*DatabaseFeatures.can_introspect_json_fieldcCrJrKr&r!rrrsupports_index_column_ordering  z/DatabaseFeatures.supports_index_column_orderingcCrJ)N)r?r r&r!rrrsupports_expression_indexesrbz,DatabaseFeatures.supports_expression_indexes)=__name__ __module__ __qualname__empty_fetchmany_valueallows_group_by_pkrelated_fields_match_typeallow_sliced_subqueries_with_inhas_select_for_updatesupports_forward_referencessupports_regex_backreferencing!supports_date_lookup_using_stringsupports_timezones-requires_explicit_null_ordering_when_groupingcan_release_savepointsatomic_transactionscan_clone_databasessupports_temporal_subtractionsupports_select_intersectionsupports_select_difference%supports_slicing_ordering_in_compoundsupports_index_on_text_fieldhas_case_insensitive_like(create_test_procedure_without_params_sql(create_test_procedure_with_int_param_sqlsupports_partial_indexescollate_as_index_expression supports_order_by_nulls_modifierorder_by_nulls_firsttest_collationsrrr"r$r'r,r7r:propertyoperator attrgetter can_return_rows_from_bulk_insertr;r>r@#supports_frame_range_fixed_distancerE supports_table_check_constraintsrIrMrOrPrrXrYr[r]r_r`rard __classcell__rrr8rrs 1                     r)r django.db.backends.base.featuresrdjango.utils.functionalrrrrrrs