§
    Ÿj�9  ã                   óR   — d dl mZ d dlmZ d dlmZ d dlmZ  G d„ de¦  «        ZdS )é    )ÚBaseDatabaseSchemaEditor)ÚIndexColumns)Úsql)Ústrip_quotesc                   óî   ‡ — 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#ˆ fd„	ZdZdZd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Z	 d$ˆ fd„	Zˆ fd„Zd$d„Zd$d„Zd%ˆ fd„	Zddddddddddddd œˆ fd!„
Zd"„ Zˆ xZ S )&ÚDatabaseSchemaEditorzeUPDATE %(table)s SET %(column)s = %(default)s WHERE %(column)s IS NULL; SET CONSTRAINTS ALL IMMEDIATEz1ALTER SEQUENCE IF EXISTS %(sequence)s AS %(type)sz,DROP SEQUENCE IF EXISTS %(sequence)s CASCADEzZCREATE 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)szDROP 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)© c                 óê   •— |€"t          ¦   «                              ||¦  «        S | j        j                             t          |¦  «        |¦  «        }t          ¦   «                              |d ¦  «        S ©N)ÚsuperÚexecuteÚ
connectionÚopsÚcompose_sqlÚstr)Úselfr   ÚparamsÚ	__class__s      €úq/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/db/backends/postgresql/schema.pyr   zDatabaseSchemaEditor.execute*   sX   ø€ àˆ>Ý‘7”7—?’? 3¨Ñ/Ô/Ð/ØŒoÔ!×-Ò-­c°#©h¬h¸Ñ?Ô?ˆå‰wŒw�Š˜s DÑ)Ô)Ð)ó    zRALTER TABLE %(table)s ALTER COLUMN %(column)s ADD GENERATED BY DEFAULT AS IDENTITYzEALTER TABLE %(table)s ALTER COLUMN %(column)s DROP IDENTITY IF EXISTSc                 ó@   — t          j        || j        j        ¦  «        S r   )r   Úquoter   )r   Úvalues     r   Úquote_valuez DatabaseSchemaEditor.quote_value:   s   € ÝŒy˜ ¤Ô :Ñ;Ô;Ð;r   c                 ó¦   •— t          ¦   «                              ||¦  «        }|                      ||¦  «        }|�|                     |¦  «         |S r   )r   Ú_field_indexes_sqlÚ_create_like_index_sqlÚappend)r   ÚmodelÚfieldÚoutputÚlike_index_statementr   s        €r   r   z'DatabaseSchemaEditor._field_indexes_sql=   sP   ø€ Ý‘”×+Ò+¨E°5Ñ9Ô9ˆØ#×:Ò:¸5À%ÑHÔHÐØÐ+Ø�MŠMÐ.Ñ/Ô/Ð/Øˆr   c                 óØ   — |j         r|                     | j        ¦  «        S | j        j                             |                     ¦   «         |                     | j        ¦  «        ¦  «        S r   )Úis_relationÚrel_db_typer   Ú
data_typesÚgetÚget_internal_typeÚdb_type©r   r    s     r   Ú_field_data_typez%DatabaseSchemaEditor._field_data_typeD   s`   € ØÔð 	6Ø×$Ò$ T¤_Ñ5Ô5Ð5ØŒÔ)×-Ò-Ø×#Ò#Ñ%Ô%Ø�MŠM˜$œ/Ñ*Ô*ñ
ô 
ð 	
r   c              #   óÀ   K  — |j                              ¦   «         dk    r"|                      |j         ¦  «        E d {V —† d S |                      |j         ¦  «        V — d S )NÚ
ArrayField)Ú
base_fieldr(   Ú_field_base_data_typesr+   r*   s     r   r/   z+DatabaseSchemaEditor._field_base_data_typesL   sr   è è € àÔ×-Ò-Ñ/Ô/°<Ò?Ð?Ø×2Ò2°5Ô3CÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDà×'Ò'¨Ô(8Ñ9Ô9Ð9Ð9Ð9Ð9Ð9r   c                 óº  — |                      | j        ¬¦  «        }|�½|j        s|j        r¯d|v rdS t	          |dd¦  «        }|s|j        rt	          |j        dd¦  «        }|r|                      |¦  «        sdS |                     d¦  «        r|  	                    ||gddg¬¦  «        S |                     d	¦  «        r|  	                    ||gdd
g¬¦  «        S dS )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ú[Údb_collationÚvarcharÚ_likeÚvarchar_pattern_ops)ÚfieldsÚsuffixÚ	opclassesÚtextÚtext_pattern_ops)
r)   r   Údb_indexÚuniqueÚgetattrr$   Útarget_fieldÚ_is_collation_deterministicÚ
startswithÚ_create_index_sql)r   r   r    r)   Úcollation_names        r   r   z+DatabaseSchemaEditor._create_like_index_sqlS   s+  € ð
 —-’-¨4¬?�-Ñ;Ô;ˆØÐ E¤NÐ°e´lÐð �gˆ~ˆ~Ø�tõ % U¨N¸DÑAÔAˆNØ!ð S eÔ&7ð SÝ!(¨Ô);¸^ÈTÑ!RÔ!R�Øð  d×&FÒ&FÀ~Ñ&VÔ&Vð Ø�tØ×!Ò! )Ñ,Ô,ð Ø×-Ò-ØØ!˜7Ø"Ø4Ð5ð	 .ñ ô ð ð ×#Ò# FÑ+Ô+ð Ø×-Ò-ØØ!˜7Ø"Ø1Ð2ð	 .ñ ô ð ð ˆtr   c                 ór  — |j         rdS d}|                     ¦   «         }|                     ¦   «         }|dk    rO||k    rIt          |                      |¦  «        ¦  «        t          |                      |¦  «        ¦  «        k    r|S n.|                      |¦  «        |                      |¦  «        k    r|S dS )NÚ z USING %(column)s::%(type)sr-   )Ú	generatedr(   Úlistr/   r+   )r   Ú	new_fieldÚ	old_fieldÚ	using_sqlÚnew_internal_typeÚold_internal_types         r   Ú
_using_sqlzDatabaseSchemaEditor._using_sqlz   sÕ   € ØÔð 	Ø�2Ø1ˆ	Ø%×7Ò7Ñ9Ô9ÐØ%×7Ò7Ñ9Ô9ÐØ Ò,Ð,Ð1BÐFWÒ1WÐ1Wå�D×/Ò/°	Ñ:Ô:Ñ;Ô;½tØ×+Ò+¨IÑ6Ô6ñ@ô @ò ð ð !Ð ðð ×"Ò" 9Ñ-Ô-°×1FÒ1FÀyÑ1QÔ1QÒQÐQØÐØˆrr   c                 óô   — | j                              ¦   «         5 }| j         j                             ||¦  «        D ]$}|d         |k    r|d         c cd d d ¦  «         S Œ%	 d d d ¦  «         n# 1 swxY w Y   d S )NÚcolumnÚname)r   ÚcursorÚintrospectionÚget_sequences)r   ÚtablerO   rQ   Úsequences        r   Ú_get_sequence_namez'DatabaseSchemaEditor._get_sequence_nameŠ   sâ   € ØŒ_×#Ò#Ñ%Ô%ð 	,¨Ø œOÔ9×GÒGÈÐPUÑVÔVð ,ð ,�Ø˜HÔ%¨Ò/Ð/Ø# FÔ+Ð+Ð+ð	,ð 	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,à/ð,ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð ˆts   š8A-ÁA-Á-A1Á4A1c                 ó   — |j         s|j        o€|                     d¦  «        r|                     d¦  «         pU|                     d¦  «        o|                     d¦  «         p*|                     d¦  «        o|                     d¦  «         S )Nr4   r:   Úcitext)r<   r=   rA   )r   rI   Úold_typeÚnew_types       r   Ú(_is_changing_type_of_indexed_text_columnz=DatabaseSchemaEditor._is_changing_type_of_indexed_text_column‘   s›   € ØÔ"Ð6 iÔ&6ð 
Ø× Ò  Ñ+Ô+ÐR°H×4GÒ4GÈ	Ñ4RÔ4RÐ0Rð UØ×#Ò# FÑ+Ô+ÐO°H×4GÒ4GÈÑ4OÔ4OÐ0OðUà×#Ò# HÑ-Ô-ÐS°h×6IÒ6IÈ(Ñ6SÔ6SÐ2Sð	
r   c           	      ó  •— |                      | j        ¬¦  «        }|d         }|                      |||¦  «        rQ|                      |j        j        |j        gd¬¦  «        }	|                      |                      ||	¦  «        ¦  «         d| _	        |  
                    ||¦  «        x}
r| xj	        |
z  c_	        |                     ¦   «         }|                     ¦   «         }t          |j        j        ¦  «        }h d£}||v }||v }|ro|smt          |j        ¦  «        }| j	        |                      |¦  «        |ddœz  g f| j        |                      |¦  «        |                      |¦  «        d	œz  g fgfS |r×|sÕ|                      | j        |                      |¦  «        |                      t          |j        ¦  «        ¦  «        d	œz  ¦  «         t          |j        ¦  «        }t!          ¦   «                              ||||||¦  «        \  }}g }|                      ||¦  «        x}r"| j        d
|                      |¦  «        iz  g fg}||fS |r’|r�||k    rŠt!          ¦   «                              ||||||¦  «        \  }}t          |j        ¦  «        }ddddœ}g }|                      ||¦  «        x}r)| j        |                      |¦  «        ||         dœz  g fg}||fS t!          ¦   «                              ||||||¦  «        S )Nr1   Útyper5   ©r8   z2ALTER COLUMN %(column)s TYPE %(type)s%(collation)s>   Ú	AutoFieldÚBigAutoFieldÚSmallAutoFieldrE   )rO   r]   Ú	collation)rT   rO   rU   ÚintegerÚbigintÚsmallint)r_   r`   ra   )rU   r]   )Údb_parametersr   r[   Ú_create_index_nameÚ_metaÚdb_tablerO   r   Ú_delete_index_sqlÚsql_alter_column_typerM   r(   r   Ú
quote_nameÚsql_add_identityÚsql_drop_indentityr   Ú_alter_column_type_sqlrV   Úsql_delete_sequenceÚsql_alter_sequence_type)r   r   rI   rH   rZ   Úold_collationÚnew_collationÚold_db_paramsrY   Ú
index_namerJ   rK   rL   rT   Úauto_field_typesÚold_is_autoÚnew_is_autorO   ÚfragmentÚ_Úother_actionsÚsequence_nameÚdb_typesr   s                          €r   ro   z+DatabaseSchemaEditor._alter_column_type_sql˜   sä  ø€ ð
 "×/Ò/¸4¼?Ð/ÑKÔKˆØ  Ô(ˆØ×8Ò8¸ÀHÈhÑWÔWð 	DØ×0Ò0Ø”Ô$ yÔ'7Ð&8Àð 1ñ ô ˆJð �LŠL˜×/Ò/°°zÑBÔBÑCÔCÐCð Að 	Ô"ð Ÿš¨	°9Ñ=Ô=Ð=ˆ9ð 	4ØÐ&Ô&¨)Ñ3Ð&Ô&Ø%×7Ò7Ñ9Ô9ÐØ%×7Ò7Ñ9Ô9Ðå˜Uœ[Ô1Ñ2Ô2ˆð
ð 
ð 
Ðð
 (Ð+;Ð;ˆØ'Ð+;Ð;ˆØð O	˜{ð O	Ý! )Ô"2Ñ3Ô3ˆFð Ô.à"&§/¢/°&Ñ"9Ô"9Ø (Ø%'ðð ñð ðð Ô-à%)§_¢_°UÑ%;Ô%;Ø&*§o¢o°fÑ&=Ô&=ðð ñð
 ðð	ðð ð* ð 8	 ð 8	ð �LŠLØÔ'à!Ÿ_š_¨UÑ3Ô3Ø"Ÿošo­l¸9Ô;KÑ.LÔ.LÑMÔMðð ññô ð õ " )Ô"2Ñ3Ô3ˆFÝ™'œ'×8Ò8Ø�y )¨X°}Àmñô ‰KˆH�að
 ˆMØ $× 7Ò 7¸¸vÑ FÔ FÐFˆ}ð 	ð Ô0à&¨¯ª¸Ñ(FÔ(Fðñð ðð!�ð ˜]Ð*Ð*Øð 	˜[ð 	Ð->ÐBSÒ-SÐ-SÝ™'œ'×8Ò8Ø�y )¨X°}Àmñô ‰KˆH�aõ " )Ô"2Ñ3Ô3ˆFà&Ø (Ø",ðð ˆHð ˆMØ $× 7Ò 7¸¸vÑ FÔ FÐFˆ}ð 
ð Ô4à(,¯ª¸Ñ(FÔ(FØ$,Ð->Ô$?ðð ñð
 ðð	!�ð ˜]Ð*Ð*å‘7”7×1Ò1Ø�y )¨X°}Àmñô ð r   Fc	           
      óþ  •— t          ¦   «                              ||||||||¦  «         |j        s|j        s|j        s%|j        s|j        s|                      |||¦  «        r-|                      ||¦  «        }	|	�|                      |	¦  «         |j        ra|j        s\|j        sW|                      |j        j	        |j
        gd¬¦  «        }
