Ë
    V.jóø  ã                   ó¶  — d dl mZ d dlZddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddl	mZ dd	l	mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# dd lm$Z$ dd!lm%Z% dd"lm&Z& dd#lm'Z' dd$lm(Z( dd%l)m*Z* dd&l)m+Z+  G d'„ d(ejX                  «      Z- G d)„ d*ejX                  «      Z. G d+„ d,ej^                  «      Z0 G d-„ d.ejX                  «      Z1 G d/„ d0ejX                  «      Z2 G d1„ d2ejX                  «      Z3 G d3„ d4ejX                  «      Z4 G d5„ d6eeejX                  «      Z5 G d7„ d8ejX                  «      Z6 G d9„ d:ejX                  «      Z7 G d;„ d<ejX                  «      Z8 G d=„ d>ejX                  «      Z9 G d?„ d@ejX                  «      Z: G dA„ dBejX                  «      Z; G dC„ dDeejX                  «      Z< G dE„ dFejX                  «      Z= G dG„ dHejX                  «      Z> G dI„ dJejX                  «      Z?y)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                   ón   — e Zd ZdZed„ «       Zed„ «       Zd„ Zej                  j                  d„ «       Zy)ÚCollateTestTc                 óf   — t        d|t        dt        d¬«      t        dt        d«      «      «       y )NÚ
some_tableÚidT©Úprimary_keyÚdataéd   ©r   r   r   r   ©ÚclsÚmetadatas     úfC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/testing/suite/test_select.pyÚdefine_tableszCollateTest.define_tables4   s*   € äØØÜ�4œ¨dÔ3Ü�6œ6 #›;Ó'õ		
ó    c                 ó|   — |j                  | j                  j                  j                  «       dddœdddœg«       y )Né   úcollate data1©r,   r/   r   úcollate data2©ÚexecuteÚtablesr+   Úinsert©r3   Ú
connections     r5   Úinsert_datazCollateTest.insert_data=   s;   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à /Ñ2Ø /Ñ2ðõ	
r7   c                 ó¼   — t         j                  j                  «       5 }t        |j	                  |«      j                  «       |«       d d d «       y # 1 sw Y   y xY w©N©r   ÚdbÚconnectr	   r>   Úfetchall©Úselfr   ÚresultÚconns       r5   Ú_assert_resultzCollateTest._assert_resultG   ó<   € Ü�Y‰Y×ÑÔ  DÜ�—‘˜VÓ$×-Ñ-Ó/°Ô8÷ !× Ñ úó   Ÿ*AÁAc                 óh  — t         j                  j                  t         j                  «      }| j	                  t        | j                  j                  «      j                  | j                  j                  j                  j                  j                  |«      j                  «       «      ddg«       y )N)r9   r:   )r   r<   )r   ÚrequiresÚget_order_by_collationr   rN   r   r?   r+   Úorder_byÚcr/   ÚcollateÚasc)rK   Ú	collations     r5   Útest_collate_order_byz!CollateTest.test_collate_order_byK   s   € ä×$Ñ$×;Ñ;¼G¿N¹NÓKˆ	à×ÑÜ�4—;‘;×)Ñ)Ó*×3Ñ3Ø—‘×&Ñ&×(Ñ(×-Ñ-×5Ñ5°iÓ@×DÑDÓFóð "Ð#7Ð8õ		
r7   N)Ú__name__Ú
__module__Ú__qualname__Ú__backend__Úclassmethodr6   rC   rN   r   rR   Úorder_by_collationrY   © r7   r5   r)   r)   1   sR   „ Ø€Kàñ
ó ð
ð ñ
ó ð
ò9ð ×Ñ×(Ñ(ñ
ó )ñ
r7   r)   c                   ó�   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zej                  j                   d„ «       Zy)ÚOrderByLabelTestz©Test the dialect sends appropriate ORDER BY expressions when
    labels are used.

    This essentially exercises the "supports_simple_order_by_label"
    setting.

    Tc                 óÊ   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      t        dt        d«      «      t        d	t        d«      «      «       y )
Nr+   r,   Tr-   ÚxÚyÚqé2   Úpr1   r2   s     r5   r6   zOrderByLabelTest.define_tablesb   sL   € äØØÜ�4œ¨dÔ3Ü�3œÓ Ü�3œÓ Ü�3œ˜r›
Ó#Ü�3œ˜r›
Ó#õ	
r7   c                 ó–   — |j                  | j                  j                  j                  «       ddddddœddddddœddd	d
ddœg«       y )Nr9   r   Úq1Úp3)r,   rd   re   rf   rh   r   Úq2Úp2é   Úq3Úp1r=   rA   s     r5   rC   zOrderByLabelTest.insert_datan   sU   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q q¨t¸$Ñ?Ø˜q q¨t¸$Ñ?Ø˜q q¨t¸$Ñ?ðõ	
r7   c                 ó¼   — t         j                  j                  «       5 }t        |j	                  |«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrE   rF   rJ   s       r5   rN   zOrderByLabelTest._assert_resulty   rO   rP   c                 óÒ   — | j                   j                  }|j                  j                  j	                  d«      }| j                  t        |«      j                  |«      g d¢«       y )NÚlx©©r9   ©r   ©r   )r?   r+   rU   rd   ÚlabelrN   r   rT   ©rK   r   rs   s      r5   Ú
test_plainzOrderByLabelTest.test_plain}   sG   € Ø—‘×&Ñ&ˆØ�W‰W�Y‰Y�_‰_˜TÓ"ˆØ×ÑœF 2›J×/Ñ/°Ó3Ò5GÕHr7   c                 ó   — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }| j                  t        |«      j                  |«      g d¢«       y )Nrs   )rw   ©é   ©é   )	r?   r+   rU   rd   re   rx   rN   r   rT   ry   s      r5   Útest_composed_intz"OrderByLabelTest.test_composed_int‚   sV   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆØ×ÑœF 2›J×/Ñ/°Ó3Ò5GÕHr7   c                 ó¾  — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }t        j                  |j                  j                  «      |j                  j                  z   j                  d«      }| j                  t        ||«      j                  ||j                  «       «      g d¢«       y )Nrs   Úly))r   Úq1p3)r}   Úq2p2)r   Úq3p1)r?   r+   rU   rd   re   rx   r   Úlowerrf   rh   rN   r   rT   Údesc)rK   r   rs   r‚   s       r5   Útest_composed_multiplez'OrderByLabelTest.test_composed_multiple‡   s‘   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆÜ�j‰j˜Ÿ™Ÿ™Ó# e§g¡g§i¡iÑ/×6Ñ6°tÓ<ˆØ×ÑÜ�2�r‹N×#Ñ# B¨¯©«	Ó2Ú3õ	
r7   c                 óî   — | j                   j                  }|j                  j                  j	                  d«      }| j                  t        |«      j                  |j                  «       «      g d¢«       y )Nrs   )rw   rv   ru   )	r?   r+   rU   rd   rx   rN   r   rT   r‡   ry   s      r5   Útest_plain_descz OrderByLabelTest.test_plain_desc�   sM   € Ø—‘×&Ñ&ˆØ�W‰W�Y‰Y�_‰_˜TÓ"ˆØ×ÑœF 2›J×/Ñ/°·±³	Ó:Ò<NÕOr7   c                 ó  — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }| j                  t        |«      j                  |j                  «       «      g d¢«       y )Nrs   )r~   r|   rw   )
r?   r+   rU   rd   re   rx   rN   r   rT   r‡   ry   s      r5   Útest_composed_int_descz'OrderByLabelTest.test_composed_int_desc•   s\   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆØ×ÑœF 2›J×/Ñ/°·±³	Ó:Ò<NÕOr7   c                 ór  — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }t        t        j                  |j                  j                  «      |«      j                  |«      j                  |«      }| j                  |g d¢«       y )Nrs   ))r9   r   )r9   r}   )r9   r   )r?   r+   rU   rd   re   rx   r   r   Úcountr,   Úgroup_byrT   rN   )rK   r   ÚexprÚstmts       r5   Útest_group_by_composedz'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Ò":Õ;r7   N)rZ   r[   r\   Ú__doc__r]   r^   r6   rC   rN   rz   r€   rˆ   rŠ   rŒ   r   rR   Úgroup_by_complex_expressionr’   r`   r7   r5   rb   rb   W   sv   „ ñð €Kàñ	
ó ð	
ð ñ
ó ð
ò9òIò
Iò

òPò
Pð
 ×Ñ×1Ñ1ñ<ó 2ñ<r7   rb   c                   ó   — e Zd ZdZdZd„ Zy)ÚValuesExpressionTest)Útable_value_constructorTc                 óâ   — t        t        dt        «      t        dt        «      d¬«      j	                  g d¢«      }t        |j                  t        |«      «      j                  «       g d¢«       y )Nr,   ÚnameÚ	my_values)r™   ))r9   Úname1)r   Úname2)r   Úname3)	r%   r   r   r   r/   r	   r>   r   Úall)rK   rB   Ú
