o
    Ûñh=  ã                   @   sâ   d dl Z d dlZd dlZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd	„ ƒZ	ejj
d
ddd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZdS )é    Nc                  C   st  dd l m}  |  ¡ }t dt ¡ ¡}t dt ¡ ¡}t ||g¡}t dt ¡ ¡}| |¡}| |¡}| ¡ |j	ks<J ‚| 
d||gt ¡ ¡}| |||t ¡ ¡}	| |	|¡}
|
 ¡ j	t ¡ ksbJ ‚| jdd}|  ||
gt ¡ d|¡}|j d	¡d
ks~J ‚tjg d¢t ¡ d}tjg d¢t ¡ d}tjg d¢t ¡ d}tjj||gddgd}| |¡\}| |¡s¸J ‚d S )Nr   ÚaÚbÚresÚgreater_thanT©Údump_irÚNONEú@expr_éÿÿÿÿ)é
   é   éìÿÿÿé   ©Útype)r   é   r   é   )r   r   r   r   ©Únames)Úpyarrow.gandivaÚgandivaÚTreeExprBuilderÚpaÚfieldÚint32ÚschemaÚ
make_fieldÚreturn_typer   Úmake_functionÚbool_Úmake_ifÚmake_expressionÚresultÚConfigurationÚmake_projectorÚdefault_memory_poolÚllvm_irÚfindÚarrayÚRecordBatchÚfrom_arraysÚevaluateÚequals)r   ÚbuilderÚfield_aÚfield_br   Úfield_resultÚnode_aÚnode_bÚ	conditionÚif_nodeÚexprÚconfigÚ	projectorr   r   ÚeÚinput_batchÚr© r;   úN/var/www/vscode/kcb/lib/python3.10/site-packages/pyarrow/tests/test_gandiva.pyÚtest_tree_exp_builder   s4   

ÿÿr=   c                  C   sÞ   dd l m}  tj t ddg¡t ddg¡gddg¡}|  ¡ }| |j 	d¡¡}| |j 	d¡¡}| 
d||gt ¡ ¡}t 	d	t ¡ ¡}| ||¡}|  |j|gt ¡ ¡}| | ¡ d ¡\}	t dd
g¡}
|	 |
¡smJ ‚d S )Nr   ç      ð?ç       @ç      @g      @r   r   ÚaddÚcg      @)r   r   r   ÚTabler*   r(   r   r   r   r   r   Úfloat64r!   r$   r%   r+   Ú
to_batchesr,   )r   Útabler-   r1   r2   Úsumr0   r5   r7   r:   r8   r;   r;   r<   Ú
test_tableB   s     ÿÿrH   c            
      C   s  dd l m}  tj t dd„ tdƒD ƒ¡gdg¡}|  ¡ }| |j	 
d¡¡}| dt ¡ ¡}| d||gt ¡ ¡}| |¡}| ¡ jt ¡ ksIJ ‚| jdd	}|  |j	||¡}|j d
¡dksaJ ‚| | ¡ d t ¡ ¡}	|	 ¡  tjtdƒt ¡ d¡sJ ‚d S )Nr   c                 S   s   g | ]}d | ‘qS )r>   r;   )Ú.0Úir;   r;   r<   Ú
<listcomp>a   s    ztest_filter.<locals>.<listcomp>i'  r   g     @@Ú	less_thanTr   r	   r
   iè  r   )r   r   r   rC   r*   r(   Úranger   r   r   r   Úmake_literalrD   r   r   Úmake_conditionr"   r   r#   Úmake_filterr&   r'   r+   rE   r%   Úto_arrayr,   Úuint32)
r   rF   r-   r1   ÚthousandÚcondr3   r6   Úfilterr"   r;   r;   r<   Útest_filter]   s   ÿ
(rV   c            	      C   sö  dd l m}  t g d¢¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
|ddgt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjddgt ¡ d¡sXJ ‚t g d	¢¡}tj | t ¡ ¡gdg¡}| |j 	d¡¡}| 
|dd
gt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjg d¢t ¡ d¡s«J ‚t g d	¢¡}tj |gdg¡}| |j 	d¡¡}| 
|dd
gt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjg d¢t ¡ d¡sùJ ‚d S )Nr   )ÚgaÚanÚndÚdiÚivÚvar   rX   rY   é   é   r   )
é   r]   é   r]   r   é	   r^   é   r   r`   r   )r]   r_   r`   é   )r   r   r   r(   rC   r*   r   r   r   r   Úmake_in_expressionÚstringrO   rP   r+   rE   r%   rQ   r,   rR   Úcastr   Úint64)	r   ÚarrrF   r-   r1   rT   r3   rU   r"   r;   r;   r<   Útest_in_expru   s4   
$
$
(ri   z>Gandiva C++ did not have *real* binary, time and date support.)Úreasonc                  C   sÒ  dd l m}  t g d¢¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
|ddgt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjddgt ¡ d¡sXJ ‚tj d	¡}	tj d
¡}
tj d¡}t |	|
|g¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
||
gt d¡¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}t| ¡ ƒdgks¶J ‚|	 ¡ }|
 ¡ }| ¡ }t |||g¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
