Trait arrow_array::types::DecimalType

source ·
pub trait DecimalType:
    'static
    + Send
    + Sync
    + ArrowPrimitiveType
    + DecimalTypeSealed {
    const BYTE_LENGTH: usize;
    const MAX_PRECISION: u8;
    const MAX_SCALE: i8;
    const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType;
    const DEFAULT_TYPE: DataType;
    const PREFIX: &'static str;

    // Required methods
    fn format_decimal(value: Self::Native, precision: u8, scale: i8) -> String;
    fn validate_decimal_precision(
        value: Self::Native,
        precision: u8,
    ) -> Result<(), ArrowError>;
    fn is_valid_decimal_precision(value: Self::Native, precision: u8) -> bool;
}
Expand description

A trait over the decimal types, used by PrimitiveArray to provide a generic implementation across the various decimal types

Implemented by Decimal128Type and Decimal256Type for Decimal128Array and Decimal256Array respectively

Required Associated Constants§

source

const BYTE_LENGTH: usize

Width of the type

source

const MAX_PRECISION: u8

Maximum number of significant digits

source

const MAX_SCALE: i8

Maximum no of digits after the decimal point (note the scale can be negative)

source

const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType

fn to create its DataType

source

const DEFAULT_TYPE: DataType

Default values for DataType

source

const PREFIX: &'static str

“Decimal128” or “Decimal256”, for use in error messages

Required Methods§

source

fn format_decimal(value: Self::Native, precision: u8, scale: i8) -> String

Formats the decimal value with the provided precision and scale

source

fn validate_decimal_precision( value: Self::Native, precision: u8, ) -> Result<(), ArrowError>

Validates that value contains no more than precision decimal digits

source

fn is_valid_decimal_precision(value: Self::Native, precision: u8) -> bool

Determines whether value contains no more than precision decimal digits

Object Safety§

This trait is not object safe.

Implementors§

source§

impl DecimalType for Decimal128Type

source§

const BYTE_LENGTH: usize = 16usize

source§

const MAX_PRECISION: u8 = 38u8

source§

const MAX_SCALE: i8 = 38i8

source§

const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType = {arrow_schema::DataType::Decimal128 as fn(u8, i8) -> arrow_schema::DataType}

source§

const DEFAULT_TYPE: DataType = _

source§

const PREFIX: &'static str = "Decimal128"

source§

impl DecimalType for Decimal256Type

source§

const BYTE_LENGTH: usize = 32usize

source§

const MAX_PRECISION: u8 = 76u8

source§

const MAX_SCALE: i8 = 76i8

source§

const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType = {arrow_schema::DataType::Decimal256 as fn(u8, i8) -> arrow_schema::DataType}

source§

const DEFAULT_TYPE: DataType = _

source§

const PREFIX: &'static str = "Decimal256"