+
    i                        ^ RI Ht ^ RIt^RIHt ^RIHt ^RIHt ^RIHt ^RI	H
t
 ^RI	Ht ^RI	Ht ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RIH!t! ^RIH"t" ^RIH#t# ^RIH$t$ ^RIH%t% ^R IH&t& ^R!IH't' ^R"IH(t( ^R#I)H*t* ^R$I)H+t+  ! R% R&]PX                  4      t- ! R' R(]PX                  4      t. ! R) R*]P^                  4      t0 ! R+ R,]PX                  4      t1 ! R- R.]PX                  4      t2 ! R/ R0]PX                  4      t3 ! R1 R2]PX                  4      t4 ! R3 R4]]]PX                  4      t5 ! R5 R6]PX                  4      t6 ! R7 R8]PX                  4      t7 ! R9 R:]PX                  4      t8 ! R; R<]PX                  4      t9 ! R= R>]PX                  4      t: ! R? R@]PX                  4      t; ! RA RB]]PX                  4      t< ! RC RD]PX                  4      t= ! RE RF]PX                  4      t> ! RG RH]PX                  4      t?R# )I    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                      a  ] tR t^1t o Rt]R 4       t]R 4       tR t]	P                  P                  R 4       tRtV tR# )CollateTestTc                h    \        R V\        R\        RR7      \        R\        ^d4      4      4       R# 
some_tableidTprimary_keydataNr   r   r   r   clsmetadatas   &&~C:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\venv\Lib\site-packages\sqlalchemy/testing/suite/test_select.pydefine_tablesCollateTest.define_tables4   s*    4d366#;'		
    c                    VP                  V P                  P                  P                  4       R ^RR/R ^RR/.4       R# )r+   r.   collate data1collate data2Nexecutetablesr*   insertr1   
connections   &&r3   insert_dataCollateTest.insert_data=   sC    JJ!!((*q&/2q&/2	
r6   c                    \         P                  P                  4       ;_uu_ 4       p\        VP	                  V4      P                  4       V4       R R R 4       R #   + '       g   i     R # ; iNr   dbconnectr   r;   fetchallselfr   resultconns   &&& r3   _assert_resultCollateTest._assert_resultG   B    YY  DV$--/8 !      *AA,	c                j   \         P                  P                  \         P                  4      pV P	                  \        V P                  P                  4      P                  V P                  P                  P                  P                  P                  V4      P                  4       4      RR.4       R# )   N)rQ   r8   )   r9   )r   requiresget_order_by_collationr   rL   r   r<   r*   order_bycr.   collateasc)rI   	collations   & r3   test_collate_order_by!CollateTest.test_collate_order_byK   s    $$;;GNNK	4;;))*33&&((--55i@DDF "#78		
r6    N)__name__
__module____qualname____firstlineno____sparse_driver_backend__classmethodr4   r@   rL   r   rS   order_by_collationrZ   __static_attributes____classdictcell____classdict__s   @r3   r'   r'   1   sV      $
 
 
 
9 ((
 )
r6   r'   c                      a  ] tR t^Wt o RtRt]R 4       t]R 4       tR t	R t
R tR tR	 tR
 t]P                   P"                  R 4       tRtV tR# )OrderByLabelTestzTest the dialect sends appropriate ORDER BY expressions when
labels are used.

This essentially exercises the "supports_simple_order_by_label"
setting.

Tc                    \        R V\        R\        RR7      \        R\        4      \        R\        4      \        R\        ^24      4      \        R\        ^24      4      4       R# )	r*   r+   Tr,   xyqpNr/   r0   s   &&r3   r4   OrderByLabelTest.define_tablesb   sL    4d33 3 3r
#3r
#	
r6   c                    VP                  V P                  P                  P                  4       R ^R^R^RRRR/R ^R^R^RRRR/R ^R^R^RR	RR
/.4       R# )r+   rk   rl   rm   q1rn   p3q2p2q3p1Nr:   r>   s   &&r3   r@   OrderByLabelTest.insert_datan   ss    JJ!!((*q#q#q#tS$?q#q#q#tS$?q#q#q#tS$?	
r6   c                    \         P                  P                  4       ;_uu_ 4       p\        VP	                  V4      P                  4       V4       R R R 4       R #   + '       g   i     R # ; irC   rD   rH   s   &&& r3   rL   OrderByLabelTest._assert_resulty   rN   rO   c                    V P                   P                  pVP                  P                  P	                  R 4      pV P                  \        V4      P                  V4      . RO4       R# )lxNrQ   rR      )r<   r*   rV   rk   labelrL   r   rU   rI   r   r{   s   &  r3   
test_plainOrderByLabelTest.test_plain}   sG    &&WWYY__T"F2J//35GHr6   c                
   V P                   P                  pVP                  P                  VP                  P                  ,           P                  R 4      pV P                  \        V4      P                  V4      . RO4       R# )r{   N)r         )	r<   r*   rV   rk   rl   r   rL   r   rU   r   s   &  r3   test_composed_int"OrderByLabelTest.test_composed_int   sV    &&ggii%''))#**40F2J//35GHr6   c                   V P                   P                  pVP                  P                  VP                  P                  ,           P                  R 4      p\        P                  ! VP                  P                  4      VP                  P                  ,           P                  R4      pV P                  \        W#4      P                  W#P                  4       4      . RO4       R# )r{   lyN))r   q1p3)r   q2p2)r   q3p1)r<   r*   rV   rk   rl   r   r   lowerrm   rn   rL   r   rU   desc)rI   r   r{   r   s   &   r3   test_composed_multiple'OrderByLabelTest.test_composed_multiple   s    &&ggii%''))#**40jj#eggii/66t<2N##B	23	
r6   c                    V P                   P                  pVP                  P                  P	                  R 4      pV P                  \        V4      P                  VP                  4       4      . RO4       R# )r{   N)r   r~   r}   )	r<   r*   rV   rk   r   rL   r   rU   r   r   s   &  r3   test_plain_desc OrderByLabelTest.test_plain_desc   sM    &&WWYY__T"F2J//	:<NOr6   c                &   V P                   P                  pVP                  P                  VP                  P                  ,           P                  R 4      pV P                  \        V4      P                  VP                  4       4      . RO4       R# )r{   N)r   r   r   )
r<   r*   rV   rk   rl   r   rL   r   rU   r   r   s   &  r3   test_composed_int_desc'OrderByLabelTest.test_composed_int_desc   s\    &&ggii%''))#**40F2J//	:<NOr6   c                ~   V P                   P                  pVP                  P                  VP                  P                  ,           P                  R 4      p\        \        P                  ! VP                  P                  4      V4      P                  V4      P                  V4      pV P                  V. RO4       R# )r{   N))rQ   r   )rQ   r   )rQ   r   )r<   r*   rV   rk   rl   r   r   r   countr+   group_byrU   rL   )rI   r   exprstmts   &   r3   test_group_by_composed'OrderByLabelTest.test_group_by_composed   s    &&		EGGII%,,T24::eggjj)4099$?HHN 	 	D":;r6   r\   N)r]   r^   r_   r`   __doc__ra   rb   r4   r@   rL   r   r   r   r   r   r   rS   group_by_complex_expressionr   rd   re   rf   s   @r3   ri   ri   W   sz      !%	
 	
 
 
9I
I

P
P
 11< 2<r6   ri   c                   .   a  ] tR t^t o RtRtR tRtV tR# )ValuesExpressionTestTc                    \        \        R \        4      \        R\        4      RR7      P	                  . RO4      p\        VP                  \        V4      4      P                  4       . RO4       R# )r+   name	my_values)r   N))rQ   name1)rR   name2)r   name3)	r#   r   r   r   r.   r   r;   r   all)rI   r?   
value_exprs   && r3   test_tuples ValuesExpressionTest.test_tuples   sX    4!6&&#9

