§
    
 @gw  ã                   óL  — d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  e	j        d¦  «        d„ ¦   «         Z ej        d¦  «        d„ ¦   «         Zd„ Z ej        d¦  «        d„ ¦   «         Z e
j        d¦  «        d„ ¦   «         Z ej        d¦  «        d„ ¦   «         Z ej        d¦  «        d„ ¦   «         Zd"d„Z e¦   «         Z ej        d¦  «        d„ ¦   «         Z  ej        d¦  «        d„ ¦   «         Z! ej        d¦  «        d„ ¦   «         Z" ej        d¦  «        d„ ¦   «         Z# ej        d¦  «        d „ ¦   «         Z$ ej        d¦  «        d!„ ¦   «         Z%dS )#é   )Ú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_optsÚoraclec                 ó@  — |                      ¦   «         5 }|                     d|z  ¦  «         |                     d|z  ¦  «         |                     d|z  ¦  «         |                     d|›�¦  «         |                     d|z  ¦  «         |                     d|z  ¦  «         |                     d|z  ¦  «         |                     d|z  ¦  «         |                     d	|z  ¦  «         |                     d
|z  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzcreate 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_ts2zgrant create table to %szgrant create table to %s_ts1zgrant create table to %s_ts2)ÚbeginÚexec_driver_sql©ÚcfgÚengÚidentÚconns       úX/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/dialects/oracle/provision.pyÚ_oracle_create_dbr      sŒ  € ð
 
�Š‰Œð E˜Ø×ÒÐ>ÀÑFÑGÔGÐGØ×ÒÐBÀUÑJÑKÔKÐKØ×ÒÐBÀUÑJÑKÔKÐKØ×ÒÐ°%°%Ð9Ñ:Ô:Ð:Ø×ÒÐ?À%ÑGÑHÔHÐHØ×ÒÐCÀeÑKÑLÔLÐLØ×ÒÐCÀeÑKÑLÔLÐLà×ÒÐ7¸%Ñ?Ñ@Ô@Ð@Ø×ÒÐ;¸eÑCÑDÔDÐDØ×ÒÐ;¸eÑCÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Es   •C1DÄDÄDc                 ó.   — d|z  | _         d|z  | _        d S ©Nú%s_ts1ú%s_ts2)Útest_schemaÚtest_schema_2)Úconfigr   s     r   Ú_oracle_configure_followerr&   )   s"   € à! EÑ)€FÔØ# eÑ+€FÔÐÐó    c                 óÆ   — 	 |                       d|z  ¦  «         t          j        d|¦  «         dS # t          j        $ r }t          j        d|¦  «         Y d }~dS d }~ww xY w)Nzdrop user %s cascadezReaped db: %sTzcouldn't drop db: %sF)r   r   Úinfor   ÚDatabaseErrorÚwarning)r   ÚdbnameÚerrs      r   Ú_ora_drop_ignorer.   /   sz   € ðØ×ÒÐ3°fÑ<Ñ=Ô=Ð=ÝŒ� &Ñ)Ô)Ð)ØˆtøÝÔð ð ð ÝŒÐ*¨CÑ0Ô0Ð0Øˆuˆuˆuˆuˆuøøøøðøøøs   ‚-1 ±A Á AÁA c                 óN   — t          |¦  «         t          || j        ¦  «         d S ©N)Ú_purge_recyclebinr#   ©r   r   s     r   Ú'_ora_drop_all_schema_objects_pre_tablesr3   9   s(   € å�cÑÔÐÝ�c˜3œ?Ñ+Ô+Ð+Ð+Ð+r'   c           	      óì  — |                      ¦   «         5 }|j                             |d d d ¦  «        D ] }|                     d|d         › �¦  «         Œ!|j                             || j        d d ¦  «        D ](}|                     d| j        › d|d         › �¦  «         Œ)t          |¦  «                             ¦   «         D ]}|                     d|› �¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzdrop synonym Úsynonym_nameú.zdrop table )r   ÚdialectÚ_get_synonymsr   r#   r   Úget_temp_table_names)r   r   r   ÚsynÚ	tmp_tables        r   Ú(_ora_drop_all_schema_objects_post_tablesr<   ?   sj  € à	�Š‰Œð <˜Ø”<×-Ò-¨d°D¸$ÀÑEÔEð 	Hð 	HˆCØ× Ò Ð!F°°^Ô1DÐ!FÐ!FÑGÔGÐGÐGà”<×-Ò-Ø�#”/ 4¨ñ
ô 
ð 	ð 	ˆCð × Ò ØG ¤ÐGÐG°#°nÔ2EÐGÐGñô ð ð õ ! ™œ×;Ò;Ñ=Ô=ð 	<ð 	<ˆIØ× Ò Ð!:¨yÐ!:Ð!:Ñ;Ô;Ð;Ð;ð	<ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   •CC)Ã)C-Ã0C-c                 óÌ   — |                      ¦   «         5 }t          ||¦  «         t          |d|z  ¦  «         t          |d|z  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r    )r   r.   r   s       r   Ú_oracle_drop_dbr>   P   s­   € à	�Š‰Œð 1˜õ 	˜˜uÑ%Ô%Ð%Ý˜˜x¨%Ñ/Ñ0Ô0Ð0Ý˜˜x¨%Ñ/Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s   •7AÁAÁ Ac                 ó0  — 	 t          |¦  «         n1# t          j        $ r}t          j        d|¦  «         Y d }~nd }~ww xY wt
          D ]2}	 |j        }d|_        ||_        Œ# |j        j        j	        $ r Y Œ/w xY wt
           
                    ¦   «          d S )Nz#purge recyclebin command failed: %sé    )r1   r   r*   r   r+   Ú