value_exprs      r5   Útest_tuplesz ValuesExpressionTest.test_tuples©   sX   € ÜÜ�4œÓ!¤6¨&´&Ó#9Àô
ç
‰$Ò9Ó
:ð 	ô 	Ø×Ñœv jÓ1Ó2×6Ñ6Ó8Ú6õ	
r7   N)rZ   r[   r\   Ú__requires__r]   r    r`   r7   r5   r–   r–   ¤   s   „ Ø/€Là€Kó
r7   r–   c                   ób  — e Zd ZdZed„ «       Zed„ «       Z	 d'd„Zd(d„Zd„ Z	d„ Z
ej                  j                  d„ «       Zej                  j                  d	„ «       Z ej"                  g d
¢g d¢g d¢d¬«      ej                  j                  d„ «       «       Zej                  j                  d„ «       Zej                  j(                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j2                  d„ «       Zej                  j2                  d„ «       Zej                  j2                  d„ «       Zej                  j                  d„ «       Zej                  j<                  d„ «       Zej                  j<                  d„ «       Z ej                  j<                  d„ «       Z!ej                  j                  ej                  jD                  d„ «       «       Z#ej                  j<                  d„ «       Z$ej                  j<                  d„ «       Z%ej                  jL                  d„ «       Z'ej                  jL                  ej                  jP                  d „ «       «       Z)ej                  jL                  ej                  jP                  d!„ «       «       Z*ej                  jV                  d"„ «       Z,ej                  jV                  ej                  jP                  d#„ «       «       Z-ej                  jL                  ej                  jV                  d$„ «       «       Z.ej                  jL                  ej                  jV                  ej                  jP                  d%„ «       «       «       Z/y&))ÚFetchLimitOffsetTestTc           
      óz   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      «       y ©Nr+   r,   Tr-   rd   re   ©r   r   r   r2   s     r5   r6   z"FetchLimitOffsetTest.define_tables·   ó0   € äØØÜ�4œ¨dÔ3Ü�3œÓ Ü�3œÓ õ	
r7   c                 óž   — |j                  | j                  j                  j                  «       ddddœddddœddddœddddœddddœg«       y )Nr9   r   ©r,   rd   re   r   rn   r}   é   r=   rA   s     r5   rC   z FetchLimitOffsetTest.insert_dataÁ   s]   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)ðõ		
r7   c                 ó  — |r]|j                  ||«      j                  «       }t        t        |«      t        |«      «       t        t	        |«      t	        |«      «       y t        |j                  ||«      j                  «       |«       y rE   )r>   rI   r	   ÚlenÚset)rK   rB   r   rL   ÚparamsÚset_Ú	query_ress          r5   rN   z#FetchLimitOffsetTest._assert_resultÎ   sh   € ñ Ø"×*Ñ*¨6°6Ó:×CÑCÓEˆIÜ”�I“¤ F£Ô,Ü”�I“¤ F£Õ,ô �
×"Ñ" 6¨6Ó2×;Ñ;Ó=¸vÕFr7   c                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrE   )r   rG   rH   r	   Úexec_driver_sqlrI   ©rK   r   rL   r®   rM   s        r5   Ú_assert_result_strz'FetchLimitOffsetTest._assert_result_strÙ   s@   € Ü�Y‰Y×ÑÔ  DÜ�×$Ñ$ V¨VÓ4×=Ñ=Ó?ÀÔH÷ !× Ñ úó   Ÿ+AÁAc                 ó  — | j                   j                  }t        |«      j                  |j                  j
                  «      }| j                  ||j                  d«      ddg«       | j                  ||j                  d«      g d¢«       y ©Nr   ©r9   r9   r   ©r   r   r   r   ©r¸   r¹   ©r   r   rn   )r?   r+   r   rT   rU   r,   rN   Úlimit)rK   rB   r   r‘   s       r5   Útest_simple_limitz&FetchLimitOffsetTest.test_simple_limitÝ   sr   € Ø—‘×&Ñ&ˆÜ�e‹}×%Ñ% e§g¡g§j¡jÓ1ˆØ×ÑØØ�J‰J�q‹MØ˜	Ð"ô	
ð
 	×ÑØØ�J‰J�q‹MÚ-õ	
r7   c                 óD  — | j                   j                  }t        |j                  j                  «      j                  d«      j                  «       }t        t        |«      t        |«      «      j                  «       j                  «       }| j                  ||dg«       y )Nr9   ru   )
r?   r+   r   rU   r,   r¼   Úscalar_subqueryr$   ÚsubqueryrN   )rK   rB   r   r‘   Úus        r5   Ú test_limit_render_multiple_timesz5FetchLimitOffsetTest.test_limit_render_multiple_timesë   sy   € Ø—‘×&Ñ&ˆÜ�e—g‘g—j‘jÓ!×'Ñ'¨Ó*×:Ñ:Ó<ˆä”&˜“,¤ t£Ó-×6Ñ6Ó8×?Ñ?ÓAˆà×ÑØØàðõ	
r7   c                 óp  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  d«      ddg«       | j                  |t        |«      j	                  |j
                  j                  «      j                  d«      g d¢«       y r·   ©r?   r+   rN   r   rT   rU   r,   Úfetch©rK   rB   r   s      r5   Útest_simple_fetchz&FetchLimitOffsetTest.test_simple_fetchù   sŠ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7Ø˜	Ð"ô	
ð
 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7Ú-õ	
r7   c                 óp  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  d«      g d¢«       | j                  |t        |«      j	                  |j
                  j                  «      j                  d«      ddg«       y )Nr   ©r»   ©rn   rn   r}   ©r}   rn   rª   r   rÊ   rË   ©r?   r+   rN   r   rT   rU   r,   ÚoffsetrÆ   s      r5   Útest_simple_offsetz'FetchLimitOffsetTest.test_simple_offset  sŠ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ú-ô	
ð
 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ø˜	Ð"õ	
r7   )©r   r   ©r   r9   ©r   r   )rÐ   rÏ   rÑ   )©r   r9   rÐ   rÒ   Úcases©Úargnamesc                 ó:  — | j                   j                  }|j                  i ¬«      }g d¢}|D ]j  \  }}||||z    }| j                  |t	        |«      j                  |j                  j                  «      j                  |«      j                  |«      |«       Œl y )N)Úcompiled_cache©r¸   r¹   r»   rÊ   rË   )
r?   r+   Úexecution_optionsrN   r   rT   rU   r,   r¼   rÍ   )rK   rB   rÓ   r   Úassert_datar¼   rÍ   Úexpecteds           r5   Útest_simple_limit_offsetz-FetchLimitOffsetTest.test_simple_limit_offset  s�   € ð —‘×&Ñ&ˆØ×1Ñ1ÀÐ1ÓDˆ
âMˆã"‰MˆE�6Ø" 6¨F°U©NÐ;ˆHØ×ÑØÜ�u“×&Ñ& u§w¡w§z¡zÓ2×8Ñ8¸Ó?×FÑFÀvÓNØõñ #r7   c                 ó¬  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  d«      j                  d«      ddg«       | j                  |t        |«      j	                  |j
                  j                  «      j                  d«      j                  d«      g d¢«       y )Nr   r9   r¹   r»   r   rÉ   ©	r?   r+   rN   r   rT   rU   r,   rÅ   rÍ   rÆ   s      r5   Útest_simple_fetch_offsetz-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Ú-õ	
r7   c                 óŽ   — | j                   j                  }| j                  |t        |«      j	                  d«      g d¢d¬«       y )Né
   rØ   T©r¯   )r?   r+   rN   r   rÅ   rÆ   s      r5   Útest_fetch_offset_no_orderz/FetchLimitOffsetTest.test_fetch_offset_no_order9  s?   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×Ñ Ó#ÚCØð	 	õ 	
r7   c                 óp  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  d«      g d¢«       | j                  |t        |«      j	                  |j
                  j                  «      j                  d«      g d¢«       y )Nr   rØ   r9   ©r¹   r»   rÊ   rË   rÌ   rÆ   s      r5   Útest_simple_offset_zeroz,FetchLimitOffsetTest.test_simple_offset_zeroC  s…   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8ÚCô	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ú8õ	
r7   c                 ó`  — | j                   j                  }t        |«      j                  |j                  j
                  «      j                  d«      j                  d«      }|j                  t        j                  j                  ddi¬«      }t        |«      }| j                  |ddg«       y©	z7test that 'literal binds' mode works - no bound params.r   r9   Úliteral_bindsT)ÚdialectÚcompile_kwargsr¹   r»   N)r?   r+   r   rT   rU   r,   r¼   rÍ   Úcompiler   rG   rê   Ústrr´   ©rK   r   r‘   Úsqls       r5   Útest_limit_offset_nobindsz.FetchLimitOffsetTest.test_limit_offset_nobindsR  óŒ   € ð —‘×&Ñ&ˆÜ�e‹}×%Ñ% e§g¡g§j¡jÓ1×7Ñ7¸Ó:×AÑAÀ!ÓDˆØ�l‰lÜ—I‘I×%Ñ%°ÈÐ6Mð ó 
ˆô �#‹hˆà×Ñ  i°Ð%;Õ<r7   c                 ó`  — | j                   j                  }t        |«      j                  |j                  j
                  «      j                  d«      j                  d«      }|j                  t        j                  j                  ddi¬«      }t        |«      }| j                  |ddg«       yrè   )r?   r+   r   rT   rU   r,   rÅ   rÍ   rì   r   rG   rê   rí   r´   rî   s       r5   Útest_fetch_offset_nobindsz.FetchLimitOffsetTest.test_fetch_offset_nobinds_  rñ   r7   c                 ó¤  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      ddgddi¬«       | j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      g d¢ddi¬«       y )NÚlr¸   r¹   r   ©r®   rº   r   )	r?   r+   rN   r   rT   rU   r,   r¼   r   rÆ   s      r5   Útest_bound_limitz%FetchLimitOffsetTest.test_bound_limitl  sª   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4´Y¸s³^ÓDØ˜	Ð"Ø˜�8ð	 	ô 	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4´Y¸s³^ÓDÚ-Ø˜�8ð	 	õ 	
r7   c                 ó¤  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      g d¢ddi¬«       | j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      g d¢ddi¬«       y )NÚorÉ   r   rö   rå   r9   )	r?   r+   rN   r   rT   rU   r,   rÍ   r   rÆ   s      r5   Útest_bound_offsetz&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ð	 	õ 	
r7   c                 ó  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      j                  t        d«      «      ddgdddœ¬«       | j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      j                  t        d«      «      g d	¢d
ddœ¬«       y )Nrõ   rù   r¹   r»   r   r9   )rõ   rù   rö   rÉ   r   )
r?   r+   rN   r   rT   rU   r,   r¼   r   rÍ   rÆ   s      r5   Útest_bound_limit_offsetz,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Ó#Ú-Ø Ñ#ð 	õ 	
r7   c                 ó  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      j                  t        d«      «      ddgdddœ¬«       | j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      «      j                  t        d«      «      g d	¢d
ddœ¬«       y )NÚfrù   r¹   r»   r   r9   )rÿ   rù   rö   rÉ   r   )
r?   r+   rN   r   rT   rU   r,   rÅ   r   rÍ   rÆ   s      r5   Útest_bound_fetch_offsetz,FetchLimitOffsetTest.test_bound_fetch_offset¥  rý   r7   c           	      óú   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      ddg«       y )NÚ1Ú2rÊ   rË   )	r?   r+   rN   r   rT   rU   r,   rÍ   r   rÆ   s      r5   Útest_expr_offsetz%FetchLimitOffsetTest.test_expr_offset¼  s\   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r7   c           	      óú   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      g d¢«       y )Nr  r  rº   )	r?   r+   rN   r   rT   rU   r,   r¼   r   rÆ   s      r5   Útest_expr_limitz$FetchLimitOffsetTest.test_expr_limitÇ  sW   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=Ú-õ	
r7   c           	      óB  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      j                  t        d«      t        d«      z   «      ddg«       y ©Nr  r»   rÊ   ©
r?   r+   rN   r   rT   rU   r,   r¼   r   rÍ   rÆ   s      r5   Útest_expr_limit_offsetz+FetchLimitOffsetTest.test_expr_limit_offsetÒ  su   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r7   c           	      óB  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      j                  t        d«      t        d«      z   «      ddg«       y r  )
r?   r+   rN   r   rT   rU   r,   rÅ   r   rÍ   rÆ   s      r5   Útest_expr_fetch_offsetz+FetchLimitOffsetTest.test_expr_fetch_offsetÞ  sw   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r7   c           	      ó   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  d«      j                  t        d«      t        d«      z   «      ddg«       | j                  |t        |«      j	                  |j
                  j                  «      j                  d«      j                  t        d«      t        d«      z   «      g d¢«       y )Nr   r  r»   rÊ   r   rÉ   )
r?   r+   rN   r   rT   rU   r,   r¼   rÍ   r   rÆ   s      r5   Útest_simple_limit_expr_offsetz2FetchLimitOffsetTest.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Ó'¬.¸Ó*=Ñ=Ó>Ú-õ	
r7   c           	      ó   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      j                  d«      ddg«       | j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      j                  d«      ddg«       y )Nr  r   r»   rÊ   r9   r¹   r	  rÆ   s      r5   Útest_expr_limit_simple_offsetz2FetchLimitOffsetTest.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Ø˜	Ð"õ	
r7   c                 ó¸  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  j                  «       «      j                  dd¬«      ddgd¬«       | j                  |t        |«      j	                  |j
                  j                  j                  «       «      j                  dd¬«      g d¢d¬«       y )	Nr9   T©Ú	with_tiesrÊ   rË   râ   r   rÉ   ©	r?   r+   rN   r   rT   rU   rd   r‡   rÅ   rÆ   s      r5   Útest_simple_fetch_tiesz+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Ú-Øð	 	õ 	
r7   c                 óR  — | j                   j                  }|j                  t        |«      j	                  |j
                  j                  «      j                  dd¬«      j                  d«      «      j                  «       }t        |d   d«       t        t        |«      h d£«       y )Nr   Tr  r   r»   ¾   r»   rÊ   rË   ©r?   r+   r>   r   rT   rU   rd   rÅ   rÍ   rI   r	   r­   ©rK   rB   r   Úfas       r5   Útest_fetch_offset_tiesz+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Õ7r7   c                 ó´  — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  dd¬«      j                  d«      ddg«       | j                  |t        |«      j	                  |j
                  j                  «      j                  dd¬«      j                  d«      dd	g«       y )
