B
    ²ô`þ  ã               @   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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+e,d	d
„ ƒZ-e,dd„ ƒZ.e,dd„ ƒZ/e,dd„ ƒZ0e1e2 3d¡ƒZ4e1e2 3d¡ƒZ5e1e2 3d¡ƒZ6e1e2 3d¡ƒZ7e1e2 3d¡ƒZ8d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YAMLc             C   s   | j jdkS )Nièa )Ú
connectionÚ
pg_version)Úself© r
   úU/home/dcms/DCMS/lib/python3.7/site-packages/django/db/backends/postgresql/features.pyÚis_postgresql_9_6@   s    z"DatabaseFeatures.is_postgresql_9_6c             C   s   | j jdkS )Ni † )r   r   )r	   r
   r
   r   Úis_postgresql_10D   s    z!DatabaseFeatures.is_postgresql_10c             C   s   | j jdkS )Ni°­ )r   r   )r	   r
   r
   r   Úis_postgresql_11H   s    z!DatabaseFeatures.is_postgresql_11c             C   s   | j jdkS )NiÀÔ )r   r   )r	   r
   r
   r   Úis_postgresql_12L   s    z!DatabaseFeatures.is_postgresql_12r   r   r   N)9Ú__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can_release_savepointsZsupports_tablespacesZsupports_transactionsZcan_introspect_autofieldZcan_introspect_ip_address_fieldZ!can_introspect_materialized_viewsZ"can_introspect_small_integer_fieldZ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_listr   r   r   r   r   ÚpropertyÚoperatorÚ
attrgetterZhas_bloom_indexZhas_brin_autosummarizeZhas_phraseto_tsqueryZhas_websearch_to_tsqueryZsupports_table_partitionsr
   r
   r
   r   r      sb   r   )r   Z	django.dbr   Z django.db.backends.base.featuresr   Zdjango.utils.functionalr   r   r
   r
   r
   r   Ú<module>   s   