Ë
    r™ãj ã                   óþ  — d dl mZ d dlmZ 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- dd)lm.Z. dd*lm/Z/ dd+l0m1Z1 dd,l0m2Z2  G d-„ d.ejf                  «      Z4 G d/„ d0ejf                  «      Z5 G d1„ d2ejl                  «      Z7 G d3„ d4ejf                  «      Z8 G d5„ d6ejf                  «      Z9 G d7„ d8ejf                  «      Z: G d9„ d:ejf                  «      Z; G d;„ d<e	eejf                  «      Z< G d=„ d>ejf                  «      Z= G d?„ d@ejf                  «      Z> G dA„ dBejf                  «      Z? G dC„ dDejf                  «      Z@ G dE„ dFejf                  «      ZA G dG„ dHejf                  «      ZB G dI„ dJeejf                  «      ZC G dK„ dLejf                  «      ZD G dM„ dNejf                  «      ZE G dO„ dPejf                  «      ZFy)Qé    N)Údate)Ú	timedeltaé   )ÚAssertsCompiledSQL)ÚAssertsExecutionResults)Úconfig)Úfixtures)Úassert_raises)Úeq_)Úin_)Ú	CursorSQL)ÚColumn)ÚTableé   )Ú	bindparam)Úcase)Úcolumn)ÚComputed)ÚDate)Úexists)Úfalse)ÚFloat)Ú
ForeignKey)ÚFrameClause)ÚFrameClauseType)Ú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     úo/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_select.pyÚdefine_tableszCollateTest.define_tables:   s*   € äØØÜ�4œ¨dÔ3Ü�6œ6 #›;Ó'õ		
ó    c                 ó|   — |j                  | j                  j                  j                  «       dddœdddœg«       y )Né   úcollate data1©r2   r5   r   úcollate data2©ÚexecuteÚtablesr1   Úinsert©r9   Ú
connections     r;   Úinsert_datazCollateTest.insert_dataC   s;   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à /Ñ2Ø /Ñ2ðõ	
r=   c                 ó¼   — t         j                  j                  «       5 }t        |j	                  |«      j                  «       |«       d d d «       y # 1 sw Y   y xY w©N©r   ÚdbÚconnectr   rD   Úfetchall©Úselfr"   ÚresultÚconns       r;   Ú_assert_resultzCollateTest._assert_resultM   óE   € Ü�Y‰Y×ÑÓ ð 	9 DÜ�—‘˜VÓ$×-Ñ-Ó/°Ô8÷	9÷ 	9ñ 	9úó   Ÿ*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)r?   r@   )r   rB   )r%   ÚrequiresÚget_order_by_collationr   rT   r"   rE   r1   Úorder_byÚcr5   ÚcollateÚasc)rQ   Ú	collations     r;   Útest_collate_order_byz!CollateTest.test_collate_order_byQ   s   € ä×$Ñ$×;Ñ;¼G¿N¹NÓKˆ	à×ÑÜ�4—;‘;×)Ñ)Ó*×3Ñ3Ø—‘×&Ñ&×(Ñ(×-Ñ-×5Ñ5°iÓ@×DÑDÓFóð "Ð#7Ð8õ		
r=   N)Ú__name__Ú
__module__Ú__qualname__Ú__sparse_driver_backend__Úclassmethodr<   rI   rT   r%   rX   Úorder_by_collationr_   © r=   r;   r/   r/   7   sS   „ Ø $Ðàñ
ó ð
ð ñ
ó ð
ò9ð ×Ñ×(Ñ(ñ
ó )ñ
r=   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 )
Nr1   r2   Tr3   ÚxÚyÚqé2   Úpr7   r8   s     r;   r<   zOrderByLabelTest.define_tablesh   sL   € äØØÜ�4œ¨dÔ3Ü�3œÓ Ü�3œÓ Ü�3œ˜r›
Ó#Ü�3œ˜r›
Ó#õ	
r=   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 )Nr?   r   Úq1Úp3)r2   rj   rk   rl   rn   r   Úq2Úp2é   Úq3Úp1rC   rG   s     r;   rI   zOrderByLabelTest.insert_datat   sU   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q q¨t¸$Ñ?Ø˜q q¨t¸$Ñ?Ø˜q q¨t¸$Ñ?ðõ	
r=   c                 ó¼   — t         j                  j                  «       5 }t        |j	                  |«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrK   rL   rP   s       r;   rT   zOrderByLabelTest._assert_result   rU   rV   c                 óÒ   — | j                   j                  }|j                  j                  j	                  d«      }| j                  t        |«      j                  |«      g d¢«       y )NÚlx©©r?   ©r   ©r   )rE   r1   r[   rj   ÚlabelrT   r"   rZ   ©rQ   r$   ry   s      r;   Ú
test_plainzOrderByLabelTest.test_plainƒ   sG   € Ø—‘×&Ñ&ˆØ�W‰W�Y‰Y�_‰_˜TÓ"ˆØ×ÑœF 2›J×/Ñ/°Ó3Ò5GÕHr=   c                 ó   — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }| j                  t        |«      j                  |«      g d¢«       y )Nry   )r}   ©é   ©é   )	rE   r1   r[   rj   rk   r~   rT   r"   rZ   r   s      r;   Útest_composed_intz"OrderByLabelTest.test_composed_intˆ   sV   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆØ×ÑœF 2›J×/Ñ/°Ó3Ò5GÕHr=   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 )Nry   Úly))r   Úq1p3)rƒ   Úq2p2)r…   Úq3p1)rE   r1   r[   rj   rk   r~   r   Úlowerrl   rn   rT   r"   rZ   Údesc)rQ   r$   ry   rˆ   s       r;   Ú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õ	
r=   c                 óî   — | j                   j                  }|j                  j                  j	                  d«      }| j                  t        |«      j                  |j                  «       «      g d¢«       y )Nry   )r}   r|   r{   )	rE   r1   r[   rj   r~   rT   r"   rZ   r�   r   s      r;   Útest_plain_descz OrderByLabelTest.test_plain_desc–   sM   € Ø—‘×&Ñ&ˆØ�W‰W�Y‰Y�_‰_˜TÓ"ˆØ×ÑœF 2›J×/Ñ/°·±³	Ó:Ò<NÕOr=   c                 ó  — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }| j                  t        |«      j                  |j                  «       «      g d¢«       y )Nry   )r„   r‚   r}   )
rE   r1   r[   rj   rk   r~   rT   r"   rZ   r�   r   s      r;   Útest_composed_int_descz'OrderByLabelTest.test_composed_int_desc›   s\   € Ø—‘×&Ñ&ˆØ�g‰g�i‰i˜%Ÿ'™'Ÿ)™)Ñ#×*Ñ*¨4Ó0ˆØ×ÑœF 2›J×/Ñ/°·±³	Ó:Ò<NÕOr=   c                 ór  — | j                   j                  }|j                  j                  |j                  j                  z   j                  d«      }t        t        j                  |j                  j                  «      |«      j                  |«      j                  |«      }| j                  |g d¢«       y )Nry   ))r?   r   )r?   rƒ   )r?   r…   )rE   r1   r[   rj   rk   r~   r"   r   Úcountr2   Úgroup_byrZ   rT   )rQ   r$   ÚexprÚstmts       r;   Ú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Ò":Õ;r=   N)r`   ra   rb   Ú__doc__rc   rd   r<   rI   rT   r€   r†   rŽ   r�   r’   r%   rX   Úgroup_by_complex_expressionr˜   rf   r=   r;   rh   rh   ]   sw   „ ñð !%Ðàñ	
ó ð	
ð ñ
ó ð
ò9òIò
Iò

òPò
Pð
 ×Ñ×1Ñ1ñ<ó 2ñ<r=   rh   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 )Nr2   ÚnameÚ	my_values)rŸ   ))r?   Úname1)r   Úname2)r   Úname3)	r+   r   r   r#   r5   r   rD   r"   Úall)rQ   rH   Ú
