§
    Ï“Ùh:  ã                   ó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      €úc/var/www/surfInsights/venv3-11/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          |t          ¦  «        r|                     dd¦  «        }t          j        || j        j        ¦  «        S )Nú%z%%)Ú
isinstancer   Úreplacer   Úquoter   )r   Úvalues     r   Úquote_valuez DatabaseSchemaEditor.quote_value:   s>   € Ý�e�SÑ!Ô!ð 	-Ø—M’M # tÑ,Ô,ˆEÝŒ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_typeF   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   r2   z+DatabaseSchemaEditor._field_base_data_typesN   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¦  «        }|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ÚgetattrÚ_is_collation_deterministicÚ
startswithÚ_create_index_sql)r   r"   r#   r,   Úcollation_names        r   r    z+DatabaseSchemaEditor._create_like_index_sqlU   s  € ð
 —-’-¨4¬?�-Ñ;Ô;ˆØÐ E¤NÐ°e´lÐð �gˆ~ˆ~Ø�tõ % U¨N¸DÑAÔAˆNØð  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)sr0   Ú )r+   Úlistr2   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   ÚtablerP   rR   Ú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 )Nr4   Útyper7   r=   Úcitextr8   ©r;   z2ALTER COLUMN %(column)s TYPE %(type)s%(collation)s>   Ú	AutoFieldÚBigAutoFieldÚSmallAutoFieldrG   ©rP   rY   Ú	collation)rU   rP   rV   ÚintegerÚbigintÚsmallint)r\   r]   r^   )rV   rY   )Údb_parametersr   r?   r@   rC   Ú_create_index_nameÚ_metaÚdb_tablerP   r   Ú_delete_index_sqlÚsql_alter_column_typerN   r+   r   Ú
quote_nameÚsql_add_identityÚsql_drop_indentityr   Ú_alter_column_type_sqlrW   Úsql_delete_sequenceÚsql_alter_sequence_type)r   r"   rJ   rI   Únew_typeÚold_collationÚnew_collationÚold_db_paramsÚold_typeÚ
index_namerK   rL   rM   rU   Úauto_field_typesÚold_is_autoÚnew_is_autorP   ÚfragmentÚ_Úother_actionsÚsequence_nameÚdb_typesr   s                          €r   rm   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ú rG   r_   )Úsql_alter_column_collaterN   rj   rP   Ú_collate_sql)r   r"   rI   rp   rr   rJ   r   rK   s           r   Ú_alter_column_collation_sqlz0DatabaseSchemaEditor._alter_column_collation_sql  sŠ   € ð Ô+ˆàŸš¨	°9Ñ=Ô=Ð=ˆ9ð 	Ø�9ÑˆCààŸ/š/¨)Ô*:Ñ;Ô;Ø à ð˜S 4×#4Ò#4°]Ñ#CÔ#CÑCÐCàðð ñð ð

ð 
	
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 )Nr8   r[   )r   Ú_alter_fieldr?   r@   r    r   re   rf   rg   rP   rh   )r   r"   rJ   rI   rt   rp   rs   Ú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_suffixesr<   )r   rj   r   Ú_index_columns)r   rU   Úcolumnsr‰   r<   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   rh   )r   r"   rQ   r   rŽ   r   s        €r   rh   z&DatabaseSchemaEditor._delete_index_sqlL  s>   ø€ ð ð'ˆDÔ.Ð.àÔ&ð 	õ
 ‰wŒw×(Ò(¨°°cÑ:Ô:Ð:r   rG   )r:   rQ   r;   ÚusingÚdb_tablespacer‰   r   r<   Ú	conditionrŽ   ÚincludeÚexpressionsc                ó‚   •— |p|s| j         n| j        }t          ¦   «                              |||||||||	|
||¬¦  «        S )N)r:   rQ   r;   r™   rš   r‰   r   r<   r›   rœ   r�   )Úsql_create_indexÚsql_create_index_concurrentlyr   rD   )r   r"   r:   rQ   r;   r™   rš   r‰   r   r<   r›   rŽ   rœ   r�   r   s                 €r   rD   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   rR   r   Úfetchone)r   rE   rR   Úrows       r   rB   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_defaultro   rn   rŸ   r    r˜   r—   Úsql_create_column_inline_fkÚsql_delete_fkÚsql_delete_procedurer   rk   rl   r   r   r.   r2   r    rN   rW   rm   r‚   r„   rŠ   r’   r•   rh   rD   rB   Ú__classcell__)r   s   @r   r   r      s7  ø€ € € € € ð	*ð ð RÐØHÐð	9ð ð
	9ð "ð 7ÐØ$PÐ!ð
	<ð  ð	9ð ð JÐð*ð *ð *ð *ð *ð *ð	+ð ð
 	Pð ð<ð <ð <ð
ð ð ð ð ð
ð 
ð 
ð:ð :ð :ð#ð #ð #ðJð ð ðð ð ð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   