|                      |                      ||
¦  «        ¦  «         d S d S d S d S )Nr5   r^   )r   Ú_alter_fieldr<   r=   r[   r   r   rg   rh   ri   rO   rj   )r   r   rI   rH   rY   rZ   rt   Únew_db_paramsÚstrictr"   Úindex_to_remover   s              €r   r   z!DatabaseSchemaEditor._alter_field  sb  ø€ õ 	‰Œ×ÒØØØØØØØØñ		
ô 		
ð 		
ð Ô$ð	3Ø(1Ô(8ð	3Ø>GÔ>Pð	3àÔ$ð	3à)2Ô)9ð	3ð ×=Ò=Ø˜x¨ñô ð		3ð $(×#>Ò#>¸uÀiÑ#PÔ#PÐ Ø#Ð/Ø—’Ð1Ñ2Ô2Ð2ð Ôð 	I YÔ%7ð 	I¸9Ô;Kð 	IØ"×5Ò5Ø”Ô$ yÔ'7Ð&8Àð 6ñ ô ˆOð �LŠL˜×/Ò/°°ÑGÔGÑHÔHÐHÐHÐHð		Ið 	Ið 	Ið 	Ið 	Ið 	Ir   c                 ó‚   •— |rt          ||| j        ||¬¦  «        S t          ¦   «                              ||||¦  «        S )N)Úcol_suffixesr9   )r   rl   r   Ú_index_columns)r   rT   Úcolumnsr„   r9   r   s        €r   r…   z#DatabaseSchemaEditor._index_columns1  sS   ø€ Øð 	ÝØØØ”Ø)Ø#ðñ ô ð õ ‰wŒw×%Ò% e¨W°lÀIÑNÔNÐNr   c                 ó`   — |                       |                     || |¬¦  «        d ¬¦  «         d S )N©Úconcurrently)r   )r   Ú
create_sql©r   r   Úindexr‰   s       r   Ú	add_indexzDatabaseSchemaEditor.add_index<  sA   € Ø�ŠØ×Ò˜U D°|ÐÑDÔDÈTð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó\   — |                       |                     || |¬¦  «        ¦  «         d S )Nrˆ   )r   Ú
remove_sqlr‹   s       r   Úremove_indexz!DatabaseSchemaEditor.remove_indexA  s/   € Ø�Š�U×%Ò% e¨TÀÐ%ÑMÔMÑNÔNÐNÐNÐNr   Nc                 ój   •— |r| j         n| j        }t          ¦   «                              |||¦  «        S r   )Úsql_delete_index_concurrentlyÚsql_delete_indexr   rj   )r   r   rP   r   r‰   r   s        €r   rj   z&DatabaseSchemaEditor._delete_index_sqlD  s>   ø€ ð ð'ˆDÔ.Ð.àÔ&ð 	õ
 ‰wŒw×(Ò(¨°°cÑ:Ô:Ð:r   rE   )r7   rP   r8   ÚusingÚdb_tablespacer„   r   r9   Ú	conditionr‰   ÚincludeÚexpressionsc                ó‚   •— |p|s| j         n| j        }t          ¦   «                              |||||||||	|
