pentaho/pentaho-kettle · error · KettleValueException

: it's not possible to convert from an Internet Address to…

Error message

: it's not possible to convert from an Internet Address to a Boolean

What it means

ValueMetaInternetAddress.getBoolean() is intentionally unsupported: there is no meaningful boolean interpretation of an IP address. The method unconditionally throws KettleValueException for any non-null conversion attempt.

Solutions

  1. Change the target/output field type so it no longer requests Boolean from this field
  2. Convert via getString() and apply explicit business logic (e.g., compare against a known address or 'empty' check) if a boolean was intended
  3. Catch KettleValueException and supply a defined default (null/false) where boolean output is unavoidable

Example fix

// before
Boolean b = inetValueMeta.getBoolean(rowData[i]);
// after
String s = inetValueMeta.getString(rowData[i]);
Boolean b = (s == null) ? null : !s.isEmpty(); // explicit rule
Defensive patterns

Strategy: validation

Validate before calling

// never call getBoolean on InternetAddress; derive boolean from string explicitly
Boolean b = (s == null) ? null : !s.isEmpty();

Type guard

if (meta instanceof ValueMetaInternetAddress) { /* getBoolean() will always throw */ }

Try / catch

try { b = meta.getBoolean(v); } catch (KettleValueException e) { b = null; }

Prevention

When it happens

Trigger: Any call to getBoolean() on an Internet Address value meta — e.g., a step or expression converting the field to Boolean, or a boolean comparison against the field.

Common situations: Mapping an IP field into a boolean output field in a transformation; copy/pasted field-type mappings after changing a field's type; legacy transformations where the field used to be a String/Number and is now Internet Address.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java:202

  @Override
  public BigDecimal getBigNumber( Object object ) throws KettleValueException {
    InetAddress address = getInternetAddress( object );
    if ( null == address ) {
      return null;
    }
    BigInteger bi = BigInteger.ZERO;
    byte[] addr = address.getAddress();

    for ( byte aByte : addr ) {
      bi = bi.shiftLeft( 8 ).add( BigInteger.valueOf( aByte & 0xFF ) );
    }

    return new BigDecimal( bi );
  }

  @Override
  public Boolean getBoolean( Object object ) throws KettleValueException {
    throw new KettleValueException( toStringMeta()
      + ": it's not possible to convert from an Internet Address to a Boolean" );
  }

  @Override
  public String getString( Object object ) throws KettleValueException {
    return convertInternetAddressToString( getInternetAddress( object ) );
  }

  @Override
  public byte[] getBinaryString( Object object ) throws KettleValueException {
    if ( isStorageBinaryString() && identicalFormat ) {
      return (byte[]) object; // shortcut it directly for better performance.
    }
    if ( object == null ) {
      return null;
    }
    switch ( storageType ) {
      case STORAGE_TYPE_NORMAL:

View on GitHub (pinned to f3058517a1)