
    Ki                        S SK r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJ	r	  SS
KJ
r
  SSKJr  SSKJr  \
R                  " SS5      S 5       r
\R                  " SS5      S 5       r\R                  " SS5      S 5       r\	R                  " SS5      S 5       r\R                  " SS5      S 5       r\R                  " S5      SSS.S j5       r\R                  " SS5      S 5       r\R                  " S5      S 5       rg)    N   )event)exc)allow_stale_update_impl)configure_follower)	create_db)delete_from_all_tables)drop_db)generate_driver_url)temp_table_keyword_args)upsertmysqlmariadbc                    U R                  5       nUS:X  a(  U R                  5       nUR                  U 5      (       a  SnU R                  U< SU< 3S9R	                  U5      nUS:X  a  UR                  S/5      nOUS:X  a  UR                  S/5      n UR                  5         U$ ! [        R                   a     g f = f)	Nr   r   +)
drivernamemariadbconnectorcharsetmysqlconnector)	collationutf8mb4_general_ci)	get_backend_nameget_dialect_is_mariadb_from_urlsetupdate_query_stringdifference_update_queryupdate_query_pairsr   NoSuchModuleError)urldriver	query_strbackenddialect_clsnew_urls         e/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/sqlalchemy/dialects/mysql/provision.pyr   r      s    ""$G 'oo'++C00Ggg%v.  )$  ##119+>	#	#,,01
     s   B( (B?>B?c                 ^   UR                  5        n [        XU5        S S S 5        UR                  5        nUR                  SU-  5        UR                  SU-  5        UR                  SU-  5        S S S 5        g ! [         a     Njf = f! , (       d  f       Nt= f! , (       d  f       g = f)Nz(CREATE DATABASE %s CHARACTER SET utf8mb4z4CREATE DATABASE %s_test_schema CHARACTER SET utf8mb4z6CREATE DATABASE %s_test_schema_2 CHARACTER SET utf8mb4)begin_mysql_drop_db	Exceptionexec_driver_sqlcfgengidentconns       r&   _mysql_create_dbr1   >   s    		3e, 
 
6>	
 	BUJ	
 	DuL	
 
  		 
 
s3   BA==B=
B
B	B

B
B
B,c                 ,    SU-  U l         SU-  U l        g )Nz%s_test_schemaz%s_test_schema_2)test_schematest_schema_2)configr/   s     r&   _mysql_configure_followerr6   R   s    )E1F-5F    c                     UR                  5        nUR                  SU-  5        UR                  SU-  5        UR                  SU-  5        S S S 5        g ! , (       d  f       g = f)NzDROP DATABASE %s_test_schemazDROP DATABASE %s_test_schema_2zDROP DATABASE %s)r(   r+   r,   s       r&   r)   r)   X   sS    	;eCD=EF/%78 
s   =A
A%c                     SS/0$ )Nprefixes	TEMPORARY )r-   r.   s     r&   _mysql_temp_table_keyword_argsr=   `   s    &&r7   F)
set_lambdasort_by_parameter_orderc                   SSK Jn  U" U5      nU(       a#  UR                  " S0 U" UR                  5      D6nO6UR                  R
                  S   nUR                  UR                  U05      nUR                  " USU06nU$ )Nr   )insertr?   r<   )sqlalchemy.dialects.mysqlrA   on_duplicate_key_updateinsertedprimary_keyckey	returning)r-   tablerH   r>   r?   rA   stmtpk1s           r&   _upsertrL   e   s}     1%=D++Hj.GH!!!$++SWWcN;>>	,CD Kr7   c                     U R                  S5         [        R                  " XU5        U R                  S5        g ! U R                  S5        f = f)NzSET foreign_key_checks = 0zSET foreign_key_checks = 1)r+   r	   call_original)
connectionr-   metadatas      r&   _delete_from_all_tablesrQ   y   sF    ;<A,,ZhG""#?@
""#?@s	   < Ac                 D   ^  [         R                  U 4S j5       nU" 5       $ )Nc               3   `  >#    [         R                  " TR                  S5      S 5       n  S v   [         R                  " TR                  SU 5        TR                  R	                  5         g ! [         R                  " TR                  SU 5        TR                  R	                  5         f = f7f)Nengine_connectc                 F    U R                  S5        U R                  5         g )Nz%SET innodb_snapshot_isolation = 'OFF')r+   rollback)r0   s    r&   turn_off_snapshot_isolationI_allow_stale_update_impl.<locals>.go.<locals>.turn_off_snapshot_isolation   s      !HIMMOr7   )r   listens_fordbremovedispose)rW   r-   s    r&   go$_allow_stale_update_impl.<locals>.go   s     			366#3	4	 
5		LL!13NO FFNN LL!13NO FFNNs   (B.A- =B.->B++B.)
contextlibcontextmanager)r-   r]   s   ` r&   _allow_stale_update_implra      s$      4Kr7   )r_    r   r   testing.provisionr   r   r   r	   r
   r   r   r   for_dbr1   r6   r)   r=   rL   rQ   ra   r<   r7   r&   <module>re      s0      8 3 * 7 ( 4 8 ' GY/$ 0$N '9%
 &
& 7I.6 /6
 	#9 $9 3' 4' y)-u & w	2A 3A 	* +r7   