ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 4]c@sddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd lm Z dd lm Z dd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZdejfdYZdejfdYZdejfdYZdejfdYZdejfdYZd ejfd!YZd"S(#i(tconfig(tfixtures(teq_(tin_(tColumn(tTablei(t bindparam(tcase(tfalse(tfunc(tInteger(tliteral_column(tnull(tselect(tString(ttesting(ttrue(ttuple_(tunion(tutilt CollateTestcBsJeZeZedZedZdZej j dZ RS(cCs5td|tdtdttdtddS(Nt some_tabletidt primary_keytdataid(RRR tTrueR(tclstmetadata((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt define_tabless cCsEtjj|jjjidd6dd6idd6dd6gdS(NiRs collate data1Ris collate data2(RtdbtexecutettablesRtinsert(R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt insert_data#s cCs#ttjj|j|dS(N(RRRRtfetchall(tselfR tresult((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt_assert_result-scCsbtjjtj}|jt|jjgj|jjj j j |j ddgdS(Nis collate data1is collate data2(is collate data1(is collate data2( Rtrequirestget_order_by_collationRR%R RRtorder_bytcRtcollatetasc(R#t collation((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_collate_order_by0s !( t__name__t __module__Rt __backend__t classmethodRR!R%RR&torder_by_collationR-(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRs   tOrderByLabelTestcBs}eZdZeZedZedZdZdZ dZ dZ dZ dZ ejjd ZRS( sTest the dialect sends appropriate ORDER BY expressions when labels are used. This essentially exercises the "supports_simple_order_by_label" setting. c Cs_td|tdtdttdttdttdtdtdtddS( NRRRtxtytqi2tp(RRR RR(RR((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRGs  cCstjj|jjjidd6dd6dd6dd6dd 6idd6dd6d d6d d6d d 6id d6d d6d d6dd6dd 6gdS(NiRR4iR5tq1R6tp3R7itq2tp2itq3tp1(RRRRRR (R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!Ss  &&cCs#ttjj|j|dS(N(RRRRR"(R#R R$((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%^scCsP|jj}|jjjd}|jt|gj|dddgdS(Ntlxiii(i(i(i(RRR)R4tlabelR%R R((R#ttableR>((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt test_plainas cCsZ|jj}|jj|jjjd}|jt|gj|dddgdS(NR>iii(i(i(i( RRR)R4R5R?R%R R((R#R@R>((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_composed_intfs cCs|jj}|jj|jjjd}tj|jj|jj jd}|j t ||gj ||j dtjdfdtjdfdtjdfgdS( NR>tlyitq1p3itq2p2itq3p1(RRR)R4R5R?R tlowerR6R7R%R R(tdescRtu(R#R@R>RC((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_composed_multipleks  (!cCsV|jj}|jjjd}|jt|gj|jdddgdS(NR>iii(i(i(i( RRR)R4R?R%R R(RH(R#R@R>((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_plain_descts cCs`|jj}|jj|jjjd}|jt|gj|j dddgdS(NR>iii(i(i(i( RRR)R4R5R?R%R R(RH(R#R@R>((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_composed_int_desc{s cCs{|jj}|jj|jjjd}ttj|jj |gj |j |}|j |dddgdS( NR>iiii(ii(ii(ii( RRR)R4R5R?R R tcountRtgroup_byR(R%(R#R@texprtstmt((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_group_by_composeds  !  (R.R/t__doc__RR0R1RR!R%RARBRJRKRLRR&tgroup_by_complex_expressionRQ(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR3<s      tLimitOffsetTestcBseZeZedZedZd dZdZe j j dZ e j j dZ e j j dZe j jdZe j jdZe j jd ZRS( cCs;td|tdtdttdttdtdS(NRRRR4R5(RRR R(RR((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRs  cCstjj|jjjidd6dd6dd6idd6dd6dd6idd6dd6dd6idd6dd6dd6gdS( NiRR4iR5iii(RRRRRR (R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!s  cCs&ttjj||j|dS(N(RRRRR"(R#R R$tparams((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%scCsG|jj}|jt|gj|jjjdddgdS(Niii(iii(iii(RRR%R R(R)Rtlimit(R#R@((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_simple_limits $cCsG|jj}|jt|gj|jjjdddgdS(Niiii(iii(iii(RRR%R R(R)Rtoffset(R#R@((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_simple_offsets $cCsP|jj}|jt|gj|jjjdjdddgdS(Niiii(iii(iii( RRR%R R(R)RRVRX(R#R@((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_simple_limit_offsets -cCs|jj}t|gj|jjjdjd}|jdt j j dit d6}t |}|j|d d gdS( s7test that 'literal binds' mode works - no bound params.iitdialecttcompile_kwargst literal_bindsiiN(iii(iii(RRR R(R)RRVRXtcompileRRR[RtstrR%(R#R@RPtsql((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_limit_offset_nobindss  0  cCsZ|jj}|jt|gj|jjjtdddgdidd6dS(NtliiiRU(iii(iii( RRR%R R(R)RRVR(R#R@((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_bound_limits  * cCsZ|jj}|jt|gj|jjjtdddgdidd6dS( NtoiiiRUi(iii(iii( RRR%R R(R)RRXR(R#R@((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_bound_offsets  * cCsp|jj}|jt|gj|jjjtdj tddd gdidd6dd6dS( NRbRdiiiRUi(iii(iii( RRR%R R(R)RRVRRX(R#R@((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_bound_limit_offsets   ((R.R/RR0R1RR!R%RWRR&RXRYRZRatbound_limit_offsetRcReRf(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRTs      tCompoundSelectTestcBseZeZedZedZd dZdZdZ e j j e j j dZe j jdZdZe j j dZd ZRS( cCs;td|tdtdttdttdtdS(NRRRR4R5(RRR R(RR((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRs  cCstjj|jjjidd6dd6dd6idd6dd6dd6idd6dd6dd6idd6dd6dd6gdS( NiRR4iR5iii(RRRRRR (R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!s  cCs&ttjj||j|dS(N(RRRRR"(R#R R$RU((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%scCs|jj}t|gj|jjdk}t|gj|jjdk}t||}|j|j|jjddgdS(Niii(iii(iii( RRR twhereR)RRR%R((R#R@ts1ts2tu1((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_plain_union s  $$cCs|jj}t|gj|jjdk}t|gj|jjdk}t||jj}|j|j |jjddgdS(Niii(iii(iii( RRR RiR)RRtaliasR%R((R#R@RjRkRl((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_select_from_plain_unions  $$cCs|jj}t|gj|jjdkjdj|jj}t|gj|jjdkjdj|jj}t||jd}|j |j|jjddgdS(Niiii(iii(iii( RRR RiR)RRVR(RR%(R#R@RjRkRl((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt&test_limit_offset_selectable_in_unionss   cCs|jj}t|gj|jjdkj|jj}t|gj|jjdkj|jj}t||jd}|j |j|jjddgdS(Niii(iii(iii( RRR RiR)RR(RRVR%(R#R@RjRkRl((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt"test_order_by_selectable_in_unions-s  33cCs|jj}t|gj|jjdkj}t|gj|jjdkj}t||jd}|j |j |jjddgdS(Niii(iii(iii( RRR RiR)RtdistinctRRVR%R((R#R@RjRkRl((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt"test_distinct_selectable_in_unions6s  **cCs|jj}t|gj|jjdkjdj|jj}t|gj|jjdkjdj|jj}t||j }|j |jjdj|jjddgdS(Niiii(iii(iii( RRR RiR)RRVR(RRnR%(R#R@RjRkRl((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt&test_limit_offset_in_unions_from_alias>s   cCs|jj}t|gj|jjdkjdj|jjjj}t|gj|jjdkjdj|jjjj}t ||jd}|j |j|jjddgdS(Niiii(iii(iii( RRR RiR)RRVR(RnRR%(R#R@RjRkRl((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt.test_limit_offset_aliased_selectable_in_unionsTs   ((R.R/RR0R1RR!R%RmRoRR&torder_by_col_from_uniont/parens_in_union_contained_select_w_limit_offsetRpt0parens_in_union_contained_select_wo_limit_offsetRqRsRtRu(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRhs      tExpandingBoundInTestcBseZeZedZedZddZdZe j j dZ e j j dZ dZe j j dZe j j dZd Zd Zd Zd Zd ZRS(c CsMtd|tdtdttdttdttdtddS(NRRRR4R5tzi2(RRR RR(RR((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRns  cCstjj|jjjidd6dd6dd6dd6idd6dd6dd6d d6idd6dd6d d6d d6id d6d d6d d6d d6gdS(NiRR4iR5tz1Rzitz2itz3itz4(RRRRRR (R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!ys  cCs&ttjj||j|dS(N(RRRRR"(R#R R$RU((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%scCs|jj}t|jjgj|jjjtddt j|jj jtddt j |jj}|j |gdigd6gd6dS(NR6t expandingR7RU( RRR R)RRiR4RRRR5R(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_multiple_empty_setss  $$cCs|jj}t|jjgjt|jj|jjj t ddt j |jj}|j |gdigd6dS(NR6RRU(RRR R)RRiRR4RzRRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_empty_heterogeneous_tupless  cCs|jj}t|jjgjt|jj|jjj t ddt j |jj}|j |gdigd6dS(NR6RRU(RRR R)RRiRR4R5RRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_empty_homogeneous_tupless  cCs|jj}t|jjgj|jjjtddt j |jj}|j |ddd gdidddgd6dS( NR6RiiiRU(i(i(i( RRR R)RRiR4RRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_bound_in_scalars  $c Cs|jj}t|jjgjt|jj|jjj t ddt j |jj}|j |dd d gdid d d gd6dS(NR6RiiiRUi(i(i(i(ii(ii(ii(RRR R)RRiRR4R5RRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_bound_in_two_tuples c Cs|jj}t|jjgjt|jj|jjj t ddt j |jj}|j |d d d gdid ddgd6dS(NR6RiiiRUR|R}R~(i(i(i(iR|(iR}(iR~(RRR R)RRiRR4RzRRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt%test_bound_in_heterogeneous_two_tuples cCsu|jj}t|jjgj|jjjtddt j |jj}|j |gdigd6dS(NR6RRU( RRR R)RRiR4RRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_empty_set_against_integers  $cCs|jj}t|jjgj|jjjtddt j |jj}|j |dd d d gdigd6dS( NR6RiiiiRU(i(i(i(i( RRR R)RRiR4tnotin_RRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt'test_empty_set_against_integer_negations  $cCsu|jj}t|jjgj|jjjtddt j |jj}|j |gdigd6dS(NR6RRU( RRR R)RRiRzRRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_empty_set_against_strings  $cCs|jj}t|jjgj|jjjtddt j |jj}|j |dd d d gdigd6dS( NR6RiiiiRU(i(i(i(i( RRR R)RRiRzRRRR(R%(R#R@RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt&test_empty_set_against_string_negations  $c Csutttjtddddttfgdtg}ttj j |j dt dfdS(NtfootvalueRtelse_i(( R RR RRRRRRRRtfetchonetFalse(R#RP((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_null_in_empty_set_is_falses ((R.R/RR0R1RR!R%RRR&ttuple_inRRRRRRRRRR(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRyks     tLikeFunctionsTestcBseZeZdZdZedZedZ dZ dZ dZ dZ dZdZd Zd Zd Zd Zd ZdZdZdZdZRS(toncecCs5td|tdtdttdtddS(NRRRRi2(RRR RR(RR((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR,s cCstjj|jjjidd6dd6idd6dd6idd6dd6id d6d d6id d6d d6id d6dd6idd6dd6idd6dd6idd6dd6idd6dd6g dS(NiRtabcdefgRisab/cdefgisab%cdefgitab_cdefgisabcde/fgisabcde%fgisab#cdefgitab9cdefgi sabcde#fgi tabcd9fg(RRRRRR (R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!5s cCsf|jj}tjj8}d|jt|jjgj |D}WdQXt ||dS(NcSsh|]\}|qS(((t.0R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pys Ls ( RRRRtconnectRR R)RRiR(R#ROtexpectedRtconntrows((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt_testGs  +c CsM|jjjj}|j|jddddddddd d d h dS( Nsab%ciiiiiiiii i (RRR)RRt startswith(R#tcol((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_startswith_unescapedTscCs8|jjjj}|j|jddtdhdS(Nsab%ct autoescapei(RRR)RRRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_startswith_autoescapeXsc CsS|jjjj}|j|jtddddddddd d d h dS( Ns'ab%c'iiiiiiiii i (RRR)RRRR (R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_startswith_sqlexpr\scCs8|jjjj}|j|jddddhdS(Nsab##ctescapet#i(RRR)RRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_startswith_escapecscCsf|jjjj}|j|jddtdddh|j|jddtdddhdS(Nsab%cRRRisab#ci(RRR)RRRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt!test_startswith_autoescape_escapegs(c CsJ|jjjj}|j|jddddddddd d h dS( Nse%fgiiiiiiiii (RRR)RRtendswith(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_endswith_unescapedlsc CsP|jjjj}|j|jtddddddddd d h dS( Ns'e%fg'iiiiiiiii (RRR)RRRR (R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_endswith_sqlexprpscCs8|jjjj}|j|jddtdhdS(Nse%fgRi(RRR)RRRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_endswith_autoescapevscCs8|jjjj}|j|jddddhdS(Nse##fgRRi (RRR)RRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_endswith_escapezscCsf|jjjj}|j|jddtdddh|j|jddtdddhdS(Nse%fgRRRise#fgi (RRR)RRRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_endswith_autoescape_escape~s(c CsJ|jjjj}|j|jddddddddd d h dS( Nsb%cdeiiiiiiiii (RRR)RRtcontains(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_contains_unescapedscCs8|jjjj}|j|jddtdhdS(Nsb%cdeRi(RRR)RRRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_contains_autoescapescCs8|jjjj}|j|jddddhdS(Nsb##cdeRRi(RRR)RRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_contains_escapescCsf|jjjj}|j|jddtdddh|j|jddtdddhdS(Nsb%cdRRRisb#cdi(RRR)RRRR(R#R((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyttest_contains_autoescape_escapes(N(R.R/RR0t run_insertstNonet run_deletesR1RR!RRRRRRRRRRRRRRR(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR&s(              N(tRRt assertionsRRtschemaRRRRRR R R R R RRRRRRt TablesTestRR3RTRhRyR(((sW/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyts2%R_~