B
    Ñš[+\  ã               @   sö  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 dId	d
„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&eƒZG d'd(„ d(eƒZG d)d*„ d*eƒZG d+d,„ d,eƒZG d-d.„ d.eƒZG d/d0„ d0eƒZ G d1d2„ d2eƒZ!G d3d4„ d4eƒZ"G d5d6„ d6eƒZ#G d7d8„ d8eƒZ$G d9d:„ d:eƒZ%G d;d<„ d<eƒZ&G d=d>„ d>eƒZ'G d?d@„ d@e'ƒZ(G dAdB„ dBe'ƒZ)G dCdD„ dDe)ƒZ*G dEdF„ dFe*ƒZ+G dGdH„ dHe)ƒZ,dS )Jz)Implementation of the Result Set classes.é    N)ÚdatetimeÚ	timedeltaé   )ÚDbDoc)ÚMYSQL_CHARACTER_SETS)ÚSTRING_TYPESúutf-8c             C   s   t | tƒr|  |¡S | S )N)Ú
isinstanceÚbytesÚdecode)ÚvalueÚencoding© r   ú‘C:\Users\HIRONO~1\AppData\Local\Temp\pip-install-ioykiiwb\mysql-connector-python-rf\mysql_connector_python_rf-2.2.2.data\purelib\mysqlx\result.pyÚdecode_from_bytes%   s    r   c             C   s°   t |ƒdkrd S yNt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k
rª } z.tj d |¡¡ tj d | d¡¡¡ d S d }~X Y nX d S )Nr   z{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Úer   r   r   Úfrom_protobuf)   s&    
r1   c             C   s   | d d… S )Néÿÿÿÿr   )r/   r   r   r   r   A   s    r   c             C   s   t | ƒdkst‚t d| ¡S )Né   z<f)r   ÚAssertionErrorÚstructÚunpack)r/   r   r   r   r   F   s    r   c             C   s   t | ƒdkst‚t d| ¡S )Né   z<d)r   r4   r5   r6   )r/   r   r   r   r!   K   s    r!   c             C   sœ   t | ƒdkrtdƒ‚d}d}d}xn| D ]f}t|tƒr8|nt|ƒ}|d@ dk}|d@ }||K }||O }|r||| |d d … fS |d7 }|d7 }q&W tdƒ‚d S )Nr   zPayload is emptyé€   é   r   é   zPayload too short)r   Ú
ValueErrorr	   ÚintÚordÚEOFError)r/   ÚcurÚiÚshiftÚcÚchZeosZcur_bitsr   r   r   Úvarint_from_protobuf_streamP   s     
rD   c             C   s$   t | ƒ\}} t| ƒdkr tdƒ‚|S )Nr   zPayload too long)rD   r   r;   )r/   r@   r   r   r   r   f   s    r   c             C   sL   t | ƒ\}} t| ƒdkr tdƒ‚|d@ r@| }|d? }|dO }n|d? }|S )Nr   zPayload too longr   l            )rD   r   r;   )r/   r@   r   r   r   r   n   s    
r   c             C   sš   g }x�ytt | ƒ\}} t| ƒ|k rLt| ƒdkrD|dkrDt|ƒdkrDg S tdƒ‚| | d |… ¡ | |d … } t| ƒdkrxP W q tk
r�   P Y qX qW |S )Nr   r   zInvalid Set encoding)rD   r   r;   Úappend)r/   ÚsZ	field_lenr   r   r   r$   ~   s     r$   c             C   sò   g }d }t | d ƒ}| dd … } x¾| D ]¶}t |ƒ}|d@ d? }|d@ }|dk r–| |¡ |dk rl| |¡ qÜ|dkr|d}P qÜ|dkrŒd}P qÜtd	ƒ‚q&|dkr²d}|dks®t‚P q&|dkrÎd}|dksÊt‚P q&td
 |¡ƒ‚q&W t ||| f¡S )Nr   r   éð   r3   é   é
   é   é   zInvalid BCDzInvalid BCD: {0})r=   rE   r;   r4   r,   ÚdecimalÚDecimal)r/   ÚdigitsÚsignZscalerB   rC   Zhigh_bcdZlow_bcdr   r   r   r'   “   s:    


