Apache GraphAr C++ Library
The C++ Library for Apache GraphAr
expression.cc
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #include "graphar/expression.h"
21 #include "graphar/result.h"
22 
23 namespace graphar {
24 
25 Result<ArrowExpression> ExpressionProperty::Evaluate() {
26  return arrow::compute::field_ref(property_.name);
27 }
28 Result<ArrowExpression> ExpressionNot::Evaluate() {
29  GAR_ASSIGN_OR_RAISE(auto expr, expr_->Evaluate());
30  return arrow::compute::not_(expr);
31 }
32 
33 Result<ArrowExpression> ExpressionEqual::Evaluate() {
34  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
35  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
36  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
37  return arrow::compute::equal(lexpr, rexpr);
38 }
39 
40 Result<ArrowExpression> ExpressionNotEqual::Evaluate() {
41  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
42  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
43  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
44  return arrow::compute::not_equal(lexpr, rexpr);
45 }
46 
47 Result<ArrowExpression> ExpressionGreaterThan::Evaluate() {
48  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
49  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
50  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
51  return arrow::compute::greater(lexpr, rexpr);
52 }
53 
54 Result<ArrowExpression> ExpressionGreaterEqual::Evaluate() {
55  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
56  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
57  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
58  return arrow::compute::greater_equal(lexpr, rexpr);
59 }
60 
61 Result<ArrowExpression> ExpressionLessThan::Evaluate() {
62  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
63  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
64  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
65  return arrow::compute::less(lexpr, rexpr);
66 }
67 
68 Result<ArrowExpression> ExpressionLessEqual::Evaluate() {
69  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
70  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
71  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
72  return arrow::compute::less_equal(lexpr, rexpr);
73 }
74 
75 Result<ArrowExpression> ExpressionAnd::Evaluate() {
76  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
77  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
78  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
79  return arrow::compute::and_(lexpr, rexpr);
80 }
81 
82 Result<ArrowExpression> ExpressionOr::Evaluate() {
83  GAR_RETURN_NOT_OK(CheckNullArgs(lhs_, rhs_));
84  GAR_ASSIGN_OR_RAISE(auto lexpr, lhs_->Evaluate());
85  GAR_ASSIGN_OR_RAISE(auto rexpr, rhs_->Evaluate());
86  return arrow::compute::or_(lexpr, rexpr);
87 }
88 
89 } // namespace graphar
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:75
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:33
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:54
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:47
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:68
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:61
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:40
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:28
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:82
Result< ArrowExpression > Evaluate() override
Evaluate Expression as arrow::compute::Expression e.g. new ExpressionEqual(new ExpressionProperty("a"...
Definition: expression.cc:25