§
    ¤”j  ã                   ó^   — d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	  G d„ de¦  «        Z
dS )é    N)Ú	DataErrorÚInterfaceError)ÚBaseDatabaseFeatures)Úis_psycopg3)Ú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eZd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Z0dZ1dd	d	d	d
œZ2dZ3dZ4dhdhdœZ5e6d„ ¦   «         Z7e6d„ ¦   «         Z8e6d„ ¦   «         Z9e6ˆ fd„¦   «         Z:e6d„ ¦   «         Z;e6d„ ¦   «         Z<e6d„ ¦   «         Z= e> e?j@        d¦  «        ¦  «        ZA e> e?j@        d¦  «        ¦  «        ZBdZC e> e?j@        d¦  «        ¦  «        ZDˆ xZES )Ú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;z¸
        CREATE TABLE test_table_composite_pk (
            column_1 INTEGER NOT NULL,
            column_2 INTEGER NOT NULL,
            PRIMARY KEY(column_1, column_2)
        )
    >   ÚXMLÚJSONÚTEXTÚYAMLFÚCzsv-x-icu)ÚdeterministicÚnon_defaultÚ
swedish_ciÚvirtualz(STATEMENT_TIMESTAMP() AT TIME ZONE 'UTC'zINSERT INTO {} DEFAULT VALUESzQindexes.tests.SchemaIndexesNotPostgreSQLTests.test_create_index_ignores_opclassesz2lookup.tests.LookupTests.test_textfield_exact_null)zopclasses are PostgreSQL only.z$PostgreSQL requires casting to text.c                 ó\   — t          ¦   «         }| j        r|                     dh¦  «         |S )NzOaggregation.tests.AggregateTestCase.test_group_by_nested_expression_with_params)ÚsetÚuses_server_side_bindingÚupdate)ÚselfÚexpected_failuress     úu/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/db/backends/postgresql/features.pyÚdjango_test_expected_failuresz.DatabaseFeatures.django_test_expected_failures_   sB   € å™EœEÐØÔ(ð 		Ø×$Ò$ð
Bð	ñô ð ð !Ð ó    c                 ób   — | j         j        d         }t          o|                     d¦  «        du S )NÚOPTIONSÚserver_side_bindingT)Ú
connectionÚsettings_dictr   Úget)r   Úoptionss     r   r   z)DatabaseFeatures.uses_server_side_bindingn   s.   € à”/Ô/°	Ô:ˆÝÐI˜wŸ{š{Ð+@ÑAÔAÀTÐIÐIr   c                 ó4   — t           r	t          dfS t          dfS )Nz6PostgreSQL text fields cannot contain NUL (0x00) bytesz6A string literal cannot contain NUL (0x00) characters.)r   r   Ú
ValueError©r   s    r   Ú+prohibits_null_characters_in_text_exceptionz<DatabaseFeatures.prohibits_null_characters_in_text_exceptions   s#   € åð 	XÝÐVÐVÐVåÐWÐWÐWr   c                 ó:   •— i t          ¦   «         j        ¥ddddœ¥S )NÚBigIntegerFieldÚIntegerFieldÚSmallIntegerField)ÚPositiveBigIntegerFieldÚPositiveIntegerFieldÚPositiveSmallIntegerField)ÚsuperÚintrospected_field_types)r   Ú	__class__s    €r   r0   z)DatabaseFeatures.introspected_field_typesz   s4   ø€ ð
Ý‰gŒgÔ.ð
à'8Ø$2Ø)<ð	
ð 
ð 
ð 	
r   c                 ó"   — | j         j        dk    S )NiÐû ©r    Ú
pg_versionr&   s    r   Úis_postgresql_13z!DatabaseFeatures.is_postgresql_13ƒ   ó   € àŒÔ)¨VÒ3Ð3r   c                 ó"   — | j         j        dk    S )Nià" r3   r&   s    r   Úis_postgresql_14z!DatabaseFeatures.is_postgresql_14‡   r6   r   c                 ó"   — | j         j        dk    S )NiðI r3   r&   s    r   Úis_postgresql_15z!DatabaseFeatures.is_postgresql_15‹   r6   r   r8   r:   )FÚ__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_commentsÚsupports_tablespacesÚsupports_transactionsÚ!can_introspect_materialized_viewsÚcan_distinct_on_fieldsÚcan_rollback_ddlÚ+schema_editor_uses_clientside_param_bindingÚ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Ú,create_test_table_with_composite_primary_keyÚ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Ú!supports_stored_generated_columnsÚ"supports_virtual_generated_columnsÚcan_rename_indexÚtest_collationsÚtest_now_utc_templateÚinsert_test_table_with_defaultsÚdjango_test_skipsr   r   r   r'   r0   r5   r8   r:   ÚpropertyÚoperatorÚ
attrgetterÚhas_bit_xorÚ supports_covering_spgist_indexesÚsupports_unlimited_charfieldÚ*supports_nulls_distinct_unique_constraintsÚ__classcell__)r1   s   @r   r	   r	   	   s·  ø€ € € € € Ø$ÐØ#'Ð Ø%)Ð"Ø'+Ð$ØÐØ ÐØ $ÐØ ÐØ"&ÐØ ÐØ#'Ð Ø#ÐØ(,Ð%Ø#'Ð Ø!ÐØÐØÐØ ÐØ(,Ð%Ø!ÐØÐØ26Ð/Ø#ÐØÐØ .ÐØ#'Ð ØÐØ$(Ð!Ø,0Ð)ð0Ð,ð0Ð,ð4Ð0ð '+Ð#ØÐØ;?Ð8Ø'+Ð$Ø ?Ð ?Ð ?ÐØ-1Ð*ØÐØ48Ð1Ø $ÐØ,0Ð)Ø $ÐØ(,Ð%Ø).Ð&ØÐàØ!Ø Øð	ð €Oð GÐØ&EÐ#ð2ð+
ð
 Að1
ðð Ðð ð!ð !ñ „_ð!ð ðJð Jñ „_ðJð ðXð Xñ „_ðXð ð
ð 
ð 
ð 
ñ „_ð
ð ð4ð 4ñ „_ð4ð ð4ð 4ñ „_ð4ð ð4ð 4ñ „_ð4ð �(Ð.˜8Ô.Ð/AÑBÔBÑCÔC€KØ'/ xÐ0C°Ô0CÐDVÑ0WÔ0WÑ'XÔ'XÐ$Ø#'Ð Ø19°ØˆÔÐ.Ñ/Ô/ñ2ô 2Ð.Ð.Ð.Ð.Ð.r   r	   )rq   Ú	django.dbr   r   Ú django.db.backends.base.featuresr   Ú)django.db.backends.postgresql.psycopg_anyr   Údjango.utils.functionalr   r	   © r   r   ú<module>r}      s›   ðØ €€€à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø AÐ AÐ AÐ AÐ AÐ AØ AÐ AÐ AÐ AÐ AÐ AØ 3Ð 3Ð 3Ð 3Ð 3Ð 3ðKð Kð Kð Kð KÐ+ñ Kô Kð Kð Kð Kr   