value_exprs      r;   Útest_tuplesz ValuesExpressionTest.test_tuples¯   sX   € ÜÜ�4œÓ!¤6¨&´&Ó#9Àô
ç
‰$Ò9Ó
:ð 	ô 	Ø×Ñœv jÓ1Ó2×6Ñ6Ó8Ú6õ	
r=   N)r`   ra   rb   Ú__requires__rc   r¦   rf   r=   r;   rœ   rœ   ª   s   „ Ø/€Là $Ðó
r=   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 ©Nr1   r2   Tr3   rj   rk   ©r   r   r   r8   s     r;   r<   z"FetchLimitOffsetTest.define_tables½   ó0   € äØØÜ�4œ¨dÔ3Ü�3œÓ Ü�3œÓ õ	
r=   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 )Nr?   r   ©r2   rj   rk   r   rt   rƒ   é   rC   rG   s     r;   rI   z FetchLimitOffsetTest.insert_dataÇ   s]   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)ðõ		
r=   Nc                 ó  — |r]|j                  ||«      j                  «       }t        t        |«      t        |«      «       t        t	        |«      t	        |«      «       y t        |j                  ||«      j                  «       |«       y rK   )rD   rO   r   ÚlenÚset)rQ   rH   r"   rR   ÚparamsÚset_Ú	query_ress          r;   rT   z#FetchLimitOffsetTest._assert_resultÔ   sh   € ñ Ø"×*Ñ*¨6°6Ó:×CÑCÓEˆIÜ”�I“¤ F£Ô,Ü”�I“¤ F£Õ,ô �
×"Ñ" 6¨6Ó2×;Ñ;Ó=¸vÕFr=   c                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrK   )r   rM   rN   r   Úexec_driver_sqlrO   ©rQ   r"   rR   r´   rS   s        r;   Ú_assert_result_strz'FetchLimitOffsetTest._assert_result_strß   sM   € Ü�Y‰Y×ÑÓ ð 	I DÜ�×$Ñ$ V¨VÓ4×=Ñ=Ó?ÀÔH÷	I÷ 	Iñ 	Iúó   Ÿ+AÁAc                 ó  — | j                   j                  }t        |«      j                  |j                  j
                  «      }| j                  ||j                  d«      ddg«       | j                  ||j                  d«      g d¢«       y ©Nr   ©r?   r?   r   ©r   r   r   r   ©r¾   r¿   ©r   r   rt   )rE   r1   r"   rZ   r[   r2   rT   Úlimit)rQ   rH   r$   r—   s       r;   Útest_simple_limitz&FetchLimitOffsetTest.test_simple_limitã   sr   € Ø—‘×&Ñ&ˆÜ�e‹}×%Ñ% e§g¡g§j¡jÓ1ˆØ×ÑØØ�J‰J�q‹MØ˜	Ð"ô	
ð
 	×ÑØØ�J‰J�q‹MÚ-õ	
r=   c                 óŠ  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  «      j                  d«      j                  «       }t        t        |«      t        |«      «      j                  «       j                  «       }| j                  ||dg«       y )Nr?   r{   )rE   r1   r"   r[   r2   rZ   rÂ   Úscalar_subqueryr*   ÚsubqueryrT   )rQ   rH   r$   r—   Úus        r;   Ú test_limit_render_multiple_timesz5FetchLimitOffsetTest.test_limit_render_multiple_timesñ   s‘   € Ø—‘×&Ñ&ˆä�5—7‘7—:‘:Ó×'Ñ'¨¯©¯
©
Ó3×9Ñ9¸!Ó<×LÑLÓNð 	ô ”&˜“,¤ t£Ó-×6Ñ6Ó8×?Ñ?ÓAˆà×ÑØØàðõ	
r=   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½   ©rE   r1   rT   r"   rZ   r[   r2   Úfetch©rQ   rH   r$   s      r;   Ú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Ú-õ	
r=   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Á   ©rt   rt   rƒ   ©rƒ   rt   r°   r   rÐ   rÑ   ©rE   r1   rT   r"   rZ   r[   r2   ÚoffsetrÌ   s      r;   Ú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Ø˜	Ð"õ	
r=   )©r   r   ©r   r?   ©r   r   )rÖ   rÕ   r×   )©r   r?   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Ñ   )
rE   r1   Úexecution_optionsrT   r"   rZ   r[   r2   rÂ   rÓ   )rQ   rH   rÙ   r$   Úassert_datarÂ   rÓ   Úexpecteds           r;   Ú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Øõñ	r=   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   r?   r¿   rÁ   r   rÏ   ©	rE   r1   rT   r"   rZ   r[   r2   rË   rÓ   rÌ   s      r;   Útest_simple_fetch_offsetz-FetchLimitOffsetTest.test_simple_fetch_offset2  s    € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7×>Ñ>¸qÓAØ˜	Ð"ô	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°QÓ7×>Ñ>¸qÓAÚ-õ	
r=   c                 óŽ   — | j                   j                  }| j                  |t        |«      j	                  d«      g d¢d¬«       y )Né
   rÞ   T©rµ   )rE   r1   rT   r"   rË   rÌ   s      r;   Útest_fetch_offset_no_orderz/FetchLimitOffsetTest.test_fetch_offset_no_orderA  s?   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×Ñ Ó#ÚCØð	 	õ 	
r=   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Þ   r?   ©r¿   rÁ   rÐ   rÑ   rÒ   rÌ   s      r;   Útest_simple_offset_zeroz,FetchLimitOffsetTest.test_simple_offset_zeroK  s…   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8ÚCô	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×5Ñ5°aÓ8Ú8õ	
r=   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   r?   Úliteral_bindsT)ÚdialectÚcompile_kwargsr¿   rÁ   N)rE   r1   r"   rZ   r[   r2   rÂ   rÓ   Úcompiler   rM   rð   Ústrrº   ©rQ   r$   r—   Úsqls       r;   Útest_limit_offset_nobindsz.FetchLimitOffsetTest.test_limit_offset_nobindsZ  óŒ   € ð —‘×&Ñ&ˆÜ�e‹}×%Ñ% e§g¡g§j¡jÓ1×7Ñ7¸Ó:×AÑAÀ!ÓDˆØ�l‰lÜ—I‘I×%Ñ%°ÈÐ6Mð ó 
ˆô �#‹hˆà×Ñ  i°Ð%;Õ<r=   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î   )rE   r1   r"   rZ   r[   r2   rË   rÓ   rò   r   rM   rð   ró   rº   rô   s       r;   Útest_fetch_offset_nobindsz.FetchLimitOffsetTest.test_fetch_offset_nobindsg  r÷   r=   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   )	rE   r1   rT   r"   rZ   r[   r2   rÂ   r   rÌ   s      r;   Útest_bound_limitz%FetchLimitOffsetTest.test_bound_limitt  sª   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4´Y¸s³^ÓDØ˜	Ð"Ø˜�8ð	 	ô 	
ð 	×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4´Y¸s³^ÓDÚ-Ø˜�8ð	 	õ 	
r=   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ë   r?   )	rE   r1   rT   r"   rZ   r[   r2   rÓ   r   rÌ   s      r;   Ú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ð	 	õ 	
r=   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   r?   )rû   rÿ   rü   rÏ   r   )
rE   r1   rT   r"   rZ   r[   r2   rÂ   r   rÓ   rÌ   s      r;   Ú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Ó#Ú-Ø Ñ#ð 	õ 	
r=   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   r?   )r  rÿ   rü   rÏ   r   )
rE   r1   rT   r"   rZ   r[   r2   rË   r   rÓ   rÌ   s      r;   Útest_bound_fetch_offsetz,FetchLimitOffsetTest.test_bound_fetch_offset­  r  r=   c           	      óú   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      ddg«       y )NÚ1Ú2rÐ   rÑ   )	rE   r1   rT   r"   rZ   r[   r2   rÓ   r    rÌ   s      r;   Útest_expr_offsetz%FetchLimitOffsetTest.test_expr_offsetÄ  s\   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r=   c           	      óú   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  t        d«      t        d«      z   «      g d¢«       y )Nr  r	  rÀ   )	rE   r1   rT   r"   rZ   r[   r2   rÂ   r    rÌ   s      r;   Útest_expr_limitz$FetchLimitOffsetTest.test_expr_limitÏ  sW   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=Ú-õ	
r=   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Ð   ©
rE   r1   rT   r"   rZ   r[   r2   rÂ   r    rÓ   rÌ   s      r;   Útest_expr_limit_offsetz+FetchLimitOffsetTest.test_expr_limit_offsetÚ  su   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r=   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  )
rE   r1   rT   r"   rZ   r[   r2   rË   r    rÓ   rÌ   s      r;   Útest_expr_fetch_offsetz+FetchLimitOffsetTest.test_expr_fetch_offsetæ  sw   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U”> #Ó&¬¸Ó)<Ñ<Ó=ß‰V”N 3Ó'¬.¸Ó*=Ñ=Ó>Ø˜	Ð"õ	
r=   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Ï   )
rE   r1   rT   r"   rZ   r[   r2   rÂ   rÓ   r    rÌ   s      r;   Ú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Ó'¬.¸Ó*=Ñ=Ó>Ú-õ	
r=   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Ð   r?   r¿   r  rÌ   s      r;   Ú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Ø˜	Ð"õ	
r=   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 )	Nr?   T©Ú	with_tiesrÐ   rÑ   rè   r   rÏ   ©	rE   r1   rT   r"   rZ   r[   rj   r�   rË   rÌ   s      r;   Ú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Ú-Øð	 	õ 	
r=   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Ñ   ©rE   r1   rD   r"   rZ   r[   rj   rË   rÓ   rO   r   r³   ©rQ   rH   r$   Úfas       r;   Ú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Õ7r=   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  r?   r¿   rÁ   r   rÐ   rÑ   )	rE   r1   rT   r"   rZ   r[   rj   rË   rÓ   rÌ   s      r;   Ú#test_fetch_offset_ties_exact_numberz8FetchLimitOffsetTest.test_fetch_offset_ties_exact_number;  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Ø˜	Ð"õ	
r=   c                 óÒ   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  dd¬«      dg«       y )Né   T©Úpercentr¾   rÊ   rÌ   s      r;   Útest_simple_fetch_percentz.FetchLimitOffsetTest.test_simple_fetch_percentQ  sQ   € à—‘×&Ñ&ˆØ×ÑØÜ�5‹M×"Ñ" 5§7¡7§:¡:Ó.×4Ñ4°RÀÐ4ÓFØˆKõ	
r=   c                 óò   — | j                   j                  }| j                  |t        |«      j	                  |j
                  j                  «      j                  dd¬«      j                  d«      ddg«       y )Né(   Tr&  r?   r¿   rÁ   rä   rÌ   s      r;   Útest_fetch_offset_percentz.FetchLimitOffsetTest.test_fetch_offset_percentZ  s\   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—j‘jÓ!ß‰U�2˜tˆUÓ$ß‰V�A‹YØ˜	Ð"õ	
r=   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      r;   Útest_simple_fetch_percent_tiesz3FetchLimitOffsetTest.test_simple_fetch_percent_tiesg  sd   € ð —‘×&Ñ&ˆØ×ÑØÜ�5‹Mß‰X�e—g‘g—i‘i—n‘nÓ&Ó'ß‰U�2˜t¨tˆUÓ4Ø˜	Ð"Øð 	õ 	
r=   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       r;   Útest_fetch_offset_percent_tiesz3FetchLimitOffsetTest.test_fetch_offset_percent_tiest  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Õ7r=   )NFrK   )0r`   ra   rb   Ú__backend__rd   r<   rI   rT   rº   rÃ   rÈ   r%   rX   Ú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.  r0  rf   r=   r;   r©   r©   º   s  „ Ø€Kàñ
ó ð
ð ñ

ó ð

ð =Bó	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ó $ó !ñ	8r=   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 )	Nr1   r2   Tr3   )ÚschemaÚsome_table_idF©Únullable)r   r   r   r   Útest_schemar8   s     r;   r<   z&SameNamedSchemaTableTest.define_tablesŠ  sR   € äØØÜ�4œ¨dÔ3Ü×%Ñ%õ		
ô 	ØØÜ�4œ¨dÔ3ÜØÜàô	õ	
	
