o
    <gR!                     @   sH   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 deZ	dS )    )DatabaseErrorInterfaceError)BaseDatabaseFeatures)is_oracledb)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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+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5d	d
hZ6dZ7e8dd Z9e8 fddZ:e8dd Z;e8dd Z<e8dd Z=e8dd Z>e8dd Z?e8dd Z@e8dd ZAe8dd ZB  ZCS ) DatabaseFeatures)   FTz|
        CREATE PROCEDURE "TEST_PROCEDURE" AS
            V_I INTEGER;
        BEGIN
            V_I := 1;
        END;
    z
        CREATE PROCEDURE "TEST_PROCEDURE" (P_I INTEGER) AS
            V_I INTEGER;
        BEGIN
            V_I := P_I;
        END;
    z
        CREATE TABLE test_table_composite_pk (
            column_1 NUMBER(11) NOT NULL,
            column_2 NUMBER(11) NOT NULL,
            PRIMARY KEY (column_1, column_2)
        )
    i  z$CURRENT_TIMESTAMP AT TIME ZONE 'UTC'zFannotations.tests.NonAggregateAnnotationTestCase.test_custom_functionsz^annotations.tests.NonAggregateAnnotationTestCase.test_custom_functions_can_ref_other_functionsz1INSERT INTO {} VALUES (DEFAULT, DEFAULT, DEFAULT)c                 C   sj   ddhddhh dddhdhd	hd
hd}| j jdk r#|ddhi tr3| j jdkr3|ddhi |S )Nz4db_functions.text.test_sha224.SHA224Tests.test_basicz8db_functions.text.test_sha224.SHA224Tests.test_transformzVdb_functions.datetime.test_extract_trunc.DateFunctionTests.test_trunc_week_before_1000zbdb_functions.datetime.test_extract_trunc.DateFunctionWithTimeZoneTests.test_trunc_week_before_1000>   Cexpressions.tests.ExpressionOperatorTests.test_lefthand_bitwise_xorHexpressions.tests.ExpressionOperatorTests.test_lefthand_bitwise_xor_nullNexpressions.tests.ExpressionOperatorTests.test_lefthand_bitwise_xor_right_nullzHexpressions_window.tests.WindowFunctionTests.test_row_number_no_orderingz:prefetch_related.tests.PrefetchLimitTests.test_empty_orderzMmigrations.test_operations.OperationTests.test_alter_field_pk_fk_db_collationzIgeneric_relations_regress.tests.GenericRelationTests.test_textlink_filterz?lookup.tests.LookupQueryingTests.test_aggregate_combined_lookup)zOracle doesn't support SHA224.zwOracle doesn't correctly calculate ISO 8601 week numbering before 1583 (the Gregorian calendar was introduced in 1582).z#Oracle doesn't support bitwise XOR.z9Oracle requires ORDER BY in row_number, ANSI:SQL doesn't.zGOracle doesn't support changing collations on indexed columns (#33671).z1Oracle doesn't support comparing NCLOB to NUMBER.z1Oracle doesn't support casting filters to NUMBER.   z6Raises ORA-00600 on Oracle < 23c: internal error code.z?model_fields.test_jsonfield.TestQuerying.test_usage_in_subquery)      r   zhpython-oracledb 2.1.2+ no longer hides 'ORA-1403: no data found' exceptions raised in database triggers.zLbackends.oracle.tests.TransactionalTests.test_hidden_no_data_found_exception)
connectionoracle_versionupdater   oracledb_version)selfskips r   U/var/www/html/venv/lib/python3.10/site-packages/django/db/backends/oracle/features.pydjango_test_skips_   s@   $	z"DatabaseFeatures.django_test_skipsc                    s   i t  jdddddddS )N	CharFieldBigIntegerFieldIntegerFieldDateTimeField)GenericIPAddressFieldPositiveBigIntegerFieldPositiveIntegerFieldPositiveSmallIntegerFieldSmallIntegerField	TimeField)superintrospected_field_typesr   	__class__r   r   r$      s   z)DatabaseFeatures.introspected_field_typesc                 C   s   dddd| j rddS d dS )N	BINARY_CIBINARY
SWEDISH_CI)cicsnon_default
swedish_civirtual)supports_collation_on_charfieldr%   r   r   r   test_collations   s   z DatabaseFeatures.test_collationsc                 C   s   d| j  }| j 4}z|| W n" ty4 } z|jd jdkr/W Y d }~W d    dS  d }~ww 	 W d    dS 1 sAw   Y  d S )Nz"SELECT CAST('a' AS VARCHAR2(4001))r   i  FT)bare_select_suffixr   cursorexecuter   argscode)r   sqlr3   er   r   r   r0      s   

$z0DatabaseFeatures.supports_collation_on_charfieldc                 C      | j jdkS N)   r   r   r%   r   r   r   !supports_primitives_in_json_field      z2DatabaseFeatures.supports_primitives_in_json_fieldc                 C   r9   r:   r<   r%   r   r   r   supports_frame_exclusion   r>   z)DatabaseFeatures.supports_frame_exclusionc                 C   r9   Nr   r<   r%   r   r   r   &supports_boolean_expr_in_select_clause   r>   z7DatabaseFeatures.supports_boolean_expr_in_select_clausec                 C   r9   r@   r<   r%   r   r   r   supports_comparing_boolean_expr   r>   z0DatabaseFeatures.supports_comparing_boolean_exprc                 C   r9   r@   r<   r%   r   r   r   (supports_aggregation_over_interval_types   r>   z9DatabaseFeatures.supports_aggregation_over_interval_typesc                 C   s   | j jdkrdS dS )Nr    z
 FROM DUALr<   r%   r   r   r   r2      s   z#DatabaseFeatures.bare_select_suffix)D__name__
__module____qualname__minimum_database_versionallows_group_by_loballows_group_by_select_index!interprets_empty_strings_as_nullshas_select_for_updatehas_select_for_update_nowait!has_select_for_update_skip_lockedhas_select_for_update_ofselect_for_update_of_columncan_return_columns_from_insertsupports_subqueries_in_group_by*ignores_unnecessary_order_by_in_subqueriessupports_transactionssupports_timezoneshas_native_duration_fieldcan_defer_constraint_checks.supports_partially_nullable_unique_constraints&supports_deferrable_unique_constraintstruncates_namessupports_commentssupports_tablespacessupports_sequence_reset!can_introspect_materialized_viewsatomic_transactionsnulls_order_largestrequires_literal_defaults'supports_default_keyword_in_bulk_insertr   closed_cursor_error_class%supports_select_for_update_with_limitsupports_temporal_subtractionignores_table_name_casesupports_index_on_text_field(create_test_procedure_without_params_sql(create_test_procedure_with_int_param_sql,create_test_table_with_composite_primary_keysupports_callproc_kwargssupports_over_clause#supports_frame_range_fixed_distancesupports_ignore_conflictsmax_query_paramssupports_partial_indexes!supports_stored_generated_columns"supports_virtual_generated_columnscan_rename_index%supports_slicing_ordering_in_compound#requires_compound_order_by_subquery*allows_multiple_constraints_on_same_fieldssupports_json_field_containssupports_collation_on_textfieldtest_now_utc_templatedjango_test_expected_failuresinsert_test_table_with_defaultsr   r   r$   r1   r0   r=   r?   rA   rB   rC   r2   __classcell__r   r   r&   r   r      s    
:
	





r   N)
	django.dbr   r    django.db.backends.base.featuresr   &django.db.backends.oracle.oracledb_anyr   django.utils.functionalr   r   r   r   r   r   <module>   s
    