r'   c             C   s’   d}d}d}d}t | ƒ\}} t | ƒ\}} t | ƒ\}} y4t | ƒ\}} t | ƒ\}} t | ƒ\}} t | ƒ\}} W n tk
r|   Y nX t|||||||ƒS )Nr   )rD   r;   r   )r/   ÚhourÚminutesÚsecondsÚusecondsÚyearÚmonthÚdayr   r   r   r   ·   s    r   c             C   s¼   d}d}d}d}| d dk}| dd … } y4t | ƒ\}} t | ƒ\}} t | ƒ\}} t | ƒ\}} W n tk
rp   Y nX |r¬|r„|d9 }n(|r’|d9 }n|r |d9 }n|r¬|d9 }t||||d�S )Nr   r   r2   )ÚhoursrQ   rR   Úmicroseconds)rD   r;   r   )r/   rP   rQ   rR   rS   Únegater   r   r   r   Ì   s0    


r   c               @   s   e Zd ZdZdS )Ú
Collationsé!   N)Ú__name__Ú
__module__Ú__qualname__ZUTF8_GENERAL_CIr   r   r   r   rZ   ì   s   rZ   c               @   sø   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$d%„ ƒZ'e&d&d'„ ƒZ(e&d(d)„ ƒZ)e&d*d+„ ƒZ*e&d,d-„ ƒZ+e&d.d/„ ƒZ,e&d0d1„ ƒZ-e&d2d3„ ƒZ.d4S )5Ú
ColumnTyper   é   é   r3   é   é   r:   r7   é	   rI   é   rJ   rK   é   rH   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é    r[   é"   é#   c             C   s*   x$t | ƒ ¡ D ]\}}||kr|S qW d S )N)ÚvarsÚitems)ÚclsZneedleÚkeyr   r   r   r   Ú	to_string  s    zColumnType.to_stringc             C   s   t | | ¡ d ƒS )N)ÚgetattrÚupper)r|   r}   r   r   r   Úfrom_string  s    zColumnType.from_stringc             C   s   || j | jfkS )N)ÚCHARÚVARCHAR)r|   r.   r   r   r   Úis_char  s    zColumnType.is_charc             C   s   || j | jfkS )N)ÚBINARYÚ	VARBINARY)r|   r.   r   r   r   Ú	is_binary#  s    zColumnType.is_binaryc             C   s   || j | j| j| jfkS )N)ÚTEXTÚTINYTEXTÚ
MEDIUMTEXTÚLONGTEXT)r|   r.   r   r   r   Úis_text'  s    zColumnType.is_textc             C   s   || j | j| j| j| jfkS )N)ÚREALr    r   r&   ÚNUMERIC)r|   r.   r   r   r   Úis_decimals,  s    zColumnType.is_decimalsc             C   s    || j | j| j| j| j| jfkS )N)r"   ÚTINYINTÚSMALLINTÚ	MEDIUMINTÚINTÚBIGINT)r|   r.   r   r   r   Ú
is_numeric1  s    zColumnType.is_numericc             C   s   || j | jfkS )N)r#   r%   )r|   r.   r   r   r   Úis_finite_set6  s    zColumnType.is_finite_setN)/r\   r]   r^   r"   r�   r‘   r’   r“   r”   r�   r   r&   rŽ   r    ÚJSONÚSTRINGr   r   ÚDATEr   Ú	TIMESTAMPr#   r%   ÚGEOMETRYÚXMLZYEARr‚   rƒ   r…   r†   ZTINYBLOBZBLOBZ
MEDIUMBLOBZLONGBLOBr‰   rˆ   rŠ   r‹   Úclassmethodr~   r�   r„   r‡   rŒ   r�   r•   r–   r   r   r   r   r_   ð   sV   r_   c               @   s8   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S )r   r   r`   rb   rc   r:   rI   rJ   rH   rg   rh   ri   N)r\   r]   r^   r   r   r    r   r   r   r   r#   r%   r"   r&   r   r   r   r   r   ;  s   r   c               @   s6   e Zd Zdd„ Zdd„ Zedd„ ƒZejdd„ ƒZdS )	ÚFlagsc             C   s^   i | _ i | _xF| jj ¡ D ]6\}}| d¡r.qt|ƒtfkr|| j |< || j|< qW || _d S )NÚ__)	Z_allowed_flagsÚ_flag_namesÚ	__class__Ú__dict__r{   Ú
startswithÚtyper<   r   )Úselfr   ÚkÚvr   r   r   Ú__init__J  s    

zFlags.__init__c          	   C   s”   d}g }| j }xztddƒD ]l}|dK }||@ }|ry| | j| ¡ W q tk
r„   tj d | j¡¡ tj d | j	j
¡¡ Y qX qW d |¡S )Nr   r   é?   z{0}ú,)r   ÚrangerE   r    r(   r)   r*   r+   r,   r¡   r¢   Újoin)r¥   ÚmaskZ
flag_namesr   Ú_Úflagr   r   r   Ú__str__U  s     zFlags.__str__c             C   s   | j S )N)Ú_value)r¥   r   r   r   r   g  s    zFlags.valuec             C   s
   || _ d S )N)r±   )r¥   r§   r   r   r   r   k  s    N)r\   r]   r^   r¨   r°   Úpropertyr   Úsetterr   r   r   r   rž   I  s   rž   c               @   s    e Zd ZdZdZdZdZdZdS )ÚColumnFlagsrg   rw   é@   r8   é   N)r\   r]   r^   ZNOT_NULLZPRIMARY_KEYZ
UNIQUE_KEYZMULTIPLE_KEYZAUTO_INCREMENTr   r   r   r   r´   p  s
   r´   c               @   s   e Zd ZdZdS )ÚDatetimeColumnFlagsr   N)r\   r]   r^   rš   r   r   r   r   r·   x  s   r·   c               @   s   e Zd ZdZdS )ÚUIntColumnFlagsr   N)r\   r]   r^   ZZEROFILLr   r   r   r   r¸   |  s   r¸   c               @   s   e Zd ZdZdS )ÚDoubleColumnFlagsr   N)r\   r]   r^   ÚUNSIGNEDr   r   r   r   r¹   €  s   r¹   c               @   s   e Zd ZdZdS )ÚFloatColumnFlagsr   N)r\   r]   r^   rº   r   r   r   r   r»   „  s   r»   c               @   s   e Zd ZdZdS )ÚBytesColumnFlagsr   N)r\   r]   r^   Z	RIGHT_PADr   r   r   r   r¼   ˆ  s   r¼   c               @   s   e Zd ZdZdZdZdS )ÚBytesContentTyper   r`   ra   N)r\   r]   r^   r›   r—   rœ   r   r   r   r   r½   Œ  s   r½   c               @   s®   e Zd Zd*dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ ZdS )+ÚColumnMetaDataNc             C   s  t |ƒ| _t |ƒ| _t |ƒ| _t |ƒ| _t |ƒ| _|| _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kpÞd| jk| _|  ¡  | jtjtjtjtjtjfk| _d S )NFr   z"No mapping found for collation {0}r   ÚbinaryZ_bin)r   Ú_schemaÚ_nameÚ_original_nameÚ_tableÚ_original_tableÚ_proto_typeÚ	_col_typeÚ_catalogÚ_lengthZ
