apache/seatunnel · warning
The timestamp column {} type timestamp({}) is out of range,
Error message
The timestamp column {} type timestamp({}) is out of range, which exceeds the maximum scale of {}, it will be converted to timestamp({}) What it means
A WARN log in YashanDbTypeConverter.reconvert() for TIMESTAMP columns. YashanDB has a maximum supported timestamp scale (MAX_TIMESTAMP_SCALE, fractional-second digits); if the requested column scale exceeds it, the converter clamps the scale to the maximum and logs that the value is out of range. No exception is thrown; data precision beyond the max scale is truncated.
Source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java:482
builder.dataType(CLOB);
}
break;
case DATE:
builder.columnType(DATE);
builder.dataType(DATE);
break;
case TIME:
builder.columnType(TIME);
builder.dataType(TIME);
break;
case TIMESTAMP:
if (column.getScale() == null || column.getScale() <= 0) {
builder.columnType(TIMESTAMP);
} else {
int timestampScale = column.getScale();
if (column.getScale() > MAX_TIMESTAMP_SCALE) {
timestampScale = MAX_TIMESTAMP_SCALE;
log.warn(
"The timestamp column {} type timestamp({}) is out of range, "
+ "which exceeds the maximum scale of {}, "
+ "it will be converted to timestamp({})",
column.getName(),
column.getScale(),
MAX_TIMESTAMP_SCALE,
timestampScale);
}
builder.columnType(String.format("TIMESTAMP(%s)", timestampScale));
builder.scale(timestampScale);
}
builder.dataType(TIMESTAMP);
break;
case TIMESTAMP_TZ:
if (column.getScale() == null || column.getScale() <= 0) {
builder.columnType(TIMESTAMP_WITH_TIME_ZONE);
} else {
int tsScale = column.getScale();View on GitHub (pinned to cf67b549a7)
Solutions
- Accept the clamped timestamp scale if sub-max precision loss is acceptable
- Reduce the source column scale to <= YashanDB's MAX_TIMESTAMP_SCALE in the schema
- Pre-create the YashanDB table with the intended timestamp scale instead of relying on auto-conversion
Example fix
// before: SeaTunnel column TIMESTAMP with scale=9, YashanDB max scale=6 // after: define column scale<=MAX_TIMESTAMP_SCALE or accept clamped timestamp(6)
Defensive patterns
Strategy: validation
Validate before calling
// Validate timestamp scale against YashanDB limit before sinking
int MAX_TIMESTAMP_SCALE = 6; // YashanDB limit per dialect
if (column.getDataType().getSqlType() == SqlType.TIMESTAMP
&& column.getScale() != null && column.getScale() > MAX_TIMESTAMP_SCALE) {
// clamp or alter schema before job run
((TimestampType) column.getDataType()).setScale(MAX_TIMESTAMP_SCALE);
} Prevention
- Keep timestamp fractional-second precision within the target dialect's max scale
- Pre-create target tables with explicit supported scales
- Review this WARN during schema validation/dry runs
When it happens
Trigger: reconvert() processes a TIMESTAMP column whose scale (fractional second precision) is greater than MAX_TIMESTAMP_SCALE; the converter logs the warning and rewrites columnType to timestamp(maxScale).
Common situations: Source tables defined with timestamp(9) (nanoseconds, e.g. from MySQL/PostgreSQL) being sunk to YashanDB which supports fewer fractional digits; auto DDL generation from a SeaTunnel catalog schema.
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 timestamp column {} type timestamp({}) is out of range,
- The timestamp column {} type timestamp({}) is out of range,
- The timestamp_tz column {} type datetime_tz({}) is out of ra
- The timestamp column {} type timestamp({}) is out of range,
- Failed to parse PostgreSQL timestamptz string: ${str}
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/e917aeea8b3e06a1.
Report an issue: GitHub.