
    LȂi(                     F    S SK Jr  S SKJrJrJr  S SKJr   " S S\5      rg)    )BaseDatabaseSchemaEditor)NOT_PROVIDEDFUniqueConstraint)
LOOKUP_SEPc                   4  ^  \ 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rSrSrSrSr\S 5       rS rS rS rS rS r\S 5       rU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrSS.S jr U 4S jr!S  r"U 4S! jr#U 4S" jr$U 4S# jr%S$ r&U 4S% jr'U 4S& jr(S'r)U =r*$ )(DatabaseSchemaEditor   z+RENAME TABLE %(old_table)s TO %(new_table)szMODIFY %(column)s %(type)s NULLz#MODIFY %(column)s %(type)s NOT NULLz2MODIFY %(column)s %(type)s%(collation)s%(comment)sz(ALTER COLUMN %(column)s SET DEFAULT NULLz)ALTER TABLE %(table)s DROP INDEX %(name)szY, ADD CONSTRAINT %(name)s FOREIGN KEY (%(column)s) REFERENCES %(to_table)s(%(to_column)s)z/ALTER TABLE %(table)s DROP FOREIGN KEY %(name)sz DROP INDEX %(name)s ON %(table)sz?ALTER TABLE %(table)s RENAME INDEX %(old_name)s TO %(new_name)szGALTER TABLE %(table)s ADD CONSTRAINT %(name)s PRIMARY KEY (%(columns)s)z&ALTER TABLE %(table)s DROP PRIMARY KEYz9CREATE INDEX %(name)s ON %(table)s (%(columns)s)%(extra)sz+ALTER TABLE %(table)s COMMENT = %(comment)sNc                 <    U R                   R                  (       a  gg)Nz8ALTER TABLE %(table)s DROP CONSTRAINT IF EXISTS %(name)sz)ALTER TABLE %(table)s DROP CHECK %(name)s)
connectionmysql_is_mariadbselfs    PD:\sksbv-state-backend\venv\Lib\site-packages\django/db/backends/mysql/schema.pysql_delete_check%DatabaseSchemaEditor.sql_delete_check"   s    ??++ N:    c                 4   U R                   R                  5         U R                   R                   R                  XR                   R                   R                  5      n[	        U[
        5      (       a%  [	        U[        5      (       a  UR                  5       nU$ N)r   ensure_connectionescapeencoders
isinstancestrbytesdecode)r   valuequoteds      r   quote_value DatabaseSchemaEditor.quote_value+   sj    ))+++22??--66
 eS!!j&?&?]]_Fr   c                     UR                  U R                  5      nUS L=(       a'    UR                  5       U R                  R                  ;   $ r   )db_typer   lower_limited_data_typesr   fieldr"   s      r   _is_limited_data_type*DatabaseSchemaEditor._is_limited_data_type5   s?    --04 G4??#F#FF	
r   c                     UR                  U R                  5      nU=(       a    UR                  5       R                  S5      $ )N)blobtext)r"   r   r#   endswithr%   s      r   _is_text_or_blob%DatabaseSchemaEditor._is_text_or_blob<   s1    --0E7==?334DEEr   c                     U R                  U5      S;   nU(       a  U R                  U5      (       a  gU R                  (       d  U R                  U5      $ gN) r   TF)effective_defaultr-   $_supports_limited_data_type_defaultsr'   r   r&   default_is_emptys      r   skip_default!DatabaseSchemaEditor.skip_default@   sK    11%8IE 5 5e < <88--e44r   c                     U R                  U5      S;   nU(       a  U R                  U5      (       a  gU R                  U5      (       a  U R                  R                  (       d  ggr0   )r2   r-   r'   r   r   r4   s      r   skip_default_on_alter*DatabaseSchemaEditor.skip_default_on_alterH   sS    11%8IE 5 5e < <%%e,,T__5U5U r   c                 l    U R                   R                  (       a  gU R                   R                  S:  $ )NT)   r      )r   r   mysql_versionr   s    r   r3   9DatabaseSchemaEditor._supports_limited_data_type_defaultsR   s)     ??++,,
::r   c                    > U R                   R                  (       d(  U R                  (       a  U R                  U5      (       a  g[        TU ]  U5      $ )Nz(%s))r   r   r3   r'   super_column_default_sql)r   r&   	__class__s     r   rB   (DatabaseSchemaEditor._column_default_sqlY   s?    0099**511 w*511r   c                 L  > [         TU ]  X5        U R                  U5      (       a~  UR                  S [        4;  ag  U R                  U5      nU R                  SU R                  UR                  R                  5      U R                  UR                  5      S.-  U/5        g g g )Nz%UPDATE %(table)s SET %(column)s = %%s)tablecolumn)rA   	add_fieldr6   defaultr   r2   execute
quote_name_metadb_tablerG   )r   modelr&   r2   rC   s       r   rH   DatabaseSchemaEditor.add_fieldd   s    %' U##dL=Q(Q $ 6 6u =LL7!__U[[-A-AB"ooell;
 ## )R#r   c                    > [        U[        5      (       a7  UR                  X5      b%  U R                  UUR                  UR
                  S9  [        TU ]  X5        g N)fieldsexpressions)r   r   
