
    	h^                        d dl 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 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!  G d  d!ej"                  Z# G d" d#ej"                  Z$ G d$ d%ej%                  Z& G d& d'ej"                  Z' G d( d)ej%                  Z( G d* d+ej"                  Z) G d, d-ej"                  Z* G d. d/ej+        e*          Z, G d0 d1ej"                  Z- G d2 d3ej%                  Z.dS )4    N   )testing   )assert_raises)config)engines)eq_)fixtures)is_not_none)is_true)mock)ne_)provide_metadata)expect_raises)expect_raises_message)requirements) set_default_schema_on_connection)Column)Table   )	bindparam)dialects)event)exc)Integer)literal_column)select)String)Compiled)inspect_getfullargspecc                       e Zd ZdZd ZdS )PingTestTc                     t           j                                        5 }t          t           j        j                            |j        j                             d d d            d S # 1 swxY w Y   d S N)r   dbconnectr   dialectdo_ping
connectiondbapi_connection)selfconns     r/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_dialect.pytest_do_pingzPingTest.test_do_ping,   s    Z!! 	T
"**4?+KLL  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   <A((A,/A,N)__name__
__module____qualname____backend__r.        r-   r"   r"   )   s(        K    r4   r"   c                   t    e Zd ZdZd Z ej         e e                                d             Zd Z	dS )ArgSignatureTesta  test that all visit_XYZ() in :class:`_sql.Compiler` subclasses have
    ``**kw``, for #8988.

    This test uses runtime code inspection.   Does not need to be a
    ``__backend__`` test as it only needs to run once provided all target
    dialects have been imported.

    For third party dialects, the suite would be run with that third
    party as a "--dburi", which means its compiler classes will have been
    imported by the time this test runs.

    c               #     K   t           j        D ].} |                     d          st          j        d| z             /t
          g}|rD|                    d          }|                    |                                           |V  |Bd S d S )N_zsqlalchemy.dialects.%sr   )	r   __all__
startswith	importlibimport_moduler   popextend__subclasses__)dstackclss      r-   _all_subclassesz ArgSignatureTest._all_subclassesA   s      ! 	F 	FA<<$$ F'(@1(DEEE
 	))A,,CLL++--...III  	 	 	 	 	r4   )paramsc              #      K   |j         V  d S r$   )param)r+   requests     r-   all_subclasseszArgSignatureTest.all_subclassesM   s      mr4   c           	          |}|j         D ]W}|                    d          r@t          ||          }t          |          }t	          |j        d|j         d| d           Xd S )Nvisit_zCompiler visit method .z:() does not accommodate for **kw in its argument signature)__dict__r:   getattrr    r   varkwr/   )r+   rH   rB   kmethinsps         r-    test_all_visit_methods_accept_kwz1ArgSignatureTest.test_all_visit_methods_accept_kwQ   s     		 		A||H%% sA-d33JIS\ I IA I I I  		 		r4   N)
r/   r0   r1   __doc__rC   r   fixturelistrH   rR   r3   r4   r-   r6   r6   3   sy         
 
 
 W_DD!2!233444  54    r4   r6   c                   V    e Zd ZdZdZdZed             Zej	        d             Z
d ZdS )ExceptionTestzTest basic exception wrapping.

    DBAPIs vary a lot in exception behavior so to actually anticipate
    specific exceptions from real round trips, we need to be conservative.

    eachTc                     t          d|t          dt          dd          t          dt          d                               d S )N	manual_pkidTFprimary_keyautoincrementdata2   r   r   r   r   rB   metadatas     r-   define_tableszExceptionTest.define_tablesl   sK    4d%HHH66"::&&		
 	
 	
 	
 	
