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

  1. Accept the clamped timestamp scale if sub-max precision loss is acceptable
  2. Reduce the source column scale to <= YashanDB's MAX_TIMESTAMP_SCALE in the schema
  3. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/e917aeea8b3e06a1. Report an issue: GitHub.