||¬¦  «        S )N)r7   rP   r8   r”   r•   r„   r   r9   r–   r—   r˜   )Úsql_create_indexÚsql_create_index_concurrentlyr   rB   )r   r   r7   rP   r8   r”   r•   r„   r   r9   r–   r‰   r—   r˜   r   s                 €r   rB   z&DatabaseSchemaEditor._create_index_sqlL  so   ø€ ð" ð 
àð4ˆDÔ!Ð!àÔ3ð 	õ
 ‰wŒw×(Ò(ØØØØØØ'Ø%ØØØØØ#ð )ñ 
ô 
ð 	
r   c                 óÖ   — | j                              ¦   «         5 }|                     d|g¦  «         |                     ¦   «         }|r|d         nd cd d d ¦  «         S # 1 swxY w Y   d S )Nz‚
                SELECT collisdeterministic
                FROM pg_collation
                WHERE collname = %s
                r   )r   rQ   r   Úfetchone)r   rC   rQ   Úrows       r   r@   z0DatabaseSchemaEditor._is_collation_deterministicq  s»   € ØŒ_×#Ò#Ñ%Ô%ð 
	+¨Ø�NŠNðð
  Ð ñô ð ð —/’/Ñ#Ô#ˆCØ Ð*�3�q”6�6 dð
	+ð 
	+ð 
	+ð 
	+ñ 
	+ô 
	+ð 
	+ð 
	+ð 
	+ð 
	+ð 
	+ð 
	+øøøð 
	+ð 
	+ð 
	+ð 
	+ð 
	+ð 
	+s   š7AÁA"Á%A")r	   )F)NF)!Ú__name__Ú