r=   c                 óÚ   — | j                  ddt        j                  z  «      \  }}|j                  |j	                  «       ddi«       |j                  |j	                  «       dddœ«       y )Nr1   ú%s.some_tabler2   r?   )r2   r@  )rE   r   rC  rD   rF   )r9   rH   r1   Úsome_table_schemas       r;   rI   z$SameNamedSchemaTableTest.insert_dataž  sd   € à(+¯
©
Ø˜/¬F×,>Ñ,>Ñ>ó)
Ñ%ˆ
Ð%ð 	×ÑÐ,×3Ñ3Ó5¸¸a°yÔAØ×Ñ˜:×,Ñ,Ó.°qÈ1Ñ0MÕNr=   c           
      ó.  — | j                  ddt        j                  z  «      \  }}t        |j	                  t        ||«      j                  |||j                  j                  |j                  j                  k(  «      «      j                  «       d«       y )Nr1   rE  ©r?   r?   r?   )rE   r   rC  r   rD   r"   Ú	join_fromr[   r@  r2   Úfirst©rQ   rH   r1   rF  s       r;   Ú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Øõ		
r=   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 )Nr1   rE  r?   ©r?   r?   )rE   r   rC  r   rD   r"   rI  r[   r@  r2   ÚwhererJ  rK  s       r;   Ú!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Øõ	
r=   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 )Nr1   rE  r?   rH  )rE   r   rC  r"   rI  r[   r@  r2   rO  rÆ   r   rD   rJ  )rQ   rH   r1   rF  Úsubqs        r;   Ú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Øõ	
r=   N)r`   ra   rb   r™   rc   r§   rd   r<   rI   rL  rP  rS  rf   r=   r;   r<  r<  ƒ  sG   „ Ùà $Ðà€Làñ
ó ð
ð& ñOó ðOò
ò 
ó$
r=   r<  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)ÚJoinTestTNc                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrK   rL   r¹   s        r;   rT   zJoinTest._assert_resulté  óK   € Ü�Y‰Y×ÑÓ ð 	A DÜ�—‘˜V VÓ,×5Ñ5Ó7¸Ô@÷	A÷ 	Añ 	Aúr»   c                 ó¤   — t        d|t        dt        d¬«      «       t        d|t        dt        d¬«      t        dt        d«      d¬	«      «       y )
NÚar2   Tr3   ÚbÚa_idza.idFrA  )r   r   r   r   r8   s     r;   r<   zJoinTest.define_tablesí  sB   € äˆc�8œV D¬'¸tÔDÔEÜØØÜ�4œ¨dÔ3Ü�6œ: fÓ-¸Ô>õ		
r=   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 )Nr2   r?   r   r   rt   rƒ   )r2   r[  )rD   rE   rY  rF   rZ  rG   s     r;   rI   zJoinTest.insert_data÷  s�   € à×ÑØ�J‰J�L‰L×ÑÓ!Ø�AˆY˜˜q˜	 D¨! 9¨t°Q¨i¸$À¸ÐCô	
ð
 	×ÑØ�J‰J�L‰L×ÑÓ!à !Ñ$Ø !Ñ$Ø !Ñ$Ø !Ñ$ð	õ	
r=   c                 ó  — | j                  dd«      \  }}t        ||«      j                  |j                  |«      «      j	                  |j
                  j                  |j
                  j                  «      }| j                  |g d¢«       y ©NrY  rZ  )rH  )r?   r   r?   )r   rt   r   )r   rƒ   r   ©rE   r"   Úselect_fromÚjoinrZ   r[   r2   rT   ©rQ   rY  rZ  r—   s       r;   Ú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ÕOr=   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 )NrY  rZ  )r{   r|   r}   ©rt   r‚   )rN  rÖ   )rt   r   )rƒ   r   )rE   r"   r`  ra  r'   rZ   r[   r2   rT   Ú	itertoolsÚproduct)rQ   rY  rZ  r—   r[   s        r;   Ú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ó%÷ð á ‘D�Q™&˜1˜að �A�q’	ôõ		