_all_connsÚstmtcachesizer7   ÚdbapiÚInterfaceErrorÚclear)r%   ÚdbÚclsr-   Úcx_oracle_connÚscs         r   Ú%_ora_stop_test_class_outside_fixturesrJ   ]   sØ   € ð@Ý˜"ÑÔÐÐøÝÔð @ð @ð @ÝŒÐ9¸3Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?øøøøð@øøøõ %ð .ð .ˆð	.ØÔ-ˆBð
 ,-ˆNÔ(Ø+-ˆNÔ(Ð(øð ŒzÔÔ.ð 	ð 	ð 	àˆDð	øøøõ ×ÒÑÔÐÐÐs$   ‚ ’A ¡;»A ÁA#Á#A:Á9A:Nc                 ó`  — |                       ¦   «         5 }|€|                     d¦  «         nh|                     dd|j                             |¦  «        i¦  «                             ¦   «         D ]%\  }}}|                     d|› d|› d|› d�¦  «         Œ&d d d ¦  «         d S # 1 swxY w Y   d S )Nzpurge recyclebinzWselect owner, object_name,type from dba_recyclebin where owner=:schema and type='TABLE'Úschemazpurge ú z."ú")r   r   r7   Údenormalize_nameÚall)r   rL   r   ÚownerÚobject_nameÚtype_s         r   r1   r1   s   s+  € Ø	�Š‰Œð O˜Øˆ>ð × Ò Ð!3Ñ4Ô4Ð4Ð4ð .2×-AÒ-AðFà˜4œ<×8Ò8¸Ñ@Ô@ÐAñ.ô .÷ Šc‰eŒeð	Oð OÑ)��{ Eð
 ×$Ò$Ð%M¨eÐ%MÐ%M°eÐ%MÐ%M¸{Ð%MÐ%MÐ%MÑNÔNÐNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os   •BB#Â#B'Â*B'c                 óŽ   — ddl m} |                     |d¦  «        d„ ¦   «         }|                     |d¦  «        d„ ¦   «         }d S )Nr@   )ÚeventÚcheckoutc                 ó:   — t                                | ¦  «         d S r0   )rA   Úadd)Ú	dbapi_conÚ
con_recordÚ	con_proxys      r   rV   z/_oracle_post_configure_engine.<locals>.checkoutŠ   s   € å�Š�yÑ!Ô!Ð!Ð!Ð!r'   Úcheckinc                 óD   — d|j         v r|                     ¦   «          d S d S )NÚcx_oracle_xid)r)   Ú
invalidate)Údbapi_connectionÚconnection_records     r   r\   z._oracle_post_configure_engine.<locals>.checkinŽ   s3   € ð
 Ð/Ô4Ð4Ð4Ø×(Ò(Ñ*Ô*Ð*Ð*Ð*ð 5Ð4r'   )Ú
sqlalchemyrU   Úlistens_for)r   ÚengineÚfollower_identrU   rV   r\   s         r   Ú_oracle_post_configure_enginerf   †   st   € à Ð Ð Ð Ð Ð à
×Ò�v˜zÑ*Ô*ð"ð "ñ +Ô*ð"ð ×Ò�v˜yÑ)Ô)ð+ð +ñ *Ô)ð+ð +ð +r'   c                 óî  — t          j        d| ¦  «         t          | ¦  «        }|                     ¦   «         5 }t          j        dd                     |¦  «        ¦  «         |                     d¦  «        }d„ |D ¦   «         }t          ¦   «         }|D ]„}|                     d¦  «        s|                     d¦  «        rŒ-||v rS|                     |¦  «         d|z  |v r|                     d|z  ¦  «         d	|z  |v r|                     d	|z  ¦  «         Œ…d
x}}	t          |d¦  «        D ]\  }	}
t          ||
¦  «        r|dz  }Œt          j        d||	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzdb reaper connecting to %rzidentifiers in file: %sz, z‰select u.username from all_users u where username like 'TEST_%' and not exists (select username from v$session where username=u.username)c                 ó:   — h | ]\  }|                      ¦   «         ’ŒS © )Úlower)Ú.0Úusernames     r   ú	<setcomp>z#_reap_oracle_dbs.<locals>.<setcomp>£   s$   € ÐAÐAÐA©+¨8�X—^’^Ñ%Ô%ÐAÐAÐAr'   Ú_ts1Ú_ts2r!   r"   r@   é   z-Dropped %d out of %d stale databases detected)r   r)   r   r   Újoinr   ÚsetÚendswithrX   Ú	enumerater.   )r   Úidentsr   r   Úto_reapÚ	all_namesÚto_dropÚnameÚdroppedÚtotalrl   s              r   Ú_reap_oracle_dbsr|   —   sæ  € å„HÐ)¨3Ñ/Ô/Ð/Ý
˜Ñ
Ô
€CØ	�Š‰Œð 
˜ÝŒÐ*¨D¯IªI°fÑ,=Ô,=Ñ>Ô>Ð>à×&Ò&ð8ñ
ô 
ˆð
 BÐA¸ÐAÑAÔAˆ	Ý‘%”%ˆØð 	1ð 	1ˆDØ�}Š}˜VÑ$Ô$ð 1¨¯ª°fÑ(=Ô(=ð 1ØØ˜��Ø—’˜DÑ!Ô!Ð!Ø˜d‘? iÐ/Ð/Ø—K’K ¨4¡Ñ0Ô0Ð0Ø˜d‘? iÐ/Ð/Ø—K’K ¨4¡Ñ0Ô0Ð0øàÐˆ�%Ý(¨°!Ñ4Ô4ð 	ð 	‰OˆE�8Ý  hÑ/Ô/ð Ø˜1‘�øÝŒØ;¸WÀeñ	
ô 	
ð 	
ð1
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ¹D$E*Å*E.Å1E.c                 óX   — t          j        | ¦  «        } |                      |d¬¦  «        S )NÚxe)rl   Úpassword)Úsa_urlÚmake_urlrr   )r   r   s     r   Ú_oracle_follower_url_from_mainr‚   ¸   s'   € å
Œ/˜#Ñ
Ô
€CØ�7Š7˜E¨Dˆ7Ñ1Ô1Ð1r'   c                 ó   — dgddœS )NzGLOBAL TEMPORARYzPRESERVE ROWS)ÚprefixesÚoracle_on_commitri   r2   s     r   Ú_oracle_temp_table_keyword_argsr†   ¾   s   € ð (Ð(Ø+ðð ð r'   c                 ó†   — |                      ¦   «         }|                     d|z  ¦  «         |                     ¦   «          d S )Nz#ALTER SESSION SET CURRENT_SCHEMA=%s)ÚcursorÚexecuteÚclose)r   r`   Úschema_namerˆ   s       r   Ú(_oracle_set_default_schema_on_connectionrŒ   Æ   s>   € ð ×$Ò$Ñ&Ô&€FØ
‡N‚NÐ8¸;ÑFÑGÔGÐGØ
‡L‚L�N„N€N€N€Nr'   c                 óz   — |j         r1t          j        | ¦  «                             ¦   «         dk    r	d|d<   dS dS dS )zCSet database options (db_opts) for a test database that we created.ÚoracledbTÚ
thick_modeN)Úoracledb_thick_moder€   r�   Úget_driver_name)Údb_urlÚdb_optsÚoptionss      r   Ú_update_db_optsr•   Ï   sP   € ð 	Ô#ð%åŒO˜FÑ#Ô#×3Ò3Ñ5Ô5¸ÒCÐCà $ˆ�ÑÐÐð	%ð %àCÐCr'   r0   )&Ú r   r   r   rd   r   r€   Útesting.provisionr   r   r	   r
   r   r   r   r   r   r   r   r   r   Úfor_dbr   r&   r.   r3   r<   r>   rJ   r1   rr   rA   rf   r|   r‚   r†   rŒ   r•   ri   r'   r   ú<module>r™      sn  ðð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø *Ð *Ð *Ð *Ð *Ð *Ø DÐ DÐ DÐ DÐ DÐ DØ CÐ CÐ CÐ CÐ CÐ CØ (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø $Ð $Ð $Ð $Ð $Ð $Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø -Ð -Ð -Ð -Ð -Ð -Ø AÐ AÐ AÐ AÐ AÐ AØ AÐ AÐ AÐ AÐ AÐ AØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø /Ð /Ð /Ð /Ð /Ð /ð €Ô�(ÑÔðEð Eñ ÔðEð$ ÐÔ˜8Ñ$Ô$ð,ð ,ñ %Ô$ð,ð
ð ð ð +Ð#Ô*¨8Ñ4Ô4ð,ð ,ñ 5Ô4ð,ð
 ,Ð$Ô+¨HÑ5Ô5ð<ð <ñ 6Ô5ð<ð  €„�ÑÔð	1ð 	1ñ Ôð	1ð )Ð!Ô(¨Ñ2Ô2ðð ñ 3Ô2ðð*Oð Oð Oð Oð  ˆS‰UŒU€
ð ÐÔ˜hÑ'Ô'ð+ð +ñ (Ô'ð+ð  €Ô�XÑÔð
ð 
ñ Ôð
ð@ ÐÔ˜xÑ(Ô(ð2ð 2ñ )Ô(ð2ð
  ÐÔ Ñ)Ô)ðð ñ *Ô)ðð )Ð!Ô(¨Ñ2Ô2ðð ñ 3Ô2ðð €Ô�xÑ Ô ð%ð %ñ !Ô ð%ð %ð %r'   