__module__Ú__qualname__Úsql_update_with_defaultrq   rp   rš   r›   r“   r’   Úsql_create_column_inline_fkÚsql_delete_fkÚsql_delete_procedurer   rm   rn   r   r   r+   r/   r   rM   rV   r[   ro   r   r…   r�   r�   rj   rB   r@   Ú__classcell__)r   s   @r   r   r      s7  ø€ € € € € ð	*ð ð RÐØHÐð	9ð ð
	9ð "ð 7ÐØ$PÐ!ð
	<ð  ð	9ð ð JÐð*ð *ð *ð *ð *ð *ð	+ð ð
 	Pð ð<ð <ð <ðð ð ð ð ð
ð 
ð 
ð:ð :ð :ð%ð %ð %ðNð ð ð ð ð ð
ð 
ð 
ðmð mð mð mð mðp ð(Ið (Ið (Ið (Ið (Ið (IðT	Oð 	Oð 	Oð 	Oð 	Oð
ð 
ð 
ð 
ð
Oð Oð Oð Oð;ð ;ð ;ð ;ð ;ð ;ð ØØØØØØØØØØØð#
ð #
ð #
ð #
ð #
ð #
ð #
ðJ+ð +ð +ð +ð +ð +ð +r   r   N)	Údjango.db.backends.base.schemar   Ú!django.db.backends.ddl_referencesr   Ú)django.db.backends.postgresql.psycopg_anyr   Údjango.db.backends.utilsr   r   r	   r   r   ú<module>r«      sŒ   ðØ CÐ CÐ CÐ CÐ CÐ CØ :Ð :Ð :Ð :Ð :Ð :Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðu+ð u+ð u+ð u+ð u+Ð3ñ u+ô u+ð u+ð u+ð u+r   