
    g                     V    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
y)    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'dZ(h dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dd	d	d	d
Z3dZ4dZ5e6d        Z7e6d        Z8e6d        Z9e6d        Z:e6 fd       Z;e6d        Z<e6d        Z=e6d        Z> e? e@j                  d            ZB e? e@j                  d            ZCdZD e? e@j                  d            ZE xZFS )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 VALUESc                     dhdhd}| j                   j                  d   j                  d      r|j                  dddhi       | j                  r|j                  d	d
hi       |S )NzQindexes.tests.SchemaIndexesNotPostgreSQLTests.test_create_index_ignores_opclassesz2lookup.tests.LookupTests.test_textfield_exact_null)zopclasses are PostgreSQL only.z$PostgreSQL requires casting to text.OPTIONSpoolz Pool does implicit health checkszNbackends.base.test_base.ConnectionHealthChecksTests.test_health_checks_enabledz]backends.base.test_base.ConnectionHealthChecksTests.test_set_autocommit_health_checks_enabledz>The actual query cannot be determined for server side bindingsz>backends.base.test_base.ExecuteWrapperTests.test_wrapper_debug)
connectionsettings_dictgetupdateuses_server_side_binding)selfskipss     ~/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/db/backends/postgresql/features.pydjango_test_skipsz"DatabaseFeatures.django_test_skipsV   s    6/
 E5
 ??((377?LL65D9	 ((LLT-W     c                 V    t               }| j                  r|j                  dh       |S )NzOaggregation.tests.AggregateTestCase.test_group_by_nested_expression_with_params)setr   r   )r   expected_failuress     r   django_test_expected_failuresz.DatabaseFeatures.django_test_expected_failuresw   s4    E(($$
B	 ! r    c                 j    | j                   j                  d   }t        xr |j                  d      du S )Nr   server_side_bindingT)r   r   r   r   )r   optionss     r   r   z)DatabaseFeatures.uses_server_side_binding   s0    ////	:Iw{{+@ATIIr    c                 .    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_exception   s    VVVWWWr    c                 (    i t         |   ddddS )NBigIntegerFieldIntegerFieldSmallIntegerField)PositiveBigIntegerFieldPositiveIntegerFieldPositiveSmallIntegerField)superintrospected_field_types)r   	__class__s    r   r4   z)DatabaseFeatures.introspected_field_types   s(    
g.
'8$2)<	
 	
r    c                 4    | j                   j                  dk\  S )Ni" r   
pg_versionr*   s    r   is_postgresql_14z!DatabaseFeatures.is_postgresql_14       ))V33r    c                 4    | j                   j                  dk\  S )NiI r7   r*   s    r   is_postgresql_15z!DatabaseFeatures.is_postgresql_15   r:   r    c                 4    | j                   j                  dk\  S )Ni q r7   r*   s    r   is_postgresql_16z!DatabaseFeatures.is_postgresql_16   r:   r    r9   r<   )G__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supports_frame_exclusion4only_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_defaultsr   r   r$   r   r+   r4   r9   r<   r>   propertyoperator
attrgetterhas_bit_xor supports_covering_spgist_indexessupports_unlimited_charfield*supports_nulls_distinct_unique_constraints__classcell__)r5   s   @r   r	   r	   	   sA   $#' %)"'+$  $ "& #' #(,%#' ! (,%!26/# .#' $(!,0)0,0,40 '+##;?8'+$ ?-1*481 $,0) $(,%).&! 	O G&E# @ ! ! J J X X 
 
 4 4 4 4 4 4 .8../ABCK'/0C0C0CDV0W'X$#' 19./2.r    r	   )ru   	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 3c+ cr    