
    "ivy                        d Z ddlZddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z  G d# d$e          Z! G d% d&e          Z" G d' d(e          Z# G d) d*e          Z$ G d+ d,e          Z% G d- d.e          Z& G d/ d0e&          Z' G d1 d2e&          Z( G d3 d4e(          Z) G d5 d6e)          Z* G d7 d8e(          Z+dS )9z%Implementation of the Result classes.    N)datetime	timedelta   )DbDoc)MYSQL_CHARACTER_SETS)decode_from_bytes
deprecatedc                    t          |          dk    rd S |                                 t          j        k    rt	          |d d                   S 	 t          j        |                                          |          S # t          $ r}t          j
                            d                    |                     t          j
                            d                    |                    d                               Y d }~d S d }~ww xY w)Nr   {0}hex)lenget_type
ColumnTypeSTRINGr   ColumnProtoTypeconverter_mapget_proto_typeKeyErrorsysstderrwriteformatencode)columnpayloaderrs      E/srv/django_bis/venv311/lib/python3.11/site-packages/mysqlx/result.pyfrom_protobufr   +   s    
7||qtJ--- "...,!!##

  	    
c**+++
gnnU&;&;<<===ttttts   +A< <
DA7DDc                     | d d         S )Nr    r   s    r   bytes_from_protobufr#   <   s    3B3<    c                 b    t          |           dk    sJ t          j        d|           d         S )N   z<fr   r   structunpackr"   s    r   float_from_protobufr*   A   0    w<<1=w''**r$   c                 b    t          |           dk    sJ t          j        d|           d         S )N   z<dr   r'   r"   s    r   double_from_protobufr.   F   r+   r$   c                 0   t          |           dk    rt          d          d}d}d}| D ]]}t          |t                    r|nt	          |          }|dz  dk    }|dz  }||z  }||z  }|r|| |dz   d          fc S |dz  }|dz  }^t          d          )Nr   zPayload is empty      r      zPayload too short)r   
ValueError
isinstanceintordEOFError)r   curishiftitemchareoscur_bitss           r   varint_from_protobuf_streamr?   K   s    
7||q+,,,
C	AE 	 	!$,,;tt#d))d{q 4KU	X 	(gcAghh'''''q

&
'
''r$   c                 n    t          |           \  }} t          |           dk    rt          d          |S )Nr   Payload too longr?   r   r3   r   r9   s     r   varint_from_protobufrD   a   s8    ,W55JAw
7||q+,,,Hr$   c                     t          |           \  }} t          |           dk    rt          d          |dz  r| }|dz	  }|dz  }n|dz	  }|S )Nr   rA   r   l            rB   rC   s     r   varsint_from_protobufrF   i   sj    ,W55JAw
7||q+,,, 	3w B!V	W!VHr$   c                 l   g }	 	 t          |           \  }} t          |           |k     r=t          |           dk    r|dk    rt          |          dk    rg S t          d          |                    | d |                    | |d          } t          |           dk    rnn# t          $ r Y nw xY w|S )NTr   r   zInvalid Set encoding)r?   r   r3   append)r   set_pb	field_lens      r   set_from_protobufrK   y   s    F	!<W!E!EIw7||i''w<<1$$aCKK1<L<LI !7888MM'*9*-...ijj)G7||q   !  	 	 	E	  Ms   AB# A	B# #
B0/B0c                 l   g }d }t          | d         t                    r| d         nt          | d                   }| dd          } | D ]}t          |t                    r|nt          |          }|dz  dz	  }|dz  }|dk     rT|                    |           |dk     r|                    |           l|dk    rd} n_|dk    rd} nUt	          d	          |dk    rd}|dk    sJ  n4|dk    rd}|dk    sJ  n"t	          d
                    |                    t          j        ||| f          S )Nr   r      r&      
         zInvalid BCDzInvalid BCD: {0})r4   r5   r6   rH   r3   r   decimalDecimal)r   digitssignscaler;   r<   high_bcdlow_bcds           r   decimal_from_protobufrY      sp   FD$WQZ55JGAJJ3wqz??EabbkG B B!$,,;tt#d))4KA%+d??MM(###~~g&&&&DD ///Dd????EDd????E/66x@@AAA?D&5&1222r$   c           	      \   d}d}d}d}t          |           \  }} t          |           \  }} t          |           \  }} 	 t          |           \  }} t          |           \  }} t          |           \  }} t          |           \  }} n# t          $ r Y nw xY wt          |||||||          S )Nr   )r?   r3   r   )r   hourminutessecondsusecondsyearmonthdays           r   datetime_from_protobufrb      s    DGGH/88MD'099NE7.w77LC3G<<g6w??6w??7@@''    D%dGWhGGGs    AB	 	