Nr   Tr  r9   r¹   r»   r   rÊ   rË   )	r?   r+   rN   r   rT   rU   rd   rÅ   rÍ   rÆ   s      r5   Ú#test_fetch_offset_ties_exact_numberz8FetchLimitOffsetTest.test_fetch_offset_ties_exact_number3  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Ø˜	Ð"õ	
r7   c                 óÒ   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  dd¬«      dg«       y )Né   T©Úpercentr¸   rÄ   rÆ   s      r5   Útest_simple_fetch_percentz.FetchLimitOffsetTest.test_simple_fetch_percentI  sQ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°RÀÐ4ÓFØˆKõ	
r7   c                 óò   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  dd¬«      j                  d«      ddg«       y )Né(   Tr   r9   r¹   r»   rÞ   rÆ   s      r5   Útest_fetch_offset_percentz.FetchLimitOffsetTest.test_fetch_offset_percentR  s\   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U�2˜tˆUÓ$ß‰V�A‹YØ˜	Ð"õ	
r7   c                 óö   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  j                  «       «      j                  ddd¬«      ddgd¬«       y )Nr  T©r!  r  rÊ   rË   râ   r  rÆ   s      r5   Útest_simple_fetch_percent_tiesz3FetchLimitOffsetTest.test_simple_fetch_percent_ties_  sd   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—i‘i—n‘nÓ&Ó'ß‰U�2˜t¨tˆUÓ4Ø˜	Ð"Øð 	õ 	
r7   c                 óT  — | j                   j                  }|j                  t        |«      j	                  |j
                  j                  «      j                  ddd¬«      j                  d«      «      j                  «       }t        |d   d«       t        t        |«      h d£«       y )Nr$  Tr'  r   r   r»   r  r  r  s       r5   Útest_fetch_offset_percent_tiesz3FetchLimitOffsetTest.test_fetch_offset_percent_tiesl  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Õ7r7   N)r`   F©r`   )0rZ   r[   r\   r]   r^   r6   rC   rN   r´   r½   rÂ   r   rR   Úfetch_firstrÇ   rÍ   rÎ   ÚcombinationsrÜ   rß   Úfetch_no_order_byrã   ræ   rð   ró   Úbound_limit_offsetr÷   rú   rü   r   Úsql_expression_limit_offsetr  r  r
  Úfetch_expressionr  r  r  Ú
fetch_tiesr  Úfetch_offset_with_optionsr  r  Úfetch_percentr"  r%  r(  r*  r`   r7   r5   r£   r£   ´   s  „ Ø€Kàñ
ó ð
ð ñ

ó ð

ð ;@ó	GóIò
ò
ð ×Ñ×!Ñ!ñ
ó "ð
ð ×Ñ×Ññ
ó ð
ð €W×ÑÚ	!Ú	!Ú	!Øô	ð ×Ñ×Ññó óðð ×Ñ×!Ñ!ñ
ó "ð
ð ×Ñ×'Ñ'ñ
ó (ð
ð ×Ñ×Ññ
ó ð
ð ×Ñ×Ññ
=ó ð
=ð ×Ñ×!Ñ!ñ
=ó "ð
=ð ×Ñ×(Ñ(ñ
ó )ð
ð  ×Ñ×(Ñ(ñ
ó )ð
ð  ×Ñ×(Ñ(ñ
ó )ð
ð, ×Ñ×!Ñ!ñ
ó "ð
ð, ×Ñ×1Ñ1ñ
ó 2ð
ð ×Ñ×1Ñ1ñ
ó 2ð
ð ×Ñ×1Ñ1ñ	
ó 2ð	
ð ×Ñ×!Ñ!Ø×Ñ×&Ñ&ñ	
ó 'ó "ð	
ð ×Ñ×1Ñ1ñ
ó 2ð
ð( ×Ñ×1Ñ1ñ
ó 2ð
ð( ×Ñ× Ñ ñ
ó !ð
ð  ×Ñ× Ñ Ø×Ñ×/Ñ/ñ	8ó 0ó !ð	8ð ×Ñ× Ñ Ø×Ñ×/Ñ/ñ
ó 0ó !ð
ð( ×Ñ×#Ñ#ñ
ó $ð
ð ×Ñ×#Ñ#Ø×Ñ×/Ñ/ñ	
ó 0ó $ð	
ð ×Ñ× Ñ Ø×Ñ×#Ñ#ñ	
ó $ó !ð	
ð ×Ñ× Ñ Ø×Ñ×#Ñ#Ø×Ñ×/Ñ/ñ	8ó 0ó $ó !ñ	8r7   r£   c                   óJ   — e Zd ZdZdZdZed„ «       Zed„ «       Zd„ Z	d„ Z
d„ Zy	)
ÚSameNamedSchemaTableTestztests for #7471T)Úschemasc           
      óº   — t        d|t        dt        d¬«      t        j                  ¬«       t        d|t        dt        d¬«      t        dt        d¬«      «       y )	Nr+   r,   Tr-   )ÚschemaÚsome_table_idF©Únullable)r   r   r   r   Útest_schemar2   s     r5   r6   z&SameNamedSchemaTableTest.define_tables‚  sR   € äØØÜ�4œ¨dÔ3Ü×%Ñ%õ		
ô 	ØØÜ�4œ¨dÔ3ÜØÜàô	õ	
	
r7   c                 óÚ   — | j                  ddt        j                  z  «      \  }}|j                  |j	                  «       ddi«       |j                  |j	                  «       dddœ«       y )Nr+   ú%s.some_tabler,   r9   )r,   r:  )r?   r   r=  r>   r@   )r3   rB   r+   Úsome_table_schemas       r5   rC   z$SameNamedSchemaTableTest.insert_data–  sd   € à(+¯
©
Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
Ð%ð 	×ÑÐ,×3Ñ3Ó5¸¸a°yÔAØ×Ñ˜:×,Ñ,Ó.°qÈ1Ñ0MÕNr7   c           
      ó.  — | j                  ddt        j                  z  «      \  }}t        |j	                  t        ||«      j                  |||j                  j                  |j                  j                  k(  «      «      j                  «       d«       y )Nr+   r?  ©r9   r9   r9   )r?   r   r=  r	   r>   r   Ú	join_fromrU   r:  r,   Úfirst©rK   rB   r+   r@  s       r5   Útest_simple_join_both_tablesz5SameNamedSchemaTableTest.test_simple_join_both_tablesž  s…   € Ø(,¯©Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
Ð%ô 	Ø×ÑÜ�zÐ#4Ó5×?Ñ?ØØ%Ø—L‘L×.Ñ.Ð2C×2EÑ2E×2HÑ2HÑHóó÷ ‰e‹gØõ		
r7   c           
      óx  — | j                  ddt        j                  z  «      \  }}t        |j	                  t        |«      j                  |||j                  j                  |j                  j                  k(  «      j                  |j                  j                  dk(  «      «      j                  «       d«       y )Nr+   r?  r9   ©r9   r9   )r?   r   r=  r	   r>   r   rC  rU   r:  r,   ÚwhererD  rE  s       r5   Ú!test_simple_join_whereclause_onlyz:SameNamedSchemaTableTest.test_simple_join_whereclause_only®  sš   € Ø(,¯©Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
Ð%ô 	Ø×ÑÜ�zÓ"ß‘ØØ%Ø—L‘L×.Ñ.Ð2C×2EÑ2E×2HÑ2HÑHó÷
 ‘�z—|‘|—‘¨!Ñ+Ó,ó÷ ‰e‹gØõ	
r7   c           
      ó˜  — | j                  ddt        j                  z  «      \  }}t        |«      j	                  |||j
                  j                  |j
                  j                  k(  «      j                  |j
                  j                  dk(  «      j                  «       }t        |j                  t        ||j
                  j                  «      j	                  |||j
                  j                  |j
                  j                  k(  «      j                  |j
                  j                  dk(  «      «      j                  «       d«       y )Nr+   r?  r9   rB  )r?   r   r=  r   rC  rU   r:  r,   rI  rÀ   r	   r>   rD  )rK   rB   r+   r@  Úsubqs        r5   Útest_subqueryz&SameNamedSchemaTableTest.test_subqueryÀ  sý   € Ø(,¯©Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
Ð%ô
 �:Óß‰YØØ!Ø—‘×*Ñ*Ð.?×.AÑ.A×.DÑ.DÑDó÷
 ‰U�:—<‘<—?‘? aÑ'Ó(ß‰X‹Zð 	ô 	Ø×ÑÜ�z 4§6¡6§9¡9Ó-ß‘ØØØ—L‘L×.Ñ.°$·&±&·)±)Ñ;ó÷
 ‘�z—|‘|—‘¨!Ñ+Ó,ó÷ ‰e‹gØõ	
r7   N)rZ   r[   r\   r“   r]   r¡   r^   r6   rC   rF  rJ  rM  r`   r7   r5   r6  r6  {  sF   „ Ùà€Kà€Làñ
ó ð
ð& ñOó ðOò
ò 
ó$
r7   r6  c                   óV   — e Zd ZdZdd„Zed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚJoinTestTc                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrE   rF   r³   s        r5   rN   zJoinTest._assert_resultá  ó>   € Ü�Y‰Y×ÑÔ  DÜ�—‘˜V VÓ,×5Ñ5Ó7¸Ô@÷ !× Ñ úrµ   c                 ó¤   — t        d|t        dt        d¬«      «       t        d|t        dt        d¬«      t        dt        d«      d¬	«      «       y )
NÚar,   Tr-   ÚbÚa_idza.idFr;  )r   r   r   r   r2   s     r5   r6   zJoinTest.define_tableså  sB   € äˆc�8œV D¬'¸tÔDÔEÜØØÜ�4œ¨dÔ3Ü�6œ: fÓ-¸Ô>õ		
r7   c           	      ó  — |j                  | j                  j                  j                  «       ddiddiddiddiddig«       |j                  | j                  j                  j                  «       dddœdddœdddœdddœg«       y )Nr,   r9   r   r   rn   r}   )r,   rU  )r>   r?   rS  r@   rT  rA   s     r5   rC   zJoinTest.insert_dataï  s�   € à×ÑØ�J‰J�L‰L×ÑÓ!Ø�AˆY˜˜q˜	 D¨! 9¨t°Q¨i¸$À¸ÐCô	
ð
 	×ÑØ�J‰J�L‰L×ÑÓ!à !Ñ$Ø !Ñ$Ø !Ñ$Ø !Ñ$ð	õ	
r7   c                 ó  — | j                  dd«      \  }}t        ||«      j                  |j                  |«      «      j	                  |j
                  j                  |j
                  j                  «      }| j                  |g d¢«       y ©NrS  rT  )rB  )r9   r   r9   )r   rn   r   )r   r}   r   ©r?   r   Úselect_fromÚjoinrT   rU   r,   rN   ©rK   rS  rT  r‘   s       r5   Útest_inner_join_fkzJoinTest.test_inner_join_fk   ób   € Ø�{‰{˜3 Ó$‰ˆˆ1ä�a˜‹|×'Ñ'¨¯©¨q«	Ó2×;Ñ;¸A¿C¹C¿F¹FÀAÇCÁCÇFÁFÓKˆà×Ñ˜DÒ"NÕOr7   c                 ó   — | j                  dd«      \  }}t        ||«      j                  |j                  |t	        «       «      «      j                  |j                  j                  |j                  j                  «      }| j                  |t        j                  g d¢g d¢«      D ���cg c]  \  \  }\  }}|||f‘Œ c}}}«       y c c}}}w )NrS  rT  )ru   rv   rw   ©rn   r|   )rH  rÐ   )rn   r   )r}   r   )r?   r   rZ  r[  r!   rT   rU   r,   rN   Ú	itertoolsÚproduct)rK   rS  rT  r‘   rU   s        r5   Útest_inner_join_truezJoinTest.test_inner_join_true  s³   € Ø�{‰{˜3 Ó$‰ˆˆ1ô �1�a‹Lß‰[˜Ÿ™ ¤4£6Ó*Ó+ß‰X�a—c‘c—f‘f˜aŸc™cŸf™fÓ%ð 	ð 	×ÑØô %.×$5Ñ$5Ú2Ú4ô%õñ%‘L‘D�Q™&˜1˜að �A�q’	ð%óõ		
ùôs   Â+C	c                 ó(  — | j                  dd«      \  }}t        ||«      j                  |j                  |t	        «       «      «      j                  |j                  j                  |j                  j                  «      }| j                  |g «       y )NrS  rT  )	r?   r   rZ  r[  r   rT   rU   r,   rN   r\  s       r5   Útest_inner_join_falsezJoinTest.test_inner_join_false  sk   € Ø�{‰{˜3 Ó$‰ˆˆ1ô �1�a‹Lß‰[˜Ÿ™ ¤5£7Ó+Ó,ß‰X�a—c‘c—f‘f˜aŸc™cŸf™fÓ%ð 	ð 	×Ñ˜D "Õ%r7   c                 ó,  — | j                  dd«      \  }}t        ||«      j                  |j                  |t	        «       «      «      j                  |j                  j                  |j                  j                  «      }| j                  |g d¢«       y )NrS  rT  ))r9   NN)r   NN)r   NN)rn   NN)r}   NN)	r?   r   rZ  Ú	outerjoinr   rT   rU   r,   rN   r\  s       r5   Útest_outer_join_falsezJoinTest.test_outer_join_false&  sq   € Ø�{‰{˜3 Ó$‰ˆˆ1ô �1�a‹Lß‰[˜Ÿ™ Q¬«Ó0Ó1ß‰X�a—c‘c—f‘f˜aŸc™cŸf™fÓ%ð 	ð 	×ÑØòõ		
r7   c                 ó  — | j                  dd«      \  }}t        ||«      j                  |j                  |«      «      j	                  |j
                  j                  |j
                  j                  «      }| j                  |g d¢«       y rX  rY  r\  s       r5   Útest_outer_join_fkzJoinTest.test_outer_join_fk:  r^  r7   Nr+  )rZ   r[   r\   r]   rN   r^   r6   rC   r]  rc  re  rh  rj  r`   r7   r5   rO  rO  Þ  sP   „ Ø€KóAð ñ