_collationÚ_fractional_digitsÚ_flagsÚ_content_typeÚ_number_signedÚ
_is_paddedÚ
_is_binaryÚ	_is_bytesÚ_collation_nameÚ_character_set_namer   r   r;   r,   Ú	_map_typer_   r›   r—   rœ   r   r˜   )r¥   r.   ÚcatalogÚschemaÚtableZoriginal_tableÚnameÚoriginal_nameÚlengthZ	collationZfractional_digitsÚflagsÚcontent_typeÚinfor   r   r   r¨   “  s@    










zColumnMetaData.__init__c             C   s   t | j| j| jt | jƒdœƒS )N)r.   rÔ   rÕ   rÙ   )ÚstrrÆ   rÀ   rÃ   rÊ   )r¥   r   r   r   r°   ¹  s
    zColumnMetaData.__str__c             C   s   | j S )N)rÀ   )r¥   r   r   r   Úget_schema_nameÁ  s    zColumnMetaData.get_schema_namec             C   s   | j p
| jS )N)rÄ   rÃ   )r¥   r   r   r   Úget_table_nameÄ  s    zColumnMetaData.get_table_namec             C   s   | j p
| jS )N)rÃ   rÄ   )r¥   r   r   r   Úget_table_labelÇ  s    zColumnMetaData.get_table_labelc             C   s   | j p
| jS )N)rÂ   rÁ   )r¥   r   r   r   Úget_column_nameÊ  s    zColumnMetaData.get_column_namec             C   s   | j p
| jS )N)rÁ   rÂ   )r¥   r   r   r   Úget_column_labelÍ  s    zColumnMetaData.get_column_labelc             C   s   | j S )N)rÆ   )r¥   r   r   r   Úget_typeÐ  s    zColumnMetaData.get_typec             C   s   | j S )N)rÈ   )r¥   r   r   r   Ú
get_lengthÓ  s    zColumnMetaData.get_lengthc             C   s   | j S )N)rÉ   )r¥   r   r   r   Úget_fractional_digitsÖ  s    z$ColumnMetaData.get_fractional_digitsc             C   s   | j S )N)rÐ   )r¥   r   r   r   Úget_collation_nameÙ  s    z!ColumnMetaData.get_collation_namec             C   s   | j S )N)rÑ   )r¥   r   r   r   Úget_character_set_nameÜ  s    z%ColumnMetaData.get_character_set_namec             C   s   | j S )N)rÌ   )r¥   r   r   r   Úis_number_signedß  s    zColumnMetaData.is_number_signedc             C   s   | j S )N)rÍ   )r¥   r   r   r   Ú	is_paddedâ  s    zColumnMetaData.is_paddedc             C   s   | j S )N)rÏ   )r¥   r   r   r   Úis_byteså  s    zColumnMetaData.is_bytesc             C   sb   | j dkrtj| _nD| j dkr(tj| _n0| j dkr<tj| _n| j dkrPtj| _ntj| _d| _d S )Nr3   rc   rd   re   T)	rÈ   r_   r�   rÆ   r‘   r’   r“   r”   rÌ   )r¥   r   r   r   Ú_map_int_typeè  s    