ùôs   Â+C	c                 ó(  — | j                  dd«      \  }}t        ||«      j                  |j                  |t	        «       «      «      j                  |j                  j                  |j                  j                  «      }| j                  |g «       y )NrY  rZ  )	rE   r"   r`  ra  r   rZ   r[   r2   rT   rb  s       r;   Ú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 "Õ%r=   c                 ó,  — | j                  dd«      \  }}t        ||«      j                  |j                  |t	        «       «      «      j                  |j                  j                  |j                  j                  «      }| j                  |g d¢«       y )NrY  rZ  ))r?   NN)r   NN)r   NN)rt   NN)rƒ   NN)	rE   r"   r`  Ú	outerjoinr   rZ   r[   r2   rT   rb  s       r;   Ú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Ó%ð 	ð 	×ÑØòõ		
r=   c                 ó  — | j                  dd«      \  }}t        ||«      j                  |j                  |«      «      j	                  |j
                  j                  |j
                  j                  «      }| j                  |g d¢«       y r^  r_  rb  s       r;   Útest_outer_join_fkzJoinTest.test_outer_join_fkB  rd  r=   rK   )r`   ra   rb   rc   rT   rd   r<   rI   rc  ri  rk  rn  rp  rf   r=   r;   rU  rU  æ  sQ   „ Ø $ÐóAð ñ
ó ð
ð ñ
ó ð
ò Pò
ò(	&ò
ó(Pr=   rU  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¬   r8   s     r;   r<   z CompoundSelectTest.define_tablesM  r­   r=   c           
      ó”   — |j                  | j                  j                  j                  «       ddddœddddœddddœddddœg«       y )Nr?   r   r¯   r   rt   rƒ   rC   rG   s     r;   rI   zCompoundSelectTest.insert_dataW  sS   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)Ø˜q qÑ)ð	õ	
r=   Nc                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrK   rL   r¹   s        r;   rT   z!CompoundSelectTest._assert_resultc  rW  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Á   )
rE   r1   r"   rO  r[   r2   r*   rT   rZ   Úselected_columns©rQ   r$   Ús1Ús2Úu1s        r;   Útest_plain_unionz#CompoundSelectTest.test_plain_uniong  s‰   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆä�2�r‹]ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r=   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 rw  )rE   r1   r"   rO  r[   r2   r*   ÚaliasrT   rZ   rx  ry  s        r;   Útest_select_from_plain_unionz/CompoundSelectTest.test_select_from_plain_unionq  s›   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1ˆä�2�r‹]× Ñ Ó"×)Ñ)Ó+ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r=   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   r?   r   r¿   rÁ   )rE   r1   r"   rO  r[   r2   rÂ   rZ   r*   rT   rx  ry  s        r;   Ú&test_limit_offset_selectable_in_unionsz9CompoundSelectTest.test_limit_offset_selectable_in_unions{  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õ	
r=   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 rw  )rE   r1   r"   rO  r[   r2   rZ   r*   rÂ   rT   rx  ry  s        r;   Ú"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õ	
r=   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 rw  )rE   r1   r"   rO  r[   r2   Údistinctr*   rÂ   rT   rZ   rx  ry  s        r;   Ú"test_distinct_selectable_in_unionsz5CompoundSelectTest.test_distinct_selectable_in_unions’  s¦   € Ø—‘×&Ñ&ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:Ó<ˆÜ�E‹]× Ñ  §¡§¡¨q¡Ó1×:Ñ:Ó<ˆä�2�r‹]× Ñ  Ó#ˆØ×ÑØ�K‰K˜×+Ñ+×.Ñ.Ó/°)¸YÐ1Gõ	
r=   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‚  )rE   r1   r"   rO  r[   r2   rÂ   rZ   r*   r  rT   ry  s        r;   Ú&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õ	
r=   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‚  )rE   r1   r"   rO  r[   r2   rÂ   rZ   r  r*   rT   rx  ry  s        r;   Ú.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õ	
r=   rK   )r`   ra   rb   rc   rd   r<   rI   rT   r}  r€  r%   rX   Úorder_by_col_from_unionÚ/parens_in_union_contained_select_w_limit_offsetrƒ  Ú0parens_in_union_contained_select_wo_limit_offsetr…  rˆ  rŠ  rŒ  rf   r=   r;   rr  rr  J  s¿   „ Ø $Ðàñ
ó ð
ð ñ	
ó ð	
óAò
ò
ð ×Ñ×-Ñ-Ø×Ñ×EÑEñ
ó Fó .ð
ð ×Ñ×FÑFñ
ó Gð
ò
ð ×Ñ×EÑEñ	
ó Fð	
ó
r=   rr  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 ©	Nr1   r2   Tr3   rj   rk   Úzrm   r7   r8   s     r;   r<   z#PostCompileParamsTest.define_tablesÈ  ó>   € äØØÜ�4œ¨dÔ3Ü�3œÓ Ü�3œÓ Ü�3œ˜r›
Ó#õ	
r=   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 ©Nr?   r   Úz1)r2   rj   rk   r•  r   Úz2rt   Úz3rƒ   Úz4rC   rG   s     r;   rI   z!PostCompileParamsTest.insert_dataÓ  ó[   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à˜q q¨tÑ4Ø˜q q¨tÑ4Ø˜q q¨tÑ4Ø˜q q¨tÑ4ð	õ	
r=   c                 óö   — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  t        dd¬«      k(  «      }| j                  |di «       y )Nrl   T©Úliteral_executezKSELECT some_table.id FROM some_table WHERE some_table.x = __[POSTCOMPILE_q]©	rE   r1   r"   r[   r2   rO  rj   r   Úassert_compile©rQ   r$   r—   s      r;   Útest_compilez"PostCompileParamsTest.test_compileß  s`   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¸Ô=Ñ=ó
ˆð 	×ÑØð5àõ		
r=   c                 óü   — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  t        ddd¬«      k(  «      }| j                  |di d¬«       y )Nrl   rç   TrŸ  z<SELECT some_table.id FROM some_table WHERE some_table.x = 10)rï   r¡  r£  s      r;   Útest_compile_literal_bindsz0PostCompileParamsTest.test_compile_literal_bindsí  sh   € Ø—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ø�G‰G�I‰Iœ 3¨¸DÔAÑAó
ˆð 	×ÑØØJØØð	 	õ 	
r=   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)Nrl   TrŸ  rç   ©rl   z>SELECT some_table.id 
FROM some_table 
WHERE some_table.x = 10rf   )rE   r1   r"   r[   r2   rO  rj   r   Úsql_execution_asserterr   rM   rN   rD   ÚdictÚassert_r   rð   Ú
positional©rQ   r$   r—   ÚasserterrS   s        r;   Ú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)Nrl   T©Ú	expandingr   )rƒ   r°   r…   r¨  zFSELECT some_table.id 
FROM some_table 
WHERE some_table.x IN (5, 6, 7)rf   )rE   r1   r"   r[   r2   rO  rj   r   r   r©  r   rM   rN   rD   rª  r«  r   rð   r¬  r­  s        r;   Ú+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ó
ˆð ×(Ñ(Ó*ð 	6¨hÜ—‘×"Ñ"Ó$ð 6¨Ø—‘˜T¤4ª)Ô#4Ô5÷6÷	6ð 	×ÑÜð4ä—i‘i×'Ñ'×2Ò2�óõ	
ð 9;óõ	
÷6ð 6ú÷	6ð 	6ú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)Nrl   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 Ú rf   )rE   r1   r"   r[   r2   rO  r(   rj   rk   r   r   r©  r   rM   rN   rD   rª  r«  r   rð   Útuple_in_valuesr¬  r­  s        r;   Ú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)Nrl   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¸  rf   )rE   r1   r"   r[   r2   rO  r(   rj   r•  r   r   r©  r   rM   rN   rD   rª  r«  r   rð   r¹  r¬  r­  s        r;   Ú?test_execute_tuple_expanding_plus_literal_heterogeneous_executezUPostCompileParamsTest.test_execute_tuple_expanding_plus_literal_heterogeneous_execute9  s-  € à—‘×&Ñ&ˆä�e—g‘g—j‘jÓ!×'Ñ'Ü�5—7‘7—9‘9˜eŸg™gŸi™iÓ(×,Ñ,Ü˜#¨¸tÔDóó
ˆð ×(Ñ(Ó*ð 	D¨hÜ—‘×"Ñ"Ó$ð D¨Ø—‘˜T¤4¨9°jÐ*AÔ#BÔC÷D÷	Dð 	×ÑÜð/ô !'§	¡	× 1Ñ 1× AÒ A‘9ÀrñKô —i‘i×'Ñ'×2Ò2�óõ	
ð 9;óõ	
÷Dð Dú÷	Dð 	Dúr»  N)r`   ra   rb   r1  r§   rd   r<   rI   r¤  r¦  r¯  r³  r%   rX   Útuple_inrº  r½  rf   r=   r;   r‘  r‘  Á  sˆ   „ ð €Kà+€Làñ
ó ð
ð ñ	
ó ð	
ò
ò
ò
ò&
ð& ×Ñ×Ññ
ó ð
ð. ×Ñ×Ññ
ó ñ
r=   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”  r7   r8   s     r;   r<   z"ExpandingBoundInTest.define_tablesU  r–  r=   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˜  rC   rG   s     r;   rI   z ExpandingBoundInTest.insert_data`  r�  r=   Nc                 ó¾   — t         j                  j                  «       5 }t        |j	                  ||«      j                  «       |«       d d d «       y # 1 sw Y   y xY wrK   rL   r¹   s        r;   rT   z#ExpandingBoundInTest._assert_resultl  rW  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 )Nrl   rn   )rl   rn   rü   )rE   r1   r"   r[   r2   rO  rj   r   r   rk   rZ   rT   r£  s      r;   Ú"test_multiple_empty_sets_bindparamz7ExpandingBoundInTest.test_multiple_empty_sets_bindparamp  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Ñ-?ÐÕ@r=   c                 ó   — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g «       y rK   )rE   r1   r"   r[   r2   rO  rj   r   rk   rZ   rT   r£  s      r;   Útest_multiple_empty_sets_directz4ExpandingBoundInTest.test_multiple_empty_sets_direct|  s‚   € ð —‘×&Ñ&ˆä�5—7‘7—:‘:Óß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰U�5—7‘7—9‘9—=‘= Ó$Ó%ß‰X�e—g‘g—j‘jÓ!ð	 	ð 	×Ñ˜D "Õ%r=   c                 ó’  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g dg i¬«       y ©Nrl   rü   ©rE   r1   r"   r[   r2   rO  r(   rj   r•  r   r   rZ   rT   r£  s      r;   Ú)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ÐÕ7r=   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 rK   )
r"   r[   r2   rO  r(   rj   r•  r   rZ   rT   ©Úvalrá   r—   rQ   r$   s      €€r;   ÚgozGExpandingBoundInTest.test_empty_heterogeneous_tuples_direct.<locals>.go–  óh   ø€ ä�u—w‘w—z‘zÓ"ß‘”v˜eŸg™gŸi™i¨¯©¯©Ó3×7Ñ7¸Ó<Ó=ß‘˜%Ÿ'™'Ÿ*™*Ó%ð ð
 ×Ñ  hÕ/r=   ©)r   rš  )r   r›  )rt   rœ  ©r|   r}   rf  ©rE   r1   ©rQ   rÑ  r$   s   ` @r;   Ú&test_empty_heterogeneous_tuples_directz;ExpandingBoundInTest.test_empty_heterogeneous_tuples_direct’  s7   ù€ à—‘×&Ñ&ˆõ	0ñ 	ˆ2ˆrŒ
Ù
Ò,Ò.@ÔAÙ
ˆ2ˆr�
r=   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É  ©rE   r1   r"   r[   r2   rO  r(   rj   rk   r   r   rZ   rT   r£  s      r;   Ú'test_empty_homogeneous_tuples_bindparamz<ExpandingBoundInTest.test_empty_homogeneous_tuples_bindparam¢  rÌ  r=   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 rK   )
r"   r[   r2   rO  r(   rj   rk   r   rZ   rT   rÏ  s      €€r;   rÑ  zEExpandingBoundInTest.test_empty_homogeneous_tuples_direct.<locals>.go°  rÒ  r=   ))r?   r   ©r   r   ©r   rt   rz   rÕ  rÖ  s   ` @r;   Ú$test_empty_homogeneous_tuples_directz9ExpandingBoundInTest.test_empty_homogeneous_tuples_direct¬  s7   ù€ à—‘×&Ñ&ˆõ	0ñ 	ˆ2ˆrŒ
Ù
Ò#Ò%7Ô8Ù
ˆ2ˆr�
r=   c                 ó^  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg d¢i¬«       y )Nrl   rÔ  ©r   r   rt   rü   ©rE   r1   r"   r[   r2   rO  rj   r   r   rZ   rT   r£  s      r;   Ú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ÐÕNr=   c                 óD  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g d¢«      «      j                  |j                  j                  «      }| j                  |g d¢«       y )Nrá  rÔ  ©
rE   r1   r"   r[   r2   rO  rj   r   rZ   rT   r£  s      r;   Ú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Õ5r=   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   r|   r}   ©rE   r1   r"   r[   r2   rO  rj   r   Únot_inrZ   rT   r£  s      r;   Ú!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¨ ,Õ/r=   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      r;   Ú!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 "Õ%r=   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 idrl   T©Útype_r²  rÔ  ©rš  r›  rœ  rü   N)r&   Ú
bindparamsr   r#   rT   ©rQ   r—   s     r;   Útest_typed_str_inz&ExpandingBoundInTest.test_typed_str_inâ  sK   € ô ØAó
ç
‰*”Y˜s¬&¸DÔAÓ
Bð 	ð 	×ÑØÚØÒ+Ð,ð 	õ 	
r=   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î  rl   T©r²  rÔ  rñ  rü   N©r&   rò  r   rT   ró  s     r;   Útest_untyped_str_inz(ExpandingBoundInTest.test_untyped_str_inó  sI   € ô ØAó
ç
‰*”Y˜s¨dÔ3Ó
4ð 	ð 	×ÑØÚØÒ+Ð,ð 	õ 	
r=   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 )Nrl   rÔ  ©rÝ  rÞ  )rt   rƒ   rü   rÙ  r£  s      r;   Ú!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ð 	õ 	
r=   c                 ó€  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  g d¢«      «      j                  |j                  j                  «      }| j                  |g d¢«       y )Nrú  rÔ  )rE   r1   r"   r[   r2   rO  r(   rj   rk   r   rZ   rT   r£  s      r;   Ú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Õ5r=   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 )Nrl   rÔ  rÓ  rü   rÊ  r£  s      r;   Ú/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Ó!ð 	ð
 	×ÑØÚØÒ:Ð;ð 	õ 	