ó ð
ð ñ
ó ð
ò Pò
ò(	&ò
ó(Pr7   rO  c                   ó*  — e Zd ZdZed„ «       Zed„ «       Zdd„Zd„ Zd„ Z	e
j                  j                  e
j                  j                  d„ «       «       Ze
j                  j                  d„ «       Zd	„ Ze
j                  j                  d
„ «       Zd„ Zy)ÚCompoundSelectTestTc           
      óz   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      «       y r¥   r¦   r2   s     r5   r6   z CompoundSelectTest.define_tablesE  r§   r7   c           
      ó”   — |j                  | j                  j                  j                  «       ddddœddddœddddœddddœg«       y )Nr9   r   r©   r   rn   r}   r=   rA   s     r5   rC   zCompoundSelectTest.insert_dataO  sS   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)ð	õ	
r7   c                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrE   rF   r³   s        r5   rN   z!CompoundSelectTest._assert_result[  rQ  rµ   c                 óz  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      }t        |«      j                  |j                  j
                  dk(  «      }t        ||«      }| j                  |j                  |j                  j
                  «      ddg«       y ©Nr   r   r¹   r»   )
r?   r+   r   rI  rU   r,   r$   rN   rT   Úselected_columns©rK   r   Ús1Ús2Úu1s        r5   Útest_plain_unionz#CompoundSelectTest.test_plain_union_  s‰   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆä�2�r‹]ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r7   c                 ó²  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      }t        |«      j                  |j                  j
                  dk(  «      }t        ||«      j                  «       j                  «       }| j                  |j                  |j                  j
                  «      ddg«       y rq  )r?   r+   r   rI  rU   r,   r$   ÚaliasrN   rT   rr  rs  s        r5   Útest_select_from_plain_unionz/CompoundSelectTest.test_select_from_plain_unioni  s›   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆä�2�r‹]× Ñ Ó"×)Ñ)Ó+ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r7   c                 ó`  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      j                  d«      j                  |j                  j
                  «      }t        |«      j                  |j                  j
                  dk(  «      j                  d«      j                  |j                  j
                  «      }t        ||«      j                  d«      }| j                  |j                  |j                  j
                  «      ddg«       y ©Nr   r9   r   r¹   r»   )r?   r+   r   rI  rU   r,   r¼   rT   r$   rN   rr  rs  s        r5   Ú&test_limit_offset_selectable_in_unionsz9CompoundSelectTest.test_limit_offset_selectable_in_unionss  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�r‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r7   c                 ó$  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      j                  |j                  j
                  «      }t        |«      j                  |j                  j
                  dk(  «      j                  |j                  j
                  «      }t        ||«      j                  d«      }| j                  |j                  |j                  j
                  «      ddg«       y rq  )r?   r+   r   rI  rU   r,   rT   r$   r¼   rN   rr  rs  s        r5   Ú"test_order_by_selectable_in_unionsz5CompoundSelectTest.test_order_by_selectable_in_unions  sº   € à—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:¸5¿7¹7¿:¹:ÓFˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:¸5¿7¹7¿:¹:ÓFˆä�2�r‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r7   c                 óÐ  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      j                  «       }t        |«      j                  |j                  j
                  dk(  «      j                  «       }t        ||«      j                  d«      }| j                  |j                  |j                  j
                  «      ddg«       y rq  )r?   r+   r   rI  rU   r,   Údistinctr$   r¼   rN   rT   rr  rs  s        r5   Ú"test_distinct_selectable_in_unionsz5CompoundSelectTest.test_distinct_selectable_in_unionsŠ  s¦   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:Ó<ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:Ó<ˆä�2�r‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r7   c                 ó˜  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      j                  d«      j                  |j                  j
                  «      }t        |«      j                  |j                  j
                  dk(  «      j                  d«      j                  |j                  j
                  «      }t        ||«      j                  «       }| j                  |j                  «       j                  d«      j                  |j                  j
                  «      ddg«       y r|  )r?   r+   r   rI  rU   r,   r¼   rT   r$   ry  rN   rs  s        r5   Ú&test_limit_offset_in_unions_from_aliasz9CompoundSelectTest.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�r‹]× Ñ Ó"ˆØ×ÑØ�I‰I‹K×Ñ˜aÓ ×)Ñ)¨"¯$©$¯'©'Ó2°YÀ	Ð4Jõ	
r7   c                 óÐ  — | j                   j                  }t        |«      j                  |j                  j
                  dk(  «      j                  d«      j                  |j                  j
                  «      j                  «       j                  «       }t        |«      j                  |j                  j
                  dk(  «      j                  d«      j                  |j                  j
                  «      j                  «       j                  «       }t        ||«      j                  d«      }| j                  |j                  |j                  j
                  «      ddg«       y r|  )r?   r+   r   rI  rU   r,   r¼   rT   ry  r$   rN   rr  rs  s        r5   Ú.test_limit_offset_aliased_selectable_in_unionszACompoundSelectTest.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�r‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r7   Nr+  )rZ   r[   r\   r]   r^   r6   rC   rN   rw  rz  r   rR   Úorder_by_col_from_unionÚ/parens_in_union_contained_select_w_limit_offsetr}  Ú0parens_in_union_contained_select_wo_limit_offsetr  r‚  r„  r†  r`   r7   r5   rl  rl  B  s¾   „ Ø€Kàñ
ó ð
ð ñ	
ó ð	
óAò
ò
ð ×Ñ×-Ñ-Ø×Ñ×EÑEñ
ó Fó .ð
ð ×Ñ×FÑFñ
ó Gð
ò
ð ×Ñ×EÑEñ	
ó Fð	
ó
r7   rl  c                   ó¼   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zej                  j                  d	„ «       Zej                  j                  d
„ «       Zy)ÚPostCompileParamsTestT)Ústandard_cursor_sqlc                 ó¢   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      t        dt        d«      «      «       y ©	Nr+   r,   Tr-   rd   re   Úzrg   r1   r2   s     r5   r6   z#PostCompileParamsTest.define_tablesÀ  ó>   € äØØÜ�4œ¨dÔ3Ü�3œÓ Ü�3œÓ Ü�3œ˜r›
Ó#õ	
r7   c                 óœ   — |j                  | j                  j                  j                  «       dddddœdddddœdddddœddd	d
dœg«       y ©Nr9   r   Úz1)r,   rd   re   r�  r   Úz2rn   Úz3r}   Úz4r=   rA   s     r5   rC   z!PostCompileParamsTest.insert_dataË  ó[   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q q¨tÑ4Ø˜q q¨tÑ4Ø˜q q¨tÑ4Ø˜q q¨tÑ4ð	õ	
r7   c                 óö   — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  t        dd¬«      k(  «      }| j                  |di «       y )Nrf   T©Úliteral_executezKSELECT some_table.id FROM some_table WHERE some_table.x = __[POSTCOMPILE_q]©	r?   r+   r   rU   r,   rI  rd   r   Úassert_compile©rK   r   r‘   s      r5   Útest_compilez"PostCompileParamsTest.test_compile×  s`   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¸Ô=Ñ=ó
ˆð 	×ÑØð5àõ		
r7   c                 óü   — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  t        ddd¬«      k(  «      }| j                  |di d¬«       y )Nrf   rá   Tr™  z<SELECT some_table.id FROM some_table WHERE some_table.x = 10)ré   r›  r�  s      r5   Útest_compile_literal_bindsz0PostCompileParamsTest.test_compile_literal_bindså  sh   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¨¸DÔAÑAó
ˆð 	×ÑØØJØØð	 	õ 	
r7   c                 óL  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  t        dd¬«      k(  «      }| j                  «       5 }t        j                  j                  «       5 }|j                  |t        d¬«      «       d d d «       d d d «       j                  t        dt        j                  j                   j"                  rd«      «       y i «      «       y # 1 sw Y   Œ\xY w# 1 sw Y   Œ`xY w)Nrf   Tr™  rá   ©rf   z>SELECT some_table.id 
FROM some_table 
WHERE some_table.x = 10r`   )r?   r+   r   rU   r,   rI  rd   r   Úsql_execution_asserterr   rG   rH   r>   ÚdictÚassert_r   rê   Ú
positional©rK   r   r‘   ÚasserterrM   s        r5   Útest_executez"PostCompileParamsTest.test_executeó  sÖ   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¸Ô=Ñ=ó
ˆð ×(Ñ(Ô*¨hÜ—‘×"Ñ"Ô$¨Ø—‘˜T¤4¨"¤:Ô.÷ %÷ +ð 	×ÑÜð,ä—i‘i×'Ñ'×2Ò2�óõ	
ð 9;óõ	
÷ %Ð$ú÷ +Ð*ús$   Á7DÂDÂ3DÄD	ÄDÄD#c           	      ój  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        ddd¬«      «      «      }| j                  «       5 }t        j                  j                  «       5 }|j                  |t        g d¢¬«      «       d d d «       d d d «       j                  t!        dt        j                  j"                  j$                  rd«      «       y i «      «       y # 1 sw Y   Œ\xY w# 1 sw Y   Œ`xY w)Nrf   T©Ú	expandingrš  )r}   rª   r   r¢  zFSELECT some_table.id 
FROM some_table 
WHERE some_table.x IN (5, 6, 7)r`   )r?   r+   r   rU   r,   rI  rd   r
   r   r£  r   rG   rH   r>   r¤  r¥  r   rê   r¦  r§  s        r5   Ú+test_execute_expanding_plus_literal_executezAPostCompileParamsTest.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�óõ	
ð 9;óõ	
÷ %Ð$ú÷ +Ð*ús$   ÂD)Â#DÃD)ÄD&	Ä"D)Ä)D2c           	      óø  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        ddd¬«      «      «      }| j                  «       5 }t        j                  j                  «       5 }|j                  |t!        ddg¬«      «       d d d «       d d d «       j#                  t%        dt        j                  j&                  j(                  rdnd	z  t        j                  j&                  j*                  rd
«      «       y i «      «       y # 1 sw Y   Œ…xY w# 1 sw Y   Œ‰xY w)Nrf   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`   )r?   r+   r   rU   r,   rI  r"   rd   re   r
   r   r£  r   rG   rH   r>   r¤  r¥  r   rê   Útuple_in_valuesr¦  r§  s        r5   Ú1test_execute_tuple_expanding_plus_literal_executezGPostCompileParamsTest.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�óõ	
ð 9;óõ	
÷ %Ð$ú÷ +Ð*úó$   Â"E0ÃE$Ã E0Å$E-	Å)E0Å0E9c           	      óø  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        ddd¬«      «      «      }| j                  «       5 }t        j                  j                  «       5 }|j                  |t!        ddg¬«      «       d d d «       d d d «       j#                  t%        dt        j                  j&                  j(                  rdnd	z  t        j                  j&                  j*                  rd
«      «       y i «      «       y # 1 sw Y   Œ…xY w# 1 sw Y   Œ‰xY w)Nrf   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`   )r?   r+   r   rU   r,   rI  r"   rd   r�  r
   r   r£  r   rG   rH   r>   r¤  r¥  r   rê   r³  r¦  r§  s        r5   Ú?test_execute_tuple_expanding_plus_literal_heterogeneous_executezUPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_heterogeneous_execute1  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�óõ	
