
    Bh^                        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  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  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!\RD                  5      r# " S" S#\RD                  5      r$ " S$ S%\RJ                  5      r& " S& S'\RD                  5      r' " S( S)\RJ                  5      r( " S* S+\RD                  5      r) " S, S-\RD                  5      r* " S. S/\RV                  \*5      r, " S0 S1\RD                  5      r- " S2 S3\RJ                  5      r.g)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                       \ rS rSrSrS rSrg)PingTest)   Tc                     [         R                  R                  5        n[        [         R                  R                  R                  UR                  R                  5      5        S S S 5        g ! , (       d  f       g = fN)r   dbconnectr   dialectdo_ping
connectiondbapi_connection)selfconns     h/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sqlalchemy/testing/suite/test_dialect.pytest_do_pingPingTest.test_do_ping,   sJ    ZZ!T

""**4??+K+KL "!!s   AA//
A= N)__name__
__module____qualname____firstlineno____backend__r/   __static_attributes__r1       r.   r"   r"   )   s    Kr8   r"   c                   f    \ rS rSrSrS r\R                  " \" \" 5       5      S9S 5       r	S r
Srg)	ArgSignatureTest3   a  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               #   4  #    [         R                   H4  n U R                  S5      (       a  M  [        R                  " SU -  5        M6     [
        /nU(       a>  UR                  S5      nUR                  UR                  5       5        Uv   U(       a  M=  g g 7f)N_zsqlalchemy.dialects.%sr   )	r   __all__
startswith	importlibimport_moduler   popextend__subclasses__)dstackclss      r.   _all_subclasses ArgSignatureTest._all_subclassesA   sr     !!A<<$$''(@1(DE " 
))A,CLL++-.I es   (BA&BB)paramsc              #   (   #    UR                   v   g 7fr%   )param)r,   requests     r.   all_subclassesArgSignatureTest.all_subclassesM   s     mms   c           	          UnUR                    HX  nUR                  S5      (       d  M  [        X#5      n[        U5      n[	        UR
                  SUR                   SU S35        MZ     g )Nvisit_zCompiler visit method .z:() does not accommodate for **kw in its argument signature)__dict__r?   getattrr    r   varkwr2   )r,   rN   rG   kmethinsps         r.    test_all_visit_methods_accept_kw1ArgSignatureTest.test_all_visit_methods_accept_kwQ   sc    A||H%%s-d3JJ,S\\N!A3 ?I I r8   r1   N)r2   r3   r4   r5   __doc__rH   r   fixturelistrN   rY   r7   r1   r8   r.   r:   r:   3   s6    
 __D!234 5r8   r:   c                   Z    \ rS rSrSrSrSr\S 5       r\	R                  S 5       rS rSrg	)
ExceptionTest`   zTest 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                 b    [        SU[        S[        SSS9[        S[        S5      5      5        g )N	manual_pkidTFprimary_keyautoincrementdata2   r   r   r   r   rG   metadatas     r.   define_tablesExceptionTest.define_tablesl   s,    4d%H66":&		
r8   c           	         [         R                  R                  5        nUR                  5       nUR	                  U R
                  R                  R                  5       SSS.5        [        [        R                  UR                  U R
                  R                  R                  5       SSS.5        UR                  5         S S S 5        g ! , (       d  f       g = f)Nr   d1rd   rh   )r   r&   r'   beginexecutetablesrc   insertr   r   IntegrityErrorrollback)r,   r-   transs      r.   test_integrity_error"ExceptionTest.test_integrity_erroru   s    YY DJJLELL%%,,.q$0G ""%%,,.$'	 NN !  s   B#C
Cc                    [         R                  R                  5        n UR                  [	        [        S5      5      5         e! [        R                   a9  n[        U5      n[        UR                  5      [        U5      ;   d   e S nAOS nAff = f[        U[        5      (       d   e S S S 5        g ! , (       d  f       g = f)Nu   méil)r   r&   r'   rs   r   r   r   
DBAPIErrorstrorig
isinstance)r,   r-   errerr_strs       r.   test_exception_with_non_ascii+ExceptionTest.test_exception_with_non_ascii   s    YY D1 VN7$;<=u>> 1c(388}C0001
 gs++++ !  s.   B7%AB/B	B7BB77
Cr1   N)r2   r3   r4   r5   r[   run_deletesr6   classmethodrm   r   $duplicate_key_raises_integrity_errorry   r   r7   r1   r8   r.   r_   r_   `   sD     KK
 
 66 7 ,r8   r_   c                      \ rS rSrSrSrS rS rS rS r	\
R                  R                  S 5       r\
R                  R                  \
R                  R                  S	 5       5       r\
R                  R                   S
 5       rSrg)IsolationLevelTest   Tisolation_levelc                     [         R                  " [        5      nUS   nUS   n[        U5      R	                  SU/5      nU(       a  UR                  5       $ [        R                  " S5        g )Ndefault	supported
AUTOCOMMITz(no non-default isolation level available)r   get_isolation_levelsr   set
differencerB   	skip_test)r,   levelsr   r   ss        r.    _get_non_default_isolation_level3IsolationLevelTest._get_non_default_isolation_level   s\    226:#;'		N%%|W&=>557NGHr8   c                     [        [        R                  R                  R                  [
        R                  " [        5      S   5        g )Nr   )r	   r   r&   r(   default_isolation_levelr   r   )r,   s    r.   test_default_isolation_level/IsolationLevelTest.test_default_isolation_level   s0    II55--f5i@	
r8   c                    U R                  5       n[        R                  R                  5        nUR	                  5       n[        X15        UR                  US9  [        UR	                  5       U5        UR                  R                  UR                  R                  5        [        UR	                  5       U5        S S S 5        g ! , (       d  f       g = f)Nr   )r   r   r&   r'   get_isolation_levelr   execution_optionsr	   r(   reset_isolation_levelr*   r+   )r,   non_defaultr-   existings       r.    test_non_default_isolation_level3IsolationLevelTest.test_non_default_isolation_level   s    ;;=YY D//1H&"";"?((*K8LL..00 ((*H5 !  s   BC
Cc                 h   [         R                  " [        5      nUS   n[        U5      R	                  S/5       H  n[        R
                  R                  5        nUR                  US9  [        UR                  5       U5        UR                  5       nUR                  5         [        UR                  5       U5        S S S 5        [        R
                  R                  5        n[        UR                  5       US   5        S S S 5        M     g ! , (       d  f       NW= f! , (       d  f       M  = f)Nr   r   r   r   )r   r   r   r   r   r&   r'   r   r	   r   rr   rw   )r,   r   
all_levelslevelr-   rx   s         r.   test_all_levels"IsolationLevelTest.test_all_levels   s    226:K(
_//?E""$&&u&=D,,.6

 D,,.6 % ""$,,.9% %$ @$$ %$s   A$D&D"
D	"
D1	c                 "   Un[        [        R                  SS< SUR                  R                  < SSR                  [        R                  " [        5      S   5      < 35         UR                  SS9  SSS5        g! , (       d  f       g= f)	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_option6IsolationLevelTest.test_invalid_level_execution_option   su     )
" ""''		 55f=kJ
 (((?
 
 
s   'B  
Bc                 :   U" [        SS9S9n[        [        R                  SS< SUR                  R
                  < SSR                  [        R                  " [        5      S   5      < 35         UR                  5         S	S	S	5        g	! , (       d  f       g	= f)
zutest 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_param2IsolationLevelTest.test_invalid_level_engine_param   su     T%%@A"   		 55f=kJ
 KKM
 
 
s   2B
Bc                 ^   [         R                  " [        5      nUS   n[        [	        US   5      R                  US/5      5      S   nU" SU0S9nUR                  5        n[        UR                  5       U5        S S S 5        UR                  5        nUR                  US9  [        UR                  5       U5        S S S 5        UR                  5        n[        UR                  5       U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NS= f! , (       d  f       g = f)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_restored8IsolationLevelTest.test_dialect_user_setting_is_restored  s    226:#F;'(33Wl4KL 		 $5y#ABYY[D((*I6  YY[D""7";((*G4  YY[D((*I6 [ [ [ [s$   #C<*DD<
D

D
D,r1   N)r2   r3   r4   r5   r6   __requires__r   r   r   r   r   requiresget_isolation_level_valuesr   #dialect_level_isolation_level_paramr    independent_readonly_connectionsr   r7   r1   r8   r.   r   r      s    K'L
I
6$, 00@ 1@$ 0099 : 1* 667 77r8   r   c                   L   \ rS rSrSrSrSr\S 5       rSS jr	S r
S	 rS
 r\R                  R                  \R                   " S/ SQ5      \R                   " SSS/5      S 5       5       5       r\R                  R$                  \R                   " SSS/5      S 5       5       rSrg)AutocommitIsolationTesti  ra   )
autocommitTc                 `    [        SU[        S[        SSS9[        S[        S5      5      SS9  g )	N
some_tablerd   TFre   rh   ri   )test_needs_acidrj   rk   s     r.   rm   %AutocommitIsolationTest.define_tables  s/    4d%H66":& 	
r8   Fc                    U(       a4  U R                   R                  R                  USS9  UR                  5         UR	                  5       nUR                  U R                   R                  R                  5       SSS.5        UR                  5         [        UR                  [        U R                   R                  R                  R                  5      5      U(       a  SOS 5        UR                  5         UR	                  5          UR                  U R                   R                  R                  5       5        S S S 5        g ! , (       d  f       g = f)NT)
checkfirstr   z	some datarq   )rt   r   createcommitrr   rs   ru   rw   r	   scalarr   crd   delete)r,   r-   r   ensure_tablerx   s        r.   _test_conn_autocommits.AutocommitIsolationTest._test_conn_autocommits)  s    KK""))$4)@KKM

KK""))+A{-K	
 	KKt{{5577::;<A	
 	ZZ\LL//6689 \\s   4E
Ec                     UnUR                  SS9nU R                  US5        UR                  R                  UR                  R
                  5        U R                  US5        g )Nr   r   TF)r   r   r(   r   r*   r+   )r,   r   r-   c2s       r.   test_autocommit_on*AutocommitIsolationTest.test_autocommit_on=  sV    "##L#A##B-


(()G)GH##D%0r8   c                 ,    UnU R                  US5        g )NF)r   r,   r   r-   s      r.   test_autocommit_off+AutocommitIsolationTest.test_autocommit_offF  s    "##D%0r8   c                     UnUR                  SS9nU R                  US5        UR                  [        R                  " [        5      S   S9  U R                  US5        g )Nr   r   Tr   F)r   r   r   r   r   r   s      r.   .test_turn_autocommit_off_via_default_iso_levelFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_levelJ  sg     #%%l%C##D$/(==fE 	 	

 	##D%0r8   autocommit_setting)falseengineoptionblock_rollbackc                    0 n[        U5      (       a  SUS'   UR                  (       a  SUS'   U" US9nUR                  5       nUR                  (       a  UR	                  SS9  U R                  UUR                  =(       d    UR                  SS9  [        R                  R                  UR                  SUR                  R                  S	9 nUR                  5         S S S 5        UR                  (       d  U(       d+  [        WR                  [        R                  " 5       /5        g [        WR                  / 5        g ! , (       d  f       Nh= f)
NTskip_autocommit_rollbackr   r   r   r   )r   rw   )wraps)boolr   r'   r   r   r   r   patchobjectr*   rw   closer   r	   
mock_callscall)r,   r   r   r   kwr   r-   check_rollbacks           r.   test_autocommit_block-AutocommitIsolationTest.test_autocommit_blockX  s    -1B)*$$$0B !+~~$$""<"@##%%B);)B)B 	$ 	

 ZZOOZt/G/G  
JJL
 ##>))DIIK=9))2.
 
s   E
Euse_dialect_settingc                    U(       a	  U" SS0S9nOU" 5       R                  SS9n[        R                  " [        5      nUS   nUR	                  5        nU R                  US5        SSS5        UR	                  5        nUR                  US9  U R                  US5        SSS5        UR	                  5        nU R                  US5        SSS5        g! , (       d  f       Nt= f! , (       d  f       NK= f! , (       d  f       g= f)	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_restored;AutocommitIsolationTest.test_dialect_autocommit_is_restoredw  s     (9<'HIA 22 , 3 A 226:#YY[D''d3  YY[D""7";''e4  YY[D''d3 [ [ [ [s$   C?"C&9C7
C#&
C47
Dr1   N)F)r2   r3   r4   r5   r   r   r6   r   rm   r   r   r   r   r   r   r   	variationr   r   r   r7   r1   r8   r.   r   r     s    K"LK
 
:(111 ..+-JK'$7/ 8 L //8 66,tUm<4 = 74r8   r   c                   $    \ rS rSr\S 5       rSrg)EscapingTesti  c                 B   U R                   n[        SU[        S[        S5      5      5      nUR	                  [
        R                  5        [
        R                  R                  5        nUR                  UR                  5       [        SS95        UR                  UR                  5       [        SS95        [        UR                  [        UR                  R                  5      R!                  UR                  R                  [#        S5      :H  5      5      S5        [        UR                  [        UR                  R                  5      R!                  UR                  R                  [#        S5      :H  5      5      S5        S	S	S	5        g	! , (       d  f       g	= f)
zltest that the DBAPI accommodates for escaped / nonescaped
percent signs in a way that matches the compiler

trh   ri   zsome % value)rh   zsome %% other valuez'some % value'z'some %% other value'N)rl   r   r   r   r   r   r&   rr   rs   ru   r   r	   r   r   r   rh   wherer   )r,   mr   r-   s       r.   test_percent_sign_round_trip)EscapingTest.test_percent_sign_round_trip  s    MM#q&45	YY__$LLT~%>?LLT/D%EF13388$**N3C$DD
  13388$**N3J$KK
 & s   *DF
Fr1   N)r2   r3   r4   r5   r   r   r7   r1   r8   r.   r   r     s     r8   r   c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
 WeCanSetDefaultSchemaWEventsTesti  T)default_schema_name_switchc                    [         R                  R                  R                  n[        R
                  " 5       nUR                  5           S S S 5        [        UR                  R                  U5        g ! , (       d  f       N/= fr%   )r   r&   r(   default_schema_namer   r   r'   r	   )r,   r  r   s      r.   test_control_case2WeCanSetDefaultSchemaWEventsTest.test_control_case  sV    $ii//CC$$&[[]  	CKK++-@A ]s   
A55
Bc                    [         R                  R                  R                  n[        R
                  " 5       n[        R                  " US5      S 5       nUR                  5        nUR                  R                  U5      n[        U[         R                  5        S S S 5        [        UR                  R                  U5        g ! , (       d  f       N/= f)Nr'   c                 B    [        [        U [        R                  5        g r%   r   r   test_schemar+   connection_records     r.   
on_connectMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert.<locals>.on_connect      ,(&*<*<r8   )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_insert9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert  s    $ii//CC$$&			3		*	 
+	
 [[]d # D DT J!6#5#56  	CKK++-@A	 ]s   '6C
Cc                    [         R                  " 5       n[        R                  " USSS9S 5       nUR	                  5        nUR
                  R                  U5      n[        U[        R                  5        S S S 5        [        UR
                  R                  [        R                  5        g ! , (       d  f       N== f)Nr'   Tru   c                 B    [        [        U [        R                  5        g r%   r  r  s     r.   r  RWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect  r  r8   )r   r   r   r  r'   r(   r  r	   r   r  r  )r,   r   r  r-   r  s        r.   test_schema_change_on_connect>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect  s    $$&			3	$	7	 
8	
 [[]d # D DT J!6#5#56  	CKK++V-?-?@	 ]s   6B//
B=c                 *   [         R                  " 5       n[        R                  " USSS9S 5       nUR	                  5        nUR                  5       nUR                  R                  U5      n[        U[        R                  5        UR                  5         UR                  R                  U5      n[        U[        R                  5        S S S 5        [        UR                  R                  [        R                  5        g ! , (       d  f       N== f)Nr'   Tr  c                 B    [        [        U [        R                  5        g r%   r  )r+   args     r.   r  \WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions.<locals>.on_connect  r  r8   )r   r   r   r  r'   rr   r(   r  r	   r   r  rw   r  )r,   r   r  r-   rx   r  s         r.   'test_schema_change_works_w_transactionsHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions  s    $$&			3	$	7	 
8	
 [[]dJJLE # D DT J!6#5#56NN # D DT J!6#5#56  	CKK++V-?-?@ ]s   BD
Dr1   N)r2   r3   r4   r5   r6   r   r  r  r  r!  r7   r1   r8   r.   r  r    s$    K2LBB"AAr8   r  c                       \ rS rSrSrg)&FutureWeCanSetDefaultSchemaWEventsTesti  r1   N)r2   r3   r4   r5   r7   r1   r8   r.   r$  r$    s     	r8   r$  c                       \ rS rSrSr\R                  " SSSSSSS	S
SSSSSSSSSSSSSSS9r\\R                  R                  S 5       5       r\R                  S 5       r\S 5       r\S 5       rSrg) DifficultParametersTesti  T)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                 H   Un[        SU[        S[        SS9[        U[        S5      SS95      nUR	                  U5        UR                  UR                  5       R                  SSUS	05      5        [        UR                  U   5      R                  UR                  U   S	:H  5      n[        UR                  U5      S	5        [        UR                  U   5      R                  UR                  U   [        U5      :H  5      nUR                  XdS	05      R                  5       n[        UR                  U   S	5        [        UR                  U   5      R                  UR                  U   R!                  S	S
/5      5      nUR                  U5      R                  5         g )Nr   rd   T)rf   ri   F)nullabler   z	some namezsome other_name)r   r   r   r   r   rs   ru   valuesr   r   r   r	   r   r   first_mappingin_)r,   r-  r*   rl   r   r   stmtrows           r.   !test_round_trip_same_named_column9DifficultParametersTest.test_round_trip_same_named_column  sc   
 4d34e4	
 	
 	188:,,dAt[-IJK acc$i &&qss4yK'?@Jd#[1 acc$i &&qss4yIdO'CD  k':;AAC 	CLL, acc$i &&CCIMM;(9:;
 	4 &&(r8   c              #   $  #    [        SU[        S[        5      [        S[        S5      5      [        S[        S5      5      5      nUR	                  U5        UR                  UR                  5       SSSS	.S
SSS	.SSSS	.SSSS	./5        Uv   g 7f)Nmytablemyidr   ri   descr   aa_desc)r;  r   r<  r   bb_descr   r   c_desc   rE   d_desc)r   r   r   r   r   rs   ru   )r,   rl   r*   r:  s       r.   multirow_fixture(DifficultParametersTest.multirow_fixtureB  s     67#66":&66":&
 	z"NNC:C:C:C:		
 s   BBc                     Un[        UR                  R                  5      R                  UR                  R                  [        USS9:H  5      nUR                  XQS05      n[        US5        g )Nxvaluer   r   )r   r   r;  r   r   r   r   r	   r,   r-  r*   rD  tbl1r5  ress          r.    test_standalone_bindparam_escape8DifficultParametersTest.test_standalone_bindparam_escapeY  s]      dffkk"((FFKK9Yc::
 #&67Cr8   c           	      f   Un[        UR                  R                  5      R                  UR                  R                  R                  [        USS/S95      5      R                  UR                  R                  5      nUR                  XQSS/05      R                  5       n[        USS/5        g )Nr=  r?  rH  rE   r   rB  )r   r   r;  r   r   r4  r   order_byscalarsallr	   rJ  s          r.   *test_standalone_bindparam_escape_expandingBDifficultParametersTest.test_standalone_bindparam_escape_expandingd  s      466;;U466;;??9YsCj#IJKXdffkk" 	   C:'>?CCEC!Qr8   r1   N)r2   r3   r4   r5   r6   r   combinationstough_parametersr   r   unusual_column_name_charactersr7  r\   rD  rM  rS  r7   r1   r8   r.   r&  r&    s    K++$-2 77$) 8 $)L __ ,    r8   r&  c                   t    \ rS rSrSrSr\S 5       r\R                  S 5       r
S rS rS rS	 rS
 rS rSrg)ReturningGuardsTestis  z=test that the various 'returning' flags are set appropriatelyTc                 b    [        SU[        S[        SSS9[        S[        S5      5      5        g )Nr   rd   TFre   rh   ri   rj   rk   s     r.   rm   !ReturningGuardsTest.define_tablesx  s,    4d%H66":&		
r8   c                 D   ^^ U R                   R                  mUU4S jnU$ )Nc           
        > U R                  TR                  R                  5      n U(       a  U(       dt  [        [        R
                  STR                  R                   STR                  R                   S35         TR                  U USSS0USSS0US	SS
0/5        S S S 5        g TR                  U USSS0USSS0US	SS
0/5      n[        UR                  5       / SQ5        g U(       d8  [        [        R                  5         TR                  XSSS05        S S S 5        g TR                  XSSS05      n[        UR                  5       S/5        g ! , (       d  f       g = f! , (       d  f       g = f)NzDialect z\+zW with current server capabilities does not support .*RETURNING when executemany is usedr   rh   rp   r   d2r   d3)r   )r   )r   r`  )	returningr   rd   r   r   StatementErrorr(   r   driverrs   r	   rR  r   r|   )r5  executemanyid_param_nameexpect_successresultr*   r   s        r.   go(ReturningGuardsTest.run_stmt.<locals>.go  sv   >>!##&&)D% /**#J$6$6$;$;#<B%--445 6?@ #** !.64 @!.64 @!.64 @   (//*Avt<*Avt<*Avt<F 

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

tf-K : 76s   >"EE(
E%(
E6)rt   r   )r,   r*   rh  r   s    ` @r.   run_stmtReturningGuardsTest.run_stmt  s    KKMM-	.^ 	r8   c                     U R                   R                  nUR                  5       nU" USSUR                  R                  5        g )NFrd   )rt   r   ru   r(   insert_returningr,   r*   rj  r   r5  s        r.   test_insert_single&ReturningGuardsTest.test_insert_single  s4    KKMMxxzudJ$6$6$G$GHr8   c                     U R                   R                  nUR                  5       nU" USSUR                  R                  5        g )NTrd   )rt   r   ru   r(   insert_executemany_returningrn  s        r.   test_insert_many$ReturningGuardsTest.test_insert_many  s7    KKMMxxz$j00MM	
r8   c                 D   U R                   R                  nUR                  UR                  5       SSS.SSS.SSS./5        UR	                  5       R                  UR                  R                  [        S5      :H  5      nU" US	SUR                  R                  5        g 
Nr   rp   rq   r   r^  r   r_  b_idF)rt   r   rs   ru   updater   r   rd   r   r(   update_returningrn  s        r.   test_update_single&ReturningGuardsTest.test_update_single      KKMMHHJ$'$'$'	
 xxz)F*; ;<ufj&8&8&I&IJr8   c                 D   U R                   R                  nUR                  UR                  5       SSS.SSS.SSS./5        UR	                  5       R                  UR                  R                  [        S5      :H  5      nU" US	SUR                  R                  5        g 
Nr   rp   rq   r   r^  r   r_  rw  T)rt   r   rs   ru   rx  r   r   rd   r   r(   update_executemany_returningrn  s        r.   test_update_many$ReturningGuardsTest.test_update_many      KKMMHHJ$'$'$'	
 xxz)F*; ;<$
 2 2 O O	
r8   c                 D   U R                   R                  nUR                  UR                  5       SSS.SSS.SSS./5        UR	                  5       R                  UR                  R                  [        S5      :H  5      nU" US	SUR                  R                  5        g rv  )rt   r   rs   ru   r   r   r   rd   r   r(   delete_returningrn  s        r.   test_delete_single&ReturningGuardsTest.test_delete_single  r|  r8   c                 D   U R                   R                  nUR                  UR                  5       SSS.SSS.SSS./5        UR	                  5       R                  UR                  R                  [        S5      :H  5      nU" US	SUR                  R                  5        g r~  )rt   r   rs   ru   r   r   r   rd   r   r(   delete_executemany_returningrn  s        r.   test_delete_many$ReturningGuardsTest.test_delete_many  r  r8   r1   N)r2   r3   r4   r5   r[   r6   r   rm   r   r\   rj  ro  rs  rz  r  r  r  r7   r1   r8   r.   rY  rY  s  sV    GK
 
 __2 2hI
K 
$K 
r8   rY  )/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"   r:   
TablesTestr_   r   r   r   r  FutureEngineMixinr$  r&  rY  r1   r8   r.   <module>r     s&               & . ! 8           $ *x   *x(( *Z5,H'' 5,p}7** }7@y4h11 y4x8$$ B@Ax'8'8 @AF	 @	rh// rjU
(-- U
r8   