BBc                 Z   d}d}d}d}| d         dk    }| dd          } 	 t          |           \  }} t          |           \  }} t          |           \  }} t          |           \  }} n# t          $ r Y nw xY w|r|r|dz  }n|r|dz  }n|r|dz  }n|r|dz  }t          ||||          S )Nr   r   r   )hoursr\   r]   microseconds)r?   r3   r   )r   r[   r\   r]   r^   negates         r   time_from_protobufrg      s   DGGHQZ1_FabbkG3G<<g6w??6w??7@@''     	 	BJDD 	rMGG 	rMGG 	NH4'"*, , , ,s   AA) )
A65A6c                       e Zd ZdZdS )
Collations!   N)__name__
__module____qualname__UTF8_GENERAL_CIr!   r$   r   ri   ri      s        OOOr$   ri   c                   J   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%e&d$             Z'e&d%             Z(e&d&             Z)e&d'             Z*e&d(             Z+e&d)             Z,e&d*             Z-e&d+             Z.d,S )-r   r         r&         r2   r-   	   rO      rP   rQ      rN                                                       rj   "   #   c                 h    t          |                                           D ]\  }}||k    r|c S d S N)varsitems)clsneedlekeyvalues       r   	to_stringzColumnType.to_string  sA    s))//++ 	 	JC


 tr$   c                 H    t          | |                                d           S r   )getattrupper)r   r   s     r   from_stringzColumnType.from_string  s    sCIIKK...r$   c                 "    || j         | j        fv S r   )CHARVARCHARr   col_types     r   is_charzColumnType.is_char  s    CHck333r$   c                 "    || j         | j        fv S r   )BINARY	VARBINARYr   s     r   	is_binaryzColumnType.is_binary  s    CJ777r$   c                 :    || j         | j        | j        | j        fv S r   )TEXTTINYTEXT