ð 9;óõ	
÷ %Ð$ú÷ +Ð*úrµ  N)rZ   r[   r\   r]   r¡   r^   r6   rC   rž  r   r©  r­  r   rR   Útuple_inr´  r·  r`   r7   r5   r‹  r‹  ¹  sˆ   „ ð €Kà+€Làñ
ó ð
ð ñ	
ó ð	
ò
ò
ò
ò&
ð& ×Ñ×Ññ
ó ð
ð. ×Ñ×Ññ
ó ñ
r7   r‹  c                   ó  — e Zd ZdZed„ «       Zed„ «       Zd#d„Zd„ Zd„ Z	e
j                  j                  d„ «       Ze
j                  j                  d„ «       Ze
j                  j                  d	„ «       Ze
j                  j                  d
„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze
j                  j.                  d„ «       Ze
j                  j.                  d„ «       Ze
j                  j.                  d„ «       Ze
j                  j.                  d„ «       Ze
j                  j.                  d„ «       Ze
j                  j.                  d„ «       Ze
j                  j.                  d„ «       Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d „ Z'd!„ Z(y")$ÚExpandingBoundInTestTc                 ó¢   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      t        dt        d«      «      «       y rŽ  r1   r2   s     r5   r6   z"ExpandingBoundInTest.define_tablesM  r�  r7   c                 óœ   — |j                  | j                  j                  j                  «       dddddœdddddœdddddœddd	d
dœg«       y r’  r=   rA   s     r5   rC   z ExpandingBoundInTest.insert_dataX  r—  r7   c                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrE   rF   r³   s        r5   rN   z#ExpandingBoundInTest._assert_resultd  rQ  rµ   c                 óÎ  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g g g dœ¬«       y )Nrf   rh   )rf   rh   rö   )r?   r+   r   rU   r,   rI  rd   r
   r   re   rT   rN   r�  s      r5   Ú"test_multiple_empty_sets_bindparamz7ExpandingBoundInTest.test_multiple_empty_sets_bindparamh  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Ñ-?ÐÕ@r7   c                 ó   — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g «       y rE   )r?   r+   r   rU   r,   rI  rd   r
   re   rT   rN   r�  s      r5   Útest_multiple_empty_sets_directz4ExpandingBoundInTest.test_multiple_empty_sets_directt  s‚   € ð —‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰X�e—g‘g—j‘jÓ!ð	 	ð 	×Ñ˜D "Õ%r7   c                 ó’  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g dg i¬«       y ©Nrf   rö   ©r?   r+   r   rU   r,   rI  r"   rd   r�  r
   r   rT   rN   r�  s      r5   Ú)test_empty_heterogeneous_tuples_bindparamz>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ÐÕ7r7   c                 ó~   ‡ ‡— ‰ j                   j                  Šˆ ˆfd„} |g g «        |g d¢g d¢«        |g g «       y )Nc                 óN  •— t        ‰j                  j                  «      j                  t	        ‰j                  j
                  ‰j                  j                  «      j                  | «      «      j                  ‰j                  j                  «      }‰j                  ||«       y rE   )
r   rU   r,   rI  r"   rd   r�  r
   rT   rN   ©ÚvalrÛ   r‘   rK   r   s      €€r5   ÚgozGExpandingBoundInTest.test_empty_heterogeneous_tuples_direct.<locals>.goŽ  óh   ø€ ä�u—w‘w—z‘zÓ"ß‘”v˜eŸg™gŸi™i¨¯©¯©Ó3×7Ñ7¸Ó<Ó=ß‘˜%Ÿ'™'Ÿ*™*Ó%ð ð
 ×Ñ  hÕ/r7   ©)r   r”  )r   r•  )rn   r–  ©rv   rw   r`  ©r?   r+   ©rK   rË  r   s   ` @r5   Ú&test_empty_heterogeneous_tuples_directz;ExpandingBoundInTest.test_empty_heterogeneous_tuples_directŠ  s7   ù€ à—‘×&Ñ&ˆõ	0ñ 	ˆ2ˆrŒ
Ù
Ò,Ò.@ÔAÙ
ˆ2ˆr�
r7   c                 ó’  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g dg i¬«       y rÃ  ©r?   r+   r   rU   r,   rI  r"   rd   re   r
   r   rT   rN   r�  s      r5   Ú'test_empty_homogeneous_tuples_bindparamz<ExpandingBoundInTest.test_empty_homogeneous_tuples_bindparamš  rÆ  r7   c                 ó~   ‡ ‡— ‰ j                   j                  Šˆ ˆfd„} |g g «        |g d¢g d¢«        |g g «       y )Nc                 óN  •— t        ‰j                  j                  «      j                  t	        ‰j                  j
                  ‰j                  j                  «      j                  | «      «      j                  ‰j                  j                  «      }‰j                  ||«       y rE   )
r   rU   r,   rI  r"   rd   re   r
   rT   rN   rÉ  s      €€r5   rË  zEExpandingBoundInTest.test_empty_homogeneous_tuples_direct.<locals>.go¨  rÌ  r7   ))r9   r   ©r   r   ©r   rn   rt   rÏ  rÐ  s   ` @r5   Ú$test_empty_homogeneous_tuples_directz9ExpandingBoundInTest.test_empty_homogeneous_tuples_direct¤  s7   ù€ à—‘×&Ñ&ˆõ	0ñ 	ˆ2ˆrŒ
Ù
Ò#Ò%7Ô8Ù
ˆ2ˆr�
r7   c                 ó^  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg d¢i¬«       y )Nrf   rÎ  ©r   r   rn   rö   ©r?   r+   r   rU   r,   rI  rd   r
   r   rT   rN   r�  s      r5   Útest_bound_in_scalar_bindparamz3ExpandingBoundInTest.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ÐÕNr7   c                 óD  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g d¢«      «      j                  |j                  j                  «      }| j                  |g d¢«       y )NrÛ  rÎ  ©
r?   r+   r   rU   r,   rI  rd   r
   rT   rN   r�  s      r5   Útest_bound_in_scalar_directz0ExpandingBoundInTest.test_bound_in_scalar_direct½  sf   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘=¢Ó+Ó,ß‰X�e—g‘g—j‘jÓ!ð 	ð
 	×Ñ˜DÒ"4Õ5r7   c                 ó¨  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  ddg«      «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |ddg«       y )Nr   r   rv   rw   ©r?   r+   r   rU   r,   rI  rd   r
   Únot_inrT   rN   r�  s      r5   Ú!test_nonempty_in_plus_empty_notinz6ExpandingBoundInTest.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¨ ,Õ/r7   c                 ó¤  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  j                  ddg«      «      j                  |j                  j                  «      }| j                  |g «       y )Nr   r   râ  r�  s      r5   Ú!test_empty_in_plus_notempty_notinz6ExpandingBoundInTest.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 "Õ%r7   c                 óŒ   — t        d«      j                  t        dt        d¬«      «      }| j	                  |g d¢dg d¢i¬«       y)	z†test 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 idrf   T©Útype_r¬  rÎ  ©r”  r•  r–  rö   N)r    Ú
bindparamsr   r   rN   ©rK   r‘   s     r5   Útest_typed_str_inz&ExpandingBoundInTest.test_typed_str_inÚ  sK   € ô ØAó
ç
‰*”Y˜s¬&¸DÔAÓ
Bð 	ð 	×ÑØÚØÒ+Ð,ð 	õ 	
r7   c                 ó‚   — t        d«      j                  t        dd¬«      «      }| j                  |g d¢dg d¢i¬«       y)	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....

        rè  rf   T©r¬  rÎ  rë  rö   N©r    rì  r   rN   rí  s     r5   Útest_untyped_str_inz(ExpandingBoundInTest.test_untyped_str_inë  sI   € ô ØAó
ç
‰*”Y˜s¨dÔ3Ó
4ð 	ð 	×ÑØÚØÒ+Ð,ð 	õ 	
r7   c                 óš  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg d¢i¬«       y )Nrf   rÎ  ©r×  rØ  )rn   r}   rö   rÓ  r�  s      r5   Ú!test_bound_in_two_tuple_bindparamz6ExpandingBoundInTest.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ð 	õ 	
r7   c                 ó€  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  g d¢«      «      j                  |j                  j                  «      }| j                  |g d¢«       y )Nrô  rÎ  )r?   r+   r   rU   r,   rI  r"   rd   re   r
   rT   rN   r�  s      r5   Útest_bound_in_two_tuple_directz3ExpandingBoundInTest.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Õ5r7   c                 óš  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg d¢i¬«       y )Nrf   rÎ  rÍ  rö   rÄ  r�  s      r5   Ú/test_bound_in_heterogeneous_two_tuple_bindparamzDExpandingBoundInTest.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Ó!ð 	ð
 	×ÑØÚØÒ:Ð;ð 	õ 	
r7   c                 ó€  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  g d¢«      «      j                  |j                  j                  «      }| j                  |g d¢«       y )NrÍ  rÎ  )r?   r+   r   rU   r,   rI  r"   rd   r�  r
   rT   rN   r�  s      r5   Ú,test_bound_in_heterogeneous_two_tuple_directzAExpandingBoundInTest.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Ó!ð 	ð 	×ÑØÚõ	
r7   c                 ó‚   — t        d«      j                  t        dd¬«      «      }| j                  |g d¢dg d¢i¬«       y )Nú8select id FROM some_table WHERE (x, z) IN :q ORDER BY idrf   Trð  rÎ  rÍ  rö   rñ  rí  s     r5   Ú4test_bound_in_heterogeneous_two_tuple_text_bindparamzIExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam2  sI   € ô ØFó
ç
‰*”Y˜s¨dÔ3Ó
4ð 	ð 	×ÑØÚØÒ:Ð;ð 	õ 	
r7   c                 ó  —  G d„ dt         j                  «      }t        d«      j                  t	        dt        t        «       t        «       «      d¬«      «      }| j                  |g d¢d |dd	«       |d
d«       |dd«      gi¬«       y )Nc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)úhExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuplec                 ó   — || _         y rE   ©Ú_data©rK   r/   s     r5   Ú__init__zqExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__init__B  ó	   € Ø!�•
r7   c                 ó,   — t        | j                  «      S rE   ©Úiterr  ©rK   s    r5   Ú__iter__zqExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__iter__E  ó   € Ü˜DŸJ™JÓ'Ð'r7   c                 ó    — | j                   |   S rE   r  ©rK   Úidxs     r5   Ú__getitem__ztExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__getitem__H  ó   € Ø—z‘z #‘Ð&r7   c                 ó,   — t        | j                  «      S rE   ©r¬   r  r  s    r5   Ú__len__zpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__len__K  ó   € Ü˜4Ÿ:™:“Ð&r7   N©rZ   r[   r\   r  r  r  r  r`   r7   r5   Ú
LikeATupler  A  ó   „ ò"ò(ò'ó'r7   r  rý  rf   Tré  rÎ  r   r”  r   r•  rn   r–  rö   )	Úcollections_abcÚSequencer    rì  r   r#   r   r   rN   ©rK   r  r‘   s      r5   Ú?test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuplezTExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple?  s�   € ô	'œ×1Ñ1ô 	'ô ØFó
ç
‰*ÜØœ9¤W£Y´³Ó9ÀTôó
ð 	ð 	×ÑØÚàÙ˜q $Ó'Ù˜q $Ó'Ù˜q $Ó'ððð 	õ 
	
