
    hh9                     J    S SK Jr  S SKJr  S SKJr  S SKJr   " S S\5      rg)    )BaseDatabaseSchemaEditor)IndexColumns)sql)strip_quotesc                     ^  \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrS%U 4S jjrSrSrS rU 4S jrS rS rS rS rS rS rU 4S jr S&U 4S jjrU 4S jrS&S jrS&S jrS'U 4S jjrSSS S SSSSSSSSS!.U 4S" jjrS# r S$r!U =r"$ )(DatabaseSchemaEditor   zeUPDATE %(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                    > Uc  [         TU ]  X5      $ U R                  R                  R	                  [        U5      U5      n[         TU ]  US 5      $ N)superexecute
connectionopscompose_sqlstr)selfr   params	__class__s      _D:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\django/db/backends/postgresql/schema.pyr   DatabaseSchemaEditor.execute*   sH    >7?3//oo!!--c#h?wsD))    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                 V    [         R                  " XR                  R                  5      $ r   )r   quoter   )r   values     r   quote_value DatabaseSchemaEditor.quote_value:   s    yy : :;;r   c                 p   > [         TU ]  X5      nU R                  X5      nUb  UR                  U5        U$ r   )r   _field_indexes_sql_create_like_index_sqlappend)r   modelfieldoutputlike_index_statementr   s        r   r   'DatabaseSchemaEditor._field_indexes_sql=   s;    +E9#::5H+MM./r   c                     UR                   (       a  UR                  U R                  5      $ U R                  R                  R	                  UR                  5       UR                  U R                  5      5      $ r   )is_relationrel_db_typer   
data_typesgetget_internal_typedb_typer   r#   s     r   _field_data_type%DatabaseSchemaEditor._field_data_typeD   sY    $$T__55))--##%MM$//*
 	