r=   c                 ó€  — | j                   j                  }t        |j                  j                  «      j                  t        |j                  j                  |j                  j                  «      j                  g d¢«      «      j                  |j                  j                  «      }| j                  |g d¢«       y )NrÓ  rÔ  )rE   r1   r"   r[   r2   rO  r(   rj   r•  r   rZ   rT   r£  s      r;   Ú,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Ó!ð 	ð 	×ÑØÚõ	
r=   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 idrl   Trö  rÔ  rÓ  rü   r÷  ró  s     r;   Ú4test_bound_in_heterogeneous_two_tuple_text_bindparamzIExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam:  sI   € ô ØFó
ç
‰*”Y˜s¨dÔ3Ó
4ð 	ð 	×ÑØÚØÒ:Ð;ð 	õ 	
r=   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 rK   ©Ú_data©rQ   r5   s     r;   Ú__init__zqExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__init__J  ó	   € Ø!�•
r=   c                 ó,   — t        | j                  «      S rK   ©Úiterr
  ©rQ   s    r;   Ú__iter__zqExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__iter__M  ó   € Ü˜DŸJ™JÓ'Ð'r=   c                 ó    — | j                   |   S rK   r	  ©rQ   Úidxs     r;   Ú__getitem__ztExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__getitem__P  ó   € Ø—z‘z #‘Ð&r=   c                 ó,   — t        | j                  «      S rK   ©r²   r
  r  s    r;   Ú__len__zpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuple.<locals>.LikeATuple.__len__S  ó   € Ü˜4Ÿ:™:“Ð&r=   N©r`   ra   rb   r  r  r  r  rf   r=   r;   Ú
LikeATupler  I  ó   „ ò"ò(ò'ó'r=   r  r  rl   Trï  rÔ  r   rš  r   r›  rt   rœ  rü   )	Úcollections_abcÚSequencer&   rò  r   r)   r   r#   rT   ©rQ   r  r—   s      r;   Ú?test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tuplezTExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_typed_bindparam_non_tupleG  s�   € ô	'œ×1Ñ1ô 	'ô ØFó
ç
‰*ÜØœ9¤W£Y´³Ó9ÀTôó
ð 	ð 	×ÑØÚàÙ˜q $Ó'Ù˜q $Ó'Ù˜q $Ó'ððð 	õ 
	
r=   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 rK   r	  r  s     r;   r  zpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__init__o  r  r=   c                 ó,   — t        | j                  «      S rK   r  r  s    r;   r  zpExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__iter__r  r  r=   c                 ó    — | j                   |   S rK   r	  r  s     r;   r  zsExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__getitem__u  r  r=   c                 ó,   — t        | j                  «      S rK   r  r  s    r;   r  zoExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuple.<locals>.LikeATuple.__len__x  r  r=   Nr  rf   r=   r;   r  r&  n  r  r=   r  r  rl   Trö  rÔ  r   rš  r   r›  rt   rœ  rü   )r   r!  r&   rò  r   rT   r"  s      r;   Ú>test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplezSExpandingBoundInTest.test_bound_in_heterogeneous_two_tuple_text_bindparam_non_tuplei  s}   € ô
	'œ×1Ñ1ô 	'ô ØFó
ç
‰*”Y˜s¨dÔ3Ó
4ð 	ð 	×ÑØÚàÙ˜q $Ó'Ù˜q $Ó'Ù˜q $Ó'ððð 	õ 
	
r=   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      r;   Ú(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ÐÕ7r=   c                 ó<  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g «       y rK   rå  r£  s      r;   Ú%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 "Õ%r=   c                 óZ  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg i¬«       y ©Nrl   ©r{   r|   r}   rf  rü   )rE   r1   r"   r[   r2   rO  rj   ré  r   rZ   rT   r£  s      r;   Ú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ÐÕMr=   c                 ó@  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g d¢«       y ©Nr4  )
rE   r1   r"   r[   r2   rO  rj   ré  rZ   rT   r£  s      r;   Ú.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Ò":Õ;r=   c                 óV  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g dg i¬«       y rÉ  )rE   r1   r"   r[   r2   rO  r•  r   r   rZ   rT   r£  s      r;   Ú'test_empty_set_against_string_bindparamz<ExpandingBoundInTest.test_empty_set_against_string_bindparam¨  r.  r=   c                 ó<  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g «       y rK   )
rE   r1   r"   r[   r2   rO  r•  r   rZ   rT   r£  s      r;   Ú$test_empty_set_against_string_directz9ExpandingBoundInTest.test_empty_set_against_string_direct±  r1  r=   c                 óZ  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  t        d«      «      «      j                  |j                  j                  «      }| j                  |g d¢dg i¬«       y r3  )rE   r1   r"   r[   r2   rO  r•  ré  r   rZ   rT   r£  s      r;   Ú0test_empty_set_against_string_negation_bindparamzEExpandingBoundInTest.test_empty_set_against_string_negation_bindparam¶  r6  r=   c                 ó@  — | j                   j                  }t        |j                  j                  «      j                  |j                  j                  j                  g «      «      j                  |j                  j                  «      }| j                  |g d¢«       y r8  )
rE   r1   r"   r[   r2   rO  r•  ré  rZ   rT   r£  s      r;   Ú-test_empty_set_against_string_negation_directzBExpandingBoundInTest.test_empty_set_against_string_negation_direct¿  r:  r=   c           
      óð   — t        t        t        «       j                  t	        dd¬«      «      t        «       ft        «       ¬«      «      }t        |j                  |«      j                  «       d   d«       y )NÚfoorf   )Úvalue©Úelse_r   ©Fr   )	r"   r   r!   r   r   r'   r   rD   Úfetchone©rQ   rH   r—   s      r;   Ú)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Õ?r=   c                 óÚ   — t        t        t        «       j                  g «      t	        «       ft        «       ¬«      «      }t        |j                  |«      j                  «       d   d«       y )NrF  r   rH  )r"   r   r!   r   r'   r   rD   rI  rJ  s      r;   Ú&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Õ?r=   rK   ))r`   ra   rb   r1  rd   r<   rI   rT   rÅ  rÇ  r%   rX   Útuple_in_w_emptyrË  r×  rÚ  rß  rã  ræ  rê  rì  rô  rø  r¾  rû  rý  rÿ  r  r  r#  r+  r-  r0  r5  r9  r<  r>  r@  rB  rK  rM  rf   r=   r;   rÀ  rÀ  R  sõ  „ Ø€Kàñ
ó ð
ð ñ	
ó ð	
óAò
Aò
&ð ×Ñ×&Ñ&ñ8ó 'ð8ð ×Ñ×&Ñ&ñó 'ðð ×Ñ×&Ñ&ñ8ó 'ð8ð ×Ñ×&Ñ&ñó 'ðòOò6ò0ò&ò
ò"
ð$ ×Ñ×Ññ	
ó ð	
ð ×Ñ×Ññ6ó ð6ð ×Ñ×Ññ
ó ð
ð ×Ñ×Ññ
ó ð
ð  ×Ñ×Ññ

ó ð

ð ×Ñ×Ññ
ó ð
ðB ×Ñ×Ññ
ó ð
ò@8ò&ò
Nò<ò8ò&ò
Nò<ò
@ó
@r=   rÀ  c                   óš  — e Zd ZdZdZdZed„ «       Zed„ «       Zd„ Z	d„ Z
ej                  j                  d„ «       Zd	„ Zej                  j                  d
„ «       Zej                  j                  d„ «       Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j6                  d„ «       Zej                  j:                  d„ «       Zej                  j6                   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 )Nr1   r2   Tr3   r5   rm   r7   r8   s     r;   r<   zLikeFunctionsTest.define_tableså  s*   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&õ		
r=   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 )Nr?   ÚabcdefgrA   r   zab/cdefgr   zab%cdefgrt   Úab_cdefgrƒ   zabcde/fgr°   zabcde%fgr…   zab#cdefgé   Úab9cdefgé	   zabcde#fgrç   Úabcd9fgé   rC   rG   s     r;   rI   zLikeFunctionsTest.insert_dataî  sƒ   € à×ÑØ�J‰J×!Ñ!×(Ñ(Ó*à )Ñ,Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø *Ñ-Ø 9Ñ-Ø 4Ñ(ðõ	
r=   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rK   )rE   r1   r   rM   rN   rD   r"   r[   r2   rO  r   )rQ   r–   rá   r1   rS   rE  Úrowss          r;   Ú_testzLikeFunctionsTest._test  s‹   € Ø—[‘[×+Ñ+ˆ
ä�Y‰Y×ÑÓ ð 	 Dð #Ÿl™l¬6°*·,±,·/±/Ó+B×+HÑ+HÈÓ+NÓOöá�Eò ðˆDð ÷	ô 	ˆD�(Õùò÷	ð 	ús   µA BÁ5BÂ BÂBÂB%c                 óž   — | j                   j                  j                  j                  }| j	                  |j                  d«      h d£«       y )Núab%c¾
   r?   r   r   rt   rƒ   r°   r…   rV  rX  rç   ©rE   r1   r[   r5   r]  Ú