MEDIUMTEXTLONGTEXTr   s     r   is_textzColumnType.is_text#  s%    CHclCNL+ + 	+r$   c                 F    || j         | j        | j        | j        | j        fv S r   )REALDOUBLEFLOATDECIMALNUMERICr   s     r   is_decimalszColumnType.is_decimals(  s)    CHcj#)S[K* * 	*r$   c                 R    || j         | j        | j        | j        | j        | j        fv S r   )BITTINYINTSMALLINT	MEDIUMINTINTBIGINTr   s     r   
is_numericzColumnType.is_numeric-  s-    CGS[#,GSZ2 2 	2r$   c                 "    || j         | j        fv S r   )SETENUMr   s     r   is_finite_setzColumnType.is_finite_set2  s    CGSX///r$   N)/rk   rl   rm   r   r   r   r   r   r   r   r   r   r   r   JSONr   BYTESTIMEDATEDATETIME	TIMESTAMPr   r   GEOMETRYXMLYEARr   r   r   r   TINYBLOBBLOB
MEDIUMBLOBLONGBLOBr   r   r   r   classmethodr   r   r   r   r   r   r   r   r!   r$   r   r   r      s       
CGHI
CFDEGGFDFEDDHI
CDH
CDDGFIHDJHHDJH  [ / / [/ 4 4 [4 8 8 [8 + + [+ * * [* 2 2 [2 0 0 [0 0 0r$   r   c                   j    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZeeeeeee	eeeeeeeeee
eeeeeiZdS )r   r   rp   rr   rs   r2   rO   rP   rN   rw   rx   ry   N)rk   rl   rm   SINTUINTr   r   r   r   r   r   r   r   r   rF   rD   r#   rb   rg   r*   r.   rK   rY   r   r!   r$   r   r   r   7  s        DDFEEDH
CD
CG 	#""( "$!!&MMMr$   r   c                   P    e Zd Zd Zd Zed             Zej        d             ZdS )Flagsc                     i | _         i | _        | j        j                                        D ]D\  }}|                    d          rt          |t                    r|| j         |<   || j        |<   E|| _        d S )N__)	_allowed_flags_flag_names	__class____dict__r   
startswithr4   r5   _value)selfr   r   vals       r   __init__zFlags.__init__T  s     /5577 	, 	,HC~~d## #s## ,+.#C((+ %r$   c                    d}g }| j         }t          dd          D ]}|dz  }||z  }|r	 |                    | j        |                    0# t          $ rv t
          j                            d                    | j                             t
          j                            d                    | j	        j
                             Y w xY wd                    |          S )Nr   r   ?   r   ,)r   rangerH   r   r   r   r   r   r   r   r   join)r   mask
flag_namesr   _flags         r   __str__zFlags.__str___  s    
q" 		L 		LAQJD4<D LL%%d&6t&<==== L L LJ$$U\\$2B%C%CDDDJ$$U\\$.2I%J%JKKKKKL	L xx
###s    AA=CCc                     | j         S r   r   r   s    r   r   zFlags.valueq  s
    {r$   c                     || _         d S r   r   )r   r   s     r   r   zFlags.valueu  s    r$   N)rk   rl   rm   r   r   propertyr   setterr!   r$   r   r   r   S  sj        	 	 	$ $ $$   X \  \  r$   r   c                   "    e Zd ZdZdZdZdZdZdS )ColumnFlagsrw   r   @   r0      N)rk   rl   rm   NOT_NULLPRIMARY_KEY
UNIQUE_KEYMULTIPLE_KEYAUTO_INCREMENTr!   r$   r   r   r   z  s'        HKJLNNNr$   r   c                       e Zd ZdZdS )DatetimeColumnFlagsr   N)rk   rl   rm   r   r!   r$   r   r   r             IIIr$   r   c                       e Zd ZdZdS )UIntColumnFlagsr   N)rk   rl   rm   ZEROFILLr!   r$   r   r   r             HHHr$   r   c                       e Zd ZdZdS )DoubleColumnFlagsr   Nrk   rl   rm   UNSIGNEDr!   r$   r   r   r     r   r$   r   c                       e Zd ZdZdS )FloatColumnFlagsr   Nr   r!   r$   r   r   r     r   r$   r   c                       e Zd ZdZdS )BytesColumnFlagsr   N)rk   rl   rm   	RIGHT_PADr!   r$   r   r   r     r   r$   r   c                       e Zd ZdZdZdZdS )BytesContentTyper   rp   rq   N)rk   rl   rm   r   r   r   r!   r$   r   r  r    s        HD
CCCr$   r  c                   v   e Zd ZdZ	 	 	 	 d"dZd Zd Zd Zd Zd Z	d	 Z
ed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#dS )#Columna_  Represents meta data for a table column.

    Args:
        col_type (int): The column type.
        catalog (str): The catalog.
        schema (str): The schema name.
        table (str): The table name.
        original_table (str): The original table name.
        name (str): The column name.
        original_name (str): The original table name.
        length (int): The column length,
        collation (str): The collation name.
        fractional_digits (int): The fractional digits.
        flags (int): The flags.
        content_type (int): The content type.

    .. versionchanged:: 8.0.12
    Nc                 v   t          |          | _        t          |          | _        t          |          | _        t          |          | _        t          |          | _        || _        d | _        || _        || _	        |	| _
        |
| _        || _        || _        d| _        d| _        d| _        d| _        d | _        d | _        d | _        | j
        dk    r| j
        t+          t,                    k    r't/          d                    | j
                            t,          | j
                 }|d         | _        |d         | _        d| j        v pd| j        v | _        |                                  | j        t4          j        t4          j        t4          j        t4          j        t4          j        fv | _        d S )NFr   z"No mapping found for collation {0}r   binary_bin) r   _schema_name_original_name_table_original_table_proto_type	_col_type_catalog_length