r7   c                 óà   —  G d„ dt         j                  «      }t        d«      j                  t	        dd¬«      «      }| j                  |g d¢d |dd	«       |d
d«       |dd«      gi¬«       y )Nc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)úgExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuplec                 ó   — || _         y rE   r  r  s     r5   r  zpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__init__g  r  r7   c                 ó,   — t        | j                  «      S rE   r	  r  s    r5   r  zpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__iter__j  r  r7   c                 ó    — | j                   |   S rE   r  r  s     r5   r  zsExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__getitem__m  r  r7   c                 ó,   — t        | j                  «      S rE   r  r  s    r5   r  zoExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__len__p  r  r7   Nr  r`   r7   r5   r  r   f  r  r7   r  rý  rf   Trð  rÎ  r   r”  r   r•  rn   r–  rö   )r  r  r    rì  r   rN   r  s      r5   Ú>test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplezSExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplea  s}   € ô
	'œ×1Ñ1ô 	'ô ØFó
ç
‰*”Y˜s¨dÔ3Ó
4ð 	ð 	×ÑØÚàÙ˜q $Ó'Ù˜q $Ó'Ù˜q $Ó'ððð 	õ 
	
r7   c                 óV  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g dg i¬«       y rÃ  rÜ  r�  s      r5   Ú(test_empty_set_against_integer_bindparamz=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ÐÕ7r7   c                 ó<  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g «       y rE   rß  r�  s      r5   Ú%test_empty_set_against_integer_directz:ExpandingBoundInTest.test_empty_set_against_integer_direct‹  ób   € Ø—‘×&Ñ&ˆÜ�e—g‘g—j‘jÓ!×'Ñ'¨¯©¯	©	¯©°bÓ(9Ó:×CÑCÀEÇGÁGÇJÁJÓOˆØ×Ñ˜D "Õ%r7   c                 óZ  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg i¬«       y ©Nrf   ©ru   rv   rw   r`  rö   )r?   r+   r   rU   r,   rI  rd   rã  r   rT   rN   r�  s      r5   Ú1test_empty_set_against_integer_negation_bindparamzFExpandingBoundInTest.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ÐÕMr7   c                 ó@  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g d¢«       y ©Nr.  )
r?   r+   r   rU   r,   rI  rd   rã  rT   rN   r�  s      r5   Ú.test_empty_set_against_integer_negation_directzCExpandingBoundInTest.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Ò":Õ;r7   c                 óV  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g dg i¬«       y rÃ  )r?   r+   r   rU   r,   rI  r�  r
   r   rT   rN   r�  s      r5   Ú'test_empty_set_against_string_bindparamz<ExpandingBoundInTest.test_empty_set_against_string_bindparam   r(  r7   c                 ó<  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g «       y rE   )
r?   r+   r   rU   r,   rI  r�  r
   rT   rN   r�  s      r5   Ú$test_empty_set_against_string_directz9ExpandingBoundInTest.test_empty_set_against_string_direct©  r+  r7   c                 óZ  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg i¬«       y r-  )r?   r+   r   rU   r,   rI  r�  rã  r   rT   rN   r�  s      r5   Ú0test_empty_set_against_string_negation_bindparamzEExpandingBoundInTest.test_empty_set_against_string_negation_bindparam®  r0  r7   c                 ó@  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g d¢«       y r2  )
r?   r+   r   rU   r,   rI  r�  rã  rT   rN   r�  s      r5   Ú-test_empty_set_against_string_negation_directzBExpandingBoundInTest.test_empty_set_against_string_negation_direct·  r4  r7   c           
      óð   — t        t        t        «       j                  t	        dd¬«      «      t        «       ft        «       ¬«      «      }t        |j                  |«      j                  «       d   d«       y )NÚfoor`   )Úvalue©Úelse_r   ©Fr   )	r   r   r   r
   r   r!   r   r>   Úfetchone©rK   rB   r‘   s      r5   Ú)test_null_in_empty_set_is_false_bindparamz>ExpandingBoundInTest.test_null_in_empty_set_is_false_bindparam¾  s_   € ÜÜä“F—J‘Jœy¨°bÔ9Ó:Ü“Fðô “gôó
ˆô 	ˆJ×Ñ˜tÓ$×-Ñ-Ó/°Ñ2°JÕ?r7   c                 óÚ   — t        t        t        «       j                  g «      t	        «       ft        «       ¬«      «      }t        |j                  |«      j                  «       d   d«       y )Nr@  r   rB  )r   r   r   r
   r!   r   r>   rC  rD  s      r5   Ú&test_null_in_empty_set_is_false_directz;ExpandingBoundInTest.test_null_in_empty_set_is_false_directÊ  sW   € ÜÜä“F—J‘J˜r“NÜ“Fðô “gôó
ˆô 	ˆJ×Ñ˜tÓ$×-Ñ-Ó/°Ñ2°JÕ?r7   Nr+  ))rZ   r[   r\   r]   r^   r6   rC   rN   r¿  rÁ  r   rR   Útuple_in_w_emptyrÅ  rÑ  rÔ  rÙ  rÝ  rà  rä  ræ  rî  rò  r¸  rõ  r÷  rù  rû  rþ  r  r%  r'  r*  r/  r3  r6  r8  r:  r<  rE  rG  r`   r7   r5   rº  rº  J  sõ  „ Ø€Kàñ
ó ð
ð ñ	
ó ð	
óAò
Aò
&ð ×Ñ×&Ñ&ñ8ó 'ð8ð ×Ñ×&Ñ&ñó 'ðð ×Ñ×&Ñ&ñ8ó 'ð8ð ×Ñ×&Ñ&ñó 'ðòOò6ò0ò&ò
ò"
ð$ ×Ñ×Ññ	
ó ð	
ð ×Ñ×Ññ6ó ð6ð ×Ñ×Ññ
ó ð
ð ×Ñ×Ññ
ó ð
ð  ×Ñ×Ññ

ó ð

ð ×Ñ×Ññ
ó ð
ðB ×Ñ×Ññ
ó ð
ò@8ò&ò
Nò<ò8ò&ò
Nò<ò
@ó
@r7   rº  c                   óØ  — e Zd ZdZdZdZed„ «       Zed„ «       Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej2                  j4                  d„ «       Zej2                  j8                  d„ «       Zej2                  j4                   ej<                  dh d£fdh d£fdh d£fddhfd e e dd «      «      fd! e e dd «      «      fd" e«       f«      d#„ «       «       Z!y)$ÚLikeFunctionsTestTÚonceNc                 óf   — t        d|t        dt        d¬«      t        dt        d«      «      «       y )Nr+   r,   Tr-   r/   rg   r1   r2   s     r5   r6   zLikeFunctionsTest.define_tablesÝ  s*   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&õ		
r7   c                 óÄ   — |j                  | j                  j                  j                  «       dddœdddœdddœdd	dœd
ddœdddœdddœdddœdddœdddœdd dœg«       y )Nr9   Úabcdefgr;   r   zab/cdefgr   zab%cdefgrn   Úab_cdefgr}   zabcde/fgrª   zabcde%fgr   zab#cdefgé   Úab9cdefgé	   zabcde#fgrá   Úabcd9fgé   r=   rA   s     r5   rC   zLikeFunctionsTest.insert_dataæ  sƒ   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à )Ñ,Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø 9Ñ-Ø 4Ñ(ðõ	
r7   c                 óP  — | j                   j                  }t        j                  j	                  «       5 }|j                  t        |j                  j                  «      j                  |«      «      D �ch c]  \  }|’Œ }}d d d «       t        |«       y c c}w # 1 sw Y   ŒxY wrE   )r?   r+   r   rG   rH   r>   r   rU   r,   rI  r	   )rK   r�   rÛ   r+   rM   r?  Úrowss          r5   Ú_testz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                 óž   — | j                   j                  j                  j                  }| j	                  |j                  d«      h d£«       y )Núab%c¾
   r9   r   r   rn   r}   rª   r   rP  rR  rá   ©r?   r+   rU   r/   rW  Ú
startswith©rK   Úcols     r5   Útest_startswith_unescapedz+LikeFunctionsTest.test_startswith_unescaped  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &Ó)Ò+JÕKr7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )NrY  T©Ú
autoescaper   r[  r]  s     r5   Útest_startswith_autoescapez,LikeFunctionsTest.test_startswith_autoescape  s:   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &°T�>Ó:¸Q¸CÕ@r7   c                 ó°   — | j                   j                  j                  j                  }| j	                  |j                  t        d«      «      h d£«       y )Nz'ab%c'rZ  )r?   r+   rU   r/   rW  r\  r   r]  s     r5   Útest_startswith_sqlexprz)LikeFunctionsTest.test_startswith_sqlexpr  s=   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø�N‰Nœ>¨(Ó3Ó4Ú+õ	
r7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nzab##cÚ#©Úescaper   r[  r]  s     r5   Útest_startswith_escapez(LikeFunctionsTest.test_startswith_escape  s:   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> '°#�>Ó6¸¸Õ<r7   c                 óì   — | j                   j                  j                  j                  }| j	                  |j                  ddd¬«      dh«       | j	                  |j                  ddd¬«      dh«       y )NrY  Trg  ©rb  ri  r   zab#cr   r[  r]  s     r5   Ú!test_startswith_autoescape_escapez3LikeFunctionsTest.test_startswith_autoescape_escape  s[   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &°TÀ#�>ÓFÈÈÔLØ�
‰
�3—>‘> &°TÀ#�>ÓFÈÈÕLr7   c                 óž   — | j                   j                  j                  j                  }| j	                  |j                  d«      h d£«       y )Núe%fg¾	   r9   r   r   rn   r}   rª   r   rP  rR  ©r?   r+   rU   r/   rW  Úendswithr]  s     r5   Útest_endswith_unescapedz)LikeFunctionsTest.test_endswith_unescaped  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< Ó'Ò)DÕEr7   c                 ó°   — | j                   j                  j                  j                  }| j	                  |j                  t        d«      «      h d£«       y )Nz'e%fg'rp  )r?   r+   rU   r/   rW  rr  r   r]  s     r5   Útest_endswith_sqlexprz'LikeFunctionsTest.test_endswith_sqlexpr   s=   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø�L‰Lœ¨Ó1Ó2Ò4Oõ	
r7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nro  Tra  rª   rq  r]  s     r5   Útest_endswith_autoescapez*LikeFunctionsTest.test_endswith_autoescape&  s:   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °4�<Ó8¸1¸#Õ>r7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nze##fgrg  rh  rR  rq  r]  s     r5   Útest_endswith_escapez&LikeFunctionsTest.test_endswith_escape*  s:   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °�<Ó4°q°cÕ:r7   c                 óì   — | j                   j                  j                  j                  }| j	                  |j                  ddd¬«      dh«       | j	                  |j                  ddd¬«      dh«       y )Nro  Trg  rl  rª   ze#fgrR  rq  r]  s     r5   Útest_endswith_autoescape_escapez1LikeFunctionsTest.test_endswith_autoescape_escape.  ó[   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °4À�<ÓDÀqÀcÔJØ�
‰
�3—<‘< °4À�<ÓDÀqÀcÕJr7   c                 óž   — | j                   j                  j                  j                  }| j	                  |j                  d«      h d£«       y )Núb%cderp  ©r?   r+   rU   r/   rW  Úcontainsr]  s     r5   Útest_contains_unescapedz)LikeFunctionsTest.test_contains_unescaped3  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< Ó(Ò*EÕFr7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nr~  Tra  r   r  r]  s     r5   Útest_contains_autoescapez*LikeFunctionsTest.test_contains_autoescape7  s:   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °D�<Ó9¸A¸3Õ?r7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nzb##cderg  rh  r   r  r]  s     r5   Útest_contains_escapez&LikeFunctionsTest.test_contains_escape;  s:   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °�<Ó5¸°sÕ;r7   c                 óì   — | j                   j                  j                  j                  }| j	                  |j                  ddd¬«      dh«       | j	                  |j                  ddd¬«      dh«       y )Nzb%cdTrg  rl  r   zb#cdr   r  r]  s     r5   Útest_contains_autoescape_escapez1LikeFunctionsTest.test_contains_autoescape_escape?  r|  r7   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  d«       h d£«       y )Núa.cde>   r   r   rn   r   rP  rá   ©r?   r+   rU   r/   rW  Úregexp_matchr]  s     r5   Útest_not_regexp_matchz'LikeFunctionsTest.test_not_regexp_matchD  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�C×$Ñ$ WÓ-Ð-Ò/BÕCr7   c                 ó¾   — | j                   j                  j                  j                  }| j	                  |j                  dd«      j                  d«      h d£«       y )Nr‰  ÚFOO¾   r9   r}   rª   rR  )r?   r+   rU   r/   rW  Úregexp_replacer€  r]  s     r5   Útest_regexp_replacez%LikeFunctionsTest.test_regexp_replaceI  sF   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø×Ñ˜w¨Ó.×7Ñ7¸Ó>Âõ	
r7   r‰  r�  Úabc>   r9   r}   rª   rR  rá   z^abcÚ9cderP  z^ar9   rT  z(b|c)z^(b|c)c                 óš   — | j                   j                  j                  j                  }| j	                  |j                  |«      |«       y rE   rŠ  )rK   r    rÛ   r^  s       r5   Útest_regexp_matchz#LikeFunctionsTest.test_regexp_matchP  s8   € ð �k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3×#Ñ# DÓ)¨8Õ4r7   )"rZ   r[   r\   r]   Úrun_insertsÚrun_deletesr^   r6   rC   rW  r_  rc  re  rj  rm  rs  ru  rw  ry  r{  r�  rƒ  r…  r‡  r   rR   r‹  rŒ  r�  r‘  r-  r­   Úranger•  r`   r7   r5   rJ  rJ  ×  sT  „ Ø€Kà€KØ€Kàñ
ó ð
ð ñ
ó ð
ò$	òLòAò
ò=òMò
Fò
ò?ò;òKò
Gò@ò<òKð
 ×Ñ×"Ñ"ñDó #ðDð ×Ñ×$Ñ$ñ
