L iYddlmZddlZddlmZddlmZddlmZddlmZddl m Z ddl m Z dd l m Z dd l mZdd lmZdd lmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlm Z d dlm!Z!d dlm"Z"d dlm#Z#d d lm$Z$d d!lm%Z%d d"lm&Z&d d#lm'Z'd d$lm(Z(d d%l)m*Z*d d&l)m+Z+Gd'd(ejXZ-Gd)d*ejXZ.Gd+d,ej^Z0Gd-d.ejXZ1Gd/d0ejXZ2Gd1d2ejXZ3Gd3d4ejXZ4Gd5d6eeejXZ5Gd7d8ejXZ6Gd9d:ejXZ7Gd;dejXZ9Gd?d@ejXZ:GdAdBejXZ;GdCdDeejXZ<GdEdFejXZ=GdGdHejXZ>GdIdJejXZ?y)KN)AssertsCompiledSQL)AssertsExecutionResults)config)fixtures) assert_raises)eq_)in_) CursorSQL)Column)Table) bindparam)case)column)Computed)exists)false) ForeignKey)func)Identity)Integer)literal)literal_column)null)select)String)table)testing)text)true)tuple_) TupleType)union)values) DatabaseError)ProgrammingErrorcneZdZdZedZedZdZejjdZ y) CollateTestTc ftd|tdtdtdtdy)N some_tableidT primary_keydatadr r rrclsmetadatas j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_select.py define_tableszCollateTest.define_tables4s*   4d 3 66#; '  c||j|jjjddddddgy)N collate data1r,r/r collate data2executetablesr+insertr3 connections r5 insert_datazCollateTest.insert_data=s; JJ ! ! ( ( */2/2  r7ctjj5}t|j |j |dddy#1swYyxYwNrdbconnectr r>fetchallselfrresultconns r5_assert_resultzCollateTest._assert_resultGE YY    9D  V$--/ 8 9 9 9 *AAchtjjtj}|j t |j jj|j jjjj|jddgy)N)r9r:)rr<) rrequiresget_order_by_collationrrNrr?r+order_bycr/collateasc)rK collations r5test_collate_order_byz!CollateTest.test_collate_order_byKs$$;;GNNK   4;;)) * 3 3 &&((--55i@DDF "#7 8  r7N) __name__ __module__ __qualname__ __backend__ classmethodr6rCrNrrRorder_by_collationrYr7r5r)r)1sRK    9 (( ) r7r)ceZdZdZdZedZedZdZdZ dZ dZ d Z d Z ejj d Zy ) OrderByLabelTestzTest the dialect sends appropriate ORDER BY expressions when labels are used. This essentially exercises the "supports_simple_order_by_label" setting. Tctd|tdtdtdttdttdtdtd tdy) Nr+r,Tr-xyq2pr1r2s r5r6zOrderByLabelTest.define_tablesbsL   4d 3 3 3 3r # 3r # r7c |j|jjjddddddddddddddd d d dgy) Nr9rq1p3)r,rdrerfrhrq2p2q3p1r=rAs r5rCzOrderByLabelTest.insert_datansU JJ ! ! ( ( *qqt$?qqt$?qqt$?  r7ctjj5}t|j |j |dddy#1swYyxYwrErFrJs r5rNzOrderByLabelTest._assert_resultyrOrPc|jj}|jjj d}|j t |j|gdy)Nlxr9rr)r?r+rUrdlabelrNrrTrKrrss r5 test_plainzOrderByLabelTest.test_plain}sG && WWYY__T " F2J//35GHr7c|jj}|jj|jjzj d}|j t|j|gdy)Nrs)rw) r?r+rUrdrerxrNrrTrys r5test_composed_intz"OrderByLabelTest.test_composed_intsV &&ggii%''))# * *4 0 F2J//35GHr7c|jj}|jj|jjzj d}t j|jj|jjzj d}|jt||j||jgdy)Nrsly))rq1p3)r}q2p2)rq3p1)r?r+rUrdrerxrlowerrfrhrNrrTdesc)rKrrsrs r5test_composed_multiplez'OrderByLabelTest.test_composed_multiples &&ggii%''))# * *4 0jj#eggii/ 6 6t <  2rN # #B 2 3 r7c|jj}|jjj d}|j t |j|jgdy)Nrs)rwrvru) r?r+rUrdrxrNrrTrrys r5test_plain_descz OrderByLabelTest.test_plain_descsM && WWYY__T " F2J// :rall)rKrB value_exprs r5 test_tuplesz ValuesExpressionTest.test_tuplessX 4 !6&  $9 :    vj1 2 6 6 8 6 r7N)rZr[r\ __requires__r]rr`r7r5rrs/LK r7rcbeZdZdZedZedZ d'dZd(dZdZ dZ e jjdZe jjd Ze j"gd gd gd d e jjdZe jjdZe jj(dZe jjdZe jjdZe jjdZe jj2dZe jj2dZe jj2dZe jjdZe jj<dZe jj<dZ e jj<dZ!e jje jjDdZ#e jj<dZ$e jj<dZ%e jjLdZ'e jjLe jjPd Z)e jjLe jjPd!Z*e jjVd"Z,e jjVe jjPd#Z-e jjLe jjVd$Z.e jjLe jjVe jjPd%Z/y&))FetchLimitOffsetTestTc ztd|tdtdtdttdtyNr+r,Tr-rdrer r rr2s r5r6z"FetchLimitOffsetTest.define_tables0   4d 3 3 3  r7c |j|jjjddddddddddddddddddddgy)Nr9rr,rdrerrnr}r=rAs r5rCz FetchLimitOffsetTest.insert_datas] JJ ! ! ( ( *qq)qq)qq)qq)qq)   r7c|r]|j||j}tt|t|tt |t |yt|j||j|yrE)r>rIr lenset)rKrBrrLparamsset_ query_ress r5rNz#FetchLimitOffsetTest._assert_resultsh "**66:CCEI IF , IF ,  ""662;;=v Fr7ctjj5}t|j ||j |dddy#1swYyxYwrE)rrGrHr exec_driver_sqlrIrKrrLrrMs r5_assert_result_strz'FetchLimitOffsetTest._assert_result_strsM YY    ID $$VV4==? H I I I +AAc|jj}t|j|jj }|j ||jdddg|j ||jdgdyNrr9r9rrrrrrrrrrn)r?r+rrTrUr,rNlimit)rKrBrrs r5test_simple_limitz&FetchLimitOffsetTest.test_simple_limitsr &&e}%%eggjj1   JJqM  "   JJqM - r7cD|jj}t|jjj dj }tt|t|jj}|j||dgy)Nr9ru) r?r+rrUr,rscalar_subqueryr$subqueryrN)rKrBrrus r5 test_limit_render_multiple_timesz5FetchLimitOffsetTest.test_limit_render_multiple_timessy &&eggjj!''*::< &,t - 6 6 8 ? ? A     r7cp|jj}|j|t|j |j j jdddg|j|t|j |j j jdgdyrr?r+rNrrTrUr,fetchrKrBrs r5test_simple_fetchz&FetchLimitOffsetTest.test_simple_fetchs &&   5M " "577:: . 4 4Q 7  "   5M " "577:: . 4 4Q 7 - r7cp|jj}|j|t|j |j j jdgd|j|t|j |j j jdddgy)Nrrrnrnr}r}rnrrrrr?r+rNrrTrUr,offsetrs r5test_simple_offsetz'FetchLimitOffsetTest.test_simple_offsets &&   5M " "577:: . 5 5a 8 -   5M " "577:: . 5 5a 8  " r7)rrrr9rr)rrr)rr9rrcasesargnamesc:|jj}|ji}gd}|D]j\}}||||z}|j|t |j |j jj|j||ly)N)compiled_cacherrrrr) r?r+execution_optionsrNrrTrUr,rr)rKrBrr assert_datarrexpecteds r5test_simple_limit_offsetz-FetchLimitOffsetTest.test_simple_limit_offsets &&111D M " ME6"6FUN;H   u &&uwwzz288?FFvN  r7c|jj}|j|t|j |j j jdjdddg|j|t|j |j j jdjdgdy)Nrr9rrrr r?r+rNrrTrUr,rrrs r5test_simple_fetch_offsetz-FetchLimitOffsetTest.test_simple_fetch_offset*s &&   5M " "577:: . 4 4Q 7 > >q A  "   5M " "577:: . 4 4Q 7 > >q A - r7c|jj}|j|t|j dgddy)N rTr)r?r+rNrrrs r5test_fetch_offset_no_orderz/FetchLimitOffsetTest.test_fetch_offset_no_order9s? &&   5M   # C  r7cp|jj}|j|t|j |j j jdgd|j|t|j |j j jdgdy)Nrrr9rrrrrrs r5test_simple_offset_zeroz,FetchLimitOffsetTest.test_simple_offset_zeroCs &&   5M " "577:: . 5 5a 8 C   5M " "577:: . 5 5a 8 8 r7c`|jj}t|j|jj j djd}|jtjjddi}t|}|j|ddgy z7test that 'literal binds' mode works - no bound params.rr9 literal_bindsT)dialectcompile_kwargsrrN)r?r+rrTrUr,rrcompilerrGrstrrrKrrsqls r5test_limit_offset_nobindsz.FetchLimitOffsetTest.test_limit_offset_nobindsR &&e}%%eggjj177:AA!DllII%%6M #h i%; " VIcN #  "#     5M Xeggjj ! U9S> " VIcN # -#  r7c|jj}|j|t|j |j j jtdjtdddgddd|j|t|j |j j jtdjtdgd d ddy) Nfrrrrr9)rrrrr) r?r+rNrrTrUr,rrrrs r5test_bound_fetch_offsetz,FetchLimitOffsetTest.test_bound_fetch_offsetrr7c |jj}|j|t|j |j j jtdtdzddgy)N12rr) r?r+rNrrTrUr,rrrs r5test_expr_offsetz%FetchLimitOffsetTest.test_expr_offsets\ &&   5M Xeggjj ! VN3'.*== >  "  r7c |jj}|j|t|j |j j jtdtdzgdy)Nrrr) r?r+rNrrTrUr,rrrs r5test_expr_limitz$FetchLimitOffsetTest.test_expr_limitsW &&   5M Xeggjj ! U>#&)<< = -  r7c B|jj}|j|t|j |j j jtdtdzjtdtdzddgyNrrr r?r+rNrrTrUr,rrrrs r5test_expr_limit_offsetz+FetchLimitOffsetTest.test_expr_limit_offsetsu &&   5M Xeggjj ! U>#&)<< = VN3'.*== >  "  r7c B|jj}|j|t|j |j j jtdtdzjtdtdzddgyr) r?r+rNrrTrUr,rrrrs r5test_expr_fetch_offsetz+FetchLimitOffsetTest.test_expr_fetch_offsetsw &&   5M Xeggjj ! U>#&)<< = VN3'.*== >  "  r7c |jj}|j|t|j |j j jdjtdtdzddg|j|t|j |j j jdjtdtdzgdy)Nrrrrrr) r?r+rNrrTrUr,rrrrs r5test_simple_limit_expr_offsetz2FetchLimitOffsetTest.test_simple_limit_expr_offsets &&   5M Xeggjj ! U1X VN3'.*== >  "     5M Xeggjj ! U1X VN3'.*== > -  r7c |jj}|j|t|j |j j jtdtdzjdddg|j|t|j |j j jtdtdzjdddgy)Nrrrrr9rr rs r5test_expr_limit_simple_offsetz2FetchLimitOffsetTest.test_expr_limit_simple_offsets &&   5M Xeggjj ! U>#&)<< = VAY  "     5M Xeggjj ! U>#&)<< = VAY  "  r7c|jj}|j|t|j |j j jjddddgd|j|t|j |j j jjddgddy) Nr9T with_tiesrrrrr r?r+rNrrTrUrdrrrs r5test_simple_fetch_tiesz+FetchLimitOffsetTest.test_simple_fetch_tiess &&   5M " "57799>>#3 4 : :1 : M  "     5M " "57799>>#3 4 : :1 : M -  r7cR|jj}|jt|j |j j jddjdj}t|ddtt|hdy)NrTrrrrrr r?r+r>rrTrUrdrrrIr rrKrBrfas r5test_fetch_offset_tiesz+FetchLimitOffsetTest.test_fetch_offset_ties&s~ &&    5M Xeggii U1U % VAY  (* BqE9 CG67r7c|jj}|j|t|j |j j jddjdddg|j|t|j |j j jddjddd gy) NrTrr9rrrrr) r?r+rNrrTrUrdrrrs r5#test_fetch_offset_ties_exact_numberz8FetchLimitOffsetTest.test_fetch_offset_ties_exact_number3s &&   5M Xeggii U1U % VAY  "     5M Xeggii U1U % VAY  "  r7c|jj}|j|t|j |j j jdddgy)NTpercentrrrs r5test_simple_fetch_percentz.FetchLimitOffsetTest.test_simple_fetch_percentIsQ &&   5M " "577:: . 4 4R 4 F K r7c|jj}|j|t|j |j j jddjdddgy)N(Tr r9rrrrs r5test_fetch_offset_percentz.FetchLimitOffsetTest.test_fetch_offset_percentRs\ &&   5M Xeggjj ! U2tU $ VAY  "  r7c|jj}|j|t|j |j j jjdddddgdy)NrTr!rrrrrrs r5test_simple_fetch_percent_tiesz3FetchLimitOffsetTest.test_simple_fetch_percent_ties_sd &&   5M Xeggiinn& ' U2ttU 4  "  r7cT|jj}|jt|j |j j jdddjdj}t|ddtt|hdy)Nr$Tr'rrrrrrs r5test_fetch_offset_percent_tiesz3FetchLimitOffsetTest.test_fetch_offset_percent_tiesls &&    5M Xeggii U2ttU 4 VAY  (* BqE9 CG67r7N)r`Fr`)0rZr[r\r]r^r6rCrNrrrrrR fetch_firstrrr combinationsrrfetch_no_order_byrrrrbound_limit_offsetrrrrsql_expression_limit_offsetrrr fetch_expressionr rr fetch_tiesrfetch_offset_with_optionsrr fetch_percentr"r%r(r*r`r7r5rrsK      ;@ GI     !!  "       W ! ! !       !!  "   '' (        = = !! =" = (( )  (( )  (( ) , !! " , 11 2  11 2  11  2   !! &&  '"   11 2 ( 11 2 (    !     // 80! 8    // 0! ( ## $  ## //  0$      ##  $!      ## // 80$! 8r7rcJeZdZdZdZdZedZedZdZ dZ dZ y ) SameNamedSchemaTableTestztests for #7471T)schemasc td|tdtdtjtd|tdtdtdtdy) Nr+r,Tr-)schema some_table_idFnullable)r r rr test_schemar2s r5r6z&SameNamedSchemaTableTest.define_tablessR   4d 3%%     4d 3    r7c|jddtjz\}}|j|j ddi|j|j dddy)Nr+ %s.some_tabler,r9)r,r:)r?rr=r>r@)r3rBr+some_table_schemas r5rCz$SameNamedSchemaTableTest.insert_datasd(+ /F,>,>>) % % ,335ayA:,,.q10MNr7c .|jddtjz\}}t|j t ||j |||jj|jjk(jdy)Nr+r?r9r9r9) r?rr=r r>r join_fromrUr:r,firstrKrBr+r@s r5test_simple_join_both_tablesz5SameNamedSchemaTableTest.test_simple_join_both_tabless(, /F,>,>>) % %   z#45??%LL..2C2E2E2H2HH  eg  r7c x|jddtjz\}}t|j t |j |||jj|jjk(j|jjdk(jdy)Nr+r?r9r9r9) r?rr=r r>rrCrUr:r,whererDrEs r5!test_simple_join_whereclause_onlyz:SameNamedSchemaTableTest.test_simple_join_whereclause_onlys(, /F,>,>>) % %   z"%LL..2C2E2E2H2HH z||!+, eg  r7c |jddtjz\}}t|j |||j j |j jk(j|j jdk(j}t|jt||j jj |||j j |j jk(j|j jdk(jdy)Nr+r?r9rB) r?rr=rrCrUr:r,rIrr r>rD)rKrBr+r@subqs r5 test_subqueryz&SameNamedSchemaTableTest.test_subquerys(, /F,>,>>) % % :  Y! **.?.A.A.D.DD U:<  r7c |j|jjjddiddiddiddiddig|j|jjjddddddddddddgy)Nr,r9rrrnr})r,rU)r>r?rSr@rTrAs r5rCzJoinTest.insert_datas JJLL   !AYq D!9tQi$ C  JJLL   !!$!$!$!$   r7c|jdd\}}t||j|j|j |j j |j j }|j|gdyNrSrT)rB)r9rr9)rrnr)rr}rr?r select_fromjoinrTrUr,rNrKrSrTrs r5test_inner_join_fkzJoinTest.test_inner_join_fkb{{3$1a|''q 2;;ACCFFACCFFK D"NOr7c |jdd\}}t||j|j|t j |j j|j j}|j|tjgdgdDcgc]\\}\}}|||fc}}}ycc}}}w)NrSrT)rurvrwrnr|)rHr)rnr)r}r) r?rrZr[r!rTrUr,rN itertoolsproduct)rKrSrTrrUs r5test_inner_join_truezJoinTest.test_inner_join_trues{{3$1 1aL [46* + Xaccffaccff %  %.$5$524%   DQ&1aAq    s+C c(|jdd\}}t||j|j|t j |j j|j j}|j|gy)NrSrT) r?rrZr[rrTrUr,rNr\s r5test_inner_join_falsezJoinTest.test_inner_join_falsesk{{3$1 1aL [57+ , Xaccffaccff % D"%r7c,|jdd\}}t||j|j|t j |j j|j j}|j|gdy)NrSrT))r9NN)rNN)rNN)rnNN)r}NN) r?rrZ outerjoinrrTrUr,rNr\s r5test_outer_join_falsezJoinTest.test_outer_join_false&sq{{3$1 1aL [Q0 1 Xaccffaccff %    r7c|jdd\}}t||j|j|j |j j |j j }|j|gdyrXrYr\s r5test_outer_join_fkzJoinTest.test_outer_join_fk:r^r7Nr+) rZr[r\r]rNr^r6rCr]rcrerhrjr`r7r5rOrOsPKA    P ( & (Pr7rOc*eZdZdZedZedZd dZdZdZ e jje jjdZe jjdZd Ze jjd Zd Zy )CompoundSelectTestTc ztd|tdtdtdttdtyrrr2s r5r6z CompoundSelectTest.define_tablesErr7c |j|jjjddddddddddddddddgy)Nr9rrrrnr}r=rAs r5rCzCompoundSelectTest.insert_dataOsS JJ ! ! ( ( *qq)qq)qq)qq)   r7ctjj5}t|j ||j |dddy#1swYyxYwrErFrs r5rNz!CompoundSelectTest._assert_result[rQrcz|jj}t|j|jj dk(}t|j|jj dk(}t ||}|j|j|jj ddgyNrrrr) r?r+rrIrUr,r$rNrTselected_columnsrKrs1s2u1s r5test_plain_unionz#CompoundSelectTest.test_plain_union_s && E] q 1 E] q 1 2r]  KK++.. /)Y1G r7c|jj}t|j|jj dk(}t|j|jj dk(}t ||jj}|j|j|jj ddgyrq) r?r+rrIrUr,r$aliasrNrTrrrss r5test_select_from_plain_unionz/CompoundSelectTest.test_select_from_plain_unionis && E] q 1 E] q 1 2r] " ) ) +  KK++.. /)Y1G r7c`|jj}t|j|jj dk(j dj|jj }t|j|jj dk(j dj|jj }t||j d}|j|j|jj ddgyNrr9rrr) r?r+rrIrUr,rrTr$rNrrrss r5&test_limit_offset_selectable_in_unionsz9CompoundSelectTest.test_limit_offset_selectable_in_unionsss && E] q 1 7 7 : C CEGGJJ O E] q 1 7 7 : C CEGGJJ O 2r]  #  KK++.. /)Y1G r7c$|jj}t|j|jj dk(j |jj }t|j|jj dk(j |jj }t||jd}|j|j |jj ddgyrq) r?r+rrIrUr,rTr$rrNrrrss r5"test_order_by_selectable_in_unionsz5CompoundSelectTest.test_order_by_selectable_in_unionss && E] q 1 : :577:: F E] q 1 : :577:: F 2r]  #  KK++.. /)Y1G r7c|jj}t|j|jj dk(j }t|j|jj dk(j }t||jd}|j|j|jj ddgyrq) r?r+rrIrUr,distinctr$rrNrTrrrss r5"test_distinct_selectable_in_unionsz5CompoundSelectTest.test_distinct_selectable_in_unionss && E] q 1 : : < E] q 1 : : < 2r]  #  KK++.. /)Y1G r7c|jj}t|j|jj dk(j dj|jj }t|j|jj dk(j dj|jj }t||j}|j|jj dj|jj ddgyr|) r?r+rrIrUr,rrTr$ryrNrss r5&test_limit_offset_in_unions_from_aliasz9CompoundSelectTest.test_limit_offset_in_unions_from_aliass && E] q 1 7 7 : C CEGGJJ O E] q 1 7 7 : C CEGGJJ O2r] "  IIK  a ) )"$$'' 2Y 4J r7c|jj}t|j|jj dk(j dj|jj jj}t|j|jj dk(j dj|jj jj}t||j d}|j|j|jj ddgyr|) r?r+rrIrUr,rrTryr$rNrrrss r5.test_limit_offset_aliased_selectable_in_unionszACompoundSelectTest.test_limit_offset_aliased_selectable_in_unionss && 5M U577::? # U1X Xeggjj ! UW VX  5M U577::? # U1X Xeggjj ! UW VX 2r]  #  KK++.. /)Y1G r7Nr+)rZr[r\r]r^r6rCrNrwrzrrRorder_by_col_from_union/parens_in_union_contained_select_w_limit_offsetr}0parens_in_union_contained_select_wo_limit_offsetrrrrr`r7r5rlrlBsK      A   -- EE F.  FF G   EE  F   r7rlceZdZdZdZedZedZdZdZ dZ dZ e jjd Ze jjd Zy ) PostCompileParamsTestT)standard_cursor_sqlc td|tdtdtdttdttdtdy Nr+r,Tr-rdrezrgr1r2s r5r6z#PostCompileParamsTest.define_tables>   4d 3 3 3 3r #  r7c |j|jjjdddddddddddddddddd d dgy Nr9rz1)r,rdrerrz2rnz3r}z4r=rAs r5rCz!PostCompileParamsTest.insert_data[ JJ ! ! ( ( *qqt4qqt4qqt4qqt4   r7c|jj}t|jjj |jj tddk(}|j|diy)NrfTliteral_executezKSELECT some_table.id FROM some_table WHERE some_table.x = __[POSTCOMPILE_q] r?r+rrUr,rIrdrassert_compilerKrrs r5 test_compilez"PostCompileParamsTest.test_compiles` &&eggjj!'' GGII3= =    5   r7c|jj}t|jjj |jj tdddk(}|j|didy)NrfrTrz