$9
: 	 	vj126686	
r6   r\   N)table_value_constructor)	r]   r^   r_   r`   __requires__ra   r   rd   re   rf   s   @r3   r   r      s     /L $
 
r6   r   c                   x  a  ] tR t^t o Rt]R 4       t]R 4       tR%R ltR&R lt	R t
R t]P                  P                  R 4       t]P                  P                   R	 4       t]P$                  ! . R'O. R(O. R)OR
R7      ]P                  P                   R 4       4       t]P                  P                  R 4       t]P                  P*                  R 4       t]P                  P                   R 4       t]P                  P                   R 4       t]P                  P                  R 4       t]P                  P4                  R 4       t]P                  P4                  R 4       t]P                  P4                  R 4       t]P                  P                  R 4       t]P                  P>                  R 4       t ]P                  P>                  R 4       t!]P                  P>                  R 4       t"]P                  P                  ]P                  PF                  R 4       4       t$]P                  P>                  R 4       t%]P                  P>                  R 4       t&]P                  PN                  R 4       t(]P                  PN                  ]P                  PR                  R 4       4       t*]P                  PN                  ]P                  PR                  R 4       4       t+]P                  PX                  R 4       t-]P                  PX                  ]P                  PR                  R  4       4       t.]P                  PN                  ]P                  PX                  R! 4       4       t/]P                  PN                  ]P                  PX                  ]P                  PR                  R" 4       4       4       t0R#t1V t2R$# )*FetchLimitOffsetTestTc           
     |    \        R V\        R\        RR7      \        R\        4      \        R\        4      4       R# r*   r+   Tr,   rk   rl   Nr   r   r   r0   s   &&r3   r4   "FetchLimitOffsetTest.define_tables   0    4d33 3 	
r6   c                    VP                  V P                  P                  P                  4       R ^R^R^/R ^R^R^/R ^R^R^/R ^R^R^/R ^R^R^/.4       R# r+   rk   rl   Nr:   r>   s   &&r3   r@    FetchLimitOffsetTest.insert_data   s{    JJ!!((*q#q#q)q#q#q)q#q#q)q#q#q)q#q#q)		
r6   c                "   V'       d^   VP                  W$4      P                  4       p\        \        V4      \        V4      4       \        \	        V4      \	        V4      4       R # \        VP                  W$4      P                  4       V4       R # rC   )r;   rG   r   lenset)rI   r?   r   rJ   paramsset_	query_ress   &&&&&& r3   rL   #FetchLimitOffsetTest._assert_result   sd     "**6:CCEIIF,IF, 
""62;;=vFr6   c                    \         P                  P                  4       ;_uu_ 4       p\        VP	                  W4      P                  4       V4       R R R 4       R #   + '       g   i     R # ; irC   )r   rE   rF   r   exec_driver_sqlrG   rI   r   rJ   r   rK   s   &&&& r3   _assert_result_str'FetchLimitOffsetTest._assert_result_str   sD    YY  D$$V4==?H !   rO   c                   V P                   P                  p\        V4      P                  VP                  P
                  4      pV P                  VVP                  ^4      RR.4       V P                  VVP                  ^4      . RO4       R# rR   NrQ   rQ   rR   rR   rR   r   r   r   r   r      )r<   r*   r   rU   rV   r+   rL   limit)rI   r?   r   r   s   &&  r3   test_simple_limit&FetchLimitOffsetTest.test_simple_limit   sr    &&e}%%eggjj1JJqM	"	

 	JJqM-	
r6   c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  4      P                  ^4      P                  4       p\        \        V4      \        V4      4      P                  4       P                  4       pV P                  VVR.4       R# )rQ   Nr}   )r<   r*   r   rV   r+   rU   r   scalar_subqueryr"   subqueryrL   )rI   r?   r   r   us   &&   r3    test_limit_render_multiple_times5FetchLimitOffsetTest.test_limit_render_multiple_times   s    &&577::''

399!<LLN 	 &,t-668??A	
r6   c                r   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      RR.4       V P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      . RO4       R# r   r<   r*   rL   r   rU   rV   r+   fetchrI   r?   r   s   && r3   test_simple_fetch&FetchLimitOffsetTest.test_simple_fetch   s    &&5M""577::.44Q7	"	

 	5M""577::.44Q7-	
r6   c                r   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      . RO4       V P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      RR.4       R# )rR   Nr   r   r   r   r      r   r   r   r<   r*   rL   r   rU   rV   r+   offsetr   s   && r3   test_simple_offset'FetchLimitOffsetTest.test_simple_offset	  s    &&5M""577::.55a8-	

 	5M""577::.55a8	"	
r6   casesargnamesc                B   V P                   P                  pVP                  / R 7      p. ROpV Fl  w  rVWFWe,            pV P                  V\	        V4      P                  VP                  P                  4      P                  V4      P                  V4      V4       Kn  	  R# ))compiled_cacheNr   r   r   r   r   )
r<   r*   execution_optionsrL   r   rU   rV   r+   r   r   )rI   r?   r   r   assert_datar   r   expecteds   &&&     r3   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 #r6   c                   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      P                  ^4      RR.4       V P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      P                  ^4      . RO4       R# )rR   Nr   r   r   	r<   r*   rL   r   rU   rV   r+   r   r   r   s   && r3   test_simple_fetch_offset-FetchLimitOffsetTest.test_simple_fetch_offset,  s    &&5M""577::.44Q7>>qA	"	
 	5M""577::.44Q7>>qA-	
r6   c                    V P                   P                  pV P                  V\        V4      P	                  ^
4      . RORR7       R# )
   Tr   Nr   )r<   r*   rL   r   r   r   s   && r3   test_fetch_offset_no_order/FetchLimitOffsetTest.test_fetch_offset_no_order;  s?    &&5M#C	 	 	
r6   c                r   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^ 4      . RO4       V P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      . RO4       R# )r   Nr   r   r   r   r   r   r   s   && r3   test_simple_offset_zero,FetchLimitOffsetTest.test_simple_offset_zeroE  s    &&5M""577::.55a8C	
 	5M""577::.55a88	
r6   c                b   V P                   P                  p\        V4      P                  VP                  P
                  4      P                  ^4      P                  ^4      pVP                  \        P                  P                  RR/R7      p\        V4      pV P                  VRR.4       R# z7test that 'literal binds' mode works - no bound params.literal_bindsT)dialectcompile_kwargsNr   r   )r<   r*   r   rU   rV   r+   r   r   compiler   rE   r  strr   rI   r   r   sqls   &   r3   test_limit_offset_nobinds.FetchLimitOffsetTest.test_limit_offset_nobindsT       &&e}%%eggjj177:AA!DllII%%6M  
 #hi%;<r6   c                b   V P                   P                  p\        V4      P                  VP                  P
                  4      P                  ^4      P                  ^4      pVP                  \        P                  P                  RR/R7      p\        V4      pV P                  VRR.4       R# r   )r<   r*   r   rU   rV   r+   r   r   r  r   rE   r  r  r   r  s   &   r3   test_fetch_offset_nobinds.FetchLimitOffsetTest.test_fetch_offset_nobindsa  r
  r6   c                   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      RR.R ^/R7       V P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      . ROR ^/R7       R# )lr   Nr   r   r   )	r<   r*   rL   r   rU   rV   r+   r   r   r   s   && r3   test_bound_limit%FetchLimitOffsetTest.test_bound_limitn  s    &&5M""577::.44Ys^D	"8	 	 	
 	5M""577::.44Ys^D-8	 	 	
r6   c                   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      . ROR ^/R7       V P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      . ROR ^/R7       R# )or  Nr   r   )	r<   r*   rL   r   rU   rV   r+   r   r   r   s   && r3   test_bound_offset&FetchLimitOffsetTest.test_bound_offset  s    &&5M""577::.55inE-8	 	 	
 	5M""577::.55inE88	 	 	
r6   c           	        V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      P                  \        R4      4      RR.R ^R^/R7       V P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      P                  \        R4      4      . ROR ^R^/R7       R# )r  r  r  Nr   r   r   )
r<   r*   rL   r   rU   rV   r+   r   r   r   r   s   && r3   test_bound_limit_offset,FetchLimitOffsetTest.test_bound_limit_offset      &&5MXeggjj!U9S>"VIcN#	"C# 	 	
 	5MXeggjj!U9S>"VIcN#-C# 	 	
r6   c           	        V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      P                  \        R4      4      RR.R ^R^/R7       V P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      4      P                  \        R4      4      . ROR ^R^/R7       R# )fr  r  Nr   r   r   )
r<   r*   rL   r   rU   rV   r+   r   r   r   r   s   && r3   test_bound_fetch_offset,FetchLimitOffsetTest.test_bound_fetch_offset  r  r6   c           	        V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      \        R4      ,           4      RR.4       R# )12Nr   r   )	r<   r*   rL   r   rU   rV   r+   r   r   r   s   && r3   test_expr_offset%FetchLimitOffsetTest.test_expr_offset  s\    &&5MXeggjj!VN3'.*==>	"	
r6   c           	        V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      \        R4      ,           4      . RO4       R# )r   r!  Nr   )	r<   r*   rL   r   rU   rV   r+   r   r   r   s   && r3   test_expr_limit$FetchLimitOffsetTest.test_expr_limit  sW    &&5MXeggjj!U>#&)<<=-	
r6   c           	     T   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      \        R 4      ,           4      P                  \        R 4      \        R 4      ,           4      RR.4       R# r   Nr   r   
r<   r*   rL   r   rU   rV   r+   r   r   r   r   s   && r3   test_expr_limit_offset+FetchLimitOffsetTest.test_expr_limit_offset  su    &&5MXeggjj!U>#&)<<=VN3'.*==>	"	
r6   c           	     T   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      \        R 4      ,           4      P                  \        R 4      \        R 4      ,           4      RR.4       R# r(  )
r<   r*   rL   r   rU   rV   r+   r   r   r   r   s   && r3   test_expr_fetch_offset+FetchLimitOffsetTest.test_expr_fetch_offset  sw     &&5MXeggjj!U>#&)<<=VN3'.*==>	"	
r6   c           	        V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      P                  \        R4      \        R4      ,           4      RR.4       V P                  V\        V4      P	                  VP
                  P                  4      P                  ^4      P                  \        R4      \        R4      ,           4      . RO4       R# )rR   r   Nr   r   r   )
r<   r*   rL   r   rU   rV   r+   r   r   r   r   s   && r3   test_simple_limit_expr_offset2FetchLimitOffsetTest.test_simple_limit_expr_offset  s    &&5MXeggjj!U1XVN3'.*==>	"	
 	5MXeggjj!U1XVN3'.*==>-	
r6   c           	        V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      \        R 4      ,           4      P                  ^4      RR.4       V P                  V\        V4      P	                  VP
                  P                  4      P                  \        R 4      \        R 4      ,           4      P                  ^4      RR.4       R# )r   Nr   r   r   r)  r   s   && r3   test_expr_limit_simple_offset2FetchLimitOffsetTest.test_expr_limit_simple_offset  s    &&5MXeggjj!U>#&)<<=VAY	"	
 	5MXeggjj!U>#&)<<=VAY	"	
r6   c                   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  P                  4       4      P                  ^RR7      RR.RR7       V P                  V\        V4      P	                  VP
                  P                  P                  4       4      P                  ^RR7      . RORR7       R# )rQ   T	with_tiesr   Nr   r   r   	r<   r*   rL   r   rU   rV   rk   r   r   r   s   && r3   test_simple_fetch_ties+FetchLimitOffsetTest.test_simple_fetch_ties  s    &&5M""57799>>#34::1:M	"	 	 	
 	5M""57799>>#34::1:M-	 	 	
r6   c                \   V P                   P                  pVP                  \        V4      P	                  VP
                  P                  4      P                  ^RR7      P                  ^4      4      P                  4       p\        V^ ,          R4       \        \        V4      0 Rm4       R# )rR   Tr6  Nr      r   r   r   r<   r*   r;   r   rU   rV   rk   r   r   rG   r   r   rI   r?   r   fas   &&  r3   test_fetch_offset_ties+FetchLimitOffsetTest.test_fetch_offset_ties(  s~     &&5MXeggii U1U%VAY	

 (* 	 	BqE9CG67r6   c                   V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^RR7      P                  ^4      RR.4       V P                  V\        V4      P	                  VP
                  P                  4      P                  ^RR7      P                  ^4      RR.4       R# )rR   Tr6  Nr   r   r   r   )	r<   r*   rL   r   rU   rV   rk   r   r   r   s   && r3   #test_fetch_offset_ties_exact_number8FetchLimitOffsetTest.test_fetch_offset_ties_exact_number5  s     &&5MXeggii U1U%VAY	"	
 	5MXeggii U1U%VAY	"	
r6   c                    V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^RR7      R.4       R# )   TpercentNr   r   r   s   && r3   test_simple_fetch_percent.FetchLimitOffsetTest.test_simple_fetch_percentK  sQ    &&5M""577::.44R4FK	
r6   c                    V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  4      P                  ^(RR7      P                  ^4      RR.4       R# )(   TrG  Nr   r   r   r   s   && r3   test_fetch_offset_percent.FetchLimitOffsetTest.test_fetch_offset_percentT  s\     &&5MXeggjj!U2tU$VAY	"	
r6   c           	         V P                   P                  pV P                  V\        V4      P	                  VP
                  P                  P                  4       4      P                  ^RRR7      RR.RR7       R# )rF  TrH  r7  r   Nr   r   r8  r   s   && r3   test_simple_fetch_percent_ties3FetchLimitOffsetTest.test_simple_fetch_percent_tiesa  sd     &&5MXeggiinn&'U2ttU4	" 	 	
r6   c                ^   V P                   P                  pVP                  \        V4      P	                  VP
                  P                  4      P                  ^(RRR7      P                  ^4      4      P                  4       p\        V^ ,          R4       \        \        V4      0 Rm4       R# )rL  TrP  Nr   r<  r=  r>  s   &&  r3   test_fetch_offset_percent_ties3FetchLimitOffsetTest.test_fetch_offset_percent_tiesn  s     &&5MXeggii U2ttU4VAY	

 (* 	 	BqE9CG67r6   r\   N)r\   Fr\   )rR   r   rR   rQ   r   rR   )rX  rW  rY  )r   rQ   rX  rZ  )3r]   r^   r_   r`   __backend__rb   r4   r@   rL   r   r   r   r   rS   fetch_firstr   r   r   combinationsr   r   fetch_no_order_byr   r   r  r  bound_limit_offsetr  r  r  r  sql_expression_limit_offsetr"  r%  r*  fetch_expressionr-  r0  r3  
