Пример #1
0
def to_sql(self, schema, not_null=False, boolean=False):
    if not self.expr:
        return wrap([{"name": ".", "sql": {"b": SQL_FALSE}}])
    elif is_literal(self.suffix) and not self.suffix.value:
        return wrap([{"name": ".", "sql": {"b": SQL_TRUE}}])
    else:
        return EqOp([RightOp([self.expr, LengthOp(self.suffix)]),
                     self.suffix]).partial_eval().to_sql(schema)
Пример #2
0
def to_sql(self, schema, not_null=False, boolean=False):
    if not self.term:
        return wrap([{"name": ".", "sql": {"b": SQL_FALSE}}])
    elif isinstance(self.suffix, Literal) and not self.suffix.value:
        return wrap([{"name": ".", "sql": {"b": SQL_TRUE}}])
    else:
        return EqOp("eq", [
            RightOp("right",
                    [self.term, LengthOp("length", self.suffix)]), self.suffix
        ]).partial_eval().to_sql(schema)
Пример #3
0
def to_ruby(self, schema):
    lhs = self.lhs.to_ruby(schema)
    rhs = self.rhs.to_ruby(schema)
    script = "(int)Math.floor(((double)(" + lhs + ") / (double)(" + rhs + ")).doubleValue())*(" + rhs + ")"

    output = WhenOp(
        "when",
        OrOp("or", [self.lhs.missing(), self.rhs.missing(), EqOp("eq", [self.rhs, ZERO])]),
        **{
            "then": self.default,
            "else":
                ScriptOp("script", script)
        }
    ).to_ruby(schema)
    return output
Пример #4
0
def to_ruby(self, schema):
    lhs = NumberOp("number", self.lhs).partial_eval()
    rhs = NumberOp("number", self.rhs).partial_eval()
    script = "(" + lhs.to_ruby(schema).expr + ") / (" + rhs.to_ruby(schema).expr + ")"

    output = WhenOp(
        "when",
        OrOp("or", [self.lhs.missing(), self.rhs.missing(), EqOp("eq", [self.rhs, ZERO])]),
        **{
            "then": self.default,
            "else": Ruby(type=NUMBER, expr=script, frum=self)
        }
    ).partial_eval().to_ruby(schema)

    return output
Пример #5
0
def to_sql(self, schema, not_null=False, boolean=False):
    test = SqlInstrOp(
        [SqlSubstrOp([self.value, AddOp([self.start, ONE]), NULL]),
         self.find]).partial_eval()

    if boolean:
        return test.to_sql(schema)
    else:
        offset = SubOp([self.start, ONE]).partial_eval()
        index = AddOp([test, offset]).partial_eval()
        temp = index.to_sql(schema)
        return WhenOp(EqOp([test, ZERO]), **{
            "then": self.default,
            "else": index
        }).partial_eval().to_sql(schema)
def to_es14_script(self, schema, not_null=False, boolean=False, many=True):
    lhs = NumberOp("number", self.lhs).partial_eval()
    rhs = NumberOp("number", self.rhs).partial_eval()
    script = "(" + lhs.to_es14_script(schema).expr + ") / (" + rhs.to_es14_script(schema).expr + ")"

    output = WhenOp(
        "when",
        OrOp("or", [self.lhs.missing(), self.rhs.missing(), EqOp("eq", [self.rhs, ZERO])]),
        **{
            "then": self.default,
            "else": EsScript(type=NUMBER, expr=script, frum=self)
        }
    ).partial_eval().to_es14_script(schema)

    return output
Пример #7
0
def to_sql(self, schema, not_null=False, boolean=False):
    test = SqlInstrOp("substr", [
        SqlSubstrOp(
            "substr",
            [self.value, MultiOp("add", [self.start, ONE]), NULL]), self.find
    ]).partial_eval()

    if boolean:
        return test.to_sql(schema)
    else:
        offset = BinaryOp("sub", [self.start, ONE]).partial_eval()
        index = MultiOp("add", [test, offset]).partial_eval()
        temp = index.to_sql(schema)
        return WhenOp("when", EqOp("eq", [test, ZERO]), **{
            "then": self.default,
            "else": index
        }).partial_eval().to_sql(schema)
Пример #8
0
def to_es_script(self, schema):
    lhs = self.lhs.partial_eval().to_es_script(schema)
    rhs = self.rhs.partial_eval().to_es_script(schema)

    if rhs.frum is ONE:
        script = "(int)Math.floor(" + lhs.expr + ")"
    else:
        script = "Math.floor((" + lhs.expr + ") / (" + rhs.expr + "))*(" + rhs.expr + ")"

    output = WhenOp(
        "when", OrOp("or", [lhs.miss, rhs.miss,
                            EqOp("eq", [self.rhs, ZERO])]), **{
                                "then": self.default,
                                "else": EsScript(type=NUMBER,
                                                 expr=script,
                                                 frum=self,
                                                 miss=FALSE)
                            }).to_es_script(schema)
    return output
Пример #9
0
def to_sql(self, schema, not_null=False, boolean=False):
    return NotOp("not",
                 EqOp("eq",
                      [self.lhs, self.rhs])).to_sql(schema, not_null, boolean)
Пример #10
0
def partial_eval(self):
    lhs = self.lhs.partial_eval()
    rhs = self.rhs.partial_eval()
    return EqOp("eq", [lhs, rhs])
Пример #11
0
def to_sql(self, schema, not_null=False, boolean=False):
    return NotOp(EqOp([self.lhs,
                       self.rhs]).partial_eval()).partial_eval().to_sql(schema)
Пример #12
0
def to_sql(self, schema, not_null=False, boolean=False):
    return NotOp('not',
                 EqOp('eq',
                      self.terms).partial_eval()).partial_eval().to_sql(schema)