
    Dh+\                     V   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 d<d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 d0 d1e      Z' G d2 d3e'      Z( G d4 d5e'      Z) G d6 d7e)      Z* G d8 d9e*      Z+ G d: d;e)      Z,y)=z)Implementation of the Result Set classes.    N)datetime	timedelta   )DbDoc)MYSQL_CHARACTER_SETS)STRING_TYPESc                 H    t        | t              r| j                  |      S | S N)
isinstancebytesdecode)valueencodings     M/var/www/html/civilisation/venv/lib/python3.12/site-packages/mysqlx/result.pydecode_from_bytesr   %   s    %/u%=5<<!H5H    c                    t        |      dk(  ry 	 	 t        j                  t        t        j                  t
        t        j                  t        t        j                  t        t        j                  t        t        j                  t        t        j                  t        t        j                   t
        t        j"                  t$        t        j&                  t        t        j(                  t*        i|    |      S # t,        $ ru}t.        j0                  j3                  dj5                  |             t.        j0                  j3                  dj5                  |j7                  d                   Y d }~y d }~ww xY w)Nr   {0}hex)lenColumnProtoTypeSINTvarsint_from_protobufUINTvarint_from_protobufBYTESbytes_from_protobufDATETIMEdatetime_from_protobufTIMEtime_from_protobufFLOATfloat_from_protobufDOUBLEdouble_from_protobufBITSETset_from_protobufENUMDECIMALdecimal_from_protobufKeyErrorsysstderrwriteformatencode)col_typepayloades      r   from_protobufr5   )   s   
7|q  "7  "6!!#6$$&<  "4!!#6""$8!5!2  "5##%:
   	  

a)

gnnU&;<=s   C&C8 8	E6A+E11E6c                     | d d S )N r3   s    r   r   r   A   s    3B<r   c                 N    t        |       dk(  sJ t        j                  d|       S )N   z<fr   structunpackr9   s    r   r#   r#   F   %    w<1==w''r   c                 N    t        |       dk(  sJ t        j                  d|       S )N   z<dr<   r9   s    r   r%   r%   K   r?   r   c                     t        |       dk(  rt        d      d}d}d}| D ]N  }t        |t              r|n
t	        |      }|dz  dk(  }|dz  }||z  }||z  }|r|| |dz   d  fc S |dz  }|dz  }P t        d      )Nr   zPayload is empty      r      zPayload too short)r   
ValueErrorr   intordEOFError)r3   curishiftccheoscur_bitss           r   varint_from_protobuf_streamrQ   P   s    
7|q+,,
C	AE 	Q$Q#a&DyQIU	XgcAgh'''q
	 &
''r   c                 T    t        |       \  }} t        |       dk7  rt        d      |S )Nr   Payload too longrQ   r   rF   r3   rK   s     r   r   r   f   s-    ,W5JAw
7|q+,,Hr   c                     t        |       \  }} t        |       dk7  rt        d      |dz  r| }|dz	  }|dz  }|S |dz	  }|S )Nr   rS   r   l            rT   rU   s     r   r   r   n   sa    ,W5JAw
7|q+,, 	3wB!V	W H !VHr   c                    g }	 	 t        |       \  }} t        |       |k  r.t        |       dk(  r|dk(  rt        |      dk(  rg S t        d      |j                  | d |        | |d  } t        |       dk(  r	 |S 	 w# t        $ r Y |S w xY w)Nr   r   zInvalid Set encoding)rQ   r   rF   append)r3   s	field_lens      r   r(   r(   ~   s    
A
	!<W!EIw7|i'w<1$aCFaKI !788HHWZi()ij)G7|q  H !   	H	s   >A; 2A; ;	BBc                    g }d }t        | d         }| dd  } | D ]  }t        |      }|dz  dz	  }|dz  }|dk  rE|j                  |       |dk  r|j                  |       H|dk(  rd} nO|dk(  rd} nFt        d	      |dk(  rd}|dk(  sJ  n+|dk(  rd}|dk(  sJ  nt        d
j                  |             t	        j
                  ||| f      S )Nr   r      r;      
         zInvalid BCDzInvalid BCD: {0})rH   rX   rF   r0   decimalDecimal)r3   digitssignscalerM   rN   high_bcdlow_bcds           r   r+   r+      s   FD
OEabkG BVI!#t)d?MM(#~g&DD //Dd?"?Dd?"?/66x@AA3B6 ??D&5&122r   c           	         d}d}d}d}t        |       \  }} t        |       \  }} t        |       \  }} 	 t        |       \  }} t        |       \  }} t        |       \  }} t        |       \  }} t        |||||||      S # t        $ r Y w xY wNr   )rQ   rF   r   )r3   hourminutessecondsusecondsyearmonthdays           r   r   r      s    DGGH/8MD'09NE7.w7LC3G<g6w?6w?7@' D%dGWhGG  s   8A= =	B	B	c                    d}d}d}d}| d   dk(  }| dd  } 	 t        |       \  }} t        |       \  }} t        |       \  }} t        |       \  }} |r|r|dz  }n|r|dz  }n|r|dz  }n|r|dz  }t        ||||      S # t        $ r Y ;w xY w)Nr   r   r7   )hoursrk   rl   microseconds)rQ   rF   r   )r3   rj   rk   rl   rm   negates         r   r!   r!      s    DGGHQZ1_FabkG3G<g6w?6w?7@' BJDrMGrMGNH4'"*, ,  s   8A? ?	B
Bc                       e Zd ZdZy)
Collations!   N)__name__
__module____qualname__UTF8_GENERAL_CIr8   r   r   rv   rv      s    Or   rv   c                      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.y,)-
ColumnTyper         r;         rE   rA   	   r^      r_   r`      r]                                                       rw   "   #   c                 X    t        |       j                         D ]  \  }}||k(  s|c S  y r
   )varsitems)clsneedlekeyr   s       r   	to_stringzColumnType.to_string  s,    s)//+ 	JC
	r   c                 8    t        | |j                         d       S r
   )getattrupper)r   r   s     r   from_stringzColumnType.from_string  s    sCIIK..r   c                 6    || j                   | j                  fv S r
   )CHARVARCHARr   r2   s     r   is_charzColumnType.is_char  s    CHHckk333r   c                 6    || j                   | j                  fv S r
   )BINARY	VARBINARYr   s     r   	is_binaryzColumnType.is_binary#  s    CJJ777r   c                 b    || j                   | j                  | j                  | j                  fv S r
   )TEXTTINYTEXT
MEDIUMTEXTLONGTEXTr   s     r   is_textzColumnType.is_text'  s-    CHHcllCNNLL  	r   c                 x    || j                   | j                  | j                  | j                  | j                  fv S r
   )REALr$   r"   r*   NUMERICr   s     r   is_decimalszColumnType.is_decimals,  s3    CHHcjj#))S[[KK  	r   c                     || j                   | j                  | j                  | j                  | j                  | j
                  fv S r
   )r&   TINYINTSMALLINT	MEDIUMINTINTBIGINTr   s     r   
is_numericzColumnType.is_numeric1  s9    CGGS[[#,,GGSZZ" " 	"r   c                 6    || j                   | j                  fv S r
   )r'   r)   r   s     r   is_finite_setzColumnType.is_finite_set6  s    CGGSXX///r   N)/rx   ry   rz   r&   r   r   r   r   r   r   r"   r*   r   r$   JSONSTRINGr   r    DATEr   	TIMESTAMPr'   r)   GEOMETRYXMLYEARr   r   r   r   TINYBLOBBLOB
MEDIUMBLOBLONGBLOBr   r   r   r   classmethodr   r   r   r   r   r   r   r   r8   r   r   r}   r}      sO   
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 8 8     " " 0 0r   r}   c                   8    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y)r   r   r~   r   r   rE   r^   r_   r]   r   r   r   N)rx   ry   rz   r   r   r$   r"   r   r    r   r'   r)   r&   r*   r8   r   r   r   r   ;  s9    DDFEEDH
CD
CGr   r   c                   L    e Zd Zd Zd Zed        Zej                  d        Zy)Flagsc                    i | _         i | _        | j                  j                  j	                         D ]H  \  }}|j                  d      rt        |      t        fv s+|| j                   |<   || j                  |<   J || _        y )N__)	_allowed_flags_flag_names	__class____dict__r   
startswithtyperG   r   )selfr   kvs       r   __init__zFlags.__init__J  s~     NN++113 	(DAq||D!Aw3'!)*##A&&'  #	( 
r   c                    d}g }| j                   }t        dd      D ].  }|dz  }||z  }|s	 |j                  | j                  |          0 dj                  |      S # t        $ r} t
        j                  j                  dj                  | j                               t
        j                  j                  dj                  | j                  j                               Y w xY w)Nr   r   ?   r   ,)r   rangerX   r   r,   r-   r.   r/   r0   r   r   join)r   mask
flag_namesr   _flags         r   __str__zFlags.__str__U  s    


q" 		LAQJD4<DL%%d&6&6t&<=		L xx
##	   LJJ$$U\\$2B2B%CDJJ$$U\\$..2I2I%JKLs   ABC%$C%c                     | j                   S r
   _valuer   s    r   r   zFlags.valueg      {{r   c                     || _         y r
   r   )r   r   s     r   r   zFlags.valuek  s	    r   N)rx   ry   rz   r   r   propertyr   setterr8   r   r   r   r   I  s8    	$$   \\ r   r   c                        e Zd ZdZdZdZdZdZy)ColumnFlagsr   r   @   rC      N)rx   ry   rz   NOT_NULLPRIMARY_KEY
UNIQUE_KEYMULTIPLE_KEYAUTO_INCREMENTr8   r   r   r   r   p  s    HKJLNr   r   c                       e Zd ZdZy)DatetimeColumnFlagsr   N)rx   ry   rz   r   r8   r   r   r   r   x      Ir   r   c                       e Zd ZdZy)UIntColumnFlagsr   N)rx   ry   rz   ZEROFILLr8   r   r   r   r   |      Hr   r   c                       e Zd ZdZy)DoubleColumnFlagsr   Nrx   ry   rz   UNSIGNEDr8   r   r   r   r     r   r   r   c                       e Zd ZdZy)FloatColumnFlagsr   Nr   r8   r   r   r  r    r   r   r  c                       e Zd ZdZy)BytesColumnFlagsr   N)rx   ry   rz   	RIGHT_PADr8   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZy)BytesContentTyper   r~   r   N)rx   ry   rz   r   r   r   r8   r   r   r  r    s    HD
Cr   r  c                       e Zd Z	 	 	 	 d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y)ColumnMetaDataNc                 v   t        |      | _        t        |      | _        t        |      | _        t        |      | _        t        |      | _        || _        d | _        || _        || _	        |	| _
        |
| _        || _        || _        d| _        d| _        d| _        d| _        d | _        d | _        | j                  dkD  r| j                  t)        t*              k\  r$t-        dj/                  | j                              t*        | j                     }|d   | _        |d   | _        d| j$                  v xs d| j$                  v | _        | j1                          | j                  t2        j4                  t2        j6                  t2        j8                  t2        j:                  t2        j<                  fv | _        y )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_namer   r   rF   r0   	_map_typer}   r   r   r   r   r   )r   r2   catalogschematableoriginal_tablenameoriginal_namelength	collationfractional_digitsflagscontent_typeinfos                 r   r   zColumnMetaData.__init__  s{    )0&t,
/>'.0@##"3)###' ??Q#&:";;  "$$*F4??$;= ='8D'+AwD$#'7D '4+?+??  >%)=)== O*..j//,1 1r   c                     t        | j                  | j                  | j                  t        | j                        d      S )N)r2   r!  r"  r)  )strr  r  r  r  r   s    r   r   zColumnMetaData.__str__  s5    ll[[%	
  	r   c                     | j                   S r
   )r  r   s    r   get_schema_namezColumnMetaData.get_schema_name      ||r   c                 6    | j                   xs | j                  S r
   )r  r  r   s    r   get_table_namezColumnMetaData.get_table_name  s    ##2t{{2r   c                 6    | j                   xs | j                  S r
   )r  r  r   s    r   get_table_labelzColumnMetaData.get_table_label  s    {{2d222r   c                 6    | j                   xs | j                  S r
   )r  r  r   s    r   get_column_namezColumnMetaData.get_column_name  s    ""0djj0r   c                 6    | j                   xs | j                  S r
   )r  r  r   s    r   get_column_labelzColumnMetaData.get_column_label  s    zz0T000r   c                     | j                   S r
   )r  r   s    r   get_typezColumnMetaData.get_type      ~~r   c                     | j                   S r
   )r  r   s    r   
get_lengthzColumnMetaData.get_length  r0  r   c                     | j                   S r
   )r  r   s    r   get_fractional_digitsz$ColumnMetaData.get_fractional_digits  s    &&&r   c                     | j                   S r
   )r  r   s    r   get_collation_namez!ColumnMetaData.get_collation_name  s    ###r   c                     | j                   S r
   )r  r   s    r   get_character_set_namez%ColumnMetaData.get_character_set_name  s    '''r   c                     | j                   S r
   )r  r   s    r   is_number_signedzColumnMetaData.is_number_signed  s    """r   c                     | j                   S r
   )r  r   s    r   	is_paddedzColumnMetaData.is_padded  s    r   c                     | j                   S r
   )r  r   s    r   is_byteszColumnMetaData.is_bytes  r;  r   c                    | j                   dk  rt        j                  | _        d| _        y | j                   dk  rt        j                  | _        d| _        y | j                   dk  rt        j
                  | _        d| _        y | j                   dk  rt        j                  | _        d| _        y t        j                  | _        d| _        y )Nr;   r   r   r   T)	r  r}   r   r  r   r   r   r   r  r   s    r   _map_int_typezColumnMetaData._map_int_type  s    <<1'//DN # \\Q'00DN # \\Q'11DN
 #	 \\R'^^DN # (..DN"r   c                 ~   | j                   dk  rt        j                  | _        n| j                   dk  rt        j                  | _        n_| j                   dk  rt        j
                  | _        n:| j                   dk  rt        j                  | _        nt        j                  | _        | j                  dz  | _	        y )Nr   r   rA   r^   r   )
r  r}   r   r  r   r   r   r   r  
_zero_fillr   s    r   _map_uint_typezColumnMetaData._map_uint_type  s    <<1'//DN\\Q'00DN\\Q'11DN\\R'^^DN'..DN++/r   c                    | j                   t        j                  k(  rt        j                  | _        n| j                   t        j
                  k(  rt        j
                  | _        nj| j                   t        j                  k(  rt        j                  | _        n7| j                  rt        j                  | _        nt        j                  | _        | j                  dz  | _        y )Nr   )r  r  r   r}   r  r   r   r  r   r   r  r  r   s    r   
_map_byteszColumnMetaData._map_bytes  s    !1!:!::'00DN#3#8#88'__DN#3#7#77'^^DN__'--DN'..DN++/r   c                    | j                   dk(  rt        j                  | _        y | j                   dk(  rt        j                  | _        y | j
                  t        j                  z  dkD  rt        j                  | _        y t        d      )Nr^   r   r   z#Datetime mapping scenario unhandled)	r  r}   r   r  r   r  r   r   rF   r   s    r   _map_datetimezColumnMetaData._map_datetime  sc    <<2'__DN\\R'00DN[[.8881<'11DNBCCr   c                 b   | j                   t        j                  k(  r| j                          y | j                   t        j                  k(  r| j                          y | j                   t        j                  k(  r;t        j                  | _        | j                  t        j                  z  dk(  | _        y | j                   t        j                  k(  r;t        j                  | _        | j                  t        j                  z  dk(  | _        y | j                   t        j                  k(  r;t        j                  | _        | j                  t        j                  z  dk(  | _        y | j                   t        j                  k(  r| j!                          y | j                   t        j"                  k(  rt        j"                  | _        y | j                   t        j$                  k(  r| j'                          y | j                   t        j(                  k(  rt        j(                  | _        y | j                   t        j*                  k(  rt        j*                  | _        y | j                   t        j,                  k(  rt        j,                  | _        y t/        dj1                  | j                               )Nr   zUnknown column type {0})r  r   r   rK  r   rN  r"   r}   r  r  r  r   _is_number_signedr*   r$   r   rP  r    r   rR  r'   r)   r&   rF   r0   r   s    r   r  zColumnMetaData._map_type  s   333 !5!55!!6!66'--DN/888Q> "!8!88'//DN/888Q> "!7!77'..DN/888Q> "!6!66OO!5!55'__DN!9!99 !4!44'^^DN!5!55'__DN!4!44'^^DN6==d>N>NOPPr   )NNNNNNNNNNN)rx   ry   rz   r   r   r/  r2  r4  r6  r8  r:  r=  r?  rA  rC  rE  rG  rI  rK  rN  rP  rR  r  r8   r   r   r  r    su    BF?C@D*.$1L3311'$(##**DQr   r  c                   B    e Zd Zd Zed        Zed        Zed        Zy)Warningc                 .    || _         || _        || _        y r
   )_level_code_message)r   levelcodemsgs       r   r   zWarning.__init__;  s    
r   c                     | j                   S r
   )rX  r   s    r   LevelzWarning.Level@  r   r   c                     | j                   S r
   )rY  r   s    r   CodezWarning.CodeD  s    zzr   c                     | j                   S r
   )rZ  r   s    r   MessagezWarning.MessageH  s    }}r   N)rx   ry   rz   r   r   r_  ra  rc  r8   r   r   rV  rV  :  sC    
      r   rV  c                   "    e Zd ZdZd Zd Zd Zy)RowzRepresents a row element returned from a SELECT query.

    Args:
        rs (mysqlx.Result): The Result set.
        fields (list): The list of fields.
    c                      || _         || _        y r
   )_fields
_resultset)r   rsfieldss      r   r   zRow.__init__T  s    r   c                     t        |t              r| j                  j                  |      }n#|t	        | j
                        k\  rt        d      | j
                  |   S )NzIndex out of range)r   r   rh  index_ofr   rg  
IndexErrorr   indexs     r   __getitem__zRow.__getitem__X  sL    e\*OO,,U3Ec$,,''122||E""r   c                     | j                   j                  |      }|t        | j                        k\  rt	        d      |dk(  rt        dj                  |            t        | j                  |         S )zpReturns the value if the index by string.

        Args:
            str_index (str): The string index.
        zArgument out of ranger7   zColumn name '{0}' not found)rh  rl  r   rg  rm  rF   r0   r-  )r   	str_index	int_indexs      r   
get_stringzRow.get_string_  sg     OO,,Y7	DLL))455?:AA)LMM4<<	*++r   N)rx   ry   rz   __doc__r   rp  rt  r8   r   r   re  re  M  s    #,r   re  c                   "    e Zd ZdZd Zd Zd Zy)
BaseResultzProvides base functionality for result objects.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                     || _         d| _        d| _        d| _        g | _        |d | _        y |j                  | _        |j                          y )NFr   r7   )_connection_closed_rows_affected_generated_id	_warnings	_protocolprotocolfetch_active_result)r   
connections     r   r   zBaseResult.__init__s  sN    %!DN'00DN**,r   c                     | j                   S )zXReturns the warnings.

        Returns:
            list: The list of warnings.
        )r}  r   s    r   get_warningszBaseResult.get_warnings  s     ~~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_count  s     4>>""r   N)rx   ry   rz   ru  r   r  r  r8   r   r   rw  rw  m  s    
-#r   rw  c                   <     e Zd ZdZd fd	Zd Zd Zd Zd Z xZ	S )ResultzAllows retrieving information about non query operations performed on
    the database.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
        ids (list): A list of IDs.
    c                 v    t         t        |   |       || _        || j                  j                  |        y y r
   )superr  r   _idsry  close_result)r   r  idsr   s      r   r   zResult.__init__  s8    fd$Z0	!))$/ "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Result.get_affected_items_count  s     """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  s     !!!r   c                 l    | j                   yt        | j                         dk(  ry| j                   d   S )zDReturns ID of the last document inserted into a collection.
        Nr   )r  r   r   s    r   get_document_idzResult.get_document_id  s2     99tyy>Qyy|r   c                     | j                   S )z5Returns the list of generated documents IDs.
        )r  r   s    r   get_document_idszResult.get_document_ids  s     yyr   )NN)
rx   ry   rz   ru  r   r  r  r  r  __classcell__r   s   @r   r  r    s!    0#"r   r  c                   X     e Zd Z fdZd Zed        Zd Zd Zd Z	d Z
d Zd	 Z xZS )
BufferingResultc                 L    t         t        |   |       | j                          y r
   )r  r  r   _init_resultr   r  r   s     r   r   zBufferingResult.__init__  s    ot-j9r   c                    | j                   j                  |       | _        t        | j                        dkD  rdnd| _        g | _        d| _        d| _        | j                  r| | j                   _        y d | j                   _        y )Nr   TFr   r7   )	ry  get_column_metadata_columnsr   _has_more_data_items
_page_size	_position_active_resultr   s    r   r  zBufferingResult._init_result  sl    ((<<TB&)$--&81&<d%262E2E$'4'r   c                 ,    t        | j                        S )z!int: The total of items.
        )r   r  r   s    r   countzBufferingResult.count  s     4;;r   c                      | j                   |   S r
   )r  rn  s     r   rp  zBufferingResult.__getitem__  s    {{5!!r   c                 b    d}| j                   D ]  }|j                         |k(  r|c S |dz   }  y)zeReturns the index of the column.

        Returns:
            int: The index of the column.
        r   r   r7   )r  r6  )r   col_namero  cols       r   rl  zBufferingResult.index_of  s@     == 	C""$0AIE	 r   c                    | j                   j                  |       }|y d gt        |j                        z  }|st	        t        |j                              D ]a  }| j
                  |   }|j                         rt        |j                  |         n|j                  |   }t        |j                  |      ||<   c t        | |      S r
   )ry  read_rowr   fieldr   r  rI  r   r5   r  re  )r   dumpingrowitemxr  r   s          r   
_read_itemzBufferingResult._read_item  s    ''-;vCII&3syy>* @mmA&LLN +399Q<803		! '?Q	@
 4r   c                     | j                   ryd}t        | j                        D ]8  }| j                  d      }| |S | j                  j                  |       |dz  }: |S )NFr   r   )rz  r   r  r  r  rX   )r   r  rK   r  s       r   _page_in_itemszBufferingResult._page_in_items  sj    <<t' 	A??5)D|  KKt$QJE	 r   c                 >    | j                   ry| j                  d      S )zS Fetch one item.

        Returns:
            Row/DbDoc: one result item.
        NF)rz  r  r   s    r   	fetch_onezBufferingResult.fetch_one  s     <<u%%r   c                 @    	 | j                         s	 | j                  S )zPFetch all items.

        Returns:
            list: The list of items.
        )r  r  r   s    r   	fetch_allzBufferingResult.fetch_all  s%     &&({{ r   )rx   ry   rz   r   r  r   r  rp  rl  r  r  r  r  r  r  s   @r   r  r    s@    P    
"	&	r   r  c                   2     e Zd ZdZ fdZe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                 ,    t         t        |   |       y r
   )r  r  r   r  s     r   r   zRowResult.__init__      i'
3r   c                     | j                   S )z#list: The list of columns.
        )r  r   s    r   columnszRowResult.columns  s     }}r   )rx   ry   rz   ru  r   r   r  r  r  s   @r   r  r    s!    
4  r   r  c                   .     e Zd ZdZ f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                 :    t         t        |   |       d| _        y )NF)r  r  r   _has_more_resultsr  s     r   r   zSqlResult.__init__)  s    i'
3!&r   c                     | j                   S )z=Returns the identifier for the last record inserted.
        r  r   s    r   r  z!SqlResult.get_autoincrement_value-  s     !!!r   c                 L    | j                   ryd| _        | j                          y)NFT)rz  r  r  r   s    r   next_resultzSqlResult.next_result2  s#    <<!&r   )rx   ry   rz   ru  r   r  r  r  r  s   @r   r  r  #  s    
'"
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                 ,    t         t        |   |       y r
   )r  r  r   r  s     r   r   zDocResult.__init__A  r  r   c                 ^    t         t        |   |      }|y t        t	        |d               S ri   )r  r  r  r   r   )r   r  r  r   s      r   r  zDocResult._read_itemD  s1    It/8;&s1v.//r   )rx   ry   rz   ru  r   r  r  r  s   @r   r  r  :  s    40 0r   r  )zutf-8)-ru  ra   r=   r-   r   r   dbdocr   charsetsr   compatr   r   r5   r   r#   r%   rQ   r   r   r(   r+   r   r!   objectrv   r}   r   r   r   r   r   r   r  r  r  r  rV  re  rw  r  r  r  r  r  r8   r   r   <module>r     s^  0 0   
 (  *  I0
(
(
(, *!3HH*,@ H0 H0Vf $F $N% + k  { { { eQV eQPf &,& ,@!# !#H+Z +\Qj Qh  	 .0 0r   