fetch_tiesr9  fetch_offset_with_optionsr@  rC  fetch_percentrI  rM  rQ  rT  rd   re   rf   s   @r3   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 $ !	8r6   r   c                   ^   a  ] tR tRt o RtRtRt]R 4       t]R 4       t	R t
R tR tR	tV tR
# )SameNamedSchemaTableTesti}  ztests for #7471Tc                    \        R V\        R\        RR7      \        P                  R7       \        R V\        R\        RR7      \        R\        RR7      4       R# )	r*   r+   Tr,   )schemasome_table_idFnullableN)r   r   r   r   test_schemar0   s   &&r3   r4   &SameNamedSchemaTableTest.define_tables  sR    4d3%%		
 	4d3		
	
r6   c                    V P                  R R\        P                  ,          4      w  r#VP                  VP	                  4       R^/4       VP                  VP	                  4       R^R^/4       R# )r*   %s.some_tabler+   ri  N)r<   r   rl  r;   r=   )r1   r?   r*   some_table_schemas   &&  r3   r@   $SameNamedSchemaTableTest.insert_data  se    (+

/F,>,>>)
%
 	,335ayA:,,.q/10MNr6   c           
     4   V P                  R R\        P                  ,          4      w  r#\        VP	                  \        W#4      P                  VVVP                  P                  VP                  P                  8H  4      4      P                  4       R4       R# r*   ro  NrQ   rQ   rQ   )r<   r   rl  r   r;   r   	join_fromrV   ri  r+   firstrI   r?   r*   rp  s   &&  r3   test_simple_join_both_tables5SameNamedSchemaTableTest.test_simple_join_both_tables  s    (,/F,>,>>)
%
 	z5??%LL..2C2E2E2H2HH eg		
r6   c           
        V P                  R R\        P                  ,          4      w  r#\        VP	                  \        V4      P                  VVVP                  P                  VP                  P                  8H  4      P                  VP                  P                  ^8H  4      4      P                  4       R4       R# )r*   ro  NrQ   rQ   )r<   r   rl  r   r;   r   ru  rV   ri  r+   whererv  rw  s   &&  r3   !test_simple_join_whereclause_only:SameNamedSchemaTableTest.test_simple_join_whereclause_only  s    (,/F,>,>>)
%
 	z"%LL..2C2E2E2H2HH
 z||!+, eg	
r6   c           
        V P                  R R\        P                  ,          4      w  r#\        V4      P	                  VVVP
                  P                  VP
                  P                  8H  4      P                  VP
                  P                  ^8H  4      P                  4       p\        VP                  \        W$P
                  P                  4      P	                  VVVP
                  P                  VP
                  P                  8H  4      P                  VP
                  P                  ^8H  4      4      P                  4       R4       R# rs  )r<   r   rl  r   ru  rV   ri  r+   r|  r   r   r;   rv  )rI   r?   r*   rp  subqs   &&   r3   test_subquery&SameNamedSchemaTableTest.test_subquery  s    (,/F,>,>>)
%

 :Y!**.?.A.A.D.DD
 U:<<??a'(XZ 	 	z6699-LL..$&&));
 z||!+, eg	
r6   r\   N)schemas)r]   r^   r_   r`   r   ra   r   rb   r4   r@   rx  r}  r  rd   re   rf   s   @r3   rf  rf  }  sO      $L
 
& O O
 
$
 
r6   rf  c                   l   a  ] tR tRt o RtRR lt]R 4       t]R 4       tR t	R t
R tR	 tR
 tRtV tR# )JoinTesti  Tc                    \         P                  P                  4       ;_uu_ 4       p\        VP	                  W4      P                  4       V4       R R R 4       R #   + '       g   i     R # ; irC   rD   r   s   &&&& r3   rL   JoinTest._assert_result  B    YY  DV,557@ !   rO   c                    \        R V\        R\        RR7      4       \        RV\        R\        RR7      \        R\        R4      RR7      4       R	# )
ar+   Tr,   ba_idza.idFrj  N)r   r   r   r   r0   s   &&r3   r4   JoinTest.define_tables  sB    c8VD'tDE4d36:f->		
r6   c           
        VP                  V P                  P                  P                  4       R ^/R ^/R ^/R ^/R ^/.4       VP                  V P                  P                  P                  4       R ^R^/R ^R^/R ^R^/R ^R^/.4       R# )r+   r  N)r;   r<   r  r=   r  r>   s   &&r3   r@   JoinTest.insert_data  s    JJLL!AYq	D!9tQi$C	

 	JJLL!q&!$q&!$q&!$q&!$		
r6   c                   V P                  R R4      w  r\        W4      P                  VP                  V4      4      P	                  VP
                  P                  VP
                  P                  4      pV P                  V. RO4       R# r  r  N)rt  )rQ   rR   rQ   )rR   r   rR   )r   r   r   r<   r   select_fromjoinrU   rV   r+   rL   rI   r  r  r   s   &   r3   test_inner_join_fkJoinTest.test_inner_join_fk  ^    {{3$a|''q	2;;ACCFFACCFFKD"NOr6   c                   V P                  R R4      w  r\        W4      P                  VP                  V\	        4       4      4      P                  VP                  P                  VP                  P                  4      pT P                  T\        P                  ! . RO. RO4       UUUu. uF  w  w  pw  r$WV3NK  	  uppp4       R# u upppi )r  r  N)r}   r~   r   r   r   )r{  rX  )r   rR   )r   r   )r<   r   r  r  r   rU   rV   r+   rL   	itertoolsproduct)rI   r  r  r   rV   s   &    r3   test_inner_join_trueJoinTest.test_inner_join_true	  s    {{3$ 1L[46*+Xaccffaccff% 	 	 %.$5$524%%LDQ&1 q	%		
s   *C	c                &   V P                  R R4      w  r\        W4      P                  VP                  V\	        4       4      4      P                  VP                  P                  VP                  P                  4      pV P                  V. 4       R# )r  r  N)	r<   r   r  r  r   rU   rV   r+   rL   r  s   &   r3   test_inner_join_falseJoinTest.test_inner_join_false  sg    {{3$ 1L[57+,Xaccffaccff% 	 	D"%r6   c                *   V P                  R R4      w  r\        W4      P                  VP                  V\	        4       4      4      P                  VP                  P                  VP                  P                  4      pV P                  V. RO4       R# )r  r  N))rQ   NN)rR   NN)r   NN)r   NN)r   NN)	r<   r   r  	outerjoinr   rU   rV   r+   rL   r  s   &   r3   test_outer_join_falseJoinTest.test_outer_join_false(  sm    {{3$ 1L[Q01Xaccffaccff% 	 			
r6   c                   V P                  R R4      w  r\        W4      P                  VP                  V4      4      P	                  VP
                  P                  VP
                  P                  4      pV P                  V. RO4       R# r  r  r  s   &   r3   test_outer_join_fkJoinTest.test_outer_join_fk<  r  r6   r\   NrV  )r]   r^   r_   r`   ra   rL   rb   r4   r@   r  r  r  r  r  rd   re   rf   s   @r3   r  r    sZ      $A 
 
 
 
 P
(	&
(P Pr6   r  c                   @  a  ] tR tRt o Rt]R 4       t]R 4       tRR ltR t	R t
]P                  P                  ]P                  P                  R 4       4       t]P                  P                   R	 4       tR
 t]P                  P                  R 4       tR tRtV tR# )CompoundSelectTestiD  Tc           
     |    \        R V\        R\        RR7      \        R\        4      \        R\        4      4       R# r   r   r0   s   &&r3   r4    CompoundSelectTest.define_tablesG  r   r6   c                    VP                  V P                  P                  P                  4       R ^R^R^/R ^R^R^/R ^R^R^/R ^R^R^/.4       R# r   r:   r>   s   &&r3   r@   CompoundSelectTest.insert_dataQ  sk    JJ!!((*q#q#q)q#q#q)q#q#q)q#q#q)		
r6   c                    \         P                  P                  4       ;_uu_ 4       p\        VP	                  W4      P                  4       V4       R R R 4       R #   + '       g   i     R # ; irC   rD   r   s   &&&& r3   rL   !CompoundSelectTest._assert_result]  r  rO   c                z   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      p\        V4      P                  VP                  P
                  ^8H  4      p\        W#4      pV P                  VP                  VP                  P
                  4      RR.4       R# rR   Nr   r   )
r<   r*   r   r|  rV   r+   r"   rL   rU   selected_columnsrI   r   s1s2u1s   &    r3   test_plain_union#CompoundSelectTest.test_plain_uniona  s    &&E]  q1E]  q12]KK++../)Y1G	
r6   c                   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      p\        V4      P                  VP                  P
                  ^8H  4      p\        W#4      P                  4       P                  4       pV P                  VP                  VP                  P
                  4      RR.4       R# r  )r<   r*   r   r|  rV   r+   r"   aliasrL   rU   r  r  s   &    r3   test_select_from_plain_union/CompoundSelectTest.test_select_from_plain_unionk  s    &&E]  q1E]  q12]  "))+KK++../)Y1G	
r6   c                `   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      P                  ^4      P                  VP                  P
                  4      p\        V4      P                  VP                  P
                  ^8H  4      P                  ^4      P                  VP                  P
                  4      p\        W#4      P                  ^4      pV P                  VP                  VP                  P
                  4      RR.4       R# r  )r<   r*   r   r|  rV   r+   r   rU   r"   rL   r  r  s   &    r3   &test_limit_offset_selectable_in_unions9CompoundSelectTest.test_limit_offset_selectable_in_unionsu  s     &&E]  q177:CCEGGJJOE]  q177:CCEGGJJO2]  #KK++../)Y1G	
r6   c                $   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      P                  VP                  P
                  4      p\        V4      P                  VP                  P
                  ^8H  4      P                  VP                  P
                  4      p\        W#4      P                  ^4      pV P                  VP                  VP                  P
                  4      RR.4       R# r  )r<   r*   r   r|  rV   r+   rU   r"   r   rL   r  r  s   &    r3   "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	
r6   c                   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      P                  4       p\        V4      P                  VP                  P
                  ^8H  4      P                  4       p\        W#4      P                  ^4      pV P                  VP                  VP                  P
                  4      RR.4       R# r  )r<   r*   r   r|  rV   r+   distinctr"   r   rL   rU   r  r  s   &    r3   "test_distinct_selectable_in_unions5CompoundSelectTest.test_distinct_selectable_in_unions  s    &&E]  q1::<E]  q1::<2]  #KK++../)Y1G	
r6   c                   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      P                  ^4      P                  VP                  P
                  4      p\        V4      P                  VP                  P
                  ^8H  4      P                  ^4      P                  VP                  P
                  4      p\        W#4      P                  4       pV P                  VP                  4       P                  ^4      P                  VP                  P
                  4      RR.4       R# r  )r<   r*   r   r|  rV   r+   r   rU   r"   r  rL   r  s   &    r3   &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	
r6   c                   V P                   P                  p\        V4      P                  VP                  P
                  ^8H  4      P                  ^4      P                  VP                  P
                  4      P                  4       P                  4       p\        V4      P                  VP                  P
                  ^8H  4      P                  ^4      P                  VP                  P
                  4      P                  4       P                  4       p\        W#4      P                  ^4      pV P                  VP                  VP                  P
                  4      RR.4       R# r  )r<   r*   r   r|  rV   r+   r   rU   r  r"   rL   r  r  s   &    r3   .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	
r6   r\   NrV  )r]   r^   r_   r`   ra   rb   r4   r@   rL   r  r  r   rS   order_by_col_from_union/parens_in_union_contained_select_w_limit_offsetr  0parens_in_union_contained_select_wo_limit_offsetr  r  r  r  rd   re   rf   s   @r3   r  r  D  s      $
 
 	
 	
A

 --EE
 F .
 FF
 G

 EE	
 F	

 
r6   r  c                      a  ] tR tRt o RtRt]R 4       t]R 4       tR t	R t
R tR t]P                  P                  R	 4       t]P                  P                  R
 4       tRtV tR# )PostCompileParamsTesti  Tc                    \        R V\        R\        RR7      \        R\        4      \        R\        4      \        R\        ^24      4      4       R# r*   r+   Tr,   rk   rl   zNr/   r0   s   &&r3   r4   #PostCompileParamsTest.define_tables  >    4d33 3 3r
#	
r6   c                    VP                  V P                  P                  P                  4       R ^R^R^RR/R ^R^R^RR/R ^R^R^RR/R ^R^R^RR/.4       R# 	r+   rk   rl   r  z1z2z3z4Nr:   r>   s   &&r3   r@   !PostCompileParamsTest.insert_data  {    JJ!!((*q#q#q#t4q#q#q#t4q#q#q#t4q#q#q#t4		
r6   c                    V P                   P                  p\        VP                  P                  4      P                  VP                  P                  \        R RR7      8H  4      pV P                  VR/ 4       R# )rm   Tliteral_executezKSELECT some_table.id FROM some_table WHERE some_table.x = __[POSTCOMPILE_q]N	r<   r*   r   rV   r+   r|  rk   r   assert_compilerI   r   r   s   &  r3   test_compile"PostCompileParamsTest.test_compile  s`    &&eggjj!''GGII3==
 	5		
r6   c           	         V P                   P                  p\        VP                  P                  4      P                  VP                  P                  \        R ^
RR7      8H  4      pV P                  VR/ RR7       R# )rm   Tr  z<SELECT some_table.id FROM some_table WHERE some_table.x = 10)r  Nr  r  s   &  r3   test_compile_literal_binds0PostCompileParamsTest.test_compile_literal_binds  sh    &&eggjj!''GGII3DAA
 	J	 	 	
r6   c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  \        R RR7      8H  4      pV P                  4       ;_uu_ 4       p\        P                  P                  4       ;_uu_ 4       pVP                  V\        ^
R7      4       RRR4       RRR4       XP                  \        R\        P                  P                   P"                  '       d   RM/ 4      4       R#   + '       g   i     La; i  + '       g   i     Ll; i)rm   Tr  rm   Nz>SELECT some_table.id 
FROM some_table 
WHERE some_table.x = 10r\   )r<   r*   r   rV   r+   r|  rk   r   sql_execution_asserterr   rE   rF   r;   dictassert_r
   r  
positionalrI   r   r   asserterrK   s   &    r3   test_execute"PostCompileParamsTest.test_execute  s    &&eggjj!''GGII3==
 ((**h""$$T4":. % + 	,ii''222	
 %$ +*s$   ?'D/&D	D/D,'D//D?	c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R RRR7      4      4      pV P                  4       ;_uu_ 4       p\        P                  P                  4       ;_uu_ 4       pVP                  V\        . ROR7      4       RRR4       RRR4       XP                  \!        R\        P                  P"                  P$                  '       d   RM/ 4      4       R#   + '       g   i     La; i  + '       g   i     Ll; i)rm   T	expandingr  r  NzFSELECT some_table.id 
FROM some_table 
WHERE some_table.x IN (5, 6, 7))r   r   r   r\   )r<   r*   r   rV   r+   r|  rk   r	   r   r  r   rE   rF   r;   r  r  r
   r  r  r  s   &    r3   +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2	
 %$ +*s$   'D>3D+	D>+D;6D>>E	c                D   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  \        R RRR7      4      4      pV P                  4       ;_uu_ 4       p\        P                  P                  4       ;_uu_ 4       pVP                  V\!        RR	.R7      4       RRR4       RRR4       XP#                  \%        R\        P                  P&                  P(                  '       d   RMR,          \        P                  P&                  P*                  '       d   R
