o
    æË·e  ã                   @   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                       s<  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eZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$h d£Z%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dddœZ-dZ.d	d
hiZ/e0‡ fdd„ƒZ1e0dd„ ƒZ2e0dd„ ƒZ3e0dd„ ƒZ4e5e6 7d¡ƒZ8e5e6 7d¡ƒZ9e5e6 7d¡ƒZ:e5e6 7d¡ƒZ;‡  Z<S )ÚDatabaseFeatures)é   Tz°
        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;>   ÚXMLÚJSONÚTEXTÚYAMLzsv-x-icu)Únon_defaultÚ
swedish_ciz(STATEMENT_TIMESTAMP() AT TIME ZONE 'UTC'zopclasses are PostgreSQL only.zQindexes.tests.SchemaIndexesNotPostgreSQLTests.test_create_index_ignores_opclassesc                    s   i t ƒ j¥ddddœ¥S )NÚBigIntegerFieldÚIntegerFieldÚSmallIntegerField)ÚPositiveBigIntegerFieldÚPositiveIntegerFieldÚPositiveSmallIntegerField)ÚsuperÚintrospected_field_types©Úself©Ú	__class__© ú]/var/www/ideatree/venv/lib/python3.10/site-packages/django/db/backends/postgresql/features.pyr   M   s   ÿüz)DatabaseFeatures.introspected_field_typesc                 C   ó   | j jdkS )NiÀÔ ©Ú
connectionÚ
pg_versionr   r   r   r   Úis_postgresql_12V   ó   z!DatabaseFeatures.is_postgresql_12c                 C   r   )NiÐû r   r   r   r   r   Úis_postgresql_13Z   r    z!DatabaseFeatures.is_postgresql_13c                 C   r   )Nià" r   r   r   r   r   Úis_postgresql_14^   r    z!DatabaseFeatures.is_postgresql_14r"   r   )=Ú__name__Ú
__module__Ú__qualname__Úminimum_database_versionÚallows_group_by_selected_pksÚcan_return_columns_from_insertÚ can_return_rows_from_bulk_insertÚhas_real_datatypeÚhas_native_uuid_fieldÚhas_native_duration_fieldÚhas_native_json_fieldÚcan_defer_constraint_checksÚhas_select_for_updateÚhas_select_for_update_nowaitÚhas_select_for_update_ofÚ!has_select_for_update_skip_lockedÚhas_select_for_no_key_updateÚcan_release_savepointsÚsupports_tablespacesÚsupports_transactionsÚ!can_introspect_materialized_viewsÚcan_distinct_on_fieldsÚcan_rollback_ddlÚsupports_combined_altersÚnulls_order_largestr   Úclosed_cursor_error_classÚgreatest_least_ignores_nullsÚcan_clone_databasesÚsupports_temporal_subtractionÚ%supports_slicing_ordering_in_compoundÚ(create_test_procedure_without_params_sqlÚ(create_test_procedure_with_int_param_sqlÚrequires_casted_case_in_updatesÚsupports_over_clauseÚ4only_supports_unbounded_with_preceding_and_followingÚ supports_aggregate_filter_clauseÚsupported_explain_formatsÚ&supports_deferrable_unique_constraintsÚhas_json_operatorsÚ-json_key_contains_list_matching_requires_listÚsupports_update_conflictsÚ%supports_update_conflicts_with_targetÚsupports_covering_indexesÚcan_rename_indexÚtest_collationsÚtest_now_utc_templateÚdjango_test_skipsr   r   r   r!   r"   ÚpropertyÚoperatorÚ
attrgetterÚhas_bit_xorÚsupports_covering_gist_indexesÚ supports_covering_spgist_indexesÚ%supports_non_deterministic_collationsÚ__classcell__r   r   r   r   r      s€    þÿÿ


ÿr   )rS   Ú	django.dbr   Ú django.db.backends.base.featuresr   Údjango.utils.functionalr   r   r   r   r   r   Ú<module>   s
    