XׯdIddlZddlmZddlmZddlZddlmZddlm Z eddd Z Gd d eZ e Z e ejd Ze ejejejjd Ze ejjejjejjdZe ejjejjejjejjdZe ejjejjejjejjdZe ejejjejjejjdZe ejjejjejjejjdZe ejjejjejj ejjdZ!e ejj"ejjejj#ejjdZ$e ejj%ejjejj&ejjdZ'e ejjejjejjdZ(e ej)ejj*fejjdZ+dS)N) DefineModule)find_object_with_name)Sql92Migration)GenericMigrationDbPostgresqlMigrationz Oracle Corp.z1.0)nameauthorversionc0eZdZdZdZdZfdZxZS)PostgresqlMigrationc |j}|j}|jjj}|}dgdtfgdtfgddfddgfdfd gfd fd gfd fd gfdfdgfdfg} tjd} d} |jr|jj} |r| |} | r|jr|jjjdkrt|j | d} | r|j r#td|j j Dn t}|j|vrD t| j}|dkr| j|j_n#t $rYnwxYwd|_dS|jjjdkr|d}|r d|vr|ddd}|}| D]}| |dvr |d||jr |jjpd}| dkr&|}|dkrd}V|dkrd}_| d krh|dkrP|jj|jj|jjfdkr'|d krd}d}|d||d |zd}#t4$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_postgresql_migration_grt.pyraise_on_no_matchzHPostgresqlMigration.migrateColumnDefaultValue..raise_on_no_match+s<x''/ jV\V\V\^d^d^d!efff4SMALLINTINTBIGINT)NUMERICDECIMALFLOATREALDOUBLE PRECISION)CHARVARCHARNCHARNVARCHARBLOBCLOBXMLcdS)NT)_s rz?PostgresqlMigration.migrateColumnDefaultValue..3sW[rBIT BIT VARYINGcd|S)Nz[Bb]?'?[10]+'?r)valrs rr+z?PostgresqlMigration.migrateColumnDefaultValue..4s1B1BCTVY1Z1ZrDATEcd|S)Nz(\d{4}|\d{2})-\d{1,2}-\d{1,2}r)r/s rr+z?PostgresqlMigration.migrateColumnDefaultValue..5s#4#45UWZ#[#[rTIMEcd|S)Nz"(\d{1,2} )?\d{1,2}:\d{0,2}:\d{0,2}r)r/s rr+z?PostgresqlMigration.migrateColumnDefaultValue..6s#4#45Z\_#`#`r TIMESTAMPc@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?PostgresqlMigration.migrateColumnDefaultValue..7s)(9(9egjgpgpgrgr)t)trBOOLEANc@d|S)Nz(TRUE|FALSE|NULL)r7r/s rr+z?PostgresqlMigration.migrateColumnDefaultValue..9s&7&78Lciikk&Z&Zrznextval[(]'(.*?)'::regclass[)]numericc3.K|]}|jjVdSN)referencedColumnr).0columns r z@PostgresqlMigration.migrateColumnDefaultValue..Fs(%q%qvf&=&B%q%q%q%q%q%qrz' z::rTRUE1FALSE0zNOW())rHCURRENT_TIMESTAMPzMDefault value now() is not supported for a MySQL column of type "%s".Removed!z+Default value %s is not supported. Removed!)ownerintfloatrcompile simpleTyperrgroupr sequences primaryKeysetcolumns startValue nextAutoIncr autoIncrementstripsplitr8r majorNumber minorNumber releaseNumberaddMigrationLogEntry Exception)selfstate default_value source_column target_column source_table source_schematarget_catalogtarget_default_valuevalue_validators seq_regexsource_datatyperseqpk_colsstartvalue_validatortarget_datatyper0rs @rmigrateColumnDefaultValuez-PostgresqlMigration.migrateColumnDefaultValue$s=$* $* &,28,    + * *C 0 H H H% P L L Lmm \] #%Z%Z%Z%Z \X[[[[ ]X```` b]tttt v[ZZZZ \  J@AA   # >+6;O >! 66 "]5 "-:R:X:]aj:j:j/ 0GUVXXC "vBvM#X#%q%qQ]QhQp%q%q%q"q"q"qSVSXSX(-88U(+CN(;(;$)199FInM$7$C $.%%% $% ;$>q-Q^.}AP/P%Q%Q%Q%Q8K 4+%aaa/1,221m]"OR_"_aaaaaa98$#s$2E E+*E+J'K?Kc |j}td|jD}|j}|s|jry|jj}|sG|jjdr(|d|_|jjdd|_dS|j |jj |r |j }d}|dkrJd|j cxkrd krnnd}nod|j cxkrd krnn|jjd krd }nFd}nBd }n>|dkr|j d krd}n)d }n%|dvr |}d|_n|dkr d}d|_n|dkr d}d|_n|dkr d}d|_n|dvrd}n|dkrd}d|_d|_n|dkrd}n|dkrd }n|d!krd"}n|d#krd }n|d$krd%}n|d&krd&}n|d'krd'}n|d(krd'}|d||d)ng|d*vrd+}n`|d,kr d-}d|_ nP|d.kr d}d/|_ n@|d0kr d}d/|_ n0|d1kr d}d2|_ n |d3kr d}d4|_ n|d5vrd }n |d6vrd}n|}||vr|||_nOt)jd7d8|d9|d:|d||d;|j d<|jj d=|d>d?SdS|d||d@|j d<|jj dA|jdBd?S)CNc3LK|]}|j|fV dSr>)rr8)r@datatypes rrBz?PostgresqlMigration.migrateDatatypeForColumn..~s5 s s8=#6#6#8#8("C s s s s s srzenum(ENUMTrCr"rirH MEDIUMTEXTLONGTEXTr!r SMALLSERIALrr<SERIALINTEGER BIGSERIALr)rrrMONEYrrr DOUBLEBYTEALONGBLOBTEXTr5DATETIMEr1r3INTERVALz0Source column type INTERVAL was migrated to TIME)r,r-r,r9TINYINTCIDR+INETMACADDRUUID$)r'JSONTSVECTORTSQUERYARRAY)POINTLINELSEGBOXPATHPOLYGONCIRCLE TXID_SNAPSHOTz%PostgreSQL migrateTableColumnsToMySQLzCan't find datatype z for type  zCould not migrate column "z" in "z": Unknown datatype "rFz"Could not migrate type of column "z" ()) targetCatalogdictsimpleDatatypesrOuserType actualType sqlDefinition startswithdatatypeExplicitParamsflagsextendrr8lengthr rZ precisionrWscaler]grt log_warningrKformattedRawType) r_r`rbrcrmysql_simpleTypes source_typerjros rmigrateDatatypeForColumnz,PostgresqlMigration.migrateDatatypeForColumn{s+  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$)instancemigrateIdentifier)rlogs rrr2s  % %dC 0 00rc8t||Sr>)rmigrateCatalog)r`source_catalogs rrr7s  " "5. 9 99rc:t|||Sr>)r migrateSchema)r` sourceSchemars rrr<s  ! !%} E EErc:t|||Sr>)rmigrateTableToMySQL)r` sourceTable target_schemas rrrAs  ' '{M J JJrc:t|||Sr>)rmigrateTableToMySQL2ndPass)r`rrs rrrFs  . .uk; O OOrc:t|||Sr>)rr)r`rrs rrrKs  1 1%K P PPrc:t|||Sr>)rmigrateTriggerToMySQL)r`source_trigger target_tables rrrPs  ) )% N NNrc:t|||Sr>)rmigrateViewToMySQL)r` source_viewrs rrrUs  & &uk= I IIrc:t|||Sr>)rmigrateRoutineToMySQL)r`source_routiners rrrZs  ) )% O OOrc8t||Sr>)rr)r`rfs rrr_s  + +E> B BBrctjtjtjjj}tj}d|_d|_d|_| ||S)Nz%postgresql:migrateTimestampAsDatetimezeMigrate TIMESTAMP values as DATETIME by default. TIMESTAMP values in MySQL have a limited time range.boolean) rListOBJECTclassesdb_migration_MigrationParameter__grtclassname__rcaption paramTypeappend)r`listparams rgetMigrationOptionsrds\ 8CJ K \ ] ]D K 7 7 9 9E8EJ{EMEOKK Kr),rwbrworkbench.utilsrrdb_sql92_migration_grtrdb_generic_migration_grtr ModuleInfor rexportSTRINGrr GrtLogObjectr db_Catalogdb_migration_Migrationr db_Schemardb_Tablerrrdb_mysql_ForeignKey db_ForeignKeyrdb_mysql_Trigger db_Triggerr db_mysql_Viewdb_Viewrdb_mysql_Routine db_RoutinerrLISTrrr)rrrs, 111111 111111555555 \ 7Y^ _ _ _ GGGGG.GGGR    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