(&self, arg_type: &DataType)
| 591 | |
| 592 | impl ConversionType { |
| 593 | pub fn validate(&self, arg_type: &DataType) -> Result<()> { |
| 594 | match self { |
| 595 | ConversionType::BooleanLower | ConversionType::BooleanUpper |
| 596 | if *arg_type != DataType::Boolean => |
| 597 | { |
| 598 | return exec_err!( |
| 599 | "Invalid argument type for boolean conversion: {:?}", |
| 600 | arg_type |
| 601 | ); |
| 602 | } |
| 603 | ConversionType::CharLower | ConversionType::CharUpper |
| 604 | if !matches!( |
| 605 | arg_type, |
| 606 | DataType::Int8 |
| 607 | | DataType::UInt8 |
| 608 | | DataType::Int16 |
| 609 | | DataType::UInt16 |
| 610 | | DataType::Int32 |
| 611 | | DataType::UInt32 |
| 612 | | DataType::Int64 |
| 613 | | DataType::UInt64 |
| 614 | ) => |
| 615 | { |
| 616 | return exec_err!( |
| 617 | "Invalid argument type for char conversion: {:?}", |
| 618 | arg_type |
| 619 | ); |
| 620 | } |
| 621 | ConversionType::DecInt |
| 622 | | ConversionType::OctInt |
| 623 | | ConversionType::HexIntLower |
| 624 | | ConversionType::HexIntUpper |
| 625 | if !arg_type.is_integer() => |
| 626 | { |
| 627 | return exec_err!( |
| 628 | "Invalid argument type for integer conversion: {:?}", |
| 629 | arg_type |
| 630 | ); |
| 631 | } |
| 632 | ConversionType::SciFloatLower |
| 633 | | ConversionType::SciFloatUpper |
| 634 | | ConversionType::DecFloatLower |
| 635 | | ConversionType::CompactFloatLower |
| 636 | | ConversionType::CompactFloatUpper |
| 637 | | ConversionType::HexFloatLower |
| 638 | | ConversionType::HexFloatUpper |
| 639 | if !arg_type.is_numeric() => |
| 640 | { |
| 641 | return exec_err!( |
| 642 | "Invalid argument type for float conversion: {:?}", |
| 643 | arg_type |
| 644 | ); |
| 645 | } |
| 646 | ConversionType::TimeLower(_) | ConversionType::TimeUpper(_) |
| 647 | if !arg_type.is_temporal() => |
| 648 | { |
| 649 | return exec_err!( |
| 650 | "Invalid argument type for time conversion: {:?}", |
no test coverage detected