M/ 4      4       R#   + '       g   i     L; i  + '       g   i     L; i)rm   Tr  r  NzbSELECT some_table.id 
FROM some_table 
WHERE (some_table.x, some_table.y) IN (%s(5, 10), (12, 18))VALUES  )r   r   )      r\   )r<   r*   r   rV   r+   r|  r    rk   rl   r	   r   r  r   rE   rF   r;   r  r  r
   r  tuple_in_valuesr  r  s   &    r3   1test_execute_tuple_expanding_plus_literal_executeGPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_execute  s   &&eggjj!''57799eggii(,,#tD
 ((**h""$$T47H*=#>? % + 	+ !'		 1 1 A A A9rK ii''222	
 %$ +*$   *'FE<	0F<FFF	c                D   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  \        R RRR7      4      4      pV P                  4       ;_uu_ 4       p\        P                  P                  4       ;_uu_ 4       pVP                  V\!        RR	.R7      4       RRR4       RRR4       XP#                  \%        R\        P                  P&                  P(                  '       d   RMR,          \        P                  P&                  P*                  '       d   R
M/ 4      4       R#   + '       g   i     L; i  + '       g   i     L; i)rm   Tr  r  NzfSELECT some_table.id 
FROM some_table 
WHERE (some_table.x, some_table.z) IN (%s(5, 'z1'), (12, 'z3'))r  r  )r   r  )r  r  r\   )r<   r*   r   rV   r+   r|  r    rk   r  r	   r   r  r   rE   rF   r;   r  r  r
   r  r  r  r  s   &    r3   ?test_execute_tuple_expanding_plus_literal_heterogeneous_executeUPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_heterogeneous_execute3  s   &&eggjj!''57799eggii(,,#tD
 ((**h""$$T49j*A#BC % + 	/ !'		 1 1 A A A9rK ii''222	
 %$ +*r  r\   N)standard_cursor_sql)r]   r^   r_   r`   r[  r   rb   r4   r@   r  r  r  r  r   rS   tuple_inr   r  rd   re   rf   s   @r3   r  r    s      K+L
 
 	
 	



&
& 
 
. 
 
r6   r  c                   "  a  ] tR tRt o Rt]R 4       t]R 4       tR%R ltR t	R t
]P                  P                  R 4       t]P                  P                  R	 4       t]P                  P                  R
 4       t]P                  P                  R 4       tR tR tR tR tR tR t]P                  P0                  R 4       t]P                  P0                  R 4       t]P                  P0                  R 4       t]P                  P0                  R 4       t]P                  P0                  R 4       t]P                  P0                  R 4       t]P                  P0                  R 4       tR t R t!R t"R t#R t$R t%R t&R  t'R! t(R" t)R#t*V t+R$# )&ExpandingBoundInTestiL  Tc                    \        R V\        R\        RR7      \        R\        4      \        R\        4      \        R\        ^24      4      4       R# r  r/   r0   s   &&r3   r4   "ExpandingBoundInTest.define_tablesO  r  r6   c                    VP                  V P                  P                  P                  4       R ^R^R^RR/R ^R^R^RR/R ^R^R^RR/R ^R^R^RR/.4       R# r  r:   r>   s   &&r3   r@    ExpandingBoundInTest.insert_dataZ  r  r6   c                    \         P                  P                  4       ;_uu_ 4       p\        VP	                  W4      P                  4       V4       R R R 4       R #   + '       g   i     R # ; irC   rD   r   s   &&&& r3   rL   #ExpandingBoundInTest._assert_resultf  r  rO   c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R 4      4      4      P                  VP                  P                  P                  \        R4      4      4      P                  VP                  P                  4      pV P                  V. R . R. /R7       R# )rm   rn   r  N)r<   r*   r   rV   r+   r|  rk   r	   r   rl   rU   rL   r  s   &  r3   "test_multiple_empty_sets_bindparam7ExpandingBoundInTest.test_multiple_empty_sets_bindparamj  s     &&577::U57799==301U57799==301Xeggjj!	 	 	D"c2sB-?@r6   c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  4      pV P                  V. 4       R # rC   )r<   r*   r   rV   r+   r|  rk   r	   rl   rU   rL   r  s   &  r3   test_multiple_empty_sets_direct4ExpandingBoundInTest.test_multiple_empty_sets_directv  s     &&577::U57799==$%U57799==$%Xeggjj!	 	 	D"%r6   c                   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. R . /R7       R# rm   r  Nr<   r*   r   rV   r+   r|  r    rk   r  r	   r   rU   rL   r  s   &  r3   )test_empty_heterogeneous_tuples_bindparam>ExpandingBoundInTest.test_empty_heterogeneous_tuples_bindparam      &&577::U6%''))UWWYY/33IcNCDXeggjj! 	
 	D"c2Y7r6   c                   a a S P                   P                  oV V3R  lpV! . . 4       V! . RO. RO4       V! . . 4       R# )c                 N  < \        SP                  P                  4      P                  \	        SP                  P
                  SP                  P                  4      P                  V 4      4      P                  SP                  P                  4      pSP                  W!4       R # rC   )
r   rV   r+   r|  r    rk   r  r	   rU   rL   valr   r   rI   r   s   && r3   goGExpandingBoundInTest.test_empty_heterogeneous_tuples_direct.<locals>.go  f    uwwzz"veggii377<=%''**% 
 /r6   N)rR   r  )r   r  )r   r  r~   r   r  r<   r*   rI   r   r   s   f @r3   &test_empty_heterogeneous_tuples_direct;ExpandingBoundInTest.test_empty_heterogeneous_tuples_direct  s7    &&	0 	2r

,.@A
2r
r6   c                   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. R . /R7       R# r  r<   r*   r   rV   r+   r|  r    rk   rl   r	   r   rU   rL   r  s   &  r3   'test_empty_homogeneous_tuples_bindparam<ExpandingBoundInTest.test_empty_homogeneous_tuples_bindparam  r  r6   c                   a a S P                   P                  oV V3R  lpV! . . 4       V! . RO. RO4       V! . . 4       R# )c                 N  < \        SP                  P                  4      P                  \	        SP                  P
                  SP                  P                  4      P                  V 4      4      P                  SP                  P                  4      pSP                  W!4       R # rC   )
r   rV   r+   r|  r    rk   rl   r	   rU   rL   r  s   && r3   r   EExpandingBoundInTest.test_empty_homogeneous_tuples_direct.<locals>.go  r"  r6   N))rQ   rR   rR   r   r   r   r|   r%  r&  s   f @r3   $test_empty_homogeneous_tuples_direct9ExpandingBoundInTest.test_empty_homogeneous_tuples_direct  s7    &&	0 	2r

#%78
2r
r6   c                `   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. ROR . RO/R7       R# )rm   r  Nr$  rR   r   r   r<   r*   r   rV   r+   r|  rk   r	   r   rU   rL   r  s   &  r3   test_bound_in_scalar_bindparam3ExpandingBoundInTest.test_bound_in_scalar_bindparam  st    &&577::U57799==301Xeggjj! 	
 	D"4c9=MNr6   c                F   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . RO4      4      P                  VP                  P                  4      pV P                  V. RO4       R# )rR   Nr5  r$  
r<   r*   r   rV   r+   r|  rk   r	   rU   rL   r  s   &  r3   test_bound_in_scalar_direct0ExpandingBoundInTest.test_bound_in_scalar_direct  sf    &&577::U57799==+,Xeggjj! 	
 	D"45r6   c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  ^^.4      4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  4      pV P                  VRR.4       R# )rR   Nr~   r   r<   r*   r   rV   r+   r|  rk   r	   not_inrU   rL   r  s   &  r3   !test_nonempty_in_plus_empty_notin6ExpandingBoundInTest.test_nonempty_in_plus_empty_notin  s    &&577::U57799==!Q()U577::$$R()Xeggjj!	 	 	D4,/r6   c                   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  P                  ^^.4      4      P                  VP                  P                  4      pV P                  V. 4       R# )rR   Nr>  r  s   &  r3   !test_empty_in_plus_notempty_notin6ExpandingBoundInTest.test_empty_in_plus_notempty_notin  s    &&577::U57799==$%U577::$$aV,-Xeggjj!	 	 	D"%r6   c                    \        R4      P                  \        R\        RR7      4      pV P	                  V. ROR. RO/R7       R# )	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 idrm   Ttype_r  r  Nr$  r  r  r  )r   
bindparamsr   r   rL   rI   r   s   & r3   test_typed_str_in&ExpandingBoundInTest.test_typed_str_in  sK     A

*Ys&DA
B 	 	+, 	 	
r6   c                    \        R4      P                  \        RRR7      4      pV P                  V. ROR. RO/R7       R# )	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....

