pentaho/pentaho-kettle · error · KettleValueException
: I don't know how to convert a binary value to Internet…
Error message
: I don't know how to convert a binary value to Internet address.
What it means
There is no defined conversion from raw binary (byte[]) TYPE_BINARY data to an InetAddress in getInternetAddress(). TYPE_BINARY storage means opaque byte payloads, and this value meta refuses to interpret them as an address, throwing this KettleValueException.
Solutions
- Change the value meta type from TYPE_BINARY to TYPE_INET (or TYPE_STRING) so the conversion path exists
- Decode the bytes to a string first and convert via convertStringToInternetAddress semantics
- Verify upstream field metadata matches the expected Internet Address type
- Do not confuse binary-string storage with the TYPE_BINARY value type when configuring metadata
Example fix
// before
ValueMetaInterface meta = new ValueMetaInternetAddress("ip", ValueMetaInterface.TYPE_BINARY);
// after
ValueMetaInterface meta = new ValueMetaInternetAddress("ip", ValueMetaInterface.TYPE_INET); Defensive patterns
Strategy: validation
Validate before calling
if (meta.getType() == ValueMetaInterface.TYPE_BINARY) {
throw new KettleException("Field " + meta.getName() + " is binary; expected Internet address-compatible type");
} Type guard
boolean ok = meta.getType() != ValueMetaInterface.TYPE_BINARY
&& meta.getType() != ValueMetaInterface.TYPE_SERIALIZABLE
&& meta.getType() != ValueMetaInterface.TYPE_BOOLEAN; Try / catch
try {
InetAddress addr = meta.getInternetAddress(object);
} catch (KettleValueException e) {
if (e.getMessage().contains("binary value to Internet address")) { /* retype field upstream */ }
throw e;
} Prevention
- Do not connect binary/stream fields to address-typed fields
- Distinguish TYPE_BINARY value type from STORAGE_TYPE_BINARY_STRING storage
- Re-check row metadata whenever upstream field definitions change
- Use Select Values to retype fields explicitly before conversion
When it happens
Trigger: Calling getInternetAddress()/getString()/inetAddress()/getNativeDataType() on a ValueMetaInternetAddress whose type is TYPE_BINARY, e.g. when a column that previously held address strings was re-typed as binary.
Common situations: Binary stream fields (files, blobs) accidentally connected to an Internet Address-typed field; a change of upstream field type without updating downstream row metadata; users confusing STORAGE_TYPE_BINARY_STRING (supported) with value TYPE_BINARY (not supported).
Understand the failure class
Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.
Related errors
- : I don't know how to convert a binary value to timestamp.
- : I don't know how to convert binary values to integers.
- Error converting data while looking up value
- : I don't know how to convert a boolean to a Internet…
- : I don't know how to convert a boolean to a timestamp.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/f0b8cc91a52ded12.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java:136
default:
throw new KettleValueException( toString() + " : Unknown storage type " + storageType + " specified." );
}
case TYPE_BIGNUMBER:
switch ( storageType ) {
case STORAGE_TYPE_NORMAL:
return convertBigNumberToInternetAddress( (BigDecimal) object );
case STORAGE_TYPE_BINARY_STRING:
return convertBigNumberToInternetAddress( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) );
case STORAGE_TYPE_INDEXED:
return convertBigNumberToInternetAddress( (BigDecimal) index[( (Integer) object ).intValue()] );
default:
throw new KettleValueException( toString() + " : Unknown storage type " + storageType + " specified." );
}
case TYPE_BOOLEAN:
throw new KettleValueException( toString()
+ " : I don't know how to convert a boolean to a Internet address." );
case TYPE_BINARY:
throw new KettleValueException( toString()
+ " : I don't know how to convert a binary value to Internet address." );
case TYPE_SERIALIZABLE:
throw new KettleValueException( toString()
+ " : I don't know how to convert a serializable value to Internet address." );
default:
throw new KettleValueException( toString() + " : Unknown type " + type + " specified." );
}
}
@Override
public Date getDate( Object object ) throws KettleValueException {
throw new KettleValueException( toStringMeta()
+ ": it's not possible to convert from Internet Address to a date" );
}
@Override
public Long getInteger( Object object ) throws KettleValueException {View on GitHub (pinned to f3058517a1)