a
    dh^                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ ddl mZ ddl mZ ddl m	Z	 dd	l m
Z
 dd
l mZ ddl mZ ddl mZ G dd dejZdS )   )fixtures)eq_)Column)Table   )column)
ForeignKey)Integer)select)String)testing)valuesc                   @   s   e Zd ZdZdZdZdZedd Zedd Z	dd	 Z
d
d Zdd Zejjejjdd Zejjejjdd Zejjdd Zedddgedddgedddgejjdd ZdS )CTETestT)ZctesZeachc              	   C   s\   t d|tdtddtdtdtdtd t d	|tdtddtdtdtdt d S )
N
some_tableidT)Zprimary_keydata2   	parent_idzsome_table.idsome_other_table)r   r   r	   r   r   )clsmetadata r   ]/var/www/html/requester/venv/lib/python3.9/site-packages/sqlalchemy/testing/suite/test_cte.pydefine_tables   s    zCTETest.define_tablesc                 C   sJ   | | jj ddd ddddddddddd	ddd
dddg d S )N   d1r   r   r   r   d2r   d3   d4   d5)executetablesr   insert)r   
connectionr   r   r   insert_data/   s    





zCTETest.insert_datac                 C   sd   | j j}t||jjg dd}|t|jj|jjddg}t	|
 dg d S )Nr   r   r    some_cter    r"   r    )r$   r   r
   wherecr   in_cter#   r   fetchall)selfr&   r   r.   resultr   r   r   #test_select_nonrecursive_round_trip<   s    z+CTETest.test_select_nonrecursive_round_tripc                 C   s   | j j}t||jjg djddd}|d}| }|	t||jj
|jjk}|t|jj|jjdk|jj }t| g d d S )Nr(   r)   T)	recursiveZc1r   )r*   r   r4   r   r5   r5   )r$   r   r
   r+   r,   r   r-   r.   aliasZ	union_allr   r   r#   order_bydescr   r/   )r0   r&   r   r.   Z	cte_aliasZst1r1   r   r   r    test_select_recursive_round_tripI   s.    


z(CTETest.test_select_recursive_round_tripc                 C   sz   | j j}| j j}t||jjg dd}|	|
 g dt| t|	t||jj g d d S )Nr(   r)   r   ))r   r   r   )r   r   r   )r   r    r   )r$   r   r   r
   r+   r,   r   r-   r.   r#   r%   from_selectr   r7   r   r/   r0   r&   r   r   r.   r   r   r   "test_insert_from_select_round_tripc   s&    z*CTETest.test_insert_from_select_round_tripc                 C   s   | j j}| j j}|| g dt| t||jj	
g dd}|| jdd|jj	|jj	k t|t||jj g d d S )Nr   r(   r)   r!   )r   )r   r   N)r   r   r!   )r   r   r!   )r   r    r!   r!   r"   r   )r$   r   r   r#   r%   r:   r
   r+   r,   r   r-   r.   updater   r   r7   r   r/   r;   r   r   r   test_update_from_round_tripx   s4    z#CTETest.test_update_from_round_tripc                 C   s   | j j}| j j}|| g dt| t||jj	
g dd}|| |jj	|jj	k t|t||jj ddg d S Nr   r(   r)   r=   r>   )r$   r   r   r#   r%   r:   r
   r+   r,   r   r-   r.   deleter   r7   r   r/   r;   r   r   r   test_delete_from_round_trip   s0    z#CTETest.test_delete_from_round_tripc              	   C   s   | j j}| j j}|| g dt| t||jj	
g dd}|| |jj	t|jj	|jj|jjk k t|t||jj ddg d S rA   )r$   r   r   r#   r%   r:   r
   r+   r,   r   r-   r.   rB   r   Zscalar_subqueryr   r7   r/   r;   r   r   r   "test_delete_scalar_subq_round_trip   s8    z*CTETest.test_delete_scalar_subq_round_tripvalues_namedF	cte_namedliteral_bindsc                 C   sh   t tdttdtt||r dnd dddg|r:dnd }t|}||	 }t
|ddg d S )NZcol1Zcol2z	some name)rG   name)ar   )br   cte1)r   r   r   r	   boolr   r.   r
   r#   allr   )r0   r&   rE   rF   rG   rK   stmtrowsr   r   r   test_values_named_via_cte   s    	

z!CTETest.test_values_named_via_cteN)__name__
__module____qualname__Z__backend____requires__Zrun_insertsZrun_deletesclassmethodr   r'   r2   r9   r<   r   requiresZctes_with_update_deleteZupdate_fromr@   Zdelete_fromrC   rD   Z	variationZctes_with_valuesrP   r   r   r   r   r      s0   

!
r   N) r   Z
assertionsr   Zschemar   r   r   r   r	   r
   r   r   r   Z
TablesTestr   r   r   r   r   <module>	   s   