
    [hY                        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   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 d/ d0ej!                  Z, G d1 d2ej$                  Z-dS )3    N   )testing   )assert_raises)config)engines)eq_)fixtures)is_not_none)is_true)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     t/var/www/api.easyaligner.net/htdocs/venv_linux/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    r3   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_subclasses@   s      ! 	F 	FA<<$$ F'(@1(DEEE
 	))A,,CLL++--...III  	 	 	 	 	r3   )paramsc              #      K   |j         V  d S r#   )param)r*   requests     r,   all_subclasseszArgSignatureTest.all_subclassesL   s      mr3   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__r9   getattrr   r   varkwr.   )r*   rG   rA   kmethinsps         r,    test_all_visit_methods_accept_kwz1ArgSignatureTest.test_all_visit_methods_accept_kwP   s     		 		A||H%% sA-d33JIS\ I IA I I I  		 		r3   N)
r.   r/   r0   __doc__rB   r   fixturelistrG   rQ   r2   r3   r,   r5   r5   2   sy         
 
 
 W_DD!2!233444  54    r3   r5   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   rA   metadatas     r,   define_tableszExceptionTest.define_tablesk   sK    4d%HHH66"::&&		
 	
 	
 	
 	
r3   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rZ   r^   )r   r$   r%   beginexecutetablesrY   insertr   r   IntegrityErrorrollback)r*   r+   transs      r,   test_integrity_errorz"ExceptionTest.test_integrity_errort   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%   rh   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$;$;<<===> 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.   r/   r0   rR   run_deletesr1   classmethodrc   r   $duplicate_key_raises_integrity_errorrn   rv   r2   r3   r,   rV   rV   _   sq          KK
 
 [
 6  76 , , , , ,r3   rV   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Hr3   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@	
 	
 	
 	
 	
r3   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   rg   rl   )r*   r   
all_levelslevelr+   rm   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.   r/   r0   r1   __requires__r   r   r   r   r   requiresget_isolation_level_valuesr   #dialect_level_isolation_level_paramr    independent_readonly_connectionsr   r2   r3   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 7r3   r{   c                       e Zd ZdZdZdZed             Zd Zd Z	d Z
d Zej        j         ej        d	dd
g          d                         ZdS )AutocommitIsolationTestrW   )
autocommitTc                     t          d|t          dt          dd          t          dt          d                    d           d S )	N
some_tablerZ   TFr[   r^   r_   )test_needs_acidr`   ra   s     r,   rc   z%AutocommitIsolationTest.define_tables  sS    4d%HHH66"::&& 	
 	
 	
 	
 	
 	
r3   c                 4   |                                 }|                    | 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 )Nr   z	some datarf   )rg   rh   ri   r   rj   rl   r	   scalarr   crZ   delete)r*   r+   r   rm   s       r,   _test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits(  s9   

K"))++A{-K-K	
 	
 	
 	KKt{57:;;<<%AA	
 	
 	
 	ZZ\\ 	: 	:LL/6688999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   2DDD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_on8  sj    "##L#AA##B---

(()GHHH##D%00000r3   c                 6    |}|                      |d           d S )NF)r   r*   r   r+   s      r,   test_autocommit_offz+AutocommitIsolationTest.test_autocommit_offA  s#    "##D%00000r3   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_levelE  s     #%%l%CC##D$///(=fEE 	 	
 	
 	

 	##D%00000r3   use_dialect_settingFc                 `   |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_restoredS  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)r.   r/   r0   rw   r   r1   rx   rc   r   r   r   r   r   r   r   	variationr   r2   r3   r,   r   r     s        K"LK
 
 [
: : : 1 1 11 1 11 1 1 6W,tUm<<4 4 =< 764 4 4r3   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)rb   r   r   r   creater   r$   rg   rh   rj   r   r	   r   r   r   r^   wherer   )r*   mr   r+   s       r,   test_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_tripq  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.   r/   r0   r   r   r2   r3   r,   r   r   p  s.            r3   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  )    ,(&*<    r3   )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rj   c                 F    t          t          | t          j                   d S r#   r   r   s     r,   r   zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect  r   r3   )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   r3   )r   r   r   r   r%   rg   r&   r   r	   r   r   rl   r   )r*   r   r   r+   rm   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.   r/   r0   r1   r   r   r   r   r   r2   r3   r,   r   r     sh        K2LB B BB B B"A A AA A A A Ar3   r   c                       e Zd ZdS )&FutureWeCanSetDefaultSchemaWEventsTestN)r.   r/   r0   r2   r3   r,   r   r     s         	Dr3   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   rZ   T)r\   r_   F)nullabler   z	some namezsome other_name)r   r   r   r   r   rh   rj   valuesr   r   r   r	   r   r   first_mappingin_)r*   r   r(   rb   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:;;
 
   &&,,..r3   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   rh   rj   )r*   rb   r(   r  s       r,   multirow_fixturez(DifficultParametersTest.multirow_fixture  s      67##66"::&&66"::&&
 
 	z"""NNC::C::C::C::		
 	
 	
 r3   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_escape5  sp      dfk""((FK9Yc::::
 
 y#&677Cr3   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_expanding@  s      46;U46;??9YsCj#I#I#IJJKKXdfk"" 	   	C:'>??CCEEC!Qr3   N)r.   r/   r0   r1   r   combinationstough_parametersr   r   unusual_column_name_charactersr   rS   r  r  r  r2   r3   r,   r   r     s        K+w+$-  2 7$/ $/ 87 $/L _  _,        r3   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   rZ   TFr[   r^   r_   r`   ra   s     r,   rc   z!ReturningGuardsTest.define_tablesT  sK    4d%HHH66"::&&		
 	
 	
 	
 	
r3   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^   re   r   d2r   d3)r   )r   )r   r#  )	returningr   rZ   r   r   StatementErrorr&   r   driverrh   r	   r  r   rp   )r   executemanyid_param_nameexpect_successresultr(   r   s        r,   goz(ReturningGuardsTest.run_stmt.<locals>.goa  sq   >>!#&))D *.% : /*@J$6$; @ @%-4@ @ @    ",!3!3 !.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,)ri   r   )r*   r(   r+  r   s    ` @r,   run_stmtzReturningGuardsTest.run_stmt]  s3    KM-	. -	. -	. -	. -	. -	.^ 	r3   c                 v    | j         j        }|                                } ||dd|j        j                   d S )NFrZ   )ri   r   rj   r&   insert_returningr*   r(   r,  r   r   s        r,   test_insert_singlez&ReturningGuardsTest.test_insert_single  s:    KMxxzzudJ$6$GHHHHHr3   c                 v    | j         j        }|                                } ||dd|j        j                   d S )NTrZ   )ri   r   rj   r&   insert_executemany_returningr/  s        r,   test_insert_manyz$ReturningGuardsTest.test_insert_many  sE    KMxxzz$j0M	
 	
 	
 	
 	
r3   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   re   rf   r   r!  r   r"  b_idF)ri   r   rh   rj   updater   r   rZ   r   r&   update_returningr/  s        r,   test_update_singlez&ReturningGuardsTest.test_update_single      KMHHJJ$''$''$''	
 	
 	
 xxzz)F*;*; ;<<ufj&8&IJJJJJr3   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   re   rf   r   r!  r   r"  r6  T)ri   r   rh   rj   r7  r   r   rZ   r   r&   update_executemany_returningr/  s        r,   test_update_manyz$ReturningGuardsTest.test_update_many      KMHHJJ$''$''$''	
 	
 	
 xxzz)F*;*; ;<<$
 2 O	
 	
 	
 	
 	
r3   c                 :   | j         j        }|                    |                                dddddddddg           |                                                    |j        j        t          d          k              } ||d	d|j	        j
                   d S r5  )ri   r   rh   rj   r   r   r   rZ   r   r&   delete_returningr/  s        r,   test_delete_singlez&ReturningGuardsTest.test_delete_single  r:  r3   c                 :   | j         j        }|                    |                                dddddddddg           |                                                    |j        j        t          d          k              } ||d	d|j	        j
                   d S r<  )ri   r   rh   rj   r   r   r   rZ   r   r&   delete_executemany_returningr/  s        r,   test_delete_manyz$ReturningGuardsTest.test_delete_many  r?  r3   N)r.   r/   r0   rR   r1   rx   rc   r   rS   r,  r0  r3  r9  r>  rB  rE  r2   r3   r,   r  r  O  s        GGK
 
 [
 _2 2 _2hI I I
 
 
K K K 
 
 
$K K K 
 
 
 
 
r3   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!   r5   
TablesTestrV   r{   r   r   r   FutureEngineMixinr   r   r  r2   r3   r,   <module>rO     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@V4 V4 V4 V4 V4h1 V4 V4 V4r    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
r3   