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

  1. Inspect the chained cause exception in the stack trace for the real root problem
  2. Test the database connection in the step dialog (wrong host/port/user/password are the usual roots)
  3. Confirm the target table exists and the name/schema fields are filled (avoids the wrapped TableNotFound/TableNotSpecified)
  4. 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

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


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 set

View on GitHub (pinned to f3058517a1)