Arroyo currently supports a limited set of primitive types, shown in the table below. Because every Arroyo pipeline is a compiled Rust crate, each type has a corresponding Rust type.

Arroyo leverages Apache DataFusion for SQL support. DataFusion is in turn a part of the Apache Arrow project, a cross-language data format for columnar in-memory computation.

Depending on which part of the system you’re working with one or more of these will be relevant. For basic SQL users you should only need to deal with the SQL types.

These types can also be inserted as literals in sql. For types like INT vs BIGINT it will infer the type based on context.

Arroyo typeRust TypeArrow DataTypeSql TypesExample Literals
BooleanboolBooleanBOOLEANTRUE, FALSE
Int32i32Int32INT, INTEGER0, 1, -2
Int64i64Int64BIGINT0, 1, 2
Uint32u32UInt32INT UNSIGNED, INTEGER UNSIGNED0, 1, -2
Uint64u64UInt64BIGINT UNSIGNED0, 1, 2
Float32f32Float32FLOAT, REAL0.0, -2.4, 1E-3
Float64f64Float64DOUBLE0.0, -2.4, 1E-35
StringStringUtf8VARCHAR, CHAR, TEXT, STRING"hello", "world"
TimestampSystemTimeTimestampTIMESTAMP'2020-01-01' '2023-05-17T22:16:00.648662+00:00'
BytesVec<u8>BinaryBYTEAUnsupported