zColumnMetaData._map_int_typec             C   sh   | j dkrtj| _nD| j dkr(tj| _n0| j dkr<tj| _n| j dkrPtj| _ntj| _| jd@ | _	d S )Nra   rb   r7   rI   r   )
rÈ   r_   r�   rÆ   r‘   r’   r“   r”   rÊ   Z
_zero_fill)r¥   r   r   r   Ú_map_uint_typeõ  s    







zColumnMetaData._map_uint_typec             C   sj   | j tjkrtj| _nD| j tjkr,tj| _n.| j tjkrBtj| _n| jrRtj| _ntj	| _| j
d@ | _d S )Nr   )rË   r½   r›   r_   rÆ   r—   rœ   rÎ   r   r˜   rÊ   rÍ   )r¥   r   r   r   Ú
_map_bytes  s    



zColumnMetaData._map_bytesc             C   sN   | j dkrtj| _n6| j dkr(tj| _n"| jtj@ dkrBtj| _ntdƒ‚d S )NrI   rj   r   z#Datetime mapping scenario unhandled)	rÈ   r_   r™   rÆ   r   rÊ   r·   rš   r;   )r¥   r   r   r   Ú_map_datetime  s    




zColumnMetaData._map_datetimec             C   sF  | j tjkr|  ¡  �n*| j tjkr0|  ¡  �n| j tjkrXtj| _| j	t
j@ dk| _nê| j tjkr€tj| _| j	t
j@ dk| _nÂ| j tjkr¨tj| _| j	t
j@ dk| _nš| j tjkr¾|  ¡  n„| j tjkrÔtj| _nn| j tjkrê|  ¡  nX| j tjk�rtj| _n@| j tjk�rtj| _n(| j tjk�r2tj| _ntd | j ¡ƒ‚d S )Nr   zUnknown column type {0})rÅ   r   r   rê   r   rë   r   r_   rÆ   rÊ   r»   rº   Z_is_number_signedr&   r    r   rì   r   r   rí   r#   r%   r"   r;   r,   )r¥   r   r   r   rÒ     s4    





zColumnMetaData._map_type)NNNNNNNNNNN)r\   r]   r^   r¨   r°   rÝ   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rÒ   r   r   r   r   r¾   ’  s.      
#
r¾   c               @   s8   e Zd Zdd„ Zedd„ ƒZedd„ ƒZedd„ ƒZd	S )
ÚWarningc             C   s   || _ || _|| _d S )N)Ú_levelÚ_codeÚ_message)r¥   ÚlevelÚcodeÚmsgr   r   r   r¨   ;  s    zWarning.__init__c             C   s   | j S )N)rï   )r¥   r   r   r   ÚLevel@  s    zWarning.Levelc             C   s   | j S )N)rð   )r¥   r   r   r   ÚCodeD  s    zWarning.Codec             C   s   | j S )N)rñ   )r¥   r   r   r   ÚMessageH  s    zWarning.MessageN)r\   r]   r^   r¨   r²   rõ   rö   r÷   r   r   r   r   rî   :  s   rî   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚRowz�Represents a row element returned from a SELECT query.

    Args:
        rs (mysqlx.Result): The Result set.
        fields (list): The list of fields.
    c             C   s   || _ || _d S )N)Ú_fieldsÚ
