403Webshell
Server IP : 66.29.132.122  /  Your IP : 3.145.50.222
Web Server : LiteSpeed
System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : admazpex ( 531)
PHP Version : 7.2.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/self/root/proc/self/root/proc/thread-self/root/opt/hc_python/lib64/python3.8/site-packages/mysqlx/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/proc/self/root/proc/thread-self/root/opt/hc_python/lib64/python3.8/site-packages/mysqlx/expr_unparser.py
# MySQL Connector/Python - MySQL driver written in Python.
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.

# MySQL Connector/Python is licensed under the terms of the GPLv2
# <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most
# MySQL Connectors. There are special exceptions to the terms and
# conditions of the GPLv2 as it is applied to this software, see the
# FOSS License Exception
# <http://www.mysql.com/about/legal/licensing/foss-exception.html>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

from .protobuf.mysqlx_datatypes_pb2 import *
from .protobuf.mysqlx_expr_pb2 import *


def escape_literal(string):
    return string.replace('"', '""')


def scalar_to_string(s):
    if s.type == Scalar.V_SINT:
        return str(s.v_signed_int)
    elif s.type == Scalar.V_DOUBLE:
        return str(s.v_double)
    elif s.type == Scalar.V_BOOL:
        if s.v_bool:
            return "TRUE"
        else:
            return "FALSE"
    elif s.type == Scalar.V_STRING:
        return '"{0}"'.format(escape_literal(s.v_string.value))
    elif s.type == Scalar.V_NULL:
        return "NULL"
    else:
        raise ValueError("Unknown type tag: {0}".format(s.type))


def column_identifier_to_string(id):
    s = quote_identifier(id.name)
    if id.HasField("table_name"):
        s = "{0}.{1}".format(quote_identifier(id.table_name), s)
    if id.HasField("schema_name"):
        s = "{0}.{1}".format(quote_identifier(id.schema_name), s)
    # if id.HasField("document_path"):
    #     s = "{0}@{1}".format(s, id.document_path)
    return s


def function_call_to_string(fc):
    s = quote_identifier(fc.name.name) + "("
    if fc.name.HasField("schema_name"):
        s = quote_identifier(fc.name.schema_name) + "." + s
    for i in xrange(0, len(fc.param)):
        s = s + expr_to_string(fc.param[i])
        if i + 1 < len(fc.param):
            s = s + ", "
    return s + ")"


def operator_to_string(op):
    ps = op.param
    if op.name == "IN":
        s = expr_to_string(ps[0]) + " IN ("
        for i in xrange(1, len(ps)):
            s = s + expr_to_string(ps[i])
            if i + 1 < len(ps):
                s = s + ", "
        return s + ")"
    elif op.name == "INTERVAL":
        return ("INTERVAL {0} {1}"
                "".format(expr_to_string(ps[0]),
                          expr_to_string(ps[1]).replace('"', '')))
    elif op.name == "BETWEEN":
        return "{0} BETWEEN {1} AND {2}".format(expr_to_string(ps[0]),
                                                expr_to_string(ps[1]),
                                                expr_to_string(ps[2]))
    elif op.name == "LIKE" and len(ps) == 3:
        return "{0} LIKE {1} ESCAPE {2}".format(expr_to_string(ps[0]),
                                                expr_to_string(ps[1]),
                                                expr_to_string(ps[2]))
    elif len(ps) == 2:
        return "{0} {1} {2}".format(expr_to_string(ps[0]), op.name,
                                    expr_to_string(ps[1]))
    elif len(ps) == 1:
        if len(op.name) == 1:
            return "{0}{1}".format(op.name, expr_to_string(ps[0]))
        else:
            # something like NOT
            return "{0} ({1})".format(op.name, expr_to_string(ps[0]))
    else:
        raise ValueError("Unknown operator structure: {0}".format(op))


def quote_identifier(id):
    if "`" in id or '"' in id or "'" in id or "@" in id or "." in id:
        return "`{0}`".format(id.replace("`", "``"))
    else:
        return id


def expr_to_string(e):
    if e.type == Expr.LITERAL:
        return scalar_to_string(e.literal)
    elif e.type == Expr.IDENT:
        return column_identifier_to_string(e.identifier)
    elif e.type == Expr.FUNC_CALL:
        return function_call_to_string(e.function_call)
    elif e.type == Expr.OPERATOR:
        return operator_to_string(e.operator)
    elif e.type == Expr.VARIABLE:
        return "@{0}".format(quote_identifier(e.variable))
    else:
        raise ValueError("Unknown expression type: {0}".format(e.type))

Youez - 2016 - github.com/yon3zu
LinuXploit