rF  rm   Tr  r  Nr$  rI  r   rJ  r   rL   rK  s   & r3   test_untyped_str_in(ExpandingBoundInTest.test_untyped_str_in  sI     A

*Ysd3
4 	 	+, 	 	
r6   c                   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. ROR . RO/R7       R# )rm   r  Nr$  r0  r1  )r   r   r*  r  s   &  r3   !test_bound_in_two_tuple_bindparam6ExpandingBoundInTest.test_bound_in_two_tuple_bindparam  s    &&577::U6%''))UWWYY/33IcNCDXeggjj! 	
 	$c3K-L 	 	
r6   c                   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  . RO4      4      P                  VP                  P                  4      pV P                  V. RO4       R# )rR   NrT  r$  )r<   r*   r   rV   r+   r|  r    rk   rl   r	   rU   rL   r  s   &  r3   test_bound_in_two_tuple_direct3ExpandingBoundInTest.test_bound_in_two_tuple_direct  sx    &&577::U6%''))UWWYY/334LMNXeggjj! 	
 	D"45r6   c                   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. ROR . RO/R7       R# )rm   r  Nr$  r#  r  r  s   &  r3   /test_bound_in_heterogeneous_two_tuple_bindparamDExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_bindparam  s    &&577::U6%''))UWWYY/33IcNCDXeggjj! 	
 	:; 	 	
r6   c                   V P                   P                  p\        VP                  P                  4      P                  \        VP                  P                  VP                  P                  4      P                  . RO4      4      P                  VP                  P                  4      pV P                  V. RO4       R# )rR   Nr#  r$  )r<   r*   r   rV   r+   r|  r    rk   r  r	   rU   rL   r  s   &  r3   ,test_bound_in_heterogeneous_two_tuple_directAExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_direct#  s    &&577::Uuwwyy%'')),005
 Xeggjj! 	 		
r6   c                    \        R 4      P                  \        RRR7      4      pV P                  V. ROR. RO/R7       R# )8select id FROM some_table WHERE (x, z) IN :q ORDER BY idrm   TrO  r  Nr$  r#  rP  rK  s   & r3   4test_bound_in_heterogeneous_two_tuple_text_bindparamIExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam4  sI     F

*Ysd3
4 	 	:; 	 	
r6   c                    ! R  R\         P                  4      p\        R4      P                  \	        R\        \        4       \        4       4      RR7      4      pV P                  V. RORV! ^R4      V! ^R4      V! ^R4      ./R	7       R
# )c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )hExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATupleiC  c                    Wn         R # rC   _datarI   r.   s   &*r3   __init__qExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__init__D      !
r6   c                ,    \        V P                  4      # rC   iterri  rI   s   &r3   __iter__qExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__iter__G      DJJ''r6   c                (    V P                   V,          # rC   rh  rI   idxs   &&r3   __getitem__tExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__getitem__J      zz#&r6   c                ,    \        V P                  4      # rC   r   ri  rq  s   &r3   __len__pExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__len__M      4::&r6   rh  N
r]   r^   r_   r`   rk  rr  rx  r}  rd   re   rf   s   @r3   
LikeATuplerf  C       "('' 'r6   r  ra  rm   TrG  r  r  r  r  Nr$  )	collections_abcSequencer   rJ  r   r!   r   r   rL   rI   r  r   s   &  r3   ?test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tupleTExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tupleA  s    	'11 	' F

*9WY9T
 	 	q$'q$'q$' 	 
	
r6   c                     ! R  R\         P                  4      p\        R4      P                  \	        RRR7      4      pV P                  V. RORV! ^R4      V! ^R4      V! ^R4      ./R	7       R
# )c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )gExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATupleih  c                    Wn         R # rC   rh  rj  s   &*r3   rk  pExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__init__i  rm  r6   c                ,    \        V P                  4      # rC   ro  rq  s   &r3   rr  pExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__iter__l  rt  r6   c                (    V P                   V,          # rC   rh  rv  s   &&r3   rx  sExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__getitem__o  rz  r6   c                ,    \        V P                  4      # rC   r|  rq  s   &r3   r}  oExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__len__r  r  r6   rh  Nr  rf   s   @r3   r  r  h  r  r6   r  ra  rm   TrO  r  r  r  r  Nr$  )r  r  r   rJ  r   rL   r  s   &  r3   >test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tupleSExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplec  s}    
	'11 	' F

*Ysd3
4 	 	q$'q$'q$' 	 
	
r6   c                X   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. R . /R7       R# r  r6  r  s   &  r3   (test_empty_set_against_integer_bindparam=ExpandingBoundInTest.test_empty_set_against_integer_bindparam  r    &&577::U57799==301Xeggjj! 	
 	D"c2Y7r6   c                >   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  4      pV P                  V. 4       R # rC   r:  r  s   &  r3   %test_empty_set_against_integer_direct:ExpandingBoundInTest.test_empty_set_against_integer_direct  b    &&eggjj!''		b(9:CCEGGJJOD"%r6   c                \   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. ROR . /R7       R# rm   r  Nr}   r~   r   r  )r<   r*   r   rV   r+   r|  rk   r?  r   rU   rL   r  s   &  r3   1test_empty_set_against_integer_negation_bindparamFExpandingBoundInTest.test_empty_set_against_integer_negation_bindparam  u    &&577::U57799##IcN34Xeggjj! 	
 	D":C9Mr6   c                B   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  4      pV P                  V. RO4       R# rQ   Nr  )
r<   r*   r   rV   r+   r|  rk   r?  rU   rL   r  s   &  r3   .test_empty_set_against_integer_negation_directCExpandingBoundInTest.test_empty_set_against_integer_negation_direct  j    &&577::$$UWWYY%5%5b%9:CCEGGJJO 	 	D":;r6   c                X   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. R . /R7       R# r  )r<   r*   r   rV   r+   r|  r  r	   r   rU   rL   r  s   &  r3   'test_empty_set_against_string_bindparam<ExpandingBoundInTest.test_empty_set_against_string_bindparam  r  r6   c                >   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  4      pV P                  V. 4       R # rC   )
r<   r*   r   rV   r+   r|  r  r	   rU   rL   r  s   &  r3   $test_empty_set_against_string_direct9ExpandingBoundInTest.test_empty_set_against_string_direct  r  r6   c                \   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  \        R 4      4      4      P                  VP                  P                  4      pV P                  V. ROR . /R7       R# r  )r<   r*   r   rV   r+   r|  r  r?  r   rU   rL   r  s   &  r3   0test_empty_set_against_string_negation_bindparamEExpandingBoundInTest.test_empty_set_against_string_negation_bindparam  r  r6   c                B   V P                   P                  p\        VP                  P                  4      P                  VP                  P                  P                  . 4      4      P                  VP                  P                  4      pV P                  V. RO4       R# r  )
r<   r*   r   rV   r+   r|  r  r?  rU   rL   r  s   &  r3   -test_empty_set_against_string_negation_directBExpandingBoundInTest.test_empty_set_against_string_negation_direct  r  r6   c                    \        \        \        4       P                  \	        R RR7      4      \        4       3\        4       R7      4      p\        VP                  V4      P                  4       ^ ,          R4       R# )foo)valueelse_Nr\   Fr   )	r   r   r   r	   r   r   r   r;   fetchonerI   r?   r   s   && r3   )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?r6   c                    \        \        \        4       P                  . 4      \	        4       3\        4       R 7      4      p\        VP                  V4      P                  4       ^ ,          R4       R# )r  Nr  )r   r   r   r	   r   r   r;   r  r  s   && r3   &test_null_in_empty_set_is_false_direct;ExpandingBoundInTest.test_null_in_empty_set_is_false_direct  sW    FJJrNF g
 	Jt$--/2J?r6   r\   NrV  ),r]   r^   r_   r`   r[  rb   r4   r@   rL   r  r  r   rS   tuple_in_w_emptyr  r'  r+  r2  r7  r;  r@  rC  rL  rQ  r  rU  rX  r[  r^  rb  r  r  r  r  r  r  r  r  r  r  r  r  rd   re   rf   s   @r3   r	  r	  L  s    K
 
 	
 	
A
A
& &&8 '8 && ' &&8 '8 && 'O60&
"
$ 	
 	
 6 6 
 
 
 
  

 

 
 
B 
 
@8&
N<8&
N<
@
@ 
@r6   r	  c                     a  ] tR tRt o RtRtRt]R 4       t]R 4       t	R t
R t]P                  P                  R	 4       tR
 t]P                  P                  R 4       t]P                  P                  R 4       tR tR t]P                  P                  R 4       t]P                  P                  R 4       t]P                  P                  R 4       tR t]P                  P                  R 4       t]P                  P                  R 4       t]P                  P                  R 4       t]P                  P8                  R 4       t]P                  P<                  R 4       t]P                  P8                  ]P@                  ! R0 R!m3R0 R"m3R0 R"m3R^03R]!! ]"! ^^4      4      3R]!! ]"! ^^4      4      3R]!! 4       34      R 4       4       t#R t$V t%R# )#LikeFunctionsTesti  TonceNc                h    \        R V\        R\        RR7      \        R\        ^24      4      4       R# r)   r/   r0   s   &&r3   r4   LikeFunctionsTest.define_tables  s*    4d366":&		
r6   c                    VP                  V P                  P                  P                  4       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 ^	RR
/R ^
RR/R ^RR/.4       R# )r+   r.   abcdefgzab/cdefgzab%cdefgab_cdefgzabcde/fgzabcde%fgzab#cdefgab9cdefgzabcde#fgabcd9fgNr:   r>   s   &&r3   r@   LikeFunctionsTest.insert_data  s    JJ!!((*q&),q&*-q&*-q&*-q&*-q&*-q&*-q&*-q&*-r69-r64(	
r6   c                t   V P                   P                  p\        P                  P	                  4       ;_uu_ 4       pVP                  \        VP                  P                  4      P                  V4      4       Uu0 uF  w  pVkK	  	  ppR R R 4       \        XV4       R # u upi   + '       g   i     L#; irC   )r<   r*   r   rE   rF   r;   r   rV   r+   r|  r   )rI   r   r   r*   rK   r  rowss   &&&    r3   _testLikeFunctionsTest._test  s    [[++
YY  D #ll6*,,//+B+H+H+NOOFE O   ! 	D( ! s   A B'=B"
B'"B''B7	c                    V P                   P                  P                  P                  pV P	                  VP                  R 4      0 Rm4       R# )ab%cN
   rQ   rR   r   r   r   r   r      	   r   r<   r*   rV   r.   r  
startswithrI   cols   & r3   test_startswith_unescaped+LikeFunctionsTest.test_startswith_unescaped  s5    kk$$&&++

3>>&)+JKr6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RR7      ^04       R# )r  T
autoescapeNr  r  s   & r3   test_startswith_autoescape,LikeFunctionsTest.test_startswith_autoescape
  s:    kk$$&&++

3>>&T>:QC@r6   c                    V P                   P                  P                  P                  pV P	                  VP                  \        R 4      4      0 Rm4       R# )z'ab%c'Nr  )r<   r*   rV   r.   r  r  r   r  s   & r3   test_startswith_sqlexpr)LikeFunctionsTest.test_startswith_sqlexpr  s=    kk$$&&++

