bgW.ddlmZddlmZmZddlmZddlZddlZdZ dZ dZ dZ d Z d Zd ZGd d ZGddeZGddZGddZGddZdS))MBLENGTH) FIELD_TYPE SERVER_STATUS)errNFc d tdttddD]:}tj|}td||jj|jfz;tdn#t$rYnwxYwfdtdttd d D}|D]i}td d |Dd d t|z zzdzd fd|DzjtdtdS)NcDd|cxkrdkrnnt|SdS)N .)chr)datas G/opt/cloudlinux/venv/lib64/python3.11/site-packages/pymysql/protocol.py printablezdump_packet..printables5          t99 szpacket length:rzcall[%d]: %s (line %d)zB------------------------------------------------------------------c*g|]}||dzS)).0irs r zdump_packet..#s&MMMaa!b&j!MMMrrr c3K|]}|dV dS)02XNr)rxs r zdump_packet..&s&++AZZ++++++rz z c3.K|]}|VdSNr)rr!rs rr"zdump_packet..)s+..qiill......r) printlenrangesys _getframef_codeco_namef_lineno ValueErrorminjoin)rrf dump_datadrs` @r dump_packetr4s   D ***q! P PA a  A *a1A1:-NN O O O O h      MMMM5CD 34G4G+L+LMMMI    HH+++++ + +rCFF{# $ gg....A..... /     (OOO GGGGGsA7A?? B  B ceZdZdZdZdZdZdZdZdZ d d Z d!d Z d Z d Z dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS)" MysqlPacketzrRepresentation of a MySQL response packet. Provides an interface for reading/parsing the packet results.  _position_datac"d|_||_dS)Nrr7selfrencodings r__init__zMysqlPacket.__init__7s rc|jSr%r9r<s r get_all_datazMysqlPacket.get_all_data;s zrc Z|j|j|j|z}t||krkd|dt|d|jdt|j}tr#t ||t ||xj|z c_|S)zCRead the first 'size' bytes in packet and advance cursor past them.z-Result length not requested length: Expected=z . Actual=z . Position: z. Data Length: )r9r8r'DEBUGr&dumpAssertionError)r<sizeresulterrors rreadzMysqlPacket.read>sDNdnt.CDE v;;$   44Vdnnnc$*oooG   e   '' ' $ rc<|j|jd}d|_|S)z`Read all remaining data in the packet. (Subsequent read() will return errors.) Nr9r8r<rHs rread_allzMysqlPacket.read_allNs$ DN,,- rc|j|z}|dks|t|jkrtd|d|||_dS)z1Advance the cursor in data buffer 'length' bytes.rzInvalid advance amount (z) for cursor. Position=N)r8r'r9 Exception)r<length new_positions radvancezMysqlPacket.advanceWs\~. !  |c$*oo==)!'7 &rrct|dks|t|jkrtd|z||_dS)z9Set the position of the data buffer cursor to 'position'.rz)Invalid position to rewind cursor to: %s.N)r'r9rPr8)r<positions rrewindzMysqlPacket.rewindas< a<<8c$*oo55G(RSS S!rrc&|j|||zS)a>Get 'length' bytes starting at 'position'. Position is start of payload (first four packet header bytes are not included) starting at index '0'. No error checking is done. If requesting outside end of buffer an empty string (or string shorter than 'length') may be returned! r@)r<rUrQs r get_byteszMysqlPacket.get_bytesgsz(h&7899rcJ|j|j}|xjdz c_|SNrrLrMs r read_uint8zMysqlPacket.read_uint8rs%DN+ ! rcrtjd|j|jd}|xjdz c_|S)Nz4yy   rctj|}||j|j}|xj|jz c_|Sr%)r_Structr`r9r8rG)r<fmtsrHs r read_structzMysqlPacket.read_structs? M#  tz4>:: !&  rcT|jddkot|jdkS)Nrrr9r'rAs r is_ok_packetzMysqlPacket.is_ok_packets%z!}!:c$*oo&::rcT|jddkot|jdkS)Nrr rrAs r is_eof_packetzMysqlPacket.is_eof_packets'z!}$<TZ1)<rBrJrNrSrVrXr[rargrjrmrrrzr|rrrrrrrrrrrErrrr6r6/s 'I &&&"""" : : : :  """   &&&$ ! ! ! ;;;=== %%%"""'''%%%%%%###...     rr6c0eZdZdZdZdZdZdZdZdS)FieldDescriptorPacketzA MysqlPacket that represents a specific column's metadata in the result. Parsing is automatically done and the results are exported via public attributes on the class such as: db, table_name, name, length, type_code. cht|||||dSr%)r6r>_parse_field_descriptorr;s rr>zFieldDescriptorPacket.__init__s4T4222 $$X.....rc2||_||_|||_|||_|||_|||_|d\|_ |_ |_ |_ |_ dS)zParse the 'Field Descriptor' (Metadata) packet. This is compatible with MySQL 4.1+ (not compatible with MySQL 4.0). z >xHH    [ ) )  N K N J JJJrc|j|jd|||j|jdzdkfS)zBProvides a 7-item tuple compatible with the Python PEP249 DB Spec.Nr]r)rrget_column_lengthrrrAs r descriptionz!FieldDescriptorPacket.descriptionsL I N   " " $ $  " " $ $ J JNa   rc|jtjkr$tj|jd}|j|zS|jSrZ)rr VAR_STRINGrgetrrQ)r<mblens rrz'FieldDescriptorPacket.get_column_lengths: >Z2 2 2L33E;%' '{rcrd|j|j|j|j|j|jS)Nz&{} {!r}.{!r}.{!r}, type={}, flags={:x})format __class__rrrrrrAs r__str__zFieldDescriptorPacket.__str__s87>> N G O I N J    rN) rrrrr>rrrrrrrrrsi ///****          rrceZdZdZdZdZdS)OKPacketWrapperz OK Packet Wrapper. It uses an existing packet object, and wraps around it, exposing useful variables while still providing access to the original packet objects variables and methods. c|s,tdt|jjzdz||_|jd|j|_|j|_ | d\|_ |_ |j |_|j tjz|_dS)NzCannot create z object from invalid packet typerzzOKPacketWrapper.__init__'s''))  dn-../45  "  A![DDFF@@BB151A1A%1H1H.D.{++-- *]-UU rc,t|j|Sr%getattrrr<keys r __getattr__zOKPacketWrapper.__getattr__8t{C(((rNrrrrr>rrrrrr s? VVV")))))rrceZdZdZdZdZdS)EOFPacketWrapperz EOF Packet Wrapper. It uses an existing packet object, and wraps around it, exposing useful variables while still providing access to the original packet objects variables and methods. c$|std|jd||_|jd\|_|_trtd|j|jtj z|_ dS)NCannot create '!' object from invalid packet typezzEOFPacketWrapper.__init__Cs((** S$.SSS " 151H1H1P1P.D.  8 "D$6 7 7 7*]-UU rc,t|j|Sr%rrs rrzEOFPacketWrapper.__getattr__OrrNrrrrrr<s? V V V)))))rrceZdZdZdZdZdS)LoadLocalPacketWrapperz Load Local Packet Wrapper. It uses an existing packet object, and wraps around it, exposing useful variables while still providing access to the original packet objects variables and methods. c|std|jd||_|jdd|_t rtd|jdSdS)Nrrrz filename=)rr.rrrBfilenamerDr&rs rr>zLoadLocalPacketWrapper.__init__Zs//11 S$.SSS "  00221226  . +t} - - - - - . .rc,t|j|Sr%rrs rrz"LoadLocalPacketWrapper.__getattr__errNrrrrrrSs< . . .)))))rr)charsetr constantsrrr#rr_r)rDrtrurvrwrxr4r6rrrrrrrrsf00000000      4q q q q q q q q h: : : : : K: : : z))))))))8)))))))).))))))))))r