@Qc@sddlZddlmZddlmZmZddlZddlmZeddddd d Z d efd YZ e Z e j ej d Ze j ej ej ejjdZe j ejjejjejjdZe j ejjejjejjejjdZe j ejjejjejjejjdZe j ejejjejjejjdZe j ejjejjejjejjdZe j ejjejjejjejjdZ e j ejj!ejjejj"ejjdZ#e j ejj$ejjejj%ejjdZ&e j ej'ejj(fejjdZ)dS(iN(t DefineModule(tfind_object_with_nametfind_object_with_old_name(tSql92MigrationtnametDbPostgresqlMigrationtauthors Oracle Corp.tversions1.0tPostgresqlMigrationcBs#eZdZdZdZRS(c s|j}|j}|jjj}|}ddddgtfddddd gtfd d d d dddgdfddgfdfdgfdfdgfdfdgfdfdgfdfg} tjd} d} |jr3|jj} |r3| j|} | r|jr|jj jdkrt |j | j d} | r|j rt d |j jDnt }|j|kryt| j}Wntk rnX|dkr| j|j_nd|_nd!Sn|jj jdkr0|jd"}q0q3n|rd#|kr^|jd#dd$}n|}xP| D]E}| |d$krky|d|Wn1tk rd!}|jd||d%|qX|jr|jjpd!}| dkr'|j}|d&krd'}q|d(krd)}qq| dkr|jd*kr|jj|jj|jjfd/kr|dkrd-}qd!}|jd||d.|qd-}qqkqkWn|S(0NcSs5tj||dkr1td||fntS(Ns/"%s" does not match the regular expression "%s"(tretmatchtNonet ValueErrortTrue(tre_strttarget((s)..\modules\db_postgresql_migration_grt.pytraise_on_no_match&stSMALLINTtINTtBIGINTtNUMERICtDECIMALtFLOATtREALsDOUBLE PRECISIONtCHARtVARCHARtNCHARtNVARCHARtBLOBtCLOBtXMLcSstS(N(R (t_((s)..\modules\db_postgresql_migration_grt.pyt.stBITs BIT VARYINGcs d|S(Ns[Bb]?'?[10]+'?((tval(R(s)..\modules\db_postgresql_migration_grt.pyR /stDATEcs d|S(Ns(\d{4}|\d{2})-\d{1,2}-\d{1,2}((R"(R(s)..\modules\db_postgresql_migration_grt.pyR 0stTIMEcs d|S(Ns"(\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2}((R"(R(s)..\modules\db_postgresql_migration_grt.pyR 1st TIMESTAMPcsd|jS(NsR((\d{4}|\d{2})-\d{1,2}-\d{1,2}( (\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2})?|NULL|NOW\(\))(tupper(R"(R(s)..\modules\db_postgresql_migration_grt.pyR 2stBOOLEANcsd|jS(Ns(TRUE|FALSE|NULL)(R&(R"(R(s)..\modules\db_postgresql_migration_grt.pyR 4ssnextval[(]'(.*?)'::regclass[)]tnumericicss|]}|jjVqdS(N(treferencedColumnR(t.0tcolumn((s)..\modules\db_postgresql_migration_grt.pys Asts' s::is+Default value %s is not supported. Removed!tTRUEt1tFALSEt0sNOW()iitCURRENT_TIMESTAMPsMDefault value now() is not supported for a MySQL column of type "%s".Removed!(iii(townertinttfloatR tcompileR t simpleTypeRR tgroupRt sequencest primaryKeytsettcolumnst startValueR t nextAutoInct autoIncrementtstriptsplitt ExceptiontaddMigrationLogEntryR&Rt majorNumbert minorNumbert releaseNumber(tselftstatet default_valuet source_columnt target_columnt source_tablet source_schemattarget_catalogttarget_default_valuetvalue_validatorst seq_regextsource_datatypeR tseqtpk_colststarttvalue_validatorttarget_datatypeR"((Rs)..\modules\db_postgresql_migration_grt.pytmigrateColumnDefaultValues|   !  $.            '  c Cs|j}td|jD}|j}| r|jr|jj}| r|jjjdr|d|_|jjd|_t S|j j |jj nd}|rR|j j}d} |dkrAd|jkodknrd} qd|jkod knr8|jjd kr/d } q>d} qd } n|d krn|jdkred } qd } nS|dHkr|} d|_n5|dkrd} d|_n|dkrd} d|_n|dkrd} d|_n|dIkrd} n|dkr"d} d|_d|_n|dkr7d} n|dkrLd} nu|d krad!} n`|d"krvd } nK|d#krd$} n6|d%krd%} n!|d&krd&} n |d'krd&} |jd||d(n|dJkrd)} n|d+krd,} d|_d-}n|d.kr7d} d/|_n|d0krUd} d/|_nl|d1krsd} d2|_nN|d3krd} d4|_n0|dKkrd } n|dLkrd} n|} |j| r|| |_nJtjdBdC| |f|jd||dD|j |jj |ftS|rNdE||jjdF|j yssenum(tENUMiR,Riiiit MEDIUMTEXTtLONGTEXTRRRRit SMALLSERIALitSERIALtINTEGERt BIGSERIALRRtMONEYiiRRsDOUBLE PRECISIONtDOUBLEtBYTEAtLONGBLOBtTEXTR%tDATETIMER#R$tINTERVALs0Source column type INTERVAL was migrated to TIMER!s BIT VARYINGR'tTINYINTsCASE WHEN ? THEN 1 ELSE 0 ENDtCIDRi+tINETtMACADDRitUUIDi$RtJSONtTSVECTORtTSQUERYtARRAYtPOINTtLINEtLSEGtBOXtPATHtPOLYGONtCIRCLEt TXID_SNAPSHOTs%PostgreSQL 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)(sSMALLINTsINTsBIGINT(sDECIMALsNUMERIC(sBITs BIT VARYING(sXMLRlRmRnRo(RpRqRrRssPATHRuRvRw(t targetCatalogtdicttsimpleDatatypesR6tuserTypet actualTypet sqlDefinitiont startswithtdatatypeExplicitParamsR tflagstextendR RR&tlengthRRCt precisionR>tscaleRBthas_keytgrtt log_warningR2tFalset customDatatformattedRawType( RFRGRIRJRxtmysql_simpleTypest source_typettype_cast_expressionRQRV((s)..\modules\db_postgresql_migration_grt.pytmigrateDatatypeForColumnvs                                                           cCstt|j|||}|rxyt|j|jD]_\}}|j|jksj|j|jkr|jd||d|j j |j |j j |j |j |j |j f|j|jkrd|jj |j j d|j s$   *09969999