Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

TypeSizeDescription
Bitmask(n)n/8 bytesA fixed-length bitmask of n bits
ByteInt81 byte1-byte signed integer
Uint81 byte1-byte unsigned integer
Int16Short2 bytes2-byte signed integer
Uint162 bytes2-byte unsigned integer
Int32Integer4 bytes4-byte signed integer
Uint324 bytes4-byte unsigned integer
LongInt648 bytes8-byte signed integer
Uint648 bytes8-byte unsigned integer
Float4 bytes4-byte floating-point number
Double8 bytes8-byte floating-point number
Number([n])VariableVariable-length number (optionally bound by n bytes in size)
DecimalVariableVariable-length floating point number
UUID16 bytesUUID
StringVariableString encoded with a given Charset
Date3 bytesA timezone-free date encoded as year (15 bits), month (4 bits), day (5 bits)
Time4 bytesA timezone-free time encoded as padding (5 bits), hour (5 bits), minute (6 bits), second (6 bits), millisecond (10 bits)
Datetime7 bytesA timezone-free datetime encoded as (date, time)
Instant8 bytesNumber of milliseconds since Jan 1, 1970 00:00:00.000 (with no timezone)
BLOBVariableVariable-size byte array

...

Ignite will provide out-of-box mapping from standard platform types (Java, C#, C++) to built-in primitives. A user will be able to alter this mapping using some external mechanism (e.g. annotations to map long values to Number). Standard mapping is listed in the table below:

Built-inJavaC#C++
Bitmask(n)BitSet
Byte


Int8byte (Byte if nullable)
Short
sbyte
Uint8short with range constraintsbyte
Int16short (Short if nullable)
Integer
short
Uint16int with range constratintsushort
Int32int (Integer if nullable)
Long
int
Uint32long with range constratintsuint
Int64long (Long if nullable)long
Uint64BigInteger with range constratintsulong
Floatfloat (Float if nullable)float
Doubledouble (Double if nullable)double
Number([n])BigIntegerBigInteger
DecimalBigDecimaldecimal
UUIDUUIDGuid
StringStringstring
DateLocalDate

TimeLocalTime

DatetimeLocalDateTime

InstantDate (Instant?)

BLOBbyte[]

As Java has no native support for unsigned types. We still can introduce 'unsigned' flag to schema type and separate binary type-codes, and allow to map to the closest types of wider range. E.g. map Uint8 → short and recheck constraints during serialization.

If one will try to serialize object with 'short' value out of Uint8 range then it end up with exception (ColumnValueIsOutOfRangeException).

Dynamic schema expansion (flexible schemas)

...