pentaho/pentaho-kettle · error · KettleException
GPLoadDataOutput.Exception.TypeNotSupported
Error message
GPLoadDataOutput.Exception.TypeNotSupported
What it means
writeLine() formats each field value by the value's ValueMeta type (String, Date, Number, etc.). The default branch throws this KettleException when it encounters a value type it does not know how to serialize into the gpload data file (e.g. Binary, Serializable, Timestamp-like types in this version).
Solutions
- Convert unsupported fields to supported types before GPload (e.g. 'If field value is null'/'Select values' to convert to String or Number, or format dates with a Formula/UDJE step)
- Drop unnecessary columns via a Select values step so only supported types reach GPload
- Check the plugin's writeLine switch and upgrade the PDI/GPload plugin version that supports the type
- For binary data, encode it (Base64) into a String field first
Example fix
// before
row: { id:Number, payload:Binary }
// after (Select values: payload -> String)
row: { id:Number, payload:String } // Base64 or text-encoded Defensive patterns
Strategy: type-guard
Validate before calling
for (ValueMetaInterface v : rowMeta.getValueMetaList()) {
int t = v.getType();
if (!(t == ValueMetaInterface.TYPE_STRING || t == ValueMetaInterface.TYPE_NUMBER
|| t == ValueMetaInterface.TYPE_INTEGER || t == ValueMetaInterface.TYPE_DATE
|| t == ValueMetaInterface.TYPE_BOOLEAN || t == ValueMetaInterface.TYPE_BIGNUMBER)) {
throw new IllegalStateException("Unsupported type for GPload: " + v.toStringMeta());
}
} Type guard
boolean isGploadSupported(ValueMetaInterface v) {
switch (v.getType()) {
case ValueMetaInterface.TYPE_STRING: case ValueMetaInterface.TYPE_NUMBER:
case ValueMetaInterface.TYPE_INTEGER: case ValueMetaInterface.TYPE_DATE:
case ValueMetaInterface.TYPE_BOOLEAN: case ValueMetaInterface.TYPE_BIGNUMBER:
return true; default: return false;
}
} Try / catch
try { ... } catch (KettleException e) { if (e.getMessage().contains("TypeNotSupported")) { logError("Convert field to String/Number before GPload: " + e.getMessage()); } throw e; } Prevention
- Convert Binary/Serializable fields to String (e.g. Base64) before GPload
- Insert a Select values step to enforce a flat, supported schema before the load
- Pin the PDI plugin version and check its supported types when upgrading
- Drop unused complex-typed columns upstream
When it happens
Trigger: A row field reaching GPload has a type outside the supported set — commonly Binary, Serializable, Internet Address, or a Timestamp/big-number type whose switch branch is absent in this PDI version.
Common situations: Feeding binary/blob columns from a table input; upstream step changed a field's type (e.g. String to Binary); upgrading PDI introduced new types while the GPload plugin formatter lags behind.
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
- Stream Lookup comparator error
- TeraFast.Exception.TypeNotSupported
- The 'A-B%' function only works on numeric data
- The 'A+B%' function only works on numeric data
- The 'A/B in %' function only works on numeric data
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/ab29412f0914a57c.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoadDataOutput.java:253
} else {
output.print( "N" );
}
output.print( enclosure );
break;
case ValueMetaInterface.TYPE_BINARY:
byte[] byt = mi.getBinary( row, number );
output.print( "<startlob>" );
output.print( byt );
output.print( "<endlob>" );
break;
case ValueMetaInterface.TYPE_TIMESTAMP:
Date time = mi.getDate( row, number );
output.print( enclosure );
output.print( sdfDateTime.format( time ) );
output.print( enclosure );
break;
default:
throw new KettleException( BaseMessages.getString( PKG, "GPLoadDataOutput.Exception.TypeNotSupported", v
.getType() ) );
}
}
}
output.print( Const.CR );
}
}
View on GitHub (pinned to f3058517a1)