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

  1. Fix the value meta type: it must be TYPE_INET/TYPE_STRING/TYPE_NUMBER/TYPE_INTEGER/TYPE_BIGNUMBER, not TYPE_BOOLEAN
  2. Remove or reroute the boolean field before the Internet Address conversion step
  3. Add a metadata check (valueMeta.getType()) before calling the conversion
  4. 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

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


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)