_resultset)r¥   ÚrsÚfieldsr   r   r   r¨   T  s    zRow.__init__c             C   s8   t |tƒr| j |¡}n|t| jƒkr.tdƒ‚| j| S )NzIndex out of range)r	   r   rú   Úindex_ofr   rù   Ú
IndexError)r¥   Úindexr   r   r   Ú__getitem__X  s
    
zRow.__getitem__c             C   sF   | j  |¡}|t| jƒkr"tdƒ‚|dkr8td |¡ƒ‚t| j| ƒS )zpReturns the value if the index by string.

        Args:
            str_index (str): The string index.
        zArgument out of ranger2   zColumn name '{0}' not found)rú   rý   r   rù   rþ   r;   r,   rÜ   )r¥   Z	str_indexZ	int_indexr   r   r   Ú
get_string_  s    zRow.get_stringN)r\   r]   r^   Ú__doc__r¨   r   r  r   r   r   r   rø   M  s   rø   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú
BaseResultz‰Provides base functionality for result objects.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c             C   sB   || _ d| _d| _d| _g | _|d kr.d | _n|j| _| ¡  d S )NFr   r2   )Ú_connectionÚ_closedÚ_rows_affectedÚ_generated_idÚ	_warningsÚ	_protocolÚprotocolZfetch_active_result)r¥   Ú
connectionr   r   r   r¨   s  s    zBaseResult.__init__c             C   s   | j S )zXReturns the warnings.

        Returns:
            list: The list of warnings.
        )r  )r¥   r   r   r   Úget_warnings€  s    zBaseResult.get_warningsc             C   s
   t | jƒS )zcReturns the number of warnings.

        Returns:
            int: The number of warnings.
        )r   r  )r¥   r   r   r   Úget_warnings_countˆ  s    zBaseResult.get_warnings_countN)r\   r]   r^   r  r¨   r  r  r   r   r   r   r  m  s   r  c                   sB   e Zd ZdZd‡ fdd„	Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡  Z	S )ÚResultzÔ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                s.   t t| ƒ |¡ || _|d k	r*| j | ¡ d S )N)Úsuperr  r¨   Ú_idsr  Zclose_result)r¥   r  Úids)r¡   r   r   r¨   ™  s    zResult.__init__c             C   s   | j S )z†Returns the number of affected items for the last operation.

        Returns:
            int: The number of affected items.
        )r  )r¥   r   r   r   Úget_affected_items_count   s    zResult.get_affected_items_countc             C   s   | j S )zjReturns the last insert id auto generated.

        Returns:
            int: The last insert id.
        )r  )r¥   r   r   r   Úget_autoincrement_value¨  s    zResult.get_autoincrement_valuec             C   s*   | j dkrdS t| j ƒdkr dS | j d S )zDReturns ID of the last document inserted into a collection.
        Nr   )r  r   )r¥   r   r   r   Úget_document_id°  s
    
zResult.get_document_idc             C   s   | j S )z5Returns the list of generated documents IDs.
        )r  )r¥   r   r   r   Úget_document_ids¹  s    zResult.get_document_ids)NN)
r\   r]   r^   r  r¨   r  r  r  r  Ú__classcell__r   r   )r¡   r   r  ‘  s   	r  c                   s`   e Zd Z‡ fdd„Zdd„ Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Z‡  ZS )ÚBufferingResultc                s   t t| ƒ |¡ |  ¡  d S )N)r  r  r¨   Ú_init_result)r¥   r  )r¡   r   r   r¨   À  s    zBufferingResult.__init__c             C   sN   | j  | ¡| _t| jƒdkr dnd| _g | _d| _d| _| jrB| nd | j _d S )Nr   TFrk   r2   )	r  Zget_column_metadataÚ_columnsr   Z_has_more_dataÚ_itemsÚ
_page_sizeÚ	_positionZ_active_result)r¥   r   r   r   r  Ä  s    zBufferingResult._init_resultc             C   s
   t | jƒS )z!int: The total of items.
        )r   r  )r¥   r   r   r   ÚcountÌ  s    zBufferingResult.countc             C   s
   | j | S )N)r  )r¥   rÿ   r   r   r   r   Ò  s    zBufferingResult.__getitem__c             C   s0   d}x&| j D ]}| ¡ |kr |S |d }qW dS )zeReturns the index of the column.

        Returns:
            int: The index of the column.
        r   r   r2   )r  rà   )r¥   Zcol_namerÿ   Úcolr   r   r   rý   Õ  s    zBufferingResult.index_ofc             C   sˆ   | j  | ¡}|d krd S d gt|jƒ }|s~xPtt|jƒƒD ]>}| j| }| ¡ r`t|j| ƒn|j| }t|j	|ƒ||< q<W t
