L iy ,ddlmZddlmZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZe j*ddZej*ddZdZe j*ddZe j*ddZe j*ddZej*ddZd"dZeZej*ddZ ej*ddZ!e j*ddZ"ej*ddZ#ej*dd Z$ej*dd!Z%y)#) create_engine)exc)inspect)url)configure_follower) create_db)#drop_all_schema_objects_post_tables)"drop_all_schema_objects_pre_tables)drop_db)follower_url_from_main)log)post_configure_engine) run_reap_dbs) set_default_schema_on_connection) stop_test_class_outside_fixtures)temp_table_keyword_args)update_db_optsoraclec|j5}|jd|z|jd|z|jd|z|jd||jd|z|jd|z|jd|z|jd|z|jd |z|jd |zdddy#1swYyxYw) Nzcreate user %s identified by xez#create user %s_ts1 identified by xez#create user %s_ts2 identified by xez grant dba to z grant unlimited tablespace to %sz$grant unlimited tablespace to %s_ts1z$grant unlimited tablespace to %s_ts2zgrant create table to %szgrant create table to %s_ts1zgrant create table to %s_ts2)beginexec_driver_sqlcfgengidentconns j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/dialects/oracle/provision.py_oracle_create_dbrs  E >FG BUJK BUJK %9: ?%GH CeKL CeKL 7%?@ ;eCD ;eCD E E Es C C##C,c,d|z|_d|z|_yN%s_ts1%s_ts2) test_schema test_schema_2)configrs r_oracle_configure_followerr&/s!E)F#e+Fc |jd|ztjd|y#tj$r }tj d|Yd}~yd}~wwxYw)Nzdrop user %s cascadez Reaped db: %sTzcouldn't drop db: %sF)rr infor DatabaseErrorwarning)rdbnameerrs r_ora_drop_ignorer.5sT 3f<= &)    *C0s*-A AA cFt|t||jyN)_purge_recyclebinr#rrs r'_ora_drop_all_schema_objects_pre_tablesr3?scc3??+r'c |j5}|jj|dddD]}|jd|d|jj||jddD]&}|jd|jd|d(t |j D]}|jd| dddy#1swYyxYw)Nz drop synonym synonym_name.z drop table )rdialect _get_synonymsrr#rget_temp_table_names)rrrsyn tmp_tables r(_ora_drop_all_schema_objects_post_tablesr<Es  <<<--dD$E HC  =^1D0E!F G H<<-- #//4  C  0#n2E1FG  !;;= CC"c|j5}t||t|d|zt|d|zdddy#1swYyxYwr )rr.rs r_oracle_drop_dbr>VsL 1 u%x%/0x%/0111s +AAcN t|t D]} |j }d|_||_t jy#tj$r }tjd|Yd}~id}~wwxYw#|jjj$rYwxYw)Nz#purge recyclebin command failed: %s) r1rr*r r+ _all_conns stmtcachesizer7dbapiInterfaceErrorclear)r%dbclsr-cx_oracle_connscs r%_ora_stop_test_class_outside_fixturesrJcs@"%. .--B ,-N (+-N (.   @ 93??@zz..   s( A A>A;A66A;>#B$#B$Nc 4|j5}||jdn_|jdd|jj|ij D]!\}}}|jd|d|d|d#dddy#1swYyxYw)Nzpurge recyclebinzWselect owner, object_name,type from dba_recyclebin where owner=:schema and type='TABLE'schemazpurge  z."")rrr7denormalize_nameall)rrLrowner object_nametype_s rr1r1ys  O >  !3 4.2-A-AF4<<88@A.ce  O){E $$veWAeWB{m1%MN  O O O Os A4BBcpddlm}|j|dd}|j|dd}y)Nr@)eventcheckoutc.tj|yr0)rAadd) dbapi_con con_record con_proxys rrVz/_oracle_post_configure_engine..checkoutsy!r'checkincBd|jvr|jyy)N cx_oracle_xid)r) invalidate)dbapi_connectionconnection_records rr\z._oracle_post_configure_engine..checkins$ /44 4  ( ( * 5r') sqlalchemyrU listens_for)renginefollower_identrUrVr\s r_oracle_post_configure_enginerfsE  vz*"+" vy)+*+r'ctjd|t|}|j5}tjddj ||j d}|Dchc]\}|j }}t}|D]r}|jds|jdr&||vs+|j|d|z|vr|jd|zd|z|vs_|jd|ztd x} } t|d D]\} }t||s| d z } tjd | | dddycc}w#1swYyxYw) Nzdb reaper connecting to %rzidentifiers in file: %sz, zselect u.username from all_users u where username like 'TEST_%' and not exists (select username from v$session where username=u.username)_ts1_ts2r!r"r@z-Dropped %d out of %d stale databases detected) r r)rrjoinrlowersetendswithrX enumerater.) ridentsrrto_reapusername all_namesto_dropnamedroppedtotals r_reap_oracle_dbsrxs[HH )3/  C   *DIIf,=>&& 8  :AA+8X^^%A A% 1D}}V$ f(= D!d?i/KK40d?i/KK40 1%(!4 OE8h/1    ;We 1  B  s/;E-E8E?3E38E,EEE!cRtj|}|j|dS)Nxe)rrpassword)sa_urlmake_urlrm)rrs r_oracle_follower_url_from_mainr~s# //# C 77ED7 11r'cdgddS)NzGLOBAL TEMPORARYz PRESERVE ROWS)prefixesoracle_on_commitr2s r_oracle_temp_table_keyword_argsrs((+ r'cl|j}|jd|z|jy)Nz#ALTER SESSION SET CURRENT_SCHEMA=%s)cursorexecuteclose)rr` schema_namers r(_oracle_set_default_schema_on_connectionrs- $ $ &F NN8;FG LLNr'cv|jr-tj|jdk(rd|d<yyy)zCSet database options (db_opts) for a test database that we created.oracledbT thick_modeN)oracledb_thick_moder|r}get_driver_name)db_urldb_optsoptionss r_update_db_optsrs< ## OOF # 3 3 5 C $  D $r'r0)&rrrrdrr|testing.provisionrrr r r r r rrrrrrfor_dbrr&r.r3r<r>rJr1rmrArfrxr~rrrrr'rrs#3*DC(7$6-AA8/(EE$8$,%, +#**84,5, ,$++H5 <6 <  1 1)!((23* O U h' +( + X  @x(2)2  )*)!((23x %!%r'