
    <>ip'                        S SK r S SKrS SKJr  SSKJr   S SKJ	r
   S SKJrJr  \ R                  R                   rS r\ R                  R'                  SSSS/S	S
/S.4SSS/SS/S.4SS/S/S.4SS/S/S.4SSS/S	S
/SS/SS/S.4S/ SQ/ SQ/ SQ/ SQS.4S/ SQ/ SQ/ SQ/ S QS.4S!/ S"Q/ S#Q/ S$Q/ S%QS.4/5      \ R                  R'                  S&S'S(/5      \ R                  R'                  S)S'S(/5      \ R                  R'                  S*S(\ R(                  " S'\ R                  R                  S+9/5      S, 5       5       5       5       rS- rS. rS/ rS0 rS1 rS2 rS3 rS4 rg! \ a     GNPf = f! \ a     GNTf = f)5    N   )IntegerType)_perform_join_filter_tablec                  B   [         R                  R                  / SQ/ SQS.5      n [         R                  R                  / SQ/ SQS.5      n[        R                  " [         R
                  5         [        SU SUS5        S S S 5        [        R                  " [        5         [        SS S	US
5        S S S 5        [        R                  " [        5         [        SU S	US
5        S S S 5        g ! , (       d  f       Ns= f! , (       d  f       NR= f! , (       d  f       g = f)N)r                  )abcdefcolAcol2r   r   r	   r
   r   )ABCDEcolBcol3
left outer r   r   zsuper mario join)	paTablefrom_pydictpytestraisesArrowInvalidr   	TypeError
ValueError)t1t2s     [/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_exec_plan.pytest_joins_corner_casesr,   $   s    			". 
B
 
		) 
B
 
r	'lBB3 
( 
y	!lD&"f= 
" 
z	"("fb&A 
#	" 
(	' 
"	! 
#	"s$   1C.#C?D.
C<?
D
Dzjointype,expectedz	left semir   r   r   r   z
right semir   r   r   z	left antir   r   z
right antic   Zinner)r   r   r   r   r   r   r   r   r   r   r   )r   r   N)r   r   Nright outer)r   r   N)r   r   r-   )r   r   r.   
full outerr   r   r   Nr   r   r   Nr   r   Nr-   r   r   Nr.   use_threadsTFcoalesce_keysuse_datasets)marksc           
         [         R                  " U5      n[         R                  R                  / SQ/ SQS.5      n[         R                  R                  / SQ/ SQS.5      nU(       a.  [        R
                  " U/5      n[        R
                  " U/5      n[        XSUSX#S	9nUR                  5       nS
U ;   a  UR                  S5      nOUR                  S5      nU(       a^  U S;   a  UR                  S/5      nOEU S:X  a  UR                  S/5      nO,U S:X  a&  UR                  S/5      R                  SS/ SQ/5      nXq:X  d   eg )Nr0   r1   r   r-   r   r   r.   r   r   r   r   r   )r8   r9   right)r/   r   r2   r3   r   r   r   r   r-   )r!   tabler"   r#   dsdatasetr   combine_chunkssort_bydrop
set_column)jointypeexpectedr8   r9   r:   r)   r*   rs           r+   
test_joinsrK   9   s'   b xx!H			 
B
 
		 
B
 ZZZZhFB"-	LA	A(IIfIIf..}}fX.H&}}fX.H%}}fX.99!Vm_UH==    c                     [         R                  " / SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ SQS	.5      n[        S
U SS/USS/5      nUR                  5       nUR	                  S5      nU[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ// SQS9:X  d   e[        S
U SUSSSS9nUR                  5       nUR	                  S5      nU[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S QS!.5      :X  d   e[        S
U SUSSS"S9nUR                  5       nUR	                  S5      nU[         R                  " / S#Q/ SQ/ SQ/ SQ/ SQ/ SQS$.5      :X  d   eg )%Nr0   
      <   r1   r   r   colVals)r-   rP   rO   r>   )d      ,  r=   )r   rS   colUniqr   r3   r   r   rW   )Nr   r   r   )NrP   rO   rQ   )Nr   r   r   )r-   rP   rO   N)r.   r   r   N)rT   rU   rV   N)r-   r   r   N)r   r   rS   r   rS   rW   r   )names_rF)right_suffixr9   r4   rO   rP   rQ   Nr5   )rO   rP   Nr-   r7   )rV   rU   NrT   r6   )r   r   rS   colB_r	colVals_rrW   colA_rTr@   )r   r   rS   r\   r]   rW   r!   rA   r   rD   rE   r)   r*   results      r+   test_table_join_collisionsrb      s   	" 