_collation_fractional_digits_flags_content_type_number_signed
_is_padded
_is_binary	_is_bytes_collation_name_character_set_name
_zero_fillr   r   r3   r   	_map_typer   r   r   r   r   r   )r   r   catalogschematableoriginal_tablenameoriginal_namelength	collationfractional_digitsflagscontent_typeinfos                 r   r   zColumn.__init__  s    )00&t,,
/>>'..0@@##"3)###' ?Q#&:";";;;  "$$*F4?$;$;= = ='8D'+AwD$#'7D '4+??  >%)== O*.j/,1 1r$   c                 l    t          | j        | j        | j        t          | j                  d          S )N)r   r  r  r&  )strr  r  r  r  r   s    r   r   zColumn.__str__  s:    l[%%	
 
   	r$   c                 b   | j         t          j        k    rt          j        | _        nx| j         t          j        k    rt          j        | _        nQ| j         t          j        k    rt          j        | _        n*| j        rt          j        | _        nt          j	        | _        | j
        dz  | _        dS )z
Map bytes.r   N)r  r  r   r   r  r   r   r  r   r   r  r  r   s    r   
_map_byteszColumn._map_bytes  s    !1!:::'0DNN#3#888'_DNN#3#777'^DNN_ 	/'-DNN'.DN+/r$   c                     | j         dk    rt          j        | _        dS | j        t
          j        z  dk    rt          j        | _        dS | j         dk    rt          j        | _        dS t          d          )zMap datetime.rO   r   rz   z#Datetime mapping scenario unhandledN)	r  r   r   r  r  r   r   r   r3   r   s    r   _map_datetimezColumn._map_datetime  sj    <2'_DNNN[.881<<'1DNNN\R'0DNNNBCCCr$   c                    | j         dk    rt          j        | _        nh| j         dk    rt          j        | _        nK| j         dk    rt          j        | _        n.| j         dk    rt          j        | _        nt          j        | _        d| _        dS )zMap int type.r&   rs   rt   ru   TN)	r  r   r   r  r   r   r   r   r  r   s    r   _map_int_typezColumn._map_int_type  s}    <1'/DNN\Q'0DNN\Q'1DNN\R'^DNN'.DN"r$   c                 .   | j         dk    rt          j        | _        nh| j         dk    rt          j        | _        nK| j         dk    rt          j        | _        n.| j         dk    rt          j        | _        nt          j        | _        | j        dz  | _	        dS )zMap uint type.rq   rr   r-   rO   r   N)
r  r   r   r  r   r   r   r   r  r  r   s    r   _map_uint_typezColumn._map_uint_type  s    <1'/DNN\Q'0DNN\Q'1DNN\R'^DNN'.DN+/r$   c                    | j         t          j        k    r|                                  dS | j         t          j        k    r|                                  dS | j         t          j        k    r0t          j        | _        | j	        t          j        z  dk    | _        dS | j         t          j        k    r0t          j        | _        | j	        t          j        z  dk    | _        dS | j         t          j        k    r0t          j        | _        | j	        t          j        z  dk    | _        dS | j         t          j        k    r|                                  dS | j         t          j        k    rt          j        | _        dS | j         t          j        k    r|                                  dS | j         t          j        k    rt          j        | _        dS | j         t          j        k    rt          j        | _        dS | j         t          j        k    rt          j        | _        dS t/          d                    | j                             )z	Map type.r   zUnknown column type {0}N)r  r   r   r0  r   r2  r   r   r  r  r   r   _is_number_signedr   r   r   r,  r   r   r.  r   r   r   r3   r   r   s    r   r  zColumn._map_type  s   333     !555!!!!!!666'-DN/88Q> """!888'/DN/88Q> """!777'.DN/88Q> """!666OO!555'_DNNN!999     !444'^DNNN!555'_DNNN!444'^DNNN6==d>NOOPPPr$   c                     | j         S )z@str: The schema name.

        .. versionadded:: 8.0.12
        r  r   s    r   schema_namezColumn.schema_name5       |r$   c                     | j         p| j        S )z?str: The table name.

        .. versionadded:: 8.0.12
        r  r  r   s    r   
