Xׯd7ddlZddlmZddlZddlmZedddZGdd eZeZe ej d Z e ej ej ej j d 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 jej jdZ e ej j!ej jej j"ej jdZ#e ej jej jej jdZ$e ej%ej j&fej jdZ'dS)N) DefineModule)GenericMigrationDbMsAccessMigrationz Oracle Corp.z1.0)nameauthorversionc0eZdZdZdZdZfdZxZS)MSAccessMigrationc   |jjj}|}d gdtfgdtfgddfddg fdfd g fd fd g fd fd dg fdfg}d}|jrR|jj}|rD|jr |jjn|jjj} | jdkr|d}|r|}|D]} || dvr | d||jr |jjpd} |dvrj| dvrT|j j |j j |j j fdkr+| d krd}}d}|d||d|d| dd}#t$r d}|d||d|zYwxYw|S)Nc\tj||td|d|ddS)N"z)" does not match the regular expression "T)rematch ValueError)re_strtargets '..\modules\db_msaccess_migration_grt.pyraise_on_no_matchzFMSAccessMigration.migrateColumnDefaultValue..raise_on_no_match&s<x''/ jV\V\V\^d^d^d!efff4)TINYINTSMALLINTINTEGERBIGINT)NUMERICDECIMALFLOATREALDOUBLE) CHARVARCHARNCHARNVARCHARTEXTNTEXTUNIQUEIDENTIFIERSTRBINARYz LONG BINARYXMLcdS)NT)_s rz=MSAccessMigration.migrateColumnDefaultValue...s HLrVARBITz LONG VARBITcd|S)Nz[Bb]?'?[10]+'?r(valrs rr*z=MSAccessMigration.migrateColumnDefaultValue../s4E4EFWY\4]4]rDATEcd|S)Nz(\d{4}|\d{2})-\d{1,2}-\d{1,2}r(r-s rr*z=MSAccessMigration.migrateColumnDefaultValue..0s#4#45UWZ#[#[rTIMEcd|S)Nz"(\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2}r(r-s rr*z=MSAccessMigration.migrateColumnDefaultValue..1s#4#45Z\_#`#`r TIMESTAMPDATETIMEc@d|S)NzR((\d{4}|\d{2})-\d{1,2}-\d{1,2}( (\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2})?|NULL|NOW\(\)))upperr-s rr*z=MSAccessMigration.migrateColumnDefaultValue..2s)4E4Eegjgpgpgrgr5t5trnumericz' r)r3r4)zNOW()zCURRENT TIMESTAMPCURRENT_TIMESTAMPr3)r;r:zDefault value z. is not supported for a MySQL column of type "z ".Removed!z+Default value %s is not supported. Removed!)ownerintfloat simpleTypergroupuserType actualTypestripr6r majorNumber minorNumber releaseNumberaddMigrationLogEntry Exception) selfstate default_value source_column target_columntarget_catalogtarget_default_valuevalue_validatorssource_datatyperAvalue_validatortarget_datatypers @rmigrateColumnDefaultValuez+MSAccessMigration.migrateColumnDefaultValue"s&,28,    : 9 93 ? > > > F | | |LL M &(](](](] _X[[[[ ]X```` b: &)t)t)t)t v    # >+6;O >:G:R 066XeXnXyX:**$1$7$7$=$=M  K#0 #3 K K"oa&888K**=999 +8*B*d}G_Gd*jhj*.GGGML_L_LaLaffMfMf . 6 BNDZDfhvh~iM NQZ Z Z$3{$B$B;N$8$8;=$8$)$>$>q-Q^Q^LLLN]N]N]/^%_%_%_%_8K 4%aaa/1,221m]"OR_"_aaaaaa9,$#sE'E?>E?c |j}td|jD}|j}|r|j}d}|dkrd}|j|_n|dks|dkrd}n|dkrd}n|dkrcd}d} |jjD]} | |krd } n | j rn| r:d} |jj D]} | jD]} | j |krd } n| rd |_ d |_ n|d krd }nw|d krd }|j dnT|dkrd}nK|dks|dkrd}n<|dks|dkrd}n-|dkrd}n$|dkrd}n|dkrd}n|dkr d}d|_n|}||vr|||_nOt!jdd|d|d |d!||d"|jd#|jjd$|d%dSd S|d!||d&|jd#|jjd'|jd(dS))Nc3LK|]}|j|fV dSN)rr6).0datatypes r z=MSAccessMigration.migrateDatatypeForColumn..]s5 s s8=#6#6#8#8("C s s s s s srr9r rINTrCOUNTERFTr8BITrBYTEUNSIGNEDSINGLErrrCURRENCYrr%BLOB LONGBINARYLONGBLOBLONGCHARLONGTEXTr4z#MSAccess migrateTableColumnsToMySQLzCan't find datatype z for type  zCould not migrate column "z" in "z": Unknown datatype "r z"Could not migrate type of column "z" ()) targetCatalogdictsimpleDatatypesr@rr6lengthr=columns autoIncrementindicesreferencedColumn isNotNullflagsappend precisiongrt log_warningrHformattedRawType)rJrKrMrNrlmysql_simpleTypes source_typerRrTflagcol is_indexedidxcs rmigrateDatatypeForColumnz*MSAccessMigration.migrateDatatypeForColumnZs~+  s sTaTq s s sss#. E ).4466O O)++"+'4'; $$ I--E1I1I"' J..", I--"'(.6Cm++"tu* 4!&J,2:&&!$&&A 1]BB-1 % C"467 323 / E))"+ F**"+#**:6666 H,,") F**o.I.I"* J../Y2N2N"+ H,,"( L00", J..", J..",*, ''#2"333+<_+M (( E ErArArACRCRCRHSTTT**1m]]VcVhVhVhjwj}kCkCkCETETETUWWWu4  & &q-LYL^L^L^`m`s`x`x`x{H{Y{Y{YZ \ \ \5rc|S)z] Create datatype cast expression for target column based on source datatype. r()rJrKrOs rmigrateUpdateForChangesz)MSAccessMigration.migrateUpdateForChangess rcBtt||||}|rpt|j|jD]T\}}|j|jks|j|jkr|d||d|j j d|j d|j j d|j d|j d|j d|j d|j|jkr$d|jj z|j j d |j z<|j|_|j|_|j r|jd kr5d |_|d||d |j j d|j d |jd kr5d |_|d||d|j j d|j dV|S)Nr8z The column .z references z but its data type is z instead of z. Data type changed to z ?::%s as ?zcolumnTypeCastExpression:%szSET NULLz NO ACTIONz7Cannot have a SET NULL update rule: referencing column z7 does not allow nulls. Update rule changed to NO ACTIONz7Cannot have a SET NULL delete rule: referencing column z7 does not allow nulls. Delete rule changed to NO ACTION)superr migrateTableForeignKeyToMySQLziprpreferencedColumnsr@rorHr=r formattedType customDatart updateRule deleteRule)rJrK source_fk targetTable target_fkcolumnreferenced_column __class__s rrz/MSAccessMigration.migrateTableForeignKeyToMySQLs+T22PPQVXacnoo  4-01BID_-`-` 4 4))$(9(DDD YjYqHqHq..q)YY8> 8I8I8I6;;;7H7N7S7S7SUfUkUkUk7=7K7K7KM^MlMlMlnoNoNoN8000(,=,HHH_knoKoP`P /0MPVP[0[\(9(DF%$5$ B BBrcltjtjtjjj}|SrX)rxListOBJECTclassesdb_migration_MigrationParameter__grtclassname__)rKlists rgetMigrationOptionsr s" 8CJ K \ ] ]D Kr)(rwbrrxdb_generic_migration_grtr ModuleInfor 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_RoutinerrLISTrrr(rrrs,  555555 \ 5~W\ ] ] ] nnnnn(nnn`     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