Skip to content

Commit 7bdb0f0

Browse files
committed
simplify statements
1 parent 2bb0deb commit 7bdb0f0

File tree

1 file changed

+25
-49
lines changed

1 file changed

+25
-49
lines changed

src/iceberg/expression/predicate.cc

Lines changed: 25 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,7 @@ std::string UnboundPredicate<B>::ToString() const {
156156
template <typename B>
157157
Result<std::shared_ptr<Expression>> UnboundPredicate<B>::Negate() const {
158158
ICEBERG_ASSIGN_OR_RAISE(auto negated_op, ::iceberg::Negate(BASE::op()));
159-
ICEBERG_ASSIGN_OR_RAISE(auto negated_pred,
160-
UnboundPredicate::Make(negated_op, BASE::term(), values_));
161-
return std::shared_ptr<Expression>(std::move(negated_pred));
159+
return UnboundPredicate::Make(negated_op, BASE::term(), values_);
162160
}
163161

164162
template <typename B>
@@ -210,35 +208,27 @@ template <typename B>
210208
Result<std::shared_ptr<Expression>> UnboundPredicate<B>::BindUnaryOperation(
211209
std::shared_ptr<B> bound_term) const {
212210
switch (BASE::op()) {
213-
case Expression::Operation::kIsNull: {
211+
case Expression::Operation::kIsNull:
214212
if (!bound_term->MayProduceNull()) {
215213
return Expressions::AlwaysFalse();
216214
}
217215
// TODO(gangwu): deal with UnknownType
218-
ICEBERG_ASSIGN_OR_RAISE(auto pred,
219-
BoundUnaryPredicate::Make(Expression::Operation::kIsNull,
220-
std::move(bound_term)));
221-
return std::shared_ptr<Expression>(std::move(pred));
222-
}
223-
case Expression::Operation::kNotNull: {
216+
return BoundUnaryPredicate::Make(Expression::Operation::kIsNull,
217+
std::move(bound_term));
218+
case Expression::Operation::kNotNull:
224219
if (!bound_term->MayProduceNull()) {
225220
return Expressions::AlwaysTrue();
226221
}
227-
ICEBERG_ASSIGN_OR_RAISE(auto pred,
228-
BoundUnaryPredicate::Make(Expression::Operation::kNotNull,
229-
std::move(bound_term)));
230-
return std::shared_ptr<Expression>(std::move(pred));
231-
}
222+
return BoundUnaryPredicate::Make(Expression::Operation::kNotNull,
223+
std::move(bound_term));
232224
case Expression::Operation::kIsNan:
233-
case Expression::Operation::kNotNan: {
225+
case Expression::Operation::kNotNan:
234226
if (!IsFloatingType(bound_term->type()->type_id())) {
235227
return InvalidExpression("{} cannot be used with a non-floating-point column",
236228
BASE::op());
237229
}
238-
ICEBERG_ASSIGN_OR_RAISE(
239-
auto pred, BoundUnaryPredicate::Make(BASE::op(), std::move(bound_term)));
240-
return std::shared_ptr<Expression>(std::move(pred));
241-
}
230+
return BoundUnaryPredicate::Make(BASE::op(), std::move(bound_term));
231+
242232
default:
243233
return InvalidExpression("Operation must be IS_NULL, NOT_NULL, IS_NAN, or NOT_NAN");
244234
}
@@ -297,10 +287,8 @@ Result<std::shared_ptr<Expression>> UnboundPredicate<B>::BindLiteralOperation(
297287
}
298288

299289
// TODO(gangwu): translate truncate(col) == value to startsWith(value)
300-
ICEBERG_ASSIGN_OR_RAISE(
301-
auto pred,
302-
BoundLiteralPredicate::Make(BASE::op(), std::move(bound_term), std::move(literal)));
303-
return std::shared_ptr<Expression>(std::move(pred));
290+
return BoundLiteralPredicate::Make(BASE::op(), std::move(bound_term),
291+
std::move(literal));
304292
}
305293

306294
template <typename B>
@@ -337,28 +325,22 @@ Result<std::shared_ptr<Expression>> UnboundPredicate<B>::BindInOperation(
337325
if (converted_literals.size() == 1) {
338326
const auto& single_literal = converted_literals[0];
339327
switch (BASE::op()) {
340-
case Expression::Operation::kIn: {
341-
ICEBERG_ASSIGN_OR_RAISE(auto pred, BoundLiteralPredicate::Make(
342-
Expression::Operation::kEq,
343-
std::move(bound_term), single_literal));
344-
return std::shared_ptr<Expression>(std::move(pred));
345-
}
346-
case Expression::Operation::kNotIn: {
347-
ICEBERG_ASSIGN_OR_RAISE(auto pred, BoundLiteralPredicate::Make(
348-
Expression::Operation::kNotEq,
349-
std::move(bound_term), single_literal));
350-
return std::shared_ptr<Expression>(std::move(pred));
351-
}
328+
case Expression::Operation::kIn:
329+
return BoundLiteralPredicate::Make(Expression::Operation::kEq,
330+
std::move(bound_term), single_literal);
331+
332+
case Expression::Operation::kNotIn:
333+
return BoundLiteralPredicate::Make(Expression::Operation::kNotEq,
334+
std::move(bound_term), single_literal);
335+
352336
default:
353337
return InvalidExpression("Operation must be IN or NOT_IN");
354338
}
355339
}
356340

357341
// Multiple literals - create a set predicate
358-
ICEBERG_ASSIGN_OR_RAISE(
359-
auto pred, BoundSetPredicate::Make(BASE::op(), std::move(bound_term),
360-
std::span<const Literal>(converted_literals)));
361-
return std::shared_ptr<Expression>(std::move(pred));
342+
return BoundSetPredicate::Make(BASE::op(), std::move(bound_term),
343+
std::span<const Literal>(converted_literals));
362344
}
363345

364346
// BoundPredicate implementation
@@ -410,9 +392,7 @@ Result<bool> BoundUnaryPredicate::Test(const Literal& literal) const {
410392

411393
Result<std::shared_ptr<Expression>> BoundUnaryPredicate::Negate() const {
412394
ICEBERG_ASSIGN_OR_RAISE(auto negated_op, ::iceberg::Negate(op()));
413-
ICEBERG_ASSIGN_OR_RAISE(auto negated_pred,
414-
BoundUnaryPredicate::Make(negated_op, term_));
415-
return std::shared_ptr<Expression>(std::move(negated_pred));
395+
return BoundUnaryPredicate::Make(negated_op, term_);
416396
}
417397

418398
bool BoundUnaryPredicate::Equals(const Expression& other) const {
@@ -487,9 +467,7 @@ Result<bool> BoundLiteralPredicate::Test(const Literal& value) const {
487467

488468
Result<std::shared_ptr<Expression>> BoundLiteralPredicate::Negate() const {
489469
ICEBERG_ASSIGN_OR_RAISE(auto negated_op, ::iceberg::Negate(op()));
490-
ICEBERG_ASSIGN_OR_RAISE(auto negated_pred,
491-
BoundLiteralPredicate::Make(negated_op, term_, literal_));
492-
return std::shared_ptr<Expression>(std::move(negated_pred));
470+
return BoundLiteralPredicate::Make(negated_op, term_, literal_);
493471
}
494472

495473
bool BoundLiteralPredicate::Equals(const Expression& other) const {
@@ -627,9 +605,7 @@ Result<bool> BoundSetPredicate::Test(const Literal& value) const {
627605

628606
Result<std::shared_ptr<Expression>> BoundSetPredicate::Negate() const {
629607
ICEBERG_ASSIGN_OR_RAISE(auto negated_op, ::iceberg::Negate(op()));
630-
ICEBERG_ASSIGN_OR_RAISE(auto negated_pred,
631-
BoundSetPredicate::Make(negated_op, term_, value_set_));
632-
return std::shared_ptr<Expression>(std::move(negated_pred));
608+
return BoundSetPredicate::Make(negated_op, term_, value_set_);
633609
}
634610

635611
bool BoundSetPredicate::Equals(const Expression& other) const {

0 commit comments

Comments
 (0)