
    Ii                     t    S SK Jr  S SKJr   " S S\5      r " S S\5      r " S S\5      r " S	 S
\5      rg)   )BlockStreamProfileInfo)Progressc                   >   ^  \ rS rSrSr SU 4S jjrS rS rSrU =r	$ )QueryResult   z+
Stores query result from multiple blocks.
c                 j   > Xl         X l        / U l        / U l        X0l        [
        [        U ]  5         g N)packet_generatorwith_column_typesdatacolumns_with_typescolumnarsuperr   __init__)selfr
   r   r   	__class__s       >/venv/lib/python3.13/site-packages/clickhouse_driver/result.pyr   QueryResult.__init__
   s2     !1!2	"$ k4)+    c                    [        USS 5      nUc  g UR                  (       a  U R                  (       av  UR                  5       nU R                  (       a3  [        U5       H#  u  pEU R                  U   R                  U5        M%     g U Vs/ s H  n[        U5      PM     snU l        g U R                  R                  UR                  5       5        g U R                  (       d  UR                  U l	        g g s  snf )Nblock)
getattrnum_rowsr   get_columnsr   	enumerateextendlistget_rowsr   )r   packetr   columnsicolumncs          r   storeQueryResult.store   s    .= >>}}++-99%.w%7			!++F3 &8
 3: :'Qa' :DI		  !12((&+&>&>D# )	 !;s   C8c                    U R                    H  nU R                  U5        M     U R                  nU R                  (       a%  U R                   Vs/ s H  n[	        U5      PM     nnU R
                  (       a  X R                  4$ U$ s  snf )z
:return: stored query result.
)r
   r$   r   r   tupler   r   )r   r   r   r#   s       r   
get_resultQueryResult.get_result-   sp    
 ++FJJv , yy==&*ii0iE!HiD0!!0000K 1s   B)r   r   r   r
   r   )FF)
__name__
__module____qualname____firstlineno____doc__r   r$   r(   __static_attributes____classcell__r   s   @r   r   r      s!     /4
,?. r   r   c                   D   ^  \ rS rSrSrU 4S jrS rS rU 4S jrSr	U =r
$ )ProgressQueryResult?   zl
Stores query result and progress information from multiple blocks.
Provides iteration over query progress.
c                 L   > [        5       U l        [        [        U ]  " U0 UD6  g r	   )r   progress_totalsr   r3   r   )r   argskwargsr   s      r   r   ProgressQueryResult.__init__E   s"    'z!414B6Br   c                     U $ r	    r   s    r   __iter__ProgressQueryResult.__iter__I       r   c                 
    [        U R                  5      n[        USS 5      nU(       aG  U R                  R	                  U5        U R                  R
                  U R                  R                  4$ U R                  U5        M  )Nprogress)nextr
   r   r6   	incrementrows
total_rowsr$   )r   r   progress_packets      r   __next__ProgressQueryResult.__next__L   st    $//0F%fj$?O$$..?((--t/C/C/N/N  

6" r   c                 :   > U  H  nM     [         [        U ]  5       $ r	   )r   r3   r(   )r   _r   s     r   r(   ProgressQueryResult.get_resultX   s#    A  ($:<<r   )r6   )r*   r+   r,   r-   r.   r   r=   rG   r(   r/   r0   r1   s   @r   r3   r3   ?   s"    
C
#= =r   r3   c                   >   ^  \ rS rSrSr SU 4S jjrS rS rSrU =r	$ )IterQueryResult`   zH
Provides iteration over returned data by chunks (streaming by chunks).
c                 P   > Xl         X l        SU l        [        [        U ]  5         g )NT)r
   r   first_blockr   rM   r   )r   r
   r   r   s      r   r   IterQueryResult.__init__e   s&     !1!2ot-/r   c                     U $ r	   r;   r<   s    r   r=   IterQueryResult.__iter__n   r?   r   c                    [        U R                  5      n[        USS 5      nUc  / $ U R                  (       aF  U R                  (       a5  SU l        UR
                  /nUR                  UR                  5       5        U$ UR                  5       $ )Nr   F)rB   r
   r   rP   r   r   r   r   )r   r   r   rvs       r   rG   IterQueryResult.__next__q   sv    d++,.=I 6 6$D**+BIIenn&'I>>##r   )rP   r
   r   )F)
r*   r+   r,   r-   r.   r   r=   rG   r/   r0   r1   s   @r   rM   rM   `   s!     $0$ $r   rM   c                   ,    \ rS rSrS rS rS rS rSrg)	QueryInfo   c                 N    [        5       U l        [        5       U l        SU l        g )N    )r   profile_infor   rA   elapsedr<   s    r   r   QueryInfo.__init__   s    24 
r   c                     Xl         g r	   )r\   )r   r\   s     r   store_profileQueryInfo.store_profile   s    (r   c                 j    U R                   (       a  U R                   R                  U5        g Xl         g r	   )rA   rC   )r   rA   s     r   store_progressQueryInfo.store_progress   s     ==MM##H-$Mr   c                     Xl         g r	   )r]   )r   r]   s     r   store_elapsedQueryInfo.store_elapsed   s    r   )r]   r\   rA   N)	r*   r+   r,   r-   r   r`   rc   rf   r/   r;   r   r   rX   rX      s    
)%r   rX   N)	blockstreamprofileinfor   rA   r   objectr   r3   rM   rX   r;   r   r   <module>rj      s>    : 7& 7t=+ =B$f $@ r   