r   c              #      #    UR                   R                  5       S:X  a$  U R                  UR                   5       S h  vN   g U R                  UR                   5      v   g  N#7f)N
ArrayField)
base_fieldr,   _field_base_data_typesr/   r.   s     r   r4   +DatabaseSchemaEditor._field_base_data_typesL   sS     --/<?2253C3CDDD''(8(899 Es   =A%A# $A%c                    UR                  U R                  S9nUb  UR                  (       d  UR                  (       a  SU;   a  g[	        USS5      nU(       d(  UR
                  (       a  [	        UR                  SS5      nU(       a  U R                  U5      (       d  gUR                  S5      (       a  U R                  UU/SS/S9$ UR                  S	5      (       a  U R                  UU/SS
/S9$ g)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    +DatabaseSchemaEditor._create_like_index_sqlS   s    
 --4??-;ENNell g~ %UNDAN!e&7&7!(););^T!Rd&F&F~&V&V!!),,--!7"45	 .   ##F++--!7"12	 .   r   c                 B   UR                   (       a  gSnUR                  5       nUR                  5       nUS:X  a?  XE:X  a:  [        U R                  U5      5      [        U R                  U5      5      :w  a  U$  gU R	                  U5      U R	                  U5      :w  a  U$ g)N z USING %(column)s::%(type)sr2   )	generatedr,   listr4   r/   )r   	new_field	old_field	using_sqlnew_internal_typeold_internal_types         r   
_using_sqlDatabaseSchemaEditor._using_sqlz   s    1	%779%779,1B1WD//	:;t++I6@  !   ""9-1F1Fy1QQr   c                     U R                   R                  5        nU R                   R                  R                  X15       H  nUS   U:X  d  M  US   s  sS S S 5        $    S S S 5        g ! , (       d  f       g = f)Ncolumnname)r   cursorintrospectionget_sequences)r   tablerW   rY   sequences        r   _get_sequence_name'DatabaseSchemaEditor._get_sequence_name   si    __##% OO99GGVH%/#F++ &%V & 	 &% s   0A*A*A**
A8c                 ~   UR                   =(       d    UR                  =(       a    UR                  S5      =(       a    UR                  S5      (       + =(       dc    UR                  S5      =(       a    UR                  S5      (       + =(       d.    UR                  S5      =(       a    UR                  S5      (       + $ )Nr:   r@   citext)rB   rC   rG   )r   rP   old_typenew_types       r   (_is_changing_type_of_indexed_text_column=DatabaseSchemaEditor._is_changing_type_of_indexed_text_column   s    ""6i&6&6 
  +RH4G4G	4R0R U##F+OH4G4G4O0OU##H-Sh6I6I(6S2S	
r   c           	        > UR                  U R                  S9nUS   nU R                  X(U5      (       aP  U R                  UR                  R
                  UR                  /SS9n	U R                  U R                  X5      5        SU l	        U R                  X25      =n
(       a  U =R                  U
-  sl	        UR                  5       nUR                  5       n[        UR                  R
                  5      n1 SknX;   nX;   nU(       as  U(       dl  [        UR                  5      nU R                  U R                  U5      USS.-  / 4U R                  U R                  U5      U R                  U5      S	.-  / 4/4$ U(       a  U(       d  U R                  U R                  U R                  U5      U R                  [        UR                  5      5      S	.-  5        [        UR                  5      n[         TU ]E  XX4XV5      u  nn/ nU R%                  UU5      =n(       a#  U R&                  S
U R                  U5      0-  / 4/nUU4$ U(       a  U(       az  X:w  au  [         TU ]E  XX4XV5      u  nn[        UR                  5      nSSSS.n/ nU R%                  UU5      =n(       a'  U R(                  U R                  U5      UU   S.-  / 4/nUU4$ [         TU ]E  XX4XV5      $ )Nr7   typer;   r>   z2ALTER COLUMN %(column)s TYPE %(type)s%(collation)s>   	AutoFieldBigAutoFieldSmallAutoFieldrL   )rW   rg   	collation)r\   rW   r]   integerbigintsmallint)ri   rj   rk   )r]   rg   )db_parametersr   rd   _create_index_name_metadb_tablerW   r   _delete_index_sqlsql_alter_column_typerT   r,   r   
quote_namesql_add_identitysql_drop_indentityr   _alter_column_type_sqlr^   sql_delete_sequencesql_alter_sequence_type)r   r"   rP   rO   rc   old_collationnew_collationold_db_paramsrb   
index_namerQ   rR   rS   r\   auto_field_typesold_is_autonew_is_autorW   fragment_other_actionssequence_namedb_typesr   s                          r   ry   +DatabaseSchemaEditor._alter_column_type_sql   s,   
 "//4??/K (88hWW00$$y'7'7&8 1 J LL//BC A 	" 	==9=&&)3&%779%779U[[112

 (;';{!)"2"23F .."&//&"9 (%'  --%)__U%;&*oof&=
 	 *  LL''!__U3"ool9;K;K.LM ")"2"23F'8)}KHa
 M $ 7 7v FF}F 00&(F ! ]**[->-S'8)}KHa ")"2"23F& (",H M $ 7 7v FF}F 44(,(F$,->$?
 	! ]**71)} r   Fc	           
      `  > [         TU ]  UUUUUUUU5        UR                  (       d"  UR                  (       d  UR                  (       d9  UR                  (       d  UR                  (       d  U R	                  X$U5      (       a%  U R                  X5      n	U	b  U R                  U	5        UR                  (       au  UR                  (       dc  UR                  (       dQ  U R                  UR                  R                  UR                  /SS9n
U R                  U R                  X5      5        g g g g )Nr;   rh   )r   _alter_fieldrB   rC   rd   r    r   rq   rr   rs   rW   rt   )r   r"   rP   rO   rb   rc   r~   new_db_paramsstrictr%   index_to_remover   s              r   r   !DatabaseSchemaEditor._alter_field  s    			
 $$	(8(8i>P>P$$)9)9== 
 $(#>#>u#P #/12 Y%7%79;K;K"55$$y'7'7&8 6 O LL//GH	 <L%7r   c                 `   > U(       a  [        UUU R                  UUS9$ [        TU ]  XX45      $ )N)col_suffixesr?   )r   rv   r   _index_columns)r   r\   columnsr   r?   r   s        r   r   #DatabaseSchemaEditor._index_columns1  s:    )#  w%elNNr   c                 @    U R                  UR                  XUS9S S9  g )Nconcurrently)r   )r   
create_sqlr   r"   indexr   s       r   	add_indexDatabaseSchemaEditor.add_index<  s(    U|DT 	 	
r   c                 B    U R                  UR                  XUS95        g )Nr   )r   
remove_sqlr   s       r   remove_index!DatabaseSchemaEditor.remove_indexA  s    U%%e%MNr   Nc                 b   > U(       a  U R                   OU R                  n[        TU ]  XU5      $ r   )sql_delete_index_concurrentlysql_delete_indexr   rt   )r   r"   rX   r   r   r   s        r   rt   &DatabaseSchemaEditor._delete_index_sqlD  s5      ..&& 	
 w(c::r   rL   )r=   rX   r>   usingdb_tablespacer   r   r?   	conditionr   includeexpressionsc                   > U=(       d    U(       d  U R                   OU R                  n[        TU ]  UUUUUUUUU	U
UUS9$ )N)r=   rX   r>   r   r   r   r   r?   r   r   r   )sql_create_indexsql_create_index_concurrentlyr   rH   )r   r"   r=   rX   r>   r   r   r   r   r?   r   r   r   r   r   s                 r   rH   &DatabaseSchemaEditor._create_index_sqlL  sf    "  
 !!33 	
 w('%# ) 
 	
r   c                     U R                   R                  5        nUR                  SU/5        UR                  5       nU(       a  US   OS sS S S 5        $ ! , (       d  f       g = f)Nz
                SELECT collisdeterministic
                FROM pg_collation
                WHERE collname = %s
                r   )r   rY   r   fetchone)r   rI   rY   rows       r   rF   0DatabaseSchemaEditor._is_collation_deterministicq  sR    __##%NN
    //#C 3q6d &%%s   1A
A$)ru   )r
   )F)NF)#__name__
__module____qualname____firstlineno__sql_update_with_defaultr{   rz   r   r   r   r   sql_create_column_inline_fksql_delete_fksql_delete_procedurer   rw   rx   r   r   r/   r4   r    rT   r^   rd   ry   r   r   r   r   rt   rH   rF   __static_attributes____classcell__)r   s   @r   r   r      s   	*  RH	9 
	9 " 7$P!
	<  	9  J*	+ 
 	P <
:%N 
mp (IT	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 : 9 1u+3 u+r   