idI_|ddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd lm Z dd lm Z dd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZGddejZGddejZGddejZGd d!ejZGd"d#ejZ Gd$d%ejZ!Gd&d'ejZ"Gd(d)ejZ#Gd*d+ejZ$d,S)-)config)fixtures)eq_)in_)Column)Table) bindparam)case)Computed)exists)false)func)Integer)literal)literal_column)null)select)String)testing)text)true)tuple_)union)utilcneZdZdZedZedZdZej j dZ dS) CollateTestTc td|tdtdtdtddS)N some_tableidT primary_keydatadrrrrclsmetadatas Y/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_select.py define_tableszCollateTest.define_tablessI   4d 3 3 3 66#;; ' '      cz||jjddddddgdS)N collate data1r r#r collate data2executetablesrinsertr' connections r) insert_datazCollateTest.insert_data'sS J ! ( ( * */22/22      r+cttj||dSNrrdbr2fetchallselfrresults r)_assert_resultzCollateTest._assert_result14 FI  f % % . . 0 0&99999r+cPtjtj}|t |jjg|jjj j | ddgdS)N)r-r.)rr0) rrequiresget_order_by_collationrr@rr3rorder_bycr#collateasc)r> collations r)test_collate_order_byz!CollateTest.test_collate_order_by4s$;;GNKK   DK*+ , , 5 5 &(-55i@@DDFF  "#7 8      r+N) __name__ __module__ __qualname__ __backend__ classmethodr*r7r@rrCorder_by_collationrJr+r)rrs~K  [   [ ::: (  )(   r+rceZdZdZdZedZedZdZdZ dZ dZ d Z d Z ejjd Zd S) OrderByLabelTestzTest the dialect sends appropriate ORDER BY expressions when labels are used. This essentially exercises the "supports_simple_order_by_label" setting. Tctd|tdtdtdttdttdtdtd tddS) Nrr Tr!xyq2pr%r&s r)r*zOrderByLabelTest.define_tablesKsv   4d 3 3 3 3 3 3r # # 3r # #     r+c ||jjddddddddddddddd d d dgdS) Nr-rq1p3)r rUrVrWrYr q2p2q3p1r1r5s r)r7zOrderByLabelTest.insert_dataWsp J ! ( ( * *qqt$??qqt$??qqt$??      r+cttj||dSr9r:r=s r)r@zOrderByLabelTest._assert_resultbrAr+c|jj}|jjd}|t |g|gddS)Nlx)r-rr )r3rrFrUlabelr@rrEr>tablerds r) test_plainzOrderByLabelTest.test_plainesZ & WY__T " " FB4LL11"557I7I7IJJJJJr+c|jj}|jj|jjzd}|t|g|gddS)Nrd)rg) r3rrFrUrVrhr@rrEris r)test_composed_intz"OrderByLabelTest.test_composed_intjse &gi%')# * *4 0 0 FB4LL11"557I7I7IJJJJJr+c |jj}|jj|jjzd}t j|jj|jj zd}| t||g || dtjdfdtjdfdtjdfgdS) Nrdlyr q1p3rnq2p2rpq3p1)r3rrFrUrVrhrlowerrWrYr@rrEdescru)r>rjrdrss r)test_composed_multiplez'OrderByLabelTest.test_composed_multipleos &gi%')# * *4 0 0j##egi/ 6 6t < <  B8   % %b"'')) 4 4 1dfVnn"546&>>7J K     r+c|jj}|jjd}|t |g|gddS)Nrd)rgrfre) r3rrFrUrhr@rrErxris r)test_plain_descz OrderByLabelTest.test_plain_descxsm & WY__T " "  B4LL ! !"'')) , ,.@.@.@     r+c |jj}|jj|jjzd}|t|g| gddS)Nrd)rormrg) r3rrFrUrVrhr@rrErxris r)test_composed_int_descz'OrderByLabelTest.test_composed_int_descsx &gi%')# * *4 0 0  B4LL ! !"'')) , ,.@.@.@     r+cL|jj}|jj|jjzd}t tj|jj |g | |}| |gddS)Nrd))r-r )r-rn)r-rp) r3rrFrUrVrhrrcountr group_byrEr@)r>rjexprstmts r)test_group_by_composedz'OrderByLabelTest.test_group_by_composeds & EGI%,,T22 DJuwz**D1 2 2 Xd^^ Xd^^ D":":":;;;;;r+N)rKrLrM__doc__rNrOr*r7r@rkrqrzr|r~rrCgroup_by_complex_expressionrrQr+r)rSrS@sK   [    [ :::KKK KKK           1<<21<<rr?paramss r)r@zLimitOffsetTest._assert_result6 FI  ff - - 6 6 8 8&AAAAAr+c|jj}|t|g|jjdddgdS)Nrr-r-rrrr )r3rr@rrErFr limitr>rjs r)test_simple_limitz!LimitOffsetTest.test_simple_limitsa &  E7OO $ $UWZ 0 0 6 6q 9 9  "     r+c|jj}|t|g|jjdddgdS)Nrr r r_r_r_rn)r3rr@rrErFr offsetrs r)test_simple_offsetz"LimitOffsetTest.test_simple_offsetsa &  E7OO $ $UWZ 0 0 7 7 : :  "     r+c|jj}|t|g|jjddddgdS)Nrr-rr) r3rr@rrErFr rrrs r)test_simple_limit_offsetz(LimitOffsetTest.test_simple_limit_offsetso &  E7OO $ $UWZ 0 0 6 6q 9 9 @ @ C C  "     r+cb|jj}t|g|jjdd}|tj j ddi}t|}| |ddgdS) z7test that 'literal binds' mode works - no bound params.rr- literal_bindsT)dialectcompile_kwargsrrN)r3rrrErFr rrcompilerr;rstrr@)r>rjrsqls r)test_limit_offset_nobindsz)LimitOffsetTest.test_limit_offset_nobindss &ug'' 3399!<<CCAFFllI%6M  #hh C)Y!788888r+c|jj}|t|g|jjtdddgddidS)Nlrrrr) r3rr@rrErFr rr rs r)test_bound_limitz LimitOffsetTest.test_bound_limitss &  E7OO $ $UWZ 0 0 6 6y~~ F F  "8      r+c|jj}|t|g|jjtdddgddidS)Norrrr) r3rr@rrErFr rr rs r)test_bound_offsetz!LimitOffsetTest.test_bound_offsetss &  E7OO $ $UWZ 0 0 7 7 # G G  "8      r+c.|jj}|t|g|jjtd tdddgddddS) Nrrrrrr-)rrr) r3rr@rrErFr rr rrs r)test_bound_limit_offsetz'LimitOffsetTest.test_bound_limit_offsets &  E7OO Xegj ! ! U9S>> " " VIcNN # #  "##      r+NrQ)rKrLrMrNrOr*r7r@rrrCrrrrbound_limit_offsetrrrrQr+r)rrs@K  [    [  BBBB             9 9 9 (  )(  (  )(  (   )(    r+rceZdZdZedZedZddZdZdZ e j j e j j dZe j jd Zd Ze j j d Zd Zd S)CompoundSelectTestTc td|tdtdtdttdtdSrrr&s r)r*z CompoundSelectTest.define_tablesrr+c ||jjddddddddddddddddgdSrr1r5s r)r7zCompoundSelectTest.insert_datarr+rQcttj|||dSr9r:rs r)r@z!CompoundSelectTest._assert_result rr+cl|jj}t|g|jjdk}t|g|jjdk}t ||}|||jjddgdSNrr rr) r3rrwhererFr rr@rEr>rjs1s2u1s r)test_plain_unionz#CompoundSelectTest.test_plain_union s & UG__ " "57:? 3 3 UG__ " "57:? 3 3 2r]] BKK009i2HIIIIIr+c|jj}t|g|jjdk}t|g|jjdk}t ||}|| |jjddgdSr) r3rrrrFr raliasr@rErs r)test_select_from_plain_unionz/CompoundSelectTest.test_select_from_plain_unions & UG__ " "57:? 3 3 UG__ " "57:? 3 3 2r]] " " ) ) + + BKK009i2HIIIIIr+cR|jj}t|g|jjdkd|jj}t|g|jjdkd|jj}t||d}| ||jjddgdSNrr-r rr) r3rrrrFr rrErr@rs r)&test_limit_offset_selectable_in_unionsz9CompoundSelectTest.test_limit_offset_selectable_in_unionss & E7OO U57:? # # U1XX Xegj ! !  E7OO U57:? # # U1XX Xegj ! ! 2r]]  # # BKK009i2HIIIIIr+c|jj}t|g|jjdk|jj}t|g|jjdk|jj}t||d}| ||jjddgdSr) r3rrrrFr rErrr@rs r)"test_order_by_selectable_in_unionsz5CompoundSelectTest.test_order_by_selectable_in_unions1s & UG__ " "57:? 3 3 < > UG__ " "57:? 3 3 < < > > 2r]]  # # BKK009i2HIIIIIr+c|jj}t|g|jjdkd|jj}t|g|jjdkd|jj}t|| }| |d|jjddgdSr) r3rrrrFr rrErrr@rs r)&test_limit_offset_in_unions_from_aliasz9CompoundSelectTest.test_limit_offset_in_unions_from_aliasBs & E7OO U57:? # # U1XX Xegj ! !  E7OO U57:? # # U1XX Xegj ! ! 2r]] " "  IIKK  a ) )"$' 2 2Y 4J     r+c|jj}t|g|jjdkd|jj}t|g|jjdkd|jj}t||d}| ||jjddgdSr) r3rrrrFr rrErrr@rs r).test_limit_offset_aliased_selectable_in_unionszACompoundSelectTest.test_limit_offset_aliased_selectable_in_unionsXs & E7OO U57:? # # U1XX Xegj ! ! UWW VXX  E7OO U57:? # # U1XX Xegj ! ! UWW VXX 2r]]  # # BKK009i2HIIIIIr+Nr)rKrLrMrNrOr*r7r@rrrrCorder_by_col_from_union/parens_in_union_contained_select_w_limit_offsetr0parens_in_union_contained_select_wo_limit_offsetrrrrrQr+r)rrs/K  [    [  BBBBJJJJJJ - EJJFE.-J$ FJJGFJJJJ E  FE *JJJJJr+rceZdZdZedZedZddZdZe j j dZ e j j dZ d Ze j jd Ze j jd Zd Zd ZdZdZdZdS)ExpandingBoundInTestTc td|tdtdtdttdttdtddS) Nrr Tr!rUrVzrXr%r&s r)r*z"ExpandingBoundInTest.define_tablesrsc   4d 3 3 3 3 3 3r # #      r+c ||jjdddddddddddddddddd d dgdS) Nr-rz1)r rUrVrr z2r_z3rnz4r1r5s r)r7z ExpandingBoundInTest.insert_data}sy J ! ( ( * *qqt44qqt44qqt44qqt44       r+rQcttj|||dSr9r:rs r)r@z#ExpandingBoundInTest._assert_resultrr+c|jj}t|jjg|jjtdd|jj tdd |jj}| |gggddS)NrWT expandingrY)rWrYr) r3rrrFr rrUrr rVrEr@r>rjrs r)test_multiple_empty_setsz-ExpandingBoundInTest.test_multiple_empty_setss & EGJ< U579==3$!?!?!?@@ A A U579==3$!?!?!?@@ A A Xegj ! !  D"2B-?-?@@@@@r+cn|jj}t|jjgt |jj|jj tdd |jj}| |gdgidSNrWTrr r3rrrFr rrrUrrr rEr@rs r)test_empty_heterogeneous_tuplesz4ExpandingBoundInTest.test_empty_heterogeneous_tuples & EGJ< Uuwy%'),,00cT222 Xegj ! !  D"c2Y77777r+cn|jj}t|jjgt |jj|jj tdd |jj}| |gdgidSr r3rrrFr rrrUrVrr rEr@rs r)test_empty_homogeneous_tuplesz2ExpandingBoundInTest.test_empty_homogeneous_tuplesrr+cF|jj}t|jjg|jjtdd |jj}| |gddgdidS)NrWTrrfrgr_)rr r_r r3rrrFr rrUrr rEr@rs r)test_bound_in_scalarz)ExpandingBoundInTest.test_bound_in_scalars & EGJ< U579==3$!?!?!?@@ A A Xegj ! ! D"4"4"4c999=MNNNNNr+cv|jj}t|jjgt |jj|jj tdd |jj}| |gddgdidS)NrWTrr))rr )r r_)r_rnrrrs r)test_bound_in_two_tuplez,ExpandingBoundInTest.test_bound_in_two_tuples & EGJ< Uuwy%'),,00cT222 Xegj ! !   $$$c3K3K3K-L      r+cv|jj}t|jjgt |jj|jj tdd |jj}| |gddgdidS)NrWTrr))rr)r r)r_rrrrs r)%test_bound_in_heterogeneous_two_tuplez:ExpandingBoundInTest.test_bound_in_heterogeneous_two_tuples & EGJ< Uuwy%'),,00cT222 Xegj ! !      :::;      r+c>|jj}t|jjg|jjtdd |jj}| |gdgidSrrrs r)test_empty_set_against_integerz3ExpandingBoundInTest.test_empty_set_against_integer & EGJ< U579==3$!?!?!?@@ A A Xegj ! ! D"c2Y77777r+cB|jj}t|jjg|jjtdd |jj}| |gddgidSNrWTr)rerfrgrr) r3rrrFr rrUnotin_r rEr@rs r)'test_empty_set_against_integer_negationz|jj}t|jjg|jjtdd |jj}| |gdgidSr) r3rrrFr rrrr rEr@rs r)test_empty_set_against_stringz2ExpandingBoundInTest.test_empty_set_against_stringrr+cB|jj}t|jjg|jjtdd |jj}| |gddgidSr) r3rrrFr rrrr rEr@rs r)&test_empty_set_against_string_negationz;ExpandingBoundInTest.test_empty_set_against_string_negation rr+c btttt dddt fgt g}ttj | dddS)NfoorQT)valuer)else_)Fr) rr rrr rrrr;r2fetchone)r>rs r)test_null_in_empty_set_is_falsez4ExpandingBoundInTest.test_null_in_empty_set_is_falses!FFJJ )%rT J J J!FF  ''       FI  d # # , , . .q 1:>>>>>r+Nr)rKrLrMrNrOr*r7r@rrrCtuple_in_w_emptyrrrtuple_inrrrrrrrrQr+r)rrosbK  [    [  BBBB A A A & 8 8'& 8 & 8 8'& 8 O O O    "    & 8 8 8 N N N 8 8 8 N N N?????r+rceZdZdZdZdZedZedZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdS)LikeFunctionsTestTonceNc td|tdtdtdtddS)Nrr Tr!r#rXr%r&s r)r*zLikeFunctionsTest.define_tables0sI   4d 3 3 3 66":: & &      r+c||jjddddddddddd dd d dd d dddddddddddddg dS)Nr-abcdefgr/rzab/cdefgr zab%cdefgr_ab_cdefgrnzabcde/fgzabcde%fgrpzab#cdefgab9cdefg zabcde#fg abcd9fgr1r5s r)r7zLikeFunctionsTest.insert_data9s J ! ( ( * *),,*--*--*--*--*--*--*--*--9--      r+c>|jj}tj5}d|t |jjg |D}dddn #1swxYwYt||dS)Nch|]\}|SrQrQ).0rs r) z*LikeFunctionsTest._test..Os*Er+) r3rrr;connectr2rrFr rr)r>rexpectedrconnrowss r)_testzLikeFunctionsTest._testKs[+ Y    D"llJLO,--33D99D                D(sA BB Bc|jjjj}||dhddS)Nab%c r-rr r_rnrrprrrr3rrFr#r startswithr>cols r)test_startswith_unescapedz+LikeFunctionsTest.test_startswith_unescapedXs?k$&+ 3>>&))+J+J+JKKKKKr+c|jjjj}||dddhdS)NrT autoescaper r!r#s r)test_startswith_autoescapez,LikeFunctionsTest.test_startswith_autoescape\s>k$&+ 3>>&T>::QC@@@@@r+c|jjjj}||t dhddS)Nz'ab%c'r )r3rrFr#rr"rr#s r)test_startswith_sqlexprz)LikeFunctionsTest.test_startswith_sqlexpr`sRk$&+ NN>(33 4 4 + + +     r+c|jjjj}||dddhdS)Nzab##c#escaperpr!r#s r)test_startswith_escapez(LikeFunctionsTest.test_startswith_escapegs>k$&+ 3>>'#>66<<<<>&T#>FFLLL 3>>&T#>FFLLLLLr+c|jjjj}||dhddS)Ne%fg r-rr r_rnrrprrr3rrFr#rendswithr#s r)test_endswith_unescapedz)LikeFunctionsTest.test_endswith_unescapedps?k$&+ 3<<'')D)D)DEEEEEr+c|jjjj}||t dhddS)Nz'e%fg'r6)r3rrFr#rr8rr#s r)test_endswith_sqlexprz'LikeFunctionsTest.test_endswith_sqlexprtsRk$&+ LL11 2 24O4O4O     r+c|jjjj}||dddhdS)Nr5Tr'rr7r#s r)test_endswith_autoescapez*LikeFunctionsTest.test_endswith_autoescapezs>k$&+ 3<<4<881#>>>>>r+c|jjjj}||dddhdS)Nze##fgr-r.rr7r#s r)test_endswith_escapez&LikeFunctionsTest.test_endswith_escape~s>k$&+ 3<<<44qc:::::r+c|jjjj}||ddddh||ddddhdS)Nr5Tr-r2rze#fgrr7r#s r)test_endswith_autoescape_escapez1LikeFunctionsTest.test_endswith_autoescape_escapehk$&+ 3<<4<DDqcJJJ 3<<4<DDqcJJJJJr+c|jjjj}||dhddS)Nb%cder6r3rrFr#rcontainsr#s r)test_contains_unescapedz)LikeFunctionsTest.test_contains_unescapeds?k$&+ 3<<((*E*E*EFFFFFr+c|jjjj}||dddhdS)NrDTr'r rEr#s r)test_contains_autoescapez*LikeFunctionsTest.test_contains_autoescapes>k$&+ 3<<D<99A3?????r+c|jjjj}||dddhdS)Nzb##cder-r.rprEr#s r)test_contains_escapez&LikeFunctionsTest.test_contains_escapes>k$&+ 3<<<55s;;;;;r+c|jjjj}||ddddh||ddddhdS)Nzb%cdTr-r2r zb#cdrprEr#s r)test_contains_autoescape_escapez1LikeFunctionsTest.test_contains_autoescape_escaperBr+)rKrLrMrN run_inserts run_deletesrOr*r7rr%r)r+r0r3r9r;r=r?rArGrIrKrMrQr+r)r r *sRKKK  [   [ "   LLLAAA   ===MMM FFF   ???;;;KKK GGG@@@<<<KKKKKr+r cNeZdZdZdZedZedZdZdZ dS)ComputedColumnTestT)computed_columnsctd|tdtdtdttdttdtdttd dS) Nsquarer Tr!sideareaz side * side perimeterz4 * side)rrrr r&s r)r*z ComputedColumnTest.define_tablessq   4d 3 3 3 67 # # 67H]$;$; < < ;*)=)= > >      r+cz||jjddddddgdS)Nr-r)r rU*)r2r3rTr4r5s r)r7zComputedColumnTest.insert_datasP J  $ $ & &r " "2r$:$: ;     r+ctj5}|t t dg|jj |jjj j  }t|ddgddddS#1swxYwYdS)N*)r-rr$()rrY)rr;rr2rr select_fromr3rTrErFr r<rr>rress r)test_select_allz"ComputedColumnTest.test_select_alls Y    >D,,S {##T[/00$+,.122hjj  &(;< = = =  > > > > > > > > > > > > > > > > > >sBCC  C ctj5}|t |jjjj|jjjj g |jj |jjjj  }t|ddgddddS#1swxYwYdS)N)r$r\)r]r^)rr;rr2rr3rTrFrVrWr_rEr r<rr`s r)test_select_columnsz&ComputedColumnTest.test_select_columnss Y    /D,,['). 0B0D0NOT[/00$+,.122  hjj  i- . . . / / / / / / / / / / / / / / / / / /sB5C!!C%(C%N) rKrLrMrN __requires__rOr*r7rbrdrQr+r)rQrQspK(L  [   [ >>> / / / / /r+rQcJeZdZdZedZedZdZdZdS) ExistsTestTc td|tdtdtdtddS)Nstuffr Tr!r#rXr%r&s r)r*zExistsTest.define_tablessI   4d 3 3 3 66":: & &      r+c ||jjddddddddddddgdS)Nr- some datar/rr r_zsome other data)r2r3rir4r5s r)r7zExistsTest.insert_datasj J  # # % %+..+..+.."344       r+c @|jj}t|t t dgt|jj dk dgdS)Nr-rkre r3rirr2rrrr rFr#r<r>r6ris r)test_select_existszExistsTest.test_select_existss !    |$$**HHNN57<;#>??  hjj F      r+c >|jj}t|t t dgt|jj dk gdS)Nr-zno datarmrns r)test_select_exists_falsez#ExistsTest.test_select_exists_falses !    |$$**HHNN57<9#<==  hjj       r+N) rKrLrMrNrOr*r7rorqrQr+r)rgrgskK  [    [            r+rgc leZdZdZdZedZejdddddd d d Z d S)IsOrIsNotDistinctFromTestT)supports_is_distinct_fromc td|tdtdtdtdtdtddS)Nis_distinct_testr Tr!col_a)nullablecol_brr&s r)r*z'IsOrIsNotDistinctFromTest.define_tablessZ   4d 3 3 3 7Gd 3 3 3 7Gd 3 3 3      r+)both_int_differentrr-r-) both_int_samer-r-r)one_null_firstNr-r-)one_null_secondrNr-) both_nullNNriaaaz3col_a_value, col_b_value, expected_row_count_for_is)id_argnamesc|jj}||d||dg|||jj|jj }tt|||dkrdnd}|||jj |jj }tt||dS)Nr-)r rwryr) r3rvr2r4rrFrwis_distinct_fromryr<rlenisnot_distinct_from)r> col_a_value col_b_valueexpected_row_count_for_isr6tblr?expected_row_count_for_isnots r)test_is_or_isnot_distinct_fromz8IsOrIsNotDistinctFromTest.test_is_or_isnot_distinct_froms3k* JJLL k B B C   ## JJsu{33CEK@@ A A  (**  KK %   +a//AAQ %## JJsu{66su{CC D D  (**  KK (     r+N) rKrLrMrNrerOr*r combinationsrrQr+r)rsrss~K1L  [ W'"&'$ F     r+rsN)%rr assertionsrrschemarrr r r r rrrrrrrrrrrrrr TablesTestrrSrrrr rQrgrsrQr+r)rs" " " " " (%" " " JO<O<O<O<O