@@ -434,71 +434,67 @@ struct UserDefinedLiteralToArrow {
434
434
}
435
435
Status Visit (const IntegerType& type) {
436
436
google::protobuf::UInt64Value value;
437
- if (!user_defined_->value ().UnpackTo (&value)) {
438
- return Status::Invalid (
439
- " Failed to unpack user defined integer literal to UInt64Value" );
437
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
438
+ return FailedToUnpack (" integer" , " UInt64Value" );
440
439
}
441
440
ARROW_ASSIGN_OR_RAISE (scalar_, MakeScalar (type.GetSharedPtr (), value.value ()));
442
441
return Status::OK ();
443
442
}
444
443
Status Visit (const Time32Type& type) {
445
444
google::protobuf::Int32Value value;
446
- if (!user_defined_->value ().UnpackTo (&value)) {
447
- return Status::Invalid (
448
- " Failed to unpack user defined time32 literal to Int32Value" );
445
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
446
+ return FailedToUnpack (" time32" , " Int32Value" );
449
447
}
450
448
ARROW_ASSIGN_OR_RAISE (scalar_, MakeScalar (type.GetSharedPtr (), value.value ()));
451
449
return Status::OK ();
452
450
}
453
451
Status Visit (const Time64Type& type) {
454
452
google::protobuf::Int64Value value;
455
- if (!user_defined_->value ().UnpackTo (&value)) {
456
- return Status::Invalid (
457
- " Failed to unpack user defined time64 literal to Int64Value" );
453
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
454
+ return FailedToUnpack (" time64" , " Int64Value" );
458
455
}
459
456
ARROW_ASSIGN_OR_RAISE (scalar_, MakeScalar (type.GetSharedPtr (), value.value ()));
460
457
return Status::OK ();
461
458
}
462
459
Status Visit (const Date64Type& type) {
463
460
google::protobuf::Int64Value value;
464
- if (!user_defined_->value ().UnpackTo (&value)) {
465
- return Status::Invalid (
466
- " Failed to unpack user defined date64 literal to Int64Value" );
461
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
462
+ return FailedToUnpack (" date64" , " Int64Value" );
467
463
}
468
464
ARROW_ASSIGN_OR_RAISE (scalar_, MakeScalar (type.GetSharedPtr (), value.value ()));
469
465
return Status::OK ();
470
466
}
471
467
Status Visit (const HalfFloatType& type) {
472
468
google::protobuf::UInt32Value value;
473
- if (!user_defined_->value ().UnpackTo (&value)) {
474
- return Status::Invalid (
475
- " Failed to unpack user defined half_float literal to UInt32Value" );
469
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
470
+ return FailedToUnpack (" half_float" , " UInt32Value" );
476
471
}
477
472
uint16_t half_float_value = value.value ();
478
473
ARROW_ASSIGN_OR_RAISE (scalar_, MakeScalar (type.GetSharedPtr (), half_float_value));
479
474
return Status::OK ();
480
475
}
481
476
Status Visit (const LargeStringType& type) {
482
477
google::protobuf::StringValue value;
483
- if (!user_defined_->value ().UnpackTo (&value)) {
484
- return Status::Invalid (
485
- " Failed to unpack user defined large_string literal to StringValue" );
478
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
479
+ return FailedToUnpack (" large_string" , " StringValue" );
486
480
}
487
481
ARROW_ASSIGN_OR_RAISE (scalar_,
488
482
MakeScalar (type.GetSharedPtr (), std::string (value.value ())));
489
483
return Status::OK ();
490
484
}
491
485
Status Visit (const LargeBinaryType& type) {
492
486
google::protobuf::BytesValue value;
493
- if (!user_defined_->value ().UnpackTo (&value)) {
494
- return Status::Invalid (
495
- " Failed to unpack user defined large_binary literal to BytesValue" );
487
+ if (ARROW_PREDICT_FALSE (!user_defined_->value ().UnpackTo (&value))) {
488
+ return FailedToUnpack (" large_binary" , " BytesValue" );
496
489
}
497
490
ARROW_ASSIGN_OR_RAISE (scalar_,
498
491
MakeScalar (type.GetSharedPtr (), std::string (value.value ())));
499
492
return Status::OK ();
500
493
}
501
494
Status operator ()(const DataType& type) { return VisitTypeInline (type, this ); }
495
+ Status FailedToUnpack (const char * from, const char * to) {
496
+ return Status::Invalid (" Failed to unpack user defined " , from, " literal to " , to);
497
+ }
502
498
503
499
std::shared_ptr<Scalar> scalar_;
504
500
const substrait::Expression::Literal::UserDefined* user_defined_;
0 commit comments