
     hv                     ^    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ddd	Z0d
Z1dhdhdZ2e3d             Z4e3d             Z5e3d             Z6e3 fd            Z7e3d             Z8e3d             Z9 e: e;j<        d                    Z= e: e;j<        d                    Z>dZ? x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;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YAMLCzsv-x-icu)deterministicnon_default
swedish_ciz(STATEMENT_TIMESTAMP() AT TIME ZONE 'UTC'zQindexes.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     e/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/db/backends/postgresql/features.pydjango_test_expected_failuresz.DatabaseFeatures.django_test_expected_failures[   sB    EE( 		$$
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_bindingj   s.    //	:Iw{{+@AAT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_exceptiono   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   r/   z)DatabaseFeatures.introspected_field_typesv   s4    
gg.
'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" r2   r%   s    r   is_postgresql_14z!DatabaseFeatures.is_postgresql_14   r5   r   r7   )A__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_clause4only_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/   r4   r7   propertyoperator
attrgetterhas_bit_xor supports_covering_spgist_indexessupports_unlimited_charfield__classcell__)r0   s   @r   r	   r	   	   sd       $#' %)"'+$  $ "& #' #(,%#' ! (,%!26/# .#' $(!,0)0,0,40 '+#;?8'+$ ? ? ?-1*481 $,0) $!  O
 G2+

 A1
  ! ! _! J J _J X X _X 
 
 
 
 _
 4 4 _4 4 4 _4 (.8./ABBCCK'/x0C0CDV0W0W'X'X$#'     r   r	   )rk   	django.dbr   r    django.db.backends.base.featuresr   )django.db.backends.postgresql.psycopg_anyr   django.utils.functionalr   r	    r   r   <module>rv      s     / / / / / / / / A A A A A A A A A A A A 3 3 3 3 3 3@( @( @( @( @(+ @( @( @( @( @(r   