r4   c           	         t           j                                        5 }|                                }|                    | j        j                                        ddd           t          t          j
        |j        | j        j                                        ddd           |                                 d d d            d S # 1 swxY w Y   d S )Nr   d1r[   r_   )r   r%   r&   beginexecutetablesrZ   insertr   r   IntegrityErrorrollback)r+   r,   transs      r-   test_integrity_errorz"ExceptionTest.test_integrity_erroru   s   Y   	DJJLLELL%,,..q$0G0G   "%,,..$''	   NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BC

CCc                    t           j                                        5 }	 |                    t	          t          d                               J # t          j        $ r>}t          |          }t          |j	                  t          |          v sJ Y d }~nd }~ww xY wt          |t                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nu   méil)r   r%   r&   ri   r   r   r   
DBAPIErrorstrorig
isinstance)r+   r,   errerr_strs       r-   test_exception_with_non_asciiz+ExceptionTest.test_exception_with_non_ascii   s   Y   	,D1 VN7$;$;<<===u> 1 1 1c((38}}C0000000001
 gs++++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s4   C1AB!4BCBCCCN)r/   r0   r1   rS   run_deletesr2   classmethodrd   r   $duplicate_key_raises_integrity_errorro   rw   r3   r4   r-   rW   rW   `   sq          KK
 
 [
 6  76 , , , , ,r4   rW   c                       e Zd ZdZdZd Zd Zd Zd Ze	j
        j        d             Ze	j
        j        e	j
        j        d                         Ze	j
        j        d	             Zd
S )IsolationLevelTestTisolation_levelc                     t          j        t                    }|d         }|d         }t          |                              d|g          }|r|                                S t          j        d           d S )Ndefault	supported
AUTOCOMMITz(no non-default isolation level available)r   get_isolation_levelsr   set
differencer=   	skip_test)r+   levelsr   r   ss        r-    _get_non_default_isolation_levelz3IsolationLevelTest._get_non_default_isolation_level   sr    26::#;'		NN%%|W&=>> 	I5577NGHHHHHr4   c                     t          t          j        j        j        t          j        t                    d                    d S )Nr   )r	   r   r%   r'   default_isolation_levelr   r   )r+   s    r-   test_default_isolation_levelz/IsolationLevelTest.test_default_isolation_level   s<    I5-f55i@	
 	
 	
 	
 	
r4   c                    |                                  }t          j                                        5 }|                                }t          ||           |                    |           t          |                                |           |j        	                    |j
        j                   t          |                                |           d d d            d S # 1 swxY w Y   d S )Nr}   )r   r   r%   r&   get_isolation_levelr   execution_optionsr	   r'   reset_isolation_levelr)   r*   )r+   non_defaultr,   existings       r-    test_non_default_isolation_levelz3IsolationLevelTest.test_non_default_isolation_level   s   ;;==Y   	6D//11H+&&&"";"???((**K888L..0   ((**H555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   B#C##C'*C'c                    t          j        t                    }|d         }t          |                              dg          D ]}t          j                                        5 }|                    |           t          |	                                |           |
                                }|                                 t          |	                                |           d d d            n# 1 swxY w Y   t          j                                        5 }t          |	                                |d                    d d d            n# 1 swxY w Y   d S )Nr   r   r}   r   )r   r   r   r   r   r%   r&   r   r	   r   rh   rm   )r+   r   
all_levelslevelr,   rn   s         r-   test_all_levelsz"IsolationLevelTest.test_all_levels   s   26::K(
__//?? 	 	E""$$ 7&&u&===D,,..666

   D,,..6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ""$$ ,,..9%                	 	s%   &BC55C9	<C9	)EE	E	c                 "   |}t          t          j        ddd|j        j        dd                    t          j        t                    d                             5  |	                    d           ddd           dS # 1 swxY w Y   dS )	z4test for the new get_isolation_level_values() methodInvalid value 'FOO3' for isolation_level. Valid isolation levels for '' are , r   r}   N)
r   r   ArgumentErrorr'   namejoinr   r   r   r   )r+   connection_no_transr)   s      r-   #test_invalid_level_execution_optionz6IsolationLevelTest.test_invalid_level_execution_option   s     )
" "'''		 5f==kJ  
 
 	@ 	@ (((???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s    BBBc                 N    |t          d                    }t          t          j        ddd|j        j        dd                    t          j        t                    d                             5  |
                                 d	d	d	           d	S # 1 swxY w Y   d	S )
ztest for the new get_isolation_level_values() method
        and support for the dialect-level 'isolation_level' parameter.

        r   r}   optionsr   r   r   r   r   N)dictr   r   r   r'   r   r   r   r   r   r&   )r+   testing_engineengs      r-   test_invalid_level_engine_paramz2IsolationLevelTest.test_invalid_level_engine_param   s     nT%%@%@%@AAA"    		 5f==kJ  
 
 	 	 KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8BB!Bc                    t          j        t                    }|d         }t          t	          |d                                       |dg                    d         } |d|i          }|                                5 }t          |                                |           d d d            n# 1 swxY w Y   |                                5 }|	                    |           t          |                                |           d d d            n# 1 swxY w Y   |                                5 }t          |                                |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r~   r   r}   )
r   r   r   sortedr   r   r&   r	   r   r   )r+   r   r   r   r   er,   s          r-   %test_dialect_user_setting_is_restoredz8IsolationLevelTest.test_dialect_user_setting_is_restored  s   26::#F;'((33Wl4KLL  		 N$5y#ABBBYY[[ 	7D((**I666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 YY[[ 	5D""7";;;((**G444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 YY[[ 	7D((**I666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s6   #B00B47B49DDD3#E##E'*E'N)r/   r0   r1   r2   __requires__r   r   r   r   r   requiresget_isolation_level_valuesr   #dialect_level_isolation_level_paramr    independent_readonly_connectionsr   r3   r4   r-   r|   r|      s        K'L
I 
I 
I
 
 
6 6 6$  , 0@ @ 10@$ 09  :9 10* 67 7 767 7 7r4   r|   c                   4   e Zd ZdZdZdZed             ZddZd Z	d Z
d	 Zej        j         ej        d
g d           ej        dddg          d                                     Zej        j         ej        dddg          d                         ZdS )AutocommitIsolationTestrX   )
autocommitTc                     t          d|t          dt          dd          t          dt          d                    d           d S )	N
some_tabler[   TFr\   r_   r`   )test_needs_acidra   rb   s     r-   rd   z%AutocommitIsolationTest.define_tables  sS    4d%HHH66"::&& 	
 	
 	
 	
 	
 	
