XׯdBddlZddlmZddlZddlmZedddZGdd 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)GenericMigrationDbSQLiteMigrationz Oracle Corp.z1.0)nameauthorversionc6eZdZdZdZdZfdZdZxZS)SQLiteMigrationc @ |jjj}|}d gdtfgdtfgddfddg fdfd g fd fd g fd fd dg fdfg}d}|jr |jj}n|S|r|} d|vr)| dvr%|d||d|ddzdSd|vr#| dkr|d||d|zdS| dkr*|jr|d||ddSd|_dS|jr |jj n|j j j } | jdkr| d}n|}|D]} || dvr | d||jr |jjpd} |dvrj|dvrT|j j|j j|j jfdkr+| d krd }}d}|d||d!|d"| d#d }#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_sqlite_migration_grt.pyraise_on_no_matchzDSQLiteMigration.migrateColumnDefaultValue..raise_on_no_match&s<x''/ jV\V\V\^d^d^d!efff4)TINYINTSMALLINTINTEGERBIGINT)NUMERICDECIMALFLOATREALDOUBLE) CHARVARCHARNCHARNVARCHARTEXTNTEXTUNIQUEIDENTIFIERSTRBINARYz LONG BINARYXMLcdS)NT)_s rz;SQLiteMigration.migrateColumnDefaultValue...s HLrVARBITz LONG VARBITcd|S)Nz[Bb]?'?[10]+'?r(valrs rr*z;SQLiteMigration.migrateColumnDefaultValue../s4E4EFWY\4]4]rDATEcd|S)Nz(\d{4}|\d{2})-\d{1,2}-\d{1,2}r(r-s rr*z;SQLiteMigration.migrateColumnDefaultValue..0s#4#45UWZ#[#[rTIMEcd|S)Nz"(\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2}r(r-s rr*z;SQLiteMigration.migrateColumnDefaultValue..1s#4#45Z\_#`#`r TIMESTAMPDATETIMEc@d|S)NzM((\d{4}|\d{2})-\d{1,2}-\d{1,2}( (\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2})?|NOW\(\)))upperr-s rr*z;SQLiteMigration.migrateColumnDefaultValue..2s)4E4E`bebkbkbmbm5o5orBLOB)NULLzX''z]Default values are not allowed for BLOB columns in MySQL. The default value "%s" was removed.dr#r8z[Default values are not allowed for TEXT columns in MySQL. The default value %s was removed.z:NULL default value found for not nullable column. Removed!numericz' 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 simpleTyperr6addMigrationLogEntry isNotNulldefaultValueIsNullgroupuserType actualTypestripr majorNumber minorNumber releaseNumber Exception)selfstate default_value source_column target_columntarget_catalogtarget_default_valuevalue_validatorssource_datatypedefault_value_upperrGvalue_validatortarget_datatypers @rmigrateColumnDefaultValuez)SQLiteMigration.migrateColumnDefaultValue"s&,28,    : 9 93 ? > > > F | | |LL M &(](](](] _X[[[[ ]X```` b: &)o)o)o)o q    # !+6;OO 0 K"/"5"5"7"7 ((1D1W1W**1m],QS`aebeaeSf,ghhhr((-@F-J-J**1m],OQ^,_```r"f,, *"..q-/kmmm278M4!66C6N{M,22TaTjTuT{EzY&&'4':':4'@'@$$'4$#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,$#sG00'HHc |j}td|jD}|j}|s|jry|jj}|sG|jjdr(|d|_|jjdd|_dS|j |jj |rd|j }d}|dvrFd|j cxkrd krnnd }nd|j cxkrd krnn|jjd krd }nd }nd}n|dvr|j d krd}nd}n|dkrd}n~|dkrd}nu|dvr |}d|_ng|dvrd}n`|dkrd}nW|dkrd}nN|dvrd}nG|dkrd}n>|d krd!}n5|d"krd"}n,|d#krd#}n#|d$krd#}|d||d%n|}||vr|||_nOt%jd&d'|d(|d)|d*||d+|j d,|jj d-|d.d/SdS|d*||d0|j d,|jj d1|jd2d/S)3Nc3LK|]}|j|fV dSN)rr6).0datatypes r z;SQLiteMigration.migrateDatatypeForColumn..vs5 s s8=#6#6#8#8("C s s s s s srzenum(ENUMTr;)r r"rr ir> MEDIUMTEXTLONGTEXT)rr!rBITrrINT)rrhr)rrrrrzDOUBLE PRECISIONr)CLOBr#r7LONGBLOBr3r4r/r1DATETIMEOFFSETz6Source column type DATETIMEOFFSET was migrated to TIMEz!SQLite migrateTableColumnsToMySQLzCan't find datatype z for type  zCould not migrate column "z" in "z": Unknown datatype "r Fz"Could not migrate type of column "z" ()) targetCatalogdictsimpleDatatypesrCrHrI sqlDefinition startswithdatatypeExplicitParamsflagsextendrr6lengthrrK precisionrDgrt log_warningr@formattedRawType) rOrPrRrSrpmysql_simpleTypes source_typerWrZs rmigrateDatatypeForColumnz(SQLiteMigration.migrateDatatypeForColumnss+  s sTaTq s s sss#.  E}5 E'0;K =#9#G#R#RSZ#[#[ + 8I8I8I6;;;7H7N7S7S7SUfUkUkUk7=7K7K7KM^MlMlMlnoNoNoN8000(,=,HHH_knoKoP`P /0MPVP[0[\(9(DF%$5$G,9..q+{/fggg r) __name__ __module__ __qualname__r[rrrr __classcell__)rs@rr r !s}N$N$N$bXXXv@rr cdS)NSQLiter(r(rrgetTargetDBMSNamer s 8rc8t||Sr^)instancemigrateIdentifier)rlogs rrr s  % %dC 0 00rc8t||Sr^)rmigrateCatalog)rPsource_catalogs rrrs  " "5. 9 99rc:t|||Sr^)r migrateSchema)rP sourceSchemarps rrrs  ! !%} E EErc:t|||Sr^)rmigrateTableToMySQL)rPr target_schemas rrrs  ' '{M J JJrc:t|||Sr^)rmigrateTableToMySQL2ndPass)rPrrs rrr!s  . .uk; O OOrc:t|||Sr^)rr)rPrrs rrr&s  1 1%K P PPrc:t|||Sr^)rmigrateTriggerToMySQL)rPsource_trigger target_tables rrr+s  ) )% N NNrc:t|||Sr^)rmigrateViewToMySQL)rP source_viewrs rrr0s  & &uk= I IIrc:t|||Sr^)rmigrateRoutineToMySQL)rPsource_routiners rrr5s  ) )% O OOrc8t||Sr^)rr)rPrTs rrr:s  + +E> B BBrctjtjtjjj}tj}d|_d|_d|_| ||S)Nz!sqlite:migrateTimestampAsDatetimezeMigrate TIMESTAMP values as DATETIME by default. TIMESTAMP values in MySQL have a limited time range.boolean) rzListOBJECTclassesdb_migration_MigrationParameter__grtclassname__rcaption paramTypeappend)rPlistparams rgetMigrationOptionsr?s\ 8CJ K \ ] ]D K 7 7 9 9E4EJ{EMEOKK Kr)(rwbrrzdb_generic_migration_grtr ModuleInfor rexportSTRINGrr GrtLogObjectr db_Catalogdb_migration_Migrationr db_Schemardb_Tablerrhrdb_mysql_ForeignKey db_ForeignKeyrdb_mysql_Trigger db_Triggerr db_mysql_Viewdb_Viewrdb_mysql_Routine db_RoutinerrLISTrrr(rrrs,  555555 \ 3^UZ [ [ [ bbbbb&bbbL ?   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 CHckIJCKLnoo  po   r