ó
    øÞ j.ó  ã                   ó¶  • S SK Jr  S SKrSSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSK	Jr  SS	K	Jr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSKJ!r!  SSKJ"r"  SSKJ#r#  SS KJ$r$  SS!KJ%r%  SS"KJ&r&  SS#KJ'r'  SS$KJ(r(  SS%K)J*r*  SS&K)J+r+   " S' S(\RX                  5      r- " S) S*\RX                  5      r. " S+ S,\R^                  5      r0 " S- S.\RX                  5      r1 " S/ S0\RX                  5      r2 " S1 S2\RX                  5      r3 " S3 S4\RX                  5      r4 " S5 S6\\\RX                  5      r5 " S7 S8\RX                  5      r6 " S9 S:\RX                  5      r7 " S; S<\RX                  5      r8 " S= S>\RX                  5      r9 " S? S@\RX                  5      r: " SA SB\RX                  5      r; " SC SD\\RX                  5      r< " SE SF\RX                  5      r= " SG SH\RX                  5      r> " SI SJ\RX                  5      r?g)Ké    Né   )ÚAssertsCompiledSQL)ÚAssertsExecutionResults)Úconfig)Úfixtures)Úassert_raises)Úeq_)Úin_)Ú	CursorSQL)ÚColumn)ÚTableé   )Ú	bindparam)Úcase)Úcolumn)ÚComputed)Úexists)Úfalse)Ú
ForeignKey)Úfunc)ÚIdentity)ÚInteger)Úliteral)Úliteral_column)Únull)Úselect)ÚString)Útable)Útesting)Útext)Útrue)Útuple_)Ú	TupleType)Úunion)Úvalues)ÚDatabaseError)ÚProgrammingErrorc                   óv   • \ rS rSrSr\S 5       r\S 5       rS r\	R                  R                  S 5       rSrg)	ÚCollateTesté1   Tc                 ó`   • [        SU[        S[        SS9[        S[        S5      5      5        g )NÚ
some_tableÚidT©Úprimary_keyÚdataéd   ©r   r   r   r   ©ÚclsÚmetadatas     Ú^/var/www/html/gaurav/venv/lib/python3.13/site-packages/sqlalchemy/testing/suite/test_select.pyÚdefine_tablesÚCollateTest.define_tables4   s*   € äØØÜ�4œ¨dÑ3Ü�6œ6 #›;Ó'õ		
ó    c                 ó|   • UR                  U R                  R                  R                  5       SSS.SSS./5        g )Né   úcollate data1©r-   r0   r   úcollate data2©ÚexecuteÚtablesr,   Úinsert©r4   Ú
connections     r6   Úinsert_dataÚCollateTest.insert_data=   s;   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à /Ñ2Ø /Ñ2ðõ	
r9   c                 óÆ   • [         R                  R                  5        n[        UR	                  U5      R                  5       U5        S S S 5        g ! , (       d  f       g = f©N©r   ÚdbÚconnectr	   r@   Úfetchall©Úselfr   ÚresultÚconns       r6   Ú_assert_resultÚCollateTest._assert_resultG   ó<   € Ü�Y‰Y×ÑÔ  DÜ�—‘˜VÓ$×-Ñ-Ó/°Ô8÷ !× Ö úó   Ÿ*AÁ
A c                 óh  • [         R                  R                  [         R                  5      nU R	                  [        U R                  R                  5      R                  U R                  R                  R                  R                  R                  U5      R                  5       5      SS/5        g )N)r;   r<   )r   r>   )r   ÚrequiresÚget_order_by_collationr   rQ   r   rA   r,   Úorder_byÚcr0   ÚcollateÚasc)rN   Ú	collations     r6   Útest_collate_order_byÚ!CollateTest.test_collate_order_byK   s   € ä×$Ñ$×;Ñ;¼G¿N¹NÓKˆ	à×ÑÜ�4—;‘;×)Ñ)Ó*×3Ñ3Ø—‘×&Ñ&×(Ñ(×-Ñ-×5Ñ5°iÓ@×DÑDÓFóð "Ð#7Ð8õ		
r9   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__sparse_driver_backend__Úclassmethodr7   rE   rQ   r   rV   Úorder_by_collationr]   Ú__static_attributes__r_   r9   r6   r)   r)   1   sS   † Ø $Ðàñ
ó ð
ð ñ
ó ð
ò9ð ×Ñ×(Ñ(ñ
ó )ó
r9   r)   c                   ó˜   • \ rS rSrSrSr\S 5       r\S 5       rS r	S r
S rS	 rS
 rS r\R                   R"                  S 5       rSrg)ÚOrderByLabelTestéW   z™Test the dialect sends appropriate ORDER BY expressions when
labels are used.

This essentially exercises the "supports_simple_order_by_label"
setting.

Tc                 óÄ   • [        SU[        S[        SS9[        S[        5      [        S[        5      [        S[        S5      5      [        S	[        S5      5      5        g )
Nr,   r-   Tr.   ÚxÚyÚqé2   Úpr2   r3   s     r6   r7   ÚOrderByLabelTest.define_tablesb   sL   € äØØÜ�4œ¨dÑ3Ü�3œÓ Ü�3œÓ Ü�3œ˜r›
Ó#Ü�3œ˜r›
Ó#õ	
r9   c                 ó–   • UR                  U R                  R                  R                  5       SSSSSS.SSSSSS.SSS	S
SS./5        g )Nr;   r   Úq1Úp3)r-   rl   rm   rn   rp   r   Úq2Úp2é   Úq3Úp1r?   rC   s     r6   rE   ÚOrderByLabelTest.insert_datan   sU   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q q¨t¸$Ñ?Ø˜q q¨t¸$Ñ?Ø˜q q¨t¸$Ñ?ðõ	
r9   c                 óÆ   • [         R                  R                  5        n[        UR	                  U5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   rM   s       r6   rQ   ÚOrderByLabelTest._assert_resulty   rS   rT   c                 óÒ   • U R                   R                  nUR                  R                  R	                  S5      nU R                  [        U5      R                  U5      / SQ5        g )NÚlx©©r;   ©r   ©r   )rA   r,   rY   rl   ÚlabelrQ   r   rX   ©rN   r   r~   s      r6   Ú
test_plainÚOrderByLabelTest.test_plain}   sG   € Ø—‘×&Ñ&ˆØ�W‰W�Y‰Y�_‰_˜TÓ"ˆØ×ÑœF 2›J×/Ñ/°Ó3Ò5GÕHr9   c                 ó   • U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      nU R                  [        U5      R                  U5      / SQ5        g )Nr~   )r‚   ©é   ©é   )	rA   r,   rY   rl   rm   rƒ   rQ   r   rX   r„   s      r6   Útest_composed_intÚ"OrderByLabelTest.test_composed_int‚   sV   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆØ×ÑœF 2›J×/Ñ/°Ó3Ò5GÕHr9   c                 ó¼  • U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      n[        R                  " UR                  R                  5      UR                  R                  -   R                  S5      nU R                  [        X#5      R                  X#R                  5       5      / SQ5        g )Nr~   Úly))r   Úq1p3)r‰   Úq2p2)r‹   Úq3p1)rA   r,   rY   rl   rm   rƒ   r   Úlowerrn   rp   rQ   r   rX   Údesc)rN   r   r~   r�   s       r6   Útest_composed_multipleÚ'OrderByLabelTest.test_composed_multiple‡   s�   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆÜ�jŠj˜Ÿ™Ÿ™Ó# e§g¡g§i¡iÑ/×6Ñ6°tÓ<ˆØ×ÑÜ�2‹N×#Ñ# B¯©«	Ó2Ú3õ	
r9   c                 óî   • U R                   R                  nUR                  R                  R	                  S5      nU R                  [        U5      R                  UR                  5       5      / SQ5        g )Nr~   )r‚   r�   r€   )	rA   r,   rY   rl   rƒ   rQ   r   rX   r”   r„   s      r6   Útest_plain_descÚ OrderByLabelTest.test_plain_desc�   sM   € Ø—‘×&Ñ&ˆØ�W‰W�Y‰Y�_‰_˜TÓ"ˆØ×ÑœF 2›J×/Ñ/°·±³	Ó:Ò<NÕOr9   c                 ó  • U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      nU R                  [        U5      R                  UR                  5       5      / SQ5        g )Nr~   )rŠ   rˆ   r‚   )
rA   r,   rY   rl   rm   rƒ   rQ   r   rX   r”   r„   s      r6   Útest_composed_int_descÚ'OrderByLabelTest.test_composed_int_desc•   s\   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆØ×ÑœF 2›J×/Ñ/°·±³	Ó:Ò<NÕOr9   c                 ót  • U R                   R                  nUR                  R                  UR                  R                  -   R                  S5      n[        [        R                  " UR                  R                  5      U5      R                  U5      R                  U5      nU R                  U/ SQ5        g )Nr~   ))r;   r   )r;   r‰   )r;   r‹   )rA   r,   rY   rl   rm   rƒ   r   r   Úcountr-   Úgroup_byrX   rQ   )rN   r   ÚexprÚstmts       r6   Útest_group_by_composedÚ'OrderByLabelTest.test_group_by_composedš   s   € à—‘×&Ñ&ˆØ—‘—	‘	˜EŸG™GŸI™IÑ%×,Ñ,¨TÓ2ˆä”4—:’:˜eŸg™gŸj™jÓ)¨4Ó0×9Ñ9¸$Ó?×HÑHÈÓNð 	ð 	×Ñ˜DÒ":Õ;r9   r_   N)r`   ra   rb   rc   Ú__doc__rd   re   r7   rE   rQ   r…   rŒ   r•   r˜   r›   r   rV   Úgroup_by_complex_expressionr¢   rg   r_   r9   r6   ri   ri   W   sw   † ñð !%Ðàñ	
ó ð	
ð ñ
ó ð
ò9òIò
Iò

òPò
Pð
 ×Ñ×1Ñ1ñ<ó 2ó<r9   ri   c                   ó"   • \ rS rSrSrSrS rSrg)ÚValuesExpressionTesté¤   )Útable_value_constructorTc                 óÜ   • [        [        S[        5      [        S[        5      SS9R	                  / SQ5      n[        UR                  [        U5      5      R                  5       / SQ5        g )Nr-   ÚnameÚ	my_values)r«   ))r;   Úname1)r   Úname2)r   Úname3)	r%   r   r   r   r0   r	   r@   r   Úall)rN   rD   Ú
