
    gp'                        d dl Z d dlZd dlmZ ddlmZ 	 d dlm	Z
 	 d dlmZmZ e j                  j                   Zd Ze j                  j'                  ddddgd	d
gdfdddgddgdfddgdgdfddgdgdfdddgd	d
gddgddgdfdg dg dg dg ddfdg dg dg dg d dfd!g d"g d#g d$g d%dfg      e j                  j'                  d&d'd(g      e j                  j'                  d)d'd(g      e j                  j'                  d*d( e j(                  d'e j                  j                  +      g      d,                             Zd- Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zy# e$ r Y Rw xY w# e$ r Y Uw xY w)5    N   )IntegerType)_perform_join_filter_tablec                     t         j                  j                  g dg dd      } t         j                  j                  g dg dd      }t        j                  t         j
                        5  t        d| d|d       d d d        t        j                  t              5  t        dd d	|d
       d d d        t        j                  t              5  t        d| d	|d
       d d d        y # 1 sw Y   lxY w# 1 sw Y   GxY w# 1 sw Y   y xY w)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     Q/var/www/openai/venv/lib/python3.12/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$   0C+!C7D+C47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           	      z   t        j                  |      }t         j                  j                  g dg dd      }t         j                  j                  g dg dd      }|r,t	        j
                  |g      }t	        j
                  |g      }t        | |d|d||	      }|j                         }d
| v r|j                  d      }n|j                  d      }|rZ| dv r|j                  dg      }nC| dk(  r|j                  dg      }n+| dk(  r&|j                  dg      j                  ddg dg      }||k(  sJ y )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hFB"-]	LA	A(IIfIIf..}}fX.H&}}fX.H%}}fX.99!Vm_UH==    c                     t        j                  g dg dg dd      } t        j                  g dg dg dg dd	      }t        d
| ddg|ddg      }|j                         }|j	                  d      }|t        j                  g dg dg dg dg dg dg dgg d      k(  sJ t        d
| d|ddd      }|j                         }|j	                  d      }|t        j                  g dg dg dg dg dg dg d d!      k(  sJ t        d
| d|ddd"      }|j                         }|j	                  d      }|t        j                  g d#g dg dg dg dg dd$      k(  sJ y )%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            
      0   t        j                  g dg dg dd      } t        j                  g dg dd      }t        d| d	|d
ddd      }|j                         }|j	                  d	      }|t        j                  g dg dg dg dd      k(  sJ y )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            
         t        j                  g dg dd      } t        j                  t         j                        5  t        | t        j                  t        j                  d      t        j                  d                   d d d        t        j                  t         j                        5  t        | t        j                  d      t        j                  d      k         d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)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C126C=1C:=Dc                     t        j                  g dg dd      } t        | t        j                  d      t        j
                  d      k  t        j                  d      t        j
                  d      k(  z        }|t        j                  dgdgd      k(  sJ t        | t        j                  d      t        j
                  d	      kD        }|t        j                  d
dgddgd      k(  sJ y )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                  P   t        j                  g ddgdz  d      } t        j                  g ddgdz  d      }t        j                  | |g      }t        d      D ]E  }t	        |t        j                  d      dk(        }|d   t        j                  dgdgg      k(  rEJ  y )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ff-.E2Y %#!!34v))C53%.9999 rL   c            
         t        j                  g dg dd      } t        | t        j                  t        j
                  d      t        j                  d            t        j                  d      k(  t        j                  t        j
                  d      t        j                  d            t        j
                  d      k(  z        }|t        j                  g d	g d
d      k(  sJ y )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                  R   t        j                  g dt        j                               } t               }t         j                  j                  ||       }t         j                  j                  t        j                  g d      t        j                  g d            }t        j                  g d||d      }t        j                  g d|d      }t        j                  g d||d	      }t        d
|dg|dg      }|d   t        j                  |      k(  sJ t        d
|dg|dg      }|d   t        j                  |      k(  sJ t        d
|dg|dg      }|d   t        j                  |      k(  sJ t        d
|dg|dg      }|d   t        j                  |      k(  sJ y )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!!..r7;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                  P   t        j                  g ddgdz  d      } t        j                  g ddgdz  d      }t        j                  | |g      }t        d      D ]E  }|j	                  dd      j                  g       }|d   t        j                  dgdgg      k(  rEJ  y )	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ff-.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& E2 &E/.E/2E;:E;