
    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jD                        Z# G d" d#ejD                        Z$ G d$ d%ejJ                        Z& G d& d'ejD                        Z' G d( d)ejJ                        Z( G d* d+ejD                        Z) G d, d-ejD                        Z* G d. d/ejV                  e*      Z, G d0 d1ejD                        Z- G d2 d3ejJ                        Z.y)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y)PingTestTc                     t         j                  j                         5 }t        t         j                  j                  j                  |j                  j                               d d d        y # 1 sw Y   y xY wN)r   dbconnectr   dialectdo_ping
connectiondbapi_connection)selfconns     c/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_dialect.pytest_do_pingzPingTest.test_do_ping,   sS    ZZ! 	T

""**4??+K+KL	 	 	s   AA//A8N)__name__
__module____qualname____backend__r.        r-   r"   r"   )   s    Kr4   r"   c                   d    e Zd ZdZd Z ej                   e e                   d        Zd Z	y)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 ],  } | j                  d      rt        j                  d| z         . t
        g}|r8|j                  d      }|j                  |j                                | |r7y y w)N_zsqlalchemy.dialects.%sr   )	r   __all__
startswith	importlibimport_moduler   popextend__subclasses__)dstackclss      r-   _all_subclassesz ArgSignatureTest._all_subclassesA   su     !! 	FA<<$''(@1(DE	F 
))A,CLL++-.I s   %BABB)paramsc              #   (   K   |j                    y wr$   )param)r+   requests     r-   all_subclasseszArgSignatureTest.all_subclassesM   s     mms   c           	          |}|j                   D ]R  }|j                  d      st        ||      }t        |      }t	        |j
                  d|j                   d| d       T y )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   sg     		A||H%sA-d3JJ,S\\N!A3 ?I I		r4   N)
r/   r0   r1   __doc__rC   r   fixturelistrH   rR   r3   r4   r-   r6   r6   3   s8    
 W__D!234 5r4   r6   c                   R    e Zd ZdZdZdZed        Zej                  d        Z
d Zy)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                 h    t        d|t        dt        dd      t        dt        d                   y )N	manual_pkidTFprimary_keyautoincrementdata2   r   r   r   r   rB   metadatas     r-   define_tableszExceptionTest.define_tablesl   s,    4d%H66":&		
r4   c           	         t         j                  j                         5 }|j                         }|j	                  | j
                  j                  j                         ddd       t        t        j                  |j                  | j
                  j                  j                         ddd       |j                          d d d        y # 1 sw Y   y xY w)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    YY  	DJJLELL%%,,.q$0G ""%%,,.$'	 NN	 	 	s   B#CCc                 v   t         j                  j                         5 }	 |j                  t	        t        d                   J # t        j                  $ r7}t        |      }t        |j                        t        |      v sJ Y d }~nd }~ww xY wt        |t              sJ 	 d d d        y # 1 sw Y   y xY w)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    YY  	,D1 VN7$;<=u>> 1c(388}C0001
 gs+++	, 	, 	,s.   B/%AB-BB/BB//B8N)r/   r0   r1   rS   run_deletesr2   classmethodrd   r   $duplicate_key_raises_integrity_errorro   rw   r3   r4   r-   rW   rW   `   sD     KK
 
 66 7 ,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y
)IsolationLevelTestTisolation_levelc                     t        j                  t              }|d   }|d   }t        |      j	                  d|g      }|r|j                         S t        j                  d       y )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   s\    226:#;'		N%%|W&=>557NGHr4   c                     t        t        j                  j                  j                  t        j                  t              d          y )Nr   )r	   r   r%   r'   default_isolation_levelr   r   )r+   s    r-   test_default_isolation_levelz/IsolationLevelTest.test_default_isolation_level   s0    II55--f5i@	
r4   c                    | j                         }t        j                  j                         5 }|j	                         }t        ||       |j                  |       t        |j	                         |       |j                  j                  |j                  j                         t        |j	                         |       d d d        y # 1 sw Y   y xY w)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    ;;=YY  	6D//1H+&"";"?((*K8LL..00 ((*H5	6 	6 	6s   BC

Cc                 R   t        j                  t              }|d   }t        |      j	                  dg      D ]  }t        j
                  j                         5 }|j                  |       t        |j                         |       |j                         }|j                          t        |j                         |       d d d        t        j
                  j                         5 }t        |j                         |d          d d d         y # 1 sw Y   PxY w# 1 sw Y   xY w)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    226:K(
_//? 	E""$ 7&&u&=D,,.6

 D,,.67 ""$ ,,.9% 	7 7 s   A'D(DD	D&	c                    |}t        t        j                  ddd|j                  j                  ddj                  t        j                  t              d               5  |j                  d       ddd       y# 1 sw Y   yxY w)	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~     )
