U
    Ha                     @   s@   d dl Z d dlmZ d dlmZ d dlmZ G dd deZdS )    N)InterfaceError)BaseDatabaseFeatures)cached_propertyc                       sh  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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dddhZ%dZ&dZ'dZ(dZ)d	d
hiZ*e+dd Z,e+ fddZ-e+dd Z.e+dd Z/e+dd Z0e+dd Z1e2e34dZ5e2e34dZ6e2e34dZ7e2e34dZ8e2e34dZ9e2e34dZ:e2e34dZ;  Z<S )DatabaseFeaturesTFz
        CREATE FUNCTION test_procedure () RETURNS void AS $$
        DECLARE
            V_I INTEGER;
        BEGIN
            V_I := 1;
        END;
    $$ LANGUAGE plpgsql;z
        CREATE FUNCTION test_procedure (P_I INTEGER) RETURNS void AS $$
        DECLARE
            V_I INTEGER;
        BEGIN
            V_I := P_I;
        END;
    $$ LANGUAGE plpgsql;ZJSONZTEXTXMLZYAMLzopclasses are PostgreSQL only.zQindexes.tests.SchemaIndexesNotPostgreSQLTests.test_create_index_ignores_opclassesc                 C   s   | j rdddS i S )Nzsv-x-icu)Znon_defaultZ
swedish_ci)is_postgresql_10self r
   J/tmp/pip-unpacked-wheel-3jxiddxt/django/db/backends/postgresql/features.pytest_collationsD   s
    z DatabaseFeatures.test_collationsc                    s   t  jddddS )NZBigIntegerFieldZIntegerFieldZSmallIntegerField)ZPositiveBigIntegerFieldZPositiveIntegerFieldZPositiveSmallIntegerField)superintrospected_field_typesr   	__class__r
   r   r   N   s
    z)DatabaseFeatures.introspected_field_typesc                 C   s   | j jdkS )Ni 
connectionZ
pg_versionr   r
   r
   r   r   W   s    z!DatabaseFeatures.is_postgresql_10c                 C   s   | j jdkS )Ni r   r   r
   r
   r   is_postgresql_11[   s    z!DatabaseFeatures.is_postgresql_11c                 C   s   | j jdkS )Ni r   r   r
   r
   r   is_postgresql_12_   s    z!DatabaseFeatures.is_postgresql_12c                 C   s   | j jdkS )Ni r   r   r
   r
   r   is_postgresql_13c   s    z!DatabaseFeatures.is_postgresql_13r   r   r   )=__name__
__module____qualname__Zallows_group_by_selected_pksZcan_return_columns_from_insertZ can_return_rows_from_bulk_insertZhas_real_datatypeZhas_native_uuid_fieldZhas_native_duration_fieldZhas_native_json_fieldZcan_defer_constraint_checksZhas_select_for_updateZhas_select_for_update_nowaitZhas_select_for_update_ofZ!has_select_for_update_skip_lockedZhas_select_for_no_key_updateZcan_release_savepointsZsupports_tablespacesZsupports_transactionsZ!can_introspect_materialized_viewsZcan_distinct_on_fieldsZcan_rollback_ddlZsupports_combined_altersZnulls_order_largestr   Zclosed_cursor_error_classZhas_case_insensitive_likeZgreatest_least_ignores_nullsZcan_clone_databasesZsupports_temporal_subtractionZ%supports_slicing_ordering_in_compoundZ(create_test_procedure_without_params_sqlZ(create_test_procedure_with_int_param_sqlZrequires_casted_case_in_updatesZsupports_over_clauseZ4only_supports_unbounded_with_preceding_and_followingZ supports_aggregate_filter_clauseZsupported_explain_formatsZvalidates_explain_optionsZ&supports_deferrable_unique_constraintsZhas_json_operatorsZ-json_key_contains_list_matching_requires_listZdjango_test_skipsr   r   r   r   r   r   r   propertyoperator
attrgetterZhas_brin_autosummarizeZhas_websearch_to_tsqueryZsupports_table_partitionsZsupports_covering_indexesZsupports_covering_gist_indexesZ%supports_non_deterministic_collationsZ&supports_alternate_collation_providers__classcell__r
   r
   r   r   r      sz   
	



r   )r   Z	django.dbr   Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   r   r
   r
   r
   r   <module>   s   