pentaho/pentaho-kettle · error · KettleValueException

: We can't convert data type to an original (V2) Value

Error message

 : We can't convert data type  to an original (V2) Value

What it means

Default-branch sentinel in ValueMetaBase.getLegacyValue(): this value's storage metadata type matches none of the cases that can be mapped onto the legacy (V2) Value object, so the old-style Value cannot be built. The input at fault is the value's unsupported/unknown type code.

Solutions

  1. Avoid serializing this field to the legacy V2 Value format; use modern row serialization
  2. Change the field to one of the supported types (String, Number, Integer, Date, Boolean, BigNumber, Binary)
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaBase.java:4254 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/6d6f71a86635511b. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaBase.java:4254

          value.setValue( getNumber( data ).doubleValue() );
          break;
        case TYPE_INTEGER:
          value.setValue( getInteger( data ).longValue() );
          break;
        case TYPE_DATE:
          value.setValue( getDate( data ) );
          break;
        case TYPE_BOOLEAN:
          value.setValue( getBoolean( data ).booleanValue() );
          break;
        case TYPE_BIGNUMBER:
          value.setValue( getBigNumber( data ) );
          break;
        case TYPE_BINARY:
          value.setValue( getBinary( data ) );
          break;
        default:
          throw new KettleValueException( toString() + " : We can't convert data type " + getTypeDesc()
              + " to an original (V2) Value" );
      }
    }
    return value;
  }

  /**
   * Extracts the primitive data from an old style Value object
   *
   * @param value
   *          the old style Value object
   * @return the value's data, NOT the meta data.
   * @throws KettleValueException
   *           case there is a data conversion problem
   */
  @Override
  public Object getValueData( Value value ) throws KettleValueException {
    if ( value == null || value.isNull() ) {

View on GitHub (pinned to f3058517a1)