Skip to main content

nodedb_sql/resolver/expr/
binary_ops.rs

1// SPDX-License-Identifier: Apache-2.0
2
3use sqlparser::ast::{self, UnaryOperator};
4
5use crate::error::{Result, SqlError};
6use crate::types::*;
7
8pub(super) fn convert_binary_op(op: &ast::BinaryOperator) -> Result<BinaryOp> {
9    match op {
10        ast::BinaryOperator::Plus => Ok(BinaryOp::Add),
11        ast::BinaryOperator::Minus => Ok(BinaryOp::Sub),
12        ast::BinaryOperator::Multiply => Ok(BinaryOp::Mul),
13        ast::BinaryOperator::Divide => Ok(BinaryOp::Div),
14        ast::BinaryOperator::Modulo => Ok(BinaryOp::Mod),
15        ast::BinaryOperator::Eq => Ok(BinaryOp::Eq),
16        ast::BinaryOperator::NotEq => Ok(BinaryOp::Ne),
17        ast::BinaryOperator::Gt => Ok(BinaryOp::Gt),
18        ast::BinaryOperator::GtEq => Ok(BinaryOp::Ge),
19        ast::BinaryOperator::Lt => Ok(BinaryOp::Lt),
20        ast::BinaryOperator::LtEq => Ok(BinaryOp::Le),
21        ast::BinaryOperator::And => Ok(BinaryOp::And),
22        ast::BinaryOperator::Or => Ok(BinaryOp::Or),
23        ast::BinaryOperator::StringConcat => Ok(BinaryOp::Concat),
24        _ => Err(SqlError::Unsupported {
25            detail: format!("binary operator: {op}"),
26        }),
27    }
28}
29
30pub(super) fn convert_unary_op(op: &UnaryOperator) -> Result<UnaryOp> {
31    match op {
32        UnaryOperator::Minus => Ok(UnaryOp::Neg),
33        UnaryOperator::Not => Ok(UnaryOp::Not),
34        _ => Err(SqlError::Unsupported {
35            detail: format!("unary operator: {op}"),
36        }),
37    }
38}