HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/django/db/backends/postgresql/__pycache__/schema.cpython-310.pyc
o

�aS+�@s@ddlZddlmZddlmZddlmZGdd�de�ZdS)�N)�BaseDatabaseSchemaEditor)�IndexColumns)�strip_quotesc
s�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dd
�Z�fdd�Zdd�Zdd�Zdd�Z�fdd�Z	d)�fdd�	Z�fdd�Zd)dd�Zd)dd �Zd*�fd"d#�	Zd!d!d$d$d!d%d!d%d!dd!d!d&��fd'd(�
Z�ZS)+�DatabaseSchemaEditorzCREATE SEQUENCE %(sequence)sz,DROP SEQUENCE IF EXISTS %(sequence)s CASCADEz=SELECT setval('%(sequence)s', MAX(%(column)s)) FROM %(table)sz9ALTER SEQUENCE %(sequence)s OWNED BY %(table)s.%(column)szZCREATE INDEX %(name)s ON %(table)s%(using)s (%(columns)s)%(include)s%(extra)s%(condition)szgCREATE INDEX CONCURRENTLY %(name)s ON %(table)s%(using)s (%(columns)s)%(include)s%(extra)s%(condition)szDROP INDEX IF EXISTS %(name)sz*DROP INDEX CONCURRENTLY IF EXISTS %(name)szyCONSTRAINT %(name)s REFERENCES %(to_table)s(%(to_column)s)%(deferrable)s; SET CONSTRAINTS %(namespace)s%(name)s IMMEDIATEzRSET CONSTRAINTS %(name)s IMMEDIATE; ALTER TABLE %(table)s DROP CONSTRAINT %(name)sz,DROP FUNCTION %(procedure)s(%(param_types)s)cCs>t|t�r|�dd�}tj�|�}t|d�rd|_|���	�S)N�%z%%�encoding�utf8)
�
isinstance�str�replace�psycopg2�
extensions�adapt�hasattrr�	getquoted�decode)�self�value�adapted�r�F/usr/lib/python3/dist-packages/django/db/backends/postgresql/schema.py�quote_value&s

z DatabaseSchemaEditor.quote_valuecs0t��||�}|�||�}|dur|�|�|S�N)�super�_field_indexes_sql�_create_like_index_sql�append)r�model�field�output�like_index_statement��	__class__rrr/s

z'DatabaseSchemaEditor._field_indexes_sqlcCs.|jr	|�|j�S|jj�|��|�|j��Sr)�is_relation�rel_db_type�
connection�
data_types�get�get_internal_type�db_type�rrrrr�_field_data_type6s
�z%DatabaseSchemaEditor._field_data_typeccs8�|j��dkr|�|j�EdHdS|�|j�VdS)N�
ArrayField)�
base_fieldr(�_field_base_data_typesr+r*rrrr.>s�z+DatabaseSchemaEditor._field_base_data_typescCsr|j|jd�}|dur7|js|jr7d|vrdS|�d�r'|j||gddgd�S|�d�r7|j||gdd	gd�SdS)
z�
        Return the statement to create an index with varchar operator pattern
        when the column type is 'varchar' or 'text', otherwise return None.
        �r%N�[�varchar�_like�varchar_pattern_ops)�fields�suffix�	opclasses�text�text_pattern_ops)r)r%�db_index�unique�
startswith�_create_index_sql)rrrr)rrrrEs&
�
�z+DatabaseSchemaEditor._create_like_index_sqlcs�d|_d}|��}|��}|dkr+||kr+t|�|��t|�|��kr*|j|7_n|�|�|�|�kr<|j|7_t|jj�}dddd�}	|��|	vr�t|j	�}
d||
f}|j|�
|
�|	|��d	�gf|jd
|�
|�igf|jd
|�
|�igf|j
|�
|�|j|�
|
�d|�
|�d�d
�gf|j|�
|�|�
|
�|�
|�d�gf|j|�
|�|�
|
�|�
|�d�gfgfS|j|jd�d|	vr�t|j	�}
d||
f}t��||||�\}}
||jd
|�
|�igfgfSt��||||�S)Nz%ALTER COLUMN %(column)s TYPE %(type)sz USING %(column)s::%(type)sr,�bigint�integer�smallint)�	bigserial�serial�smallserialz	%s_%s_seq)�column�type�sequencez
nextval('%s'))rC�default)�table�changes)rGrCrEr/rD)�sql_alter_column_typer(�listr.r+r�_meta�db_table�lowerrC�
quote_name�sql_delete_sequence�sql_create_sequence�sql_alter_column�sql_alter_column_default�sql_set_sequence_max�sql_set_sequence_owner�
db_parametersr%r�_alter_column_type_sql)rr�	old_field�	new_field�new_type�	using_sql�new_internal_type�old_internal_typerG�serial_fields_maprC�
sequence_name�fragment�_r!rrrVes��

��	
��
�������	����1

���	z+DatabaseSchemaEditor._alter_column_type_sqlFc	
s|js|jr9|�d�r|�d�r$|�d�r|�d�r$|�d�r9|�d�s9|j|jj|jgdd�}	|�|�||	��t	��
||||||||�|jsO|jsO|jsU|jsd|jrd|�||�}
|
durd|�|
�|jr�|js�|js�|j|jj|jgdd�}|�|�||��dSdSdSdS)Nr1r7�citextr2)r5)r9r:r;�_create_index_namerKrLrC�execute�_delete_index_sqlr�_alter_fieldr)rrrWrX�old_typerY�
old_db_params�
new_db_params�strict�
index_namer �index_to_remover!rrre�s>���������
�z!DatabaseSchemaEditor._alter_fieldcs*|rt|||j||d�St��||||�S)N)�col_suffixesr6)rrNr�_index_columns)rrG�columnsrlr6r!rrrm�sz#DatabaseSchemaEditor._index_columnscCs|j|j|||d�dd�dS)N��concurrently)�params)rc�
create_sql�rr�indexrprrr�	add_index�szDatabaseSchemaEditor.add_indexcCs|�|j|||d��dS)Nro)rc�
remove_sqlrsrrr�remove_index�sz!DatabaseSchemaEditor.remove_indexNcs |r|jn|j}t��|||�Sr)�sql_delete_index_concurrently�sql_delete_indexrrd)rr�name�sqlrpr!rrrd�sz&DatabaseSchemaEditor._delete_index_sql�r)r4rzr5�using�
db_tablespacerlr{r6�	conditionrp�include�expressionscs4|s|jn|j}t�j|||||||||	|
||
d�S)N)r4rzr5r}r~rlr{r6rr�r�)�sql_create_index�sql_create_index_concurrentlyrr<)rrr4rzr5r}r~rlr{r6rrpr�r�r!rrr<�s
�z&DatabaseSchemaEditor._create_index_sql)F)NF)�__name__�
__module__�__qualname__rPrOrSrTr�r�ryrx�sql_create_column_inline_fk�
sql_delete_fk�sql_delete_procedurerrr+r.rrVrermrurwrdr<�
__classcell__rrr!rrs>���	 T�

�r)r�django.db.backends.base.schemar�!django.db.backends.ddl_referencesr�django.db.backends.utilsrrrrrr�<module>s