XׯdCddlZddlmZddlZddlmZddlmZedddZda Gd d eZ e Z e ej d Ze ej ej ejjd Ze ejjejjejjd Ze ejjejjejjejjdZe ejjejjejjejjdZe ejejjejjejjdZe ejjejjejjejjdZe ejjejjejjejjdZ e ejj!ejjejj"ejjdZ#e ejj$ejjejj%ejjdZ&e ejjejjejjdZ'e ej(ejj)fejjdZ*dS)N) DefineModule)GenericMigration)find_object_with_nameDbSybaseMigrationz Oracle Corp.z1.0)nameauthorversioncJeZdZd dZfdZdZdZdZdZdZ d Z xZ S) SybaseMigrationTctjdtj}|}|dr|ds*|dr|dr |dd}||sK|rIt j}d|_ d|z|_ |j |t|d krxtdz a|dd ttz}|rMt j}d|_ d |d |d |_ |j ||S)Nz ^[^/\\.]+$"[]z9Sybase migrateIdentifier: Could not migrate identifier %s@>z Identifier `z` is too long, truncated to ``)recompileU startswithendswithmatchgrtclasses GrtLogEntry entryTyperentriesappendlentruncated_identifier_serialstr)self sybase_namelog dots_allowedmysql_valid_regex mysql_nameentrys %..\modules\db_sybase_migration_grt.pymigrateIdentifierz!SybaseMigration.migrateIdentifier#slJ}bd;;  # #C ( ( +[-A-A#-F-F +  # #C ( ( +-8-A-A#-F-F +$QrT*J &&z22 &s &K++--EEOTWbbEJ K  u % % % z??R   '1 , '#CRC-H)I)IIJ * //11"#Q\Q\Q\^h^h^hi  ""5)))ctt||||}|||jj|jj||\|_|_|SN)superr migrateTableToMySQLmigrateCharsetCollationownerdefaultCharacterSetNamedefaultCollationName)r%state sourceTable targetSchema targetTable __class__s r,r2z#SybaseMigration.migrateTableToMySQL=sOT22FFuk[ghh QUQmQmnsvAvGv_alaraGITVaRbRbM +[-Mr.c |}|jr|jj}|dkr |dkrd}nO|dvrK|jdkr@d}t|jjd|_|d||d|d|d|rP|d s;||kr5 t|n$#d }|d ||d |zYnxYw|S) N TIMESTAMPz getdate()CURRENT_TIMESTAMPDATETIME SMALLDATETIMErzDefault value is z, so type was changed from z to TIMESTAMP'rz!Default value %s is not supported) simpleTyper defaultValuer targetCatalogsimpleDatatypesaddMigrationLogEntryrfloat)r%r7 default_value source_column target_columntarget_default_valuesource_datatypes r,migrateColumnDefaultValuez)SybaseMigration.migrateColumnDefaultValueBsD,  # S+6;O+-- K//+>( $AAA -<<+>(0EUEXEhju/v/vM,..q-anananpppABBB S]%=%=c%B%B SG[_lGlGlS-((((S+-(..q-AMQSSSSS$#s B""Cc |j}td|jD}|j}|s7|jr0|jj}|j|jj|r|j }d}|dvrJd|j cxkrdkrnnd}n'd|j cxkrdkrnn|j j dkrd }nd}nd }n|d vr|j dkrd }nd }n|d vr d }d|_ n|dvr |}d|_ n|dkr.|}d|_ d|jvr|jdn|dkr2d}d|_ |d||d|d|d|j dnU|dkr2d}d|_ |d||d|d|d|j dn|dvr0|jr&|j dkrd}n|j dkrd}nd}d|_ nd}n|d kr d!}d|_ n|d!kr|j d"krd!nd#}d|_ n|d$vr%d}|jj|_ |jj|_n|d%kr d&}d|_ n|d'vrNc3LK|]}|j|fV dSr0)rupper).0datatypes r, z;SybaseMigration.migrateDatatypeForColumn..bs5 s s8=#6#6#8#8("C s s s s s sr.rC)VARCHARNVARCHAR UNIVARCHARrrVi MEDIUMTEXTLONGTEXT)CHARNCHARUNICHARr])TEXTNTEXTUNITEXTr)BIGINTINTSMALLINTTINYINTUNSIGNEDSYSNAMEzSource column type z was migrated to () LONGSYSNAMEDECIMALNUMERICre rdrcroREALFLOATDOUBLE)MONEY SMALLMONEYIMAGELONGBLOB)BINARY VARBINARYTINYBLOB MEDIUMBLOBr?r@DATETIMEBITrz1Source column type BIT was migrated to TINYINT(1)z!Sybase migrateTableColumnsToMySQLzCan't find datatype z for type  rzCould not migrate column "z" in "z": Unknown datatype "r FTz"Could not migrate type of column "z" ()rFdictrGrDuserType actualTypeflagsextendrrRlengthr majorNumber precisionr!rHidentitynumericPrecision numericScalescaler log_warningr4formattedRawType) r%r7rKrLrFmysql_simpleTypes source_typerNtarget_datatypes r,migrateDatatypeForColumnz(SybaseMigration.migrateDatatypeForColumn_s+  s sTaTq s s sss#.  E}5 E'0;K   & &}'='C D D D l ).4466O O"GGG ,2222s22222&/OO-.666666666$,81<<*6*3&0OO $@@@ '#--&,OO&0OO $@@@",') $$ $AAA"1*, '' I--"1*, ']%888!'..z::: I--"+') $**1m]]JY//[j[j[jlymAmAmABCCCC M11"+'* $**1m]]JY//[j[j[jlymAmAmABCCCC!$::: ) 0$.22*4&0255*/*2.0M++&/OO F**")*, '' G++-:-AQ-F-F''H*, '' $;;;"+*7*B*S '&3&>&K ## G++",') $$ $;;; ,2222s22222&'11*4*9-.666666666&2OO&0OO $AAA", F**"( F**"( E))"+'( $**1m]IKKKK#2"333+<_+M (( C Co~o~o~APAPAPFQRRR**1m]]VcVhVhVhjwj}kCkCkCETETETUWWWu4  & &q-LYL^L^L^`m`s`x`x`x{H{Y{Y{YZ \ \ \5r.cX|jD]}|jD]}|jD]}d}d}||}|rt j||}|rY|rW|dkrd}n2|dkrd}n)|dvr%|jr|jdkrd}n|jd krd }nd }|rd |z|jj d |j z<|S)z] Create datatype cast expression for target column based on source datatype. NrhzCONVERT(VARCHAR(30), ?)rlzCONVERT(VARCHAR(255), ?)rnrZzCONVERT(SMALLINT, ?)rqzCONVERT(INT, ?)zCONVERT(BIGINT, ?)z%s as ?zcolumnTypeCastExpression:%s) schematatablescolumnslookupSourceObjectrgetColumnDataTyperrr4 customDatar) r%r7target_catalogr9r:rLtype_cast_expressionrNrKs r,migrateUpdateForChangesz'SybaseMigration.migrateUpdateForChangessC+3 R RL+2 R R %0%8RRM,0(&*O$)$<$<]$K$KM$b*:*LTS`*a*a$RR*i773L00, ==3M00,0FFF=KaF,6::7M 4 4!.!82!=!=7H 4 47K 4/Rqz~RrRM/:;X[h[m;mn-R R2r.cH|r|d||d|zdS||fS)Nrz(Collation %s migrated to utf8_general_ci)rCutf8_general_ci)rH)r%r7charset collation source_object target_objects r,r3z'SybaseMigration.migrateCharsetCollationsD  )  & &q->)L N N N(( !!r.c~tj||||}|r#|jr|jj}|dvr |j|_|S)N)rdrfrerc)rmigrateTableColumnToMySQLrDrr autoIncrement)r%r7rKr:rLrNs r,rz)SybaseMigration.migrateTableColumnToMySQLsY(B4P]_jkk  I' I"/":"?"&NNN2?2HM/ r.c4tj||||}|Sr0)rmigrateTableForeignKeyToMySQL)r%r7 source_fkr: target_fks r,rz-SybaseMigration.migrateTableForeignKeyToMySQLs $B4PY[fgg r.)T) __name__ __module__ __qualname__r-r2rOrrr3rr __classcell__)r;s@r,r r "s4 $$$:zzzzB"""   $r.r cdS)NSybaserr.r,getTargetDBMSNamer s 8r.c8t||Sr0)instancer-)rr's r,r-r-$s  % %dC 0 00r.c8t||Sr0)rmigrateCatalog)r7 sourceCatalogs r,rr(s  " "5- 8 88r.c:t|||Sr0)r migrateSchema)r7 sourceSchemarFs r,rr-s  ! !%} E EEr.c:t|||Sr0)rr2)r7r8 target_schemas r,r2r22s  ' '{M J JJr.c:t|||Sr0)rmigrateTableToMySQL2ndPass)r7r8r:s r,rr7s  . .uk; O OOr.c:t|||Sr0)rr)r7rr:s r,rr<s  1 1%K P PPr.c:t|||Sr0)rmigrateTriggerToMySQL)r7source_trigger target_tables r,rrAs  ) )% N NNr.c:t|||Sr0)rmigrateViewToMySQL)r7 source_viewrs r,rrFs  & &uk= I IIr.c:t|||Sr0)rmigrateRoutineToMySQL)r7source_routiners r,rrKs  ) )% O OOr.c8t||Sr0)rr)r7rs r,rrPs  + +E> B BBr.cltjtjtjjj}|Sr0)rListOBJECTrdb_migration_MigrationParameter__grtclassname__)r7lists r,getMigrationOptionsrUs" 8CJ K \ ] ]D Kr.)+rwbrrdb_generic_migration_grtrworkbench.utilsr ModuleInfor#r rexportSTRINGrr GrtLogObjectr- db_Catalogdb_migration_Migrationr db_Schemardb_Tabler2rdrdb_mysql_ForeignKey db_ForeignKeyrdb_mysql_Trigger db_Triggerr db_mysql_Viewdb_Viewrdb_mysql_Routine db_RoutinerrLISTrrrr.r,rs ,  555555111111 \ 3^UZ [ [ [  yyyyy&yyyz ?   3: 3:sz3;+CDD11ED1 3;)3;+Ms{Oeff99gf9 3;(#+*LckNcehepe{||FF}|F 3;')KS[MacfcncxyyKKzyK 37CK> @TVYVaVjkkPPlkP 3;2CK4VX[XcXqsvs~tHIIQQIIQ 3;/1SUXU`UkmpmxnBCCOOCCO 3;,ck.PRUR]Regjgrg|}}JJ~}J 3;/1SUXU`UkmpmxnCDDPPDDP 3;)3;+Ms{OeffCCgfC CHckIJCKLnoopor.