in dao/feature_view_hologres_dao.go [522:547]
func (v *Visitor) ConvertToSql(node *ast.BinaryNode) string {
if node == nil {
return ""
}
if node.Operator != "&&" && node.Operator != "||" {
op := node.Operator
if op == "==" {
op = "="
}
if leftNode, ok := node.Left.(*ast.IdentifierNode); ok {
return fmt.Sprintf("%s %s '%s'", leftNode, op, strings.ReplaceAll(node.Right.String(), "\"", ""))
} else {
return fmt.Sprintf("'%s' %s %s", strings.ReplaceAll(node.Left.String(), "\"", ""), op, node.Right.String())
}
} else if node.Operator == "&&" {
left := v.ConvertToSql(node.Left.(*ast.BinaryNode))
right := v.ConvertToSql(node.Right.(*ast.BinaryNode))
return fmt.Sprintf("(%s) and (%s)", left, right)
} else if node.Operator == "||" {
left := v.ConvertToSql(node.Left.(*ast.BinaryNode))
right := v.ConvertToSql(node.Right.(*ast.BinaryNode))
return fmt.Sprintf("(%s) or (%s)", left, right)
}
return ""
}