o
    Zhp'                     @   s  d dl Z d dlZd dlmZ ddlmZ zd dlm	Z
 W n	 ey%   Y nw z
d dlmZmZ W n	 ey9   Y nw e jjZdd Ze 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d'd(d)ge jd*d(d)ge jd+d)e jd(e jj	d,gd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> ZdS )?    N   )IntegerType)_perform_join_filter_tablec                  C   s   t jg dg dd} t jg dg dd}tt j td| d|d W d    n1 s3w   Y  tt tdd d	|d
 W d    n1 sPw   Y  tt td| d	|d
 W d    d S 1 snw   Y  d S )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t2 r)   S/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_exec_plan.pytest_joins_corner_cases$   s"   "r+   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)Zmarksc              	   C   s   t |}t jg dg dd}t jg dg dd}|r-t|g}t|g}t| |d|d||d	}| }d
| v rF|d}n|d}|ru| dv rX|	dg}n| dkrc|	dg}n| dkru|	dg
ddg dg}||ks{J d S )Nr/   r0   r   r,   r   r   r-   r   r   r   r   r   )r7   r8   right)r.   r   r1   r2   r   r   r   r
   r,   )r   tabler    r!   dsdatasetr   combine_chunkssort_byZdropZ
set_column)Zjointypeexpectedr7   r8   r9   r'   r(   rr)   r)   r*   
test_joins9   s6   
1
rE   c                  C   sz  t g dg dg dd} t g dg dg dg dd	}td
| ddg|ddg}| }|d}|t jg dg dg dg dg dg dg dgg ddksXJ td
| d|dddd}| }|d}|t g dg dg dg dg dg dg d d!ksJ td
| d|ddd"d}| }|d}|t g d#g dg dg dg dg dd$ksJ d S )%Nr/   
      <   r0   r   r   colVals)r,   rH   rG   r;   )d      ,  r:   )r   rK   colUniqr   r2   r   r   rO   )Nr   r   r
   )NrH   rG   rI   )Nr   r   r   )r,   rH   rG   N)r-   r   r   N)rL   rM   rN   N)r,   r   r   N)r   r   rK   r   rK   rO   r   )names_rF)right_suffixr8   r3   rG   rH   rI   Nr4   )rG   rH   Nr,   r6   )rN   rM   NrL   r5   )r   r   rK   colB_r	colVals_rrO   ZcolA_rTr=   )r   r   rK   rT   rU   rO   r   r>   r   rA   rB   r'   r(   resultr)   r)   r*   test_table_join_collisions   sp   




rY   c               
   C   s   t g dg dg dd} t g dg dd}td| d	|d
dddd}| }|d	}|t g dg dg dg ddksFJ d S )NrF   r/   r0   )r   r   rK   r;   r:   )rK   colXr2   r   rZ   Z_lrQ   T)Zleft_suffixrR   r8   rS   r=   r4   r6   )r   r   Z	colVals_lrU   rV   rW   r)   r)   r*   test_table_join_keys_order   s*   
r[   c               	   C   s   t g dg dd} tt j t| ttdt	d W d    n1 s,w   Y  tt j
 t| tdt	dk W d    d S 1 sPw   Y  d S )Nr   rG   rH      (   2   r   r   r   r   r-   )r   r>   r"   r#   ZArrowTypeErrorr   pcdividefieldscalarr$   )tr)   r)   r*   test_filter_table_errors   s    "rf   c                  C   s   t g dg dd} t| tdtdktdtdk@ }|t dgdgdks1J t| tdtd	k}|t d
dgddgdksNJ d S )Nr   r\   r`   r   r   r   rH   r   r]   r   r	   r^   r_   )r   r>   r   ra   rc   rd   re   rX   r)   r)   r*   test_filter_table   s    (rh   c                  C   s   t g ddgd d} t g ddgd d}t | |g}tdD ]}t|tddk}|d t dgdggks@J q%d S )Nr   r   r   r   r   r   r`   r   rH   r   )r   r>   concat_tablesranger   ra   rc   chunked_array)table1table2r>   _rD   r)   r)   r*   test_filter_table_ordering   s    rp   c               	   C   s   t g dg dd} t| ttdtdtdkttdtdtdk@ }|t g d	g d
dksAJ d S )N)r   r   r   r   r	   r
   r
   )rG   rH   r]   r^   r_   rI   =   r`   r   r   r   rG   r   )r   r   r
   )rH   r^   rI   )r   r>   r   ra   Zbit_wise_andrc   rd   multiplyrg   r)   r)   r*   test_complex_filter_table  s   " rs   c                  C   s8  t jg dt  d} t }t j|| }t jt g dt g d}t g d||d}t g d|d}t g d||d	}t	d
|dg|dg}|d t 
|ks[J t	d
|dg|dg}|d t 
|kspJ t	d
|dg|dg}|d t 
|ksJ t	d
|dg|dg}|d t 
|ksJ d S )N)r   r   r   )type)r   r   r   )r   r   r   r/   rJ   r:   )r   colC)r   ru   ZcolDr   r   rK   r   ru   )r   arrayZint64r   ZExtensionArrayZfrom_storageZDictionaryArrayZfrom_arraysr>   r   rl   )ZstoragetyZ	ext_arrayZ
dict_arrayr'   r(   Zt3rX   r)   r)   r*    test_join_extension_array_column  sH   rx   c                  C   s   t g ddgd d} t g ddgd d}t | |g}tdD ]}|jdddg }|d t dgdggks@J q%d S )	Nri   r   r   r`   r   r_   F)r7   )r   r>   rj   rk   Zgroup_byZ	aggregaterl   )rm   rn   r>   ro   rX   r)   r)   r*   test_group_by_orderingF  s    ry   )r"   Zpyarrowr   Zpyarrow.computeZcomputera   Ztest_extension_typer   Zpyarrow.datasetr@   r?   ImportErrorZpyarrow.aceror   r   markZaceroZ
pytestmarkr+   ZparametrizeparamrE   rY   r[   rf   rh   rp   rs   rx   ry   r)   r)   r)   r*   <module>   s   *$:(