NN>(34+	
r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RR7      ^04       R# )zab##c#escapeNr  r  s   & r3   test_startswith_escape(LikeFunctionsTest.test_startswith_escape  s:    kk$$&&++

3>>'#>6<r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RRR7      ^04       V P	                  VP                  RRRR7      ^04       R# )r  Tr  r  r  zab#cNr  r  s   & r3   !test_startswith_autoescape_escape3LikeFunctionsTest.test_startswith_autoescape_escape  s[    kk$$&&++

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

3>>&T#>FLr6   c                    V P                   P                  P                  P                  pV P	                  VP                  R 4      0 Rm4       R# )e%fgN	   rQ   rR   r   r   r   r   r   r  r  r<   r*   rV   r.   r  endswithr  s   & r3   test_endswith_unescaped)LikeFunctionsTest.test_endswith_unescaped!  s5    kk$$&&++

3<<')DEr6   c                    V P                   P                  P                  P                  pV P	                  VP                  \        R 4      4      0 Rm4       R# )z'e%fg'Nr  )r<   r*   rV   r.   r  r  r   r  s   & r3   test_endswith_sqlexpr'LikeFunctionsTest.test_endswith_sqlexpr%  s=    kk$$&&++

LL124O	
r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RR7      ^04       R# )r  Tr  Nr  r  s   & r3   test_endswith_autoescape*LikeFunctionsTest.test_endswith_autoescape+  s:    kk$$&&++

3<<4<81#>r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RR7      ^	04       R# )ze##fgr  r  Nr  r  s   & r3   test_endswith_escape&LikeFunctionsTest.test_endswith_escape0  s:    kk$$&&++

3<<<4qc:r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RRR7      ^04       V P	                  VP                  RRRR7      ^	04       R# )r  Tr  r  ze#fgNr  r  s   & r3   test_endswith_autoescape_escape1LikeFunctionsTest.test_endswith_autoescape_escape5  [    kk$$&&++

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

3<<4<DqcJr6   c                    V P                   P                  P                  P                  pV P	                  VP                  R 4      0 Rm4       R# )b%cdeNr  r<   r*   rV   r.   r  containsr  s   & r3   test_contains_unescaped)LikeFunctionsTest.test_contains_unescaped;  s5    kk$$&&++

3<<(*EFr6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RR7      ^04       R# )r  Tr  Nr  r  s   & r3   test_contains_autoescape*LikeFunctionsTest.test_contains_autoescape?  s:    kk$$&&++

3<<D<9A3?r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RR7      ^04       R# )zb##cder  r  Nr  r  s   & r3   test_contains_escape&LikeFunctionsTest.test_contains_escapeD  s:    kk$$&&++

3<<<5s;r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R RRR7      ^04       V P	                  VP                  RRRR7      ^04       R# )zb%cdTr  r  zb#cdNr  r  s   & r3   test_contains_autoescape_escape1LikeFunctionsTest.test_contains_autoescape_escapeI  r  r6   c                    V P                   P                  P                  P                  pV P	                  VP                  R 4      ( 0 Rm4       R# )a.cdeN>   rR   r   r   r   r  r   r<   r*   rV   r.   r  regexp_matchr  s   & r3   test_not_regexp_match'LikeFunctionsTest.test_not_regexp_matchO  s:    kk$$&&++

C$$W--/BCr6   c                    V P                   P                  P                  P                  pV P	                  VP                  R R4      P                  R4      0 Rm4       R# )r  FOON   rQ   r   r   r  )r<   r*   rV   r.   r  regexp_replacer  r  s   & r3   test_regexp_replace%LikeFunctionsTest.test_regexp_replaceT  sF    kk$$&&++

w.77>	
r6   r  abcz^abc9cdez^az(b|c)z^(b|c)c                    V P                   P                  P                  P                  pV P	                  VP                  V4      V4       R # rC   r  )rI   r   r   r  s   &&& r3   test_regexp_match#LikeFunctionsTest.test_regexp_match[  s8     kk$$&&++

3##D)84r6   r\   r  >   rQ   r   r   r  r   )&r]   r^   r_   r`   ra   run_insertsrun_deletesrb   r4   r@   r  r  r   rS   like_escapesr  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r]  r   ranger   rd   re   rf   s   @r3   r  r    sN     $KK
 
 
 
$	L ""A #A
 ""= #= ""M #M
F
 ""? #? ""; #; ""K #K
G ""@ #@ ""< #< ""K #K
 ""D #D $$
 %
 ""	,	 !	!"	!	s5B< !	#eArl#$	355 #5r6   r  c                   T   a  ] tR tRt o RtR	t]R 4       t]R 4       tR t	R t
RtV tR# )
ComputedColumnTestij  Tc                    \        R V\        R\        RR7      \        R\        4      \        R\        \        R4      4      \        R\        \        R4      4      4       R	# )
squarer+   Tr,   sideareazside * side	perimeterz4 * sideN)r   r   r   r   r0   s   &&r3   r4    ComputedColumnTest.define_tablesn  sH    4d367#67H]$;<;*)=>	
r6   c                    VP                  V P                  P                  P                  4       R ^R^
/R ^
R^*/.4       R# )r+   r*  N)r;   r<   r)  r=   r>   s   &&r3   r@   ComputedColumnTest.insert_datay  s@    JJ$$&Avr"T2vr$:;	
r6   c           	        \         P                  P                  4       ;_uu_ 4       pVP                  \	        \        R 4      4      P                  V P                  P                  4      P                  V P                  P                  P                  P                  4      4      P                  4       p\        VRR.4       RRR4       R#   + '       g   i     R# ; i)*N)rQ   r   d   rL  )r   *        )r   rE   rF   r;   r   r   r  r<   r)  rU   rV   r+   rG   r   rI   rK   ress   &  r3   test_select_all"ComputedColumnTest.test_select_all  s    YY  D,,tCy!T[[//0$++,,..112 hj	 
 &(;<= !   s   BCC	c                N   \         P                  P                  4       ;_uu_ 4       pVP                  \	        V P
                  P                  P                  P                  V P
                  P                  P                  P                  4      P                  V P
                  P                  4      P                  V P
                  P                  P                  P                  4      4      P                  4       p\        VRR.4       RRR4       R#   + '       g   i     R# ; i)r2  N)r2  rL  )r4  r5  )r   rE   rF   r;   r   r<   r)  rV   r+  r,  r  rU   r+   rG   r   r6  s   &  r3   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)computed_columns)r]   r^   r_   r`   ra   r   rb   r4   r@   r8  r;  rd   re   rf   s   @r3   r'  r'  j  sE      $(L
 
 
 
>	/ 	/r6   r'  c                      a  ] tR tRt o RtRtRtRt]R 4       t	]R 4       t
R tR t]P                  P                  R 4       tR	tV tR
# )IdentityColumnTesti  Tr  c                   \        R V\        R\        \        R^*RRR7      RR7      \        R\	        ^d4      4      4       \        RV\        R\        \        R	^ R
^ R7      RR7      \        R\	        ^d4      4      4       R# )tbl_ar+   T)alwaysstart
nominvalue
nomaxvaluer,   r   tbl_b)	incrementrC  minvaluemaxvalueNir   r   r   r   r   r0   s   &&r3   r4    IdentityColumnTest.define_tables  s    rdt ! 66#;'	
 	2QK 	 66#;'
	
r6   c                `   VP                  V P                  P                  P                  4       R R/R R/.4       VP                  V P                  P                  P                  4       R R/R R/.4       VP                  V P                  P                  P                  4       R^*R R/.4       R# )r   r  r  r+   rV   N)r;   r<   rA  r=   rF  r>   s   &&r3   r@   IdentityColumnTest.insert_data  s    JJ##%c]VSM*	
 	JJ##%c]VSM*	
 	JJ##%B$%	
r6   c                j   VP                  \        \        R 4      4      P                  V P                  P
                  4      P                  V P                  P
                  P                  P                  4      4      P                  4       p\        VRR.4       VP                  \        \        R 4      4      P                  V P                  P                  4      P                  V P                  P                  P                  P                  4      4      P                  4       p\        V. RO4       R# )r1  N)r3  r  )+   r  ))rJ  r  )r   r  )r3  rV   )r;   r   r   r  r<   rA  rU   rV   r+   rG   r   rF  rI   r?   r7  s   && r3   r8  "IdentityColumnTest.test_select_all  s      49[**+Xdkk'')),,-
 (*	 	
 	C)Y'(  49[**+Xdkk'')),,-
 (*	 	
 	C12r6   c                0   VP                  \        V P                  P                  P                  P
                  4      P                  V P                  P                  P                  P
                  4      4      P                  4       p\        VRR.4       R# )r3  N)r3  )rP  )	r;   r   r<   rA  rV   r+   rU   rG   r   rQ  s   && r3   r;  &IdentityColumnTest.test_select_columns  sk      4;;$$&&))*33DKK4E4E4G4G4J4JK

(* 	 	C% r6   c                D   a a VV 3R  lp\        \        \        3V4       R# )c                  z   < S P                  SP                  P                  P                  4       R ^RR/.4       R# )r+   r   r  N)r;   r<   rA  r=   )r?   rI   s   r3   fn7IdentityColumnTest.test_insert_always_error.<locals>.fn  s6    !!((*VS)*r6   N)r   r$   r%   )rI   r?   rW  s   ff r3   test_insert_always_error+IdentityColumnTest.test_insert_always_error  s    	 	}&67<r6   r\   N)identity_columns)r]   r^   r_   r`   r[  r   r"  r#  rb   r4   r@   r8  r;  r   rS   identity_columns_standardrY  rd   re   rf   s   @r3   r?  r?    si     K(LKK
 
4 
 
3! //= 0=r6   r?  c                   >   a  ] tR tRt o RtRt]R 4       tR tRt	V t
R# )IdentityAutoincrementTesti  Tc                |    \        R V\        R\        \        4       RRR7      \        R\	        ^d4      4      4       R# )tblr+   T)r-   autoincrementr   NrK  r0   s   &&r3   r4   'IdentityAutoincrementTest.define_tables  s9    
 " 66#;'	
r6   c                   VP                  V P                  P                  P                  4       R R/4       VP                  V P                  P                  P	                  4       4      P                  4       p\        VR4       R# )r   rowN)rQ   rd  )r;   r<   r`  r=   r   rv  r   rQ  s   && r3    test_autoincrement_with_identity:IdentityAutoincrementTest.test_autoincrement_with_identity  s[    4;;??113fe_E  !7!7!9:@@BCr6   r\   N)autoincrement_without_sequence)r]   r^   r_   r`   r[  r   rb   r4   re  rd   re   rf   s   @r3   r^  r^    s+     K6L
 
 r6   r^  c                   P   a  ] tR tRt o Rt]R 4       t]R 4       tR tR t	Rt