B 
""	 
B b66*B0@BF""$F^^I&FRXX OP P P P <VvD).0F ""$F^^F#FRXX"($*("     <VvD)-/F ""$F^^F#FRXX"($*(    rL   c                  2   [         R                  " / SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQS.5      n[        SU S	US
SSSS9nUR                  5       nUR	                  S	5      nU[         R                  " / SQ/ SQ/ SQ/ SQS.5      :X  d   eg )NrN   r0   r1   )r   r   rS   r>   r=   )rS   colXr3   r   rd   _lrY   T)left_suffixrZ   r9   r[   r@   r5   r7   )r   r   	colVals_lr]   r_   r`   s      r+   test_table_join_keys_orderrh      s    	" 
B 
" 
B
 <VR'+$)-/F ""$F^^F#FRXX"**	    rL   c            
      6   [         R                  " / SQ/ SQS.5      n [        R                  " [         R                  5         [        U [        R                  " [        R                  " S5      [        R                  " S5      5      5        S S S 5        [        R                  " [         R                  5         [        U [        R                  " S5      [        R                  " S5      :*  5        S S S 5        g ! , (       d  f       Ns= f! , (       d  f       g = f)Nr   rO   rP      (   2   r   r   r   r   r.   )r!   rA   r$   r%   ArrowTypeErrorr   pcdividefieldscalarr&   )ts    r+   test_filter_table_errorsru      s    
! 	A
 
r((	)a288C="))A,?@ 
* 
r	'a"((3-299Q<79 
(	' 
*	) 
(	's   A
C988D
9
D

Dc                     [         R                  " / SQ/ SQS.5      n [        U [        R                  " S5      [        R
                  " S5      :*  [        R                  " S5      [        R
                  " S5      :H  -  5      nU[         R                  " S/S/S.5      :X  d   e[        U [        R                  " S5      [        R
                  " S	5      :  5      nU[         R                  " S
S/SS/S.5      :X  d   eg )Nr   rj   rn   r   r	   r   rP   r   rk   r
   r   rl   rm   )r!   rA   r   rp   rr   rs   rt   ra   s     r+   test_filter_tablerx      s    
! 	A
 	BHHSMRYYq\)bhhsmryy}.LMF RXXST    
 1bhhsmbiim;<FRXXV"X    rL   c                  ^   [         R                  " / SQS/S-  S.5      n [         R                  " / SQS/S-  S.5      n[         R                  " X/5      n[        S5       HI  n[	        U[
        R                  " S5      S:H  5      nUS   [         R                  " S/S//5      :X  a  MI   e   g )Nr   r   r	   r
   r   r
   rn   r   rP   r   )r!   rA   concat_tablesranger   rp   rr   chunked_array)table1table2rA   _rJ   s        r+   test_filter_table_orderingr      s    XXLuqy9:FXXLuqy9:Ff-.E2Y %#!!34v))C53%.9999 rL   c            
         [         R                  " / SQ/ SQS.5      n [        U [        R                  " [        R
                  " S5      [        R                  " S5      5      [        R                  " S5      :H  [        R                  " [        R
                  " S5      [        R                  " S5      5      [        R
                  " S5      :H  -  5      nU[         R                  " / S	Q/ S
QS.5      :X  d   eg )N)r   r   r	   r
   r   r   r   )rO   rP   rk   rl   rm   rQ   =   rn   r   r   r   rO   r   )r   r
   r   )rP   rl   rQ   )r!   rA   r   rp   bit_wise_andrr   rs   multiplyrw   s     r+   test_complex_filter_tabler     s    
") 	A
 	R__RXXc]BIIaL9RYYq\I[[#		"6"((3-GIF
 RXX    rL   c                  h   [         R                  " / SQ[         R                  " 5       S9n [        5       n[         R                  R                  X5      n[         R                  R                  [         R                  " / SQ5      [         R                  " / SQ5      5      n[         R                  " / SQUUS.5      n[         R                  " / SQUS.5      n[         R                  " / SQUUS	.5      n[        S
US/US/5      nUS   [         R                  " U5      :X  d   e[        S
US/US/5      nUS   [         R                  " U5      :X  d   e[        S
US/US/5      nUS   [         R                  " U5      :X  d   e[        S
US/US/5      nUS   [         R                  " U5      :X  d   eg )N)r   r   r	   )type)r   r   r   )r   r   r   r0   rR   r=   )r   colC)r   r   colDr   r   rS   r   r   )r!   arrayint64r   ExtensionArrayfrom_storageDictionaryArrayfrom_arraysrA   r   r}   )storagety	ext_array
dict_arrayr)   r*   t3ra   s           r+    test_join_extension_array_columnr     s   hhyrxxz2G	B!!..r;I##//
RXXo68J	 
B 
 
B
 
 
B b6(B2F) 0 0 ;;;;b6(B2F&>R--i8888b6(B2F) 0 0 ;;;;b6(B2F&>R--i8888rL   c                  V   [         R                  " / SQS/S-  S.5      n [         R                  " / SQS/S-  S.5      n[         R                  " X/5      n[        S5       HE  nUR	                  SSS9R                  / 5      nUS   [         R                  " S/S//5      :X  a  ME   e   g )	Nrz   r   r
   rn   r   rm   F)r8   )r!   rA   r{   r|   group_by	aggregater}   )r~   r   rA   r   ra   s        r+   test_group_by_orderingr   F  s    XXLuqy9:FXXLuqy9:Ff-.E2Y 7AA"Ec{b..u~>>>> rL   )r$   pyarrowr!   pyarrow.computecomputerp   test_extension_typer   pyarrow.datasetrC   rB   ImportErrorpyarrow.aceror   r   markacero
pytestmarkr,   parametrizeparamrK   rb   rh   ru   rx   r   r   r   r    rL   r+   <module>r      s  $    ,	 	: [[
B* ,Ac
  Ac
      Ac
Ac
	   	   	  % %	 G)/ )T u64-8d&++:M:M!NOQ!Q 9 7U)\!H7t2
:*
:"%9P?[	  		
  		s"   E# E0 #E-,E-0E:9E: