pentaho/pentaho-kettle · error · KettleValueException
: I don't know how to convert a boolean to a Internet…
Error message
: I don't know how to convert a boolean to a Internet address.
What it means
getInternetAddress() simply has no conversion defined from a boolean value to a java.net.InetAddress. When the value meta's type is TYPE_BOOLEAN, the switch throws this exception immediately, regardless of storage type. Internet Address values must originate from string, number, integer, big number, or InetAddress data.
Solutions
- Fix the value meta type: it must be TYPE_INET/TYPE_STRING/TYPE_NUMBER/TYPE_INTEGER/TYPE_BIGNUMBER, not TYPE_BOOLEAN
- Remove or reroute the boolean field before the Internet Address conversion step
- Add a metadata check (valueMeta.getType()) before calling the conversion
- If a boolean genuinely encodes an address flag, map it to a real address string first
Example fix
// before
InetAddress addr = meta.getInternetAddress(boolObject); // type==TYPE_BOOLEAN -> throws
// after
if (meta.getType() == ValueMetaInterface.TYPE_BOOLEAN) {
throw new KettleException("Field " + meta.getName() + " is boolean; cannot be an Internet address");
}
InetAddress addr = meta.getInternetAddress(meta.convertData(meta, boolObject)); Defensive patterns
Strategy: validation
Validate before calling
if (meta.getType() == ValueMetaInterface.TYPE_BOOLEAN) {
throw new KettleException("Field " + meta.getName() + " is boolean and cannot be converted to an Internet address");
} Type guard
boolean convertible = meta.getType() == ValueMetaInterface.TYPE_INET
|| meta.getType() == ValueMetaInterface.TYPE_STRING
|| meta.getType() == ValueMetaInterface.TYPE_NUMBER
|| meta.getType() == ValueMetaInterface.TYPE_INTEGER
|| meta.getType() == ValueMetaInterface.TYPE_BIGNUMBER; Try / catch
try {
InetAddress addr = meta.getInternetAddress(object);
} catch (KettleValueException e) {
if (e.getMessage().contains("convert a boolean")) { /* fix upstream field type */ }
throw e;
} Prevention
- Verify stream field types with getFields() before transforms that convert data
- Map fields by name, not by position, to avoid type mismatches
- Keep value meta types consistent between upstream and downstream steps
- Review row metadata changes after stream merges
When it happens
Trigger: Calling getInternetAddress(), getString(), inetAddress(), or getNativeDataType() on a ValueMetaInternetAddress whose type is TYPE_BOOLEAN; typically after mislabeling a field's type in row metadata or feeding a Boolean into the conversion path.
Common situations: A transform mapping columns by position and assigning a boolean column the Internet Address type; user-built metadata where type was set to TYPE_BOOLEAN by mistake; reading a stream where a field type changed upstream but metadata downstream was not updated.
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
- Error converting data while looking up value
- : I don't know how to convert a binary value to Internet…
- : I don't know how to convert a binary value to timestamp.
- : I don't know how to convert a boolean to a timestamp.
- : I don't know how to convert a serializable value to…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/b8e23d2bd7550df6.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java:133
return convertIntegerToInternetAddress( (Long) convertBinaryStringToNativeType( (byte[]) object ) );
case STORAGE_TYPE_INDEXED:
return convertIntegerToInternetAddress( (Long) index[( (Integer) object ).intValue()] );
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" );
}View on GitHub (pinned to f3058517a1)