create_sql_create_missing_fk_indexrR   rS   rA   remove_constraint)r   rN   
constraintrC   s      r   rV   &DatabaseSchemaEditor.remove_constraintt   sY    z#344%%e2>))!((&22 * 
 	!%4r   c           	         > U R                  UUR                   VVs/ sH  u  p4UPM	     snnUR                  S9  [        TU ]  X5        g s  snnf rQ   )rU   fields_ordersrS   rA   remove_index)r   rN   index
field_name_rC   s        r   r[   !DatabaseSchemaEditor.remove_index   sS    %%494G4GH4G=:J4GH)) 	& 	

 	U* Is   Ac                 V  > [         TU ]  X5      (       d  gU R                  R                  R	                  U R                  R                  5       UR                  R                  5      nUS:X  a&  UR                  5       S:X  a  UR                  (       a  gU R                  U5      (       + $ )NFInnoDB
ForeignKey)rA   _field_should_be_indexedr   introspectionget_storage_enginecursorrL   rM   get_internal_typedb_constraintr'   )r   rN   r&   storagerC   s       r   rc   -DatabaseSchemaEditor._field_should_be_indexed   s    w/==////BBOO""$ekk&:&:
 x'')\9##--e444r   )rS   c                   SnU(       a  US   nOjU(       ac  U R                   R                  R                  (       a>  [        US   [        5      (       a&  [
        US   R                  ;  a  US   R                  nU(       d  gUR                  R                  U5      nUR                  5       S:X  a  U R                   R                  R                  UR                  5      nU R                   R                  5        nU R                   R                  R                  XqR                  R                  5      R!                  5        VV	s/ sH!  u  pU	S   (       d  M  U	S   S   U:X  d  M  UPM#     n
nn	SSS5        [#        W
5      S:X  a!  U R%                  U R'                  X/SS95        gggs  sn	nf ! , (       d  f       NF= f)	aR  
MySQL can remove an implicit FK index on a field when that field is
covered by another index like a unique_together. "covered" here means
that the more complex index has the FK field as its first field (see
https://bugs.mysql.com/bug.php?id=37910).

Manually create an implicit FK index to make it possible to remove the
composed index.
Nr   rb   r\   columns   r1   )rR   suffix)r   featuressupports_expression_indexesr   r   r   namerL   	get_fieldrg   rd   identifier_converterrG   rf   get_constraintsrM   itemslenrJ   _create_index_sql)r   rN   rR   rS   first_field_namefirst_fieldrG   rf   rq   infodictconstraint_namess              r   rU   -DatabaseSchemaEditor._create_missing_fk_index   s      %ay((DD;q>1--+a."5"55*1~22kk++,<=((*l:__22GG""F '')V +///*G*G*W*W 4 4+eg+$+  (	  .6i-@-Cv-M	 + ! $ * #$)**5r*R * ;
$ *)s+   :AF/F)
F)&F),F/)F//
F=c                 D   > U R                  XS9  [        TU ]  " X/UQ76 $ )N)rR   )rU   rA   _delete_composed_index)r   rN   rR   argsrC   s       r   r~   +DatabaseSchemaEditor._delete_composed_index   s)    %%e%;w-eCdCCr   c                    ^  UR                  5       (       a3  T R                  U5      u  p4U[        U 4S jU 5       5      -  nUSU 3-  nUR                  (       a  US-  nU$ US-  nU$ )zj
Keep the NULL and DEFAULT properties of the old field. If it has
changed, it will be handled separately.
c              3   D   >#    U H  nTR                  U5      v   M     g 7fr   )r   ).0pr   s     r   	<genexpr>;DatabaseSchemaEditor._set_field_new_type.<locals>.<genexpr>   s      Ef!1!1!!4!4fs    z	 DEFAULT z NULLz	 NOT NULL)has_db_defaultdb_default_sqltuplenull)r   r&   new_typedefault_sqlparamss   `    r   _set_field_new_type(DatabaseSchemaEditor._set_field_new_type   sv    
 !!"&"5"5e"<K5 Ef EEEK)K=11H::H  #Hr   c                 H   > U R                  X$5      n[        TU ]	  XX4XV5      $ r   )r   rA   _alter_column_type_sql)r   rN   	old_field	new_fieldr   old_collationnew_collationrC   s          r   r   +DatabaseSchemaEditor._alter_column_type_sql   s.     ++I@w-i=
 	
