@@ -156,9 +156,7 @@ std::string UnboundPredicate<B>::ToString() const {
156156template <typename B>
157157Result<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
164162template <typename B>
@@ -210,35 +208,27 @@ template <typename B>
210208Result<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
306294template <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
411393Result<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
418398bool BoundUnaryPredicate::Equals (const Expression& other) const {
@@ -487,9 +467,7 @@ Result<bool> BoundLiteralPredicate::Test(const Literal& value) const {
487467
488468Result<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
495473bool BoundLiteralPredicate::Equals (const Expression& other) const {
@@ -627,9 +605,7 @@ Result<bool> BoundSetPredicate::Test(const Literal& value) const {
627605
628606Result<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
635611bool BoundSetPredicate::Equals (const Expression& other) const {
0 commit comments