||gt d¡¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}t| ¡ ƒdgksJ ‚|	 ¡ }|
 ¡ }| ¡ }t |||g¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
||gt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}t| ¡ ƒdgksgJ ‚d S )Nr   )s   gaó   anó   nds   dis   ivs   var   rk   rl   r]   r^   r   gÕÌç¹,ûÖAgÕÌç¯,ûÖAgÕÌçØ+ûÖAÚms)r   r   r   r(   rC   r*   r   r   r   r   rd   ÚbinaryrO   rP   r+   rE   r%   rQ   r,   rR   ÚdatetimeÚutcfromtimestampÚ	timestampÚlistÚtimeÚtime64ÚdateÚdate32)r   rh   rF   r-   r1   rT   r3   rU   r"   Ú
datetime_1Ú
datetime_2Ú
datetime_3Útime_1Útime_2Útime_3Údate_1Údate_2Údate_3r;   r;   r<   Útest_in_expr_todoš   s\   
$


r€   c                  C   s4  dd l m}  tj t g d¢¡t g d¢¡gddg¡}|  ¡ }| |j 	d¡¡}| |j 	d¡¡}| 
dt ¡ ¡}| 
dt ¡ ¡}| d||gt ¡ ¡}| d	||gt ¡ ¡}| d||gt ¡ ¡}	| | ||g¡|	g¡}
| |
¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjg d
¢t ¡ d¡s˜J ‚d S )Nr   )r>   g      ?@g      G@r@   g     €L@g      F@g      6@)g      @g     €F@g      B@g     @R@g     ÀT@g      7@g      S@r   r   g      I@g      &@rL   r   )r   r^   r   r   )r   r   r   rC   r*   r(   r   r   r   r   rN   rD   r   r   Úmake_orÚmake_andrO   rP   r+   rE   r%   rQ   r,   rR   )r   rF   r-   r1   r2   ÚfiftyÚelevenÚcond_1Úcond_2Úcond_3rT   r3   rU   r"   r;   r;   r<   Útest_booleanä   s,   þýÿ
(rˆ   c                  C   sö  dd l m}  |  ¡ }| dt ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dt 	¡ ¡ | dt 
¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | d	t ¡ ¡ | d
t ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | d	d¡ | d
d¡ | dd¡ | dd¡ | dd¡ t t¡ | dt ¡ ¡ W d   ƒ n1 sØw   Y  t t¡ | dd ¡ W d   ƒ d S 1 sôw   Y  d S )Nr   Tr]   r^   r_   r`   r   rb   é   g       @g      "@Úhellos   worldÚboolÚuint8Úuint16rR   Úuint64Úint8Úint16r   rg   Úfloat32rD   re   rn   )r   r   r   rN   r   r   rŒ   r   rR   rŽ   r   r   r   rg   r‘   rD   re   rn   ÚpytestÚraisesÚ	TypeError)r   r-   r;   r;   r<   Útest_literalsÿ   sD   ÿ"ÿr•   c                  C   sè   dd l m}  g d¢}tj|t ¡ d}tjj|gdgd}|  ¡ }| |j	 
d¡¡}| dt ¡ ¡}| d||gt ¡ ¡}t 
dt ¡ ¡}| ||¡}	|  |j	|	gt ¡ ¡}
|
 | ¡ d ¡\}tjg d	¢t ¡ d}| |¡srJ ‚d S )
Nr   )ÚparkÚsparklezbright spark and fireÚsparkr   r   r   z%spark%Úliker   )FTTT)r   r   r   r(   re   rC   r*   r   r   r   r   rN   r   r   r!   r$   r%   r+   rE   r,   )r   ÚelementsÚdatarF   r-   r1   Úregexr™   r0   r5   r7   r:   r   r;   r;   r<   Ú
test_regex'  s    ÿr   c                  C   s\   dd l m}  |  ¡ }t|d  ¡ ƒtju sJ ‚t|d  ¡ ƒtu s#J ‚t	|d dƒs,J ‚d S )Nr   Úname)
r   r   Ú"get_registered_function_signaturesr   r   r   ÚDataTypeÚparam_typesrr   Úhasattr)r   Ú
signaturesr;   r;   r<   Ú'test_get_registered_function_signatures?  s
   r¤   c                  C   s~  dd l m}  t ¡ }t g d¢t ¡ ¡}t g d¢t ¡ ¡}t g d¢t ¡ ¡}tj |||gg d¢¡}t dt ¡ ¡}|  	¡ }| 
|j d¡¡}| 
|j d¡¡}	| 
|j d	¡¡}
| d
||	gt ¡ ¡}| |¡}| d|	|
gt ¡ ¡}| ||	|
t ¡ ¡}| ||¡}|  |j|¡}|  |j|g|d¡}| | ¡ d |¡}| | ¡ d |¡\}t g d¢t ¡ ¡}| |¡s½J ‚d S )Nr   )r   r   r   r   é   é   )r   r   r   r   r   r_   )r]   é   é   é   éëÿÿÿN)r   r   rB   r   r   r   rB   r   rL   ÚUINT32)r]   rª   N)r   r   r   r%   r(   r   rC   r*   r   r   r   r   r   r   rO   r    r!   rP   r$   r+   rE   r,   )r   ÚmpoolÚarray0Úarray1Úarray2rF   r0   r-   r1   r2   Únode_cÚgreater_than_functionÚfilter_conditionÚproject_conditionr4   r5   rU   r7   Úselection_vectorr:   Úexpr;   r;   r<   Útest_filter_projectI  sD   ÿÿÿ
ÿÿÿr¶   c                  C   s  dd l m}  |  ¡ }t| dt ¡ ¡ƒ d¡sJ ‚t| dt ¡ ¡ƒdks'J ‚t| 	t 
dt ¡ ¡¡ƒdks8J ‚t| 	t 
dt ¡ ¡¡ƒd	ksIJ ‚| 	t 
d
t ¡ ¡¡}| d|gt ¡ ¡}t|ƒdksfJ ‚| 	t 
dt ¡ ¡¡}| ||g¡}t|ƒdks€J ‚d S )Nr   r?   z(const double) 2 raw(r^   z(const int64) 2Úxz
(double) xÚyz
(string) yÚzÚnotzbool not((bool) z)zbool not((bool) z) && (bool) y)r   r   r   ÚstrrN   r   rD   Ú
startswithrg   r   r   re   r   r   r‚   )r   r-   Úfield_zÚ	func_nodeÚfield_yÚand_noder;   r;   r<   Útest_to_stringx  s   ÿ""rÁ   c                  C   s€  dd l m}  |  ¡ }t dt ¡ ¡}t |g¡}| dt ¡ ¡}t	 
t¡ | d ¡ W d   ƒ n1 s5w   Y  t	 
t¡ | |d d d ¡ W d   ƒ n1 sRw   Y  t	 
t¡ | |d g¡ W d   ƒ n1 snw   Y  t	 
t¡ | d |g¡ W d   ƒ n1 sŠw   Y  t	 
t¡ | d g d¢t ¡ ¡ W d   ƒ n1 sªw   Y  t	 
t¡ | d |¡ W d   ƒ n1 sÅw   Y  t	 
t¡ | d ¡ W d   ƒ n1 sßw   Y  t	 
t¡ | d|d gt ¡ ¡ W d   ƒ n1 sÿw   Y  t	 
t¡ |  |d g¡ W d   ƒ n	1 sw   Y  t	 
t¡ |  |d ¡ W d   ƒ d S 1 s9w   Y  d S )Nr   r·   T)r]   r^   r_   rL   )r   r   r   r   r   r   r   rN   r   r’   r“   r”   r   r    r‚   r   rd   r!   rO   r   r$   rP   )r   r-   Úfield_xr   Úliteral_truer;   r;   r<   Útest_rejects_noneŒ  sF   ÿÿÿÿÿÿÿÿÿ$ÿrÄ   )ro   r’   Úpyarrowr   Úmarkr   r=   rH   rV   ri   Úskipr€   rˆ   r•   r   r¤   r¶   rÁ   rÄ   r;   r;   r;   r<   Ú<module>   s6   
)


$
H

'

	
.