r4   Fc                    |r5| j         j                            |d           |                                 |                                }|                    | j         j                                        ddd           |                                 t          |	                    t          | j         j        j        j                            |rdnd            |                                 |                                5  |                    | j         j                                                   d d d            d S # 1 swxY w Y   d S )NT)
checkfirstr   z	some datarg   )rj   r   createcommitrh   ri   rk   rm   r	   scalarr   cr[   delete)r+   r,   r   ensure_tablern   s        r-   _test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits)  sl    	K"))$4)@@@KKMMM

K"))++A{-K-K	
 	
 	
 	KKt{57:;;<<%AA	
 	
 	
 	ZZ\\ 	: 	:LL/6688999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   2EEEc                     |}|                     d          }|                     |d           |j                            |j        j                   |                     |d           d S )Nr   r}   TF)r   r   r'   r   r)   r*   )r+   r   r,   c2s       r-   test_autocommit_onz*AutocommitIsolationTest.test_autocommit_on=  sj    "##L#AA##B---

(()GHHH##D%00000r4   c                 6    |}|                      |d           d S )NF)r   r+   r   r,   s      r-   test_autocommit_offz+AutocommitIsolationTest.test_autocommit_offF  s#    "##D%00000r4   c                     |}|                     d          }|                     |d           |                     t          j        t                    d                    |                     |d           d S )Nr   r}   Tr   F)r   r   r   r   r   r   s      r-   .test_turn_autocommit_off_via_default_iso_levelzFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_levelJ  s     #%%l%CC##D$///(=fEE 	 	
 	
 	

 	##D%00000r4   autocommit_setting)falseengineoptionblock_rollbackc                 T   i }t          |          rd|d<   |j        rd|d<    ||          }|                                }|j        r|                    d           |                     ||j        p|j        d           t          j                            |j	        d|j	        j
        	          5 }|                                 d d d            n# 1 swxY w Y   |j        s|s)t          |j        t          j                    g           d S t          |j        g            d S )