V tR# )	
ExistsTesti  Tc                h    \        R V\        R\        RR7      \        R\        ^24      4      4       R# )stuffr+   Tr,   r.   Nr/   r0   s   &&r3   r4   ExistsTest.define_tables  s*    4d366":&		
r6   c           
         VP                  V P                  P                  P                  4       R ^RR/R ^RR/R ^RR/R ^RR/.4       R# )r+   r.   	some datazsome other dataN)r;   r<   rk  r=   r>   s   &&r3   r@   ExistsTest.insert_data
  s\    JJ##%q&+.q&+.q&+.q&"34		
r6   c           
     $   V P                   P                  p\        VP                  \	        \        ^4      4      P                  \        4       P                  VP                  P                  R8H  4      4      4      P                  4       R.4       R# )rQ   rn  Nr}   r<   rk  r   r;   r   r   r|  r   rV   r.   rG   rI   r?   rk  s   && r3   test_select_existsExistsTest.test_select_exists  sg    !!wqz"((HNN577<<;#>? hjF	
r6   c           
     "   V P                   P                  p\        VP                  \	        \        ^4      4      P                  \        4       P                  VP                  P                  R8H  4      4      4      P                  4       . 4       R# )rQ   zno dataNrq  rr  s   && r3   test_select_exists_false#ExistsTest.test_select_exists_false!  se    !!wqz"((HNN577<<9#<= hj	
r6   r\   N)r]   r^   r_   r`   ra   rb   r4   r@   rs  rv  rd   re   rf   s   @r3   ri  ri    s@      $
 
 	
 	
	
	
 	
r6   ri  c                   |   a  ] tR tRt o Rt]P                  ! ]P                  P                  4      R 4       t	Rt
V tR# )DistinctOnTesti-  Tc                   \        R 4      P                  \        R4      4      P                  \	        R4      4      p\
        P                  ! R4      ;_uu_ 4        V P                  VR4       RRR4       R#   + '       g   i     R# ; i)r1  rm   r  z:DISTINCT ON is currently supported only by the PostgreSQL zSELECT DISTINCT * FROM fooN)r   r  r   r  r   r   expect_deprecatedr  )rI   stms   & r3   test_distinct_onDistinctOnTest.test_distinct_on0  sg    Sk""6#;/;;E%LI&&H
 
 %AB
 
 
 
s   A77B	r\   N)r]   r^   r_   r`   ra   r   fails_ifrS   supports_distinct_onr}  rd   re   rf   s   @r3   ry  ry  -  s6      $g&&;;<C =Cr6   ry  c            
       v   a  ] tR tRt o RtR
t]R 4       t]P                  ! RRRRRRRR7      R 4       t
R	tV tR# )IsOrIsNotDistinctFromTesti9  Tc                    \        R V\        R\        RR7      \        R\        RR7      \        R\        RR7      4       R# )is_distinct_testr+   Tr,   col_arj  col_bNr   r0   s   &&r3   r4   'IsOrIsNotDistinctFromTest.define_tables=  s4    4d37Gd37Gd3	
r6   Niaaaz3col_a_value, col_b_value, expected_row_count_for_is)id_r   c           	        V P                   P                  pVP                  VP                  4       R ^RVRV/.4       VP                  VP	                  4       P                  VP                  P                  P                  VP                  P                  4      4      4      P                  4       p\        \        V4      V4       V^ 8X  d   ^M^ pVP                  VP	                  4       P                  VP                  P                  P                  VP                  P                  4      4      4      P                  4       p\        \        V4      V4       R# )r+   r  r  N)r<   r  r;   r=   r   r|  rV   r  is_distinct_fromr  rG   r   r   is_not_distinct_from)rI   col_a_valuecol_b_valueexpected_row_count_for_isr?   r`  rJ   expected_row_count_for_is_nots   &&&&&   r3   test_is_or_is_not_distinct_from9IsOrIsNotDistinctFromTest.test_is_or_is_not_distinct_fromG  s    kk**JJLAwWkBC	

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

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

(* 	 	K)	
r6   r\   )supports_is_distinct_from)both_int_differentr   rQ   rQ   )both_int_samerQ   rQ   r   )one_null_firstNrQ   rQ   )one_null_secondr   NrQ   )	both_nullNNr   )r]   r^   r_   r`   ra   r   rb   r4   r   r]  r  rd   re   rf   s   @r3   r  r  9  sV      $1L
 
 '"&'$F

r6   r  c                   T   a  ] tR tRt o R	tRt]R 4       t]R 4       tR t	R t
RtV tR# )
WindowFunctionTestin  Tc           
     |    \        R V\        R\        RR7      \        R\        4      \        R\        4      4       R# )r*   r+   Tr,   col1col2Nr   r0   s   &&r3   r4    WindowFunctionTest.define_tabless  s0    4d367#67#	
r6   c                    TP                  V P                  P                  P                  4       \	        ^^24       Uu. uF  pRVRVRV^,          /NK  	  up4       R# u upi )rQ   r+   r  r  N)r;   r<   r*   r=   r%  )r1   r?   is   && r3   r@   WindowFunctionTest.insert_data}  sR    JJ!!((*:?2,G,QdAvq&!a%0,G	
Gs   A
c                   V P                   P                  pVP                  \        \        P
                  ! VP                  P                  4      P                  VP                  P                  P                  4       .R 7      4      P                  VP                  P                  ^8  4      4      P                  4       p\        T\        ^4       Uu. uF  pRNK  	  up4       R# u upi ))rU   N)_   )r<   r*   r;   r   r   maxrV   r  overr  r   r|  r   r   r%  rI   r?   r*   r  r  s   &&   r3   test_windowWindowFunctionTest.test_window  s    [[++
!!**+00(ll//4467 1  eJLL%%*+
 #% 	 	D%),)Q5),-,s   C'
c           	     v   V P                   P                  pVP                  \        \        P
                  ! VP                  P                  4      P                  VP                  P                  .RR7      4      4      P                  4       p\        T\        ^^^4       Uu. uF  qD3NK  	  up4       R# u upi )r   )rU   r  N)rJ  r   )r<   r*   r;   r   r   r  rV   r  r  r  r   r   r%  r  s   &&   r3   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   "B6
r\   N)window_functions)r]   r^   r_   r`   r   ra   rb   r4   r@   r  r  rd   re   rf   s   @r3   r  r  n  sE     (L $
 
 
 

.4 4r6   r  c                     a ] tR tRt oRtR;tt]! ^
4       U u. uF  p RV RV ^,           /NK  	  up t]	R 4       t
]	R 4       t]P                  ! R ]! ^
4       U u. uF  q ^8w  g   K  V NK  	  up ]P                  P                  3R	 ]! ]! ^
4      4      ]P                  P"                  3R
 ]! ]! ^^4      4      ]P                  P$                  3R ^ .]P                  P&                  3R ]! ]! ^^
4      4      ]P                  P(                  3R ]! ]! ^^
4      4      ]P                  P(                  3RR7      R 4       tRtVtR# u up i u up i )BitwiseTesti  Tr  r  r  c           	     Z    \        R V\        R\        4      \        R\        4      4       R# )bitwiser  r  Nr   r0   s   &&r3   r4   BitwiseTest.define_tables  s    i6#w#7W9MNr6   c                    VP                  V P                  P                  P                  4       V P                  4       R # rC   )r;   r<   r  r=   inserted_datar>   s   &&r3   r@   BitwiseTest.insert_data  s+    3::--4468I8IJr6   c                $    V P                  ^4      # r   )bitwise_xorr  s   &r3   <lambda>BitwiseTest.<lambda>      ammA&r6   c                $    V P                  ^4      # r}   )
bitwise_orr  s   &r3   r  r    s    all1or6   c                $    V P                  ^4      # r  )bitwise_andr  s   &r3   r  r    r  r6   c                0    V ^,
          P                  4       # r~   )bitwise_notr  s   &r3   r  r    s    q1u))+r6   c                $    V P                  ^4      # r}   )bitwise_lshiftr  s   &r3   r  r        a&&q)r6   c                $    V P                  ^4      # r~   )bitwise_rshiftr  s   &r3   r  r    r  r6   zcase, expectedr   c                   V P                   P                  pVP                  P                  p\        P
                  ! WR 7      p\        V4      P                  V^ 8  4      P                  V4      pVP                  V4      P                  4       P                  4       p\        Y U	u. uF  qP                  V	,          NK  	  up	4       R# u up	i )r  N)r<   r  rV   r  r   resolve_lambdar   r|  rU   r;   mappingsr   r   r  )
rI   r   r   r?   r`  r  opr   r7  r  s
   &&&&      r3   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]   r^   r_   r`   r[  r"  r#  r%  r  rb   r4   r@   r   r]  rS   supports_bitwise_xorlistsupports_bitwise_orsupports_bitwise_andsupports_bitwise_notsupports_bitwise_shiftr  rd   re   )r  rg   s   0@r3   r  r    s    K &&K+389=9ac1c1q5)9=MO O K K &b	,	1!VQQ	,11	
 &rO00	
 'q!11	
 ,C11	
 *q"33	
 *q"33	

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