Numeric Types

Singdata Lakehouse supports integer types (TINYINT, SMALLINT, INT, BIGINT) and floating-point / exact decimal types (FLOAT, DOUBLE, DECIMAL).

Type Comparison

Integer Types

TypeStorageRangeUse Case
TINYINT1 byte-128 ~ 127Status codes, enum values, small-range flags
SMALLINT2 bytes-32,768 ~ 32,767Year values, small-range counters
INT4 bytes-2,147,483,648 ~ 2,147,483,647General integer IDs, counters
BIGINT8 bytes-9.2×10¹⁸ ~ 9.2×10¹⁸Large-scale IDs, timestamps (milliseconds), cumulative totals

A CAST that exceeds the range returns NULL (no error):

SELECT CAST(128 AS TINYINT); -- NULL (exceeds 127) SELECT CAST(32768 AS SMALLINT); -- NULL (exceeds 32767)

Floating-Point and Exact Decimal Types

TypeStoragePrecisionUse Case
FLOAT4 bytes~6-7 significant digitsML feature values, vector elements, approximate real numbers
DOUBLE8 bytes~15-17 significant digitsScientific computing, statistical analysis
DECIMAL(p,s)VariableExactFinancial amounts, decimals requiring exact calculation

FLOAT vs DOUBLE precision difference (measured):

SELECT CAST(3.14159265358979 AS FLOAT) AS f, -- 3.1415927410125732 (distortion after 7 digits) CAST(3.14159265358979 AS DOUBLE) AS d; -- 3.14159265358979 (fully preserved)

Floating-point precision error example:

SELECT CAST(0.1 AS DOUBLE) + CAST(0.2 AS DOUBLE); -- 0.30000000000000004 SELECT CAST(0.1 AS DECIMAL(2,1)) + CAST(0.2 AS DECIMAL(2,1)); -- 0.3