table_namezColumn.table_name=       #2t{2r$   c                     | j         p| j        S )z@str: The table label.

        .. versionadded:: 8.0.12
        r  r  r   s    r   table_labelzColumn.table_labelE       {2d22r$   c                     | j         p| j        S )z@str: The column name.

        .. versionadded:: 8.0.12
        r
  r	  r   s    r   column_namezColumn.column_nameM       "0dj0r$   c                     | j         p| j        S )zAstr: The column label.

        .. versionadded:: 8.0.12
        r	  r
  r   s    r   column_labelzColumn.column_labelU       z0T00r$   c                     | j         S )z@int: The column type.

        .. versionadded:: 8.0.12
        r  r   s    r   typezColumn.type]       ~r$   c                     | j         S )zBint. The column length.

        .. versionadded:: 8.0.12
        r  r   s    r   r#  zColumn.lengthe  r8  r$   c                     | j         S )zMint: The column fractional digits.

        .. versionadded:: 8.0.12
        r  r   s    r   r%  zColumn.fractional_digitsm       &&r$   c                     | j         S )zCstr: The collation name.

        .. versionadded:: 8.0.12
        r  r   s    r   collation_namezColumn.collation_nameu       ##r$   c                     | j         S )zGstr: The character set name.

        .. versionadded:: 8.0.12
        r  r   s    r   character_set_namezColumn.character_set_name}       ''r$   c                     | j         S )zUReturns the schema name.

        Returns:
            str: The schema name.
        r6  r   s    r   get_schema_namezColumn.get_schema_name  r8  r$   c                     | j         p| j        S )zSReturns the table name.

        Returns:
            str: The table name.
        r:  r   s    r   get_table_namezColumn.get_table_name  r<  r$   c                     | j         p| j        S )zUReturns the table label.

        Returns:
            str: The table label.
        r>  r   s    r   get_table_labelzColumn.get_table_label  r@  r$   c                     | j         p| j        S )zUReturns the column name.

        Returns:
            str: The column name.
        rB  r   s    r   get_column_namezColumn.get_column_name  rD  r$   c                     | j         p| j        S )zWReturns the column label.

        Returns:
            str: The column label.
        rF  r   s    r   get_column_labelzColumn.get_column_label  rH  r$   c                     | j         S )zaReturns the column proto type.

        Returns:
            int: The column proto type.
        )r  r   s    r   r   zColumn.get_proto_type  s     r$   c                     | j         S )zUReturns the column type.

        Returns:
            int: The column type.
        rJ  r   s    r   r   zColumn.get_type  rL  r$   c                     | j         S )zYReturns the column length.

        Returns:
            int: The column length.
        rN  r   s    r   
get_lengthzColumn.get_length  r8  r$   c                     | j         S )zoReturns the column fractional digits.

        Returns:
            int: The column fractional digits.
        rP  r   s    r   get_fractional_digitszColumn.get_fractional_digits  rQ  r$   c                     | j         S )z[Returns the collation name.

        Returns:
            str: The collation name.
        rS  r   s    r   get_collation_namezColumn.get_collation_name  rU  r$   c                     | j         S )zcReturns the character set name.

        Returns:
            str: The character set name.
        rW  r   s    r   get_character_set_namezColumn.get_character_set_name  rY  r$   c                     | j         S )zxReturns `True` if is a number signed.

        Returns:
            bool: Returns `True` if is a number signed.
        )r  r   s    r   is_number_signedzColumn.is_number_signed       ""r$   c                     | j         S )zfReturns `True` if is padded.

        Returns:
            bool: Returns `True` if is padded.
        )r  r   s    r   	is_paddedzColumn.is_padded  s     r$   c                     | j         S )zdReturns `True` if is bytes.

        Returns:
            bool: Returns `True` if is bytes.
        )r  r   s    r   is_byteszColumn.is_bytes  rL  r$   )NNNNNNNNNNN)$rk   rl   rm   __doc__r   r   r,  r.  r0  r2  r  r   r7  r;  r?  rC  rG  rK  r#  r%  rT  rX  r[  r]  r_  ra  rc  r   r   rg  ri  rk  rm  ro  rr  rt  r!   r$   r   r  r    s        $ CG?C@D*.%1 %1 %1 %1N  * * *	D 	D 	D# # #* * *Q Q QB   X 3 3 X3 3 3 X3 1 1 X1 1 1 X1   X   X ' ' X' $ $ X$ ( ( X(  3 3 33 3 31 1 11 1 1         ' ' '$ $ $( ( (# # #      r$   r  c                   L    e Zd ZdZd Zd Zd Z ed          d             ZdS )RowzRepresents a row element returned from a SELECT query.

    Args:
        rs (mysqlx.SqlResult or mysqlx.RowResult): The result set.
        fields (`list`): The list of fields.
    c                 "    || _         || _        d S r   )_fields
