Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.144.26.47
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : expr.cpython-312.pyc
�

%f�x���ddlmZmZddlmZddlmZmZmZddl	m
Z
mZmZere
ZGd�d�Zeej"ej$ej&ej(ej*ej,ej.ej0ej2g	�Zidej6�dej8�d	ej:�d
ej<�dej>�dej@�d
ejB�dejD�dejF�dejH�dejJ�dejL�dejN�dejP�dejR�dejT�dejV�ejXej$ej&ej(ej*ej,ej.ej0ej2ej"ejZej\ej^d�
�Z0Gd�d�Z1d�Z2d�Z3d�Z4d�Z5d�Z6d �Z7d!�Z8d"�Z9Gd#�d$�Z:d(d%�Z;d&�Z<y'))�)�STRING_TYPES�PY3)�Scalar)�ColumnIdentifier�DocumentPathItem�Expr)�Column�Order�
Projectionc��eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!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.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCyB)C�	TokenTyper��������	�
���
������������������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�6�7�8�9�:�;�<�=�>�?�@�AN)D�__name__�
__module__�__qualname__�NOT�AND�OR�XOR�IS�LPAREN�RPAREN�
LSQBRACKET�
RSQBRACKET�BETWEEN�TRUE�NULL�FALSE�IN�LIKE�INTERVAL�REGEXP�ESCAPE�IDENT�LSTRING�LNUM�DOT�DOLLAR�COMMA�EQ�NE�GT�GE�LT�LE�BITAND�BITOR�BITXOR�LSHIFT�RSHIFT�PLUS�MINUS�MUL�DIV�HEX�BIN�NEG�BANG�MICROSECOND�SECOND�MINUTE�HOUR�DAY�WEEK�MONTH�QUARTER�YEAR�EROTEME�
DOUBLESTAR�MOD�COLON�OROR�ANDAND�LCURLY�RCURLY�CAST�DOTSTAR�ORDERBY_ASC�ORDERBY_DESC�AS���B/usr/local/python-3.12/lib/python3.12/site-packages/mysqlx/expr.pyr
r
"sG��
�C�
�C�	
�B�
�C�	
�B�
�F�
�F��J��J��G�
�D�
�D��E�	�B�
�D��H�
�F�
�F��E��G�
�D�
�C�
�F��E�	�B�	�B�	�B�	�B�	�B�	�B�
�F��E�
�F�
�F�
�F�
�D��E�
�C�
�C�
�C�
�C�
�C�
�D��K�
�F�
�F�
�D�
�C�
�D��E��G�
�D��G��J�
�C��E�
�D�
�F�
�F�
�F�
�D��G��K��L�	�Br�r
�and�or�xor�is�not�like�in�regexp�between�interval�escape�cast�div�hex�bin�true�false)
�null�second�minute�hour�day�week�month�quarter�year�microsecond�asc�desc�asc� �eZdZdd�Zd�Zd�Zy)�Tokenc�.�||_||_||_y�N)�type�val�len)�selfr�r�r�s    r��__init__zToken.__init__�s����	������r�c�"�|j�Sr�)�__str__�r�s r��__repr__zToken.__repr__�����|�|�~�r�c�*�|jtjk(s:|jtjk(s|jtjk(r(t|j�dz|jzdzSt|j�S)N�(�))r�r
rcrerd�strr�r�s r�r�z
Token.__str__�sb���9�9�	���'�4�9�9�	���+F��9�9�	�)�)�)��t�y�y�>�C�'�$�(�(�2�S�8�8��t�y�y�>�!r�N)r)rNrOrPr�r�r�r�r�r�r�r��s���
�"r�r�c�6�ttj��S)N�r�)r�V_NULLr�r�r��build_null_scalarr��s���v�}�}�%�%r�c�8�ttj|��S)N)r��v_double)r�V_DOUBLE)�ds r��build_double_scalarr��s���v����3�3r�c�8�ttj|��S)N)r��v_signed_int)r�V_SINT)�is r��build_int_scalarr��s���v�}�}�1�5�5r�c��t|t�rtt|d��}t	tj
t	j|����S)Nzutf-8)�value)r��v_string)�
isinstancer�bytes�	bytearrayr�V_STRING�String)�ss r��build_string_scalarr��s7���!�\�"��)�A�w�'�(���v������Q�1G�H�Hr�c�R�t�}tj|_||_|Sr�)r�V_BOOLr��v_bool)�br�s  r��build_bool_scalarr��s ����A�
�]�]�A�F��A�H��Hr�c�z�t�}tj|_|jj	|�|Sr�)r�LITERALr��literal�CopyFrom)�anyval�es  r��build_literal_exprr��s+����A�
�\�\�A�F��I�I���v���Hr�c���t�}tj|_||j_|jj
j
�j|�|Sr�)r�OPERATORr��operator�name�param�addr�)r�r�r�s   r��build_unary_opr��sE����A�
�]�]�A�F��A�J�J�O��J�J������#�#�E�*��Hr�c�&�|jdd�S)N�"z"")�replace)�strings r��escape_literalr��s���>�>�#�t�$�$r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)y())�
ExprParserc�x�||_g|_d|_||_i|_d|_|j
�y)N�)r��tokens�pos�_allowRelationalColumns�placeholder_name_to_position�positional_placeholder_count�lex)r�r��allowRelationals   r�r�zExprParser.__init__�s8�����������'6��$�,.��)�,-��)����
r�c�f�|dzt|j�kxr|j|dz|k(S�Nr)r�r�)r�r��cs   r��next_char_iszExprParser.next_char_is�s1���1�u�s�4�;�;�'�'�C�D�K�K��A��,>�!�,C�Cr�c���|}d}|t|j�kr�|j|j�s|j|dk(rq|j|dk(r|durtd��d}|dz}|t|j�kr1|j|j�r�^|j|dk(r�q|j||}t	t
j|t|��}|S)NF�.Tz"Invalid number. Found multiple '.'r)r�r��isdigit�
ValueErrorr�r
re)r�r��start�	found_dotr��ts      r��
lex_numberzExprParser.lex_number�s������	��C����$�$�$�+�+�c�*:�*B�*B�*D�*.�+�+�c�*:�c�*A��{�{�3��3�&���$�$�%I�J�J� �	���'�C��C����$�$�$�+�+�c�*:�*B�*B�*D�*.�+�+�c�*:�c�*A��k�k�%��$���)�.�.�#�s�3�x�0���r�c�.�|}|t|j�kr}|j|j�s|j|dk(rN|dz}|t|j�kr1|j|j�r�;|j|dk(r�N|j||}	tt|j�|j
�t|��}|S#t$r(ttj|t|��}Y|SwxYw)N�_r)
r�r��isalnumr��
reservedWords�lower�upper�KeyErrorr
rc)r�r�rr��tokens     r��	lex_alphazExprParser.lex_alpha�s������#�d�k�k�"�"����A��(>�(>�(@�(,���A��#�(=��A��A��#�d�k�k�"�"����A��(>�(>�(@�(,���A��#�(=��k�k�%��"��	:��-��	�	��4�c�i�i�k�3�s�8�L�E�����	:��)�/�/�3��C��9�E���	:�s�(9C#�#-D�Dc���|j|}d}|dz
}|}|t|j�kr�|j|}||k(r1|dzt|j�kr|j|dz|k7rna||k(s|dk(r4|dzt|j�k\rn;|dz}||j|z}n||z}|dz}|t|j�kr��|t|j�k\s|j||k7rtdj|���|dk(r't	t
j|t|�dz�St	t
j|t|�dz�S)N�r�\z*Unterminated quoted string starting at {0}�`r)r�r�r�formatr�r
rcrd)r�r��
quote_charr�rrs      r��lex_quoted_tokenzExprParser.lex_quoted_token�sU���[�[��^�
���	�Q������#�d�k�k�"�"����A��A��J��1�q�5�3�t�{�{�+;�#;��{�{�1�q�5�!�Z�/���j��A��I��q�5�C����,�,����E���D�K�K��N�*���A�g���A��A��#�d�k�k�"�"�
��D�K�K� � �D�K�K��N�j�$@�� � &��u�
�/�
/��������#�s�3�x��z�:�:���*�*�C��S��!��<�<r�c�6�d}|t|j�k�r�|j|}|j�r|dz
}�>|j�r|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|d�rttj*dd�}�n�ttj*dd�}�n�|dk(rJ|j|d�rttj,|�}�nMttj.|�}�n1|dk(rJ|j|d�rttj0d�}�n�ttj2|�}�n�|dk(rttj4|�}�n�|dk(rttj6|�}�n�|dk(rttj8|�}�n|dk(rttj:|�}�n^|dk(rttj<|�}�n=|dk(rttj>|�}�n|dk(rJ|j|d�rttj@d�}�n�ttjB|�}�n�|dk(rx|j|d�rttjDd�}�n�|j|d�rttjFd�}�nlttjH|�}�nP|d k(rv|j|d �rttjJd!�}�n|j|d�rttjLd"�}n�ttjN|�}n�|d#k(r�|j|d
�rttjPd$�}n�|dzt|j�kr2|j|dzj�r|j	|�}nVttjR|�}n;|d%k(s
|d&k(s|d'k(r|jU|�}ntWd(jY|���|jZj]�||jz
}|t|j�kr���yy))Nr�rr
�?�:�{�}�+�-�*z**�/�$�%�=z==r�&�|z||r�r��[�]�~�,�!z!=�<z<<z<=�>z>>z>=rz.*r��'rzUnknown character at {0})/r�r��isspacerr�isalpharr�r
r�r�r�r�rtrurr�rvrwrgr�rir�ror�rprVrWrXrYrzrhrjr{rrrnrmrsrlrkr�rfrrrr��append)r�r�rrs    r�r�zExprParser.lexs���
���#�d�k�k�"�"����A��A��y�y�{��Q������������*�������S�����q�)���c���i�/�/��3���c���i�o�o�q�1���c���i�.�.��2���c���i�.�.��2���c���i�n�n�a�0���c���i�o�o�q�)��c���$�$�Q��,�!�)�"6�"6��=�E�!�)�-�-��3�E��c���i�m�m�Q�/���c���i�.�.��2���c���i�m�m�Q�/���c���$�$�Q��,�!�)�,�,��a�8�E�!�)�,�,��a�8�E��c���$�$�Q��,�!�)�"2�"2�A�6�E�!�)�"2�"2�A�6�E��c���$�$�Q��,�!�)�.�.�$�7�E�!�)�/�/�1�5�E��c���i�.�.��2���c���i�.�.��2���c���i�2�2�A�6���c���i�2�2�A�6���c���i�m�m�Q�/���c���i�o�o�q�1���c���$�$�Q��,�!�)�,�,��5�E�!�)�.�.�!�4�E��c���$�$�Q��,�!�)�"2�"2�D�9�E��&�&�q�#�.�!�)�,�,��5�E�!�)�,�,��2�E��c���$�$�Q��,�!�)�"2�"2�D�9�E��&�&�q�#�.�!�)�,�,��5�E�!�)�,�,��2�E��c���$�$�Q��,�!�)�"3�"3�T�:�E���U�S����-�-�$�+�+�a�!�e�2D�2L�2L�2N� �O�O�A�.�E�!�)�-�-��3�E��c��Q�#�X��c���-�-�a�0�� �!;�!B�!B�1�!E�F�F��K�K���u�%�
����N�A�u�#�d�k�k�"�"r�c�X�|jt|j�k\r%tdj	||j���|j|jj
|k7r=tdj	||j|j|j���y)Nz5Expected token type {0} at pos {1} but no tokens leftz5Expected token type {0} at pos {1} but found type {2})r�r�r�rrr��r�r�s  r��assert_cur_tokenzExprParser.assert_cur_tokenws����8�8�s�4�;�;�'�'��+�+1�6�$����+A�C�
C��;�;�t�x�x� �%�%��-��(�(.��t�T�X�X�/3�{�{�4�8�8�/D�)F�G�
G�.r�c�:�|j|j|�Sr���pos_token_type_isr�r6s  r��cur_token_type_iszExprParser.cur_token_type_is�s���%�%�d�h�h��5�5r�c�@�|j|jdz|�Srr9r6s  r��next_token_type_iszExprParser.next_token_type_is�s���%�%�d�h�h��l�D�9�9r�c�n�|t|j�kxr|j|j|k(Sr�)r�r�r�)r�r�r�s   r�r:zExprParser.pos_token_type_is�s/���S����%�%�G�$�+�+�c�*:�*?�*?�4�*G�Gr�c��|j|�|j|jj}|jdz|_|Sr)r7r�r�r�)r�r��vs   r��
consume_tokenzExprParser.consume_token�s<�����d�#��K�K����!�%�%���8�8�a�<����r�c���g}|jtj�|jtj�s�|j|j
��|jtj�rS|jdz|_|j|j
��|jtj�r�S|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;rWr4�exprrhr�)r��exprss  r��paren_expr_listzExprParser.paren_expr_list�s��������9�+�+�,��%�%�i�&6�&6�7��L�L�����%��(�(����9��8�8�a�<������T�Y�Y�[�)��(�(����9�	
���9�+�+�,��r�c��|jtj�t�}|j	tj
�rC|j
tj�|_|j
tj
�|j|jj|_|jdz|_	|Sr)r7r
rc�
Identifierr=rfrA�schema_namer�r�r�r�)r��ids  r��
identifierzExprParser.identifier�s������i�o�o�.�
�\���"�"�9�=�=�1�!�/�/�	���@�B�N����y�}�}�-��+�+�d�h�h�'�+�+����8�8�a�<����	r�c��t�}tj|_|jjj|j
��|jjj|j��|Sr�)
r�	FUNC_CALLr��
function_callr�r�rJr��extendrE)r�r�s  r�rMzExprParser.function_call�sY���F�������	�����%�%�d�o�o�&7�8�	�����$�$�T�%9�%9�%;�<��r�c���|jtj�|j|j}|j
tjk(r�|jjd�r?|jjd�r$tdj|j���|jtj�|j}nw|jj
tjk(r,|jtj�|j}n$tdj|j���ttj |��}|S)Nrz-{0} is not a valid JSON/ECMAScript identifierzBExpected token type IDENT or LSTRING in JSON path at token pos {0}�r�r�)rAr
rfr�r�r�rcr��
startswith�endswithrrr�rrdr�MEMBER)r�r�
memberName�items    r��docpath_memberzExprParser.docpath_member�s�����9�=�=�)����D�H�H�%���:�:����(��y�y�#�#�C�(�U�Y�Y�-?�-?��-D� �".�.4�f�U�[�[�.A�C�C����y���/����J�
�Z�Z�_�_�	� 1� 1�
1����y�0�0�1����J��5�5;�V�D�H�H�5E�G�
G��%5�%<�%<�J�O���r�c��|jtj�|jtj�r9|jtj
�t
tj��S|jtj�r�t|jtj��}|dkr$tdj|j���|jtj
�t
tj|��Stdj|j���)Nr�r�z%Array index cannot be negative at {0})r��indexzJException token type MUL or LNUM in JSON path array index at token pos {0})rAr
rXr;rvrYr�ARRAY_INDEX_ASTERISKre�int�
IndexErrorrr��ARRAY_INDEXr)r�r@s  r��docpath_array_loczExprParser.docpath_array_loc�s������9�/�/�0��!�!�)�-�-�0����y�3�3�4�#�)9�)N�)N�O�O�
�
#�
#�I�N�N�
3��D�&�&�y�~�~�6�7�A��1�u� �"$�$*�F�4�8�8�$4�6�6����y�3�3�4�#�)9�)E�)E�Q�O�O�� � &��t�x�x� 0�2�
2r�c��t�}|jtj�rR|jjt
tj|jtj���g�|jj|j	��ttj|��S)NrP)r�rJ)
rr;r
rc�
document_pathrNrrSrAr)r��cols  r��document_fieldzExprParser.document_field�s���� ���!�!�)�/�/�2����$�$� �&6�&=�&=�'+�'9�'9�)�/�/�'J�L�&M�
N�	��� � ��!3�!3�!5�6������4�4r�c�^�g}	|jtj�r!|j|j	���n|jtj
�rI|j
tj
�|jttj���n�|jtj�r |j|j��ni|jtj�rI|j
tj�|jttj���nn��Rt|�}|dkDrG||dz
jtjk(r$tdj!|j"���|S)z�Parse a JSON-style document path, like WL#7909, but prefix by @.
        instead of $. We parse this as a string because the protocol doesn't
        support it. (yet)
        r�r�rz$JSON path may not end in '**' at {0})r;r
rfr4rVr�rAr�MEMBER_ASTERISKrXr]r��DOUBLE_ASTERISKr�r�rrr�)r��docpath�itemss   r�r_zExprParser.document_path�sF��
����%�%�i�m�m�4����t�2�2�4�5��'�'�	�(9�(9�:��"�"�9�#4�#4�5����/�)�9�9� ;�<��'�'�	�(<�(<�=����t�5�5�7�8��'�'�	�(<�(<�=��"�"�9�#7�#7�8����/�)�9�9� ;�<����G����1�9���q��)�.�.��+�+�,�� � &��t�x�x� 0�2�
2��r�c���g}|j|jtj��|j	tj
�rm|jtj
�|j|jtj��|j	tj
�r�mt
|�dkDr$tdj|j���|j�t�}tdt
|��D]2}|dk(r|d|_
�|dk(r|d|_�#|dk(s�)|d|_�4|j	tj �r4|jtj �|j#�|_t%�}t$j|_|j(j+|�|S)Nrz#Too many parts to identifier at {0}r�rr)r4rAr
rcr;rfr�rrr��reverser�xranger��
table_namerHrgr_rr�rJr�)r��parts�colidr�r�s     r��column_identifierzExprParser.column_identifier�si����
���T�'�'�	���8�9��$�$�Y�]�]�3����y�}�}�-��L�L��+�+�I�O�O�<�=��$�$�Y�]�]�3��u�:��>�� � &��t�x�x� 0�2�
2�
�
�
�� �"����3�u�:�&�	-�A��A�v�"�1�X��
��a��#(��8�� ��a��$)�!�H��!�
	-��!�!�)�"2�"2�3����y�/�/�0�"&�"4�"4�"6�E���F�������	�����e�$��r�c��|jt|j�k\rtd��|j|j}|xjdz
c_|S)NzUnexpected end of token streamr)r�r�r�r)r�r
s  r��
next_tokenzExprParser.next_tokensG���H�H��D�K�K�(�(��=�>�>��K�K����!�����A�
���r�c�v�|j�}|j|k7rtdj|���y)NzExpected token type {0})ror�rr)r��
token_typer
s   r��expect_tokenzExprParser.expect_tokens6���O�O����6�6�Z���6�=�=�j�I�J�J� r�c��t�}yr�)�Object)r��os  r��parse_json_doczExprParser.parse_json_docs	���H�r�c���d}|jtj�r |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}r�r)r;r
rerA�LNUM_INTrcr�r�r�r�rrr�rr�PLACEHOLDERr��position)r�r�place_holder_namerCs    r��parse_place_holderzExprParser.parse_place_holder!s&�����!�!�)�.�.�1� $� 2� 2�9�3E�3E� F��
�
#�
#�I�O�O�
4� $� 2� 2�9�?�?� C��
�Z�Z�9�,�,�
,� #�D�$E�$E� F��� � &��t�x�x� 0�2�
2�.�3�3�5����)�)�*���� A� A�A��1�1�2C�D�
�M���	!�=�=�D�M��1�1�
�-�-�.?�@��-�-��2�-��r�c�
�|j�}|jtjtjfvr|j|�S|jtjk(r|j�S|jtjk(r�n;|jtjk(r1|j�}|jtj�|S|jtjtjfvr�n�|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|jM�S|jtjNk(r|jQ�S|jtjRk(r�|j&dz
|_|jUtj�sy|jUtjV�rj|jY|j&dztjR�r=|jY|j&dztj�r|j[�S|j\s|jM�S|j_�Stadjc|j|j&���)z<Parse an atomic expression and return a protobuf Expr objectrrrrzAUnknown token type = {0}  when expecting atomic expression at {1})2ror�r
r�r�r|r�rvr�rVrCrrrWrtru�
peek_tokenrer�r�r��atomic_exprr�rQrzr{rdr�r�r\r�r��floatr�rZr[r]r�rgrarv�starOperatorrcr=rfr:rMr�rmrr)r�rr��peeks    r�rzExprParser.atomic_expr9sx�����!���:�:�)�+�+�Y�_�_�=�=��*�*�5�1�1�
�Z�Z�9�+�+�
+��&�&�(�(�
�Z�Z�9�>�>�
)��
�Z�Z�9�+�+�
+��	�	��A����i�.�.�/��H�
�Z�Z�I�N�N�I�O�O�<�
<��
�Z�Z�I�N�N�I�O�O�<�
<��?�?�$�D��y�y�I�N�N�*�,1�I�I����,@����D�H�H�%�)��'�'�)�)�!�%�)�)�T�-=�-=�-?�@�@�
�Z�Z�I�M�M�9�=�=�)�.�.�I�
I�!�%�)�)�T�-=�-=�-?�@�@�
�Z�Z�9�,�,�
,�%�&9�%�)�)�&D�E�E�
�Z�Z�9�>�>�
)�%�&7�&9�:�:�
�Z�Z�9�>�>�
)��e�i�i��)�'��e�i�i�(8�9�;�;�*�*:�3�u�y�y�>�*J�K�K�
�Z�Z�I�N�N�I�O�O�<�
<�%�!�%�*�*�	���">�?�A�
A�
�Z�Z�9�+�+�
+��&�&�(�(�
�Z�Z�9�=�=�
(��$�$�&�&�
�Z�Z�9�?�?�
*��x�x�!�|�D�H��&�&�y�'7�'7�8��'�'�	�
�
�6��%�%�d�h�h��l�I�O�O�D��%�%�d�h�h��l�I�4D�4D�E��)�)�+�+� $�;�;��+�+�-�7�!�3�3�5�7�&�-�-3�V�E�J�J����-I�K�	Kr�c���|�}|jt|j�k�rA|j|jj|v�rt	�}tj
|_|j|jj|j_|jjj�j|�|jdz|_|jjj�j|��|}|jt|j�kr'|j|jj|vr��|S)z}Given a `set' of types and an Expr-returning inner parser function,
        parse a left associate binary operator expressionr)r�r�r�r�rr�r�r�r�r�r�r�)r��types�inner_parser�lhsr�s     r��parse_left_assoc_binary_op_exprz*ExprParser.parse_left_assoc_binary_op_expr�s����n���x�x�#�d�k�k�*�*��{�{�4�8�8�$�)�)�U�2���A��]�]�A�F�"�k�k�$�(�(�3�7�7�A�J�J�O�
