gxddlmZmZddlmZddlmZmZmZddl m Z m Z m Z ere ZGddZeej"ej$ej&ej(ej*ej,ej.ej0ej2g Zidej6dej8d ej:d ej<d ej>d ej@d ejBdejDdejFdejHdejJdejLdejNdejPdejRdejTdejVejXej$ej&ej(ej*ej,ej.ej0ej2ej"ejZej\ej^d Z0GddZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9Gd#d$Z:d(d%Z;d&Zd=Z?d>Z@d?ZAd@ZBdAZCyB)C TokenTyper  !"#$%&'()*+,-./0123456789:;<=>?@AN)D__name__ __module__ __qualname__NOTANDORXORISLPARENRPAREN LSQBRACKET RSQBRACKETBETWEENTRUENULLFALSEINLIKEINTERVALREGEXPESCAPEIDENTLSTRINGLNUMDOTDOLLARCOMMAEQNEGTGELTLEBITANDBITORBITXORLSHIFTRSHIFTPLUSMINUSMULDIVHEXBINNEGBANG MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAREROTEME DOUBLESTARMODCOLONORORANDANDLCURLYRCURLYCASTDOTSTAR ORDERBY_ASC ORDERBY_DESCASb/opt/hc_python/lib64/python3.12/site-packages/../../../lib/python3.12/site-packages/mysqlx/expr.pyr r "sG C C B C B F FJJG D D E B DH F F EG D C F E B B B B B B F E F F F D E C C C C C DK F F D C D EG DGJ C E D F F F DGKL Brr andorxorisnotlikeinregexpbetweenintervalescapecastdivhexbintruefalse) nullsecondminutehourdayweekmonthquarteryear microsecondascdescasc eZdZddZdZdZy)Tokenc.||_||_||_yN)typevallen)selfrrrs r__init__zToken.__init__s rc"|jSr)__str__rs r__repr__zToken.__repr__||~rc*|jtjk(s:|jtjk(s|jtjk(r(t |jdz|j zdzSt |jS)N())rr rcrerdstrrrs rrz Token.__str__sb 99  '499 +F 99 )) )tyy>C'$((2S8 8tyy> !rN)r)rNrOrPrrrrrrrrs "rrc6ttjS)Nr)rV_NULLrrrbuild_null_scalarrs v}} %%rc8ttj|S)N)rv_double)rV_DOUBLE)ds rbuild_double_scalarrs v 33rc8ttj|S)N)r v_signed_int)rV_SINT)is rbuild_int_scalarrs v}}1 55rct|trtt|d}t tj t j |S)Nzutf-8)value)rv_string) isinstancerbytes bytearrayrV_STRINGString)ss rbuild_string_scalarrs7!\" )Aw' ( vQ1G HHrcRt}tj|_||_|Sr)rV_BOOLrv_bool)brs rbuild_bool_scalarrs A ]]AFAH Hrczt}tj|_|jj ||Sr)rLITERALrliteralCopyFrom)anyvales rbuild_literal_exprrs+ A \\AFIIv Hrct}tj|_||j_|jj j j||Sr)rOPERATORroperatornameparamaddr)rrrs rbuild_unary_oprsE A ]]AFAJJOJJ##E* Hrc&|jddS)N"z"")replace)strings rescape_literalrs >>#t $$rceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)y()) ExprParsercx||_g|_d|_||_i|_d|_|j y)N)rtokenspos_allowRelationalColumnsplaceholder_name_to_positionpositional_placeholder_countlex)rrallowRelationals rrzExprParser.__init__s8  '6$,.),-)  rcf|dzt|jkxr|j|dz|k(SNr)rr)rrcs r next_char_iszExprParser.next_char_iss11us4;;''CDKKA,>!,CCrc|}d}|t|jkr|j|js|j|dk(rq|j|dk(r|dur tdd}|dz}|t|jkr1|j|jr^|j|dk(rq|j||}t t j |t|}|S)NF.Tz"Invalid number. Found multiple '.'r)rrisdigit ValueErrorrr re)rrstart found_dotrts r lex_numberzExprParser.lex_numbers C $$$++c*:*B*B*D*.++c*:c*A{{33&$$%IJJ 'CC $$$++c*:*B*B*D*.++c*:c*Akk%$ )..#s3x 0rc.|}|t|jkr}|j|js|j|dk(rN|dz}|t|jkr1|j|jr;|j|dk(rN|j||} tt|j |j t|}|S#t$r(ttj|t|}Y|SwxYw)N_r) rrisalnumr reservedWordslowerupperKeyErrorr rc)rrrrtokens r lex_alphazExprParser.lex_alphas#dkk"" A(>(>(@(, A#(=AA#dkk"" A(>(>(@(, A#(=kk%" :- 4ciik3s8LE  :)//3C9E  :s(9C##-DDc|j|}d}|dz }|}|t|jkr|j|}||k(r1|dzt|jkr|j|dz|k7rna||k(s|dk(r4|dzt|jk\rn;|dz}||j|z}n||z}|dz}|t|jkr|t|jk\s|j||k7rtdj||dk(r't t j |t|dzSt t j|t|dzS)Nr\z*Unterminated quoted string starting at {0}`r)rrrformatrr rcrd)rr quote_charrrrs rlex_quoted_tokenzExprParser.lex_quoted_tokensU[[^  Q#dkk"" AAJ1q53t{{+;#;{{1q5!Z/jAIq5C ,,EDKKN*AgAA#dkk"" DKK DKKNj$@ &u / /  #s3xz: :**CS!< |jr|j |}nq|j s|dk(r|j |}nI|dk(rttj|}n(|dk(rttj|}n|dk(rttj|}n|dk(rttj|}n|dk(rttj|}n|d k(rttj|n|d k(rJ|j|d rttj d }nPttj"|}n4|d k(rttj$|}n|d k(rttj&|}n|dk(rttj(|}n|dk(rL|j|drttj*dd}nttj*dd}n|dk(rJ|j|drttj,|}nMttj.|}n1|dk(rJ|j|drttj0d}nttj2|}n|dk(rttj4|}n|dk(rttj6|}n|dk(rttj8|}n|dk(rttj:|}n^|dk(rttj<|}n=|dk(rttj>|}n|dk(rJ|j|drttj@d}nttjB|}n|dk(rx|j|drttjDd}n|j|drttjFd}nlttjH|}nP|d k(rv|j|d rttjJd!}n|j|drttjLd"}nttjN|}n|d#k(r|j|d rttjPd$}n|dzt|jkr2|j|dzjr|j |}nVttjR|}n;|d%k(s |d&k(s|d'k(r|jU|}ntWd(jY||jZj]||jz }|t|jkryy))Nrrr ?:{}+-*z**/$%=z==r&|z||rr[]~,!z!=z>>z>=rz.*r'rzUnknown character at {0})/rrisspacerr isalpharrr rrrrrtrurrrvrwrgrrirrorrprVrWrXrYrzrhrjr{rrrnrmrsrlrkrrfrrrrappend)rrrrs rrzExprParser.lexs #dkk"" AAyy{Q*Sq)ci//3ciooq1ci..2ci..2cinna0ciooq)c$$Q,!)"6"6=E!)--3EcimmQ/ci..2cimmQ/c$$Q,!),,a8E!),,a8Ec$$Q,!)"2"2A6E!)"2"2A6Ec$$Q,!)..$7E!)//15Eci..2ci..2ci22A6ci22A6cimmQ/ciooq1c$$Q,!),,5E!)..!4Ec$$Q,!)"2"2D9E&&q#.!),,5E!),,2Ec$$Q,!)"2"2D9E&&q#.!),,5E!),,2Ec$$Q,!)"3"3T:EUS--$++a!e2D2L2L2N OOA.E!)--3EcQ#Xc--a0 !;!B!B1!EFF KK  u % NAu#dkk""rcX|jt|jk\r%tdj ||j|j|jj |k7r=tdj ||j|j|jy)Nz5Expected token type {0} at pos {1} but no tokens leftz5Expected token type {0} at pos {1} but found type {2})rrrrrrrrs rassert_cur_tokenzExprParser.assert_cur_tokenws 88s4;;' '++16$+AC C ;;txx % % -((.tTXX/3{{488/D)FG G .rc:|j|j|Srpos_token_type_isrr6s rcur_token_type_iszExprParser.cur_token_type_iss%%dhh55rc@|j|jdz|Srr9r6s rnext_token_type_iszExprParser.next_token_type_iss%%dhhlD99rcn|t|jkxr|j|j|k(Sr)rrr)rrrs rr:zExprParser.pos_token_type_iss/S%%G$++c*:*?*?4*GGrc|j||j|jj}|jdz|_|Sr)r7rrr)rrvs r consume_tokenzExprParser.consume_tokens< d# KK ! % %88a<rcg}|jtj|jtjs|j |j |jtjrS|jdz|_|j |j |jtjrS|jtj|S)z{Parse a paren-bounded expression list for function arguments or IN list and return a list of Expr objects. r) rAr rVr;rWr4exprrhr)rexprss rparen_expr_listzExprParser.paren_expr_lists 9++,%%i&6&67 LL %((988a< TYY[)((9 9++, rc|jtjt}|j tj rC|j tj|_|j tj |j|jj|_ |jdz|_ |Sr) r7r rc Identifierr=rfrA schema_namerrrr)rids r identifierzExprParser.identifiers ioo. \  " "9== 1!// @BN   y}} -++dhh'++88a< rct}tj|_|jjj |j |jjj|j|Sr) r FUNC_CALLr function_callrrrJrextendrE)rrs rrMzExprParser.function_callsY F %%doo&78 $$T%9%9%;<rc|jtj|j|j}|j tj k(r|jjdr?|jjdr$tdj|j|jtj |j}nw|jj tjk(r,|jtj|j}n$tdj|jttj |}|S)Nrz-{0} is not a valid JSON/ECMAScript identifierzBExpected token type IDENT or LSTRING in JSON path at token pos {0}rr)rAr rfrrrrcr startswithendswithrrrrrdrMEMBER)rr memberNameitems rdocpath_memberzExprParser.docpath_members 9==) DHH% :: (yy##C(UYY-?-?-D "..4fU[[.ACC   y /J ZZ__ 1 1 1   y00 1J55;VDHH5EG G%5%<% &txx 02 2  "3u:&AAv"1X a#(8 a$)!H! '  ! !)"2"2 3   y// 0"&"4"4"6E  F e$rc|jt|jk\r td|j|j}|xjdz c_|S)NzUnexpected end of token streamr)rrrr)rr s r next_tokenzExprParser.next_tokensG HHDKK( (=> > KK ! A rcv|j}|j|k7rtdj|y)NzExpected token type {0})rorrr)r token_typer s r expect_tokenzExprParser.expect_tokens6 OO  66Z 6==jIJ J rct}yr)Object)ros rparse_json_doczExprParser.parse_json_docs Hrcd}|jtjr |jtj}n|jtj r |jtj }nW|j tjk(rt|j}n$tdj|j|j}ttj}||j vr|j ||_|S|j|_|j|j |<|xjdz c_ |S)Nrz)Invalid placeholder name at token pos {0}rr)r;r rerALNUM_INTrcrrrrrrrrr PLACEHOLDERrposition)rrplace_holder_namerCs rparse_place_holderzExprParser.parse_place_holder!s&  ! !).. 1 $ 2 293E3E F   # #IOO 4 $ 2 29?? C  ZZ9,, , #D$E$E F  &txx 02 2.335))*  A A A112CD M !==DM11  - -.? @  - - 2 - rc |j}|jtjtjfvr|j |S|jtj k(r|jS|jtjk(rn;|jtjk(r1|j}|jtj|S|jtjtjfvrn|jtjtjfvr|j}|jtj k(rE|j"|j"z|j$|j&_|j)St+|j"|j)S|jtj,tj.tj0fvr$t+|j"|j)S|jtj2k(rt5t7|j"S|jtj8k(rt5t;S|jtj k(r\d|j"vr't5t=t?|j"St5tAtC|j"S|jtjDtjFfvr/t5tI|jtjDk(S|jtjJk(r|jMS|jtjNk(r|jQS|jtjRk(r|j&dz |_|jUtjsy|jUtjVrj|jY|j&dztjRr=|jY|j&dztjr|j[S|j\s|jMS|j_Stadjc|j|j&)z> )  ZZ9++ + A   i.. /H ZZINNIOO< <  ZZINNIOO< <??$DyyINN*,1II,@ DHH%)''))!%))T-=-=-?@ @ ZZIMM9==)..I I!%))T-=-=-?@ @ ZZ9,, ,%&9%))&DE E ZZ9>> )%&7&9: : ZZ9>> )eii)'eii(89;;**:3uyy>*JKK ZZINNIOO< <%!%** ">?A A ZZ9++ +&&( ( ZZ9== ($$& & ZZ9?? *xx!|DH&&y'7'78'' 6%%dhhlIOOD%%dhhlI4D4DE))++ $;;++-7!3357&--3VEJJ-IK Krc|}|jt|jkrA|j|jj|vrt }tj |_|j|jj |j_|jjjj||jdz|_|jjjj||}|jt|jkr'|j|jj|vr|S)z}Given a `set' of types and an Expr-returning inner parser function, parse a left associate binary operator expressionr) rrrrrrrrrrrr)rtypes inner_parserlhsrs rparse_left_assoc_binary_op_exprz*ExprParser.parse_left_assoc_binary_op_exprsnxx#dkk**{{488$))U2A]]AF"kk$((377AJJO JJ   " + +C 0xx!|DH JJ   " + +LN ;Cxx#dkk**{{488$))U2 rc|jttjtjtj g|j Sr)rsetr rvrwrrrs r mul_div_exprzExprParser.mul_div_exprs933  y}}= >    rc|jttjtjg|j Sr)rrr rtrurrs r add_sub_exprzExprParser.add_sub_exprs433 1 2D4E4EG Grc|jttjtjg|j Sr)rrr rrrsrrs r shift_exprzExprParser.shift_exprs833 !!9#3#34 5t7H7HJ Jrc|jttjtjtj g|j Sr)rrr rorprqrrs rbit_exprzExprParser.bit_exprs;33 !!9??I4D4DE F OO rc |jttjtjtj tj tjtjg|jSr) rrr rlrkrnrmrirjrrs r comp_exprzExprParser.comp_exprsN33 y||Y\\9<<y||- ./3}}> >rc|j}d}|jtjr!d}|j tj|j t |jkrj|g}|j|j j}|jtjr|j tj|jtjr!d}|j tj|j|jn>|jtjr@|j tj|j|jn|jtjr|j tj|j|j|jtjrb|j tj|j|jn"|jtj r}|j tj |j|j|j tj"|j|jn|jtj$r?|j tj$|j|jn(|r$t'dj)|j d}|ret+}t*j,|_||j0_|j0j4j||r t7d|}|}|S)NFTz"Unknown token after NOT as pos {0}rQ)rr;r rQrArrrrrUr4r^rNrEr_rbrZrRrarrrrrrrrr)rris_notparamsop_namers r ilri_exprzExprParser.ilri_exprsnn  ! !)-- 0F   y}} - 88c$++& &UFkk$((+//G%%ill3""9<<0)))--8!F&&y}}5 dnn./'' 5""9<<0 d2245'' 7""9>>2 dnn./)))*:*:;&&y'7'78MM$.."23'' (9(9:""9#4#45 dnn./""9==1 dnn./'' (8(89""9#3#34 dnn./$&((.txx(8::F")    ''/&ua0A rc|jttjtjg|j Sr)rrr rRrrrs rand_exprzExprParser.and_exprs433  0 01 2DNND Drc|jttjtjg|j Sr)rrr rSrrrs ror_exprzExprParser.or_exprs233 y~~. /@ @rc"|jSr)rrs rrCzExprParser.exprrrcTt|jtjS)N)r)r rAr rcrs rparse_table_insert_fieldz#ExprParser.parse_table_insert_fields4--ioo>??rc6|jjSr)rmrJrs rparse_table_update_fieldz#ExprParser.parse_table_update_fields%%'222rcpg}d}|jt|jkr|s|jtj d}t |j}|jtjrD|jtj|jtj|_ n9|xjdzc_|jtj|_ |j||jt|jkr|S)NTF)sourcer) rrrrAr rhr rCr;rrcaliasr4)r project_exprfirst projections rparse_table_select_projectionz(ExprParser.parse_table_select_projections hhT[[))""9??3E#499;7J%%ill3""9<<0#'#5#5ioo#F  A #'#5#5ioo#F     +hhT[[))rcg}d}|jt|jkr|s|jtj d}t |j}|jtjr5t j|_ |jtjnS|jtjr4t j|_ |jtj|j||jt|jkr|S)NTF)rC)rrrrAr rhr rCr;rASC directionrDESCr4)r order_specsrorders rparse_order_speczExprParser.parse_order_specs hhT[[))""9??3Etyy{+E%%i&;&;<"'))""9#8#89'' (>(>?"'**""9#9#9:   u %hhT[[))rcg}d}|jt|jkre|s|jtj d}|j |j|jt|jkre|S)NTF)rrrrAr rhr4rC)r expr_listrs rparse_expr_listzExprParser.parse_expr_list sn hhT[[))""9??3E   TYY[ ) hhT[[)) rN)*rNrOrPrrr rrrr7r;r=r:rArErJrMrVr]rar_rmrorrrvr|rrrrrrrrrrrCrrrrrrrrrrsD" =8\|G6:H &2"586K 0GKR   GJ > /bD@@3""rrctdj|t||}t|j|j }t|y)Nz>>>>>>> parsing: {0})printrrrrC) expr_stringrprs rparseAndPrintExprrs? ! ( ( 56;0A !((O A !Hrctdy)Nzname like :name)rrrrx_testr s'( rN)T)=compatrrprotobuf.mysqlx_datatypes_pb2rprotobuf.mysqlx_expr_pb2rrrprotobuf.mysqlx_crud_pb2r r r rangerir rr|r}r~rrrrrrinterval_unitsrRrSrTrUrQr_r^rarZr`rbrrwrxryr[r]r\rrrrrrrrrrrrrrrrrrrrs\0&1NN?? FA A F    NN MM NN OO  NN                !! ""         !" #$     !!((%%&& = D""&&46I    %C C L .*r