startswith©rQ   Úcols     r;   Útest_startswith_unescapedz+LikeFunctionsTest.test_startswith_unescaped  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &Ó)Ò+JÕKr=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nr_  T©Ú
autoescaper   ra  rc  s     r;   Útest_startswith_autoescapez,LikeFunctionsTest.test_startswith_autoescape  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &°T�>Ó:¸Q¸CÕ@r=   c                 ó°   — | j                   j                  j                  j                  }| j	                  |j                  t        d«      «      h d£«       y )Nz'ab%c'r`  )rE   r1   r[   r5   r]  rb  r    rc  s     r;   Útest_startswith_sqlexprz)LikeFunctionsTest.test_startswith_sqlexpr  s=   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø�N‰Nœ>¨(Ó3Ó4Ú+õ	
r=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nzab##cú#©Úescaper…   ra  rc  s     r;   Útest_startswith_escapez(LikeFunctionsTest.test_startswith_escape  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> '°#�>Ó6¸¸Õ<r=   c                 óì   — | j                   j                  j                  j                  }| j	                  |j                  ddd¬«      dh«       | j	                  |j                  ddd¬«      dh«       y )Nr_  Trm  ©rh  ro  r   zab#cr…   ra  rc  s     r;   Ú!test_startswith_autoescape_escapez3LikeFunctionsTest.test_startswith_autoescape_escape!  s[   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—>‘> &°TÀ#�>ÓFÈÈÔLØ�
‰
�3—>‘> &°TÀ#�>ÓFÈÈÕLr=   c                 óž   — | j                   j                  j                  j                  }| j	                  |j                  d«      h d£«       y )Núe%fg¾	   r?   r   r   rt   rƒ   r°   r…   rV  rX  ©rE   r1   r[   r5   r]  Úendswithrc  s     r;   Útest_endswith_unescapedz)LikeFunctionsTest.test_endswith_unescaped'  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< Ó'Ò)DÕEr=   c                 ó°   — | j                   j                  j                  j                  }| j	                  |j                  t        d«      «      h d£«       y )Nz'e%fg'rv  )rE   r1   r[   r5   r]  rx  r    rc  s     r;   Útest_endswith_sqlexprz'LikeFunctionsTest.test_endswith_sqlexpr+  s=   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø�L‰Lœ¨Ó1Ó2Ò4Oõ	
r=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nru  Trg  r°   rw  rc  s     r;   Útest_endswith_autoescapez*LikeFunctionsTest.test_endswith_autoescape1  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °4�<Ó8¸1¸#Õ>r=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nze##fgrm  rn  rX  rw  rc  s     r;   Útest_endswith_escapez&LikeFunctionsTest.test_endswith_escape6  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °�<Ó4°q°cÕ:r=   c                 óì   — | j                   j                  j                  j                  }| j	                  |j                  ddd¬«      dh«       | j	                  |j                  ddd¬«      dh«       y )Nru  Trm  rr  r°   ze#fgrX  rw  rc  s     r;   Útest_endswith_autoescape_escapez1LikeFunctionsTest.test_endswith_autoescape_escape;  ó[   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °4À�<ÓDÀqÀcÔJØ�
‰
�3—<‘< °4À�<ÓDÀqÀcÕJr=   c                 óž   — | j                   j                  j                  j                  }| j	                  |j                  d«      h d£«       y )Núb%cderv  ©rE   r1   r[   r5   r]  Úcontainsrc  s     r;   Útest_contains_unescapedz)LikeFunctionsTest.test_contains_unescapedA  s5   € Ø�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< Ó(Ò*EÕFr=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nr„  Trg  r   r…  rc  s     r;   Útest_contains_autoescapez*LikeFunctionsTest.test_contains_autoescapeE  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °D�<Ó9¸A¸3Õ?r=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  dd¬«      dh«       y )Nzb##cderm  rn  r…   r…  rc  s     r;   Útest_contains_escapez&LikeFunctionsTest.test_contains_escapeJ  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3—<‘< °�<Ó5¸°sÕ;r=   c                 óì   — | j                   j                  j                  j                  }| j	                  |j                  ddd¬«      dh«       | j	                  |j                  ddd¬«      dh«       y )Nzb%cdTrm  rr  r   zb#cdr…   r…  rc  s     r;   Útest_contains_autoescape_escapez1LikeFunctionsTest.test_contains_autoescape_escapeO  r‚  r=   c                 ó    — | j                   j                  j                  j                  }| j	                  |j                  d«       h d£«       y )Núa.cde>   r   r   rt   r…   rV  rç   ©rE   r1   r[   r5   r]  Úregexp_matchrc  s     r;   Útest_not_regexp_matchz'LikeFunctionsTest.test_not_regexp_matchU  s:   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�C×$Ñ$ WÓ-Ð-Ò/BÕCr=   c                 ó¾   — | j                   j                  j                  j                  }| j	                  |j                  dd«      j                  d«      h d£«       y )Nr�  ÚFOO¾   r?   rƒ   r°   rX  )rE   r1   r[   r5   r]  Úregexp_replacer†  rc  s     r;   Útest_regexp_replacez%LikeFunctionsTest.test_regexp_replaceZ  sF   € à�k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
Ø×Ñ˜w¨Ó.×7Ñ7¸Ó>Âõ	
r=   r�  r•  Úabc>   r?   rƒ   r°   rX  rç   z^abcÚ9cderV  z^ar?   rZ  z(b|c)z^(b|c)c                 óš   — | j                   j                  j                  j                  }| j	                  |j                  |«      |«       y rK   r�  )rQ   r&   rá   rd  s       r;   Útest_regexp_matchz#LikeFunctionsTest.test_regexp_matcha  s8   € ð �k‰k×$Ñ$×&Ñ&×+Ñ+ˆØ�
‰
�3×#Ñ# DÓ)¨8Õ4r=   )#r`   ra   rb   rc   Úrun_insertsÚrun_deletesrd   r<   rI   r]  re  r%   rX   Úlike_escapesri  rk  rp  rs  ry  r{  r}  r  r�  r‡  r‰  r‹  r�  r‘  r’  r–  r—  r3  r³   Úranger›  rf   r=   r;   rP  rP  ß  sM  „ Ø $Ðà€KØ€Kàñ
ó ð
ð ñ
ó ð
ò$	òLð ×Ñ×"Ñ"ñAó #ðAò
ð ×Ñ×"Ñ"ñ=ó #ð=ð ×Ñ×"Ñ"ñMó #ðMò
Fò
ð ×Ñ×"Ñ"ñ?ó #ð?ð ×Ñ×"Ñ"ñ;ó #ð;ð ×Ñ×"Ñ"ñKó #ðKò
Gð ×Ñ×"Ñ"ñ@ó #ð@ð ×Ñ×"Ñ"ñ<ó #ð<ð ×Ñ×"Ñ"ñKó #ðKð
 ×Ñ×"Ñ"ñDó #ðDð ×Ñ×$Ñ$ñ
ó %ð
ð ×Ñ×"Ñ"Ø€W×ÑØ	’,ÐØ	Ò Ð!Ø	Ò!Ð"Ø	�!�ˆØ	‰s‘5˜˜B“<Ó Ð!Ø	‘#‘e˜A˜r“lÓ#Ð$Ø	‘3“5Ðóñ5óó #ñ5r=   rP  c                   óD   — e Zd ZdZdZdZed„ «       Zed„ «       Zd„ Z	d„ Z
y)	ÚComputedColumnTestzýThis test uses Computed without specifying the persisted mode.
    On some postgresql version the compiler may raise a warning.
    Use `warns_if` in the computed_columns requirement to catch the warning
    conditionally on the postgresql version.
    T)Úcomputed_columnsc                 óÀ   — t        d|t        dt        d¬«      t        dt        «      t        dt        t        d«      «      t        dt        t        d	«      «      «       y )
NÚsquarer2   Tr3   ÚsideÚareazside * sideÚ	perimeterz4 * side)r   r   r   r   r8   s     r;   r<   z ComputedColumnTest.define_tablesz  sH   € äØØÜ�4œ¨dÔ3Ü�6œ7Ó#Ü�6œ7¤H¨]Ó$;Ó<Ü�;¤¬°*Ó)=Ó>õ	
r=   c                 ó|   — |j                  | j                  j                  j                  «       dddœdddœg«       y )Nr?   rç   )r2   r¥  é*   )rD   rE   r¤  rF   rG   s     r;   rI   zComputedColumnTest.insert_data…  s8   € à×ÑØ�J‰J×Ñ×$Ñ$Ó&Ø˜rÑ"¨2°rÑ$:Ð;õ	
r=   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Ú*)r?   rç   r6   r*  )rç   r©  éä  é¨   )r   rM   rN   rD   r"   r&   r`  rE   r¤  rZ   r[   r2   rO   r   ©rQ   rS   Úress      r;   Útest_select_allz"ComputedColumnTest.test_select_allŒ  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)r6   r*  )r¬  r­  )r   rM   rN   rD   r"   rE   r¤  r[   r¦  r§  r`  rZ   r2   rO   r   r®  s      r;   Ú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)r`   ra   rb   r™   rc   r§   rd   r<   rI   r°  r²  rf   r=   r;   r¡  r¡  p  sD   „ ñð !%ÐØ(€Làñ
ó ð
ð ñ
ó ð
ò>ó	/r=   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_columnsrQ  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_ar2   Tr©  )ÚalwaysÚstartÚ
nominvalueÚ
nomaxvaluer3   r�   r6   Útbl_béûÿÿÿr   iüÿÿ)Ú	incrementr¹  ÚminvalueÚmaxvalue©r   r   r   r   r#   r8   s     r;   r<   z IdentityColumnTest.define_tables§  sƒ   € äØØÜØÜÜØ r°dÀtôð !ôô �6œ6 #›;Ó'ô	
ô 	ØØÜØÜÜ 2¨Q¸ÈÔKØ ô	ô �6œ6 #›;Ó'õ
	
r=   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�   rY  rZ  r©  r[   ©r2   r�   )rD   rE   r·  rF   r¼  rG   s     r;   rI   zIdentityColumnTest.insert_dataÂ  s�   € à×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø�cˆ]˜V S˜MÐ*ô	
ð 	×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø�cˆ]˜V S˜MÐ*ô	
ð 	×ÑØ�J‰J×Ñ×#Ñ#Ó%Ø Ñ$Ð%õ	
r=   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©  rY  )é+   rZ  ))r½  rZ  )r   rY  )r©  r[   )rD   r"   r&   r`  rE   r·  rZ   r[   r2   rO   r   r¼  ©rQ   rH   r¯  s      r;   r°  z"IdentityColumnTest.test_select_allÑ  sØ   € Ø× Ñ Ü”4˜“9Óß‰[˜Ÿ™×*Ñ*Ó+ß‰X�d—k‘k×'Ñ'×)Ñ)×,Ñ,Ó-ó
÷ ‰(‹*ð	 	ô
 	ˆC�)˜YÐ'Ô(à× Ñ Ü”4˜“9Óß‰[˜Ÿ™×*Ñ*Ó+ß‰X�d—k‘k×'Ñ'×)Ñ)×,Ñ,Ó-ó
÷ ‰(‹*ð	 	ô
 	ˆCÒ1Õ2r=   c                 ó.  — |j                  t        | j                  j                  j                  j
                  «      j                  | j                  j                  j                  j
                  «      «      j                  «       }t        |ddg«       y )N)r©  )rÅ  )	rD   r"   rE   r·  r[   r2   rZ   rO   r   rÆ  s      r;   r²  z&IdentityColumnTest.test_select_columnsà  sk   € Ø× Ñ Ü�4—;‘;×$Ñ$×&Ñ&×)Ñ)Ó*×3Ñ3°D·K±K×4EÑ4E×4GÑ4G×4JÑ4JÓKó
