§
    ¤”ja:  ã                   ó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ˆ fd„Z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      €ús/var/www/finuniver-perm.ru/html/portfolio/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                 ó`  — d}|                      ¦   «         }|                      ¦   «         }|dk    rO||k    rIt          |                      |¦  «        ¦  «        t          |                      |¦  «        ¦  «        k    r|S n.|                      |¦  «        |                      |¦  «        k    r|S dS )Nz USING %(column)s::%(type)sr-   Ú )r(   Úlistr/   r+   )r   Ú	new_fieldÚ	old_fieldÚ	using_sqlÚnew_internal_typeÚold_internal_types         r   Ú
_using_sqlzDatabaseSchemaEditor._using_sqlz   sÅ   € Ø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   ÚtablerN   rP   Ú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        ¬¦  «        }|d         }|j        s|j        rÏ|                     d¦  «        r|                     d¦  «        rT|                     d¦  «        r|                     d¦  «        r*|                     d¦  «        rf|                     d¦  «        sQ|                      |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   Útyper4   r:   Úcitextr5   ©r8   z2ALTER COLUMN %(column)s TYPE %(type)s%(collation)s>   Ú	AutoFieldÚBigAutoFieldÚSmallAutoFieldrE   ©rN   rW   Ú	collation)rS   rN   rT   ÚintegerÚbigintÚsmallint)rZ   r[   r\   )rT   rW   )Údb_parametersr   r<   r=   rA   Ú_create_index_nameÚ_metaÚdb_tablerN   r   Ú_delete_index_sqlÚsql_alter_column_typerL   r(   r   Ú
quote_nameÚsql_add_identityÚsql_drop_indentityr   Ú_alter_column_type_sqlrU   Úsql_delete_sequenceÚsql_alter_sequence_type)r   r   rH   rG   Únew_typeÚold_collationÚnew_collationÚold_db_paramsÚold_typeÚ
index_namerI   rJ   rK   rS   Úauto_field_typesÚold_is_autoÚnew_is_autorN   ÚfragmentÚ_Úother_actionsÚsequence_nameÚdb_typesr   s                          €r   rk   z+DatabaseSchemaEditor._alter_column_type_sql�   sp  ø€ ð
 "×/Ò/¸4¼?Ð/ÑKÔKˆØ  Ô(ˆØÔð 	D )Ô"2ð 	DØ× Ò  Ñ+Ô+ð	DØ4<×4GÒ4GÈ	Ñ4RÔ4Rð	Dà×#Ò# FÑ+Ô+ð	Dà4<×4GÒ4GÈÑ4OÔ4Oð	Dð ×#Ò# HÑ-Ô-ð	Dð 7?×6IÒ6IÈ(Ñ6SÔ6Sð	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   c                 óÄ   — | j         }|                      ||¦  «        x}r||z  }||                      |j        ¦  «        ||rd|                      |¦  «        z   nddœz  g fS )Nú rE   r]   )Úsql_alter_column_collaterL   rh   rN   Ú_collate_sql)r   r   rG   rn   rp   rH   r   rI   s           r   Ú_alter_column_collation_sqlz0DatabaseSchemaEditor._alter_column_collation_sql  sˆ   € ð Ô+ˆàŸš¨	°9Ñ=Ô=Ð=ˆ9ð 	Ø�9ÑˆCààŸ/š/¨)Ô*:Ñ;Ô;Ø à>KÐS�C˜$×+Ò+¨MÑ:Ô:Ñ:Ð:ÐQSð	ð ñð ð

ð 
	
r   Fc	           
      óÐ  •— t          ¦   «                              ||||||||¦  «         |j        s|j        s|j        s|j        s4|j        r-|                      ||¦  «        }	|	�|                      |	¦  «         |j        ra|j        s\|j        sW|                      |j        j        |j	        gd¬¦  «        }
|                      |  
                    ||
¦  «        ¦  «         d S d S d S d S )Nr5   rY   )r   Ú_alter_fieldr<   r=   r   r   rc   rd   re   rN   rf   )r   r   rH   rG   rr   rn   rq   Únew_db_paramsÚstrictr"   Úindex_to_remover   s              €r   r‚   z!DatabaseSchemaEditor._alter_field  s?  ø€ õ 	‰Œ×ÒØØØØØØØØñ		
ô 		
ð 		
ð Ô#ð 	3 yÔ'7ð 	3¸YÔ=Oð 	3ØÔ ð	3Ø%.Ô%5ð	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   rh   r   Ú_index_columns)r   rS   Úcolumnsr‡   r9   r   s        €r   rˆ   z#DatabaseSchemaEditor._index_columns9  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_indexD  sA   € Ø�ŠØ×Ò˜U D°|ÐÑDÔDÈTð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó\   — |                       |                     || |¬¦  «        ¦  «         d S )Nr‹   )r   Ú
remove_sqlrŽ   s       r   Úremove_indexz!DatabaseSchemaEditor.remove_indexI  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   rf   )r   r   rO   r   rŒ   r   s        €r   rf   z&DatabaseSchemaEditor._delete_index_sqlL  s>   ø€ ð ð'ˆDÔ.Ð.àÔ&ð 	õ
 ‰wŒw×(Ò(¨°°cÑ:Ô:Ð:r   rE   )r7   rO   r8   ÚusingÚdb_tablespacer‡   r   r9   Ú	conditionrŒ   ÚincludeÚexpressionsc                ó‚   •— |p|s| j         n| j        }t          ¦   «                              |||||||||	|
||¬¦  «        S )N)r7   rO   r8   r—   r˜   r‡   r   r9   r™   rš   r›   )Úsql_create_indexÚsql_create_index_concurrentlyr   rB   )r   r   r7   rO   r8   r—   r˜   r‡   r   r9   r™   rŒ   rš   r›   r   s                 €r   rB   z&DatabaseSchemaEditor._create_index_sqlT  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   rP   r   Úfetchone)r   rC   rP   Úrows       r   r@   z0DatabaseSchemaEditor._is_collation_deterministicy  s»   € ØŒ_×#Ò#Ñ%Ô%ð 
	+¨Ø�NŠNðð
  Ð ñô ð ð —/’/Ñ#Ô#ˆCØ Ð*�3�q”6�6 dð
	+ð 
	+ð 
	+ð 
	+ñ 
	+ô 
	+ð 
	+ð 
	+ð 
	+ð 
	+ð 
	+ð 
	+øøøð 
	+ð 
	+ð 
	+ð 
	+ð 
	+ð 
	+s   š7AÁA"Á%A")r	   )F)NF)!Ú__name__Ú
__module__Ú__qualname__Úsql_update_with_defaultrm   rl   r�   rž   r–   r•   Úsql_create_column_inline_fkÚsql_delete_fkÚsql_delete_procedurer   ri   rj   r   r   r+   r/   r   rL   rU   rk   r€   r‚   rˆ   r�   r“   rf   rB   r@   Ú__classcell__)r   s   @r   r   r      s7  ø€ € € € € ð	*ð ð RÐØHÐð	9ð ð
	9ð "ð 7ÐØ$PÐ!ð
	<ð  ð	9ð ð JÐð*ð *ð *ð *ð *ð *ð	+ð ð
 	Pð ð<ð <ð <ðð ð ð ð ð
ð 
ð 
ð:ð :ð :ð%ð %ð %ðNð ð ðð ð ðqð qð qð qð qðf
ð 
ð 
ð8 ð"Ið "Ið "Ið "Ið "Ið "IðH	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ð}+ð }+ð }+ð }+ð }+Ð3ñ }+ô }+ð }+ð }+ð }+r   