ó %ð
ð ×Ñ×"Ñ"Ø€W×ÑØ	’,ÐØ	Ò Ð!Ø	Ò!Ð"Ø	�!�ˆØ	‰s‘5˜˜B“<Ó Ð!Ø	‘#‘e˜A˜r“lÓ#Ð$Ø	‘3“5Ðóñ5óó #ñ5r7   rJ  c                   ó@   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Zd„ Z	y)ÚComputedColumnTestT)Úcomputed_columnsc                 óÀ   — t        d|t        dt        d¬«      t        dt        «      t        dt        t        d«      «      t        dt        t        d	«      «      «       y )
NÚsquarer,   Tr-   ÚsideÚareazside * sideÚ	perimeterz4 * side)r   r   r   r   r2   s     r5   r6   z ComputedColumnTest.define_tablesc  sH   € äØØÜ�4œ¨dÔ3Ü�6œ7Ó#Ü�6œ7¤H¨]Ó$;Ó<Ü�;¤¬°*Ó)=Ó>õ	
r7   c                 ó|   — |j                  | j                  j                  j                  «       dddœdddœg«       y )Nr9   rá   )r,   rž  é*   )r>   r?   r�  r@   rA   s     r5   rC   zComputedColumnTest.insert_datan  s8   € à×ÑØ�J‰J×Ñ×$Ñ$Ó&Ø˜rÑ"¨2°rÑ$:Ð;õ	
r7   c                 óœ  — t         j                  j                  «       5 }|j                  t	        t        d«      «      j                  | j                  j                  «      j                  | j                  j                  j                  j                  «      «      j                  «       }t        |ddg«       d d d «       y # 1 sw Y   y xY w)NÚ*)r9   rá   r0   r$  )rá   r¢  éä  é¨   )r   rG   rH   r>   r   r    rZ  r?   r�  rT   rU   r,   rI   r	   ©rK   rM   Úress      r5   Útest_select_allz"ComputedColumnTest.test_select_allu  s�   € Ü�Y‰Y×ÑÔ  DØ—,‘,Ü”t˜C“yÓ!ß‘˜TŸ[™[×/Ñ/Ó0ß‘˜$Ÿ+™+×,Ñ,×.Ñ.×1Ñ1Ó2ó÷ ‰h‹jð	 ô
 �Ð&Ð(;Ð<Ô=÷ !× Ñ ús   ŸBCÃCc                 ó,  — t         j                  j                  «       5 }|j                  t	        | j
                  j                  j                  j                  | j
                  j                  j                  j                  «      j                  | j
                  j                  «      j                  | j
                  j                  j                  j                  «      «      j                  «       }t        |ddg«       d d d «       y # 1 sw Y   y xY w)N)r0   r$  )r¥  r¦  )r   rG   rH   r>   r   r?   r�  rU   rŸ  r   rZ  rT   r,   rI   r	   r§  s      r5   Útest_select_columnsz&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N)
rZ   r[   r\   r]   r¡   r^   r6   rC   r©  r«  r`   r7   r5   rš  rš  _  s<   „ Ø€KØ(€Làñ
ó ð
ð ñ
ó ð
ò>ó	/r7   rš  c                   ó€   — e Zd ZdZdZdZdZed„ «       Zed„ «       Z	d„ Z
d„ Zej                  j                  d„ «       Zy	)
ÚIdentityColumnTestT)Úidentity_columnsrK  c                 ó   — t        d|t        dt        t        dddd¬«      d¬«      t        dt	        d«      «      «       t        d	|t        dt        t        d
ddd¬«      d¬«      t        dt	        d«      «      «       y )NÚtbl_ar,   Tr¢  )ÚalwaysÚstartÚ
nominvalueÚ
nomaxvaluer-   r‡   r0   Útbl_béûÿÿÿr   iüÿÿ)Ú	incrementr²  ÚminvalueÚmaxvalue©r   r   r   r   r   r2   s     r5   r6   z IdentityColumnTest.define_tables�  sƒ   € äØØÜØÜÜØ r°dÀtôð !ôô �6œ6 #›;Ó'ô	
ô 	ØØÜØÜÜ 2¨Q¸ÈÔKØ ô	ô �6œ6 #›;Ó'õ
	
r7   c                 ó\  — |j                  | j                  j                  j                  «       ddiddig«       |j                  | j                  j                  j                  «       ddiddig«       |j                  | j                  j                  j                  «       dddœg«       y )Nr‡   rS  rT  r¢  rU   ©r,   r‡   )r>   r?   r°  r@   rµ  rA   s     r5   rC   zIdentityColumnTest.insert_data«  s�   € à×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø�cˆ]˜V S˜MÐ*ô	
ð 	×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø�cˆ]˜V S˜MÐ*ô	
ð 	×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø Ñ$Ð%õ	
r7   c                 óh  — |j                  t        t        d«      «      j                  | j                  j
                  «      j                  | j                  j
                  j                  j                  «      «      j                  «       }t        |ddg«       |j                  t        t        d«      «      j                  | j                  j                  «      j                  | j                  j                  j                  j                  «      «      j                  «       }t        |g d¢«       y )Nr¤  )r¢  rS  )é+   rT  ))r¶  rT  )r   rS  )r¢  rU   )r>   r   r    rZ  r?   r°  rT   rU   r,   rI   r	   rµ  ©rK   rB   r¨  s      r5   r©  z"IdentityColumnTest.test_select_allº  sØ   € Ø× Ñ Ü”4˜“9Óß‰[˜Ÿ™×*Ñ*Ó+ß‰X�d—k‘k×'Ñ'×)Ñ)×,Ñ,Ó-ó
÷ ‰(‹*ð	 	ô
 	ˆC�)˜YÐ'Ô(à× Ñ Ü”4˜“9Óß‰[˜Ÿ™×*Ñ*Ó+ß‰X�d—k‘k×'Ñ'×)Ñ)×,Ñ,Ó-ó
÷ ‰(‹*ð	 	ô
 	ˆCÒ1Õ2r7   c                 ó.  — |j                  t        | j                  j                  j                  j
                  «      j                  | j                  j                  j                  j
                  «      «      j                  «       }t        |ddg«       y )N)r¢  )r¾  )	r>   r   r?   r°  rU   r,   rT   rI   r	   r¿  s      r5   r«  z&IdentityColumnTest.test_select_columnsÉ  sk   € Ø× Ñ Ü�4—;‘;×$Ñ$×&Ñ&×)Ñ)Ó*×3Ñ3°D·K±K×4EÑ4E×4GÑ4G×4JÑ4JÓKó
ç
‰(‹*ð 	ô 	ˆC�%˜�Õ r7   c                 ó@   ‡ ‡— ˆˆ fd„}t        t        t        f|«       y )Nc                  óv   •— ‰ j                  ‰j                  j                  j                  «       dddœg«       y )NéÈ   rS  r¼  )r>   r?   r°  r@   )rB   rK   s   €€r5   Úfnz7IdentityColumnTest.test_insert_always_error.<locals>.fnÑ  s2   ø€ Ø×ÑØ—‘×!Ñ!×(Ñ(Ó*Ø SÑ)Ð*õr7   )r   r&   r'   )rK   rB   rÄ  s   `` r5   Útest_insert_always_errorz+IdentityColumnTest.test_insert_always_errorÏ  s   ù€ õ	ô 	”}Ô&6Ð7¸Õ<r7   N)rZ   r[   r\   r]   r¡   r–  r—  r^   r6   rC   r©  r«  r   rR   Úidentity_columns_standardrÅ  r`   r7   r5   r­  r­  Š  sf   „ Ø€KØ(€LØ€KØ€Kàñ
ó ð
ð4 ñ
ó ð
ò3ò!ð ×Ñ×/Ñ/ñ=ó 0ñ=r7   r­  c                   ó*   — e Zd ZdZdZed„ «       Zd„ Zy)ÚIdentityAutoincrementTestT)Úautoincrement_without_sequencec                 óz   — t        d|t        dt        t        «       dd¬«      t        dt	        d«      «      «       y )NÚtblr,   T)r.   Úautoincrementr‡   r0   rº  r2   s     r5   r6   z'IdentityAutoincrementTest.define_tablesÞ  s9   € äØØÜØÜÜ“
Ø Ø"ôô �6œ6 #›;Ó'õ	
r7   c                 ó
  — |j                  | j                  j                  j                  «       ddi«      }|j                  | j                  j                  j	                  «       «      j                  «       }t        |d«       y )Nr‡   Úrow)r9   rÎ  )r>   r?   rË  r@   r   rD  r	   r¿  s      r5   Ú test_autoincrement_with_identityz:IdentityAutoincrementTest.test_autoincrement_with_identityí  s]   € Ø× Ñ  §¡§¡×!7Ñ!7Ó!9¸FÀE¸?ÓKˆØ× Ñ  §¡§¡×!7Ñ!7Ó!9Ó:×@Ñ@ÓBˆÜˆC�Õr7   N)rZ   r[   r\   r]   r¡   r^   r6   rÏ  r`   r7   r5   rÈ  rÈ  Ú  s#   „ Ø€KØ6€Làñ
ó ð
ór7   rÈ  c                   ó<   — e Zd ZdZed„ «       Zed„ «       Zd„ Zd„ Zy)Ú
ExistsTestTc                 óf   — t        d|t        dt        d¬«      t        dt        d«      «      «       y )NÚstuffr,   Tr-   r/   rg   r1   r2   s     r5   r6   zExistsTest.define_tablesö  s*   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&õ		
r7   c           	      óŒ   — |j                  | j                  j                  j                  «       dddœdddœdddœdddœg«       y )Nr9   ú	some datar;   r   r   rn   zsome other data)r>   r?   rÓ  r@   rA   s     r5   rC   zExistsTest.insert_dataÿ  sL   € à×ÑØ�J‰J×Ñ×#Ñ#Ó%à +Ñ.Ø +Ñ.Ø +Ñ.ØÐ"3Ñ4ð	õ	
r7   c           
      ó"  — | j                   j                  }t        |j                  t	        t        d«      «      j                  t        «       j                  |j                  j                  dk(  «      «      «      j                  «       dg«       y )Nr9   rÕ  ru   ©r?   rÓ  r	   r>   r   r   rI  r   rU   r/   rI   ©rK   rB   rÓ  s      r5   Útest_select_existszExistsTest.test_select_exists  sg   € Ø—‘×!Ñ!ˆÜØ×ÑÜ”w˜q“zÓ"×(Ñ(Ü“H—N‘N 5§7¡7§<¡<°;Ñ#>Ó?óó÷ ‰h‹jØˆFõ	
r7   c           
      ó   — | j                   j                  }t        |j                  t	        t        d«      «      j                  t        «       j                  |j                  j                  dk(  «      «      «      j                  «       g «       y )Nr9   zno datar×  rØ  s      r5   Útest_select_exists_falsez#ExistsTest.test_select_exists_false  se   € Ø—‘×!Ñ!ˆÜØ×ÑÜ”w˜q“zÓ"×(Ñ(Ü“H—N‘N 5§7¡7§<¡<°9Ñ#<Ó=óó÷ ‰h‹jØõ	
r7   N)	rZ   r[   r\   r]   r^   r6   rC   rÙ  rÛ  r`   r7   r5   rÑ  rÑ  ó  s7   „ Ø€Kàñ
ó ð
ð ñ	
ó ð	
ò	
ó	
r7   rÑ  c                   óh   — e Zd ZdZ ej
                  ej                  j                  «      d„ «       Zy)ÚDistinctOnTestTc                 óò   — t        d«      j                  t        d«      «      j                  t	        d«      «      }t        j                  d«      5  | j                  |d«       d d d «       y # 1 sw Y   y xY w)Nr¤  rf   r>  z:DISTINCT ON is currently supported only by the PostgreSQL zSELECT DISTINCT * FROM foo)r   r�  r   rZ  r   r   Úexpect_deprecatedrœ  )rK   Ústms     r5   Útest_distinct_onzDistinctOnTest.test_distinct_on%  s]   € ä�S‹k×"Ñ"¤6¨#£;Ó/×;Ñ;¼EÀ%»LÓIˆÜ×&Ñ&ØHõ