| |ƒS )N)r  Zread_rowr   Úfieldr«   r  ré   r   r1   rÅ   rø   )r¥   ÚdumpingÚrowÚitemÚxr  r   r   r   r   Ú
_read_itemâ  s    
 zBufferingResult._read_itemc             C   sN   | j r
dS d}x:t| jƒD ],}|  d¡}|d kr2P | j |¡ |d7 }qW |S )NFr   r   )r  r«   r  r$  r  rE   )r¥   r  r@   r"  r   r   r   Ú_page_in_itemsï  s    
zBufferingResult._page_in_itemsc             C   s   | j r
dS |  d¡S )zS Fetch one item.

        Returns:
            Row/DbDoc: one result item.
        NF)r  r$  )r¥   r   r   r   Ú	fetch_oneü  s    zBufferingResult.fetch_onec             C   s   x|   ¡ sP qW | jS )zPFetch all items.

        Returns:
            list: The list of items.
        )r%  r  )r¥   r   r   r   Ú	fetch_all  s    zBufferingResult.fetch_all)r\   r]   r^   r¨   r  r²   r  r   rý   r$  r%  r&  r'  r  r   r   )r¡   r   r  ¿  s   r  c                   s,   e Zd ZdZ‡ fdd„Zedd„ ƒZ‡  ZS )Ú	RowResultz¡Allows traversing the Row objects returned by a Table.select operation.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                s   t t| ƒ |¡ d S )N)r  r(  r¨   )r¥   r  )r¡   r   r   r¨     s    zRowResult.__init__c             C   s   | j S )z#list: The list of columns.
        )r  )r¥   r   r   r   Úcolumns  s    zRowResult.columns)r\   r]   r^   r  r¨   r²   r)  r  r   r   )r¡   r   r(    s   r(  c                   s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )Ú	SqlResultzƒRepresents a result from a SQL statement.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                s   t t| ƒ |¡ d| _d S )NF)r  r*  r¨   Ú_has_more_results)r¥   r  )r¡   r   r   r¨   )  s    zSqlResult.__init__c             C   s   | j S )z=Returns the identifier for the last record inserted.
        )r  )r¥   r   r   r   r  -  s    z!SqlResult.get_autoincrement_valuec             C   s   | j r
dS d| _|  ¡  dS )NFT)r  r+  r  )r¥   r   r   r   Únext_result2  s
    zSqlResult.next_result)r\   r]   r^   r  r¨   r  r,  r  r   r   )r¡   r   r*  #  s   r*  c                   s,   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡  ZS )Ú	DocResultzªAllows traversing the DbDoc objects returned by a Collection.find
    operation.

    Args:
        connection (mysqlx.connection.Connection): The Connection object.
    c                s   t t| ƒ |¡ d S )N)r  r-  r¨   )r¥   r  )r¡   r   r   r¨   A  s    zDocResult.__init__c                s,   t t| ƒ |¡}|d krd S tt|d ƒƒS )Nr   )r  r-  r$  r   r   )r¥   r   r!  )r¡   r   r   r$  D  s    zDocResult._read_item)r\   r]   r^   r  r¨   r$  r  r   r   )r¡   r   r-  :  s   r-  )r   )-r  rL   r5   r)   r   r   Zdbdocr   Zcharsetsr   Úcompatr   r   r1   r   r   r!   rD   r   r   r$   r'   r   r   ÚobjectrZ   r_   r   rž   r´   r·   r¸   r¹   r»   r¼   r½   r¾   rî   rø   r  r  r  r(  r*  r-  r   r   r   r   Ú<module>   sP   
$ K' ) $.T