|L i09zddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm Z dd l m Z dd l mZdd l mZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl$m%Z%ddl&m'Z'er6dd lm(Z(dd!l)m*Z*dd"l)m+Z+dd#l,m-Z-dd$l.m/Z/dd%l.m0Z0dd&l1m2Z2dd'l3m4Z4dd(lm5Z5Gd)d*e"Z6Gd+d,eeZ7Gd-d.eeZ8e'e7d/ d9d0Z9e'e8d/ d:d1Z:e'ed/d;d2Z; dd5Z>e'ed/ d?d6Z?e'ed/ d@d7Z@e'e d/ dAd8ZAy)B) annotationsN)Any)Dict)List)Optional) TYPE_CHECKING)Union)types)Column) CreateIndex) Executable) ClauseElement) AddColumn) alter_column) alter_table) ColumnDefault) ColumnName)ColumnNullable) ColumnType)format_column_name)format_server_default)format_table_name) format_type) RenameTable) DefaultImpl)util) sqla_compat)compiles)Literal) MSDDLCompiler) MSSQLCompiler) CursorResult)Index)Table) TableClause) TypeEngine)_ServerDefaultc DeZdZdZdZdZejddhfzZejdzZdfd Z dfd Z dd Z dfd Z d d d d d d d d d  dfdZ ddZ dfd Zd d dfdZdZfdZ ddZxZS) MSSQLImplmssqlTGOVARCHARNVARCHAR)minvaluemaxvalue nominvalue nomaxvaluecyclecacheczt||i||jjd|j|_y)Nmssql_batch_separator)super__init__ context_optsgetbatch_separator)selfargkw __class__s W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/alembic/ddl/mssql.pyr9zMSSQLImpl.__init__Bs9 #$$#0044 #T%9%9 ct||g|i|}|jr'|jr|j |j|SN)r8_execas_sqlr< static_output)r= constructargsr?resultr@s rArEzMSSQLImpl._execHsCy64626 ;;4//   t33 4 rBc@|jd|jzy)NzBEGIN TRANSACTION)rGcommand_terminator)r=s rA emit_beginzMSSQLImpl.emit_beginNs .1H1HHIrBct||jr)|jr|j |jyyyrD)r8 emit_commitrFr<rG)r=r@s rArOzMSSQLImpl.emit_commitQs8  ;;4//   t33 40;rBNF)nullableserver_defaultnametype_schema existing_typeexisting_server_defaultexisting_nullablec |||}d}n9|7tjd| || }|}d}n|tjdd} tj|| stj || r d} || d<| | d<|dur'| dur#| dus||j t||d|t |$||f||||| d| |dur| dur|t |%|||| |t |%|||| yy) NzhMS-SQL ALTER COLUMN operations with NULL or NOT NULL require the existing_type or a new type_ be passed.zMS-SQL ALTER COLUMN operations that specify type_= should also specify a nullable= or existing_nullable= argument to avoid implicit conversion of NOT NULL columns to NULL.FTrQrVsys.default_constraints)rPrSrTrUrW)rTrQ)rTrR) r CommandErrorwarnr_server_default_is_identity_server_default_is_computedrE_ExecDropConstraintr8r)r= table_name column_namerPrQrRrSrTrUrVrWr? used_defaultr@s rArzMSSQLImpl.alter_columnVs&   !& &''>  *u/@(H"ME   II/   2 2 3  4 4 3  L#1B ,CB( ) % '%'u48N JJ#-      '/    &<5+@)$!#1 %   G KT !  rBc <|jjddxsd}|jJ|D]N}||jjvs|jj t |t jP|jt|fi|y)N mssql_include) kwargsr;tablec append_columnr sqltypesNullTyperEr )r=indexr?rccols rA create_indexzMSSQLImpl.create_indexs (($?E2 {{&&&  JC%++--' ))&h6G6G*HI J ;u++,rBc @|jr|jd|jjj |zt |||fi||jd|jjj |zyt |||fi|y)NzSET IDENTITY_INSERT %s ONzSET IDENTITY_INSERT %s OFF)rFrEdialectidentifier_preparer format_tabler8 bulk_insert)r=rfrowsr?r@s rArrzMSSQLImpl.bulk_inserts ;; JJ+,,22??FG  G t 2r 2 JJ,,,22??FG  G t 2r 2rB)rTc P|jdd}|r|jt||d||jdd}|r|jt||d||jdd}|r|jt|||t |||fd|i|y)Nmssql_drop_defaultFrYmssql_drop_checkzsys.check_constraintsmssql_drop_foreign_keyrT)poprEr^_ExecDropFKConstraintr8 drop_column) r=r_columnrTr? drop_default drop_checkdrop_fksr@s rArzzMSSQLImpl.drop_columnsvv2E:  JJ#(A6  VV.6  JJ#(?  662E:  JJ,ZH I JDvDDrBcp|tjdd|}|tjdd|}||k7S)Nz [\(\) \"\'])resub)r=inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaults rAcompare_server_defaultz MSSQLImpl.compare_server_defaultsP % 0(*$=) % & 1*,$>* &*-FFFrBct|||\}}}|(|&|s$|j|jjrd}|||fS)NF)r8_compare_identity_defaultr{ primary_key)r=metadata_identityinspector_identitydiffignoredis_alterr@s rArz#MSSQLImpl._compare_identity_default s_"''"C 1# gx  %"."))5"))55HWh&&rBc|jdij}|jds|jdd|jds|jdd|S)Ndialect_optionsrcmssql_clustered)r;copyrx)r=reflected_objectkindoptionss rA adjust_reflected_dialect_optionsz*MSSQLImpl.adjust_reflected_dialect_optionss[#&&'8"=BBD{{?+ KK .{{,- KK)4 0rB)returnNone)rHrrzOptional[CursorResult])r_strr`rrPOptional[bool]rQz/Optional[Union[_ServerDefault, Literal[False]]]rR Optional[str]rSOptional[TypeEngine]rTrrUrrVz+Union[_ServerDefault, Literal[False], None]rWrr?rrr)rkr%r?rrr)rfzUnion[TableClause, Table]rsz List[dict]r?rrr)r_rr{ Column[Any]rTrrr)rDict[str, Any]rrrr)__name__ __module__ __qualname__ __dialect__transactional_ddlr<r type_synonymsidentity_attrs_ignorer9rErMrOrrmrrrzrrr __classcell__)r@s@rAr+r+3sKO--)Z1H0JJM'==A  J5$( "&* $.2 ,0!eee ! e  ee$ee,e" e *!e"#e$ %eN -3.36@3HK3 3*!% EEE  E E6G,'$  . 69   rBr+c,eZdZdZ ddZy)r^Fc<||_||_||_||_yrD)tnamecolnamerSrT)r=rrrSrTs rAr9z_ExecDropConstraint.__init__*s     rBN) rrrzUnion[Column[Any], str]rSrrTrrrrrr inherit_cacher9rdrBrAr^r^'s<M  )      rBr^c(eZdZdZ ddZy)ryFc.||_||_||_yrD)rrrT)r=rrrTs rAr9z_ExecDropFKConstraint.__init__:s   rBN)rrrrrTrrrrrdrBrAryry7s,M#.8E rBryr,c |j|j|j|jf\}}}}d|||t ||||r |dzdzSddzS)Nadeclare @const_name varchar(256) select @const_name = QUOTENAME([name]) from %(type)s where parent_object_id = object_id('%(schema_dot)s%(tname)s') and col_name(parent_object_id, parent_column_id) = '%(colname)s' exec('alter table %(tname_quoted)s drop constraint ' + @const_name).r)typerr tname_quoted schema_dot)rTrrrSr)elementcompilerr?rTrrrSs rA_exec_drop_col_constraintrBs{   %!FE7E G )(E6B&,fsl J  35 J  rBc |j|j|j}}}d||t||||r |dzdzSddzS)Naydeclare @const_name varchar(256) select @const_name = QUOTENAME([name]) from sys.foreign_keys fk join sys.foreign_key_columns fkc on fk.object_id=fkc.constraint_object_id where fkc.parent_object_id = object_id('%(schema_dot)s%(tname)s') and col_name(fkc.parent_object_id, fkc.parent_column_id) = '%(colname)s' exec('alter table %(tname_quoted)s drop constraint ' + @const_name)rr)rrrr)rTrrr)rrr?rTrrs rA_exec_drop_col_fk_constraintr[se%^^W]]GOO7EF G)(E6B&,fsl J  35 J  rBc xt||j|jdt||jfi|SN )rr_rTmssql_add_columnr{rrr?s rAvisit_add_columnros7 Hg00'..A7>>8R8 rBc .d|j|fi|zS)NzADD %s)get_column_specification)rr{r?s rArrws" 7h77E"E EErBc t||j|jdt||jdt ||j d|jrdSdS)NrNULLzNOT NULL)rr_rTrr`rrUrPrs rAvisit_column_nullabler}sd Hg00'..AXw223Hg334""2  )32  rBc t||j|jdt||jdt ||j S)Nz ADD DEFAULT z FOR )rr_rTrdefaultrr`rs rAvisit_column_defaultrsB Hg00'..Ah88W%8%89 rBc dt||j|jdt||jdt||j dS)NEXEC sp_rename 'r', z , 'COLUMN')rr_rTrr`newnamers rAvisit_rename_columnrsB (G$6$6G8W%8%898W__5 rBc t||j|jdt||jdt ||j Sr)rr_rTrr`rrSrs rAvisit_column_typersB Hg00'..AXw223Hgmm, rBc zdt||j|jdt||jdS)Nrr)rr_rTnew_table_namers rAvisit_rename_tablers6 (G$6$6G(G$:$:DA rB)rr^rr#rr)rryrr#rr)rrrr"rr)rr"r{rrr)rrrr"rr)rrrr"rr)rrrr"rr)rrrr"rr)rrrr"rr)B __future__rrtypingrrrrrr sqlalchemyr risqlalchemy.schemar r sqlalchemy.sql.baser sqlalchemy.sql.elementsrbaserrrrrrrrrrrrimplrrrrutil.sqla_compatr r!sqlalchemy.dialects.mssql.baser"r#sqlalchemy.engine.cursorr$sqlalchemy.sql.schemar%r&sqlalchemy.sql.selectabler'sqlalchemy.sql.type_apir(r)r+r^ryrrrrrrrrrrdrBrArsJ#  ($)*1 $'#'<<5++52$q qh *m  J  w' ,9(0 ) ".;*& )WFF%0FF  .'" '4# -!   &3  "  *g #0 *g #0 +w $1 rB