value_exprs      r6   Útest_tuplesÚ ValuesExpressionTest.test_tuples©   sX   € ÜÜ�4œÓ!¤6¨&´&Ó#9Àñ
ç
‰$Ò9Ó
:ð 	ô 	Ø×Ñœv jÓ1Ó2×6Ñ6Ó8Ú6õ	
r9   r_   N)r`   ra   rb   rc   Ú__requires__rd   r²   rg   r_   r9   r6   r§   r§   ¤   s   † Ø/€Là $Ðõ
r9   r§   c                   óh  • \ rS rSrSr\S 5       r\S 5       r S)S jrS*S jr	S r
S	 r\R                  R                  S
 5       r\R                  R                   S 5       r\R$                  " / SQ/ SQ/ SQSS9\R                  R                   S 5       5       r\R                  R                  S 5       r\R                  R*                  S 5       r\R                  R                   S 5       r\R                  R                   S 5       r\R                  R                  S 5       r\R                  R4                  S 5       r\R                  R4                  S 5       r\R                  R4                  S 5       r\R                  R                  S 5       r\R                  R>                  S 5       r \R                  R>                  S 5       r!\R                  R>                  S 5       r"\R                  R                  \R                  RF                  S 5       5       r$\R                  R>                  S 5       r%\R                  R>                  S  5       r&\R                  RN                  S! 5       r(\R                  RN                  \R                  RR                  S" 5       5       r*\R                  RN                  \R                  RR                  S# 5       5       r+\R                  RX                  S$ 5       r-\R                  RX                  \R                  RR                  S% 5       5       r.\R                  RN                  \R                  RX                  S& 5       5       r/\R                  RN                  \R                  RX                  \R                  RR                  S' 5       5       5       r0Sr1g()+ÚFetchLimitOffsetTesté´   Tc           
      ót   • [        SU[        S[        SS9[        S[        5      [        S[        5      5        g ©Nr,   r-   Tr.   rl   rm   ©r   r   r   r3   s     r6   r7   Ú"FetchLimitOffsetTest.define_tables·   ó0   € äØØÜ�4œ¨dÑ3Ü�3œÓ Ü�3œÓ õ	
r9   c                 óž   • UR                  U R                  R                  R                  5       SSSS.SSSS.SSSS.SSSS.SSSS./5        g )Nr;   r   ©r-   rl   rm   r   rw   r‰   é   r?   rC   s     r6   rE   Ú FetchLimitOffsetTest.insert_dataÁ   s]   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)ðõ		
r9   r_   c                 ó  • U(       a\  UR                  X$5      R                  5       n[        [        U5      [        U5      5        [        [	        U5      [	        U5      5        g [        UR                  X$5      R                  5       U5        g rH   )r@   rL   r	   ÚlenÚset)rN   rD   r   rO   ÚparamsÚset_Ú	query_ress          r6   rQ   Ú#FetchLimitOffsetTest._assert_resultÎ   sd   € ö Ø"×*Ñ*¨6Ó:×CÑCÓEˆIÜ”�I“¤ F£Ô,Ü”�I“¤ F£Õ,ô �
×"Ñ" 6Ó2×;Ñ;Ó=¸vÕFr9   c                 óÆ   • [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   )r   rJ   rK   r	   Úexec_driver_sqlrL   ©rN   r   rO   rÄ   rP   s        r6   Ú_assert_result_strÚ'FetchLimitOffsetTest._assert_result_strÙ   s>   € Ü�Y‰Y×ÑÔ  DÜ�×$Ñ$ VÓ4×=Ñ=Ó?ÀÔH÷ !× Ö úrT   c                 ó  • U R                   R                  n[        U5      R                  UR                  R
                  5      nU R                  UUR                  S5      SS/5        U R                  UUR                  S5      / SQ5        g ©Nr   ©r;   r;   r   ©r   r   r   r   ©rÏ   rÐ   ©r   r   rw   )rA   r,   r   rX   rY   r-   rQ   Úlimit)rN   rD   r   r¡   s       r6   Útest_simple_limitÚ&FetchLimitOffsetTest.test_simple_limitÝ   sr   € Ø—‘×&Ñ&ˆÜ�e‹}×%Ñ% e§g¡g§j¡jÓ1ˆØ×ÑØØ�J‰J�q‹MØ˜	Ð"ô	
ð
 	×ÑØØ�J‰J�q‹MÚ-õ	
r9   c                 óŠ  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  5      R                  S5      R                  5       n[        [        U5      [        U5      5      R                  5       R                  5       nU R                  UUS/5        g )Nr;   r€   )rA   r,   r   rY   r-   rX   rÓ   Úscalar_subqueryr$   ÚsubqueryrQ   )rN   rD   r   r¡   Úus        r6   Ú test_limit_render_multiple_timesÚ5FetchLimitOffsetTest.test_limit_render_multiple_timesë   s‘   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Ó×'Ñ'¨¯©¯
©
Ó3×9Ñ9¸!Ó<×LÑLÓNð 	ô ”&˜“,¤ t£Ó-×6Ñ6Ó8×?Ñ?ÓAˆà×ÑØØàðõ	
r9   c                 óp  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        g rÎ   ©rA   r,   rQ   r   rX   rY   r-   Úfetch©rN   rD   r   s      r6   Útest_simple_fetchÚ&FetchLimitOffsetTest.test_simple_fetchû   sŠ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7Ø˜	Ð"ô	
ð
 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7Ú-õ	
r9   c                 óp  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      SS/5        g )Nr   ©rÒ   ©rw   rw   r‰   ©r‰   rw   r¿   r   rä   rå   ©rA   r,   rQ   r   rX   rY   r-   Úoffsetrß   s      r6   Útest_simple_offsetÚ'FetchLimitOffsetTest.test_simple_offset	  sŠ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ú-ô	
ð
 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ø˜	Ð"õ	
r9   )©r   r   ©r   r;   ©r   r   )rë   rê   rì   )©r   r;   rë   rí   Úcases©Úargnamesc                 ó2  • U R                   R                  nUR                  0 S9n/ SQnU Hh  u  pVXFXe-    nU R                  U[	        U5      R                  UR                  R                  5      R                  U5      R                  U5      U5        Mj     g )N)Úcompiled_cache©rÏ   rÐ   rÒ   rä   rå   )
rA   r,   Úexecution_optionsrQ   r   rX   rY   r-   rÓ   rç   )rN   rD   rî   r   Úassert_datarÓ   rç   Úexpecteds           r6   Útest_simple_limit_offsetÚ-FetchLimitOffsetTest.test_simple_limit_offset  s‡   € ð —‘×&Ñ&ˆØ×1Ñ1ÀÐ1ÐDˆ
âMˆã"‰MˆEØ"¨F©NÐ;ˆHØ×ÑØÜ�u“×&Ñ& u§w¡w§z¡zÓ2×8Ñ8¸Ó?×FÑFÀvÓNØöò #r9   c                 ó¬  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  S5      / SQ5        g )Nr   r;   rÐ   rÒ   r   rã   ©	rA   r,   rQ   r   rX   rY   r-   rÞ   rç   rß   s      r6   Útest_simple_fetch_offsetÚ-FetchLimitOffsetTest.test_simple_fetch_offset,  s    € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7×>Ñ>¸qÓAØ˜	Ð"ô	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7×>Ñ>¸qÓAÚ-õ	
r9   c                 óˆ   • U R                   R                  nU R                  U[        U5      R	                  S5      / SQSS9  g )Né
   ró   T©rÅ   )rA   r,   rQ   r   rÞ   rß   s      r6   Útest_fetch_offset_no_orderÚ/FetchLimitOffsetTest.test_fetch_offset_no_order;  s?   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×Ñ Ó#ÚCØð	 	ò 	
r9   c                 óp  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      / SQ5        g )Nr   ró   r;   ©rÐ   rÒ   rä   rå   ræ   rß   s      r6   Útest_simple_offset_zeroÚ,FetchLimitOffsetTest.test_simple_offset_zeroE  s…   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8ÚCô	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ú8õ	
r9   c                 óZ  • U R                   R                  n[        U5      R                  UR                  R
                  5      R                  S5      R                  S5      nUR                  [        R                  R                  SS0S9n[        U5      nU R                  USS/5        g©	z7test that 'literal binds' mode works - no bound params.r   r;   Úliteral_bindsT)ÚdialectÚcompile_kwargsrÐ   rÒ   N)rA   r,   r   rX   rY   r-   rÓ   rç   Úcompiler   rJ   r	  ÚstrrË   ©rN   r   r¡   Úsqls       r6   Útest_limit_offset_nobindsÚ.FetchLimitOffsetTest.test_limit_offset_nobindsT  óŒ   € ð —‘×&Ñ&ˆÜ�e‹}×%Ñ% e§g¡g§j¡jÓ1×7Ñ7¸Ó:×AÑAÀ!ÓDˆØ�l‰lÜ—I‘I×%Ñ%°ÈÐ6Mð ð 
ˆô �#‹hˆà×Ñ  i°Ð%;Õ<r9   c                 óZ  • U R                   R                  n[        U5      R                  UR                  R
                  5      R                  S5      R                  S5      nUR                  [        R                  R                  SS0S9n[        U5      nU R                  USS/5        gr  )rA   r,   r   rX   rY   r-   rÞ   rç   r  r   rJ   r	  r  rË   r  s       r6   Útest_fetch_offset_nobindsÚ.FetchLimitOffsetTest.test_fetch_offset_nobindsa  r  r9   c                 ó˜  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      SS/SS0S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      / SQSS0S9  g )NÚlrÏ   rÐ   r   ©rÄ   rÑ   r   )	rA   r,   rQ   r   rX   rY   r-   rÓ   r   rß   s      r6   Útest_bound_limitÚ%FetchLimitOffsetTest.test_bound_limitn  sª   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4´Y¸s³^ÓDØ˜	Ð"Ø˜�8ð	 	ñ 	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4´Y¸s³^ÓDÚ-Ø˜�8ð	 	ò 	
r9   c                 ó˜  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      / SQSS0S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      / SQSS0S9  g )NÚorã   r   r  r  r;   )	rA   r,   rQ   r   rX   rY   r-   rç   r   rß   s      r6   Útest_bound_offsetÚ&FetchLimitOffsetTest.test_bound_offset  s¥   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5´iÀ³nÓEÚ-Ø˜�8ð	 	ñ 	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5´iÀ³nÓEÚ8Ø˜�8ð	 	ò 	
r9   c                 óü  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      SS/SSS.S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      / S	QS
SS.S9  g )Nr  r  rÐ   rÒ   r   r;   )r  r  r  rã   r   )
rA   r,   rQ   r   rX   rY   r-   rÓ   r   rç   rß   s      r6   Útest_bound_limit_offsetÚ,FetchLimitOffsetTest.test_bound_limit_offset�  óÄ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”9˜S“>Ó"ß‰V”I˜c“NÓ#Ø˜	Ð"Ø Ñ#ð 	ñ 	
ð 	×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”9˜S“>Ó"ß‰V”I˜c“NÓ#Ú-Ø Ñ#ð 	ò 	
r9   c                 óü  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      SS/SSS.S9  U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      5      R                  [        S5      5      / S	QS
SS.S9  g )NÚfr  rÐ   rÒ   r   r;   )r#  r  r  rã   r   )
rA   r,   rQ   r   rX   rY   r-   rÞ   r   rç   rß   s      r6   Útest_bound_fetch_offsetÚ,FetchLimitOffsetTest.test_bound_fetch_offset§  r!  r9   c           	      óú   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      SS/5        g )NÚ1Ú2rä   rå   )	rA   r,   rQ   r   rX   rY   r-   rç   r   rß   s      r6   Útest_expr_offsetÚ%FetchLimitOffsetTest.test_expr_offset¾  s\   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r9   c           	      óú   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      / SQ5        g )Nr'  r(  rÑ   )	rA   r,   rQ   r   rX   rY   r-   rÓ   r   rß   s      r6   Útest_expr_limitÚ$FetchLimitOffsetTest.test_expr_limitÉ  sW   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=Ú-õ	
r9   c           	      óB  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  [        S5      [        S5      -   5      SS/5        g ©Nr'  rÒ   rä   ©
rA   r,   rQ   r   rX   rY   r-   rÓ   r   rç   rß   s      r6   Útest_expr_limit_offsetÚ+FetchLimitOffsetTest.test_expr_limit_offsetÔ  su   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r9   c           	      óB  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  [        S5      [        S5      -   5      SS/5        g r/  )
rA   r,   rQ   r   rX   rY   r-   rÞ   r   rç   rß   s      r6   Útest_expr_fetch_offsetÚ+FetchLimitOffsetTest.test_expr_fetch_offsetà  sw   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r9   c           	      ó   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  [        S5      [        S5      -   5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  S5      R                  [        S5      [        S5      -   5      / SQ5        g )Nr   r'  rÒ   rä   r   rã   )
rA   r,   rQ   r   rX   rY   r-   rÓ   rç   r   rß   s      r6   Útest_simple_limit_expr_offsetÚ2FetchLimitOffsetTest.test_simple_limit_expr_offsetí  s¶   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U�1‹Xß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"ô	
ð 	×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U�1‹Xß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ú-õ	
r9   c           	      ó   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  [        S5      [        S5      -   5      R                  S5      SS/5        g )Nr'  r   rÒ   rä   r;   rÐ   r0  rß   s      r6   Útest_expr_limit_simple_offsetÚ2FetchLimitOffsetTest.test_expr_limit_simple_offset  s»   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V�A‹YØ˜	Ð"ô	
ð 	×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V�A‹YØ˜	Ð"õ	
r9   c                 ó   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  R                  5       5      R                  SSS9SS/SS9  U R                  U[        U5      R	                  UR
                  R                  R                  5       5      R                  SSS9/ SQSS9  g )	Nr;   T©Ú	with_tiesrä   rå   rÿ   r   rã   ©	rA   r,   rQ   r   rX   rY   rl   r”   rÞ   rß   s      r6   Útest_simple_fetch_tiesÚ+FetchLimitOffsetTest.test_simple_fetch_ties  s²   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§9¡9§>¡>Ó#3Ó4×:Ñ:¸1ÈÐ:ÐMØ˜	Ð"Øð	 	ñ 	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§9¡9§>¡>Ó#3Ó4×:Ñ:¸1ÈÐ:ÐMÚ-Øð	 	ò 	
r9   c                 óL  • U R                   R                  nUR                  [        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      5      R                  5       n[        US   S5        [        [        U5      1 Sk5        g )Nr   Tr=  r   rÒ   ¾   rÒ   rä   rå   ©rA   r,   r@   r   rX   rY   rl   rÞ   rç   rL   r	   rÃ   ©rN   rD   r   Úfas       r6   Útest_fetch_offset_tiesÚ+FetchLimitOffsetTest.test_fetch_offset_ties(  s~   € ð —‘×&Ñ&ˆØ×ÑÜ�5‹Mß‰X�e—g‘g—i‘iÓ ß‰U�1 ˆUÐ%ß‰V�A‹Yó	
÷
 ‰(‹*ð 	ô 	ˆBˆq‰E�9ÔÜŒC�‹GÒ6Õ7r9   c                 ó¨  • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      SS/5        U R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      SS	/5        g )
Nr   Tr=  r;   rÐ   rÒ   r   rä   rå   )	rA   r,   rQ   r   rX   rY   rl   rÞ   rç   rß   s      r6   Ú#test_fetch_offset_ties_exact_numberÚ8FetchLimitOffsetTest.test_fetch_offset_ties_exact_number5  s§   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—i‘iÓ ß‰U�1 ˆUÐ%ß‰V�A‹YØ˜	Ð"ô	
ð 	×ÑØÜ�5‹Mß‰X�e—g‘g—i‘iÓ ß‰U�1 ˆUÐ%ß‰V�A‹YØ˜	Ð"õ	
r9   c                 óÌ   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9S/5        g )Né   T©ÚpercentrÏ   rÝ   rß   s      r6   Útest_simple_fetch_percentÚ.FetchLimitOffsetTest.test_simple_fetch_percentK  sQ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°RÀÐ4ÐFØˆKõ	
r9   c                 óì   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  5      R                  SSS9R                  S5      SS/5        g )Né(   TrN  r;   rÐ   rÒ   rú   rß   s      r6   Útest_fetch_offset_percentÚ.FetchLimitOffsetTest.test_fetch_offset_percentT  s\   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U�2˜tˆUÐ$ß‰V�A‹YØ˜	Ð"õ	
r9   c           	      óê   • U R                   R                  nU R                  U[        U5      R	                  UR
                  R                  R                  5       5      R                  SSSS9SS/SS9  g )NrM  T©rO  r>  rä   rå   rÿ   r?  rß   s      r6   Útest_simple_fetch_percent_tiesÚ3FetchLimitOffsetTest.test_simple_fetch_percent_tiesa  sd   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—i‘i—n‘nÓ&Ó'ß‰U�2˜t¨tˆUÐ4Ø˜	Ð"Øð 	ò 	
r9   c                 óN  • U R                   R                  nUR                  [        U5      R	                  UR
                  R                  5      R                  SSSS9R                  S5      5      R                  5       n[        US   S5        [        [        U5      1 Sk5        g )NrS  TrW  r   r   rÒ   rC  rD  rE  s       r6   Útest_fetch_offset_percent_tiesÚ3FetchLimitOffsetTest.test_fetch_offset_percent_tiesn  s€   € ð —‘×&Ñ&ˆØ×ÑÜ�5‹Mß‰X�e—g‘g—i‘iÓ ß‰U�2˜t¨tˆUÐ4ß‰V�A‹Yó	
÷
 ‰(‹*ð 	ô 	ˆBˆq‰E�9ÔÜŒC�‹GÒ6Õ7r9   N)r_   F©r_   )2r`   ra   rb   rc   Ú__backend__re   r7   rE   rQ   rË   rÔ   rÚ   r   rV   Úfetch_firstrà   rç   rè   Úcombinationsr÷   rû   Úfetch_no_order_byr   r  r  r  Úbound_limit_offsetr  r  r  r$  Úsql_expression_limit_offsetr)  r,  r1  Úfetch_expressionr4  r7  r:  Ú
