apache/seatunnel · warning
{} will probably cause value overflow.
Error message
{} will probably cause value overflow. What it means
VerticaTypeMapper.mapping converts VERTICA_DECIMAL columns to SeaTunnel DecimalType. Vertica allows DECIMAL precision above 38, but SeaTunnel's DecimalType is capped at 38, so when precision > 38 the mapper logs this warning and coerces to DECIMAL(38,18). Values with more than 38 significant digits may overflow or lose scale.
Source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/vertica/VerticaTypeMapper.java:119
case VERTICA_TINYINT:
case VERTICA_TINYINT_UNSIGNED:
case VERTICA_SMALLINT:
case VERTICA_SMALLINT_UNSIGNED:
case VERTICA_MEDIUMINT:
case VERTICA_MEDIUMINT_UNSIGNED:
case VERTICA_INT:
case VERTICA_INTEGER:
case VERTICA_YEAR:
return BasicType.INT_TYPE;
case VERTICA_INT_UNSIGNED:
case VERTICA_INTEGER_UNSIGNED:
case VERTICA_BIGINT:
return BasicType.LONG_TYPE;
case VERTICA_BIGINT_UNSIGNED:
return new DecimalType(20, 0);
case VERTICA_DECIMAL:
if (precision > 38) {
LOG.warn("{} will probably cause value overflow.", VERTICA_DECIMAL);
return new DecimalType(38, 18);
}
return new DecimalType(precision, scale);
case VERTICA_DECIMAL_UNSIGNED:
return new DecimalType(precision + 1, scale);
case VERTICA_FLOAT:
return BasicType.FLOAT_TYPE;
case VERTICA_FLOAT_UNSIGNED:
LOG.warn("{} will probably cause value overflow.", VERTICA_FLOAT_UNSIGNED);
return BasicType.FLOAT_TYPE;
case VERTICA_DOUBLE:
return BasicType.DOUBLE_TYPE;
case VERTICA_DOUBLE_UNSIGNED:
LOG.warn("{} will probably cause value overflow.", VERTICA_DOUBLE_UNSIGNED);
return BasicType.DOUBLE_TYPE;
case VERTICA_CHAR:
case VERTICA_TINYTEXT:
case VERTICA_MEDIUMTEXT:View on GitHub (pinned to cf67b549a7)
Solutions
- Alter the Vertica column to DECIMAL(38,s) or lower precision so it maps losslessly
- Accept DECIMAL(38,18) and validate that your data fits (integer digits <= 20)
- Pre-read the column as VARCHAR and convert manually if full precision is required
Example fix
// before: Vertica column DECIMAL(45,5) -> warning, coerced to DECIMAL(38,18) // after: alter Vertica column to fit ALTER TABLE t ALTER COLUMN d SET DATA TYPE DECIMAL(38,5);
Defensive patterns
Strategy: validation
Validate before calling
// Check Vertica decimal precision before running the pipeline: SELECT column_name, numeric_precision, numeric_scale FROM v_catalog.columns WHERE table_name = 't' AND data_type LIKE 'DECIMAL%' AND numeric_precision > 38;
Prevention
- Keep Vertica decimal precision at or below 38
- Run schema pre-checks on catalog tables before pipeline launch
- Cast oversized decimals to STRING for transport
- Review DecimalType coercion in logs after schema changes
When it happens
Trigger: Catalog-based (schema evolution) reads where a Vertica table column is DECIMAL/NUMERIC with precision > 38 (e.g. DECIMAL(40,10)); the mapper runs during type conversion from Vertica metadata.
Common situations: Vertica tables created with very large precision decimals (Vertica permits up to 1024); migrating Vertica data to engines capped at 38-digit decimals.
Understand the failure class
Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.
Related errors
- The decimal column {} type decimal({},{}) is out of range, w
- COMMON-17
- The decimal column {} type decimal({},{}) is out of range, w
- The decimal column {} type decimal({},{}) is out of range, w
- The decimal column {} type decimal({},{}) is out of range, w
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/b654363f7e1ba8eb.
Report an issue: GitHub.