_resultset)r   rsfieldss      r   r   zRow.__init__  s    r$   c                 *    t          | j                  S r   )reprry  r   s    r   __repr__zRow.__repr__  s    DL!!!r$   c                 R   t          |t                    r| j                            |          n|}|dk    r7t          |t                    r"t	          d                    |                    |t          | j                  k    s|dk     rt          d          | j        |         S )z\Returns the value of a column by name or index.

        .. versionchanged:: 8.0.12
        r   Column name '{0}' not foundr   zIndex out of range)	r4   r*  rz  index_ofr3   r   r   ry  
IndexError)r   index	int_indexs      r   __getitem__zRow.__getitem__  s     %%%1DO,,U333+0 	??z%55?:AA%HHIIIDL))))Y]]1222|I&&r$   8.0.12c                    | j                             |          }|t          | j                  k    rt	          d          |dk    r"t          d                    |                    t          | j        |                   S )zReturns the value using the column name.

        Args:
            str_index (str): The column name.

        .. deprecated:: 8.0.12
        zArgument out of ranger   r  )rz  r  r   ry  r  r3   r   r*  )r   	str_indexr  s      r   
get_stringzRow.get_string  sx     O,,Y77	DL))))4555??:AA)LLMMM4<	*+++r$   N)	rk   rl   rm   ru  r   r  r  r	   r  r!   r$   r   rw  rw    sq           " " "' ' ' Z, , , , ,r$   rw  c                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )
BaseResultzProvides base functionality for result objects.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                     || _         d| _        d| _        d| _        g | _        g | _        |	d | _        d S |j        | _        |                                 d S NFr   r   )	_connection_closed_rows_affected_generated_id_generated_ids	_warnings	_protocolprotocolfetch_active_result)r   
connections     r   r   zBaseResult.__init__(  sc    % !DNNN'0DN**,,,,,r$   c                     | j         S )zReturns the number of affected items for the last operation.

        Returns:
            int: The number of affected items.
        r  r   s    r   get_affected_items_countz#BaseResult.get_affected_items_count6  rp  r$   c                     | j         S )zZReturns the warnings.

        Returns:
            `list`: The list of warnings.
        )r  r   s    r   get_warningszBaseResult.get_warnings>  rL  r$   c                 *    t          | j                  S )zcReturns the number of warnings.

        Returns:
            int: The number of warnings.
        )r   r  r   s    r   get_warnings_countzBaseResult.get_warnings_countF  s     4>"""r$   c                     || _         dS )z)Sets if resultset fetch is done.
        N)r  r   r   s     r   
set_closedzBaseResult.set_closedN  s     r$   c                 B    | j                             |||d           dS )zAppend a warning.

        Args:
            level (int): The warning level.
            code (int): The warning code.
            msg (str): The warning message.
        )levelcodemsgN)r  rH   )r   r  r  r  s       r   append_warningzBaseResult.append_warningS  s*     	tCHHIIIIIr$   c                     || _         dS )z Sets the generated ids.
        Nr  )r   generated_idss     r   set_generated_idszBaseResult.set_generated_ids]  s     ,r$   c                     || _         dS )z&Sets the generated insert id.
        Nr  )r   generated_ids     r   set_generated_insert_idz"BaseResult.set_generated_insert_idb  s     *r$   c                     || _         dS )z*Sets the number of rows affected.
        Nr  )r   totals     r   set_rows_affectedzBaseResult.set_rows_affectedg  s     $r$   N)rk   rl   rm   ru  r   r  r  r  r  r  r  r  r  r!   r$   r   r  r  "  s         
- - -# # #  # # #  
J J J, , ,
* * *
$ $ $ $ $r$   r  c                        e Zd ZdZd	 fd	Zd Z ed          d             Z ed          d             Zd Z	 xZ
S )
Resulta  Allows retrieving information about non query operations performed on
    the database.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
                                                   ids (`list`): A list of IDs.
    Nc                     t          t          |                               |           || _        || j                            |            d S d S r   )superr  r   _idsr  close_result)r   r  idsr   s      r   r   zResult.__init__u  sS    fd$$Z000	!))$///// "!r$   c                     | j         S )zjReturns the last insert id auto generated.

        Returns:
            int: The last insert id.
        r  r   s    r   get_autoincrement_valuezResult.get_autoincrement_value|       !!r$   r  c                 ^    | j         t          | j                   dk    rdS | j         d         S )zdReturns ID of the last document inserted into a collection.

        .. deprecated:: 8.0.12
        Nr   )r  r   r   s    r   get_document_idzResult.get_document_id  s/     9DI! 3 34y|r$   c                     | j         S )zIReturns the generated insert id.

        .. deprecated:: 8.0.12
        r  r   s    r   get_generated_insert_idzResult.get_generated_insert_id  r  r$   c                     | j         S )z#Returns the generated ids.
        r  r   s    r   get_generated_idszResult.get_generated_ids  s     ""r$   )NN)rk   rl   rm   ru  r   r  r	   r  r  r  __classcell__r   s   @r   r  r  m  s         0 0 0 0 0 0" " " Z   Z" " "# # # # # # #r$   r  c                   n     e Zd ZdZ fdZd Zed             Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Z xZS )BufferingResultzProvides base functionality for buffering result objects.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
                                                   ids (`list`): A list of IDs.
    c                     t          t          |                               |           g | _        d| _        d| _        g | _        d| _        d| _        | 	                                 d S r  )
r  r  r   _columns	_has_data_has_more_results_items
_page_size	_position_init_resultr   r  r   s     r   r   zBufferingResult.__init__  sd    ot$$--j999!&r$   c                     | j         |         S r   )r  )r   r  s     r   r  zBufferingResult.__getitem__  s    {5!!r$   c                 *    t          | j                  S )zint: The total of items.)r   r  r   s    r   countzBufferingResult.count  s     4;r$   c                     | j                             |           | _        t          | j                  dk    rdnd| _        g | _        d| _        d| _        | j                             | j        r| nd           dS )zInitialize the result.r   TFr{   r   N)	r  get_column_metadatar  r   _has_more_datar  r  r  set_active_resultr   s    r   r  zBufferingResult._init_result  s    (<<TBB&)$-&8&81&<&<dd%**43F ,54404	6 	6 	6 	6 	6r$   c                 6   | j                             |           }|dS dgt          |d                   z  }|sQt          t          |d                             D ].}| j        |         }t          ||d         |                   ||<   /t          | |          S )zRead item.

        Args:
            dumping (bool): `True` for dumping.

        Returns:
            :class:`mysqlx.Row`: A `Row` object.
        Nfield)r  read_rowr   r   r  r   rw  )r   dumpingrowr;   r   r   s         r   
_read_itemzBufferingResult._read_item  s     ''--;4vCL))) 	ESW..// E Es+)&#g,s2CDDS		4r$   c                     | j         rdS d}t          | j                  D ]:}|                     d          }| n | j                            |           |dz  };|S )zSReads the page items.

        Returns:
            int: Total items read.
        Fr   Nr   )r  r   r  r  r  rH   )r   r  r   r;   s       r   _page_in_itemszBufferingResult._page_in_items  sr     < 	5t'' 	 	A??5))D|Kt$$$QJEEr$   c                 `    d}| j         D ]#}|                                |k    r|c S |dz  }$dS )zeReturns the index of the column.

        Returns:
            int: The index of the column.
        r   r   r   )r  rc  )r   col_namer  cols       r   r  zBufferingResult.index_of  sJ     = 	 	C##%%11QJEErr$   c                 >    | j         rdS |                     d          S )zuFetch one item.

        Returns:
            :class:`mysqlx.Row` or :class:`mysqlx.DbDoc`: one result item.
        NF)r  r  r   s    r   	fetch_onezBufferingResult.fetch_one  s%     < 	4u%%%r$   c                 >    	 |                                  sn| j        S )zFetch all items.

        Returns:
            `list`: The list of items of :class:`mysqlx.DbDoc` or
                    :class:`mysqlx.Row`.
        )r  r  r   s    r   	fetch_allzBufferingResult.fetch_all  s-    	&&(( 	 {r$   c                     || _         dS )zdSets if result has data.

        Args:
            flag (bool): `True` if result has data.
        Nr  r  s     r   set_has_datazBufferingResult.set_has_data  s     r$   c                     || _         dS )zfSets if has more results.

        Args:
            flag (bool): `True` if has more results.
        N)r  r  s     r   set_has_more_resultsz$BufferingResult.set_has_more_results  s     "&r$   )rk   rl   rm   ru  r   r  r   r  r  r  r  r  r  r  r  r  r  r  s   @r   r  r    s             " " "     X 6 6 6  &  $  	& 	& 	&
 
 
  & & & & & & &r$   r  c                   >     e Zd ZdZ fdZed             Zd Z xZS )	RowResultzAllows traversing the Row objects returned by a Table.select operation.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                 X    t          t          |                               |           d S r   )r  r  r   r  s     r   r   zRowResult.__init__  '    i''
33333r$   c                     | j         S )z`list`: The list of columns.r  r   s    r   columnszRowResult.columns"  s     }r$   c                     | j         S )zReturns the list of columns.

        Returns:
            `list`: The list of columns.

        .. versionadded:: 8.0.12
        r  r   s    r   get_columnszRowResult.get_columns'  s     }r$   )	rk   rl   rm   ru  r   r   r  r  r  r  s   @r   r  r    sl         
4 4 4 4 4   X      r$   r  c                   4     e Zd ZdZ fdZd Zd Zd Z xZS )	SqlResultzRepresents a result from a SQL statement.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                 X    t          t          |                               |           d S r   )r  r  r   r  s     r   r   zSqlResult.__init__8  r  r$   c                     | j         S )zReturns the identifier for the last record inserted.

        Returns:
            str: The identifier of the last record inserted.
        r  r   s    r   r  z!SqlResult.get_autoincrement_value;  r  r$   c                 N    | j         rdS d| _        |                                  dS )zjProcess the next result.

        Returns:
            bool: Returns `True` if the fetch is done.
        FT)r  r  r  r   s    r   next_resultzSqlResult.next_resultC  s2     < 	5!&tr$   c                     | j         S )zReturns True if result has data.

        Returns:
            bool: Returns `True` if result has data.

        .. versionadded:: 8.0.12
        r  r   s    r   has_datazSqlResult.has_dataO  s     ~r$   )	rk   rl   rm   ru  r   r  r  r  r  r  s   @r   r  r  2  so         
4 4 4 4 4" " "
 
 
      r$   r  c                   ,     e Zd ZdZ fdZ fdZ xZS )	DocResultzAllows traversing the DbDoc objects returned by a Collection.find
    operation.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                 X    t          t          |                               |           d S r   )r  r  r   r  s     r   r   zDocResult.__init__`  r  r$   c                     t          t          |                               |          }|dS t          t	          |d                             S )zRead item.

        Args:
            dumping (bool): `True` for dumping.

        Returns:
            :class:`mysqlx.DbDoc`: A `DbDoc` object.
        Nr   )r  r  r  r   r   )r   r  r  r   s      r   r  zDocResult._read_itemc  sG     It$$//88;4&s1v..///r$   )rk   rl   rm   ru  r   r  r  r  s   @r   r  r  Y  s[         4 4 4 4 40 0 0 0 0 0 0 0 0r$   r  ),ru  rR   r(   r   r   r   dbdocr   charsetsr   helpersr   r	   r   r#   r*   r.   r?   rD   rF   rK   rY   rb   rg   objectri   r   r   r   r   r   r   r   r   r   r  r  rw  r  r  r  r  r  r  r!   r$   r   <module>r     sv  : , +   



 ( ( ( ( ( ( ( (       * * * * * * 2 2 2 2 2 2 2 2  "  
+ + +
+ + +
( ( (,       *!3 !3 !3HH H H*, , ,@       I0 I0 I0 I0 I0 I0 I0 I0X    f   8$ $ $ $ $F $ $ $N    %       +       k              {       {       {   V V V V VV V V Vr
), ), ), ), ),& ), ), ),XH$ H$ H$ H$ H$ H$ H$ H$V,# ,# ,# ,# ,#Z ,# ,# ,#^z& z& z& z& z&j z& z& z&z       2% % % % %	 % % %N0 0 0 0 0 0 0 0 0 0r$   