ð ×Ñ Ð%AÔB÷
÷ 
ñ 
ús   ÁA-Á-A6N)	rZ   r[   r\   r]   r   Úfails_ifrR   Úsupports_distinct_onrá  r`   r7   r5   rÝ  rÝ  "  s4   „ Ø€Kà€W×Ñ�g×&Ñ&×;Ñ;Ó<ñCó =ñCr7   rÝ  c            	       ób   — e Zd ZdZdZed„ «       Z ej                  dddddd	d
¬«      d„ «       Z	y)ÚIsOrIsNotDistinctFromTestT)Úsupports_is_distinct_fromc                 ó‚   — t        d|t        dt        d¬«      t        dt        d¬«      t        dt        d¬«      «       y )NÚis_distinct_testr,   Tr-   Úcol_ar;  Úcol_br¦   r2   s     r5   r6   z'IsOrIsNotDistinctFromTest.define_tables2  s4   € äØØÜ�4œ¨dÔ3Ü�7œG¨dÔ3Ü�7œG¨dÔ3õ	
r7   )Úboth_int_differentr   r9   r9   )Úboth_int_samer9   r9   r   )Úone_null_firstNr9   r9   )Úone_null_secondr   Nr9   )Ú	both_nullNNr   Úiaaaz3col_a_value, col_b_value, expected_row_count_for_is)Úid_rÕ   c                 ó¬  — | j                   j                  }|j                  |j                  «       d||dœg«       |j                  |j	                  «       j                  |j                  j                  j                  |j                  j                  «      «      «      j                  «       }t        t        |«      |«       |dk(  rdnd}|j                  |j	                  «       j                  |j                  j                  j                  |j                  j                  «      «      «      j                  «       }t        t        |«      |«       y )Nr9   )r,   ré  rê  r   )r?   rè  r>   r@   r   rI  rU   ré  Úis_distinct_fromrê  rI   r	   r¬   Úis_not_distinct_from)rK   Úcol_a_valueÚcol_b_valueÚexpected_row_count_for_isrB   rË  rL   Úexpected_row_count_for_is_nots           r5   Útest_is_or_is_not_distinct_fromz9IsOrIsNotDistinctFromTest.test_is_or_is_not_distinct_from<  s  € ð �k‰k×*Ñ*ˆà×ÑØ�J‰J‹LØ °kÑ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Ø)õ	
r7   N)
rZ   r[   r\   r]   r¡   r^   r6   r   r-  rù  r`   r7   r5   rå  rå  .  sT   „ Ø€KØ1€Làñ
ó ð
ð €W×ÑØ'Ø"Ø&Ø'Ø$ØØFôñ
óñ
r7   rå  c                   ó@   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Zd„ Z	y)ÚWindowFunctionTest)Úwindow_functionsTc           
      óz   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      «       y )Nr+   r,   Tr-   Úcol1Úcol2r¦   r2   s     r5   r6   z WindowFunctionTest.define_tablesh  s0   € äØØÜ�4œ¨dÔ3Ü�6œ7Ó#Ü�6œ7Ó#õ	
r7   c           
      ó´   — |j                  | j                  j                  j                  «       t	        dd«      D �cg c]  }|||dz  dœ‘Œ c}«       y c c}w )Nr9   rg   r}   )r,   rþ  rÿ  )r>   r?   r+   r@   r˜  )r3   rB   Úis      r5   rC   zWindowFunctionTest.insert_datar  sL   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*Ü:?ÀÀ2¼,ÓG¹,°Q�A˜q¨!¨a©%Ó0¸,ÑGõ	
ùâGs   ½A
c                 óÐ  — | j                   j                  }|j                  t        t	        j
                  |j                  j                  «      j                  |j                  j                  j                  «       g¬«      «      j                  |j                  j                  dk  «      «      j                  «       }t        |t        d«      D �cg c]  }d‘Œ c}«       y c c}w )N)rT   r  é   )é_   )r?   r+   r>   r   r   ÚmaxrU   rÿ  Úoverrþ  r‡   rI  rž   r	   r˜  ©rK   rB   r+   rV  r  s        r5   Útest_windowzWindowFunctionTest.test_windowy  s±   € Ø—[‘[×+Ñ+ˆ
Ø×!Ñ!ÜÜ—‘˜Ÿ™×*Ñ*Ó+×0Ñ0Ø(Ÿl™l×/Ñ/×4Ñ4Ó6Ð7ð 1ó ó÷ ‰e�J—L‘L×%Ñ%¨Ñ*Ó+ó
÷ ‰#‹%ð 	ô 	ˆD¤%¨¤)Ó,¡)˜Q’5 )Ñ,Õ-ùÒ,s   Ã	C#
c                 óp  — | j                   j                  }|j                  t        t	        j
                  |j                  j                  «      j                  |j                  j                  gd¬«      «      «      j                  «       }t        |t        ddd«      D �cg c]  }|f‘Œ c}«       y c c}w )N)r¶  r   )rT   rV  r}   éú   )r?   r+   r>   r   r   r  rU   rÿ  r  rþ  rž   r	   r˜  r  s        r5   Útest_window_rows_betweenz+WindowFunctionTest.test_window_rows_between…  s›   € Ø—[‘[×+Ñ+ˆ
ð ×!Ñ!ÜÜ—‘˜Ÿ™×*Ñ*Ó+×0Ñ0Ø(Ÿl™l×/Ñ/Ð0Ø ð 1ó óó
÷ ‰#‹%ð 	ô 	ˆD¤ q¨#¨qÔ!1Ó2Ñ!1˜A�A’4Ð!1Ñ2Õ3ùÒ2s   Â!
B3
N)
rZ   r[   r\   r¡   r]   r^   r6   rC   r  r  r`   r7   r5   rû  rû  c  s<   „ Ø(€Là€Kàñ
ó ð
ð ñ
ó ð
ò
.ó4r7   rû  c                   óŠ  — e Zd ZdZdxZZ ed«      D � �cg c]
  }||dz   dœ‘Œ c}} Zed„ «       Z	ed„ «       Z
 ej                  d„  ed«      D � �cg c]
  }|d	k7  sŒ	|‘Œ c}} ej                  j                  fd
„  e ed«      «      ej                  j                   fd„  e edd«      «      ej                  j"                  fd„ dgej                  j$                  fd„  e edd«      «      ej                  j&                  fd„  e edd«      «      ej                  j&                  fd¬«      d„ «       Zyc c}} w c c}} w )ÚBitwiseTestTrK  rá   r9   )rS  rT  c           	      óX   — t        d|t        dt        «      t        dt        «      «       y )NÚbitwiserS  rT  r¦   r2   s     r5   r6   zBitwiseTest.define_tablesœ  s   € äˆi˜¤6¨#¬wÓ#7¼ÀÄWÓ9MÕNr7   c                 ó€   — |j                  | j                  j                  j                  «       | j                  «       y rE   )r>   r?   r  r@   Úinserted_datarA   s     r5   rC   zBitwiseTest.insert_data   s+   € à×Ñ˜3Ÿ:™:×-Ñ-×4Ñ4Ó6¸×8IÑ8IÕJr7   c                 ó$   — | j                  d«      S )Nr}   )Úbitwise_xor©rS  s    r5   Ú<lambda>zBitwiseTest.<lambda>¦  ó   € �a—m‘m AÔ&r7   r}   c                 ó$   — | j                  d«      S ©Nr9   )Ú
bitwise_orr  s    r5   r  zBitwiseTest.<lambda>«  s   € �a—l‘l 1”or7   c                 ó$   — | j                  d«      S )Nrn   )Úbitwise_andr  s    r5   r  zBitwiseTest.<lambda>°  r  r7   rn   rP  c                 ó(   — | dz
  j                  «       S ©Nr   )Úbitwise_notr  s    r5   r  zBitwiseTest.<lambda>µ  s   € �q˜1‘u×)Ñ)Ô+r7   r   c                 ó$   — | j                  d«      S r  )Úbitwise_lshiftr  s    r5   r  zBitwiseTest.<lambda>º  ó   € �a×&Ñ& qÔ)r7   c                 ó$   — | j                  d«      S r  )Úbitwise_rshiftr  s    r5   r  zBitwiseTest.<lambda>¿  r!  r7   zcase, expectedrÔ   c                 ó”  — | j                   j                  }|j                  j                  }t	        j
                  ||¬«      }t        |«      j                  |dkD  «      j                  |«      }|j                  |«      j                  «       j                  «       }t        ||D �	cg c]  }	| j                  |	   ‘Œ c}	«       y c c}	w )Nr  r   )r?   r  rU   rS  r   Úresolve_lambdar   rI  rT   r>   Úmappingsrž   r	   r  )
rK   r   rÛ   rB   rË  rS  Úopr‘   r¨  r  s
             r5   Útest_bitwisezBitwiseTest.test_bitwise¤  sŸ   € ðD �k‰k×!Ñ!ˆà�E‰E�G‰Gˆä×#Ñ# D¨AÔ.ˆä�c‹{× Ñ   a¡Ó(×1Ñ1°!Ó4ˆà× Ñ  Ó&×/Ñ/Ó1×5Ñ5Ó7ˆÜˆC±Ó:±¨A�$×$Ñ$ QÓ'°Ñ:Õ;ùÒ:s   Â'C
N)rZ   r[   r\   r]   r–  r—  r˜  r  r^   r6   rC   r   r-  rR   Úsupports_bitwise_xorÚlistÚsupports_bitwise_orÚsupports_bitwise_andÚsupports_bitwise_notÚsupports_bitwise_shiftr(  )Ú.0r  s   00r5   r  r  –  sz  „ Ø€KØ &Ð&€K�+á38¸´9Ô=±9¨a˜1 1 q¡5Ó)°9Ò=€MàñOó ðOð ñKó ðKð €W×Ñá&Ù˜bœ	Ô,™	�1 Q¨!£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   –D9Á
D?ÁD?r  )@Úcollections.abcr’  r  ra  r²  r   r   r   r   Ú
assertionsr   r	   r
   Ú	assertsqlr   r9  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)   rb   ÚTestBaser–   r£   r6  rO  rl  r‹  rº  rJ  rš  r­  rÈ  rÑ  rÝ  rå  rû  r  r`   r7   r5   Ú<module>r6     sé  ðõ *Û å !Ý &Ý Ý Ý &Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý #ô#
�(×%Ñ%ô #
ôLJ<�x×*Ñ*ô J<ôZ
˜8×,Ñ,ô 
ô D8˜8×.Ñ.ô D8ôN`
˜x×2Ñ2ô `
ôFaPˆx×"Ñ"ô aPôHt
˜×,Ñ,ô t
ônN
ØÐ/°×1DÑ1DôN
ôbJ@˜8×.Ñ.ô J@ôZE5˜×+Ñ+ô E5ôP(/˜×,Ñ,ô (/ôVM=˜×,Ñ,ô M=ô` × 3Ñ 3ô ô2,
�×$Ñ$ô ,
ô^	CÐ'¨×)<Ñ)<ô 	Cô2
 × 3Ñ 3ô 2
ôj04˜×,Ñ,ô 04ôf9<�(×%Ñ%õ 9<r7   