r   c                 b   > U R                   R                  (       a  [        TU ]  X5      $ US   $ )Ncheck)r   r   rA   _field_db_check)r   r&   field_db_paramsrC   s      r   r   $DatabaseSchemaEditor._field_db_check   s-    ??++7*5BB w''r   c                 F   > U R                  X$5      n[        TU ]	  XX45      $ r   )r   rA   _rename_field_sql)r   rF   r   r   r   rC   s        r   r   &DatabaseSchemaEditor._rename_field_sql   s%    ++I@w(9OOr   c                 
    S/ 4$ )Nr1    )r   rN   r   r   new_db_comments        r   _alter_column_comment_sql.DatabaseSchemaEditor._alter_column_comment_sql   s    2vr   c                 ,   > [         TU ]  U5      nSU 3$ )Nz	 COMMENT )rA   _comment_sql)r   commentcomment_sqlrC   s      r   r   !DatabaseSchemaEditor._comment_sql   s    g*73;-((r   c                    > UR                  5       (       d  [        TU ]	  XU5      $ UR                  U R                  S9nU R                  X4S   5      nSU R                  UR                  5      US.-  / 4$ )N)r   typezMODIFY %(column)s %(type)s)rG   r   )r   rA   _alter_column_null_sqldb_parametersr   r   rK   rG   )r   rN   r   r   new_db_paramstype_sqlrC   s         r   r   +DatabaseSchemaEditor._alter_column_null_sql   s    ''))71%INN!//4??/K++IV7LM(//)*:*:; 
 
 	
r   r   )+__name__
__module____qualname____firstlineno__sql_rename_tablesql_alter_column_nullsql_alter_column_not_nullsql_alter_column_type sql_alter_column_no_default_nullsql_delete_uniquesql_create_column_inline_fksql_delete_fksql_delete_indexsql_rename_indexsql_create_pksql_delete_pksql_create_indexsql_alter_table_commentsql_alter_column_commentpropertyr   r   r'   r-   r6   r9   r3   rB   rH   rV   r[   rc   rU   r~   r   r   r   r   r   r   r   __static_attributes____classcell__)rC   s   @r   r	   r	      s    D= EP'Q$C	1   FM9X 	R  =MRK#; ;
F ; ;	2 
5+5. 0dD
(P)
 
r   r	   N)	django.db.backends.base.schemar   django.db.modelsr   r   r   django.db.models.constantsr   r	   r   r   r   <module>r      s     C > > 1A
3 A
r   