2222#include " iceberg/exception.h"
2323#include " iceberg/transform.h"
2424#include " iceberg/type.h"
25+ #include " iceberg/util/macros.h"
2526
2627namespace iceberg {
2728
@@ -42,71 +43,57 @@ std::shared_ptr<Expression> Expressions::Not(std::shared_ptr<Expression> child)
4243 }
4344
4445 auto result = ::iceberg::Not::Make (std::move (child));
45- if (!result) {
46- throw ExpressionError (result.error ().message );
47- }
48- return {std::move (result.value ())};
46+ ICEBERG_ASSIGN_OR_THROW (auto not_expr, std::move (result));
47+ return {std::move (not_expr)};
4948}
5049
5150// Transform functions
5251
5352std::shared_ptr<UnboundTransform> Expressions::Bucket (std::string name,
5453 int32_t num_buckets) {
55- auto result =
56- UnboundTransform::Make (Ref (std::move (name)), Transform::Bucket (num_buckets));
57- if (!result) {
58- throw ExpressionError (result.error ().message );
59- }
60- return {std::move (result.value ())};
54+ ICEBERG_ASSIGN_OR_THROW (
55+ auto transform,
56+ UnboundTransform::Make (Ref (std::move (name)), Transform::Bucket (num_buckets)));
57+ return {std::move (transform)};
6158}
6259
6360std::shared_ptr<UnboundTransform> Expressions::Year (std::string name) {
64- auto result = UnboundTransform::Make (Ref (std::move (name)), Transform::Year ());
65- if (!result) {
66- throw ExpressionError (result.error ().message );
67- }
68- return {std::move (result.value ())};
61+ ICEBERG_ASSIGN_OR_THROW (
62+ auto transform, UnboundTransform::Make (Ref (std::move (name)), Transform::Year ()));
63+ return {std::move (transform)};
6964}
7065
7166std::shared_ptr<UnboundTransform> Expressions::Month (std::string name) {
72- auto result = UnboundTransform::Make (Ref (std::move (name)), Transform::Month ());
73- if (!result) {
74- throw ExpressionError (result.error ().message );
75- }
76- return {std::move (result.value ())};
67+ ICEBERG_ASSIGN_OR_THROW (
68+ auto transform, UnboundTransform::Make (Ref (std::move (name)), Transform::Month ()));
69+ return {std::move (transform)};
7770}
7871
7972std::shared_ptr<UnboundTransform> Expressions::Day (std::string name) {
80- auto result = UnboundTransform::Make (Ref (std::move (name)), Transform::Day ());
81- if (!result) {
82- throw ExpressionError (result.error ().message );
83- }
84- return {std::move (result.value ())};
73+ ICEBERG_ASSIGN_OR_THROW (auto transform,
74+ UnboundTransform::Make (Ref (std::move (name)), Transform::Day ()));
75+ return {std::move (transform)};
8576}
8677
8778std::shared_ptr<UnboundTransform> Expressions::Hour (std::string name) {
88- auto result = UnboundTransform::Make (Ref (std::move (name)), Transform::Hour ());
89- if (!result) {
90- throw ExpressionError (result.error ().message );
91- }
92- return {std::move (result.value ())};
79+ ICEBERG_ASSIGN_OR_THROW (
80+ auto transform, UnboundTransform::Make (Ref (std::move (name)), Transform::Hour ()));
81+ return {std::move (transform)};
9382}
9483
9584std::shared_ptr<UnboundTransform> Expressions::Truncate (std::string name, int32_t width) {
96- auto result = UnboundTransform::Make (Ref (std::move (name)), Transform::Truncate (width));
97- if (!result) {
98- throw ExpressionError (result.error ().message );
99- }
100- return {std::move (result.value ())};
85+ ICEBERG_ASSIGN_OR_THROW (
86+ auto transform,
87+ UnboundTransform::Make (Ref (std::move (name)), Transform::Truncate (width)));
88+ return {std::move (transform)};
10189}
10290
10391std::shared_ptr<UnboundTransform> Expressions::Transform (
10492 std::string name, std::shared_ptr<::iceberg::Transform> transform) {
105- auto result = UnboundTransform::Make (Ref (std::move (name)), std::move (transform));
106- if (!result) {
107- throw ExpressionError (result.error ().message );
108- }
109- return {std::move (result.value ())};
93+ ICEBERG_ASSIGN_OR_THROW (
94+ auto unbound_transform,
95+ UnboundTransform::Make (Ref (std::move (name)), std::move (transform)));
96+ return {std::move (unbound_transform)};
11097}
11198
11299// Template implementations for unary predicates
@@ -358,11 +345,8 @@ std::shared_ptr<False> Expressions::AlwaysFalse() { return False::Instance(); }
358345// Utilities
359346
360347std::shared_ptr<NamedReference> Expressions::Ref (std::string name) {
361- auto result = NamedReference::Make (std::move (name));
362- if (!result) {
363- throw ExpressionError (result.error ().message );
364- }
365- return {std::move (result.value ())};
348+ ICEBERG_ASSIGN_OR_THROW (auto ref, NamedReference::Make (std::move (name)));
349+ return {std::move (ref)};
366350}
367351
368352Literal Expressions::Lit (Literal::Value value, std::shared_ptr<PrimitiveType> type) {
0 commit comments