@@ -372,16 +372,44 @@ Result<std::string> Transform::ToHumanString(const Literal& value) {
372372 return " null" ;
373373 }
374374
375+ if (value.IsAboveMax () || value.IsBelowMin ()) [[unlikely]] {
376+ return NotSupported (" Cannot transfrom human string for value: {}" , value.ToString ());
377+ }
378+
375379 switch (transform_type_) {
376- case TransformType::kYear :
380+ case TransformType::kYear : {
381+ if (!std::holds_alternative<int32_t >(value.value ())) [[unlikely]] {
382+ return NotSupported (" Transfrom human year from type {} is not supported" ,
383+ value.type ()->ToString ());
384+ }
377385 return TransformUtil::HumanYear (std::get<int32_t >(value.value ()));
378- case TransformType::kMonth :
386+ }
387+ case TransformType::kMonth : {
388+ if (!std::holds_alternative<int32_t >(value.value ())) [[unlikely]] {
389+ return NotSupported (" Transfrom human month from type {} is not supported" ,
390+ value.type ()->ToString ());
391+ }
379392 return TransformUtil::HumanMonth (std::get<int32_t >(value.value ()));
380- case TransformType::kDay :
393+ }
394+ case TransformType::kDay : {
395+ if (!std::holds_alternative<int32_t >(value.value ())) [[unlikely]] {
396+ return NotSupported (" Transfrom human day from type {} is not supported" ,
397+ value.type ()->ToString ());
398+ }
381399 return TransformUtil::HumanDay (std::get<int32_t >(value.value ()));
382- case TransformType::kHour :
400+ }
401+ case TransformType::kHour : {
402+ if (!std::holds_alternative<int32_t >(value.value ())) [[unlikely]] {
403+ return NotSupported (" Transfrom human hour from type {} is not supported" ,
404+ value.type ()->ToString ());
405+ }
383406 return TransformUtil::HumanHour (std::get<int32_t >(value.value ()));
384- default : {
407+ }
408+ case TransformType::kIdentity :
409+ case TransformType::kBucket :
410+ case TransformType::kTruncate :
411+ case TransformType::kUnknown :
412+ case TransformType::kVoid : {
385413 switch (value.type ()->type_id ()) {
386414 case TypeId::kDate :
387415 return TransformUtil::HumanDay (std::get<int32_t >(value.value ()));
@@ -409,6 +437,7 @@ Result<std::string> Transform::ToHumanString(const Literal& value) {
409437 }
410438 }
411439 }
440+ std::unreachable ();
412441}
413442
414443bool TransformFunction::Equals (const TransformFunction& other) const {
0 commit comments