
    5h$                        S SK Jr  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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(\RX                  5      r- " S) S*\RX                  5      r. " S+ S,\R^                  5      r0 " S- S.\RX                  5      r1 " S/ S0\RX                  5      r2 " S1 S2\RX                  5      r3 " S3 S4\RX                  5      r4 " S5 S6\\\RX                  5      r5 " S7 S8\RX                  5      r6 " S9 S:\RX                  5      r7 " S; S<\RX                  5      r8 " S= S>\RX                  5      r9 " S? S@\RX                  5      r: " SA SB\RX                  5      r; " SC SD\\RX                  5      r< " SE SF\RX                  5      r= " SG SH\RX                  5      r> " SI SJ\RX                  5      r?g)K    N   )AssertsCompiledSQL)AssertsExecutionResults)config)fixtures)assert_raises)eq_)in_)	CursorSQL)Column)Table   )	bindparam)case)column)Computed)exists)false)
ForeignKey)func)Identity)Integer)literal)literal_column)null)select)String)table)testing)text)true)tuple_)	TupleType)union)values)DatabaseError)ProgrammingErrorc                   v    \ rS rSrSr\S 5       r\S 5       rS r\	R                  R                  S 5       rSrg)	CollateTest1   Tc                 `    [        SU[        S[        SS9[        S[        S5      5      5        g )N
some_tableidTprimary_keydatad   r   r   r   r   clsmetadatas     o/var/www/html/cementerio_25MayoBackend/env/lib/python3.13/site-packages/sqlalchemy/testing/suite/test_select.pydefine_tablesCollateTest.define_tables4   s*    4d366#;'		
    c                 |    UR                  U R                  R                  R                  5       SSS.SSS./5        g )N   collate data1r-   r0   r   collate data2executetablesr,   insertr4   
connections     r6   insert_dataCollateTest.insert_data=   s;    JJ!!((*/2/2	
r9   c                     [         R                  R                  5        n[        UR	                  U5      R                  5       U5        S S S 5        g ! , (       d  f       g = fNr   dbconnectr	   r@   fetchallselfr   resultconns       r6   _assert_resultCollateTest._assert_resultG   <    YY DV$--/8 !     *A
A c                 h   [         R                  R                  [         R                  5      nU R	                  [        U R                  R                  5      R                  U R                  R                  R                  R                  R                  U5      R                  5       5      SS/5        g )N)r;   r<   )r   r>   )r   requiresget_order_by_collationr   rQ   r   rA   r,   order_bycr0   collateasc)rN   	collations     r6   test_collate_order_by!CollateTest.test_collate_order_byK   s    $$;;GNNK	4;;))*33&&((--55i@DDF "#78		
r9    N)__name__
__module____qualname____firstlineno____backend__classmethodr7   rE   rQ   r   rV   order_by_collationr]   __static_attributes__r_   r9   r6   r)   r)   1   sR    K
 
 
 
9 ((
 )
r9   r)   c                       \ rS rSrSrSr\S 5       r\S 5       rS r	S r
S rS	 rS
 rS r\R                   R"                  S 5       rSrg)OrderByLabelTestW   zTest the dialect sends appropriate ORDER BY expressions when
labels are used.

This essentially exercises the "supports_simple_order_by_label"
setting.

Tc                     [        SU[        S[        SS9[        S[        5      [        S[        5      [        S[        S5      5      [        S	[        S5      5      5        g )
Nr,   r-   Tr.   xyq2   pr2   r3   s     r6   r7   OrderByLabelTest.define_tablesb   sL    4d33 3 3r
#3r
#	
r9   c                     UR                  U R                  R                  R                  5       SSSSSS.SSSSSS.SSS	S
SS./5        g )Nr;   r   q1p3)r-   rl   rm   rn   rp   r   q2p2   q3p1r?   rC   s     r6   rE   OrderByLabelTest.insert_datan   sU    JJ!!((*qqt$?qqt$?qqt$?	
r9   c                     [         R                  R                  5        n[        UR	                  U5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   rM   s       r6   rQ   OrderByLabelTest._assert_resulty   rS   rT   c                     U R                   R                  nUR                  R                  R	                  S5      nU R                  [        U5      R                  U5      / SQ5        g )Nlxr;   r   r   )rA   r,   rY   rl   labelrQ   r   rX   rN   r   r~   s      r6   
test_plainOrderByLabelTest.test_plain}   sG    &&WWYY__T"F2J//35GHr9   c                     U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      nU R                  [        U5      R                  U5      / SQ5        g )Nr~   )r         )	rA   r,   rY   rl   rm   r   rQ   r   rX   r   s      r6   test_composed_int"OrderByLabelTest.test_composed_int   sV    &&ggii%''))#**40F2J//35GHr9   c                    U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      n[        R                  " UR                  R                  5      UR                  R                  -   R                  S5      nU R                  [        X#5      R                  X#R                  5       5      / SQ5        g )Nr~   ly))r   q1p3)r   q2p2)r   q3p1)rA   r,   rY   rl   rm   r   r   lowerrn   rp   rQ   r   rX   desc)rN   r   r~   r   s       r6   test_composed_multiple'OrderByLabelTest.test_composed_multiple   s    &&ggii%''))#**40jj#eggii/66t<2N##B	23	
r9   c                     U R                   R                  nUR                  R                  R	                  S5      nU R                  [        U5      R                  UR                  5       5      / SQ5        g )Nr~   )r   r   r   )	rA   r,   rY   rl   r   rQ   r   rX   r   r   s      r6   test_plain_desc OrderByLabelTest.test_plain_desc   sM    &&WWYY__T"F2J//	:<NOr9   c                    U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      nU R                  [        U5      R                  UR                  5       5      / SQ5        g )Nr~   )r   r   r   )
rA   r,   rY   rl   rm   r   rQ   r   rX   r   r   s      r6   test_composed_int_desc'OrderByLabelTest.test_composed_int_desc   s\    &&ggii%''))#**40F2J//	:<NOr9   c                 t   U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      n[        [        R                  " UR                  R                  5      U5      R                  U5      R                  U5      nU R                  U/ SQ5        g )Nr~   ))r;   r   )r;   r   )r;   r   )rA   r,   rY   rl   rm   r   r   r   countr-   group_byrX   rQ   )rN   r   exprstmts       r6   test_group_by_composed'OrderByLabelTest.test_group_by_composed   s    &&		EGGII%,,T24::eggjj)4099$?HHN 	 	D":;r9   r_   N)r`   ra   rb   rc   __doc__rd   re   r7   rE   rQ   r   r   r   r   r   r   rV   group_by_complex_expressionr   rg   r_   r9   r6   ri   ri   W   sv     K	
 	
 
 
9I
I

P
P
 11< 2<r9   ri   c                   "    \ rS rSrSrSrS rSrg)ValuesExpressionTest   )table_value_constructorTc                     [        [        S[        5      [        S[        5      SS9R	                  / SQ5      n[        UR                  [        U5      5      R                  5       / SQ5        g )Nr-   name	my_values)r   ))r;   name1)r   name2)r   name3)	r%   r   r   r   r0   r	   r@   r   all)rN   rD   
value_exprs      r6   test_tuples ValuesExpressionTest.test_tuples   sX    4!6&&#9

$9
: 	 	vj126686	
r9   r_   N)r`   ra   rb   rc   __requires__rd   r   rg   r_   r9   r6   r   r      s    /LK
r9   r   c                   h   \ rS rSrSr\S 5       r\S 5       r S)S jrS*S jr	S r
S	 r\R                  R                  S
 5       r\R                  R                   S 5       r\R$                  " / SQ/ SQ/ SQSS9\R                  R                   S 5       5       r\R                  R                  S 5       r\R                  R*                  S 5       r\R                  R                   S 5       r\R                  R                   S 5       r\R                  R                  S 5       r\R                  R4                  S 5       r\R                  R4                  S 5       r\R                  R4                  S 5       r\R                  R                  S 5       r\R                  R>                  S 5       r \R                  R>                  S 5       r!\R                  R>                  S 5       r"\R                  R                  \R                  RF                  S 5       5       r$\R                  R>                  S 5       r%\R                  R>                  S  5       r&\R                  RN                  S! 5       r(\R                  RN                  \R                  RR                  S" 5       5       r*\R                  RN                  \R                  RR                  S# 5       5       r+\R                  RX                  S$ 5       r-\R                  RX                  \R                  RR                  S% 5       5       r.\R                  RN                  \R                  RX                  S& 5       5       r/\R                  RN                  \R                  RX                  \R                  RR                  S' 5       5       5       r0Sr1g()+FetchLimitOffsetTest   Tc           
      t    [        SU[        S[        SS9[        S[        5      [        S[        5      5        g Nr,   r-   Tr.   rl   rm   r   r   r   r3   s     r6   r7   "FetchLimitOffsetTest.define_tables   0    4d33 3 	
r9   c                     UR                  U R                  R                  R                  5       SSSS.SSSS.SSSS.SSSS.SSSS./5        g )Nr;   r   r-   rl   rm   r   rw   r      r?   rC   s     r6   rE    FetchLimitOffsetTest.insert_data   s]    JJ!!((*qq)qq)qq)qq)qq)		
r9   r_   c                    U(       a\  UR                  X$5      R                  5       n[        [        U5      [        U5      5        [        [	        U5      [	        U5      5        g [        UR                  X$5      R                  5       U5        g rH   )r@   rL   r	   lenset)rN   rD   r   rO   paramsset_	query_ress          r6   rQ   #FetchLimitOffsetTest._assert_result   sd     "**6:CCEIIF,IF, 
""62;;=vFr9   c                     [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   )r   rJ   rK   r	   exec_driver_sqlrL   rN   r   rO   r   rP   s        r6   _assert_result_str'FetchLimitOffsetTest._assert_result_str   s>    YY D$$V4==?H !  rT   c                    U R                   R                  n[        U5      R                  UR                  R
                  5      nU R                  UUR                  S5      SS/5        U R                  UUR                  S5      / SQ5        g Nr   r;   r;   r   r   r   r   r   r   r   r   r   rw   )rA   r,   r   rX   rY   r-   rQ   limit)rN   rD   r   r   s       r6   test_simple_limit&FetchLimitOffsetTest.test_simple_limit   sr    &&e}%%eggjj1JJqM	"	

 	JJqM-	
r9   c                 D   U R                   R                  n[        UR                  R                  5      R                  S5      R                  5       n[        [        U5      [        U5      5      R                  5       R                  5       nU R                  UUS/5        g )Nr;   r   )
rA   r,   r   rY   r-   r   scalar_subqueryr$   subqueryrQ   )rN   rD   r   r   us        r6    test_limit_render_multiple_times5FetchLimitOffsetTest.test_limit_render_multiple_times   sy    &&eggjj!''*::<&,t-668??A	
r9   c                 p   U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        g r   rA   r,   rQ   r   rX   rY   r-   fetchrN   rD   r   s      r6   test_simple_fetch&FetchLimitOffsetTest.test_simple_fetch   s    &&5M""577::.44Q7	"	

 	5M""577::.44Q7-	
r9   c                 p   U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      SS/5        g )Nr   r   rw   rw   r   r   rw   r   r   r   r   rA   r,   rQ   r   rX   rY   r-   offsetr   s      r6   test_simple_offset'FetchLimitOffsetTest.test_simple_offset  s    &&5M""577::.55a8-	

 	5M""577::.55a8	"	
r9   )r   r   r   r;   r   r   )r   r   r   )r   r;   r   r   casesargnamesc                 2   U R                   R                  nUR                  0 S9n/ SQnU Hh  u  pVXFXe-    nU R                  U[	        U5      R                  UR                  R                  5      R                  U5      R                  U5      U5        Mj     g )N)compiled_cacher   r   r   r   r   )
rA   r,   execution_optionsrQ   r   rX   rY   r-   r   r   )rN   rD   r   r   assert_datar   r   expecteds           r6   test_simple_limit_offset-FetchLimitOffsetTest.test_simple_limit_offset  s     &&111D
M"ME"FN;Hu&&uwwzz288?FFvN #r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  S5      / SQ5        g )Nr   r;   r   r   r   r   	rA   r,   rQ   r   rX   rY   r-   r   r   r   s      r6   test_simple_fetch_offset-FetchLimitOffsetTest.test_simple_fetch_offset*  s    &&5M""577::.44Q7>>qA	"	
 	5M""577::.44Q7>>qA-	
r9   c                     U R                   R                  nU R                  U[        U5      R	                  S5      / SQSS9  g )N
   r   Tr   )rA   r,   rQ   r   r   r   s      r6   test_fetch_offset_no_order/FetchLimitOffsetTest.test_fetch_offset_no_order9  s?    &&5M#C	 	 	
r9   c                 p   U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        g )Nr   r   r;   r   r   r   r   r   r   s      r6   test_simple_offset_zero,FetchLimitOffsetTest.test_simple_offset_zeroC  s    &&5M""577::.55a8C	
 	5M""577::.55a88	
r9   c                 Z   U R                   R                  n[        U5      R                  UR                  R
                  5      R                  S5      R                  S5      nUR                  [        R                  R                  SS0S9n[        U5      nU R                  USS/5        g	z7test that 'literal binds' mode works - no bound params.r   r;   literal_bindsT)dialectcompile_kwargsr   r   N)rA   r,   r   rX   rY   r-   r   r   compiler   rJ   r	  strr   rN   r   r   sqls       r6   test_limit_offset_nobinds.FetchLimitOffsetTest.test_limit_offset_nobindsR       &&e}%%eggjj177:AA!DllII%%6M  
 #hi%;<r9   c                 Z   U R                   R                  n[        U5      R                  UR                  R
                  5      R                  S5      R                  S5      nUR                  [        R                  R                  SS0S9n[        U5      nU R                  USS/5        gr  )rA   r,   r   rX   rY   r-   r   r   r  r   rJ   r	  r  r   r  s       r6   test_fetch_offset_nobinds.FetchLimitOffsetTest.test_fetch_offset_nobinds_  r  r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      SS/SS0S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      / SQSS0S9  g )Nlr   r   r   r   r   r   )	rA   r,   rQ   r   rX   rY   r-   r   r   r   s      r6   test_bound_limit%FetchLimitOffsetTest.test_bound_limitl  s    &&5M""577::.44Ys^D	"8	 	 	
 	5M""577::.44Ys^D-8	 	 	
r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      / SQSS0S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      / SQSS0S9  g )Nor   r   r  r  r;   )	rA   r,   rQ   r   rX   rY   r-   r   r   r   s      r6   test_bound_offset&FetchLimitOffsetTest.test_bound_offset}  s    &&5M""577::.55inE-8	 	 	
 	5M""577::.55inE88	 	 	
r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      SS/SSS.S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      / S	QS
SS.S9  g )Nr  r  r   r   r   r;   )r  r  r  r   r   )
rA   r,   rQ   r   rX   rY   r-   r   r   r   r   s      r6   test_bound_limit_offset,FetchLimitOffsetTest.test_bound_limit_offset      &&5MXeggjj!U9S>"VIcN#	"# 	 	
 	5MXeggjj!U9S>"VIcN#-# 	 	
r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      SS/SSS.S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      / S	QS
SS.S9  g )Nfr  r   r   r   r;   )r#  r  r  r   r   )
rA   r,   rQ   r   rX   rY   r-   r   r   r   r   s      r6   test_bound_fetch_offset,FetchLimitOffsetTest.test_bound_fetch_offset  r!  r9   c           	          U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      SS/5        g )N12r   r   )	rA   r,   rQ   r   rX   rY   r-   r   r   r   s      r6   test_expr_offset%FetchLimitOffsetTest.test_expr_offset  s\    &&5MXeggjj!VN3'.*==>	"	
r9   c           	          U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      / SQ5        g )Nr'  r(  r   )	rA   r,   rQ   r   rX   rY   r-   r   r   r   s      r6   test_expr_limit$FetchLimitOffsetTest.test_expr_limit  sW    &&5MXeggjj!U>#&)<<=-	
r9   c           	      B   U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  [        S5      [        S5      -   5      SS/5        g Nr'  r   r   
rA   r,   rQ   r   rX   rY   r-   r   r   r   r   s      r6   test_expr_limit_offset+FetchLimitOffsetTest.test_expr_limit_offset  su    &&5MXeggjj!U>#&)<<=VN3'.*==>	"	
r9   c           	      B   U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  [        S5      [        S5      -   5      SS/5        g r/  )
rA   r,   rQ   r   rX   rY   r-   r   r   r   r   s      r6   test_expr_fetch_offset+FetchLimitOffsetTest.test_expr_fetch_offset  sw     &&5MXeggjj!U>#&)<<=VN3'.*==>	"	
r9   c           	          U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  [        S5      [        S5      -   5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  [        S5      [        S5      -   5      / SQ5        g )Nr   r'  r   r   r   r   )
rA   r,   rQ   r   rX   rY   r-   r   r   r   r   s      r6   test_simple_limit_expr_offset2FetchLimitOffsetTest.test_simple_limit_expr_offset  s    &&5MXeggjj!U1XVN3'.*==>	"	
 	5MXeggjj!U1XVN3'.*==>-	
r9   c           	          U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  S5      SS/5        g )Nr'  r   r   r   r;   r   r0  r   s      r6   test_expr_limit_simple_offset2FetchLimitOffsetTest.test_expr_limit_simple_offset   s    &&5MXeggjj!U>#&)<<=VAY	"	
 	5MXeggjj!U>#&)<<=VAY	"	
r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  R                  5       5      R                  SSS9SS/SS9  U R                  U[        U5      R	                  UR
                  R                  R                  5       5      R                  SSS9/ SQSS9  g )	Nr;   T	with_tiesr   r   r   r   r   	rA   r,   rQ   r   rX   rY   rl   r   r   r   s      r6   test_simple_fetch_ties+FetchLimitOffsetTest.test_simple_fetch_ties  s    &&5M""57799>>#34::1:M	"	 	 	
 	5M""57799>>#34::1:M-	 	 	
r9   c                 L   U R                   R                  nUR                  [        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      5      R                  5       n[        US   S5        [        [        U5      1 Sk5        g )Nr   Tr=  r   r      r   r   r   rA   r,   r@   r   rX   rY   rl   r   r   rL   r	   r   rN   rD   r   fas       r6   test_fetch_offset_ties+FetchLimitOffsetTest.test_fetch_offset_ties&  s~     &&5MXeggii U1U%VAY	

 (* 	 	BqE9CG67r9   c                    U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      SS	/5        g )
Nr   Tr=  r;   r   r   r   r   r   )	rA   r,   rQ   r   rX   rY   rl   r   r   r   s      r6   #test_fetch_offset_ties_exact_number8FetchLimitOffsetTest.test_fetch_offset_ties_exact_number3  s     &&5MXeggii U1U%VAY	"	
 	5MXeggii U1U%VAY	"	
r9   c                     U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9S/5        g )N   Tpercentr   r   r   s      r6   test_simple_fetch_percent.FetchLimitOffsetTest.test_simple_fetch_percentI  sQ    &&5M""577::.44R4FK	
r9   c                     U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      SS/5        g )N(   TrN  r;   r   r   r   r   s      r6   test_fetch_offset_percent.FetchLimitOffsetTest.test_fetch_offset_percentR  s\     &&5MXeggjj!U2tU$VAY	"	
r9   c           	          U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  R                  5       5      R                  SSSS9SS/SS9  g )NrM  TrO  r>  r   r   r   r?  r   s      r6   test_simple_fetch_percent_ties3FetchLimitOffsetTest.test_simple_fetch_percent_ties_  sd     &&5MXeggiinn&'U2ttU4	" 	 	
r9   c                 N   U R                   R                  nUR                  [        U5      R	                  UR
                  R                  5      R                  SSSS9R                  S5      5      R                  5       n[        US   S5        [        [        U5      1 Sk5        g )NrS  TrW  r   r   r   rC  rD  rE  s       r6   test_fetch_offset_percent_ties3FetchLimitOffsetTest.test_fetch_offset_percent_tiesl  s     &&5MXeggii U2ttU4VAY	

 (* 	 	BqE9CG67r9   N)r_   Fr_   )2r`   ra   rb   rc   rd   re   r7   rE   rQ   r   r   r   r   rV   fetch_firstr   r   r   combinationsr   r   fetch_no_order_byr   r  r  r  bound_limit_offsetr  r  r  r$  sql_expression_limit_offsetr)  r,  r1  fetch_expressionr4  r7  r:  
