Data Types

NebulaStream provides a simple type-system to specify the data types of schema attributes. In general, we differentiate between primitive types, e.g., Boolean, Integer, and collection. During query optimization, NebulaStream translates the internal logical types to specific physical types.

Boolean

The boolean type can have two states: true and false.

Intern TypePhysical TypeC++ ClientJava ClientSQL
Booleanboolboolboolboolean

Chars

The char type represents a single character.

Intern TypePhysical TypeC++JavaSQL
CharcharcharcharChar(1)

Integer Types

This type stores whole numbers, that is, numbers without fractional components, of various ranges. The internal Integer type is parameterised in the following way: Integer(bit_size,lower_bound, upper_bound). This allows the NebulaStream to choose an appropriate physical type.

Intern TypePhysical TypeC++JavaSQL
Integer(64)int_64int_64longBIGINT
Integer(64,0)uint_64uint_64XX
Integer(32)int_32int_32intINT
Integer(32,0)u_int32uint_32XX
Integer(16)int_16int_16shortSMALLINT
Integer(16,0)uint_16uint_8XX
Integer(8)int_8int_8byteTINYINT
Integer(8,0)uint_8uint_8XX

Floating-Point Types

The data type enables the representation of variable-precision numeric types. Inexact means that some values cannot be converted exactly to the internal format and are stored as approximations. As a result, storing and retrieving a value might show slight discrepancies.

Intern TypePhysical TypeC++JavaSQL
Float(64)doubledoubledoubledouble precision
Float(32)floatfloatfloatreal

Fixed-Sized Arrays

NebulaStream supports fixed-sized array types. These can use any of primitive types as components and represent the data as a dense sequence.

Intern TypePhysical TypeC++JavaSQL
Array(Component Type)Array(Component Type)type[]type[]X