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)
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)
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
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
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
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)
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
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)
def partial_eval(self): lhs = self.lhs.partial_eval() rhs = self.rhs.partial_eval() return EqOp("eq", [lhs, rhs])
def to_sql(self, schema, not_null=False, boolean=False): return NotOp(EqOp([self.lhs, self.rhs]).partial_eval()).partial_eval().to_sql(schema)
def to_sql(self, schema, not_null=False, boolean=False): return NotOp('not', EqOp('eq', self.terms).partial_eval()).partial_eval().to_sql(schema)