ç
‰(‹*ð 	ô 	ˆC�%˜�Õ r=   c                 ó@   ‡ ‡— ˆˆ fd„}t        t        t        f|«       y )Nc                  óv   •— ‰ j                  ‰j                  j                  j                  «       dddœg«       y )NéÈ   rY  rÃ  )rD   rE   r·  rF   )rH   rQ   s   €€r;   Úfnz7IdentityColumnTest.test_insert_always_error.<locals>.fnè  s2   ø€ Ø×ÑØ—‘×!Ñ!×(Ñ(Ó*Ø SÑ)Ð*õr=   )r
   r,   r-   )rQ   rH   rË  s   `` r;   Útest_insert_always_errorz+IdentityColumnTest.test_insert_always_erroræ  s   ù€ õ	ô 	”}Ô&6Ð7¸Õ<r=   N)r`   ra   rb   r1  r§   rœ  r�  rd   r<   rI   r°  r²  r%   rX   Úidentity_columns_standardrÌ  rf   r=   r;   r´  r´  ¡  sf   „ Ø€KØ(€LØ€KØ€Kàñ
ó ð
ð4 ñ
ó ð
ò3ò!ð ×Ñ×/Ñ/ñ=ó 0ñ=r=   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Útblr2   T)r4   Úautoincrementr�   r6   rÁ  r8   s     r;   r<   z'IdentityAutoincrementTest.define_tablesõ  s9   € äØØÜØÜÜ“
Ø Ø"ôô �6œ6 #›;Ó'õ	
r=   c                 ó
  — |j                  | j                  j                  j                  «       ddi«       |j                  | j                  j                  j	                  «       «      j                  «       }t        |d«       y )Nr�   Úrow)r?   rÕ  )rD   rE   rÒ  rF   r"   rJ  r   rÆ  s      r;   Ú test_autoincrement_with_identityz:IdentityAutoincrementTest.test_autoincrement_with_identity  s[   € Ø×Ñ˜4Ÿ;™;Ÿ?™?×1Ñ1Ó3°f¸e°_ÔEØ× Ñ  §¡§¡×!7Ñ!7Ó!9Ó:×@Ñ@ÓBˆÜˆC�Õr=   N)r`   ra   rb   r1  r§   rd   r<   rÖ  rf   r=   r;   rÏ  rÏ  ñ  s#   „ Ø€KØ6€Làñ
ó ð
ór=   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Ústuffr2   Tr3   r5   rm   r7   r8   s     r;   r<   zExistsTest.define_tables  s*   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&õ		
r=   c           	      óŒ   — |j                  | j                  j                  j                  «       dddœdddœdddœdddœg«       y )Nr?   ú	some datarA   r   r   rt   zsome other data)rD   rE   rÚ  rF   rG   s     r;   rI   zExistsTest.insert_data  sL   € à×ÑØ�J‰J×Ñ×#Ñ#Ó%à +Ñ.Ø +Ñ.Ø +Ñ.ØÐ"3Ñ4ð	õ	
r=   c           
      ó"  — | j                   j                  }t        |j                  t	        t        d«      «      j                  t        «       j                  |j                  j                  dk(  «      «      «      j                  «       dg«       y )Nr?   rÜ  r{   ©rE   rÚ  r   rD   r"   r   rO  r   r[   r5   rO   ©rQ   rH   rÚ  s      r;   Útest_select_existszExistsTest.test_select_exists"  sg   € Ø—‘×!Ñ!ˆÜØ×ÑÜ”w˜q“zÓ"×(Ñ(Ü“H—N‘N 5§7¡7§<¡<°;Ñ#>Ó?óó÷ ‰h‹jØˆFõ	
r=   c           
      ó   — | j                   j                  }t        |j                  t	        t        d«      «      j                  t        «       j                  |j                  j                  dk(  «      «      «      j                  «       g «       y )Nr?   zno datarÞ  rß  s      r;   Útest_select_exists_falsez#ExistsTest.test_select_exists_false-  se   € Ø—‘×!Ñ!ˆÜØ×ÑÜ”w˜q“zÓ"×(Ñ(Ü“H—N‘N 5§7¡7§<¡<°9Ñ#<Ó=óó÷ ‰h‹jØõ	
r=   N)	r`   ra   rb   rc   rd   r<   rI   rà  râ  rf   r=   r;   rØ  rØ  
  s8   „ Ø $Ðàñ
ó ð
ð ñ	
ó ð	
ò	
ó	
r=   rØ  c                   óh   — e Zd ZdZ ej
                  ej                  j                  «      d„ «       Zy)ÚDistinctOnTestTc                 óF  — t        j                  d«      5  t        d«      j                  t	        d«      «      j                  t        d«      «      }d d d «       t        j                  d«      5  | j                  d«       d d d «       y # 1 sw Y   Œ:xY w# 1 sw Y   y xY w)Nz/Passing expression to ``distinct`` to generate r«  rl   rD  z:DISTINCT ON is currently supported only by the PostgreSQL zSELECT DISTINCT * FROM foo)r%   Úexpect_deprecatedr"   r‡  r   r`  r$   r¢  )rQ   Ústms     r;   Útest_distinct_onzDistinctOnTest.test_distinct_on<  sš   € ä×&Ñ&Ø=ó
ñ 	Nô ˜“+×&Ñ&¤v¨c£{Ó3×?Ñ?ÄÀeÃÓMˆC÷	Nô ×&Ñ&ØHó
ñ 	Cð ×Ñ Ð%AÔB÷	Cð 	C÷		Nð 	Nú÷	Cð 	Cús   –<BÁ/BÂBÂB N)	r`   ra   rb   rc   r%   Úfails_ifrX   Úsupports_distinct_onrè  rf   r=   r;   rä  rä  9  s5   „ Ø $Ðà€W×Ñ�g×&Ñ&×;Ñ;Ó<ñCó =ñCr=   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_testr2   Tr3   Úcol_arA  Úcol_br¬   r8   s     r;   r<   z'IsOrIsNotDistinctFromTest.define_tablesL  s4   € äØØÜ�4œ¨dÔ3Ü�7œG¨dÔ3Ü�7œG¨dÔ3õ	
r=   )Úboth_int_differentr   r?   r?   )Úboth_int_samer?   r?   r   )Úone_null_firstNr?   r?   )Úone_null_secondr   Nr?   )Ú	both_nullNNr   Úiaaaz3col_a_value, col_b_value, expected_row_count_for_is)Úid_rÛ   c                 ó¬  — | 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 )Nr?   )r2   rð  rñ  r   )rE   rï  rD   rF   r"   rO  r[   rð  Úis_distinct_fromrñ  rO   r   r²   Úis_not_distinct_from)rQ   Úcol_a_valueÚcol_b_valueÚexpected_row_count_for_isrH   rÒ  rR   Úexpected_row_count_for_is_nots           r;   Útest_is_or_is_not_distinct_fromz9IsOrIsNotDistinctFromTest.test_is_or_is_not_distinct_fromV  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Ø)õ	
r=   N)
r`   ra   rb   rc   r§   rd   r<   r%   r3  r   rf   r=   r;   rì  rì  H  sU   „ Ø $ÐØ1€Làñ
ó ð
ð €W×ÑØ'Ø"Ø&Ø'Ø$ØØFôñ
óñ
r=   rì  c                   óè   — e Zd ZdZdZed„ «       Zed„ «       Zd„ Ze	j                  j                  d„ «       Ze	j                  j                  d„ «       Ze	j                  j                  d„ «       Zd	„ Zy
)ÚWindowFunctionTest)Úwindow_functionsTc                 ó˜   — t        d|t        dt        d¬«      t        dt        «      t        dt        «      t        dt        «      «       y )Nr1   r2   Tr3   Úcol1Úcol2Úcol3)r   r   r   r   r8   s     r;   r<   z WindowFunctionTest.define_tables‚  s:   € äØØÜ�4œ¨dÔ3Ü�6œ7Ó#Ü�6œ7Ó#Ü�6œ5Ó!õ	
r=   c           	      ó¸   — d„ }|j                  | j                  j                  j                  «       t	        dd«      D �cg c]
  } ||«      ‘Œ c}«       y c c}w )Nc                 ó   — | | | dz  | dz   dœS )Nrƒ   ç      à?)r2   r  r  r  rf   )Úis    r;   Úrow_factoryz3WindowFunctionTest.insert_data.<locals>.row_factory�  s    € àØØ˜A™Ø˜C™ñ	ð r=   r?   rm   )rD   rE   r1   rF   rŸ  )r9   rH   r  r  s       r;   rI   zWindowFunctionTest.insert_data�  sH   € ò	ð 	×ÑØ�J‰J×!Ñ!×(Ñ(Ó*Ü%*¨1¨b£\Ö2 ‰[˜�^Ò2õ	
ùâ2s   Á 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)rZ   r%  é   )é_   )rE   r1   rD   r"   r   Úmaxr[   r  Úoverr  r�   rO  r¤   r   rŸ  ©rQ   rH   r1   r\  r  s        r;   Útest_windowzWindowFunctionTest.test_windowœ  s­   € Ø—[‘[×+Ñ+ˆ
Ø×!Ñ!ÜÜ—‘˜Ÿ™×*Ñ*Ó+×0Ñ0Ø(Ÿl™l×/Ñ/×4Ñ4Ó6Ð7ð 1ó ó÷ ‰e�J—L‘L×%Ñ%¨Ñ*Ó+ó
÷ ‰#‹%ð 	ô 	ˆD¤%¨£)Ö,˜Q’5Ò,Õ-ùÒ,s   Ã	C#
c           	      ó  — | j                   j                  }|j                  t        t	        j
                  |j                  j                  «      j                  |j                  j                  g|j                  j                  j                  «       gd¬«      «      j                  |j                  j                  dk  «      «      j                  «       }t        |t        dd«      D �cg c]  }|f‘Œ c}«       y c c}w )N)r   r?   ©Úpartition_byrZ   Úrange_r%  r?   )rE   r1   rD   r"   r   r  r[   r  r  r  r]   rO  r¤   r   rŸ  r  s        r;   Útest_window_rangez$WindowFunctionTest.test_window_range¨  sÄ   € à—[‘[×+Ñ+ˆ
