apache/seatunnel · warning
will probably cause value overflow.
Error message
{} will probably cause value overflow. What it means
When mapping SQLite's UNSIGNED FLOAT type to SeaTunnel types, the mapper warns that FLOAT cannot represent the full unsigned range, so large values may overflow. The column is still mapped to BasicType.FLOAT_TYPE; no error is raised.
Solutions
- Change the column type in SQLite to DOUBLE (or plain REAL) so the full range fits.
- If values can exceed float range, treat the column as TEXT/DECIMAL in your pipeline.
- Clamp/validate values at write time to the FLOAT range.
- Ignore the warning if your data values are known to fit in float.
Example fix
-- before CREATE TABLE t (v FLOAT UNSIGNED); -- after CREATE TABLE t (v DOUBLE);
Defensive patterns
Strategy: validation
Validate before calling
// before reading, check schema types
if (typeName.equalsIgnoreCase("FLOAT UNSIGNED")) {
log.warn("Column {} uses FLOAT UNSIGNED; values may overflow FLOAT", columnName);
} Type guard
boolean isOverflowSafeFloat(Number v) {
return v == null || (v.floatValue() <= Float.MAX_VALUE && v.floatValue() >= -Float.MAX_VALUE);
} Prevention
- Avoid MySQL-style UNSIGNED float types in SQLite schemas
- Use DOUBLE or REAL for wide-range numeric columns
- Validate numeric ranges after read if FLOAT mapping is retained
When it happens
Trigger: SqliteTypeMapper.mapping() encounters a column whose type name resolves to SQLITE_FLOAT_UNSIGNED; the warning fires every time this mapping runs during schema read for a SQLite source/sink.
Common situations: SQLite tables created with 'FLOAT UNSIGNED' (a MySQL-ism that SQLite accepts syntactically) holding values above IEEE float range; migrations from MySQL schemas to SQLite.
Understand the failure class
Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.
Related errors
- byte overflow
- COMMON-17
- CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE
- Failed to append EdgeEvent to WAL: generated id is missing.
- short overflow
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/004a5370d0be17c2.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/sqlite/SqliteTypeMapper.java:129
case SQLITE_INT:
case SQLITE_INTEGER:
return BasicType.INT_TYPE;
case SQLITE_INT_UNSIGNED:
case SQLITE_INTEGER_UNSIGNED:
case SQLITE_BIGINT:
case SQLITE_BIGINT_UNSIGNED:
case SQLITE_NUMERIC:
return BasicType.LONG_TYPE;
case SQLITE_DECIMAL:
case SQLITE_DECIMAL_UNSIGNED:
case SQLITE_DOUBLE:
case SQLITE_DOUBLE_PRECISION:
case SQLITE_REAL:
return BasicType.DOUBLE_TYPE;
case SQLITE_FLOAT:
return BasicType.FLOAT_TYPE;
case SQLITE_FLOAT_UNSIGNED:
log.warn("{} will probably cause value overflow.", SQLITE_FLOAT_UNSIGNED);
return BasicType.FLOAT_TYPE;
case SQLITE_DOUBLE_UNSIGNED:
log.warn("{} will probably cause value overflow.", SQLITE_DOUBLE_UNSIGNED);
return BasicType.DOUBLE_TYPE;
case SQLITE_CHARACTER:
case SQLITE_VARYING_CHARACTER:
case SQLITE_NATIVE_CHARACTER:
case SQLITE_NVARCHAR:
case SQLITE_NCHAR:
case SQLITE_LONGNVARCHAR:
case SQLITE_LONGVARCHAR:
case SQLITE_CLOB:
case SQLITE_CHAR:
case SQLITE_TINYTEXT:
case SQLITE_MEDIUMTEXT:
case SQLITE_TEXT:
case SQLITE_VARCHAR:
case SQLITE_JSON:View on GitHub (pinned to cf67b549a7)