pentaho/pentaho-kettle · error · KettleException
GPLoadMeta.Exception.ErrorGettingFields
GPLoadMeta.Exception.ErrorGettingFields
Error message
GPLoadMeta.Exception.ErrorGettingFields
What it means
GPLoadMeta's table-fields lookup wraps its whole body in try/catch(Exception) and rethrows any failure as a KettleException with the ErrorGettingFields message key, chaining the original cause. It is a generic wrapper: any error while connecting to the database or reading the table's field metadata surfaces under this message.
Solutions
- Inspect the chained cause exception in the stack trace for the real root problem
- Test the database connection in the step dialog (wrong host/port/user/password are the usual roots)
- Confirm the target table exists and the name/schema fields are filled (avoids the wrapped TableNotFound/TableNotSpecified)
- Verify the Greenplum JDBC driver is on the classpath and the user can read catalog metadata
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check connection and table before invoking the metadata API Database db = new Database(loggingObject, databaseMeta); db.connect(); boolean ok = db.checkTableExists(schema + "." + table); db.disconnect();
Try / catch
try { return meta.getTableFields(); } catch (KettleException e) { Throwable root = e; while (root.getCause() != null) root = root.getCause(); log.error("getTableFields failed, root cause: ", root); throw e; } Prevention
- Always unwrap and log the chained cause — this error is a generic wrapper
- Test the DB connection in the dialog before running
- Confirm table existence and name fields before calling metadata APIs
When it happens
Trigger: Any exception inside getTableFields()'s try block — connection failure, SQL error in checkTableExists/getTableFields, or the TableNotFound/TableNotSpecified KettleExceptions — is caught and re-wrapped with this key.
Common situations: Database unreachable or credentials wrong; underlying 'table not found'/'table not specified' errors wrapped by this outer message; driver issues; insufficient privileges to query system catalogs.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- GPLoad.Execption.FileDoesNotExist
- GPLoad.Log.ExitValuePsqlPath
- GPLoadMeta.Exception.TableNotFound
- GPLoadMeta.Exception.TableNotSpecified
- Calculator.ErrorInStepRunning
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/dfc1de732e155903.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoadMeta.java:789
if ( databaseMeta != null ) {
Database db = new Database( loggingObject, databaseMeta );
try {
db.connect();
if ( !Utils.isEmpty( realTableName ) ) {
String schemaTable = databaseMeta.getQuotedSchemaTableCombination( realSchemaName, realTableName );
// Check if this table exists...
if ( db.checkTableExists( schemaTable ) ) {
return db.getTableFields( schemaTable );
} else {
throw new KettleException( BaseMessages.getString( PKG, "GPLoadMeta.Exception.TableNotFound" ) );
}
} else {
throw new KettleException( BaseMessages.getString( PKG, "GPLoadMeta.Exception.TableNotSpecified" ) );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "GPLoadMeta.Exception.ErrorGettingFields" ), e );
} finally {
db.close();
}
} else {
throw new KettleException( BaseMessages.getString( PKG, "GPLoadMeta.Exception.ConnectionNotDefined" ) );
}
}
/**
* @return the schemaName
*/
public String getSchemaName() {
return schemaName;
}
/**
* @param schemaName
* the schemaName to setView on GitHub (pinned to f3058517a1)