Ø×!Ñ!ÜÜ—‘˜Ÿ™×*Ñ*Ó+×0Ñ0Ø",§,¡,×"3Ñ"3Ð!4Ø(Ÿl™l×/Ñ/×3Ñ3Ó5Ð6Ø!ð 1ó ó÷ ‰e�J—L‘L×%Ñ%¨Ñ*Ó+ó
÷ ‰#‹%ð 	ô 	ˆD¤ q¨"£Ö.˜A�A’4Ò.Õ/ùÒ.s   Ã*
C<
c                 óX  — | j                   j                  }|j                  t        t	        j
                  |j                  j                  «      j                  |j                  j                  g|j                  j                  j                  «       gt        ddt        j                  t        j                  «      ¬«      «      j                  |j                  j                  dk  «      «      j!                  «       }t#        |t%        dd«      D �cg c]  }|dz   f‘Œ
 c}«       y c c}w )Ng      ô?r  r%  r?   r
  )rE   r1   rD   r"   r   r  r[   r  r  r]   r   r   Ú	PRECEDINGÚ	FOLLOWINGrO  r  r¤   r   rŸ  r  s        r;   Útest_window_range_numericz,WindowFunctionTest.test_window_range_numeric·  så   € à—[‘[×+Ñ+ˆ
Ø×!Ñ!ÜÜ—‘˜Ÿ™×*Ñ*Ó+×0Ñ0Ø",§,¡,×"3Ñ"3Ð!4Ø(Ÿl™l×/Ñ/×3Ñ3Ó5Ð6Ü&ØØÜ'×1Ñ1Ü'×1Ñ1ó	ð 1ó 	ó÷ ‰e�J—L‘L×%Ñ%¨Ñ*Ó+ó
÷ ‰#‹%ð 	ô 	ˆD¤u¨Q°£|Ö4 !�A˜‘G’:Ò4Õ5ùÒ4s   ÄD'
c                 óþ  — t        d|t        dt        «      t        dt        «      «      }|j	                  |«       |j                  |j                  «       dt        ddd«      dœdt        ddd«      dœd	t        ddd«      dœd
t        ddd«      dœdt        ddd«      dœg«       |j                  t        t        j                  |j                  j                  «      j                  |j                  j                  t        t!        d¬«      d t"        j$                  t"        j&                  «      ¬«      «      j)                  |j                  j                  «      «      j+                  «       }t-        |g d¢«       y )NÚrange_stringrE  Úoderr?   ié  rç   )rE  r  r   r   rt   é   rƒ   é   r…   )Údays)rZ   r  )r{   r}   r}   r„   )rµ  )r   r   r   r   ÚcreaterD   rF   r   r"   r   Úsumr[   rE  r  r  r   r   r   r  ÚCURRENTrZ   r¤   r   )rQ   rH   r:   Útr\  s        r;   Útest_window_range_datesz*WindowFunctionTest.test_window_range_datesË  s@  € äØØÜ�7œGÓ$Ü�6œ4Ó ó	
ˆð 	
�‰�ÔØ×ÑØ�H‰H‹Jà¤T¨$°°AÓ%6Ñ7Ø¤T¨$°°AÓ%6Ñ7Ø¤T¨$°°BÓ%7Ñ8Ø¤T¨$°°BÓ%7Ñ8Ø¤T¨$°°BÓ%7Ñ8ðô		
ð ×!Ñ!ÜÜ—‘˜Ÿ™Ÿ™Ó#×(Ñ(ØŸS™SŸX™XÜ&Ü! qÔ)ØÜ'×1Ñ1Ü'×/Ñ/ó	ð )ó ó
÷ ‰h�q—s‘s—x‘xÓ ó
÷ ‰#‹%ð 	ô 	ˆDÒ1Õ2r=   c           
      ó"  — | j                   j                  }t        d«      D ]æ  }dt        t        ddd«      «      dgdz  z   d gdz  z   fdt        t        ddd«      «      dgd	z  z   d gd
z  z   ffD ]•  \  }}|j	                  t        t        j                  |j                  j                  «      j                  |j                  j                  g|¬«      «      «      j                  «       }t        ||D �cg c]  }|f‘Œ c}«       Œ— Œè y c c}w )Nr   )rƒ   r%  éi   éõ   rƒ   r!  )r%  é   é›   rZ  r%  )rZ   r\  )rE   r1   rŸ  ÚlistrD   r"   r   r  r[   r  r  r  r¤   r   )rQ   rH   r1   r  r\  rá   Úresult_rowss          r;   Ú"test_window_rows_between_w_cachingz5WindowFunctionTest.test_window_rows_between_w_cachingî  s  € Ø—[‘[×+Ñ+ˆ
ô �q“ò 	;ˆAð Üœ˜s C¨Ó+Ó,°°¸±
Ñ;¸t¸fÀq¹jÑHðð
 Üœ˜s C¨Ó+Ó,°°¸±
Ñ;¸t¸fÀr¹kÑIðð	#ò ;‘��hð )×0Ñ0ÜÜŸ™ §¡×!2Ñ!2Ó3×8Ñ8Ø&0§l¡l×&7Ñ&7Ð%8Ø!%ð 9ó óó÷ ‘#“%ð ô �K°Ö!9¨1 1¢$Ò!9Õ:ñ';ñ	;ùò( ":s   Ã6
DN)r`   ra   rb   r§   rc   rd   r<   rI   r  r%   rX   Úwindow_ranger  Úwindow_range_numericr  Úwindow_range_non_numericr'  r/  rf   r=   r;   r  r  }  sž   „ Ø(€Là $Ðàñ
ó ð
ð ñ
ó ð
ò
.ð ×Ñ×"Ñ"ñ0ó #ð0ð ×Ñ×*Ñ*ñ6ó +ð6ð& ×Ñ×.Ñ.ñ 3ó /ð 3óD;r=   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 )ÚBitwiseTestTrQ  rç   r?   )rY  rZ  c           	      óX   — t        d|t        dt        «      t        dt        «      «       y )NÚbitwiserY  rZ  r¬   r8   s     r;   r<   zBitwiseTest.define_tables  s   € äˆi˜¤6¨#¬wÓ#7¼ÀÄWÓ9MÕNr=   c                 ó€   — |j                  | j                  j                  j                  «       | j                  «       y rK   )rD   rE   r6  rF   Úinserted_datarG   s     r;   rI   zBitwiseTest.insert_data  s+   € à×Ñ˜3Ÿ:™:×-Ñ-×4Ñ4Ó6¸×8IÑ8IÕJr=   c                 ó$   — | j                  d«      S )Nrƒ   )Úbitwise_xor©rY  s    r;   ú<lambda>zBitwiseTest.<lambda>  ó   € �a—m‘m AÓ&€ r=   rƒ   c                 ó$   — | j                  d«      S ©Nr?   )Ú
bitwise_orr;  s    r;   r<  zBitwiseTest.<lambda>"  s   € �a—l‘l 1“o€ r=   c                 ó$   — | j                  d«      S )Nrt   )Úbitwise_andr;  s    r;   r<  zBitwiseTest.<lambda>'  r=  r=   rt   rV  c                 ó(   — | dz
  j                  «       S ©Nr   )Úbitwise_notr;  s    r;   r<  zBitwiseTest.<lambda>,  s   € �q˜1‘u×)Ñ)Ó+€ r=   r   c                 ó$   — | j                  d«      S r?  )Úbitwise_lshiftr;  s    r;   r<  zBitwiseTest.<lambda>1  ó   € �a×&Ñ& qÓ)€ r=   c                 ó$   — | j                  d«      S rD  )Úbitwise_rshiftr;  s    r;   r<  zBitwiseTest.<lambda>6  rH  r=   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   )rE   r6  r[   rY  r%   Úresolve_lambdar"   rO  rZ   rD   Úmappingsr¤   r   r8  )
rQ   r   rá   rH   rÒ  rY  Úopr—   r¯  r  s
             r;   Ú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)r`   ra   rb   r1  rœ  r�  rŸ  r8  rd   r<   rI   r%   r3  rX   Úsupports_bitwise_xorr-  Úsupports_bitwise_orÚsupports_bitwise_andÚsupports_bitwise_notÚsupports_bitwise_shiftrO  )Ú.0r  s   00r;   r4  r4    sr  „ Ø€KØ &Ð&€K�+á38¸³9×=¨a˜1 1 q¡5Ó)Ó=€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?r4  )GÚcollections.abcr˜  r   Údatetimer   r   rg  r¸  r   r   r   r	   Ú
assertionsr
   r   r   Ú	assertsqlr   r?  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Úexcr,   r-   Ú
TablesTestr/   rh   ÚTestBaserœ   r©   r<  rU  rr  r‘  rÀ  rP  r¡  r´  rÏ  rØ  rä  rì  r  r4  rf   r=   r;   ú<module>r]     sý  ðõ *Ý Ý Û å !Ý &Ý Ý Ý &Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý #ô#
�(×%Ñ%ô #
ôLJ<�x×*Ñ*ô J<ôZ
˜8×,Ñ,ô 
ô F8˜8×.Ñ.ô F8ôR`
˜x×2Ñ2ô `
ôFaPˆx×"Ñ"ô aPôHt
˜×,Ñ,ô t
ônN
ØÐ/°×1DÑ1DôN
ôbJ@˜8×.Ñ.ô J@ôZN5˜×+Ñ+ô N5ôb./˜×,Ñ,ô ./ôbM=˜×,Ñ,ô M=ô` × 3Ñ 3ô ô2,
�×$Ñ$ô ,
ô^CÐ'¨×)<Ñ)<ô Cô2
 × 3Ñ 3ô 2
ôjM;˜×,Ñ,ô M;ô`9<�(×%Ñ%õ 9<r=   