" ""''		 55f=kJ
 	@ (((?	@ 	@ 	@s   #A??Bc                 4    |t        d            }t        t        j                  ddd|j                  j
                  ddj                  t        j                  t              d               5  |j                          d	d	d	       y	# 1 sw Y   y	xY w)
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   sz     T%%@A"   		 55f=kJ
 	 KKM	 	 	s   4BBc                 J   t        j                  t              }|d   }t        t	        |d         j                  |dg            d   } |d|i      }|j                         5 }t        |j                         |       d d d        |j                         5 }|j                  |       t        |j                         |       d d d        |j                         5 }t        |j                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   y xY w)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   226:#F;'(33Wl4KL 		 $5y#ABYY[ 	7D((*I6	7 YY[ 	5D""7";((*G4	5 YY[ 	7D((*I6	7 	7	7 	7	5 	5	7 	7s$   %D-DDD
DD"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
6$, 00@ 1@$ 0099 : 1* 667 77r4   r|   c                   B   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y)AutocommitIsolationTestrX   )
autocommitTc                 l    t        d|t        dt        dd      t        dt        d            d       y )	N
some_tabler[   TFr\   r_   r`   )test_needs_acidra   rb   s     r-   rd   z%AutocommitIsolationTest.define_tables  s/    4d%H66":& 	
r4   Fc                    |r7| j                   j                  j                  |d       |j                          |j	                         }|j                  | j                   j                  j                         ddd       |j                          t        |j                  t        | j                   j                  j                  j                              |rdnd        |j                          |j	                         5  |j                  | j                   j                  j                                d d d        y # 1 sw Y   y xY w)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)  s    KK""))$4)@KKM

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


(()G)GH##D%0r4   c                 ,    |}| j                  |d       y )NF)r   r+   r   r,   s      r-   test_autocommit_offz+AutocommitIsolationTest.test_autocommit_offF  s    "##D%0r4   c                     |}|j                  d      }| j                  |d       |j                  t        j                  t              d          | j                  |d       y )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  sg     #%%l%C##D$/(==fE 	 	

 	##D%0r4   autocommit_setting)falseengineoptionblock_rollbackc                 v   i }t        |      rd|d<   |j                  rd|d<    ||      }|j                         }|j                  r|j	                  d       | j                  ||j                  xs |j                  d       t        j                  j                  |j                  d|j                  j                  	      5 }|j                          d d d        |j                  s|s*t        j                  t        j                         g       y t        j                  g        y # 1 sw Y   XxY w)
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    -1B)*$$$0B !+~~$$""<"@##%%B);)B)B 	$ 	

 ZZOOZt/G/G  
 	JJL	 ##>))DIIK=9))2.	 	s   D//D8use_dialect_settingc                    |r |ddi      }n |       j                  d      }t        j                  t              }|d   }|j	                         5 }| j                  |d       ddd       |j	                         5 }|j                  |       | j                  |d       ddd       |j	                         5 }| j                  |d       ddd       y# 1 sw Y   rxY w# 1 sw Y   AxY w# 1 sw Y   yxY w)	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IA 22 , 3 A 226:#YY[ 	4D''d3	4 YY[ 	5D""7";''e4	5 YY[ 	4D''d3	4 	4	4 	4	5 	5	4 	4s$   C?%C$<C0C!$C-0C9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 ..W+-JKW'$7/ 8 L //8 66W,tUm<4 = 74r4   r   c                       e Zd Zed        Zy)EscapingTestc                 D   | j                   }t        d|t        dt        d                  }|j	                  t
        j                         t
        j                  j                         5 }|j                  |j                         t        d             |j                  |j                         t        d             t        |j                  t        |j                  j                        j!                  |j                  j                  t#        d      k(              d       t        |j                  t        |j                  j                        j!                  |j                  j                  t#        d      k(              d       d	d	d	       y	# 1 sw Y   y	xY w)
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$    MM#q&45	YY__ 	$LLT~%>?LLT/D%EF13388$**N3C$DD
  13388$**N3J$KK
 &	 	 	s   *D#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y) WeCanSetDefaultSchemaWEventsTestT)default_schema_name_switchc                     t         j                  j                  j                  }t	        j
                         }|j                         5  	 d d d        t        |j                  j                  |       y # 1 sw Y   *xY wr$   )r   r%   r'   default_schema_namer   r   r&   r	   )r+   r   r   s      r-   test_control_casez2WeCanSetDefaultSchemaWEventsTest.test_control_case  s^    $ii//CC$$&[[] 		 	CKK++-@A	 	s   	A44A=c                    t         j                  j                  j                  }t	        j
                         }t        j                  |d      d        }|j                         5 }|j                  j                  |      }t        |t         j                         d d d        t        |j                  j                  |       y # 1 sw Y   *xY w)Nr&   c                 B    t        t        | t        j                         y 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    $ii//CC$$&			3		*	 
+	
 [[] 	7d # D DT J!6#5#56	7 	CKK++-@A		7 	7s   %6CCc                 x   t        j                         }t        j                  |dd      d        }|j	                         5 }|j
                  j                  |      }t        |t        j                         d d d        t        |j
                  j                  t        j                         y # 1 sw Y   8xY w)Nr&   Trk   c                 B    t        t        | t        j                         y 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	 
8	
 [[] 	7d # D DT J!6#5#56	7 	CKK++V-?-?@		7 	7s   6B00B9c                 "   t        j                         }t        j                  |dd      d        }|j	                         5 }|j                         }|j                  j                  |      }t        |t        j                         |j                          |j                  j                  |      }t        |t        j                         d d d        t        |j                  j                  t        j                         y # 1 sw Y   8xY w)Nr&   Tr   c                 B    t        t        | t        j                         y 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	 
8	
 [[] 	7dJJLE # D DT J!6#5#56NN # D DT J!6#5#56	7 	CKK++V-?-?@	7 	7s   BDDN)	r/   r0   r1   r2   r   r   r   r   r   r3   r4   r-   r   r     s$    K2LBB"AAr4   r   c                       e Zd Zy)&FutureWeCanSetDefaultSchemaWEventsTestN)r/   r0   r1   r3   r4   r-   r  r    s     	r4   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y)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                 V   |}t        d|t        dt        d      t        |t        d      d            }|j	                  |       |j                  |j                         j                  dd|d	i             t        |j                  |         j                  |j                  |   d	k(        }t        |j                  |      d	       t        |j                  |         j                  |j                  |   t        |      k(        }|j                  ||d	i      j                         }t        |j                  |   d	       t        |j                  |         j                  |j                  |   j!                  d	d
g            }|j                  |      j                          y )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  se   
 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 &&(r4   c              #   $  K   t        d|t        dt              t        dt        d            t        dt        d                  }|j	                  |       |j                  |j                         dddd	d
ddd	dddd	dddd	g       | y w)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:		
 s   BBc                     |}t        |j                  j                        j                  |j                  j                  t        |d      k(        }|j                  ||di      }t        |d       y )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  s_      dffkk"((FFKK9Yc::
 y#&67Cr4   c           	      n   |}t        |j                  j                        j                  |j                  j                  j                  t        |ddg                  j                  |j                  j                        }|j                  ||ddgi      j                         }t        |ddg       y )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      466;;U466;;??9YsCj#IJKXdffkk" 	   	C:'>?CC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7$) 8 $)L __ ,    r4   r  c                   l    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y)ReturningGuardsTestz=test that the various 'returning' flags are set appropriatelyTc                 h    t        d|t        dt        dd      t        dt        d                   y )Nr   r[   TFr\   r_   r`   ra   rb   s     r-   rd   z!ReturningGuardsTest.define_tablesx  s,    4d%H66":&		
r4   c                 B    | j                   j                  fd}|S )Nc           
         | j                  j                  j                        } |r|stt        t        j
                  dj                  j                   dj                  j                   d      5  j                  | |dddi|dddi|d	dd
ig       d d d        y j                  | |dddi|dddi|d	dd
ig      }t        |j                         g d       y |s9t        t        j                        5  j                  | |dddi       d d d        y j                  | |dddi      }t        |j                         dg       y # 1 sw Y   y xY w# 1 sw Y   y xY w)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  s   >>!##&&)D% /**#J$6$6$;$;#<B%--445 6?@  #** !.64 @!.64 @!.64 @   (//*Avt<*Avt<*Avt<F 

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

tf-K : s   4"E
8E
EE)rj   r   )r+   r)   r@  r   s    ` @r-   run_stmtzReturningGuardsTest.run_stmt  s    KKMM-	.^ 	r4   c                     | j                   j                  }|j                         } ||dd|j                  j                         y )NFr[   )rj   r   rk   r'   insert_returningr+   r)   rA  r   r  s        r-   test_insert_singlez&ReturningGuardsTest.test_insert_single  s4    KKMMxxzudJ$6$6$G$GHr4   c                     | j                   j                  }|j                         } ||dd|j                  j                         y )NTr[   )rj   r   rk   r'   insert_executemany_returningrD  s        r-   test_insert_manyz$ReturningGuardsTest.test_insert_many  s7    KKMMxxz$j00MM	
r4   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y 
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      KKMMHHJ$'$'$'	
 xxz)F*; ;<ufj&8&8&I&IJr4   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y 
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      KKMMHHJ$'$'$'	
 xxz)F*; ;<$
 2 2 O O	
r4   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y 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                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y 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  sV    GK
 
 __2 2hI
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           $ *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
r4   