bg$AVddlmZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z dd l m Z d d lmZd d lmZd d lmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZddlmZddlmZddlmZddlmZddlm Z er$ddlm!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)d dlm*Z*Gd d!eZ+Gd"d#e+Z,Gd$d%eZ-Gd&d'eZ.Gd(d)e.Z/e ed*d+e ed*d+e ed*d+e ed*d+d,Z0e e-d*d+dAd2Z1e e/d*d+dBd3Z2e e.d*d+dCd4Z3dDd>Z4e e j%d*d+dEd@Z5dS)F) annotationsN)Any)Optional) TYPE_CHECKING)Unionschema)types)compiles) alter_table) AlterColumn) ColumnDefault) ColumnName)ColumnNullable) ColumnType)format_column_name)format_server_default) DefaultImpl)util)compare) sqla_compat) _is_mariadb)_is_type_bound)Literal)MySQLDDLCompiler)DropConstraint) Constraint) TypeEngine)_ServerDefaultceZdZdZdZejddhddhfzZddgZ d,d-fd# Zd.fd& Z d/d(Z d)Z d*Z d+Z xZS)0 MySQLImplmysqlFBOOLTINYINTJSONLONGTEXTzcharacter set ([\w\-_]+)zcollate ([\w\-_]+)N table_namestr column_namenullableOptional[bool]server_default%Union[_ServerDefault, Literal[False]]name Optional[str]type_Optional[TypeEngine]r existing_typeexisting_server_defaultOptional[_ServerDefault]existing_nullable autoincrementexisting_autoincrementcomment$Optional[Union[str, Literal[False]]]existing_commentkwrreturnNonec ztj|| stj|| r#tj||f||||| || d|||||n||rM|t|||||n|||n| | nd||n||dur|n| | | n| | dur| n| dS||| | durM|t|||||n|||n| | nd||n||dur|n| | | n| | dur| n| dS|dur(|t||||dSdS)N)r,r2r r4r7r.r5TF)r newnamer,r2defaultr8r:r) r_server_default_is_identity_server_default_is_computedsuper alter_column$_is_mysql_allowed_functional_default_execMySQLChangeColumnMySQLModifyColumnMySQLAlterDefault)selfr)r+r,r.r0r2r r4r5r7r8r9r:r<r= __class__s H/opt/cloudlinux/venv/lib64/python3.11/site-packages/alembic/ddl/mysql.pyrFzMySQLImpl.alter_column1s$  2 3     4 3    !EGG  "+"3-(?       tHH&EEM>   JJ!!$($4DD++&X)4+*#(#4%%-%U22+N0$0#0-/e++$G)'     0   (e## JJ!!$($4DD++&X)4+*#(#4%%-%U22+N0$0#0-/e++$G)'     .5 ( ( JJ! ^F     ) (constrct|tjrt|rdSt |dSN) isinstancer CheckConstraintrrEdrop_constraint)rLrPrMs rNrUzMySQLImpl.drop_constraintsL eV3 4 4 9N9N  F &&&&&rOboolc8|duo|jtjuo|duSrR)_type_affinitysqltypesDateTime)rLr2r.s rNrGz.MySQLImpl._is_mysql_allowed_functional_defaults6   +$ ! +d*  rOc\|jjtjur|jr|js |s|dkrdS|r8|jjtjur |t jdd|nd}||kS|r8|jjtjur t jdd|}|d|dkS|r|rt j d| }t j d| }|r\|sdS| d| dkrdS| d }| d }t jd d | t jd d | kS||kS) Nz'0'Fz^'|'$'z(.*) (on update.*?)(?:\(\))?$Trr z(.*?)(?:\(\))?$z\1) typerXrYInteger primary_keyr8resubStringmatchlowergroup)rLinspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultmetadata_default onupdate_ins onupdate_mets rNcompare_server_defaultz MySQLImpl.compare_server_defaults  /83C C C , D$2 D. D+e335 &. K %48HHH.9x%?@@@ ' .1JJ J %$ K$3xFF!vh4MNN -1H5E1H1H1HH H ' K,E K 80*0022L80)//11L  B# 4!''**l.@.@.C.CCC4-9-?-?-B-B*,8,>,>q,A,A)6"E+E+K+K+M+M"E+D+J+J+L+L  .1JJ JrOct}t|D]}|jr |jD]}|j|jkr1||||jnW|jD]C}|j|jkr1||||jnD|j|vrnt|D] }|j|vr||!dSrR)setlistuniquecolumnsr0removeadd foreign_keys) rLconn_unique_constraints conn_indexesmetadata_unique_constraintsmetadata_indexesremovedidxcolfks rNcorrect_for_autogen_constraintsz)MySQLImpl.correct_for_autogen_constraintss3%% %%  Cz  {  8sx'' '',,,KK)))E*Bw#(**$++C000 CH---+8w&&E' ()) - -Cx7"" '',,, - -rOchd|D}d|D}t||D]v}||}||}|j+|jdkr|jd|_|j+|jdkr|jd|_wdS)NcBi|]}tj|j|Sr_fk_constraint_sigsig.0r~s rN z=MySQLImpl.correct_for_autogen_foreignkeys..s5   79G &r * * .   rOcBi|]}tj|j|Srrrs rNrz=MySQLImpl.correct_for_autogen_foreignkeys..s5   79G &r * * .   rOrestrictRESTRICT)rp intersectionondeletereonupdate)rLconn_fks metadata_fksconn_fk_by_sigmetadata_fk_by_sigrmdfkcnfks rNcorrect_for_autogen_foreignkeysz)MySQLImpl.correct_for_autogen_foreignkeyss  =E     =I   ~&&334FGG + +C%c*D!#&D  )M''))Z77M) *  )M''))Z77M) * # + +rO) NFNNNNNNNNFN) r)r*r+r*r,r-r.r/r0r1r2r3r r1r4r3r5r6r7r-r8r-r9r-r:r;r<r1r=rr>r?)rPrr>r?)r2r3r.r/r>rV)__name__ __module__ __qualname__ __dialect__transactional_ddlr type_synonymstype_arg_extractrFrUrGrnrr __classcell__rMs@rNr#r#'sK-  1M45JK $(@E"&* $.2<@,0(,158=*.aaaaaaaF''''''     AKAKAKF$-$-$-L+++++++rOr#ceZdZdZdS) MariaDBImplmariadbN)rrrrrrOrNrr.sKKKrOrc$eZdZ d d fd ZxZS)rKNr0r*r+rBr!r r1r>r?cxtt|||||_||_dS)Nr)rEr__init__r+rB)rLr0r+rBr rMs rNrzMySQLAlterDefault.__init__3s; k4  ))$v)>>>& rOrR) r0r*r+r*rBr!r r1r>r?rrrrrrs@rNrKrK2sG !%           rOrKc0eZdZ ddfd ZxZS)rINFr0r*r+r r1rAr2r3r,r-rB/Optional[Union[_ServerDefault, Literal[False]]]r8r:r;r>r?c tt|||||_||_||_||_||_| |_|tj dtj ||_ dS)NrzDAll MySQL CHANGE/MODIFY COLUMN operations require the existing type.)rErrr+r,rArBr8r:r CommandErrorrY to_instancer2) rLr0r+r rAr2r,rBr8r:rMs rNrzMySQLChangeColumn.__init__@s k4  ))$v)>>>&    * =#-  )%00 rO)NNNNFNF)r0r*r+r*r r1rAr1r2r3r,r-rBrr8r-r:r;r>r?rrs@rNrIrI?sY !%!%&*#'CH(,8=11111111111rOrIceZdZdS)rJN)rrrrrOrNrJrJ\sDrOrJr$rc  td)Nz9Individual alter column constructs not supported by MySQL)NotImplementedErrorelementcompilerr=s rN _mysql_doesnt_support_individualr`s C  rOrrrr>r*c t||j|jdt||jd|jdt ||jzndS)Nz ALTER COLUMN  zSET DEFAULT %sz DROP DEFAULT)r r)r rr+rBrrs rN_mysql_alter_defaultrjsh Hg0'.AAAA8W%89999 ? & 07?KKKK   rOc t||j|jdt||jdt ||j|j|j|j |j S)Nz MODIFY rr,r.r2r8r:) r r)r rr+_mysql_colspecr,rBr2r8r:rs rN_mysql_modify_columnrwss Hg0'.AAAA8W%89999 %"?-!/O       rOc t||j|jdt||jdt||jdt ||j|j|j |j |j S)Nz CHANGE rr) r r)r rr+rArr,rBr2r8r:rs rN_mysql_change_columnrs Hg0'.AAAA8W%899998W_5555 %"?-!/O      rOr,r-r.rr2r r8r:r;c|jj|d|rdnd}|r|dz }|dur||dt||zz }|r2|d|j|t jzz }|S)NrNULLzNOT NULLz AUTO_INCREMENTFz DEFAULT %sz COMMENT %s)dialect type_compilerprocessr sql_compilerrender_literal_valuerYrc)rr,r.r2r8r:specs rNrrs &..u5555* * D" !!U""~'A 5h O OOO   5 J J X_&&! !    KrOrc |j}t|tjtjtjfr|rJ||St|tjrt|j r=d|j |j d|j |Sd|j |j d|j |Std)zVRedefine SQLAlchemy's drop constraint to raise errors for invalid constraint type.z ALTER TABLE z DROP CONSTRAINT z DROP CHECK zFNo generic 'DROP CONSTRAINT' in MySQL - please specify constraint type)rrSr ForeignKeyConstraintPrimaryKeyConstraintUniqueConstraintvisit_drop_constraintrTrrpreparer format_tabletableformat_constraintr)rrr= constraints rN_mysql_drop_constraintrs!J  '  '  #   v--g666 J 6 7 7  x' ( (  !..z/?@@@@!33J???  !..z/?@@@@!33J???  " -   rO)rrKrrr>r*)rrJrrr>r*)rrIrrr>r*)rrr,r-r.rr2r r8r-r:r;r>r*)rrrrr>r*)6 __future__rratypingrrrr sqlalchemyr r rYsqlalchemy.ext.compilerr baser rrrrrrrimplrr\r autogeneraterrutil.sqla_compatrrrsqlalchemy.dialects.mysql.basersqlalchemy.sql.ddlrsqlalchemy.sql.schemarsqlalchemy.sql.type_apir r!r#rrKrIrJrrrrrrrrOrNrs?""""""  ((((((,,,,,, $$$$$$''''''""""""******------%??????111111000000222222$$$$$$D+D+D+D+D+ D+D+D+N)        11111 111:     )    .'9-- *gy)) -),, *gy))*)-,*).-   Wi00   10   Wi0010"  Wi0010$0 & )44# # # 54# # # rO