K ip'ddlZddlZddlmZddlmZ ddlm Z  ddl m Z mZejj ZdZejj'ddddgd d gd fd ddgd dgdfddgdgd fddgdgdfdddgd d gddgd dgdfdgdgdgdgddfdgdgdgdgd dfd!gd"gd#gd$gd%dfgejj'd&d'd(gejj'd)d'd(gejj'd*d(ej(d'ejj+gd,Zd-Zd.Zd/Zd0Zd1Zd2Zd3Zd4Zy#e $rYRwxYw#e $rYUwxYw)5N) IntegerType) _perform_join _filter_tablectjjgdgdd}tjjgdgdd}tjtj 5t d|d|ddddtjt5t ddd |d dddtjt5t d |d |d dddy#1swYlxYw#1swYGxYw#1swYyxYw) N)r)abcdefcolAcol2rrr r r )ABCDEcolBcol3 left outerrrzsuper mario join) paTable from_pydictpytestraises ArrowInvalidr TypeError ValueError)t1t2s b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_exec_plan.pytest_joins_corner_casesr,$s   ". B   ) B r '4lBB34 y !>lD&"f=> z "B("fb&ABB 44>>BBs$0C+!C7D+C47DD zjointype,expectedz left semirr rrz right semirrrz left antir rz right anticZinner)rrrrrrrr r rr)rrN)rrN right outer)r rN)rrr-)rrr. full outerrrr Nr rrNrrNr-rrNr. use_threadsTF coalesce_keys use_datasets)marksc ztj|}tjjgdgdd}tjjgdgdd}|r,t j |g}t j |g}t ||d|d|| }|j}d |vr|jd}n|jd}|rZ|d vr|jdg}nC|d k(r|jdg}n+|d k(r&|jdgjddgdg}||k(sJy)Nr0r1rr-rrr.rrrrr)r8r9right)r/rr2r3rrrr r-) r!tabler"r#dsdatasetrcombine_chunkssort_bydrop set_column)jointypeexpectedr8r9r:r)r*rs r+ test_joinsrK9s-bxx!H    B    B  ZZ  ZZ hFB"-] LA A( IIf  IIf  . .}}fX.H  &}}fX.H  %}}fX.99!Vm_UH ==c tjgdgdgdd}tjgdgdgdgdd }td |d d g|d d g}|j}|j d }|tjgdgdgdgdgdgdgdggdk(sJtd |d |d dd}|j}|j d }|tjgdgdgdgdgdgdgd d!k(sJtd |d |d dd"}|j}|j d }|tjgd#gdgdgdgdgdd$k(sJy)%Nr0 <r1rrcolVals)r-rPrOr>)d,r=)rrScolUniqrr3rrrW)Nrrr )NrPrOrQ)Nrr r)r-rPrON)r.rrN)rTrUrVN)r-rrN)rrrSrrSrWr)names_rF) right_suffixr9r4rOrPrQNr5)rOrPNr-r7)rVrUNrTr6)rrrScolB_r colVals_rrWcolA_rTr@)rrrSr\r]rWr!rArrDrEr)r*results r+test_table_join_collisionsrbs " B ""  Bb66*B0@BF  " " $F ^^I &F RXXOP PP P<VvD).0F " " $F ^^F #F RXX"($*("  <VvD)-/F " " $F ^^F #F RXX"($*(   rLc 0tjgdgdgdd}tjgdgdd}td|d |d d d d }|j}|j d }|tjgdgdgdgddk(sJy)NrNr0r1)rrrSr>r=)rScolXr3rrd_lrYT) left_suffixrZr9r[r@r5r7)rr colVals_lr]r_r`s r+test_table_join_keys_orderrhs " B " B <VR'+$)-/F " " $F ^^F #F RXX"**   rLc tjgdgdd}tjtj5t |t jt jdt jddddtjtj5t |t jdt jdkdddy#1swYkxYw#1swYyxYw)NrrOrP(2r rr rr.) r!rAr$r%ArrowTypeErrorrpcdividefieldscalarr&)ts r+test_filter_table_errorsrus   ! A r(( )Aa288C="))A,?@A r ':a"((3-299Q<79::AA::sAC126C=1C:=Dctjgdgdd}t|tjdtj dktjdtj dk(z}|tjdgdgdk(sJt|tjdtj d kD}|tjd d gd d gdk(sJy)Nrrjrnr r rrPrrkr r rlrm)r!rArrprrrsrtras r+test_filter_tablerxs   ! A  BHHSMRYYq\ )bhhsmryy}.L MF RXXST   1bhhsmbiim; R--i8 88 8 b6(B2F )  0 0 ; ;; ; b6(B2F &>R--i8 88 8rLcPtjgddgdzd}tjgddgdzd}tj||g}tdD]E}|j ddj g}|dtj dgdggk(rEJy) Nrzr r rnrrmF)r8)r!rAr{r|group_by aggregater})r~rrArras r+test_group_by_orderingrFs XXLuqy9 :F XXLuqy9 :F   ff- .E 2Y?7AA"Ec{b..u~>>>> ?rL)r$pyarrowr!pyarrow.computecomputerptest_extension_typerpyarrow.datasetrCrB ImportError pyarrow.acerorrmarkacero pytestmarkr, parametrizeparamrKrbrhrurxrrrrrLr+rs$,   :[[   B*,Ac Ac  Ac Ac       % % G)/)Tu 64-8d&++:M:M!NOQ!Q97U)\!H7t2 :* :"%9P ?[     s"E&E2&E/.E/2E;:E;