�J�J��� � �"�+�+�C�0��x�x�!�|�D�H�
�J�J��� � �"�+�+�L�N�;��C��x�x�#�d�k�k�*�*��{�{�4�8�8�$�)�)�U�2��
r�c��|jttjtjtj
g�|j�Sr�)r��setr
rvrwr�rr�s r��mul_div_exprzExprParser.mul_div_expr�s9���3�3�����	�
�
�y�}�}�=�>�����	r�c��|jttjtjg�|j
�Sr�)r�r�r
rtrur�r�s r��add_sub_exprzExprParser.add_sub_expr�s4���3�3��������1�2�D�4E�4E�G�	Gr�c��|jttjtjg�|j
�Sr�)r�r�r
rrrsr�r�s r��
shift_exprzExprParser.shift_expr�s8���3�3���!�!�9�#3�#3�4�5�t�7H�7H�J�	Jr�c��|jttjtjtj
g�|j�Sr�)r�r�r
rorprqr�r�s r��bit_exprzExprParser.bit_expr�s;���3�3���!�!�9�?�?�I�4D�4D�E�F��O�O��	r�c
��|jttjtjtj
tjtjtjg�|j�Sr�)
r�r�r
rlrkrnrmrirjr�r�s r��	comp_exprzExprParser.comp_expr�sN���3�3�����y�|�|�Y�\�\�9�<�<����y�|�|�-�
.�/3�}�}�>�	>r�c���|j�}d}|jtj�r!d}|j	tj�|j
t
|j�k�rj|g}|j|j
j}|jtj�r�|j	tj�|jtj�r!d}|j	tj�|j|j���n>|jtj�r@|j	tj�|j|j���n�|jtj�r�|j	tj�|j|j��|jtj��rb|j	tj�|j|j���n"|jtj �r}|j	tj �|j|j��|j	tj"�|j|j��n�|jtj$�r?|j	tj$�|j|j��n(|r$t'dj)|j
���d}|ret+�}t*j,|_||j0_|j0j4j|�|rt7d|�}|}|S)NFTz"Unknown token after NOT as pos {0}rQ)r�r;r
rQrAr�r�r�r�rUr4r^rNrEr_rbrZrRrarrrr�r�r�r�r�r�)r�r��is_not�params�op_namer�s      r��	ilri_exprzExprParser.ilri_expr�s����n�n������!�!�)�-�-�0��F����y�}�}�-��8�8�c�$�+�+�&�&��U�F��k�k�$�(�(�+�/�/�G��%�%�i�l�l�3��"�"�9�<�<�0��)�)�)�-�-�8�!�F��&�&�y�}�}�5��
�
�d�n�n�.�/��'�'�	���5��"�"�9�<�<�0��
�
�d�2�2�4�5��'�'�	���7��"�"�9�>�>�2��
�
�d�n�n�.�/��)�)�)�*:�*:�;��&�&�y�'7�'7�8��M�M�$�.�.�"2�3��'�'�	�(9�(9�:��"�"�9�#4�#4�5��
�
�d�n�n�.�/��"�"�9�=�=�1��
�
�d�n�n�.�/��'�'�	�(8�(8�9��"�"�9�#3�#3�4��
�
�d�n�n�.�/��$�&(�(.��t�x�x�(8�:�:�����F�������")��
�
���
�
� � �'�'��/��&�u�a�0�A����
r�c��|jttjtjg�|j
�Sr�)r�r�r
rRr�r�r�s r��and_exprzExprParser.and_expr�s4���3�3�����	� 0� 0�1�2�D�N�N�D�	Dr�c��|jttjtjg�|j
�Sr�)r�r�r
rSr�r�r�s r��or_exprzExprParser.or_expr�s2���3�3�����y�~�~�.�/����@�	@r�c�"�|j�Sr�)r�r�s r�rCzExprParser.expr�r�r�c�T�t|jtj���S)N)r�)r	rAr
rcr�s r��parse_table_insert_fieldz#ExprParser.parse_table_insert_field�s���4�-�-�i�o�o�>�?�?r�c�6�|j�jSr�)rmrJr�s r��parse_table_update_fieldz#ExprParser.parse_table_update_field�s���%�%�'�2�2�2r�c�p�g}d}|jt|j�k�r|s|jtj
�d}t
|j���}|jtj�rD|jtj�|jtj�|_n9|xjdzc_|jtj�|_|j|�|jt|j�kr��|S)NTF)�sourcer)
r�r�r�rAr
rhrrCr;r�rc�aliasr4)r��project_expr�first�
projections    r��parse_table_select_projectionz(ExprParser.parse_table_select_projection�s��������h�h��T�[�[�)�)���"�"�9�?�?�3��E�#�4�9�9�;�7�J��%�%�i�l�l�3��"�"�9�<�<�0�#'�#5�#5�i�o�o�#F�
� ����A�
��#'�#5�#5�i�o�o�#F�
� ����
�+��h�h��T�[�[�)�)��r�c��g}d}|jt|j�k�r|s|jtj
�d}t
|j���}|jtj�r5tj|_|jtj�nS|jtj�r4tj|_|jtj�|j|�|jt|j�kr��|S)NTF)rC)r�r�r�rAr
rhr
rCr;r��ASC�	directionr��DESCr4)r��order_specsr��orders    r��parse_order_speczExprParser.parse_order_spec�s��������h�h��T�[�[�)�)���"�"�9�?�?�3��E��t�y�y�{�+�E��%�%�i�&;�&;�<�"'�)�)����"�"�9�#8�#8�9��'�'�	�(>�(>�?�"'�*�*����"�"�9�#9�#9�:����u�%��h�h��T�[�[�)�)��r�c��g}d}|jt|j�kre|s|jtj
�d}|j
|j��|jt|j�kr�e|S)NTF)r�r�r�rAr
rhr4rC)r��	expr_listr�s   r��parse_expr_listzExprParser.parse_expr_list
sn���	����h�h��T�[�[�)�)���"�"�9�?�?�3��E����T�Y�Y�[�)�	�h�h��T�[�[�)�)�
�r�N)*rNrOrPr�rrrrr�r7r;r=r:rArErJrMrVr]rar_rmrorrrvr|rr�r�r�r�r�r�r�r�r�rCr�r�r�r�r�r�r�r�r�r��s����D��"
�=�8\�|G�6�:�H������&2�"5��8�6�K�
��0GK�R
� �
G�J��
>�
/�bD�@��@�3��"�"r�r�c��tdj|��t||�}t|j�|j	�}t|�y)Nz>>>>>>> parsing:  {0})�printrr�r�rC)�expr_stringr��pr�s    r��parseAndPrintExprr�s?��	�
!�
(�
(��
5�6��;��0�A�	�!�(�(�O�	����A�	�!�Hr�c��td�y)Nzname like :name)r�r�r�r��x_testr� s���'�(�
r�N)T)=�compatrr�protobuf.mysqlx_datatypes_pb2r�protobuf.mysqlx_expr_pb2rrr�protobuf.mysqlx_crud_pb2r	r
r�rangerir
r�r|r}r~rr�r�r�r�r��interval_unitsrRrSrTrUrQr_r^rarZr`rbr�rwrxryr[r]r\r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r��<module>r�s\��0&�1�N�N�?�?��
�F�A�A�F�
���
���
���
�N�N�
�M�M�
�N�N�
�O�O�
���
�N�N�	�	���	�	�
�
���	����
�	�
�
��	�	���	�

�	�
�
���	���
�	�	����
�	� � ���	�!�!���	�"�"��
�	� � ���	����
�	�
�
��
�	�
�
��
�	�
�
�� �	���!�"�	���#�$���� � �� � �����
�
��������!�!�����(�(��%�%��&�&����=�
�D"�"�&&�4�6�I�
�
�
�%�C	�C	�L
�.*r�
© 2025 GrazzMean