ó ä@Qc@sÕddlZddlmZddlmZmZddlZddlmZm Z m Z m Z eddddd d ƒZ d Z d efd „ƒYZeƒZe jejƒd„ƒZe jejejejjƒd„ƒZe jejjejjejjƒd„ƒZe jejjejjejjejjƒd„ƒZe jejjejjejjejjƒd„ƒZe jejejjejjejjƒd„ƒZe jejjejjejj ejjƒd„ƒZ!e jejj"ejjejj#ejjƒd„ƒZ$e jejj%ejjejj&ejjƒd„ƒZ'e jejj(ejjejj)ejjƒd„ƒZ*e jej+ejj,fejjƒd„ƒZ-dS(iÿÿÿÿN(t DefineModule(tfind_object_with_nametfind_object_with_old_name(tGenericMigrationt&MYSQL_MAX_INDEX_KEY_LENGTH_INNODB_UTF8t(MYSQL_MAX_INDEX_KEY_LENGTH_INNODB_LATIN1t%MYSQL_MAX_INDEX_KEY_LENGTH_NDBCLUSTERtnametDbSql92Migrationtauthors Oracle Corp.tversions1.0itSql92MigrationcBs,eZd„Zd„Zd„Zd„ZRS(cCsUtt|ƒj|||ƒ}|j||jj|jj||ƒ\|_|_|S(N(tsuperR tmigrateTableToMySQLtmigrateCharsetCollationtownertdefaultCharacterSetNametdefaultCollationName(tselftstatet sourceTablet targetSchemat targetTable((s$..\modules\db_sql92_migration_grt.pyR s3c s‚|}d„‰dddgtfddddd gtfd d d d dddgd„fddg‡fd†fdg‡fd†fdg‡fd†fdg‡fd†fdg‡fd†fg}|jr~|jj}|r~x‘|D]†}||dkrîy|d|ƒWn1tk rId}|jd||d |ƒqtX|dkrt|jƒd!krtd"}qtqîqîWq~n|S(#NcSs5tj||ƒdkr1td||fƒ‚ntS(Ns/"%s" does not match the regular expression "%s"(tretmatchtNonet ValueErrortTrue(tre_strttarget((s$..\modules\db_sql92_migration_grt.pytraise_on_no_match(stSMALLINTtINTtBIGINTtNUMERICtDECIMALtFLOATtREALsDOUBLE PRECISIONtCHARtVARCHARtNCHARtNVARCHARtBLOBtCLOBtXMLcSstS(N(R(t_((s$..\modules\db_sql92_migration_grt.pyt0stBITs BIT VARYINGcs ˆd|ƒS(Ns[Bb]?'?[10]+'?((tval(R(s$..\modules\db_sql92_migration_grt.pyR.1stDATEcs ˆd|ƒS(Ns(\d{4}|\d{2})-\d{1,2}-\d{1,2}((R0(R(s$..\modules\db_sql92_migration_grt.pyR.2stTIMEcs ˆd|ƒS(Ns"(\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2}((R0(R(s$..\modules\db_sql92_migration_grt.pyR.3st TIMESTAMPcs ˆd|ƒS(Ns_((\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\(\))((R0(R(s$..\modules\db_sql92_migration_grt.pyR.4stBOOLEANcs ˆd|ƒS(Ns (TRUE|FALSE)((R0(R(s$..\modules\db_sql92_migration_grt.pyR.6siits+Default value %s is not supported. Removed!sNOW()tCURRENT_TIMESTAMP(tinttfloatt simpleTypeRt ExceptiontaddMigrationLogEntrytupper( RRt default_valuet source_columnt target_columnttarget_default_valuetvalue_validatorstsource_datatypetvalue_validator((Rs$..\modules\db_sql92_migration_grt.pytmigrateColumnDefaultValue%s0 !    c Cs,|j}td„|jDƒƒ}|j}| r`|jr`|jj}|jj|jjƒnd}|rõ|j j ƒ}d} |d4krd|j ko§dknrµd} qdd|j koÏdknrø|j j dkrïd } qþd} qdd } nc|d5kr.|j dkr%d } qdd } n6|d6krL|} d|_n|d7krad} n|d8krvd} nî|dkr‹d} nÙ|dkrd|j ko±d9knr¿d} nd|j koÙd:knrçd} qdd|j kod;knrd} qdd} nL|dkr¥d|j ko>d<knrLd } nd|j kofd=knrtd!} qdd|j koŽd>knrœd } qdd } n¿|d"krºd"} nª|d#krÏd#} n•|d$kräd$} n€|d?krùd%} nk|d'kr-d(} d)|_ |jd||d*ƒn7|d+kr^d!} d,}|jd||d-ƒn|} |j| ƒrƒ|| |_nJtjd.d/| |fƒ|jd||d0|j |jj |fƒtS|rñd1||jjd2|j NsR5R'R)iiiit MEDIUMTEXTtLONGTEXTR&R(R!R RiÿÿÿÿR#R"R%R$sDOUBLE PRECISIONtDOUBLER*iitTINYBLOBiit MEDIUMBLOBtLONGBLOBR+tTINYTEXTtTEXTR3R1R2R/s BIT VARYINGR4tTINYINTis5Source column type BOOLEAN was migrated to TINYINT(1)R,sCAST(? as NVARCHAR(max))s+Source column type XML was migrated to TEXTs!SQL-92 migrateTableColumnsToMySQLs#Can't find datatype %s for type %s s<Could not migrate column "%s" in "%s": Unknown datatype "%s"s%s as ?scolumnTypeCastExpression:%ss2Could not migrate type of column "%s" in "%s" (%s)(sVARCHARsNVARCHAR(sCHARsNCHAR(sBIGINTsINTsSMALLINT(sDECIMALsNUMERIC(sREALsFLOATiiiiii(sBITs BIT VARYING(t targetCatalogtdicttsimpleDatatypesR9tuserTypet actualTypetflagstextendRRR<tlengthR t majorNumbert precisionR;thas_keytgrtt log_warningRtFalset customDataRtformattedRawType( RRR>R?RPtmysql_simpleTypest source_typettype_cast_expressionRBttarget_datatype((s$..\modules\db_sql92_migration_grt.pytmigrateDatatypeForColumnKsž                                           cCs.|r$|jd||d|ƒdS||fS(Nis(Collation %s migrated to utf8_general_ciR5tutf8_general_ci(R5Re(R;(RRtcharsett collationt source_objectt target_object((s$..\modules\db_sql92_migration_grt.pyR·s  (t__name__t __module__R RDRdR(((s$..\modules\db_sql92_migration_grt.pyR s  & lcCsdS(NtSql92((((s$..\modules\db_sql92_migration_grt.pytgetTargetDBMSNameÂscCstj||ƒS(N(tinstancetmigrateIdentifier(Rtlog((s$..\modules\db_sql92_migration_grt.pyRoÆscCstj||ƒS(N(RntmigrateCatalog(Rtsource_catalog((s$..\modules\db_sql92_migration_grt.pyRqËscCstj|||ƒS(N(Rnt migrateSchema(Rt sourceSchemaRP((s$..\modules\db_sql92_migration_grt.pyRsÐscCstj|||ƒS(N(RnR (RRt target_schema((s$..\modules\db_sql92_migration_grt.pyR ÕscCstj|||ƒS(N(RntmigrateTableToMySQL2ndPass(RRR((s$..\modules\db_sql92_migration_grt.pyRvÚscCstj|||ƒS(N(RntmigrateTableForeignKeyToMySQL(Rt source_fkR((s$..\modules\db_sql92_migration_grt.pyRwßscCstj|||ƒS(N(RntmigrateTriggerToMySQL(Rtsource_triggert target_table((s$..\modules\db_sql92_migration_grt.pyRyäscCstj|||ƒS(N(RntmigrateViewToMySQL(Rt source_viewRu((s$..\modules\db_sql92_migration_grt.pyR|éscCstj|||ƒS(N(RntmigrateRoutineToMySQL(Rtsource_routineRu((s$..\modules\db_sql92_migration_grt.pyR~îscCs"tjtjtjjjƒ}|S(N(R[tListtOBJECTtclassestdb_migration_MigrationParametert__grtclassname__(Rtlist((s$..\modules\db_sql92_migration_grt.pytgetMigrationOptionsós(.RtwbRtworkbench.utilsRRR[tdb_generic_migration_grtRRRRt ModuleInfottruncated_identifier_serialR RntexporttSTRINGRmR‚t GrtLogObjectRot db_Catalogtdb_migration_MigrationRqt db_SchemaRstdb_TableR R Rvtdb_mysql_ForeignKeyt db_ForeignKeyRwtdb_mysql_Triggert db_TriggerRyt db_mysql_Viewtdb_ViewR|tdb_mysql_Routinet db_RoutineR~tLISTRƒR†(((s$..\modules\db_sql92_migration_grt.pyts&  "¡ *09969999