Xׯd4ddlZddlmZddlZddlmZedddZdZGdd eZeZ e ej d Z e ej ej ej jd Ze ej jej jej jd Ze ej jej jej jej jd Ze ej jej jej jej jdZe ejej jej jej jdZe ej jej jej jej jdZe ej jej jej jej jdZe ej jej jej j ej jdZ!e ej j"ej jej j#ej jdZ$e ej jej jej jdZ%e ej&ej j'fej jdZ(dS)N) DefineModule)GenericMigrationDbSql92Migrationz Oracle Corp.z1.0)nameauthorversionc6eZdZfdZdZdZdZdZxZS)Sql92Migrationctt||||}|||jj|jj||\|_|_|SN)superr migrateTableToMySQLmigrateCharsetCollationownerdefaultCharacterSetNamedefaultCollationName)selfstate sourceTable targetSchema targetTable __class__s $..\modules\db_sql92_migration_grt.pyrz"Sql92Migration.migrateTableToMySQL#sND11EEe[Zfgg QUQmQmnsvAvGv_alaraGITVaRbRbM +[-Mc  |}d gdtfgdtfgddfddg fdfd g fd fd g fd fd g fdfdg fdfg}|jr}|jj}|ro|D]l}||dvr` |d||d kr|dkrd}?#t $r d}|d||d|zYhwxYwm|S)Nc\tj||td|d|ddS)N"z)" does not match the regular expression "T)rematch ValueError)re_strtargets rraise_on_no_matchzCSql92Migration.migrateColumnDefaultValue..raise_on_no_match+s<x''/ jV\V\V\^d^d^d!efff4r)SMALLINTINTBIGINT)NUMERICDECIMALFLOATREALDOUBLE PRECISION)CHARVARCHARNCHARNVARCHARBLOBCLOBXMLcdS)NT)_s rz:Sql92Migration.migrateColumnDefaultValue..3sW[rBIT BIT VARYINGcd|S)Nz[Bb]?'?[10]+'?r4valr#s rr6z:Sql92Migration.migrateColumnDefaultValue..4s1B1BCTVY1Z1ZrDATEcd|S)Nz(\d{4}|\d{2})-\d{1,2}-\d{1,2}r4r:s rr6z:Sql92Migration.migrateColumnDefaultValue..5s#4#45UWZ#[#[rTIMEcd|S)Nz"(\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2}r4r:s rr6z:Sql92Migration.migrateColumnDefaultValue..6s#4#45Z\_#`#`r TIMESTAMPcd|S)Nz_((\d{4}|\d{2})-\d{1,2}-\d{1,2}( (\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2})?|CURRENT_TIMESTAMP|now\(\))r4r:s rr6z:Sql92Migration.migrateColumnDefaultValue..7s(9(9rtw)y)yrBOOLEANcd|S)Nz (TRUE|FALSE)r4r:s rr6z:Sql92Migration.migrateColumnDefaultValue..9s&7&7&M&MrrzNOW()CURRENT_TIMESTAMPz+Default value %s is not supported. Removed!)intfloat simpleTyperupper ExceptionaddMigrationLogEntry) rr default_value source_column target_columntarget_default_valuevalue_validatorssource_datatypevalue_validatorr#s @rmigrateColumnDefaultValuez(Sql92Migration.migrateColumnDefaultValue(s,    + * *C 0 H H H% P L L Lmm \] #%Z%Z%Z%Z \X[[[[ ]X```` b]yyyy {[MMMM O    # K+6;O K'7 K KO&/!*<<<K.OA.}=== /+==-BUBUBWBW[bBbBb7J 4 )eee350!66q-&SVc&ceeeeee=$#s+B'CCc t|j}td|jD}|j}|s7|jr0|jj}|j|jj|r|j }d}|dvrJd|j cxkrdkrnnd}n~d|j cxkrdkrnn|j j dkrd }nUd}nQd }nM|d vr|j dkrd }n:d }n6|d vr |}d|_ n'|dvrd}n|dvrd}n|dkrd}n |dkrJd|j cxkrdkrnnd}d|j cxkrdkrnnd}nd|j cxkrdkrnnd}nd}n|dkrJd|j cxkrdkrnnd}d|j cxkrdkrnnd}nd|j cxkrdkrnnd }npd }nm|dkrd}nd|dkrd}n[|dkrd}nR|d vrd!}nK|d"kr"d#}d$|_ |d||d%n#|d&krd}|d||d'n|}||vr|||_nOtjd(d)|d*|d+|d,||d-|jd.|jjd/|d0d1Sd2S|d,||d3|jd.|jjd4|jd5d1S)6Nc3LK|]}|j|fV dSr )rrJ).0datatypes r z:Sql92Migration.migrateDatatypeForColumn..Qs5 s s8=#6#6#8#8("C s s s s s srrF)r-r/rr-i MEDIUMTEXTLONGTEXT)r,r.r,)r&r%r$)r(r'r()r*r)r)r+DOUBLEr0TINYBLOBi MEDIUMBLOBLONGBLOBr1TINYTEXTTEXTr@r<r>)r7r8r7rBTINYINTrDz5Source column type BOOLEAN was migrated to TINYINT(1)r2z+Source column type XML was migrated to TEXTz!SQL-92 migrateTableColumnsToMySQLzCan't find datatype z for type  zCould not migrate column "z" in "z": Unknown datatype "rFTz"Could not migrate type of column "z" ()) targetCatalogdictsimpleDatatypesrIuserType actualTypeflagsextendrrJlengthr majorNumber precisionrLgrt log_warningrformattedRawType) rrrNrOrimysql_simpleTypes source_typerRtarget_datatypes rmigrateDatatypeForColumnz'Sql92Migration.migrateDatatypeForColumnNs+  s sTaTq s s sss#.  E}5 E'0;K   & &}'='C D D D T ).4466O O"999 ,2222s22222&/OO-.666666666$,81<<*6*3&0OO $555 '#--&,OO&0OO $AAA"1*, '' $:::"+ $555") $666"* F** ,3333t33333&0O ,4444u44444&,OO-.666666666&2OO&0OO F** ,3333t33333&0O ,4444u44444&,OO-.666666666&2OO&0OO K//"- F**"( F**"( $:::"' I--"+'( $**1m]MOOOO E))"(**1m]CEEEE#2"333+<_+M (( C Co~o~o~APAPAPFQRRR**1m]]VcVhVhVhjwj}kCkCkCETETETUWWWu4  & &q-LYL^L^L^`m`s`x`x`x{H{Y{Y{YZ \ \ \5rc|jD]n}|jD]d}|jD]Z}d}d}||}|rt j||}|r&|r$|dkrd}|rd|z|jjd|jz<[eo|S)z] Create datatype cast expression for target column based on source datatype. Nr2zCAST(? as NVARCHAR(max))z%s as ?zcolumnTypeCastExpression:%s) schematatablescolumnslookupSourceObjectrgetColumnDataTyper customDatar) rrtarget_catalogrrrOtype_cast_expressionrRrNs rmigrateUpdateForChangesz&Sql92Migration.migrateUpdateForChangess+3 R RL+2 R R %0%8 R RM,0(&*O$)$<$<]$K$KM$b*:*LTS`*a*a$RR*e333M0/Rqz~RrRM/:;X[h[m;mn R R rcH|r|d||d|zdS||fS)Nrz(Collation %s migrated to utf8_general_ci)rFutf8_general_ci)rL)rrcharset collation source_object target_objects rrz&Sql92Migration.migrateCharsetCollationsD  )  & &q->)L N N N(( !!r) __name__ __module__ __qualname__rrTryrr __classcell__)rs@rr r "sy #$#$#$LbbbJ0"""""""rr cdS)NSql92r4r4rrgetTargetDBMSNamers 7rc8t||Sr )instancemigrateIdentifier)rlogs rrrs  % %dC 0 00rc8t||Sr )rmigrateCatalog)rsource_catalogs rrrs  " "5. 9 99rc:t|||Sr )r migrateSchema)r sourceSchemaris rrrs  ! !%} E EErc:t|||Sr )rr)rr target_schemas rrrs  ' '{M J JJrc:t|||Sr )rmigrateTableToMySQL2ndPass)rrrs rrrs  . .uk; O OOrc:t|||Sr )rmigrateTableForeignKeyToMySQL)r source_fkrs rrrs  1 1%K P PPrc:t|||Sr )rmigrateTriggerToMySQL)rsource_trigger target_tables rrrs  ) )% N NNrc:t|||Sr )rmigrateViewToMySQL)r source_viewrs rrrs  & &uk= I IIrc:t|||Sr )rmigrateRoutineToMySQL)rsource_routiners rrrs  ) )% O OOrc8t||Sr )rr)rrs rrrs  + +E> B BBrcltjtjtjjj}|Sr )rsListOBJECTclassesdb_migration_MigrationParameter__grtclassname__)rlists rgetMigrationOptionsr s$ 8CJ K \ ] ]D Kr))rwbrrsdb_generic_migration_grtr ModuleInfotruncated_identifier_serialr rexportSTRINGrr GrtLogObjectr db_Catalogdb_migration_Migrationr db_Schemardb_Tablerr%rdb_mysql_ForeignKey db_ForeignKeyrdb_mysql_Trigger db_Triggerr db_mysql_Viewdb_Viewrdb_mysql_Routine db_RoutinerrLISTrrr4rrrs,  555555 \ 2NTY Z Z Z o"o"o"o"o"%o"o"o"d >   3: 3:sz3;+CDD11ED1 3;)3;+Ms{Oeff::gf: 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