o
    Ūńhp'  ć                   @   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)   śP/var/www/vscode/kcb/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 antiéc   Ś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              	   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_byŚdropŚ
set_column)ŚjointypeŚexpectedr7   r8   r9   r'   r(   Śrr)   r)   r*   Ś
test_joins9   s6   
1žž’
rI   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sJ td
| d|ddd"d}| ” }| d”}|t  g d#¢g d¢g d¢g d¢g d¢g d¢d$”ks»J d S )%Nr/   ©é
   é   é<   r0   ©r   r   ŚcolVals)r,   rL   rK   r<   )éd   éČ   é,  r;   )r   rO   ŚcolUniqr   r2   r   r   rS   )Nr   r   r
   )NrL   rK   rM   )Nr   r   r   )r,   rL   rK   N)r-   r   r   N)rP   rQ   rR   N)r,   r   r   N)r   r   rO   r   rO   rS   r   )ŚnamesŚ_rF)Śright_suffixr8   r3   ©rK   rL   rM   Nr4   )rK   rL   Nr,   r6   )rR   rQ   NrP   r5   )r   r   rO   ŚcolB_rŚ	colVals_rrS   ŚcolA_rTr>   )r   r   rO   rX   rY   rS   ©r   r?   r   rB   rC   ©r'   r(   Śresultr)   r)   r*   Śtest_table_join_collisions   sp   żü’
łų
ž
ł
ž
śr^   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 )NrJ   r/   r0   )r   r   rO   r<   r;   )rO   ŚcolXr2   r   r_   Ś_lrU   T)Śleft_suffixrV   r8   rW   r>   r4   r6   )r   r   Ś	colVals_lrY   r[   r\   r)   r)   r*   Śtest_table_join_keys_orderÅ   s*   żžž
ürc   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   ©rK   rL   é   é(   é2   ©r   r   r   r   r-   )r   r?   r"   r#   ŚArrowTypeErrorr   ŚpcŚdivideŚfieldŚscalarr$   )Śtr)   r)   r*   Śtest_filter_table_errorsŽ   s   ž ’"’ro   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   rd   rh   r   r   r   rL   r   re   r   r	   rf   rg   )r   r?   r   rj   rl   rm   ©rn   r]   r)   r)   r*   Śtest_filter_tableė   s    ž(’žžrq   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   rh   r   rL   r   )r   r?   Śconcat_tablesŚranger   rj   rl   Śchunked_array)Śtable1Śtable2r?   Ś_rH   r)   r)   r*   Śtest_filter_table_ordering   s    ūry   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
   )rK   rL   re   rf   rg   rM   é=   rh   r   r   r   rK   r   )r   r   r
   )rL   rf   rM   )r   r?   r   rj   Śbit_wise_andrl   rm   Śmultiplyrp   r)   r)   r*   Śtest_complex_filter_table  s   ž" ’’žr}   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sJ t	d
|dg|dg}|d t  
|”ksJ d S )N)r   r   r   )Śtype)r   r   r   )r   r   r   r/   rN   r;   )r   ŚcolC)r   r   ŚcolDr   r   rO   r   r   )r   ŚarrayŚint64r   ŚExtensionArrayŚfrom_storageŚDictionaryArrayŚfrom_arraysr?   r   ru   )ŚstorageŚtyŚ	ext_arrayŚ
dict_arrayr'   r(   Śt3r]   r)   r)   r*   Ś test_join_extension_array_column  sH   ’żžż’’’’r   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 )	Nrr   r   r   rh   r   rg   F)r7   )r   r?   rs   rt   Śgroup_byŚ	aggregateru   )rv   rw   r?   rx   r]   r)   r)   r*   Śtest_group_by_orderingF  s    ūr   )r"   Śpyarrowr   Śpyarrow.computeŚcomputerj   Śtest_extension_typer   Śpyarrow.datasetrA   r@   ŚImportErrorŚpyarrow.aceror   r   ŚmarkŚaceroŚ
pytestmarkr+   ŚparametrizeŚparamrI   r^   rc   ro   rq   ry   r}   r   r   r)   r)   r)   r*   Ś<module>   s   ’’žžžžüüüüŻ*’$:(