apache/seatunnel · warning

The column with type will be converted to VECTOR in YashanDB

Error message

The column {} with type {} will be converted to VECTOR in YashanDB

What it means

This is a WARN-level log emitted by the YashanDB JDBC dialect's type converter during reconvert(). YashanDB has no dedicated FLOAT16_VECTOR/BFLOAT16_VECTOR column types, so any such SeaTunnel column is silently mapped to a generic VECTOR column with the column's scale. The warning informs the user that precision characteristics of the original vector type may be lost in the conversion.

Solutions

  1. Accept the VECTOR(scale) mapping if the application tolerates it
  2. Change the source schema column to a plain VECTOR type so no lossy conversion is attempted
  3. Explicitly define the target YashanDB table with the desired VECTOR dimension/scale instead of relying on auto-creation
Defensive patterns

Strategy: validation

Validate before calling

// Before writing, check the sink dialect supports the vector type
if (column.getDataType().getSqlType() == SqlType.FLOAT16_VECTOR
        || column.getDataType().getSqlType() == SqlType.BFLOAT16_VECTOR) {
    // YashanDB maps these to generic VECTOR(scale) - confirm precision loss is acceptable
    log.info("Column {} will be stored as VECTOR({}) in YashanDB", column.getName(), column.getScale());
}

Prevention

When it happens

Trigger: A catalog/table-definition conversion via YashanDbTypeConverter.reconvert() encounters a column whose SeaTunnel SQL type is FLOAT16_VECTOR or BFLOAT16_VECTOR; the converter logs the warning and rewrites the column type to VECTOR(scale).

Common situations: Sink schemas defined with vector columns for engines supporting half-precision/bfloat16 vector types (e.g. Milvus, newer MySQL vector flavors) being written to YashanDB; auto table creation against YashanDB with such a schema.

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


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java:448

                            String.format("%s(%s,FLOAT64)", VECTOR_NAME, column.getColumnLength()));
                    builder.dataType(VECTOR_NAME);
                } else {
                    throw new UnsupportedOperationException(
                            "Unsupport "
                                    + ((ArrayType) column.getDataType())
                                            .getElementType()
                                            .getSqlType()
                                    + " ARRAY");
                }
                break;
            case FLOAT_VECTOR:
            case FLOAT16_VECTOR:
                builder.columnType(String.format("%s(%s)", VECTOR_NAME, column.getScale()));
                builder.dataType(VECTOR_NAME);
                break;
            case BFLOAT16_VECTOR:
                // Vector types are stored as VECTOR in YashanDB
                log.warn(
                        "The column {} with type {} will be converted to VECTOR in YashanDB",
                        column.getName(),
                        column.getDataType().getSqlType().name());
                builder.columnType(String.format("%s(%s)", VECTOR_NAME, column.getScale()));
                builder.dataType(VECTOR_NAME);
                break;
            case STRING:
                if (column.getColumnLength() == null || column.getColumnLength() <= 0) {
                    builder.columnType(String.format("%s(%s)", VARCHAR, MAX_VARCHAR_LENGTH));
                    builder.dataType(VARCHAR);
                } else if (column.getColumnLength() <= MAX_VARCHAR_LENGTH) {
                    builder.columnType(String.format("%s(%s)", VARCHAR, column.getColumnLength()));
                    builder.dataType(VARCHAR);
                } else {
                    builder.columnType(CLOB);
                    builder.dataType(CLOB);
                }
                break;

View on GitHub (pinned to cf67b549a7)