fetch_tiesr@  fetch_offset_with_optionsrG  rJ  fetch_percentrP  rT  rX  r[  rg   r_   r9   r6   r   r      s   K
 
 

 

 ;@	GI

 !!
 "
 
 
 	!	!	!	   !!
 "
 ''
 (
 
 
 
= 
= !!
= "
= ((
 )
  ((
 )
  ((
 )
, !!
 "
, 11
 2
 11
 2
 11	
 2	
 !!&&	
 ' "	
 11
 2
( 11
 2
(   
 !
    //	8 0 !	8   //
 0 !
( ##
 $
 ##//	
 0 $	
   ##	
 $ !	
   ##//	8 0 $ !	8r9   r   c                   R    \ rS rSrSrSrSr\S 5       r\S 5       r	S r
S rS	 rS
rg)SameNamedSchemaTableTesti{  ztests for #7471T)schemasc                     [        SU[        S[        SS9[        R                  S9  [        SU[        S[        SS9[        S[        SS95        g )	Nr,   r-   Tr.   )schemasome_table_idFnullable)r   r   r   r   test_schemar3   s     r6   r7   &SameNamedSchemaTableTest.define_tables  sR    4d3%%		
 	4d3		
	
r9   c                     U R                  SS[        R                  -  5      u  p#UR                  UR	                  5       SS05        UR                  UR	                  5       SSS.5        g )Nr,   %s.some_tabler-   r;   )r-   rl  )rA   r   ro  r@   rB   )r4   rD   r,   some_table_schemas       r6   rE   $SameNamedSchemaTableTest.insert_data  sa    (+

/F,>,>>)
%
 	,335ayA:,,.q10MNr9   c           
      *   U R                  SS[        R                  -  5      u  p#[        UR	                  [        X#5      R                  UUUR                  R                  UR                  R                  :H  5      5      R                  5       S5        g )Nr,   rr  r;   r;   r;   )rA   r   ro  r	   r@   r   	join_fromrY   rl  r-   firstrN   rD   r,   rs  s       r6   test_simple_join_both_tables5SameNamedSchemaTableTest.test_simple_join_both_tables  s    (,/F,>,>>)
%
 	z5??%LL..2C2E2E2H2HH eg		
r9   c           
      v   U R                  SS[        R                  -  5      u  p#[        UR	                  [        U5      R                  UUUR                  R                  UR                  R                  :H  5      R                  UR                  R                  S:H  5      5      R                  5       S5        g )Nr,   rr  r;   r;   r;   )rA   r   ro  r	   r@   r   rw  rY   rl  r-   whererx  ry  s       r6   !test_simple_join_whereclause_only:SameNamedSchemaTableTest.test_simple_join_whereclause_only  s    (,/F,>,>>)
%
 	z"%LL..2C2E2E2H2HH
 z||!+, eg	
r9   c           
         U R                  SS[        R                  -  5      u  p#[        U5      R	                  UUUR
                  R                  UR
                  R                  :H  5      R                  UR
                  R                  S:H  5      R                  5       n[        UR                  [        X$R
                  R                  5      R	                  UUUR
                  R                  UR
                  R                  :H  5      R                  UR
                  R                  S:H  5      5      R                  5       S5        g )Nr,   rr  r;   rv  )rA   r   ro  r   rw  rY   rl  r-   r~  r   r	   r@   rx  )rN   rD   r,   rs  subqs        r6   test_subquery&SameNamedSchemaTableTest.test_subquery  s    (,/F,>,>>)
%

 :Y!**.?.A.A.D.DD
 U:<<??a'(XZ 	 	z6699-LL..$&&));
 z||!+, eg	
r9   r_   N)r`   ra   rb   rc   r   rd   r   re   r7   rE   rz  r  r  rg   r_   r9   r6   rh  rh  {  sF    KL
 
& O O
 
$
r9   rh  c                   `    \ rS rSrSrSS jr\S 5       r\S 5       rS r	S r
S	 rS
 rS rSrg)JoinTesti  Tr_   c                     [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   r   s        r6   rQ   JoinTest._assert_result  <    YY DV,557@ !  rT   c                     [        SU[        S[        SS95        [        SU[        S[        SS9[        S[        S5      SS	95        g )
Nar-   Tr.   ba_idza.idFrm  )r   r   r   r   r3   s     r6   r7   JoinTest.define_tables  sB    c8VD'tDE4d36:f->		
r9   c           	         UR                  U R                  R                  R                  5       SS0SS0SS0SS0SS0/5        UR                  U R                  R                  R                  5       SSS.SSS.SSS.SSS./5        g )Nr-   r;   r   r   rw   r   )r-   r  )r@   rA   r  rB   r  rC   s     r6   rE   JoinTest.insert_data  s    JJLL!AYq	D!9tQi$C	

 	JJLL!!$!$!$!$		
r9   c                    U R                  SS5      u  p[        X5      R                  UR                  U5      5      R	                  UR
                  R                  UR
                  R                  5      nU R                  U/ SQ5        g Nr  r  )rv  )r;   r   r;   )r   rw   r   )r   r   r   rA   r   select_fromjoinrX   rY   r-   rQ   rN   r  r  r   s       r6   test_inner_join_fkJoinTest.test_inner_join_fk   ^    {{3$a|''q	2;;ACCFFACCFFKD"NOr9   c                    U R                  SS5      u  p[        X5      R                  UR                  U[	        5       5      5      R                  UR                  R                  UR                  R                  5      nU R                  U[        R                  " / SQ/ SQ5       VVVs/ sH  u  u  nu  p$XU4PM     snnn5        g s  snnnf )Nr  r  )r   r   r   rw   r   )r}  r   )rw   r   )r   r   )rA   r   r  r  r!   rX   rY   r-   rQ   	itertoolsproduct)rN   r  r  r   rY   s        r6   test_inner_join_trueJoinTest.test_inner_join_true  s    {{3$ 1L[46*+Xaccffaccff% 	 	 %.$5$524%%LDQ&1 q	%		
s   *Cc                 $   U R                  SS5      u  p[        X5      R                  UR                  U[	        5       5      5      R                  UR                  R                  UR                  R                  5      nU R                  U/ 5        g )Nr  r  )	rA   r   r  r  r   rX   rY   r-   rQ   r  s       r6   test_inner_join_falseJoinTest.test_inner_join_false  sg    {{3$ 1L[57+,Xaccffaccff% 	 	D"%r9   c                 (   U R                  SS5      u  p[        X5      R                  UR                  U[	        5       5      5      R                  UR                  R                  UR                  R                  5      nU R                  U/ SQ5        g )Nr  r  ))r;   NN)r   NN)r   NN)rw   NN)r   NN)	rA   r   r  	outerjoinr   rX   rY   r-   rQ   r  s       r6   test_outer_join_falseJoinTest.test_outer_join_false&  sm    {{3$ 1L[Q01Xaccffaccff% 	 			
r9   c                    U R                  SS5      u  p[        X5      R                  UR                  U5      5      R	                  UR
                  R                  UR
                  R                  5      nU R                  U/ SQ5        g r  r  r  s       r6   test_outer_join_fkJoinTest.test_outer_join_fk:  r  r9   Nr]  )r`   ra   rb   rc   rd   rQ   re   r7   rE   r  r  r  r  r  rg   r_   r9   r6   r  r    sP    KA 
 
 
 
 P
(	&
(Pr9   r  c                   4   \ rS rSrSr\S 5       r\S 5       rSS jrS r	S r
\R                  R                  \R                  R                  S	 5       5       r\R                  R                   S
 5       rS r\R                  R                  S 5       rS rSrg)CompoundSelectTestiB  Tc           
      t    [        SU[        S[        SS9[        S[        5      [        S[        5      5        g r   r   r3   s     r6   r7    CompoundSelectTest.define_tablesE  r   r9   c           
          UR                  U R                  R                  R                  5       SSSS.SSSS.SSSS.SSSS./5        g )Nr;   r   r   r   rw   r   r?   rC   s     r6   rE   CompoundSelectTest.insert_dataO  sS    JJ!!((*qq)qq)qq)qq)		
r9   r_   c                     [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   r   s        r6   rQ   !CompoundSelectTest._assert_result[  r  rT   c                 x   U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      n[        U5      R                  UR                  R
                  S:H  5      n[        X#5      nU R                  UR                  UR                  R
                  5      SS/5        g Nr   r   r   r   )
rA   r,   r   r~  rY   r-   r$   rQ   rX   selected_columnsrN   r   s1s2u1s        r6   test_plain_union#CompoundSelectTest.test_plain_union_  s    &&E]  q1E]  q12]KK++../)Y1G	
r9   c                    U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      n[        U5      R                  UR                  R
                  S:H  5      n[        X#5      R                  5       R                  5       nU R                  UR                  UR                  R
                  5      SS/5        g r  )rA   r,   r   r~  rY   r-   r$   aliasrQ   rX   r  r  s        r6   test_select_from_plain_union/CompoundSelectTest.test_select_from_plain_unioni  s    &&E]  q1E]  q12]  "))+KK++../)Y1G	
r9   c                 ^   U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g Nr   r;   r   r   r   )rA   r,   r   r~  rY   r-   r   rX   r$   rQ   r  r  s        r6   &test_limit_offset_selectable_in_unions9CompoundSelectTest.test_limit_offset_selectable_in_unionss  s     &&E]  q177:CCEGGJJOE]  q177:CCEGGJJO2]  #KK++../)Y1G	
r9   c                 "   U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  UR                  R
                  5      n[        U5      R                  UR                  R
                  S:H  5      R                  UR                  R
                  5      n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g r  )rA   r,   r   r~  rY   r-   rX   r$   r   rQ   r  r  s        r6   "test_order_by_selectable_in_unions5CompoundSelectTest.test_order_by_selectable_in_unions  s    &&E]  q1::577::FE]  q1::577::F2]  #KK++../)Y1G	
r9   c                    U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  5       n[        U5      R                  UR                  R
                  S:H  5      R                  5       n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g r  )rA   r,   r   r~  rY   r-   distinctr$   r   rQ   rX   r  r  s        r6   "test_distinct_selectable_in_unions5CompoundSelectTest.test_distinct_selectable_in_unions  s    &&E]  q1::<E]  q1::<2]  #KK++../)Y1G	
r9   c                    U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        X#5      R                  5       nU R                  UR                  5       R                  S5      R                  UR                  R
                  5      SS/5        g r  )rA   r,   r   r~  rY   r-   r   rX   r$   r  rQ   r  s        r6   &test_limit_offset_in_unions_from_alias9CompoundSelectTest.test_limit_offset_in_unions_from_alias  s    &&E]  q177:CCEGGJJOE]  q177:CCEGGJJO 2]  "IIKa ))"$$''2Y	4J	
r9   c                    U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      R                  5       R                  5       n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      R                  5       R                  5       n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g r  )rA   r,   r   r~  rY   r-   r   rX   r  r$   rQ   r  r  s        r6   .test_limit_offset_aliased_selectable_in_unionsACompoundSelectTest.test_limit_offset_aliased_selectable_in_unions  s    &&5MU577::?#U1XXeggjj!UWVX 	 5MU577::?#U1XXeggjj!UWVX 	 2]  #KK++../)Y1G	
r9   Nr]  )r`   ra   rb   rc   rd   re   r7   rE   rQ   r  r  r   rV   order_by_col_from_union/parens_in_union_contained_select_w_limit_offsetr  0parens_in_union_contained_select_wo_limit_offsetr  r  r  r  rg   r_   r9   r6   r  r  B  s    K
 
 	
 	
A

 --EE
 F .
 FF
 G

 EE	
 F	

r9   r  c                       \ rS rSrSrSr\S 5       r\S 5       rS r	S r
S rS	 r\R                  R                  S
 5       r\R                  R                  S 5       rSrg)PostCompileParamsTesti  T)standard_cursor_sqlc                     [        SU[        S[        SS9[        S[        5      [        S[        5      [        S[        S5      5      5        g 	Nr,   r-   Tr.   rl   rm   zro   r2   r3   s     r6   r7   #PostCompileParamsTest.define_tables  >    4d33 3 3r
#	
r9   c                     UR                  U R                  R                  R                  5       SSSSS.SSSSS.SSSSS.SSS	S
S./5        g Nr;   r   z1)r-   rl   rm   r  r   z2rw   z3r   z4r?   rC   s     r6   rE   !PostCompileParamsTest.insert_data  [    JJ!!((*qqt4qqt4qqt4qqt4		
r9   c                     U R                   R                  n[        UR                  R                  5      R                  UR                  R                  [        SSS9:H  5      nU R                  US0 5        g )Nrn   Tliteral_executezKSELECT some_table.id FROM some_table WHERE some_table.x = __[POSTCOMPILE_q]	rA   r,   r   rY   r-   r~  rl   r   assert_compilerN   r   r   s      r6   test_compile"PostCompileParamsTest.test_compile  s`    &&eggjj!''GGII3==
 	5		
r9   c           	          U R                   R                  n[        UR                  R                  5      R                  UR                  R                  [        SSSS9:H  5      nU R                  US0 SS9  g )Nrn   r   Tr  z<SELECT some_table.id FROM some_table WHERE some_table.x = 10)r  r  r  s      r6   test_compile_literal_binds0PostCompileParamsTest.test_compile_literal_binds  sh    &&eggjj!''GGII3DAA
 	J	 	 	
r9   c           	      L   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  [        SSS9:H  5      nU R                  5        n[        R                  R                  5        nUR                  U[        SS95        S S S 5        S S S 5        WR                  [        S[        R                  R                   R"                  (       a  SO0 5      5        g ! , (       d  f       N]= f! , (       d  f       Nf= f)Nrn   Tr  r   rn   z>SELECT some_table.id 
FROM some_table 
WHERE some_table.x = 10r_   )rA   r,   r   rY   r-   r~  rl   r   sql_execution_asserterr   rJ   rK   r@   dictassert_r   r	  
positionalrN   r   r   asserterrP   s        r6   test_execute"PostCompileParamsTest.test_execute  s    &&eggjj!''GGII3==
 ((*h""$T4":. % + 	,ii''22	
 %$ +*s$   4DD-D
D	D
D#c           
      j   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        SSSS95      5      nU R                  5        n[        R                  R                  5        nUR                  U[        / SQS95        S S S 5        S S S 5        WR                  [!        S[        R                  R"                  R$                  (       a  SO0 5      5        g ! , (       d  f       N]= f! , (       d  f       Nf= f)Nrn   T	expandingr  )r   r   r   r  zFSELECT some_table.id 
FROM some_table 
WHERE some_table.x IN (5, 6, 7)r_   )rA   r,   r   rY   r-   r~  rl   r
   r   r  r   rJ   rK   r@   r  r  r   r	  r  r  s        r6   +test_execute_expanding_plus_literal_executeAPostCompileParamsTest.test_execute_expanding_plus_literal_execute  s    &&eggjj!''GGIIMM)C4NO
 ((*h""$T4)#45 % + 	4ii''22	
 %$ +*s$   D$ D<D$
D!	D$$
D2c           
         U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        SSSS95      5      nU R                  5        n[        R                  R                  5        nUR                  U[!        SS/S95        S S S 5        S S S 5        WR#                  [%        S[        R                  R&                  R(                  (       a  SOS	-  [        R                  R&                  R*                  (       a  S
O0 5      5        g ! , (       d  f       N= f! , (       d  f       N= f)Nrn   Tr  )r   r   )      r  zbSELECT some_table.id 
FROM some_table 
WHERE (some_table.x, some_table.y) IN (%s(5, 10), (12, 18))VALUES  r_   )rA   r,   r   rY   r-   r~  r"   rl   rm   r
   r   r  r   rJ   rK   r@   r  r  r   r	  tuple_in_valuesr  r  s        r6   1test_execute_tuple_expanding_plus_literal_executeGPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_execute  s
   &&eggjj!''57799eggii(,,#tD
 ((*h""$T47H*=#>? % + 	+ !'		 1 1 A A9rK ii''22	
 %$ +*$   E0>EE0
E-	)E00
E>c           
         U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        SSSS95      5      nU R                  5        n[        R                  R                  5        nUR                  U[!        SS/S95        S S S 5        S S S 5        WR#                  [%        S[        R                  R&                  R(                  (       a  SOS	-  [        R                  R&                  R*                  (       a  S
O0 5      5        g ! , (       d  f       N= f! , (       d  f       N= f)Nrn   Tr  )r   r  )r  r  r  zfSELECT some_table.id 
FROM some_table 
WHERE (some_table.x, some_table.z) IN (%s(5, 'z1'), (12, 'z3'))r   r  r_   )rA   r,   r   rY   r-   r~  r"   rl   r  r
   r   r  r   rJ   rK   r@   r  r  r   r	  r  r  r  s        r6   ?test_execute_tuple_expanding_plus_literal_heterogeneous_executeUPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_heterogeneous_execute1  s
   &&eggjj!''57799eggii(,,#tD
 ((*h""$T49j*A#BC % + 	/ !'		 1 1 A A9rK ii''22	
 %$ +*r  r_   N)r`   ra   rb   rc   rd   r   re   r7   rE   r  r  r  r  r   rV   tuple_inr  r  rg   r_   r9   r6   r  r    s     K+L
 
 	
 	



&
& 
 
. 
 
r9   r  c                      \ rS rSrSr\S 5       r\S 5       rS%S jrS r	S r
\R                  R                  S	 5       r\R                  R                  S
 5       r\R                  R                  S 5       r\R                  R                  S 5       rS rS rS rS rS rS r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)Sr*g$)&ExpandingBoundInTestiJ  Tc                     [        SU[        S[        SS9[        S[        5      [        S[        5      [        S[        S5      5      5        g r  r2   r3   s     r6   r7   "ExpandingBoundInTest.define_tablesM  r  r9   c                     UR                  U R                  R                  R                  5       SSSSS.SSSSS.SSSSS.SSS	S
S./5        g r  r?   rC   s     r6   rE    ExpandingBoundInTest.insert_dataX  r  r9   r_   c                     [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   r   s        r6   rQ   #ExpandingBoundInTest._assert_resultd  r  rT   c                    U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ / / S.S9  g )Nrn   rp   )rn   rp   r  )rA   r,   r   rY   r-   r~  rl   r
   r   rm   rX   rQ   r  s      r6   "test_multiple_empty_sets_bindparam7ExpandingBoundInTest.test_multiple_empty_sets_bindparamh  s     &&577::U57799==301U57799==301Xeggjj!	 	 	D"2B-?@r9   c                    U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ 5        g rH   )rA   r,   r   rY   r-   r~  rl   r
   rm   rX   rQ   r  s      r6   test_multiple_empty_sets_direct4ExpandingBoundInTest.test_multiple_empty_sets_directt  s     &&577::U57799==$%U57799==$%Xeggjj!	 	 	D"%r9   c                    U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g Nrn   r  rA   r,   r   rY   r-   r~  r"   rl   r  r
   r   rX   rQ   r  s      r6   )test_empty_heterogeneous_tuples_bindparam>ExpandingBoundInTest.test_empty_heterogeneous_tuples_bindparam      &&577::U6%''))UWWYY/33IcNCDXeggjj! 	
 	D"c2Y7r9   c                    ^ ^ T R                   R                  mU U4S jnU" / / 5        U" / SQ/ SQ5        U" / / 5        g )Nc                 L  > [        TR                  R                  5      R                  [	        TR                  R
                  TR                  R                  5      R                  U 5      5      R                  TR                  R                  5      nTR                  X!5        g rH   )
r   rY   r-   r~  r"   rl   r  r
   rX   rQ   valr   r   rN   r   s      r6   goGExpandingBoundInTest.test_empty_heterogeneous_tuples_direct.<locals>.go  f    uwwzz"veggii377<=%''**% 
 /r9   )r   r  )r   r  )rw   r  r   r   r  rA   r,   rN   r"  r   s   ` @r6   &test_empty_heterogeneous_tuples_direct;ExpandingBoundInTest.test_empty_heterogeneous_tuples_direct  s7    &&	0 	2r

,.@A
2r
r9   c                    U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g r  rA   r,   r   rY   r-   r~  r"   rl   rm   r
   r   rX   rQ   r  s      r6   'test_empty_homogeneous_tuples_bindparam<ExpandingBoundInTest.test_empty_homogeneous_tuples_bindparam  r  r9   c                    ^ ^ T R                   R                  mU U4S jnU" / / 5        U" / SQ/ SQ5        U" / / 5        g )Nc                 L  > [        TR                  R                  5      R                  [	        TR                  R
                  TR                  R                  5      R                  U 5      5      R                  TR                  R                  5      nTR                  X!5        g rH   )
r   rY   r-   r~  r"   rl   rm   r
   rX   rQ   r   s      r6   r"  EExpandingBoundInTest.test_empty_homogeneous_tuples_direct.<locals>.go  r$  r9   ))r;   r   r   r   r   rw   r   r'  r(  s   ` @r6   $test_empty_homogeneous_tuples_direct9ExpandingBoundInTest.test_empty_homogeneous_tuples_direct  s7    &&	0 	2r

#%78
2r
r9   c                 X   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ SQ0S9  g )Nrn   r&  r   r   rw   r  rA   r,   r   rY   r-   r~  rl   r
   r   rX   rQ   r  s      r6   test_bound_in_scalar_bindparam3ExpandingBoundInTest.test_bound_in_scalar_bindparam  st    &&577::U57799==301Xeggjj! 	
 	D"4c9=MNr9   c                 D   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / SQ5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g )Nr7  r&  
rA   r,   r   rY   r-   r~  rl   r
   rX   rQ   r  s      r6   test_bound_in_scalar_direct0ExpandingBoundInTest.test_bound_in_scalar_direct  sf    &&577::U57799==+,Xeggjj! 	
 	D"45r9   c                    U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  SS/5      5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  USS/5        g )Nr   r   r   r   rA   r,   r   rY   r-   r~  rl   r
   not_inrX   rQ   r  s      r6   !test_nonempty_in_plus_empty_notin6ExpandingBoundInTest.test_nonempty_in_plus_empty_notin  s    &&577::U57799==!Q()U577::$$R()Xeggjj!	 	 	D4,/r9   c                    U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  R                  SS/5      5      R                  UR                  R                  5      nU R                  U/ 5        g )Nr   r   r@  r  s      r6   !test_empty_in_plus_notempty_notin6ExpandingBoundInTest.test_empty_in_plus_notempty_notin  s    &&577::U57799==$%U577::$$aV,-Xeggjj!	 	 	D"%r9   c                     [        S5      R                  [        S[        SS95      nU R	                  U/ SQS/ SQ0S9  g)	zntest related to #7292.

as a type is given to the bound param, there is no ambiguity
to the type of element.

3select id FROM some_table WHERE z IN :q ORDER BY idrn   Ttype_r  r&  r  r  r  r  N)r    
bindparamsr   r   rQ   rN   r   s     r6   test_typed_str_in&ExpandingBoundInTest.test_typed_str_in  sK     A

*Ys&DA
B 	 	+, 	 	
r9   c                 v    [        S5      R                  [        SSS95      nU R                  U/ SQS/ SQ0S9  g)	ztest related to #7292.

for untyped expression, we look at the types of elements.
Test for Sequence to detect tuple in.  but not strings or bytes!
as always....

rH  rn   Tr  r&  rK  r  Nr    rL  r   rQ   rM  s     r6   test_untyped_str_in(ExpandingBoundInTest.test_untyped_str_in  sI     A

*Ysd3
4 	 	+, 	 	
r9   c                    U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ SQ0S9  g )Nrn   r&  r2  r3  )rw   r   r  r,  r  s      r6   !test_bound_in_two_tuple_bindparam6ExpandingBoundInTest.test_bound_in_two_tuple_bindparam  s    &&577::U6%''))UWWYY/33IcNCDXeggjj! 	
 	$c3K-L 	 	
r9   c                    U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  / SQ5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g )NrV  r&  )rA   r,   r   rY   r-   r~  r"   rl   rm   r
   rX   rQ   r  s      r6   test_bound_in_two_tuple_direct3ExpandingBoundInTest.test_bound_in_two_tuple_direct	  sx    &&577::U6%''))UWWYY/334LMNXeggjj! 	
 	D"45r9   c                    U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ SQ0S9  g )Nrn   r&  r%  r  r  r  s      r6   /test_bound_in_heterogeneous_two_tuple_bindparamDExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_bindparam  s    &&577::U6%''))UWWYY/33IcNCDXeggjj! 	
 	:; 	 	
r9   c                    U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  / SQ5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g )Nr%  r&  )rA   r,   r   rY   r-   r~  r"   rl   r  r
   rX   rQ   r  s      r6   ,test_bound_in_heterogeneous_two_tuple_directAExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_direct!  s    &&577::Uuwwyy%'')),005
 Xeggjj! 	 		
r9   c                 v    [        S5      R                  [        SSS95      nU R                  U/ SQS/ SQ0S9  g )N8select id FROM some_table WHERE (x, z) IN :q ORDER BY idrn   TrQ  r&  r%  r  rR  rM  s     r6   4test_bound_in_heterogeneous_two_tuple_text_bindparamIExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam2  sI     F

*Ysd3
4 	 	:; 	 	
r9   c                 
    " S S[         R                  5      n[        S5      R                  [	        S[        [        5       [        5       5      SS95      nU R                  U/ SQSU" SS	5      U" S
S5      U" SS5      /0S9  g )Nc                   ,    \ rS rSrS rS rS rS rSrg)hExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATupleiA  c                     Xl         g rH   _datarN   r0   s     r6   __init__qExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__init__B      !
r9   c                 ,    [        U R                  5      $ rH   iterrk  rN   s    r6   __iter__qExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__iter__E      DJJ''r9   c                      U R                   U   $ rH   rj  rN   idxs     r6   __getitem__tExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__getitem__H      zz#&r9   c                 ,    [        U R                  5      $ rH   r   rk  rs  s    r6   __len__pExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__len__K      4::&r9   rj  N	r`   ra   rb   rc   rm  rt  rz  r  rg   r_   r9   r6   
LikeATuplerh  A      "(''r9   r  rc  rn   TrI  r&  r   r  r   r  rw   r  r  )	collections_abcSequencer    rL  r   r#   r   r   rQ   rN   r  r   s      r6   ?test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tupleTExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple?  s    	'11 	' F

*9WY9T
 	 	q$'q$'q$' 	 
	
r9   c                      " S S[         R                  5      n[        S5      R                  [	        SSS95      nU R                  U/ SQSU" SS	5      U" S
S5      U" SS5      /0S9  g )Nc                   ,    \ rS rSrS rS rS rS rSrg)gExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATupleif  c                     Xl         g rH   rj  rl  s     r6   rm  pExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__init__g  ro  r9   c                 ,    [        U R                  5      $ rH   rq  rs  s    r6   rt  pExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__iter__j  rv  r9   c                      U R                   U   $ rH   rj  rx  s     r6   rz  sExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__getitem__m  r|  r9   c                 ,    [        U R                  5      $ rH   r~  rs  s    r6   r  oExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__len__p  r  r9   rj  Nr  r_   r9   r6   r  r  f  r  r9   r  rc  rn   TrQ  r&  r   r  r   r  rw   r  r  )r  r  r    rL  r   rQ   r  s      r6   >test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tupleSExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplea  s}    
	'11 	' F

*Ysd3
4 	 	q$'q$'q$' 	 
	
r9   c                 P   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g r  r8  r  s      r6   (test_empty_set_against_integer_bindparam=ExpandingBoundInTest.test_empty_set_against_integer_bindparam  r    &&577::U57799==301Xeggjj! 	
 	D"c2Y7r9   c                 <   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ 5        g rH   r<  r  s      r6   %test_empty_set_against_integer_direct:ExpandingBoundInTest.test_empty_set_against_integer_direct  b    &&eggjj!''		b(9:CCEGGJJOD"%r9   c                 T   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ 0S9  g Nrn   r   r   r   r  r  )rA   r,   r   rY   r-   r~  rl   rA  r   rX   rQ   r  s      r6   1test_empty_set_against_integer_negation_bindparamFExpandingBoundInTest.test_empty_set_against_integer_negation_bindparam  u    &&577::U57799##IcN34Xeggjj! 	
 	D":C9Mr9   c                 @   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g Nr  )
rA   r,   r   rY   r-   r~  rl   rA  rX   rQ   r  s      r6   .test_empty_set_against_integer_negation_directCExpandingBoundInTest.test_empty_set_against_integer_negation_direct  j    &&577::$$UWWYY%5%5b%9:CCEGGJJO 	 	D":;r9   c                 P   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g r  )rA   r,   r   rY   r-   r~  r  r
   r   rX   rQ   r  s      r6   'test_empty_set_against_string_bindparam<ExpandingBoundInTest.test_empty_set_against_string_bindparam  r  r9   c                 <   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ 5        g rH   )
rA   r,   r   rY   r-   r~  r  r
   rX   rQ   r  s      r6   $test_empty_set_against_string_direct9ExpandingBoundInTest.test_empty_set_against_string_direct  r  r9   c                 T   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ 0S9  g r  )rA   r,   r   rY   r-   r~  r  rA  r   rX   rQ   r  s      r6   0test_empty_set_against_string_negation_bindparamEExpandingBoundInTest.test_empty_set_against_string_negation_bindparam  r  r9   c                 @   U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g r  )
rA   r,   r   rY   r-   r~  r  rA  rX   rQ   r  s      r6   -test_empty_set_against_string_negation_directBExpandingBoundInTest.test_empty_set_against_string_negation_direct  r  r9   c                     [        [        [        5       R                  [	        SSS95      [        5       4[        5       S95      n[        UR                  U5      R                  5       S   S5        g )Nfoor_   )valueelse_r   Fr   )	r   r   r   r
   r   r!   r   r@   fetchonerN   rD   r   s      r6   )test_null_in_empty_set_is_false_bindparam>ExpandingBoundInTest.test_null_in_empty_set_is_false_bindparam  s_    FJJyb9:F g
 	Jt$--/2J?r9   c                     [        [        [        5       R                  / 5      [	        5       4[        5       S95      n[        UR                  U5      R                  5       S   S5        g )Nr  r   r  )r   r   r   r
   r!   r   r@   r  r  s      r6   &test_null_in_empty_set_is_false_direct;ExpandingBoundInTest.test_null_in_empty_set_is_false_direct  sW    FJJrNF g
 	Jt$--/2J?r9   Nr]  )+r`   ra   rb   rc   rd   re   r7   rE   rQ   r  r  r   rV   tuple_in_w_emptyr  r)  r-  r4  r9  r=  rB  rE  rN  rS  r	  rW  rZ  r]  r`  rd  r  r  r  r  r  r  r  r  r  r  r  r  rg   r_   r9   r6   r  r  J  s   K
 
 	
 	
A
A
& &&8 '8 && ' &&8 '8 && 'O60&
"
$ 	
 	
 6 6 
 
 
 
  

 

 
 
B 
 
@8&
N<8&
N<
@
@r9   r  c                      \ rS rSrSrSrSr\S 5       r\S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS r\R4                  R6                  S 5       r\R4                  R:                  S 5       r\R4                  R6                  \R>                  " S1 Sk4S1 Sk4S1 Sk4SS14S\ " \!" S S!5      5      4S"\ " \!" S S!5      5      4S#\ " 5       45      S$ 5       5       r"S%r#g)&LikeFunctionsTesti  TonceNc                 `    [        SU[        S[        SS9[        S[        S5      5      5        g )Nr,   r-   Tr.   r0   ro   r2   r3   s     r6   r7   LikeFunctionsTest.define_tables  s*    4d366":&		
r9   c                     UR                  U R                  R                  R                  5       SSS.SSS.SSS.SS	S.S
SS.SSS.SSS.SSS.SSS.SSS.SS S./5        g )Nr;   abcdefgr=   r   zab/cdefgr   zab%cdefgrw   ab_cdefgr   zabcde/fgr   zabcde%fgr   zab#cdefg   ab9cdefg	   zabcde#fgr   abcd9fg   r?   rC   s     r6   rE   LikeFunctionsTest.insert_data  s    JJ!!((*),*-*-*-*-*-*-*-*-9-4(	
r9   c                 ^   U R                   R                  n[        R                  R	                  5        nUR                  [        UR                  R                  5      R                  U5      5       Vs1 sH  u  nUiM	     nnS S S 5        [        WU5        g s  snf ! , (       d  f       N = frH   )rA   r,   r   rJ   rK   r@   r   rY   r-   r~  r	   )rN   r   r   r,   rP   r  rowss          r6   _testLikeFunctionsTest._test  s    [[++
YY D #ll6*,,//+B+H+H+NOOFE O   ! 	D( ! s   A B5BBB
B,c                     U R                   R                  R                  R                  nU R	                  UR                  S5      1 Sk5        g )Nab%c
   r;   r   r   rw   r   r   r   r  r  r   rA   r,   rY   r0   r  
startswithrN   cols     r6   test_startswith_unescaped+LikeFunctionsTest.test_startswith_unescaped  s5    kk$$&&++

3>>&)+JKr9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nr  T
autoescaper   r  r  s     r6   test_startswith_autoescape,LikeFunctionsTest.test_startswith_autoescape  s:    kk$$&&++

3>>&T>:QC@r9   c                     U R                   R                  R                  R                  nU R	                  UR                  [        S5      5      1 Sk5        g )Nz'ab%c'r  )rA   r,   rY   r0   r  r  r   r  s     r6   test_startswith_sqlexpr)LikeFunctionsTest.test_startswith_sqlexpr  s=    kk$$&&++

NN>(34+	
r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nzab##c#escaper   r  r  s     r6   test_startswith_escape(LikeFunctionsTest.test_startswith_escape  s:    kk$$&&++

3>>'#>6<r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSSS9S15        U R	                  UR                  SSSS9S15        g )Nr  Tr  r  r  r   zab#cr   r  r  s     r6   !test_startswith_autoescape_escape3LikeFunctionsTest.test_startswith_autoescape_escape  s[    kk$$&&++

3>>&T#>FL

3>>&T#>FLr9   c                     U R                   R                  R                  R                  nU R	                  UR                  S5      1 Sk5        g )Ne%fg	   r;   r   r   rw   r   r   r   r  r  rA   r,   rY   r0   r  endswithr  s     r6   test_endswith_unescaped)LikeFunctionsTest.test_endswith_unescaped  s5    kk$$&&++

3<<')DEr9   c                     U R                   R                  R                  R                  nU R	                  UR                  [        S5      5      1 Sk5        g )Nz'e%fg'r  )rA   r,   rY   r0   r  r  r   r  s     r6   test_endswith_sqlexpr'LikeFunctionsTest.test_endswith_sqlexpr   s=    kk$$&&++

LL124O	
r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nr  Tr  r   r  r  s     r6   test_endswith_autoescape*LikeFunctionsTest.test_endswith_autoescape&  s:    kk$$&&++

3<<4<81#>r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nze##fgr  r  r  r  r  s     r6   test_endswith_escape&LikeFunctionsTest.test_endswith_escape*  s:    kk$$&&++

3<<<4qc:r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSSS9S15        U R	                  UR                  SSSS9S15        g )Nr  Tr  r  r   ze#fgr  r  r  s     r6   test_endswith_autoescape_escape1LikeFunctionsTest.test_endswith_autoescape_escape.  [    kk$$&&++

3<<4<DqcJ

3<<4<DqcJr9   c                     U R                   R                  R                  R                  nU R	                  UR                  S5      1 Sk5        g )Nb%cder  rA   r,   rY   r0   r  containsr  s     r6   test_contains_unescaped)LikeFunctionsTest.test_contains_unescaped3  s5    kk$$&&++

3<<(*EFr9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nr  Tr  r   r  r  s     r6   test_contains_autoescape*LikeFunctionsTest.test_contains_autoescape7  s:    kk$$&&++

3<<D<9A3?r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nzb##cder  r  r   r  r  s     r6   test_contains_escape&LikeFunctionsTest.test_contains_escape;  s:    kk$$&&++

3<<<5s;r9   c                     U R                   R                  R                  R                  nU R	                  UR                  SSSS9S15        U R	                  UR                  SSSS9S15        g )Nzb%cdTr  r  r   zb#cdr   r  r  s     r6   test_contains_autoescape_escape1LikeFunctionsTest.test_contains_autoescape_escape?  r  r9   c                     U R                   R                  R                  R                  nU R	                  UR                  S5      ) 1 Sk5        g )Na.cde>   r   r   rw   r   r  r   rA   r,   rY   r0   r  regexp_matchr  s     r6   test_not_regexp_match'LikeFunctionsTest.test_not_regexp_matchD  s:    kk$$&&++

C$$W--/BCr9   c                     U R                   R                  R                  R                  nU R	                  UR                  SS5      R                  S5      1 Sk5        g )Nr  FOO   r;   r   r   r  )rA   r,   rY   r0   r  regexp_replacer  r  s     r6   test_regexp_replace%LikeFunctionsTest.test_regexp_replaceI  sF    kk$$&&++

w.77>	
r9   r  r  abc>   r;   r   r   r  r   z^abc9cder  z^ar;   r  z(b|c)z^(b|c)c                     U R                   R                  R                  R                  nU R	                  UR                  U5      U5        g rH   r  )rN   r    r   r  s       r6   test_regexp_match#LikeFunctionsTest.test_regexp_matchP  s8     kk$$&&++

3##D)84r9   r_   )$r`   ra   rb   rc   rd   run_insertsrun_deletesre   r7   rE   r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r   rV   r  r  r  r  r_  r   ranger#  rg   r_   r9   r6   r  r    sR   KKK
 
 
 
$	LA
=M
F
?;K
G@<K
 ""D #D $$
 %
 ""	,	 !	!"	!	s5B< !	#eArl#$	355 #5r9   r  c                   H    \ rS rSrSrSr\S 5       r\S 5       rS r	S r
Srg	)
ComputedColumnTesti_  T)computed_columnsc                     [        SU[        S[        SS9[        S[        5      [        S[        [        S5      5      [        S[        [        S	5      5      5        g )
Nsquarer-   Tr.   sideareazside * side	perimeterz4 * side)r   r   r   r   r3   s     r6   r7    ComputedColumnTest.define_tablesc  sH    4d367#67H]$;<;*)=>	
r9   c                 |    UR                  U R                  R                  R                  5       SSS.SSS./5        g )Nr;   r   )r-   r-  *   )r@   rA   r,  rB   rC   s     r6   rE   ComputedColumnTest.insert_datan  s8    JJ$$&r"2r$:;	
r9   c                    [         R                  R                  5        nUR                  [	        [        S5      5      R                  U R                  R                  5      R                  U R                  R                  R                  R                  5      5      R                  5       n[        USS/5        S S S 5        g ! , (       d  f       g = f)N*)r;   r   r1   rS  )r   r2       )r   rJ   rK   r@   r   r    r  rA   r,  rX   rY   r-   rL   r	   rN   rP   ress      r6   test_select_all"ComputedColumnTest.test_select_allu  s    YY D,,tCy!T[[//0$++,,..112 hj	 
 &(;<= !  s   BC
Cc                 6   [         R                  R                  5        nUR                  [	        U R
                  R                  R                  R                  U R
                  R                  R                  R                  5      R                  U R
                  R                  5      R                  U R
                  R                  R                  R                  5      5      R                  5       n[        USS/5        S S S 5        g ! , (       d  f       g = f)N)r1   rS  )r6  r7  )r   rJ   rK   r@   r   rA   r,  rY   r.  r/  r  rX   r-   rL   r	   r8  s      r6   test_select_columns&ComputedColumnTest.test_select_columns~  s    YY D,,KK&&((--t{{/A/A/C/C/M/M T[[//0$++,,..112 hj  i-. !  s   C"D


Dr_   N)r`   ra   rb   rc   rd   r   re   r7   rE   r:  r=  rg   r_   r9   r6   r)  r)  _  s<    K(L
 
 
 
>	/r9   r)  c                       \ rS rSrSrSrSrSr\S 5       r	\S 5       r
S rS r\R                  R                  S	 5       rS
rg)IdentityColumnTesti  T)identity_columnsr  c                     [        SU[        S[        [        SSSSS9SS9[        S[	        S5      5      5        [        S	U[        S[        [        S
SSSS9SS9[        S[	        S5      5      5        g )Ntbl_ar-   Tr2  )alwaysstart
nominvalue
nomaxvaluer.   r   r1   tbl_br   i)	incrementrE  minvaluemaxvaluer   r   r   r   r   r3   s     r6   r7    IdentityColumnTest.define_tables  s    rdt ! 66#;'	
 	2QK 	 66#;'
	
r9   c                 \   UR                  U R                  R                  R                  5       SS0SS0/5        UR                  U R                  R                  R                  5       SS0SS0/5        UR                  U R                  R                  R                  5       SSS./5        g )Nr   r  r  r2  rY   r-   r   )r@   rA   rC  rB   rH  rC   s     r6   rE   IdentityColumnTest.insert_data  s    JJ##%c]VSM*	
 	JJ##%c]VSM*	
 	JJ##%$%	
r9   c                 h   UR                  [        [        S5      5      R                  U R                  R
                  5      R                  U R                  R
                  R                  R                  5      5      R                  5       n[        USS/5        UR                  [        [        S5      5      R                  U R                  R                  5      R                  U R                  R                  R                  R                  5      5      R                  5       n[        U/ SQ5        g )Nr5  )r2  r  )+   r  ))rI  r  )r   r  )r2  rY   )r@   r   r    r  rA   rC  rX   rY   r-   rL   r	   rH  rN   rD   r9  s      r6   r:  "IdentityColumnTest.test_select_all  s      49[**+Xdkk'')),,-
 (*	 	
 	C)Y'(  49[**+Xdkk'')),,-
 (*	 	
 	C12r9   c                 .   UR                  [        U R                  R                  R                  R
                  5      R                  U R                  R                  R                  R
                  5      5      R                  5       n[        USS/5        g )N)r2  )rS  )	r@   r   rA   rC  rY   r-   rX   rL   r	   rT  s      r6   r=  &IdentityColumnTest.test_select_columns  sk      4;;$$&&))*33DKK4E4E4G4G4J4JK

(* 	 	C% r9   c                 B   ^ ^ UU 4S jn[        [        [        4U5        g )Nc                  v   > T R                  TR                  R                  R                  5       SSS./5        g )N   r  rP  )r@   rA   rC  rB   )rD   rN   s   r6   fn7IdentityColumnTest.test_insert_always_error.<locals>.fn  s2    !!((*S)*r9   )r   r&   r'   )rN   rD   r[  s   `` r6   test_insert_always_error+IdentityColumnTest.test_insert_always_error  s    	 	}&67<r9   r_   N)r`   ra   rb   rc   rd   r   r%  r&  re   r7   rE   r:  r=  r   rV   identity_columns_standardr]  rg   r_   r9   r6   r@  r@    sf    K(LKK
 
4 
 
3! //= 0=r9   r@  c                   2    \ rS rSrSrSr\S 5       rS rSr	g)IdentityAutoincrementTesti  T)autoincrement_without_sequencec                 t    [        SU[        S[        [        5       SSS9[        S[	        S5      5      5        g )Ntblr-   T)r/   autoincrementr   r1   rM  r3   s     r6   r7   'IdentityAutoincrementTest.define_tables  s9    
 " 66#;'	
r9   c                 
   UR                  U R                  R                  R                  5       SS05      nUR                  U R                  R                  R	                  5       5      R                  5       n[        US5        g )Nr   row)r;   rh  )r@   rA   rd  rB   r   rx  r	   rT  s      r6    test_autoincrement_with_identity:IdentityAutoincrementTest.test_autoincrement_with_identity  s]      !7!7!9FE?K  !7!7!9:@@BCr9   r_   N)
r`   ra   rb   rc   rd   r   re   r7   ri  rg   r_   r9   r6   ra  ra    s#    K6L
 
r9   ra  c                   D    \ rS rSrSr\S 5       r\S 5       rS rS r	Sr
g)	
ExistsTesti  Tc                 `    [        SU[        S[        SS9[        S[        S5      5      5        g )Nstuffr-   Tr.   r0   ro   r2   r3   s     r6   r7   ExistsTest.define_tables  s*    4d366":&		
r9   c           	          UR                  U R                  R                  R                  5       SSS.SSS.SSS.SSS./5        g )Nr;   	some datar=   r   r   rw   zsome other data)r@   rA   rn  rB   rC   s     r6   rE   ExistsTest.insert_data  sL    JJ##%+.+.+."34		
r9   c           
      "   U R                   R                  n[        UR                  [	        [        S5      5      R                  [        5       R                  UR                  R                  S:H  5      5      5      R                  5       S/5        g )Nr;   rq  r   rA   rn  r	   r@   r   r   r~  r   rY   r0   rL   rN   rD   rn  s      r6   test_select_existsExistsTest.test_select_exists  sg    !!wqz"((HNN577<<;#>? hjF	
r9   c           
          U R                   R                  n[        UR                  [	        [        S5      5      R                  [        5       R                  UR                  R                  S:H  5      5      5      R                  5       / 5        g )Nr;   zno datart  ru  s      r6   test_select_exists_false#ExistsTest.test_select_exists_false  se    !!wqz"((HNN577<<9#<= hj	
r9   r_   N)r`   ra   rb   rc   rd   re   r7   rE   rv  ry  rg   r_   r9   r6   rl  rl    s7    K
 
 	
 	
	
	
r9   rl  c                   p    \ rS rSrSr\R                  " \R                  R                  5      S 5       r	Sr
g)DistinctOnTesti"  Tc                     [        S5      R                  [        S5      5      R                  [	        S5      5      n[
        R                  " S5         U R                  US5        S S S 5        g ! , (       d  f       g = f)Nr5  rn   r  z:DISTINCT ON is currently supported only by the PostgreSQL zSELECT DISTINCT * FROM foo)r   r  r   r  r   r   expect_deprecatedr  )rN   stms     r6   test_distinct_onDistinctOnTest.test_distinct_on%  s]    Sk""6#;/;;E%LI&&H
 %AB
 
 
s   A..
A<r_   N)r`   ra   rb   rc   rd   r   fails_ifrV   supports_distinct_onr  rg   r_   r9   r6   r|  r|  "  s2    Kg&&;;<C =Cr9   r|  c            
       d    \ rS rSrSrSr\S 5       r\R                  " SSSSS	S
SS9S 5       r
Srg)IsOrIsNotDistinctFromTesti.  T)supports_is_distinct_fromc                 p    [        SU[        S[        SS9[        S[        SS9[        S[        SS95        g )Nis_distinct_testr-   Tr.   col_arm  col_br   r3   s     r6   r7   'IsOrIsNotDistinctFromTest.define_tables2  s4    4d37Gd37Gd3	
r9   )both_int_differentr   r;   r;   )both_int_samer;   r;   r   )one_null_firstNr;   r;   )one_null_secondr   Nr;   )	both_nullNNr   iaaaz3col_a_value, col_b_value, expected_row_count_for_is)id_r   c                    U R                   R                  nUR                  UR                  5       SXS./5        UR                  UR	                  5       R                  UR                  R                  R                  UR                  R                  5      5      5      R                  5       n[        [        U5      U5        US:X  a  SOSnUR                  UR	                  5       R                  UR                  R                  R                  UR                  R                  5      5      5      R                  5       n[        [        U5      U5        g )Nr;   )r-   r  r  r   )rA   r  r@   rB   r   r~  rY   r  is_distinct_fromr  rL   r	   r   is_not_distinct_from)rN   col_a_valuecol_b_valueexpected_row_count_for_isrD   rd  rO   expected_row_count_for_is_nots           r6   test_is_or_is_not_distinct_from9IsOrIsNotDistinctFromTest.test_is_or_is_not_distinct_from<  s    kk**JJLBC	

 ##JJLsuu{{;;CEEKKHI

(* 	 	K%	
 +a/AQ 	& ##JJLsuu{{??LM

(* 	 	K)	
r9   r_   N)r`   ra   rb   rc   rd   r   re   r7   r   r_  r  rg   r_   r9   r6   r  r  .  sR    K1L
 
 '"&'$F

r9   r  c                   H    \ rS rSrSrSr\S 5       r\S 5       rS r	S r
Srg	)
WindowFunctionTestic  )window_functionsTc           
      t    [        SU[        S[        SS9[        S[        5      [        S[        5      5        g )Nr,   r-   Tr.   col1col2r   r3   s     r6   r7    WindowFunctionTest.define_tablesh  s0    4d367#67#	
r9   c           
          UR                  U R                  R                  R                  5       [	        SS5       Vs/ sH
  o"X"S-  S.PM     sn5        g s  snf )Nr;   ro   r   )r-   r  r  )r@   rA   r,   rB   r'  )r4   rD   is      r6   rE   WindowFunctionTest.insert_datar  sH    JJ!!((*:?2,G,Qqa%0,G	
Gs   A
c                    U R                   R                  nUR                  [        [        R
                  " UR                  R                  5      R                  UR                  R                  R                  5       /S95      R                  UR                  R                  S:  5      5      R                  5       n[        U[        S5       Vs/ sH  nSPM     sn5        g s  snf )N)rX   rM     )_   )rA   r,   r@   r   r   maxrY   r  overr  r   r~  r   r	   r'  rN   rD   r,   r  r  s        r6   test_windowWindowFunctionTest.test_windowy  s    [[++
!!**+00(ll//4467 1  eJLL%%*+
 #% 	 	D%),)Q5),-,s   C#
c           	      n   U R                   R                  nUR                  [        [        R
                  " UR                  R                  5      R                  UR                  R                  /SS95      5      R                  5       n[        U[        SSS5       Vs/ sH  oD4PM     sn5        g s  snf )N)rI  r   )rX   r  r      )rA   r,   r@   r   r   r  rY   r  r  r  r   r	   r'  r  s        r6   test_window_rows_between+WindowFunctionTest.test_window_rows_between  s    [[++
 !!**+00(ll//0  1 
 #% 	 	Dq#q!12!1A4!1232s   B2
r_   N)r`   ra   rb   rc   r   rd   re   r7   rE   r  r  rg   r_   r9   r6   r  r  c  s<    (LK
 
 
 

.4r9   r  c                      \ rS rSrSrS=rr\" S5       V Vs/ sH
  oUS-   S.PM     snn r\	S 5       r
\	S 5       r\R                  " S	 \" S5       V Vs/ sH  oS
:w  d  M
  UPM     snn \R                  R                  4S \" \" S5      5      \R                  R"                  4S \" \" SS5      5      \R                  R$                  4S S/\R                  R&                  4S \" \" SS5      5      \R                  R(                  4S \" \" SS5      5      \R                  R(                  4SS9S 5       rSrgs  snn f s  snn f )BitwiseTesti  Tr  r   r;   )r  r  c           	      X    [        SU[        S[        5      [        S[        5      5        g )Nbitwiser  r  r   r3   s     r6   r7   BitwiseTest.define_tables  s    i6#w#7W9MNr9   c                     UR                  U R                  R                  R                  5       U R                  5        g rH   )r@   rA   r  rB   inserted_datarC   s     r6   rE   BitwiseTest.insert_data  s+    3::--4468I8IJr9   c                 $    U R                  S5      $ )Nr   )bitwise_xorr  s    r6   <lambda>BitwiseTest.<lambda>      ammA&r9   r   c                 $    U R                  S5      $ Nr;   )
bitwise_orr  s    r6   r  r    s    all1or9   c                 $    U R                  S5      $ )Nrw   )bitwise_andr  s    r6   r  r    r  r9   rw   r  c                 (    U S-
  R                  5       $ Nr   )bitwise_notr  s    r6   r  r    s    q1u))+r9   r   c                 $    U R                  S5      $ r  )bitwise_lshiftr  s    r6   r  r        a&&q)r9   c                 $    U R                  S5      $ r  )bitwise_rshiftr  s    r6   r  r    r  r9   zcase, expectedr   c                    U R                   R                  nUR                  R                  n[        R
                  " XS9n[        U5      R                  US:  5      R                  U5      nUR                  U5      R                  5       R                  5       n[        X V	s/ sH  oR                  U	   PM     sn	5        g s  sn	f )Nr  r   )rA   r  rY   r  r   resolve_lambdar   r~  rX   r@   mappingsr   r	   r  )
rN   r   r   rD   rd  r  opr   r9  r  s
             r6   test_bitwiseBitwiseTest.test_bitwise  s    D kk!!EEGG##D.c{  a(11!4  &//1557C:A$$Q':;:s   #C
r_   N)r`   ra   rb   rc   rd   r%  r&  r'  r  re   r7   rE   r   r_  rV   supports_bitwise_xorlistsupports_bitwise_orsupports_bitwise_andsupports_bitwise_notsupports_bitwise_shiftr  rg   ).0r  s   00r6   r  r    st   K &&K+389=9a1q5)9=MO O K K &b	,	1!VQ	,11	
 &rO00	
 'q!11	
 ,C11	
 *q"33	
 *q"33	

 "? B
<C B
<W > -s   D>E!Er  )@collections.abcr   r  r  r  r   r   r   r   
assertionsr   r	   r
   	assertsqlr   rk  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   excr&   r'   
TablesTestr)   ri   TestBaser   r   rh  r  r  r  r  r  r)  r@  ra  rl  r|  r  r  r  r_   r9   r6   <module>r     s   *  ! &   &   !                            ##
(%% #
LJ<x** J<Z
8,, 
 D88.. D8N`
x22 `
FaPx"" aPHt
,, t
nN
/1D1DN
bJ@8.. J@ZE5++ E5P(/,, (/VM=,, M=` 3 3 2,
$$ ,
^	C')<)< 	C2
 3 3 2
j04,, 04f9<(%% 9<r9   