pentaho/pentaho-kettle · error · KettleValueException

: We can't convert original data type to a primitive data…

Error message

 : We can't convert original data type  to a primitive data type

What it means

Default-branch sentinel in ValueMetaBase.getPrimitiveValue(): the legacy Value's type cannot be mapped back to a primitive object because it matched none of the known type cases in the switch. The input at fault is the legacy value with an unsupported/unknown type.

Solutions

  1. Convert the legacy Value to one of the supported types before extraction
  2. Upgrade the code path to use ValueMetaInterface-based access instead of legacy V2 Values
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaBase.java:4299 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/20376d92867781cb. Report an issue: GitHub.

Appendix: source

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

    //

    switch ( getType() ) {
      case ValueMetaInterface.TYPE_STRING:
        return value.getString();
      case ValueMetaInterface.TYPE_NUMBER:
        return value.getNumber();
      case ValueMetaInterface.TYPE_INTEGER:
        return value.getInteger();
      case ValueMetaInterface.TYPE_DATE:
        return value.getDate();
      case ValueMetaInterface.TYPE_BOOLEAN:
        return value.getBoolean();
      case ValueMetaInterface.TYPE_BIGNUMBER:
        return value.getBigNumber();
      case ValueMetaInterface.TYPE_BINARY:
        return value.getBytes();
      default:
        throw new KettleValueException( toString() + " : We can't convert original data type " + value.getTypeDesc()
            + " to a primitive data type" );
    }
  }

  /**
   * @return the storageMetadata
   */
  @Override
  public ValueMetaInterface getStorageMetadata() {
    return storageMetadata;
  }

  /**
   * @param storageMetadata
   *          the storageMetadata to set
   */
  @Override
  public void setStorageMetadata( ValueMetaInterface storageMetadata ) {

View on GitHub (pinned to f3058517a1)