NTskip_autocommit_rollbackr   r~   r   r}   )r   rm   )wraps)boolr   r&   r   r   r   r   patchobjectr)   rm   closer   r	   
mock_callscall)r+   r   r   r   kwr   r,   check_rollbacks           r-   test_autocommit_blockz-AutocommitIsolationTest.test_autocommit_blockX  s     	2-1B)*$ 	1$0B !+++~~$ 	A""<"@@@##%B);)B 	$ 	
 	
 	

 ZOZt/G  
 
 	JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 # 	/> 	/)DIKK=99999)2.....s   5CCCuse_dialect_settingc                 `   |r |ddi          }n |                                 d          }t          j        t                    }|d         }|                                5 }|                     |d           ddd           n# 1 swxY w Y   |                                5 }|                     |           |                     |d           ddd           n# 1 swxY w Y   |                                5 }|                     |d           ddd           dS # 1 swxY w Y   dS )	ztest #10147r~   r   r   r}   r   TNF)r   r   r   r   r&   r   )r+   r   r   r   r   r   r,   s          r-   #test_dialect_autocommit_is_restoredz;AutocommitIsolationTest.test_dialect_autocommit_is_restoredw  s     	(9<'HIIIAA  22 , 3  A 26::#YY[[ 	4D''d333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 YY[[ 	5D""7";;;''e444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 YY[[ 	4D''d333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6   %BBB'-C  C$'C$?D##D'*D'N)F)r/   r0   r1   rx   r   r2   ry   rd   r   r   r   r   r   r   r   	variationr   r   r   r3   r4   r-   r   r     s"       K"LK
 
 [
: : : :(1 1 11 1 11 1 1 .W+-J-J-JKKW'$77/ / 87 LK /./8 6W,tUm<<4 4 =< 764 4 4r4   r   c                   $    e Zd Zed             ZdS )EscapingTestc                    | j         }t          d|t          dt          d                              }|                    t
          j                   t
          j                                        5 }|                    |	                                t          d                     |                    |	                                t          d                     t          |                    t          |j        j                                      |j        j        t#          d          k                        d           t          |                    t          |j        j                                      |j        j        t#          d          k                        d           d	d	d	           d	S # 1 swxY w Y   d	S )
z|test that the DBAPI accommodates for escaped / nonescaped
        percent signs in a way that matches the compiler

        tr_   r`   zsome % value)r_   zsome %% other valuez'some % value'z'some %% other value'N)rc   r   r   r   r   r   r%   rh   ri   rk   r   r	   r   r   r   r_   wherer   )r+   mr   r,   s       r-   test_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_trip  s    M#q&4455	Y__ 	$LLT~%>%>%>???LLT/D%E%E%EFFF138$$**N3C$D$DD  
    138$$**N3J$K$KK  
 &  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1D=F;;F?F?N)r/   r0   r1   r   r   r3   r4   r-   r   r     s.            r4   r   c                   .    e Zd ZdZdZd Zd Zd Zd ZdS ) WeCanSetDefaultSchemaWEventsTestT)default_schema_name_switchc                     t           j        j        j        }t	          j                    }|                                5  	 d d d            n# 1 swxY w Y   t          |j        j        |           d S r$   )r   r%   r'   default_schema_namer   r   r&   r	   )r+   r   r   s      r-   test_control_casez2WeCanSetDefaultSchemaWEventsTest.test_control_case  s    $i/C$&&[[]] 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	CK+-@AAAAAs   AAAc                    t           j        j        j        }t	          j                    }t          j        |d          d             }|                                5 }|j        	                    |          }t          |t           j                   d d d            n# 1 swxY w Y   t          |j        j        |           d S )Nr&   c                 F    t          t          | t          j                   d S r$   r   r   test_schemar*   connection_records     r-   
on_connectzMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert.<locals>.on_connect  )    ,(&*<    r4   )r   r%   r'   r   r   r   r   listens_forr&   _get_default_schema_namer	   r   )r+   r   r   r   r,   what_it_should_bes         r-   test_wont_work_wo_insertz9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert  s    $i/C$&&		3		*	*	 	 
+	*	
 [[]] 	7d # D DT J J!6#5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	CK+-@AAAAAs   5BB!$B!c                 t   t          j                    }t          j        |dd          d             }|                                5 }|j                            |          }t          |t          j	                   d d d            n# 1 swxY w Y   t          |j        j
        t          j	                   d S )Nr&   Trk   c                 F    t          t          | t          j                   d S r$   r   r   s     r-   r   zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect  r   r4   )r   r   r   r   r&   r'   r   r	   r   r   r   )r+   r   r   r,   r   s        r-   test_schema_change_on_connectz>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect  s    $&&		3	$	7	7	7	 	 
8	7	
 [[]] 	7d # D DT J J!6#5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	CK+V-?@@@@@s   5B		BBc                 ,   t          j                    }t          j        |dd          d             }|                                5 }|                                }|j                            |          }t          |t          j
                   |                                 |j                            |          }t          |t          j
                   d d d            n# 1 swxY w Y   t          |j        j        t          j
                   d S )Nr&   Tr   c                 F    t          t          | t          j                   d S r$   r   )r*   args     r-   r   z\WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions.<locals>.on_connect  r   r4   )r   r   r   r   r&   rh   r'   r   r	   r   r   rm   r   )r+   r   r   r,   rn   r   s         r-   'test_schema_change_works_w_transactionszHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions  s/   $&&		3	$	7	7	7	 	 
8	7	
 [[]] 	7dJJLLE # D DT J J!6#5666NN # D DT J J!6#5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	CK+V-?@@@@@s   BC%%C),C)N)	r/   r0   r1   r2   r   r   r   r   r   r3   r4   r-   r   r     sh        K2LB B BB B B"A A AA A A A Ar4   r   c                       e Zd ZdS )&FutureWeCanSetDefaultSchemaWEventsTestN)r/   r0   r1   r3   r4   r-   r  r    s         	Dr4   r  c                       e Zd ZdZ ej        dddddddd	d
ddddddddddddd          Zeej        j	        d                         Z
ej        d             Zed             Zed             ZdS )DifficultParametersTestT)boring)zper cent)z
per % cent)z%percent)zpar(ens))zpercent%(ens)yah)zcol:ons)_starts_with_underscore)zdot.s)zmore :: %colons%)_name)___name)z[BracketsAndCase])	42numbers)zpercent%signs)z
has spaces)z	/slashes/)zmore/slashes)zq?marks)1param)z1col:on	paramname)argnamesc                    |}t          d|t          dt          d          t          |t          d          d                    }|                    |           |                    |                                                    dd|d	i                     t          |j	        |                   
                    |j	        |         d	k              }t          |                    |          d	           t          |j	        |                   
                    |j	        |         t          |          k              }|                    ||d	i                                          }t          |j        |         d	           t          |j	        |                   
                    |j	        |                             d	d
g                    }|                    |                                           d S )Nr   r[   T)r]   r`   F)nullabler   z	some namezsome other_name)r   r   r   r   r   ri   rk   valuesr   r   r   r	   r   r   first_mappingin_)r+   r
  r)   rc   r   r   stmtrows           r-   !test_round_trip_same_named_columnz9DifficultParametersTest.test_round_trip_same_named_column  s   
 4d3334e444	
 
 	
 	188::,,dAt[-IJJKKK ac$i  &&qs4yK'?@@Jd##[111 ac$i  &&qs4yIdOO'CDD  k':;;AACC 	CL,,, ac$i  &&CIMM;(9:;;
 
 	4  &&(((((r4   c              #   l  K   t          d|t          dt                    t          dt          d                    t          dt          d                              }|                    |           |                    |                                dddd	d
ddd	dddd	dddd	g           |V  d S )Nmytablemyidr   r`   descr   aa_desc)r  r   r  r   bb_descr   r   c_desc   r@   d_desc)r   r   r   r   r   ri   rk   )r+   rc   r)   r  s       r-   multirow_fixturez(DifficultParametersTest.multirow_fixtureB  s      67##66"::&&66"::&&
 
 	z"""NNC::C::C::C::		
 	
 	
 r4   c                     |}t          |j        j                                      |j        j        t          |d          k              }|                    ||di          }t          |d           d S )Nxvaluer   r   )r   r   r  r   r   r   r   r	   r+   r
  r)   r   tbl1r  ress          r-    test_standalone_bindparam_escapez8DifficultParametersTest.test_standalone_bindparam_escapeY  sp      dfk""((FK9Yc::::
 
 y#&677Cr4   c           	      t   |}t          |j        j                                      |j        j                            t          |ddg                                                  |j        j                  }|                    ||ddgi          	                                }t          |ddg           d S )Nr  r  r#  r@   r   r  )r   r   r  r   r   r  r   order_byscalarsallr	   r%  s          r-   *test_standalone_bindparam_escape_expandingzBDifficultParametersTest.test_standalone_bindparam_escape_expandingd  s      46;U46;??9YsCj#I#I#IJJKKXdfk"" 	   	C:'>??CCEEC!Qr4   N)r/   r0   r1   r2   r   combinationstough_parametersr   r   unusual_column_name_charactersr  rT   r   r(  r-  r3   r4   r-   r  r    s        K+w+$-  2 7$) $) 87 $)L _  _,        r4   r  c                   p    e Zd ZdZdZed             Zej        d             Z	d Z
d Zd Zd Zd	 Zd
 ZdS )ReturningGuardsTestz=test that the various 'returning' flags are set appropriatelyTc                     t          d|t          dt          dd          t          dt          d                               d S )Nr   r[   TFr\   r_   r`   ra   rb   s     r-   rd   z!ReturningGuardsTest.define_tablesx  sK    4d%HHH66"::&&		
 	
 	
 	
 	
r4   c                 .    | j         j        fd}|S )Nc           
         |                      j        j                  } |r|sut          t          j        dj        j         dj        j         d          5  	                    | |dddi|dddi|d	dd
ig           d d d            d S # 1 swxY w Y   d S 	                    | |dddi|dddi|d	dd
ig          }t          |                                g d           d S |sNt          t          j                  5  	                    | |dddi           d d d            d S # 1 swxY w Y   d S 	                    | |dddi          }t          |                                dg           d S )NzDialect z\+zW with current server capabilities does not support .*RETURNING when executemany is usedr   r_   rf   r   d2r   d3)r   )r   )r   r8  )	returningr   r[   r   r   StatementErrorr'   r   driverri   r	   r,  r   rq   )r  executemanyid_param_nameexpect_successresultr)   r   s        r-   goz(ReturningGuardsTest.run_stmt.<locals>.go  st   >>!#&))D *.% : /*@J$6$; @ @%-4@ @ @    #** !.64 @!.64 @!.64 @                     (//*Avt<*Avt<*Avt< F 

&8&8&899999% . 's~66  "** =!VT"B                   
 (//}a> F 

tf-----s$   &BBB D((D,/D,)rj   r   )r+   r)   r@  r   s    ` @r-   run_stmtzReturningGuardsTest.run_stmt  s3    KM-	. -	. -	. -	. -	. -	.^ 	r4   c                 v    | j         j        }|                                } ||dd|j        j                   d S )NFr[   )rj   r   rk   r'   insert_returningr+   r)   rA  r   r  s        r-   test_insert_singlez&ReturningGuardsTest.test_insert_single  s:    KMxxzzudJ$6$GHHHHHr4   c                 v    | j         j        }|                                } ||dd|j        j                   d S )NTr[   )rj   r   rk   r'   insert_executemany_returningrD  s        r-   test_insert_manyz$ReturningGuardsTest.test_insert_many  sE    KMxxzz$j0M	
 	
 	
 	
 	
r4   c                 :   | j         j        }|                    |                                dddddddddg           |                                                    |j        j        t          d          k              } ||d	d|j	        j
                   d S 
Nr   rf   rg   r   r6  r   r7  b_idF)rj   r   ri   rk   updater   r   r[   r   r'   update_returningrD  s        r-   test_update_singlez&ReturningGuardsTest.test_update_single      KMHHJJ$''$''$''	
 	
 	
 xxzz)F*;*; ;<<ufj&8&IJJJJJr4   c                 :   | j         j        }|                    |                                dddddddddg           |                                                    |j        j        t          d          k              } ||d	d|j	        j
                   d S 
Nr   rf   rg   r   r6  r   r7  rK  T)rj   r   ri   rk   rL  r   r   r[   r   r'   update_executemany_returningrD  s        r-   test_update_manyz$ReturningGuardsTest.test_update_many      KMHHJJ$''$''$''	
 	
 	
 xxzz)F*;*; ;<<$
 2 O	
 	
 	
 	
 	
r4   c                 :   | j         j        }|                    |                                dddddddddg           |                                                    |j        j        t          d          k              } ||d	d|j	        j
                   d S rJ  )rj   r   ri   rk   r   r   r   r[   r   r'   delete_returningrD  s        r-   test_delete_singlez&ReturningGuardsTest.test_delete_single  rO  r4   c                 :   | j         j        }|                    |                                dddddddddg           |                                                    |j        j        t          d          k              } ||d	d|j	        j
                   d S rQ  )rj   r   ri   rk   r   r   r   r[   r   r'   delete_executemany_returningrD  s        r-   test_delete_manyz$ReturningGuardsTest.test_delete_many  rT  r4   N)r/   r0   r1   rS   r2   ry   rd   r   rT   rA  rE  rH  rN  rS  rW  rZ  r3   r4   r-   r2  r2  s  s        GGK
 
 [
 _2 2 _2hI I I
 
 
K K K 
 
 
$K K K 
 
 
 
 
r4   r2  )/r;    r   r   r   r   r	   r
   r   r   r   r   r   
assertionsr   r   r   	provisionr   schemar   r   r   r   r   r   r   r   r   r   sql.compilerr   utilr    TestBaser"   r6   
TablesTestrW   r|   r   r   r   FutureEngineMixinr  r  r2  r3   r4   r-   <module>rd     s                                                                         & & & & & & . . . . . . ! ! ! ! ! ! 8 8 8 8 8 8                                                             $ $ $ $ $ $ * * * * * *    x    * * * * *x( * * *Z5, 5, 5, 5, 5,H' 5, 5, 5,p}7 }7 }7 }7 }7* }7 }7 }7@y4 y4 y4 y4 y4h1 y4 y4 y4x    8$   B@A @A @A @A @Ax'8 @A @A @AF	 	 	 	 	 @	 	 	r r r r rh/ r r rjU
 U
 U
 U
 U
(- U
 U
 U
 U
 U
r4   