apache/seatunnel · warning

Type ' ' has a maximum precision of 536870911 in Vertica…

Error message

Type '{}' has a maximum precision of 536870911 in Vertica. Due to limitations in the seatunnel type system, the precision will be set to 2147483647.

What it means

Vertica LONG TEXT columns can have precision up to 536,870,911 (~512MB), but SeaTunnel's type system caps string precision at Integer.MAX_VALUE (2,147,483,647). The mapper logs this warning and returns STRING_TYPE with the capped precision. The data type is still STRING; only the declared precision differs.

Solutions

  1. Ignore the warning if the downstream sink does not enforce precision
  2. Reduce column size in Vertica to VARCHAR(n) within the representable precision
  3. Cast the column to VARCHAR in the source query to control the declared precision

Example fix

// before: LONG TEXT column -> precision 536870911 warned/capped
// after: query-side cast
SELECT CAST(long_col AS VARCHAR(1000000)) AS long_col FROM t;
Defensive patterns

Strategy: fallback

Validate before calling

// Pre-check LONG TEXT declared precision downstream:
if (columnType.equals("LONG TEXT") && sinkEnforcesPrecision(precision)) {
    // cast to bounded VARCHAR in the source query
}

Prevention

When it happens

Trigger: Catalog/schema evolution reads of a Vertica LONG TEXT (or LONG VARCHAR) column; the warning fires once per mapping of that type.

Common situations: Reading tables with large document/blob-in-text columns; downstream sinks that validate declared precision may reject or truncate.

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/c75f69d83c7cca16. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/vertica/VerticaTypeMapper.java:143

            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:
            case VERTICA_TEXT:
            case VERTICA_VARCHAR:
            case VERTICA_JSON:
                return BasicType.STRING_TYPE;
            case VERTICA_LONGTEXT:
                LOG.warn(
                        "Type '{}' has a maximum precision of 536870911 in Vertica. "
                                + "Due to limitations in the seatunnel type system, "
                                + "the precision will be set to 2147483647.",
                        VERTICA_LONGTEXT);
                return BasicType.STRING_TYPE;
            case VERTICA_DATE:
                return LocalTimeType.LOCAL_DATE_TYPE;
            case VERTICA_TIME:
                return LocalTimeType.LOCAL_TIME_TYPE;
            case VERTICA_DATETIME:
            case VERTICA_TIMESTAMP:
                return LocalTimeType.LOCAL_DATE_TIME_TYPE;

            case VERTICA_TINYBLOB:
            case VERTICA_MEDIUMBLOB:
            case VERTICA_BLOB:
            case VERTICA_LONGBLOB:
            case VERTICA_VARBINARY:

View on GitHub (pinned to cf67b549a7)