g> dZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Zdd lmZdd lmZdd lmZdd lmZddlmZmZddlmZddlmZmZmZddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&ejNjPejRfejNjTejVfejNjXejZfejNj\ej^fejNj`e jbfejNjdej,fejNjfejhfejNjjejlfejNjnejpfejNjrejtfejNjvejxfg Z=ddZ>Gdde?Z@Gdde?ZAy)z3Implementation of the X protocol for MySQL servers.N) mysqlx_pb2)mysqlx_session_pb2)mysqlx_sql_pb2)mysqlx_notice_pb2)mysqlx_datatypes_pb2)mysqlx_resultset_pb2)mysqlx_crud_pb2)mysqlx_expr_pb2)mysqlx_connection_pb2)ColumnMetaData) STRING_TYPES INT_TYPES)DbDoc)InterfaceErrorOperationalErrorProgrammingError) ExprParserbuild_null_scalarbuild_string_scalarbuild_bool_scalarbuild_double_scalarbuild_int_scalarcHt|tr|S|j|SN) isinstancebytesencode)valueencodings f/opt/hc_python/lib64/python3.12/site-packages/../../../lib/python3.12/site-packages/mysqlx/protocol.pyencode_to_bytesr"@sue,5H%,,x2HHc*eZdZdZdZdZdZdZy)MessageReaderWriterc ||_d|_yr)_stream_msg)self socket_streams r!__init__zMessageReaderWriter.__init__Es$  r#c@|j td||_y)NzMessage push slot is full)r(rr)msgs r! push_messagez MessageReaderWriter.push_messageIs 99 "#>? ? r#cd|j|j}d|_|S|jSr)r( _read_message)r)ms r! read_messagez MessageReaderWriter.read_messageNs0 99  ADIH!!##r#c>|jjd}tjd|\}}|jj|dz }tD])}|d|k(s |d}|j ||cSt dj|)N) ""  ! ! 6 6 =||~r#ctj|}|jjtj j |y)N) mech_name) MySQLxSessionAuthenticateStartrUrLr[r\SESS_AUTHENTICATE_START)r)methodr.s r!send_auth_startzProtocol.send_auth_starts6--? ""  ! ! 9 93 @r#c|jj}t|tjs t d|j S)Nz>Unexpected message encountered during authentication handshake)rTr3rroAuthenticateContinuer auth_datar-s r!read_auth_continuezProtocol.read_auth_continues@ll'')#}AAB "<= =}}r#ctjt|}|jj t j j|y)N)rv)rorur"rUrLr[r\SESS_AUTHENTICATE_CONTINUE)r)datar.s r!send_auth_continuezProtocol.send_auth_continues>00%d+- ""  ! ! < t FF((.C44WW5E9B9M9M5MOGCL +r#c~|jr%|jj|j|jr*|j j |j||jr6|j|j_ |j|j_ |jr%|jj |j |j"r%|j$j |j&|j(r&|j*j|j,yyr) _has_wherecriteriaCopyFrom _where_expr _has_bindingsargsrfr _has_limit_limit_row_countlimit row_count _limit_offsetoffset _has_sortorder _sort_expr _has_group_bygrouping _grouping _has_havinggrouping_criteria_having)r)messagers r! _apply_filterzProtocol._apply_filters       % %i&;&; <  " " LL   8 8 C D   &/&@&@GMM ##,#:#:GMM    MM !5!5 6  " "    # #I$7$7 8   % % . .y/@/@ A !r#ctj|jrtjntjtj |j j|jj}|jr%|jj|j|j|||jjt j"j$|yNr`schema data_model collection) MySQLxCrudFindrDOCUMENTTABLE Collectiontargetr`r_has_projection projectionrf_projection_exprrrUrLr[r\ CRUD_FIND)r)stmtfinds r! send_findzProtocol.send_finds??#++0:0@0@!,,$++2B2B48KK4D4DFG    OO " "4#8#8 9 4& ""6#8#8#B#BDIr#ctj|jrtjntjtj |j j|jj}|j|||jD]}tj|j|j}|j@|jj|j!|j|j |j"j%|g|j&j)t*j,j.|y)Nrr) operationsource)rUpdaterrrrrr`rr _update_opsUpdateOperation update_typerrrarg_object_to_exprrrfrUrLr[r\ CRUD_UPDATE)r)rupdate update_opopexprs r! send_updatezProtocol.send_updates""$//#++5?5E5E!,,)2B2B2G2G4=4D4D4I4IKL 69-"..I//#// 8H8HJF* %%++!Y-A-A)ACD    # #VH -/ ""6#8#8#D#DfMr#ctj|jrtjntjtj |j j|jj}|j|||jjtjj|yr)rDeleterrrrrr`rrrUrLr[r\ CRUD_DELETE)r)rdeletes r! send_deletezProtocol.send_deletes""??#++0:0@0@!,,$++2B2B48KK4D4DFG 64( ""6#8#8#D#DfMr#ctj|t|d}|D]/}|j|}|jj |g1|j jtjj|y)NF) namespacercompact_metadata) MySQLxSQL StmtExecuter"rcrrfrUrLr[r\SQL_STMT_EXECUTE)r)rrrargrs r!send_execute_statementzProtocol.send_execute_statementst$$y*9$*?6;=C$$S)E II  eW % ""6#8#8#I#I#' )r#ctj|jrtjntjtj |j j|jj}t|drP|jD]A}|jjt||j jgC|jD]}tjj!}t#|t$rA|D];}|j'||j }|j(j|g=n9|j'||j }|j(j|g|j*j|g|j,j/t0j2j4|y)Nrr_fields)rInsertrrrrrr`rhasattrrrrfrparse_table_insert_field_valuesTypedRowrlistrfieldrowrUrLr[r\ CRUD_INSERT)r)rinsertrrrvalobjs r! send_insertzProtocol.send_inserts""$//#++5?5E5E!,,)2B2B2G2G4=4D4D4I4IKL 9i ("**!!((u)*>*>&>?--/*12+&&E##,,.C%& C11!5!557CII$$cU+! --e9M9M5MN   #' JJ  se $' ""6#8#8#D#DfMr#ct|trWtjj t |}tjd|}tj d|St|tr tj dt|St|tr tj dt|Sy)N)r)typev_stringr)rscalar) rrMySQLxDatatypesScalarStringr"Anyboolrrr)r)rrrs r!rczProtocol._create_anys c< (!((//oc6J/KC$++SAF"&&Af= = T ""&&A6G6LM M Y '"&&A6Fs6KL Lr#c@|j|}| tdy)NzExpected to close the result)r1rr)rsr.s r! close_resultzProtocol.close_result s(  $ ?"#AB B r#c|j|}|yt|tjr|S|jj |yr)r1rMySQLxResultsetRowrTr/rs r!read_rowzProtocol.read_rowsD  $ ; c?.. /J !!#&r#c|jdk(rttj}|j|j|j j t|j|j|jy|jdk(r0tj}|j|jy|jdk(rtj}|j|j|jtjjk(r|jj|_y|jtjj"k(r|jj|_yyy)Nr)r MySQLxNoticeWarningr;rA _warningsappendlevelcoder.SessionVariableChangedSessionStateChangedparam ROWS_AFFECTEDrv_unsigned_int_rows_affectedGENERATED_INSERT_ID _generated_id)r)r.r warningMsg sessVarMsg sessStateMsgs r!_process_framezProtocol._process_frames  88q=%--/J  & &s{{ 3 LL   (8(8*//(2!8 9 XX]%<<>J  & &s{{ 3 XX]';;=L  ( ( 5!! 44BBC$0$6$6$E$E!## 44HHI#/#5#5#D#D I r#c |jj}t|tjrt |j t|tjr|j||nbt|tjryt|tjrd|_n%t|tjrd|_n |S)NT)rTr3rr[r~rr.rFramerr StmtExecuteOkr FetchDone_closedFetchDoneMoreResultsets_has_more_resultsrs r!r1zProtocol._read_message*s,,++-C#v||,&sww//C!3!34##C,C!8!89C!:!:;! C!H!HI'+$ r#c0g} |j|}| |St|tjr|jj | |St|tj s tdt |j|j|j|j|j|j|j|j|j |j"|j$|j& }|j)|)NzUnexpected msg type)r1rrrrTr/r rrcatalogrtableoriginal_tabler` original_namelength collationfractional_digitsflags content_typer)r)rcolumnsr.cols r!get_column_metadatazProtocol.get_column_metadata;s$$R(C{#223 ))#.c?#A#AB$%:;; 3;; CII!$!3!3SXX!$!2!2CJJ !$!6!6 !$!1!1 3C NN3 r#ct|7tjtjjtSt |t r8tjtjjt |St |tr8tjtjjt|St |tr8tjtjjt|St |tre t||j}|jr8tjtjjt|S|St |t rAtjtjjtt#|St%dj't)|#tjtjjt|cYSxYw)N)rliteralzUnsupported type: {0}) MySQLxExprExprLITERALrrrrrrfloatrrrexprhas_identifierrrstrrr=r)r)rallow_relational expressions r!rzProtocol.arg_object_to_exprNs =?? (?(?+<+>@ @ eT "?? (?(?+u+EG G | , K'/?@EEG ,,.%?? 0G0G3Fu3MOO!!u %?? (?(?+>s5z+JL L4;;DKHII  K!JOO,C,C/B5/IKKs#A!G;G;;:H7c:|j||jSr)rr)r)rr$s r!rzProtocol.arg_object_to_scalarjs&&u.>?GGGr#c|jj}t|tjrt |j t|tjs t dy)NzUnexpected message encountered)rTr3rr[r~rr.Okr-s r!rhzProtocol.read_okmsPll'') c6<< ( ) )#vyy) !AB B*r#ctj}|jjtj j |yr)roCloserUrLr[r\ SESS_CLOSEr-s r! send_closezProtocol.send_closeus0!!# ""6#8#8#C#CSIr#N)rMrNrOr+r^rlrsrwr{rrrrrrrrrcrrrr1rrrrhr,rPr#r!rRrRhs + @ C .  B JN"N)N0 C E&"&J8HCJr#rR)zutf-8)B__doc__r8protobufrr[rrorrrrrrr rr rr rr rYresultr compatrrdbdocrerrorsrrrr!rrrrrrServerMessagesryruSESS_AUTHENTICATE_OKr}SQL_STMT_EXECUTE_OKr ERRORr~NOTICErRESULTSET_COLUMN_META_DATA RESULTSET_ROWrRESULTSET_FETCH_DONEr $RESULTSET_FETCH_DONE_MORE_RESULTSETSr OKr(CONN_CAPABILITIES Capabilitiesr:r"objectr%rRrPr#r!r@s0: *917==33?"+FFMM  55'') //!!# .. 0G0GH   &,,/ !!<#5#56 55##% ((/*=*=> //1J1JK ??,,. vyy) ,,.>.K.KL&I!:&!:HOJvOJr#