fetch_tiesr@  Úfetch_offset_with_optionsrG  rJ  Úfetch_percentrP  rT  rX  r[  rg   r_   r9   r6   r¶   r¶   ´   s  † Ø€Kàñ
ó ð
ð ñ

ó ð

ð ;@ô	GôIò
ò
ð  ×Ñ×!Ñ!ñ
ó "ð
ð ×Ñ×Ññ
ó ð
ð ×ÒÚ	!Ú	!Ú	!Øñ	ð ×Ñ×Ññó óðð ×Ñ×!Ñ!ñ
ó "ð
ð ×Ñ×'Ñ'ñ
ó (ð
ð ×Ñ×Ññ
ó ð
ð ×Ñ×Ññ
=ó ð
=ð ×Ñ×!Ñ!ñ
=ó "ð
=ð ×Ñ×(Ñ(ñ
ó )ð
ð  ×Ñ×(Ñ(ñ
ó )ð
ð  ×Ñ×(Ñ(ñ
ó )ð
ð, ×Ñ×!Ñ!ñ
ó "ð
ð, ×Ñ×1Ñ1ñ
ó 2ð
ð ×Ñ×1Ñ1ñ
ó 2ð
ð ×Ñ×1Ñ1ñ	
ó 2ð	
ð ×Ñ×!Ñ!Ø×Ñ×&Ñ&ñ	
ó 'ó "ð	
ð ×Ñ×1Ñ1ñ
ó 2ð
ð( ×Ñ×1Ñ1ñ
ó 2ð
ð( ×Ñ× Ñ ñ
ó !ð
ð  ×Ñ× Ñ Ø×Ñ×/Ñ/ñ	8ó 0ó !ð	8ð ×Ñ× Ñ Ø×Ñ×/Ñ/ñ
ó 0ó !ð
ð( ×Ñ×#Ñ#ñ
ó $ð
ð ×Ñ×#Ñ#Ø×Ñ×/Ñ/ñ	
ó 0ó $ð	
ð ×Ñ× Ñ Ø×Ñ×#Ñ#ñ	
ó $ó !ð	
ð ×Ñ× Ñ Ø×Ñ×#Ñ#Ø×Ñ×/Ñ/ñ	8ó 0ó $ó !ó	8r9   r¶   c                   óR   • \ rS rSrSrSrSr\S 5       r\S 5       r	S r
S rS	 rS
rg)ÚSameNamedSchemaTableTesti}  ztests for #7471T)Úschemasc                 ó¢   • [        SU[        S[        SS9[        R                  S9  [        SU[        S[        SS9[        S[        SS95        g )	Nr,   r-   Tr.   )ÚschemaÚsome_table_idF©Únullable)r   r   r   r   Útest_schemar3   s     r6   r7   Ú&SameNamedSchemaTableTest.define_tables„  sR   € äØØÜ�4œ¨dÑ3Ü×%Ñ%ò		
ô 	ØØÜ�4œ¨dÑ3ÜØÜàñ	õ	
	
r9   c                 óØ   • U R                  SS[        R                  -  5      u  p#UR                  UR	                  5       SS05        UR                  UR	                  5       SSS.5        g )Nr,   ú%s.some_tabler-   r;   )r-   rm  )rA   r   rp  r@   rB   )r4   rD   r,   Úsome_table_schemas       r6   rE   Ú$SameNamedSchemaTableTest.insert_data˜  sa   € à(+¯
©
Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
ð 	×ÑÐ,×3Ñ3Ó5¸¸a°yÔAØ×Ñ˜:×,Ñ,Ó.°qÈ1Ñ0MÕNr9   c           
      ó*  • U R                  SS[        R                  -  5      u  p#[        UR	                  [        X#5      R                  UUUR                  R                  UR                  R                  :H  5      5      R                  5       S5        g )Nr,   rs  ©r;   r;   r;   )rA   r   rp  r	   r@   r   Ú	join_fromrY   rm  r-   Úfirst©rN   rD   r,   rt  s       r6   Útest_simple_join_both_tablesÚ5SameNamedSchemaTableTest.test_simple_join_both_tables   s   € Ø(,¯©Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
ô 	Ø×ÑÜ�zÓ5×?Ñ?ØØ%Ø—L‘L×.Ñ.Ð2C×2EÑ2E×2HÑ2HÑHóó÷ ‰e‹gØõ		
r9   c           
      óv  • U R                  SS[        R                  -  5      u  p#[        UR	                  [        U5      R                  UUUR                  R                  UR                  R                  :H  5      R                  UR                  R                  S:H  5      5      R                  5       S5        g )Nr,   rs  r;   ©r;   r;   )rA   r   rp  r	   r@   r   rx  rY   rm  r-   Úwherery  rz  s       r6   Ú!test_simple_join_whereclause_onlyÚ:SameNamedSchemaTableTest.test_simple_join_whereclause_only°  s—   € Ø(,¯©Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
ô 	Ø×ÑÜ�zÓ"ß‘ØØ%Ø—L‘L×.Ñ.Ð2C×2EÑ2E×2HÑ2HÑHó÷
 ‘�z—|‘|—‘¨!Ñ+Ó,ó÷ ‰e‹gØõ	
r9   c           
      ó”  • U R                  SS[        R                  -  5      u  p#[        U5      R	                  UUUR
                  R                  UR
                  R                  :H  5      R                  UR
                  R                  S:H  5      R                  5       n[        UR                  [        X$R
                  R                  5      R	                  UUUR
                  R                  UR
                  R                  :H  5      R                  UR
                  R                  S:H  5      5      R                  5       S5        g )Nr,   rs  r;   rw  )rA   r   rp  r   rx  rY   rm  r-   r  rØ   r	   r@   ry  )rN   rD   r,   rt  Úsubqs        r6   Útest_subqueryÚ&SameNamedSchemaTableTest.test_subqueryÂ  sø   € Ø(,¯©Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
ô
 �:Óß‰YØØ!Ø—‘×*Ñ*Ð.?×.AÑ.A×.DÑ.DÑDó÷
 ‰U�:—<‘<—?‘? aÑ'Ó(ß‰X‹Zð 	ô 	Ø×ÑÜ�z§6¡6§9¡9Ó-ß‘ØØØ—L‘L×.Ñ.°$·&±&·)±)Ñ;ó÷
 ‘�z—|‘|—‘¨!Ñ+Ó,ó÷ ‰e‹gØõ	
r9   r_   N)r`   ra   rb   rc   r¤   rd   r´   re   r7   rE   r{  r€  r„  rg   r_   r9   r6   ri  ri  }  sG   † Ùà $Ðà€Làñ
ó ð
ð& ñOó ðOò
ò 
õ$
r9   ri  c                   ó`   • \ rS rSrSrSS jr\S 5       r\S 5       rS r	S r
S	 rS
 rS rSrg)ÚJoinTestià  Tr_   c                 óÆ   • [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   rÊ   s        r6   rQ   ÚJoinTest._assert_resultã  ó<   € Ü�Y‰Y×ÑÔ  DÜ�—‘˜VÓ,×5Ñ5Ó7¸Ô@÷ !× Ö úrT   c                 ó’   • [        SU[        S[        SS95        [        SU[        S[        SS9[        S[        S5      SS	95        g )
NÚar-   Tr.   ÚbÚa_idza.idFrn  )r   r   r   r   r3   s     r6   r7   ÚJoinTest.define_tablesç  sB   € äˆc�8œV D¬'¸tÑDÔEÜØØÜ�4œ¨dÑ3Ü�6œ: fÓ-¸Ñ>õ		
r9   c           	      ó  • UR                  U R                  R                  R                  5       SS0SS0SS0SS0SS0/5        UR                  U R                  R                  R                  5       SSS.SSS.SSS.SSS./5        g )Nr-   r;   r   r   rw   r‰   )r-   rŽ  )r@   rA   rŒ  rB   r�  rC   s     r6   rE   ÚJoinTest.insert_datañ  s�   € à×ÑØ�J‰J�L‰L×ÑÓ!Ø�AˆY˜˜q˜	 D¨! 9¨t°Q¨i¸$À¸ÐCô	
ð
 	×ÑØ�J‰J�L‰L×ÑÓ!à !Ñ$Ø !Ñ$Ø !Ñ$Ø !Ñ$ð	õ	
r9   c                 ó  • U R                  SS5      u  p[        X5      R                  UR                  U5      5      R	                  UR
                  R                  UR
                  R                  5      nU R                  U/ SQ5        g ©NrŒ  r�  )rw  )r;   r   r;   )r   rw   r   )r   r‰   r   ©rA   r   Úselect_fromÚjoinrX   rY   r-   rQ   ©rN   rŒ  r�  r¡   s       r6   Útest_inner_join_fkÚJoinTest.test_inner_join_fk  ó^   € Ø�{‰{˜3 Ó$‰ˆä�a‹|×'Ñ'¨¯©¨q«	Ó2×;Ñ;¸A¿C¹C¿F¹FÀAÇCÁCÇFÁFÓKˆà×Ñ˜DÒ"NÕOr9   c                 óž  • U R                  SS5      u  p[        X5      R                  UR                  U[	        5       5      5      R                  UR                  R                  UR                  R                  5      nU R                  U[        R                  " / SQ/ SQ5       VVVs/ sH  u  u  nu  p$XU4PM     snnn5        g s  snnnf )NrŒ  r�  )r€   r�   r‚   ©rw   rˆ   )r~  rë   )rw   r   )r‰   r   )rA   r   r•  r–  r!   rX   rY   r-   rQ   Ú	itertoolsÚproduct)rN   rŒ  r�  r¡   rY   s        r6   Útest_inner_join_trueÚJoinTest.test_inner_join_true	  s«   € Ø�{‰{˜3 Ó$‰ˆô �1‹Lß‰[˜Ÿ™ ¤4£6Ó*Ó+ß‰X�a—c‘c—f‘f˜aŸc™cŸf™fÓ%ð 	ð 	×ÑØô %.×$5Ò$5Ú2Ú4ô%õñ%‘L‘D�Q™&˜1ð �q“	ñ%óõ		
ùôs   Â*Cc                 ó$  • U R                  SS5      u  p[        X5      R                  UR                  U[	        5       5      5      R                  UR                  R                  UR                  R                  5      nU R                  U/ 5        g )NrŒ  r�  )	rA   r   r•  r–  r   rX   rY   r-   rQ   r—  s       r6   Útest_inner_join_falseÚJoinTest.test_inner_join_false  sg   € Ø�{‰{˜3 Ó$‰ˆô �1‹Lß‰[˜Ÿ™ ¤5£7Ó+Ó,ß‰X�a—c‘c—f‘f˜aŸc™cŸf™fÓ%ð 	ð 	×Ñ˜D "Õ%r9   c                 ó(  • U R                  SS5      u  p[        X5      R                  UR                  U[	        5       5      5      R                  UR                  R                  UR                  R                  5      nU R                  U/ SQ5        g )NrŒ  r�  ))r;   NN)r   NN)r   NN)rw   NN)r‰   NN)	rA   r   r•  Ú	outerjoinr   rX   rY   r-   rQ   r—  s       r6   Útest_outer_join_falseÚJoinTest.test_outer_join_false(  sm   € Ø�{‰{˜3 Ó$‰ˆô �1‹Lß‰[˜Ÿ™ Q¬«Ó0Ó1ß‰X�a—c‘c—f‘f˜aŸc™cŸf™fÓ%ð 	ð 	×ÑØòõ		
r9   c                 ó  • U R                  SS5      u  p[        X5      R                  UR                  U5      5      R	                  UR
                  R                  UR
                  R                  5      nU R                  U/ SQ5        g r“  r”  r—  s       r6   Útest_outer_join_fkÚJoinTest.test_outer_join_fk<  rš  r9   Nr]  )r`   ra   rb   rc   rd   rQ   re   r7   rE   r˜  rŸ  r¢  r¦  r©  rg   r_   r9   r6   r‡  r‡  à  sQ   † Ø $ÐôAð ñ
ó ð
ð ñ
ó ð
ò Pò
ò(	&ò
õ(Pr9   r‡  c                   ó4  • \ rS rSrSr\S 5       r\S 5       rSS jrS r	S r
\R                  R                  \R                  R                  S	 5       5       r\R                  R                   S
 5       rS r\R                  R                  S 5       rS rSrg)ÚCompoundSelectTestiD  Tc           
      ót   • [        SU[        S[        SS9[        S[        5      [        S[        5      5        g r¹   rº   r3   s     r6   r7   Ú CompoundSelectTest.define_tablesG  r¼   r9   c           
      ó”   • UR                  U R                  R                  R                  5       SSSS.SSSS.SSSS.SSSS./5        g )Nr;   r   r¾   r   rw   r‰   r?   rC   s     r6   rE   ÚCompoundSelectTest.insert_dataQ  sS   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)ð	õ	
r9   r_   c                 óÆ   • [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   rÊ   s        r6   rQ   Ú!CompoundSelectTest._assert_result]  rŠ  rT   c                 óx  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      n[        U5      R                  UR                  R
                  S:H  5      n[        X#5      nU R                  UR                  UR                  R
                  5      SS/5        g ©Nr   r   rÐ   rÒ   )
rA   r,   r   r  rY   r-   r$   rQ   rX   Úselected_columns©rN   r   Ús1Ús2Úu1s        r6   Útest_plain_unionÚ#CompoundSelectTest.test_plain_uniona  s‡   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆä�2‹]ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r9   c                 ó°  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      n[        U5      R                  UR                  R
                  S:H  5      n[        X#5      R                  5       R                  5       nU R                  UR                  UR                  R
                  5      SS/5        g r´  )rA   r,   r   r  rY   r-   r$   ÚaliasrQ   rX   rµ  r¶  s        r6   Útest_select_from_plain_unionÚ/CompoundSelectTest.test_select_from_plain_unionk  s™   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆä�2‹]× Ñ Ó"×)Ñ)Ó+ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r9   c                 ó^  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g ©Nr   r;   r   rÐ   rÒ   )rA   r,   r   r  rY   r-   rÓ   rX   r$   rQ   rµ  r¶  s        r6   Ú&test_limit_offset_selectable_in_unionsÚ9CompoundSelectTest.test_limit_offset_selectable_in_unionsu  sÐ   € ð —‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×7Ñ7¸Ó:×CÑCÀEÇGÁGÇJÁJÓOˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×7Ñ7¸Ó:×CÑCÀEÇGÁGÇJÁJÓOˆä�2‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r9   c                 ó"  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  UR                  R
                  5      n[        U5      R                  UR                  R
                  S:H  5      R                  UR                  R
                  5      n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g r´  )rA   r,   r   r  rY   r-   rX   r$   rÓ   rQ   rµ  r¶  s        r6   Ú"test_order_by_selectable_in_unionsÚ5CompoundSelectTest.test_order_by_selectable_in_unions�  s¸   € à—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:¸5¿7¹7¿:¹:ÓFˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:¸5¿7¹7¿:¹:ÓFˆä�2‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r9   c                 óÎ  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  5       n[        U5      R                  UR                  R
                  S:H  5      R                  5       n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g r´  )rA   r,   r   r  rY   r-   Údistinctr$   rÓ   rQ   rX   rµ  r¶  s        r6   Ú"test_distinct_selectable_in_unionsÚ5CompoundSelectTest.test_distinct_selectable_in_unionsŒ  s¤   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:Ó<ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:Ó<ˆä�2‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r9   c                 ó–  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      n[        X#5      R                  5       nU R                  UR                  5       R                  S5      R                  UR                  R
                  5      SS/5        g rÁ  )rA   r,   r   r  rY   r-   rÓ   rX   r$   r½  rQ   r¶  s        r6   Ú&test_limit_offset_in_unions_from_aliasÚ9CompoundSelectTest.test_limit_offset_in_unions_from_alias–  sÝ   € à—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×7Ñ7¸Ó:×CÑCÀEÇGÁGÇJÁJÓOˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×7Ñ7¸Ó:×CÑCÀEÇGÁGÇJÁJÓOˆô �2‹]× Ñ Ó"ˆØ×ÑØ�I‰I‹K×Ñ˜aÓ ×)Ñ)¨"¯$©$¯'©'Ó2°YÀ	Ð4Jõ	
r9   c                 óÎ  • U R                   R                  n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      R                  5       R                  5       n[        U5      R                  UR                  R
                  S:H  5      R                  S5      R                  UR                  R
                  5      R                  5       R                  5       n[        X#5      R                  S5      nU R                  UR                  UR                  R
                  5      SS/5        g rÁ  )rA   r,   r   r  rY   r-   rÓ   rX   r½  r$   rQ   rµ  r¶  s        r6   Ú.test_limit_offset_aliased_selectable_in_unionsÚACompoundSelectTest.test_limit_offset_aliased_selectable_in_unions¢  sì   € Ø—‘×&Ñ&ˆä�5‹Mß‰U�5—7‘7—:‘: ‘?Ó#ß‰U�1‹Xß‰X�e—g‘g—j‘jÓ!ß‰U‹Wß‰V‹Xð 	ô �5‹Mß‰U�5—7‘7—:‘: ‘?Ó#ß‰U�1‹Xß‰X�e—g‘g—j‘jÓ!ß‰U‹Wß‰V‹Xð 	ô �2‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r9   Nr]  )r`   ra   rb   rc   rd   re   r7   rE   rQ   rº  r¾  r   rV   Úorder_by_col_from_unionÚ/parens_in_union_contained_select_w_limit_offsetrÂ  Ú0parens_in_union_contained_select_wo_limit_offsetrÅ  rÉ  rÌ  rÏ  rg   r_   r9   r6   r¬  r¬  D  s¿   † Ø $Ðàñ
ó ð
ð ñ	
ó ð	
ôAò
ò
ð ×Ñ×-Ñ-Ø×Ñ×EÑEñ
ó Fó .ð
ð ×Ñ×FÑFñ
ó Gð
ò
ð ×Ñ×EÑEñ	
ó Fð	
õ
r9   r¬  c                   óÄ   • \ rS rSrSrSr\S 5       r\S 5       rS r	S r
S rS	 r\R                  R                  S
 5       r\R                  R                  S 5       rSrg)ÚPostCompileParamsTesti»  T)Ústandard_cursor_sqlc                 óœ   • [        SU[        S[        SS9[        S[        5      [        S[        5      [        S[        S5      5      5        g ©	Nr,   r-   Tr.   rl   rm   Úzro   r2   r3   s     r6   r7   Ú#PostCompileParamsTest.define_tablesÂ  ó>   € äØØÜ�4œ¨dÑ3Ü�3œÓ Ü�3œÓ Ü�3œ˜r›
Ó#õ	
r9   c                 óœ   • UR                  U R                  R                  R                  5       SSSSS.SSSSS.SSSSS.SSS	S
S./5        g ©Nr;   r   Úz1)r-   rl   rm   rÙ  r   Úz2rw   Úz3r‰   Úz4r?   rC   s     r6   rE   Ú!PostCompileParamsTest.insert_dataÍ  ó[   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q q¨tÑ4Ø˜q q¨tÑ4Ø˜q q¨tÑ4Ø˜q q¨tÑ4ð	õ	
r9   c                 óð   • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  [        SSS9:H  5      nU R                  US0 5        g )Nrn   T©Úliteral_executezKSELECT some_table.id FROM some_table WHERE some_table.x = __[POSTCOMPILE_q]©	rA   r,   r   rY   r-   r  rl   r   Úassert_compile©rN   r   r¡   s      r6   Útest_compileÚ"PostCompileParamsTest.test_compileÙ  s`   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¸Ñ=Ñ=ó
ˆð 	×ÑØð5àõ		
r9   c           	      óð   • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  [        SSSS9:H  5      nU R                  US0 SS9  g )Nrn   rþ   Trå  z<SELECT some_table.id FROM some_table WHERE some_table.x = 10)r  rç  ré  s      r6   Útest_compile_literal_bindsÚ0PostCompileParamsTest.test_compile_literal_bindsç  sh   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¨¸DÑAÑAó
ˆð 	×ÑØØJØØð	 	ò 	
r9   c           	      óL  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  [        SSS9:H  5      nU R                  5        n[        R                  R                  5        nUR                  U[        SS95        S S S 5        S S S 5        WR                  [        S[        R                  R                   R"                  (       a  SO0 5      5        g ! , (       d  f       N]= f! , (       d  f       Nf= f)Nrn   Trå  rþ   ©rn   z>SELECT some_table.id 
FROM some_table 
WHERE some_table.x = 10r_   )rA   r,   r   rY   r-   r  rl   r   Úsql_execution_asserterr   rJ   rK   r@   ÚdictÚassert_r   r	  Ú
positional©rN   r   r¡   ÚasserterrP   s        r6   Útest_executeÚ"PostCompileParamsTest.test_executeõ  sÉ   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¸Ñ=Ñ=ó
ˆð ×(Ñ(Ô*¨hÜ—‘×"Ñ"Ô$¨Ø—‘˜T¤4¨"¡:Ô.÷ %÷ +ð 	×ÑÜð,ä—i‘i×'Ñ'×2×2‘¸óõ	
÷ %Õ$ú÷ +Õ*ús$   Á4DÂDÂ-DÄ
D	ÄDÄ
D#c           
      ój  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        SSSS95      5      nU R                  5        n[        R                  R                  5        nUR                  U[        / SQS95        S S S 5        S S S 5        WR                  [!        S[        R                  R"                  R$                  (       a  SO0 5      5        g ! , (       d  f       N]= f! , (       d  f       Nf= f)Nrn   T©Ú	expandingræ  )r‰   r¿   r‹   rð  zFSELECT some_table.id 
FROM some_table 
WHERE some_table.x IN (5, 6, 7)r_   )rA   r,   r   rY   r-   r  rl   r
   r   rñ  r   rJ   rK   r@   rò  ró  r   r	  rô  rõ  s        r6   Ú+test_execute_expanding_plus_literal_executeÚAPostCompileParamsTest.test_execute_expanding_plus_literal_execute  sÐ   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰I�M‰Mœ) C°4ÈÑNÓOó
ˆð ×(Ñ(Ô*¨hÜ—‘×"Ñ"Ô$¨Ø—‘˜T¤4ª)Ñ#4Ô5÷ %÷ +ð 	×ÑÜð4ä—i‘i×'Ñ'×2×2‘¸óõ	
÷ %Õ$ú÷ +Õ*ús$   ÂD$Â DÂ<D$Ä
D!	ÄD$Ä$
D2c           
      ó  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        SSSS95      5      nU R                  5        n[        R                  R                  5        nUR                  U[!        SS/S95        S S S 5        S S S 5        WR#                  [%        S[        R                  R&                  R(                  (       a  SOS	-  [        R                  R&                  R*                  (       a  S
O0 5      5        g ! , (       d  f       N‹= f! , (       d  f       N”= f)Nrn   Trú  )r‰   rþ   )é   é   rð  zbSELECT some_table.id 
FROM some_table 
WHERE (some_table.x, some_table.y) IN (%s(5, 10), (12, 18))úVALUES Ú r_   )rA   r,   r   rY   r-   r  r"   rl   rm   r
   r   rñ  r   rJ   rK   r@   rò  ró  r   r	  Útuple_in_valuesrô  rõ  s        r6   Ú1test_execute_tuple_expanding_plus_literal_executeÚGPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_execute  s
  € à—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ü�5—7‘7—9‘9˜eŸg™gŸi™iÓ(×,Ñ,Ü˜#¨¸tÑDóó
ˆð ×(Ñ(Ô*¨hÜ—‘×"Ñ"Ô$¨Ø—‘˜T¤4¨7°HÐ*=Ñ#>Ô?÷ %÷ +ð 	×ÑÜð+ô !'§	¡	× 1Ñ 1× A× A‘9ÀrñKô —i‘i×'Ñ'×2×2‘¸óõ	
÷ %Õ$ú÷ +Õ*úó$   ÂE0Â>EÃE0Å
E-	Å)E0Å0
E>c           
      ó  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        SSSS95      5      nU R                  5        n[        R                  R                  5        nUR                  U[!        SS/S95        S S S 5        S S S 5        WR#                  [%        S[        R                  R&                  R(                  (       a  SOS	-  [        R                  R&                  R*                  (       a  S
O0 5      5        g ! , (       d  f       N‹= f! , (       d  f       N”= f)Nrn   Trú  )r‰   rÞ  )rÿ  rà  rð  zfSELECT some_table.id 
FROM some_table 
WHERE (some_table.x, some_table.z) IN (%s(5, 'z1'), (12, 'z3'))r  r  r_   )rA   r,   r   rY   r-   r  r"   rl   rÙ  r
   r   rñ  r   rJ   rK   r@   rò  ró  r   r	  r  rô  rõ  s        r6   Ú?test_execute_tuple_expanding_plus_literal_heterogeneous_executeÚUPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_heterogeneous_execute3  s
  € à—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ü�5—7‘7—9‘9˜eŸg™gŸi™iÓ(×,Ñ,Ü˜#¨¸tÑDóó
ˆð ×(Ñ(Ô*¨hÜ—‘×"Ñ"Ô$¨Ø—‘˜T¤4¨9°jÐ*AÑ#BÔC÷ %÷ +ð 	×ÑÜð/ô !'§	¡	× 1Ñ 1× A× A‘9ÀrñKô —i‘i×'Ñ'×2×2‘¸óõ	
÷ %Õ$ú÷ +Õ*úr  r_   N)r`   ra   rb   rc   r^  r´   re   r7   rE   rê  rí  r÷  rü  r   rV   Útuple_inr  r  rg   r_   r9   r6   rÕ  rÕ  »  sˆ   † ð €Kà+€Làñ
ó ð
ð ñ	
ó ð	
ò
ò
ò
ò&
ð& ×Ñ×Ññ
ó ð
ð. ×Ñ×Ññ
ó ó
r9   rÕ  c                   ó  • \ rS rSrSr\S 5       r\S 5       rS%S jrS r	S r
\R                  R                  S	 5       r\R                  R                  S
 5       r\R                  R                  S 5       r\R                  R                  S 5       rS rS rS rS rS rS r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       r\R                  R0                  S 5       rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)Sr*g$)&ÚExpandingBoundInTestiL  Tc                 óœ   • [        SU[        S[        SS9[        S[        5      [        S[        5      [        S[        S5      5      5        g rØ  r2   r3   s     r6   r7   Ú"ExpandingBoundInTest.define_tablesO  rÛ  r9   c                 óœ   • UR                  U R                  R                  R                  5       SSSSS.SSSSS.SSSSS.SSS	S
S./5        g rÝ  r?   rC   s     r6   rE   Ú ExpandingBoundInTest.insert_dataZ  rã  r9   r_   c                 óÆ   • [         R                  R                  5        n[        UR	                  X5      R                  5       U5        S S S 5        g ! , (       d  f       g = frH   rI   rÊ   s        r6   rQ   Ú#ExpandingBoundInTest._assert_resultf  rŠ  rT   c                 óÈ  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ / / S.S9  g )Nrn   rp   )rn   rp   r  )rA   r,   r   rY   r-   r  rl   r
   r   rm   rX   rQ   ré  s      r6   Ú"test_multiple_empty_sets_bindparamÚ7ExpandingBoundInTest.test_multiple_empty_sets_bindparamj  s”   € ð —‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘=¤¨3£Ó0Ó1ß‰U�5—7‘7—9‘9—=‘=¤¨3£Ó0Ó1ß‰X�e—g‘g—j‘jÓ!ð	 	ð 	×Ñ˜D "°2¸BÑ-?ÐÒ@r9   c                 ó   • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ 5        g rH   )rA   r,   r   rY   r-   r  rl   r
   rm   rX   rQ   ré  s      r6   Útest_multiple_empty_sets_directÚ4ExpandingBoundInTest.test_multiple_empty_sets_directv  s‚   € ð —‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰X�e—g‘g—j‘jÓ!ð	 	ð 	×Ñ˜D "Õ%r9   c                 óŒ  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g ©Nrn   r  ©rA   r,   r   rY   r-   r  r"   rl   rÙ  r
   r   rX   rQ   ré  s      r6   Ú)test_empty_heterogeneous_tuples_bindparamÚ>ExpandingBoundInTest.test_empty_heterogeneous_tuples_bindparam‚  óƒ   € à—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U”6˜%Ÿ'™'Ÿ)™) U§W¡W§Y¡YÓ/×3Ñ3´I¸c³NÓCÓDß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜D "¨c°2¨YÐÒ7r9   c                 ó€   ^ ^• T R                   R                  mU U4S jnU" / / 5        U" / SQ/ SQ5        U" / / 5        g )Nc                 óL  >• [        TR                  R                  5      R                  [	        TR                  R
                  TR                  R                  5      R                  U 5      5      R                  TR                  R                  5      nTR                  X!5        g rH   )
r   rY   r-   r  r"   rl   rÙ  r
   rX   rQ   ©Úvalrö   r¡   rN   r   s      €€r6   ÚgoÚGExpandingBoundInTest.test_empty_heterogeneous_tuples_direct.<locals>.go�  óf   ø€ ä�u—w‘w—z‘zÓ"ß‘”v˜eŸg™gŸi™i¨¯©¯©Ó3×7Ñ7¸Ó<Ó=ß‘˜%Ÿ'™'Ÿ*™*Ó%ð ð
 ×Ñ Õ/r9   ©)r   rß  )r   rà  )rw   rá  ©r�   r‚   rœ  ©rA   r,   ©rN   r#  r   s   ` @r6   Ú&test_empty_heterogeneous_tuples_directÚ;ExpandingBoundInTest.test_empty_heterogeneous_tuples_directŒ  s7   ù€ à—‘×&Ñ&ˆö	0ñ 	ˆ2ˆrŒ
Ù
Ò,Ò.@ÔAÙ
ˆ2ˆr�
r9   c                 óŒ  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g r  ©rA   r,   r   rY   r-   r  r"   rl   rm   r
   r   rX   rQ   ré  s      r6   Ú'test_empty_homogeneous_tuples_bindparamÚ<ExpandingBoundInTest.test_empty_homogeneous_tuples_bindparamœ  r  r9   c                 ó€   ^ ^• T R                   R                  mU U4S jnU" / / 5        U" / SQ/ SQ5        U" / / 5        g )Nc                 óL  >• [        TR                  R                  5      R                  [	        TR                  R
                  TR                  R                  5      R                  U 5      5      R                  TR                  R                  5      nTR                  X!5        g rH   )
r   rY   r-   r  r"   rl   rm   r
   rX   rQ   r!  s      €€r6   r#  ÚEExpandingBoundInTest.test_empty_homogeneous_tuples_direct.<locals>.goª  r%  r9   ))r;   r   ©r   r   ©r   rw   r   r(  r)  s   ` @r6   Ú$test_empty_homogeneous_tuples_directÚ9ExpandingBoundInTest.test_empty_homogeneous_tuples_direct¦  s7   ù€ à—‘×&Ñ&ˆö	0ñ 	ˆ2ˆrŒ
Ù
Ò#Ò%7Ô8Ù
ˆ2ˆr�
r9   c                 óX  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ SQ0S9  g )Nrn   r'  ©r   r   rw   r  ©rA   r,   r   rY   r-   r  rl   r
   r   rX   rQ   ré  s      r6   Útest_bound_in_scalar_bindparamÚ3ExpandingBoundInTest.test_bound_in_scalar_bindparam¶  st   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘=¤¨3£Ó0Ó1ß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜DÒ"4¸cÂ9Ð=MÐÒNr9   c                 óD  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / SQ5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g )Nr8  r'  ©
rA   r,   r   rY   r-   r  rl   r
   rX   rQ   ré  s      r6   Útest_bound_in_scalar_directÚ0ExpandingBoundInTest.test_bound_in_scalar_direct¿  sf   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘=¢Ó+Ó,ß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜DÒ"4Õ5r9   c                 ó¨  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  SS/5      5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  USS/5        g )Nr   r   r�   r‚   ©rA   r,   r   rY   r-   r  rl   r
   Únot_inrX   rQ   ré  s      r6   Ú!test_nonempty_in_plus_empty_notinÚ6ExpandingBoundInTest.test_nonempty_in_plus_empty_notinÈ  sŠ   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘= ! Q Ó(Ó)ß‰U�5—7‘7—:‘:×$Ñ$ RÓ(Ó)ß‰X�e—g‘g—j‘jÓ!ð	 	ð 	×Ñ˜D 4¨ ,Õ/r9   c                 ó¤  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  R                  SS/5      5      R                  UR                  R                  5      nU R                  U/ 5        g )Nr   r   rA  ré  s      r6   Ú!test_empty_in_plus_notempty_notinÚ6ExpandingBoundInTest.test_empty_in_plus_notempty_notinÒ  s†   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰U�5—7‘7—:‘:×$Ñ$ a¨ VÓ,Ó-ß‰X�e—g‘g—j‘jÓ!ð	 	ð 	×Ñ˜D "Õ%r9   c                 ó€   • [        S5      R                  [        S[        SS95      nU R	                  U/ SQS/ SQ0S9  g)	zntest related to #7292.

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

ú3select id FROM some_table WHERE z IN :q ORDER BY idrn   T©Útype_rû  r'  ©rß  rà  rá  r  N)r    Ú
bindparamsr   r   rQ   ©rN   r¡   s     r6   Útest_typed_str_inÚ&ExpandingBoundInTest.test_typed_str_inÜ  sK   € ô ØAó
ç
‰*”Y˜s¬&¸DÑAÓ
Bð 	ð 	×ÑØÚØÒ+Ð,ð 	ò 	
r9   c                 óv   • [        S5      R                  [        SSS95      nU R                  U/ SQS/ SQ0S9  g)	z¢test 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....

rI  rn   T©rû  r'  rL  r  N©r    rM  r   rQ   rN  s     r6   Útest_untyped_str_inÚ(ExpandingBoundInTest.test_untyped_str_iní  sI   € ô ØAó
ç
‰*”Y˜s¨dÑ3Ó
4ð 	ð 	×ÑØÚØÒ+Ð,ð 	ò 	
r9   c                 ó”  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ SQ0S9  g )Nrn   r'  ©r3  r4  )rw   r‰   r  r-  ré  s      r6   Ú!test_bound_in_two_tuple_bindparamÚ6ExpandingBoundInTest.test_bound_in_two_tuple_bindparamÿ  s‹   € à—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U”6˜%Ÿ'™'Ÿ)™) U§W¡W§Y¡YÓ/×3Ñ3´I¸c³NÓCÓDß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×ÑØÒ$¨cÒ3KÐ-Lð 	ò 	
r9   c                 ó€  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  / SQ5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g )NrW  r'  )rA   r,   r   rY   r-   r  r"   rl   rm   r
   rX   rQ   ré  s      r6   Útest_bound_in_two_tuple_directÚ3ExpandingBoundInTest.test_bound_in_two_tuple_direct  sx   € à—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U”6˜%Ÿ'™'Ÿ)™) U§W¡W§Y¡YÓ/×3Ñ3Ò4LÓMÓNß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜DÒ"4Õ5r9   c                 ó”  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ SQ0S9  g )Nrn   r'  r&  r  r  ré  s      r6   Ú/test_bound_in_heterogeneous_two_tuple_bindparamÚDExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_bindparam  sŒ   € à—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U”6˜%Ÿ'™'Ÿ)™) U§W¡W§Y¡YÓ/×3Ñ3´I¸c³NÓCÓDß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×ÑØÚØÒ:Ð;ð 	ò 	
r9   c                 ó€  • U R                   R                  n[        UR                  R                  5      R                  [        UR                  R                  UR                  R                  5      R                  / SQ5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g )Nr&  r'  )rA   r,   r   rY   r-   r  r"   rl   rÙ  r
   rX   rQ   ré  s      r6   Ú,test_bound_in_heterogeneous_two_tuple_directÚAExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_direct#  s‚   € à—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰UÜ�u—w‘w—y‘y %§'¡'§)¡)Ó,×0Ñ0Ú5óó÷
 ‰X�e—g‘g—j‘jÓ!ð 	ð 	×ÑØÚõ	
r9   c                 óv   • [        S5      R                  [        SSS95      nU R                  U/ SQS/ SQ0S9  g )Nú8select id FROM some_table WHERE (x, z) IN :q ORDER BY idrn   TrR  r'  r&  r  rS  rN  s     r6   Ú4test_bound_in_heterogeneous_two_tuple_text_bindparamÚIExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam4  sI   € ô ØFó
ç
‰*”Y˜s¨dÑ3Ó
4ð 	ð 	×ÑØÚØÒ:Ð;ð 	ò 	
r9   c                 ó
  •  " S S[         R                  5      n[        S5      R                  [	        S[        [        5       [        5       5      SS95      nU R                  U/ SQSU" SS	5      U" S
S5      U" SS5      /0S9  g )Nc                   ó,   • \ rS rSrS rS rS rS rSrg)ÚhExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATupleiC  c                 ó   • Xl         g rH   ©Ú_data©rN   r0   s     r6   Ú__init__ÚqExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__init__D  ó   € Ø!•
r9   c                 ó,   • [        U R                  5      $ rH   ©Úiterrl  ©rN   s    r6   Ú__iter__ÚqExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__iter__G  ó   € Ü˜DŸJ™JÓ'Ð'r9   c                 ó    • U R                   U   $ rH   rk  ©rN   Úidxs     r6   Ú__getitem__ÚtExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__getitem__J  ó   € Ø—z‘z #‘Ð&r9   c                 ó,   • [        U R                  5      $ rH   ©rÂ   rl  rt  s    r6   Ú__len__ÚpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__len__M  ó   € Ü˜4Ÿ:™:“Ð&r9   rk  N©	r`   ra   rb   rc   rn  ru  r{  r€  rg   r_   r9   r6   Ú
LikeATupleri  C  ó   † ò"ò(ò'õ'r9   r„  rd  rn   TrJ  r'  r   rß  r   rà  rw   rá  r  )	Úcollections_abcÚSequencer    rM  r   r#   r   r   rQ   ©rN   r„  r¡   s      r6   Ú?test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tupleÚTExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tupleA  s�   € ô	'œ×1Ñ1ô 	'ô ØFó
ç
‰*ÜØœ9¤W£Y´³Ó9ÀTñó
ð 	ð 	×ÑØÚàÙ˜q $Ó'Ù˜q $Ó'Ù˜q $Ó'ððð 	ò 
	
r9   c                 óÔ   •  " S S[         R                  5      n[        S5      R                  [	        SSS95      nU R                  U/ SQSU" SS	5      U" S
S5      U" SS5      /0S9  g )Nc                   ó,   • \ rS rSrS rS rS rS rSrg)ÚgExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATupleih  c                 ó   • Xl         g rH   rk  rm  s     r6   rn  ÚpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__init__i  rp  r9   c                 ó,   • [        U R                  5      $ rH   rr  rt  s    r6   ru  ÚpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__iter__l  rw  r9   c                 ó    • U R                   U   $ rH   rk  ry  s     r6   r{  ÚsExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__getitem__o  r}  r9   c                 ó,   • [        U R                  5      $ rH   r  rt  s    r6   r€  ÚoExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__len__r  r‚  r9   rk  Nrƒ  r_   r9   r6   r„  r�  h  r…  r9   r„  rd  rn   TrR  r'  r   rß  r   rà  rw   rá  r  )r†  r‡  r    rM  r   rQ   rˆ  s      r6   Ú>test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tupleÚSExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplec  s}   € ô
	'œ×1Ñ1ô 	'ô ØFó
ç
‰*”Y˜s¨dÑ3Ó
4ð 	ð 	×ÑØÚàÙ˜q $Ó'Ù˜q $Ó'Ù˜q $Ó'ððð 	ò 
	
r9   c                 óP  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g r  r9  ré  s      r6   Ú(test_empty_set_against_integer_bindparamÚ=ExpandingBoundInTest.test_empty_set_against_integer_bindparam„  ór   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘=¤¨3£Ó0Ó1ß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜D "¨c°2¨YÐÒ7r9   c                 ó<  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ 5        g rH   r=  ré  s      r6   Ú%test_empty_set_against_integer_directÚ:ExpandingBoundInTest.test_empty_set_against_integer_direct�  ób   € Ø—‘×&Ñ&ˆÜ�e—g‘g—j‘jÓ!×'Ñ'¨¯©¯	©	¯©°bÓ(9Ó:×CÑCÀEÇGÁGÇJÁJÓOˆØ×Ñ˜D "Õ%r9   c                 óT  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ 0S9  g ©Nrn   ©r€   r�   r‚   rœ  r  )rA   r,   r   rY   r-   r  rl   rB  r   rX   rQ   ré  s      r6   Ú1test_empty_set_against_integer_negation_bindparamÚFExpandingBoundInTest.test_empty_set_against_integer_negation_bindparam’  óu   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9×#Ñ#¤I¨c£NÓ3Ó4ß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜DÒ":ÀCÈÀ9ÐÒMr9   c                 ó@  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g ©Nr¢  )
rA   r,   r   rY   r-   r  rl   rB  rX   rQ   ré  s      r6   Ú.test_empty_set_against_integer_negation_directÚCExpandingBoundInTest.test_empty_set_against_integer_negation_direct›  ój   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Ó×$Ñ$ U§W¡W§Y¡Y×%5Ñ%5°bÓ%9Ó:×CÑCÀEÇGÁGÇJÁJÓOð 	ð 	×Ñ˜DÒ":Õ;r9   c                 óP  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ S/ 0S9  g r  )rA   r,   r   rY   r-   r  rÙ  r
   r   rX   rQ   ré  s      r6   Ú'test_empty_set_against_string_bindparamÚ<ExpandingBoundInTest.test_empty_set_against_string_bindparam¢  r›  r9   c                 ó<  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ 5        g rH   )
rA   r,   r   rY   r-   r  rÙ  r
   rX   rQ   ré  s      r6   Ú$test_empty_set_against_string_directÚ9ExpandingBoundInTest.test_empty_set_against_string_direct«  rŸ  r9   c                 óT  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  [        S5      5      5      R                  UR                  R                  5      nU R                  U/ SQS/ 0S9  g r¡  )rA   r,   r   rY   r-   r  rÙ  rB  r   rX   rQ   ré  s      r6   Ú0test_empty_set_against_string_negation_bindparamÚEExpandingBoundInTest.test_empty_set_against_string_negation_bindparam°  r¥  r9   c                 ó@  • U R                   R                  n[        UR                  R                  5      R                  UR                  R                  R                  / 5      5      R                  UR                  R                  5      nU R                  U/ SQ5        g r§  )
rA   r,   r   rY   r-   r  rÙ  rB  rX   rQ   ré  s      r6   Ú-test_empty_set_against_string_negation_directÚBExpandingBoundInTest.test_empty_set_against_string_negation_direct¹  rª  r9   c                 óä   • [        [        [        5       R                  [	        SSS95      [        5       4[        5       S95      n[        UR                  U5      R                  5       S   S5        g )NÚfoor_   )Úvalue©Úelse_r   ©Fr   )	r   r   r   r
   r   r!   r   r@   Úfetchone©rN   rD   r¡   s      r6   Ú)test_null_in_empty_set_is_false_bindparamÚ>ExpandingBoundInTest.test_null_in_empty_set_is_false_bindparamÀ  s_   € ÜÜä“F—J‘Jœy¨°bÑ9Ó:Ü“Fðô “gñó
ˆô 	ˆJ×Ñ˜tÓ$×-Ñ-Ó/°Ñ2°JÕ?r9   c                 óÔ   • [        [        [        5       R                  / 5      [	        5       4[        5       S95      n[        UR                  U5      R                  5       S   S5        g )Nrº  r   r¼  )r   r   r   r
   r!   r   r@   r½  r¾  s      r6   Ú&test_null_in_empty_set_is_false_directÚ;ExpandingBoundInTest.test_null_in_empty_set_is_false_directÌ  sW   € ÜÜä“F—J‘J˜r“NÜ“Fðô “gñó
ˆô 	ˆJ×Ñ˜tÓ$×-Ñ-Ó/°Ñ2°JÕ?r9   Nr]  )+r`   ra   rb   rc   r^  re   r7   rE   rQ   r  r  r   rV   Útuple_in_w_emptyr  r*  r.  r5  r:  r>  rC  rF  rO  rT  r
  rX  r[  r^  ra  re  r‰  r–  r™  r�  r£  r¨  r¬  r¯  r²  rµ  r¿  rÂ  rg   r_   r9   r6   r  r  L  sõ  † Ø€Kàñ
ó ð
ð ñ	
ó ð	
ôAò
Aò
&ð ×Ñ×&Ñ&ñ8ó 'ð8ð ×Ñ×&Ñ&ñó 'ðð ×Ñ×&Ñ&ñ8ó 'ð8ð ×Ñ×&Ñ&ñó 'ðòOò6ò0ò&ò
ò"
ð$ ×Ñ×Ññ	
ó ð	
ð ×Ñ×Ññ6ó ð6ð ×Ñ×Ññ
ó ð
ð ×Ñ×Ññ
ó ð
ð  ×Ñ×Ññ

ó ð

ð ×Ñ×Ññ
ó ð
ðB ×Ñ×Ññ
ó ð
ò@8ò&ò
Nò<ò8ò&ò
Nò<ò
@õ
@r9   r  c                   ó¢  • \ rS rSrSrSrSr\S 5       r\S 5       r	S r
S r\R                  R                  S	 5       rS
 r\R                  R                  S 5       r\R                  R                  S 5       rS rS r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  S 5       rS r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R8                  S 5       r\R                  R<                  S 5       r\R                  R8                  \R@                  " S1 Sk4S1 Sk4S1 Sk4SS14S\!" \"" S S!5      5      4S"\!" \"" S S!5      5      4S#\!" 5       45      S$ 5       5       r#S%r$g)&ÚLikeFunctionsTestiÙ  TÚonceNc                 ó`   • [        SU[        S[        SS9[        S[        S5      5      5        g )Nr,   r-   Tr.   r0   ro   r2   r3   s     r6   r7   ÚLikeFunctionsTest.define_tablesß  s*   € äØØÜ�4œ¨dÑ3Ü�6œ6 "›:Ó&õ		
r9   c                 óÄ   • UR                  U R                  R                  R                  5       SSS.SSS.SSS.SS	S.S
SS.SSS.SSS.SSS.SSS.SSS.SS S./5        g )Nr;   Úabcdefgr=   r   zab/cdefgr   zab%cdefgrw   Úab_cdefgr‰   zabcde/fgr¿   zabcde%fgr‹   zab#cdefgé   Úab9cdefgé	   zabcde#fgrþ   Úabcd9fgé   r?   rC   s     r6   rE   ÚLikeFunctionsTest.insert_dataè  sƒ   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à )Ñ,Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø 9Ñ-Ø 4Ñ(ðõ	
r9   c                 ó^  • U R                   R                  n[        R                  R	                  5        nUR                  [        UR                  R                  5      R                  U5      5       Vs1 sH  u  nUiM	     nnS S S 5        [        WU5        g s  snf ! , (       d  f       N = frH   )rA   r,   r   rJ   rK   r@   r   rY   r-   r  r	   )rN   r    rö   r,   rP   r¹  Úrowss          r6   Ú_testÚLikeFunctionsTest._testû  s‡   € Ø—[‘[×+Ñ+ˆ
ä�Y‰Y×ÑÔ  Dð #Ÿl™l¬6°*·,±,·/±/Ó+B×+HÑ+HÈÓ+NÔOóáO‘F�Eó ÙOð ð ÷ !ô 	ˆD�(Õùò÷ !Õ ús   µA BÁ5BÂBÂBÂ
B,c                 óž   • U R                   R                  R                  R                  nU R	                  UR                  S5      1 Sk5        g )Núab%c¾
   r;   r   r   rw   r‰   r¿   r‹   rÍ  rÏ  rþ   ©rA   r,   rY   r0   rÕ  Ú
startswith©rN   Úcols     r6   Útest_startswith_unescapedÚ+LikeFunctionsTest.test_startswith_unescaped  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &Ó)Ò+JÕKr9   c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )NrØ  T©Ú
autoescaper   rÚ  rÜ  s     r6   Útest_startswith_autoescapeÚ,LikeFunctionsTest.test_startswith_autoescape
  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &°T�>Ð:¸Q¸CÕ@r9   c                 ó°   • U R                   R                  R                  R                  nU R	                  UR                  [        S5      5      1 Sk5        g )Nz'ab%c'rÙ  )rA   r,   rY   r0   rÕ  rÛ  r   rÜ  s     r6   Útest_startswith_sqlexprÚ)LikeFunctionsTest.test_startswith_sqlexpr  s=   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø�N‰Nœ>¨(Ó3Ó4Ú+õ	
r9   c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nzab##cÚ#©Úescaper‹   rÚ  rÜ  s     r6   Útest_startswith_escapeÚ(LikeFunctionsTest.test_startswith_escape  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> '°#�>Ð6¸¸Õ<r9   c                 óà   • U R                   R                  R                  R                  nU R	                  UR                  SSSS9S15        U R	                  UR                  SSSS9S15        g )NrØ  Tré  ©râ  rë  r   zab#cr‹   rÚ  rÜ  s     r6   Ú!test_startswith_autoescape_escapeÚ3LikeFunctionsTest.test_startswith_autoescape_escape  s[   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &°TÀ#�>ÐFÈÈÔLØ�
‰
�3—>‘> &°TÀ#�>ÐFÈÈÕLr9   c                 óž   • U R                   R                  R                  R                  nU R	                  UR                  S5      1 Sk5        g )Núe%fg¾	   r;   r   r   rw   r‰   r¿   r‹   rÍ  rÏ  ©rA   r,   rY   r0   rÕ  ÚendswithrÜ  s     r6   Útest_endswith_unescapedÚ)LikeFunctionsTest.test_endswith_unescaped!  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< Ó'Ò)DÕEr9   c                 ó°   • U R                   R                  R                  R                  nU R	                  UR                  [        S5      5      1 Sk5        g )Nz'e%fg'rô  )rA   r,   rY   r0   rÕ  rö  r   rÜ  s     r6   Útest_endswith_sqlexprÚ'LikeFunctionsTest.test_endswith_sqlexpr%  s=   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø�L‰Lœ¨Ó1Ó2Ò4Oõ	
r9   c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nró  Trá  r¿   rõ  rÜ  s     r6   Útest_endswith_autoescapeÚ*LikeFunctionsTest.test_endswith_autoescape+  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °4�<Ð8¸1¸#Õ>r9   c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nze##fgré  rê  rÏ  rõ  rÜ  s     r6   Útest_endswith_escapeÚ&LikeFunctionsTest.test_endswith_escape0  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °�<Ð4°q°cÕ:r9   c                 óà   • U R                   R                  R                  R                  nU R	                  UR                  SSSS9S15        U R	                  UR                  SSSS9S15        g )Nró  Tré  rï  r¿   ze#fgrÏ  rõ  rÜ  s     r6   Útest_endswith_autoescape_escapeÚ1LikeFunctionsTest.test_endswith_autoescape_escape5  ó[   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °4À�<ÐDÀqÀcÔJØ�
‰
�3—<‘< °4À�<ÐDÀqÀcÕJr9   c                 óž   • U R                   R                  R                  R                  nU R	                  UR                  S5      1 Sk5        g )Núb%cderô  ©rA   r,   rY   r0   rÕ  ÚcontainsrÜ  s     r6   Útest_contains_unescapedÚ)LikeFunctionsTest.test_contains_unescaped;  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< Ó(Ò*EÕFr9   c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nr  Trá  r   r  rÜ  s     r6   Útest_contains_autoescapeÚ*LikeFunctionsTest.test_contains_autoescape?  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °D�<Ð9¸A¸3Õ?r9   c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  SSS9S15        g )Nzb##cderé  rê  r‹   r  rÜ  s     r6   Útest_contains_escapeÚ&LikeFunctionsTest.test_contains_escapeD  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °�<Ð5¸°sÕ;r9   c                 óà   • U R                   R                  R                  R                  nU R	                  UR                  SSSS9S15        U R	                  UR                  SSSS9S15        g )Nzb%cdTré  rï  r   zb#cdr‹   r  rÜ  s     r6   Útest_contains_autoescape_escapeÚ1LikeFunctionsTest.test_contains_autoescape_escapeI  r  r9   c                 ó    • U R                   R                  R                  R                  nU R	                  UR                  S5      ) 1 Sk5        g )Núa.cde>   r   r   rw   r‹   rÍ  rþ   ©rA   r,   rY   r0   rÕ  Úregexp_matchrÜ  s     r6   Útest_not_regexp_matchÚ'LikeFunctionsTest.test_not_regexp_matchO  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�C×$Ñ$ WÓ-Ð-Ò/BÕCr9   c                 ó¾   • U R                   R                  R                  R                  nU R	                  UR                  SS5      R                  S5      1 Sk5        g )Nr  ÚFOO¾   r;   r‰   r¿   rÏ  )rA   r,   rY   r0   rÕ  Úregexp_replacer	  rÜ  s     r6   Útest_regexp_replaceÚ%LikeFunctionsTest.test_regexp_replaceT  sF   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø×Ñ˜w¨Ó.×7Ñ7¸Ó>Âõ	
r9   r  r  Úabc>   r;   r‰   r¿   rÏ  rþ   z^abcÚ9cderÍ  z^ar;   rÑ  z(b|c)z^(b|c)c                 óš   • U R                   R                  R                  R                  nU R	                  UR                  U5      U5        g rH   r  )rN   r    rö   rÝ  s       r6   Útest_regexp_matchÚ#LikeFunctionsTest.test_regexp_match[  s8   € ð �k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3×#Ñ# DÓ)¨8Õ4r9   r_   )%r`   ra   rb   rc   rd   Úrun_insertsÚrun_deletesre   r7   rE   rÕ  rÞ  r   rV   Úlike_escapesrã  ræ  rì  rð  r÷  rú  rý  r   r  r
  r  r  r  r  r  r  r  r`  rÃ   Úranger$  rg   r_   r9   r6   rÆ  rÆ  Ù  sK  † Ø $Ðà€KØ€Kàñ
ó ð
ð ñ
ó ð
ò$	òLð ×Ñ×"Ñ"ñAó #ðAò
ð ×Ñ×"Ñ"ñ=ó #ð=ð ×Ñ×"Ñ"ñMó #ðMò
Fò
ð ×Ñ×"Ñ"ñ?ó #ð?ð ×Ñ×"Ñ"ñ;ó #ð;ð ×Ñ×"Ñ"ñKó #ðKò
Gð ×Ñ×"Ñ"ñ@ó #ð@ð ×Ñ×"Ñ"ñ<ó #ð<ð ×Ñ×"Ñ"ñKó #ðKð
 ×Ñ×"Ñ"ñDó #ðDð ×Ñ×$Ñ$ñ
ó %ð
ð ×Ñ×"Ñ"Ø×ÒØ	’,ÐØ	Ò Ð!Ø	Ò!Ð"Ø	�!�ˆØ	‰s‘5˜˜B“<Ó Ð!Ø	‘#‘e˜A˜r“lÓ#Ð$Ø	‘3“5Ðóñ5óó #ó5r9   rÆ  c                   óH   • \ rS rSrSrSr\S 5       r\S 5       rS r	S r
Srg	)
ÚComputedColumnTestij  T)Úcomputed_columnsc                 óº   • [        SU[        S[        SS9[        S[        5      [        S[        [        S5      5      [        S[        [        S	5      5      5        g )
NÚsquarer-   Tr.   ÚsideÚareazside * sideÚ	perimeterz4 * side)r   r   r   r   r3   s     r6   r7   Ú ComputedColumnTest.define_tablesn  sH   € äØØÜ�4œ¨dÑ3Ü�6œ7Ó#Ü�6œ7¤H¨]Ó$;Ó<Ü�;¤¬°*Ó)=Ó>õ	
r9   c                 ó|   • UR                  U R                  R                  R                  5       SSS.SSS./5        g )Nr;   rþ   )r-   r/  é*   )r@   rA   r.  rB   rC   s     r6   rE   ÚComputedColumnTest.insert_datay  s8   € à×ÑØ�J‰J×Ñ×$Ñ$Ó&Ø˜rÑ"¨2°rÑ$:Ð;õ	
r9   c                 ó¦  • [         R                  R                  5        nUR                  [	        [        S5      5      R                  U R                  R                  5      R                  U R                  R                  R                  R                  5      5      R                  5       n[        USS/5        S S S 5        g ! , (       d  f       g = f)NÚ*)r;   rþ   r1   rS  )rþ   r4  éä  é¨   )r   rJ   rK   r@   r   r    r•  rA   r.  rX   rY   r-   rL   r	   ©rN   rP   Úress      r6   Útest_select_allÚ"ComputedColumnTest.test_select_all€  s�   € Ü�Y‰Y×ÑÔ  DØ—,‘,Ü”t˜C“yÓ!ß‘˜TŸ[™[×/Ñ/Ó0ß‘˜$Ÿ+™+×,Ñ,×.Ñ.×1Ñ1Ó2ó÷ ‰h‹jð	 ô
 �Ð&Ð(;Ð<Ô=÷ !× Ö ús   ŸBCÃ
Cc                 ó6  • [         R                  R                  5        nUR                  [	        U R
                  R                  R                  R                  U R
                  R                  R                  R                  5      R                  U R
                  R                  5      R                  U R
                  R                  R                  R                  5      5      R                  5       n[        USS/5        S S S 5        g ! , (       d  f       g = f)N)r1   rS  )r8  r9  )r   rJ   rK   r@   r   rA   r.  rY   r0  r1  r•  rX   r-   rL   r	   r:  s      r6   Útest_select_columnsÚ&ComputedColumnTest.test_select_columns‰  sº   € Ü�Y‰Y×ÑÔ  DØ—,‘,ÜØ—K‘K×&Ñ&×(Ñ(×-Ñ-¨t¯{©{×/AÑ/A×/CÑ/C×/MÑ/Mó÷ ‘˜TŸ[™[×/Ñ/Ó0ß‘˜$Ÿ+™+×,Ñ,×.Ñ.×1Ñ1Ó2ó÷ ‰h‹jð ô ��i Ð-Ô.÷ !× Ö ús   ŸC"D
Ä

Dr_   N)r`   ra   rb   rc   rd   r´   re   r7   rE   r<  r?  rg   r_   r9   r6   r+  r+  j  s=   † Ø $ÐØ(€Làñ
ó ð
ð ñ
ó ð
ò>õ	/r9   r+  c                   óˆ   • \ rS rSrSrSrSrSr\S 5       r	\S 5       r
S rS r\R                  R                  S	 5       rS
rg)ÚIdentityColumnTesti•  T)Úidentity_columnsrÇ  c                 óè   • [        SU[        S[        [        SSSSS9SS9[        S[	        S5      5      5        [        S	U[        S[        [        S
SSSS9SS9[        S[	        S5      5      5        g )NÚtbl_ar-   Tr4  )ÚalwaysÚstartÚ
nominvalueÚ
nomaxvaluer.   r”   r1   Útbl_béûÿÿÿr   iüÿÿ)Ú	incrementrG  ÚminvalueÚmaxvalue©r   r   r   r   r   r3   s     r6   r7   Ú IdentityColumnTest.define_tables›  sƒ   € äØØÜØÜÜØ r°dÀtñð !ñô �6œ6 #›;Ó'ô	
ô 	ØØÜØÜÜ 2¨Q¸ÈÑKØ ñ	ô �6œ6 #›;Ó'õ
	
r9   c                 ó\  • UR                  U R                  R                  R                  5       SS0SS0/5        UR                  U R                  R                  R                  5       SS0SS0/5        UR                  U R                  R                  R                  5       SSS./5        g )Nr”   rŒ  r�  r4  rY   ©r-   r”   )r@   rA   rE  rB   rJ  rC   s     r6   rE   ÚIdentityColumnTest.insert_data¶  s�   € à×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø�cˆ]˜V S˜MÐ*ô	
ð 	×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø�cˆ]˜V S˜MÐ*ô	
ð 	×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø Ñ$Ð%õ	
r9   c                 óh  • UR                  [        [        S5      5      R                  U R                  R
                  5      R                  U R                  R
                  R                  R                  5      5      R                  5       n[        USS/5        UR                  [        [        S5      5      R                  U R                  R                  5      R                  U R                  R                  R                  R                  5      5      R                  5       n[        U/ SQ5        g )Nr7  )r4  rŒ  )é+   r�  ))rK  r�  )r   rŒ  )r4  rY   )r@   r   r    r•  rA   rE  rX   rY   r-   rL   r	   rJ  ©rN   rD   r;  s      r6   r<  Ú"IdentityColumnTest.test_select_allÅ  sØ   € Ø× Ñ Ü”4˜“9Óß‰[˜Ÿ™×*Ñ*Ó+ß‰X�d—k‘k×'Ñ'×)Ñ)×,Ñ,Ó-ó
÷ ‰(‹*ð	 	ô
 	ˆC�)˜YÐ'Ô(à× Ñ Ü”4˜“9Óß‰[˜Ÿ™×*Ñ*Ó+ß‰X�d—k‘k×'Ñ'×)Ñ)×,Ñ,Ó-ó
÷ ‰(‹*ð	 	ô
 	ˆCÒ1Õ2r9   c                 ó.  • UR                  [        U R                  R                  R                  R
                  5      R                  U R                  R                  R                  R
                  5      5      R                  5       n[        USS/5        g )N)r4  )rU  )	r@   r   rA   rE  rY   r-   rX   rL   r	   rV  s      r6   r?  Ú&IdentityColumnTest.test_select_columnsÔ  sk   € Ø× Ñ Ü�4—;‘;×$Ñ$×&Ñ&×)Ñ)Ó*×3Ñ3°D·K±K×4EÑ4E×4GÑ4G×4JÑ4JÓKó
ç
‰(‹*ð 	ô 	ˆC�%˜�Õ r9   c                 óB   ^ ^• UU 4S jn[        [        [        4U5        g )Nc                  óv   >• T R                  TR                  R                  R                  5       SSS./5        g )NéÈ   rŒ  rR  )r@   rA   rE  rB   )rD   rN   s   €€r6   ÚfnÚ7IdentityColumnTest.test_insert_always_error.<locals>.fnÜ  s2   ø€ Ø×ÑØ—‘×!Ñ!×(Ñ(Ó*Ø SÑ)Ð*õr9   )r   r&   r'   )rN   rD   r]  s   `` r6   Útest_insert_always_errorÚ+IdentityColumnTest.test_insert_always_errorÚ  s   ù€ ö	ô 	”}Ô&6Ð7¸Õ<r9   r_   N)r`   ra   rb   rc   r^  r´   r&  r'  re   r7   rE   r<  r?  r   rV   Úidentity_columns_standardr_  rg   r_   r9   r6   rB  rB  •  sf   † Ø€KØ(€LØ€KØ€Kàñ
ó ð
ð4 ñ
ó ð
ò3ò!ð ×Ñ×/Ñ/ñ=ó 0ó=r9   rB  c                   ó2   • \ rS rSrSrSr\S 5       rS rSr	g)ÚIdentityAutoincrementTestiå  T)Úautoincrement_without_sequencec                 ót   • [        SU[        S[        [        5       SSS9[        S[	        S5      5      5        g )NÚtblr-   T)r/   Úautoincrementr”   r1   rO  r3   s     r6   r7   Ú'IdentityAutoincrementTest.define_tablesé  s9   € äØØÜØÜÜ“
Ø Ø"ñô �6œ6 #›;Ó'õ	
r9   c                 ó
  • UR                  U R                  R                  R                  5       SS05        UR                  U R                  R                  R	                  5       5      R                  5       n[        US5        g )Nr”   Úrow)r;   rj  )r@   rA   rf  rB   r   ry  r	   rV  s      r6   Ú test_autoincrement_with_identityÚ:IdentityAutoincrementTest.test_autoincrement_with_identityø  s[   € Ø×Ñ˜4Ÿ;™;Ÿ?™?×1Ñ1Ó3°f¸e°_ÔEØ× Ñ  §¡§¡×!7Ñ!7Ó!9Ó:×@Ñ@ÓBˆÜˆC�Õr9   r_   N)
r`   ra   rb   rc   r^  r´   re   r7   rk  rg   r_   r9   r6   rc  rc  å  s#   † Ø€KØ6€Làñ
ó ð
õr9   rc  c                   óD   • \ rS rSrSr\S 5       r\S 5       rS rS r	Sr
g)	Ú
ExistsTestiþ  Tc                 ó`   • [        SU[        S[        SS9[        S[        S5      5      5        g )NÚstuffr-   Tr.   r0   ro   r2   r3   s     r6   r7   ÚExistsTest.define_tables  s*   € äØØÜ�4œ¨dÑ3Ü�6œ6 "›:Ó&õ		
r9   c           	      óŒ   • UR                  U R                  R                  R                  5       SSS.SSS.SSS.SSS./5        g )Nr;   ú	some datar=   r   r   rw   zsome other data)r@   rA   rp  rB   rC   s     r6   rE   ÚExistsTest.insert_data
  sL   € à×ÑØ�J‰J×Ñ×#Ñ#Ó%à +Ñ.Ø +Ñ.Ø +Ñ.ØÐ"3Ñ4ð	õ	
r9   c           
      ó"  • U R                   R                  n[        UR                  [	        [        S5      5      R                  [        5       R                  UR                  R                  S:H  5      5      5      R                  5       S/5        g )Nr;   rs  r€   ©rA   rp  r	   r@   r   r   r  r   rY   r0   rL   ©rN   rD   rp  s      r6   Útest_select_existsÚExistsTest.test_select_exists  sg   € Ø—‘×!Ñ!ˆÜØ×ÑÜ”w˜q“zÓ"×(Ñ(Ü“H—N‘N 5§7¡7§<¡<°;Ñ#>Ó?óó÷ ‰h‹jØˆFõ	
r9   c           
      ó   • U R                   R                  n[        UR                  [	        [        S5      5      R                  [        5       R                  UR                  R                  S:H  5      5      5      R                  5       / 5        g )Nr;   zno datarv  rw  s      r6   Útest_select_exists_falseÚ#ExistsTest.test_select_exists_false!  se   € Ø—‘×!Ñ!ˆÜØ×ÑÜ”w˜q“zÓ"×(Ñ(Ü“H—N‘N 5§7¡7§<¡<°9Ñ#<Ó=óó÷ ‰h‹jØõ	
r9   r_   N)r`   ra   rb   rc   rd   re   r7   rE   rx  r{  rg   r_   r9   r6   rn  rn  þ  s8   † Ø $Ðàñ
ó ð
ð ñ	
ó ð	
ò	
õ	
r9   rn  c                   óp   • \ rS rSrSr\R                  " \R                  R                  5      S 5       r	Sr
g)ÚDistinctOnTesti-  Tc                 óþ   • [        S5      R                  [        S5      5      R                  [	        S5      5      n[
        R                  " S5         U R                  US5        S S S 5        g ! , (       d  f       g = f)Nr7  rn   r¸  z:DISTINCT ON is currently supported only by the PostgreSQL zSELECT DISTINCT * FROM foo)r   rÈ  r   r•  r   r   Úexpect_deprecatedrè  )rN   Ústms     r6   Útest_distinct_onÚDistinctOnTest.test_distinct_on0  s]   € ä�S‹k×"Ñ"¤6¨#£;Ó/×;Ñ;¼EÀ%»LÓIˆÜ×&Ò&ØHõ
ð ×Ñ Ð%AÔB÷
÷ 
ö 
ús   ÁA.Á.
A<r_   N)r`   ra   rb   rc   rd   r   Úfails_ifrV   Úsupports_distinct_onr‚  rg   r_   r9   r6   r~  r~  -  s3   † Ø $Ðà×Ò�g×&Ñ&×;Ñ;Ó<ñCó =óCr9   r~  c            
       ód   • \ rS rSrSrSr\S 5       r\R                  " SSSSS	S
SS9S 5       r
Srg)ÚIsOrIsNotDistinctFromTesti9  T)Úsupports_is_distinct_fromc                 óp   • [        SU[        S[        SS9[        S[        SS9[        S[        SS95        g )NÚis_distinct_testr-   Tr.   Úcol_arn  Úcol_brº   r3   s     r6   r7   Ú'IsOrIsNotDistinctFromTest.define_tables=  s4   € äØØÜ�4œ¨dÑ3Ü�7œG¨dÑ3Ü�7œG¨dÑ3õ	
r9   )Úboth_int_differentr   r;   r;   )Úboth_int_samer;   r;   r   )Úone_null_firstNr;   r;   )Úone_null_secondr   Nr;   )Ú	both_nullNNr   Úiaaaz3col_a_value, col_b_value, expected_row_count_for_is)Úid_rð   c                 ó¬  • U R                   R                  nUR                  UR                  5       SXS./5        UR                  UR	                  5       R                  UR                  R                  R                  UR                  R                  5      5      5      R                  5       n[        [        U5      U5        US:X  a  SOSnUR                  UR	                  5       R                  UR                  R                  R                  UR                  R                  5      5      5      R                  5       n[        [        U5      U5        g )Nr;   )r-   r‹  rŒ  r   )rA   rŠ  r@   rB   r   r  rY   r‹  Úis_distinct_fromrŒ  rL   r	   rÂ   Úis_not_distinct_from)rN   Úcol_a_valueÚcol_b_valueÚexpected_row_count_for_isrD   rf  rO   Úexpected_row_count_for_is_nots           r6   Útest_is_or_is_not_distinct_fromÚ9IsOrIsNotDistinctFromTest.test_is_or_is_not_distinct_fromG  s  € ð �k‰k×*Ñ*ˆà×ÑØ�J‰J‹LØ ÑBÐCô	
ð
 ×#Ñ#Ø�J‰J‹L×Ñ˜sŸu™uŸ{™{×;Ñ;¸C¿E¹E¿K¹KÓHÓIó
ç
‰(‹*ð 	ô 	Ü�‹KØ%ô	
ð +¨aÓ/‰A°Qð 	&ð ×#Ñ#Ø�J‰J‹L×Ñ˜sŸu™uŸ{™{×?Ñ?ÀÇÁÇÁÓLÓMó
ç
‰(‹*ð 	ô 	Ü�‹KØ)õ	
r9   r_   N)r`   ra   rb   rc   rd   r´   re   r7   r   r`  rœ  rg   r_   r9   r6   r‡  r‡  9  sS   † Ø $ÐØ1€Làñ
ó ð
ð ×ÒØ'Ø"Ø&Ø'Ø$ØØFññ
óó
r9   r‡  c                   óH   • \ rS rSrSrSr\S 5       r\S 5       rS r	S r
Srg	)
ÚWindowFunctionTestin  )Úwindow_functionsTc           
      ót   • [        SU[        S[        SS9[        S[        5      [        S[        5      5        g )Nr,   r-   Tr.   Úcol1Úcol2rº   r3   s     r6   r7   Ú WindowFunctionTest.define_tabless  s0   € äØØÜ�4œ¨dÑ3Ü�6œ7Ó#Ü�6œ7Ó#õ	
r9   c           
      ó´   • UR                  U R                  R                  R                  5       [	        SS5       Vs/ sH
  o"X"S-  S.PM     sn5        g s  snf )Nr;   ro   r‰   )r-   r¢  r£  )r@   rA   r,   rB   r)  )r4   rD   Úis      r6   rE   ÚWindowFunctionTest.insert_data}  sH   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*Ü:?ÀÀ2¼,ÓG¹,°Q˜q¨a©%Ô0¹,ÑGõ	
ùâGs   ½A
c                 óÐ  • U R                   R                  nUR                  [        [        R
                  " UR                  R                  5      R                  UR                  R                  R                  5       /S95      R                  UR                  R                  S:  5      5      R                  5       n[        U[        S5       Vs/ sH  nSPM     sn5        g s  snf )N)rX   rM  é   )é_   )rA   r,   r@   r   r   ÚmaxrY   r£  Úoverr¢  r”   r  r°   r	   r)  ©rN   rD   r,   rÔ  r¦  s        r6   Útest_windowÚWindowFunctionTest.test_window„  s±   € Ø—[‘[×+Ñ+ˆ
Ø×!Ñ!ÜÜ—’˜Ÿ™×*Ñ*Ó+×0Ñ0Ø(Ÿl™l×/Ñ/×4Ñ4Ó6Ð7ð 1ð ó÷ ‰e�J—L‘L×%Ñ%¨Ñ*Ó+ó
÷ ‰#‹%ð 	ô 	ˆD¤%¨¤)Ó,¡)˜Q“5¡)Ñ,Õ-ùÒ,s   ÃC#
c           	      ón  • U R                   R                  nUR                  [        [        R
                  " UR                  R                  5      R                  UR                  R                  /SS95      5      R                  5       n[        U[        SSS5       Vs/ sH  oD4PM     sn5        g s  snf )N)rK  r   )rX   rÔ  r‰   éú   )rA   r,   r@   r   r   r«  rY   r£  r¬  r¢  r°   r	   r)  r­  s        r6   Útest_window_rows_betweenÚ+WindowFunctionTest.test_window_rows_between�  s™   € Ø—[‘[×+Ñ+ˆ
ð ×!Ñ!ÜÜ—’˜Ÿ™×*Ñ*Ó+×0Ñ0Ø(Ÿl™l×/Ñ/Ð0Ø ð 1ð óó
÷ ‰#‹%ð 	ô 	ˆD¤ q¨#¨qÔ!1Ó2Ñ!1˜A“4Ñ!1Ñ2Õ3ùÒ2s   ÂB2
r_   N)r`   ra   rb   rc   r´   rd   re   r7   rE   r®  r²  rg   r_   r9   r6   rŸ  rŸ  n  s=   † Ø(€Là $Ðàñ
ó ð
ð ñ
ó ð
ò
.õ4r9   rŸ  c                   ó”  • \ rS rSrSrS=rr\" S5       V Vs/ sH
  oUS-   S.PM     snn r\	S 5       r
\	S 5       r\R                  " S	 \" S5       V Vs/ sH  oS
:w  d  M
  UPM     snn \R                  R                  4S \" \" S5      5      \R                  R"                  4S \" \" SS5      5      \R                  R$                  4S S/\R                  R&                  4S \" \" SS5      5      \R                  R(                  4S \" \" SS5      5      \R                  R(                  4SS9S 5       rSrgs  snn f s  snn f )ÚBitwiseTesti¡  TrÇ  rþ   r;   )rŒ  r�  c           	      óX   • [        SU[        S[        5      [        S[        5      5        g )NÚbitwiserŒ  r�  rº   r3   s     r6   r7   ÚBitwiseTest.define_tables§  s   € äˆi˜¤6¨#¬wÓ#7¼ÀÄWÓ9MÕNr9   c                 ó€   • UR                  U R                  R                  R                  5       U R                  5        g rH   )r@   rA   r·  rB   Úinserted_datarC   s     r6   rE   ÚBitwiseTest.insert_data«  s+   € à×Ñ˜3Ÿ:™:×-Ñ-×4Ñ4Ó6¸×8IÑ8IÕJr9   c                 ó$   • U R                  S5      $ )Nr‰   )Úbitwise_xor©rŒ  s    r6   Ú<lambda>ÚBitwiseTest.<lambda>±  ó   € �a—m‘m AÔ&r9   r‰   c                 ó$   • U R                  S5      $ ©Nr;   )Ú
bitwise_orr¾  s    r6   r¿  rÀ  ¶  s   € �a—l‘l 1”or9   c                 ó$   • U R                  S5      $ )Nrw   )Úbitwise_andr¾  s    r6   r¿  rÀ  »  rÁ  r9   rw   rÍ  c                 ó(   • U S-
  R                  5       $ ©Nr   )Úbitwise_notr¾  s    r6   r¿  rÀ  À  s   € �q˜1‘u×)Ñ)Ô+r9   r   c                 ó$   • U R                  S5      $ rÃ  )Úbitwise_lshiftr¾  s    r6   r¿  rÀ  Å  ó   € �a×&Ñ& qÔ)r9   c                 ó$   • U R                  S5      $ rÈ  )Úbitwise_rshiftr¾  s    r6   r¿  rÀ  Ê  rÌ  r9   zcase, expectedrï   c                 óŽ  • U R                   R                  nUR                  R                  n[        R
                  " XS9n[        U5      R                  US:„  5      R                  U5      nUR                  U5      R                  5       R                  5       n[        X‚ V	s/ sH  o�R                  U	   PM     sn	5        g s  sn	f )Nr¾  r   )rA   r·  rY   rŒ  r   Úresolve_lambdar   r  rX   r@   Úmappingsr°   r	   rº  )
rN   r   rö   rD   rf  rŒ  Úopr¡   r;  r¦  s
             r6   Útest_bitwiseÚBitwiseTest.test_bitwise¯  s›   € ðD �k‰k×!Ñ!ˆà�E‰E�G‰Gˆä×#Ò# DÑ.ˆä�c‹{× Ñ   a¡Ó(×1Ñ1°!Ó4ˆà× Ñ  Ó&×/Ñ/Ó1×5Ñ5Ó7ˆÜˆC°Ó:±¨A×$Ñ$ QÔ'±Ñ:Õ;ùÒ:s   Â#C
r_   N)r`   ra   rb   rc   r^  r&  r'  r)  rº  re   r7   rE   r   r`  rV   Úsupports_bitwise_xorÚlistÚsupports_bitwise_orÚsupports_bitwise_andÚsupports_bitwise_notÚsupports_bitwise_shiftrÓ  rg   )Ú.0r¦  s   00r6   rµ  rµ  ¡  st  † Ø€KØ &Ð&€K�+á38¸´9Ô=±9¨a 1 q¡5Ô)±9Ò=€MàñOó ðOð ñKó ðKð ×Òá&Ù˜bœ	Ô,™	�1¨!¡V�Q™	Ò,Ø×Ñ×1Ñ1ð	
ñ &Ù‘�r“‹OØ×Ñ×0Ñ0ð	
ñ 'Ù‘�q˜!“ÓØ×Ñ×1Ñ1ð	
ñ ,ØˆCØ×Ñ×1Ñ1ð	
ñ *Ù‘�q˜"“ÓØ×Ñ×3Ñ3ð	
ñ *Ù‘�q˜"“ÓØ×Ñ×3Ñ3ð	
ð
 "ñ? ñB
<óC óB
<ùóW >ùó -s   ˜D>ÁEÁ!Erµ  )@Úcollections.abcr!  r†  r�  r  r   r   r   r   Ú
assertionsr   r	   r
   Ú	assertsqlr   rl  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¶   ri  r‡  r¬  rÕ  r  rÆ  r+  rB  rc  rn  r~  r‡  rŸ  rµ  r_   r9   r6   Ú<module>râ     sé  ðõ *Û å !Ý &Ý Ý Ý &Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý #ô#
�(×%Ñ%ô #
ôLJ<�x×*Ñ*ô J<ôZ
˜8×,Ñ,ô 
ô F8˜8×.Ñ.ô F8ôR`
˜x×2Ñ2ô `
ôFaPˆx×"Ñ"ô aPôHt
˜×,Ñ,ô t
ônN
ØÐ/°×1DÑ1DôN
ôbJ@˜8×.Ñ.ô J@ôZN5˜×+Ñ+ô N5ôb(/˜×,Ñ,ô (/ôVM=˜×,Ñ,ô M=ô` × 3Ñ 3ô ô2,
�×$Ñ$ô ,
ô^	CÐ'¨×)<Ñ)<ô 	Cô2
 × 3Ñ 3ô 2
ôj04˜×,Ñ,ô 04ôf9<�(×%Ñ%õ 9<r9   