Signed-off-by: fluorinedog <fluorinedog@gmail.com>
This commit is contained in:
FluorineDog 2021-06-30 10:18:26 +08:00 committed by GitHub
parent 9257523a20
commit b90b4f2058
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 45 additions and 45 deletions

View File

@ -31,16 +31,16 @@ struct Expr {
using ExprPtr = std::unique_ptr<Expr>;
struct BinaryExpr : Expr {
struct BinaryExprBase : Expr {
ExprPtr left_;
ExprPtr right_;
};
struct UnaryExpr : Expr {
struct UnaryExprBase : Expr {
ExprPtr child_;
};
struct BoolUnaryExpr : UnaryExpr {
struct LogicalUnaryExpr : UnaryExprBase {
enum class OpType { Invalid = 0, LogicalNot = 1 };
OpType op_type_;
@ -49,7 +49,7 @@ struct BoolUnaryExpr : UnaryExpr {
accept(ExprVisitor&) override;
};
struct BoolBinaryExpr : BinaryExpr {
struct LogicalBinaryExpr : BinaryExprBase {
// Note: bitA - bitB == bitA & ~bitB, alias to LogicalMinus
enum class OpType { Invalid = 0, LogicalAnd = 1, LogicalOr = 2, LogicalXor = 3, LogicalMinus = 4 };
OpType op_type_;

View File

@ -422,8 +422,8 @@ ExprPtr
Parser::ParseMustNode(const Json& body) {
auto item_list = ParseItemList(body);
auto merger = [](ExprPtr left, ExprPtr right) {
using OpType = BoolBinaryExpr::OpType;
auto res = std::make_unique<BoolBinaryExpr>();
using OpType = LogicalBinaryExpr::OpType;
auto res = std::make_unique<LogicalBinaryExpr>();
res->op_type_ = OpType::LogicalAnd;
res->left_ = std::move(left);
res->right_ = std::move(right);
@ -437,8 +437,8 @@ Parser::ParseShouldNode(const Json& body) {
auto item_list = ParseItemList(body);
Assert(item_list.size() >= 1);
auto merger = [](ExprPtr left, ExprPtr right) {
using OpType = BoolBinaryExpr::OpType;
auto res = std::make_unique<BoolBinaryExpr>();
using OpType = LogicalBinaryExpr::OpType;
auto res = std::make_unique<LogicalBinaryExpr>();
res->op_type_ = OpType::LogicalOr;
res->left_ = std::move(left);
res->right_ = std::move(right);
@ -452,8 +452,8 @@ Parser::ParseMustNotNode(const Json& body) {
auto item_list = ParseItemList(body);
Assert(item_list.size() >= 1);
auto merger = [](ExprPtr left, ExprPtr right) {
using OpType = BoolBinaryExpr::OpType;
auto res = std::make_unique<BoolBinaryExpr>();
using OpType = LogicalBinaryExpr::OpType;
auto res = std::make_unique<LogicalBinaryExpr>();
res->op_type_ = OpType::LogicalAnd;
res->left_ = std::move(left);
res->right_ = std::move(right);
@ -461,8 +461,8 @@ Parser::ParseMustNotNode(const Json& body) {
};
auto subtree = ConstructTree(merger, std::move(item_list));
using OpType = BoolUnaryExpr::OpType;
auto res = std::make_unique<BoolUnaryExpr>();
using OpType = LogicalUnaryExpr::OpType;
auto res = std::make_unique<LogicalUnaryExpr>();
res->op_type_ = OpType::LogicalNot;
res->child_ = std::move(subtree);

View File

@ -216,10 +216,10 @@ ProtoParser::ParseTermExpr(const proto::plan::TermExpr& expr_pb) {
ExprPtr
ProtoParser::ParseUnaryExpr(const proto::plan::UnaryExpr& expr_pb) {
auto op = static_cast<BoolUnaryExpr::OpType>(expr_pb.op());
Assert(op == BoolUnaryExpr::OpType::LogicalNot);
auto op = static_cast<LogicalUnaryExpr::OpType>(expr_pb.op());
Assert(op == LogicalUnaryExpr::OpType::LogicalNot);
auto expr = this->ParseExpr(expr_pb.child());
auto result = std::make_unique<BoolUnaryExpr>();
auto result = std::make_unique<LogicalUnaryExpr>();
result->child_ = std::move(expr);
result->op_type_ = op;
return result;
@ -227,10 +227,10 @@ ProtoParser::ParseUnaryExpr(const proto::plan::UnaryExpr& expr_pb) {
ExprPtr
ProtoParser::ParseBinaryExpr(const proto::plan::BinaryExpr& expr_pb) {
auto op = static_cast<BoolBinaryExpr::OpType>(expr_pb.op());
auto op = static_cast<LogicalBinaryExpr::OpType>(expr_pb.op());
auto left_expr = this->ParseExpr(expr_pb.left());
auto right_expr = this->ParseExpr(expr_pb.right());
auto result = std::make_unique<BoolBinaryExpr>();
auto result = std::make_unique<LogicalBinaryExpr>();
result->op_type_ = op;
result->left_ = std::move(left_expr);
result->right_ = std::move(right_expr);

View File

@ -24,10 +24,10 @@ namespace milvus::query {
class ExecExprVisitor : public ExprVisitor {
public:
void
visit(BoolUnaryExpr& expr) override;
visit(LogicalUnaryExpr& expr) override;
void
visit(BoolBinaryExpr& expr) override;
visit(LogicalBinaryExpr& expr) override;
void
visit(TermExpr& expr) override;

View File

@ -16,12 +16,12 @@
namespace milvus::query {
void
BoolUnaryExpr::accept(ExprVisitor& visitor) {
LogicalUnaryExpr::accept(ExprVisitor& visitor) {
visitor.visit(*this);
}
void
BoolBinaryExpr::accept(ExprVisitor& visitor) {
LogicalBinaryExpr::accept(ExprVisitor& visitor) {
visitor.visit(*this);
}

View File

@ -20,10 +20,10 @@ class ExprVisitor {
public:
virtual void
visit(BoolUnaryExpr&) = 0;
visit(LogicalUnaryExpr&) = 0;
virtual void
visit(BoolBinaryExpr&) = 0;
visit(LogicalBinaryExpr&) = 0;
virtual void
visit(TermExpr&) = 0;

View File

@ -19,10 +19,10 @@ namespace milvus::query {
class ExtractInfoExprVisitor : public ExprVisitor {
public:
void
visit(BoolUnaryExpr& expr) override;
visit(LogicalUnaryExpr& expr) override;
void
visit(BoolBinaryExpr& expr) override;
visit(LogicalBinaryExpr& expr) override;
void
visit(TermExpr& expr) override;

View File

@ -22,10 +22,10 @@ namespace milvus::query {
class ShowExprVisitor : public ExprVisitor {
public:
void
visit(BoolUnaryExpr& expr) override;
visit(LogicalUnaryExpr& expr) override;
void
visit(BoolBinaryExpr& expr) override;
visit(LogicalBinaryExpr& expr) override;
void
visit(TermExpr& expr) override;
@ -48,14 +48,14 @@ class ShowExprVisitor : public ExprVisitor {
}
Json
combine(Json&& extra, UnaryExpr& expr) {
combine(Json&& extra, UnaryExprBase& expr) {
auto result = std::move(extra);
result["child"] = call_child(*expr.child_);
return result;
}
Json
combine(Json&& extra, BinaryExpr& expr) {
combine(Json&& extra, BinaryExprBase& expr) {
auto result = std::move(extra);
result["left_child"] = call_child(*expr.left_);
result["right_child"] = call_child(*expr.right_);

View File

@ -24,10 +24,10 @@ namespace milvus::query {
class VerifyExprVisitor : public ExprVisitor {
public:
void
visit(BoolUnaryExpr& expr) override;
visit(LogicalUnaryExpr& expr) override;
void
visit(BoolBinaryExpr& expr) override;
visit(LogicalBinaryExpr& expr) override;
void
visit(TermExpr& expr) override;

View File

@ -60,8 +60,8 @@ class ExecExprVisitor : ExprVisitor {
#endif
void
ExecExprVisitor::visit(BoolUnaryExpr& expr) {
using OpType = BoolUnaryExpr::OpType;
ExecExprVisitor::visit(LogicalUnaryExpr& expr) {
using OpType = LogicalUnaryExpr::OpType;
auto vec = call_child(*expr.child_);
RetType ret;
for (int chunk_id = 0; chunk_id < vec.size(); ++chunk_id) {
@ -81,8 +81,8 @@ ExecExprVisitor::visit(BoolUnaryExpr& expr) {
}
void
ExecExprVisitor::visit(BoolBinaryExpr& expr) {
using OpType = BoolBinaryExpr::OpType;
ExecExprVisitor::visit(LogicalBinaryExpr& expr) {
using OpType = LogicalBinaryExpr::OpType;
RetType ret;
auto left = call_child(*expr.left_);
auto right = call_child(*expr.right_);

View File

@ -29,12 +29,12 @@ class ExtractInfoExprVisitor : ExprVisitor {
#endif
void
ExtractInfoExprVisitor::visit(BoolUnaryExpr& expr) {
ExtractInfoExprVisitor::visit(LogicalUnaryExpr& expr) {
expr.child_->accept(*this);
}
void
ExtractInfoExprVisitor::visit(BoolBinaryExpr& expr) {
ExtractInfoExprVisitor::visit(LogicalBinaryExpr& expr) {
expr.left_->accept(*this);
expr.right_->accept(*this);
}

View File

@ -39,14 +39,14 @@ class ShowExprNodeVisitor : ExprVisitor {
}
Json
combine(Json&& extra, UnaryExpr& expr) {
combine(Json&& extra, UnaryExprBase& expr) {
auto result = std::move(extra);
result["child"] = call_child(*expr.child_);
return result;
}
Json
combine(Json&& extra, BinaryExpr& expr) {
combine(Json&& extra, BinaryExprBase& expr) {
auto result = std::move(extra);
result["left_child"] = call_child(*expr.left_);
result["right_child"] = call_child(*expr.right_);
@ -60,9 +60,9 @@ class ShowExprNodeVisitor : ExprVisitor {
#endif
void
ShowExprVisitor::visit(BoolUnaryExpr& expr) {
ShowExprVisitor::visit(LogicalUnaryExpr& expr) {
Assert(!ret_.has_value());
using OpType = BoolUnaryExpr::OpType;
using OpType = LogicalUnaryExpr::OpType;
// TODO: use magic_enum if available
Assert(expr.op_type_ == OpType::LogicalNot);
@ -76,9 +76,9 @@ ShowExprVisitor::visit(BoolUnaryExpr& expr) {
}
void
ShowExprVisitor::visit(BoolBinaryExpr& expr) {
ShowExprVisitor::visit(LogicalBinaryExpr& expr) {
Assert(!ret_.has_value());
using OpType = BoolBinaryExpr::OpType;
using OpType = LogicalBinaryExpr::OpType;
// TODO: use magic_enum if available
auto op_name = [](OpType op) {

View File

@ -13,12 +13,12 @@
namespace milvus::query {
void
VerifyExprVisitor::visit(BoolUnaryExpr& expr) {
VerifyExprVisitor::visit(LogicalUnaryExpr& expr) {
// TODO
}
void
VerifyExprVisitor::visit(BoolBinaryExpr& expr) {
VerifyExprVisitor::visit(LogicalBinaryExpr& expr) {
// TODO
}