pentaho/pentaho-kettle · error · KettleDatabaseException

Error determining value metadata from SQL resultset metadata

Error message

Error determining value metadata from SQL resultset metadata

What it means

Wrapper error while deriving a ValueMeta from a JDBC ResultSet's metadata in getSqlType(): either cloning the storage metadata or the database-specific customizeValueFromSQLType() customization threw, and it was rethrown as a plain SQLException with this message and the original cause.

Solutions

  1. Inspect the chained cause for the real failure (unsupported SQL type, driver quirk)
  2. Update or replace the JDBC driver if its resultset metadata is non-standard
  3. Simplify the query/column types that trigger the database-specific customization
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaBase.java:4979 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/f782f73cb808c5e7. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaBase.java:4979

        //
        try {
          ValueMetaInterface storageMetaData = ValueMetaFactory.cloneValueMeta( v, ValueMetaInterface.TYPE_STRING );
          storageMetaData.setStorageType( ValueMetaInterface.STORAGE_TYPE_NORMAL );
          v.setStorageMetadata( storageMetaData );
        } catch ( Exception e ) {
          throw new SQLException( e );
        }
      }

      ValueMetaInterface newV = null;
      try {
        newV = databaseMeta.getDatabaseInterface().customizeValueFromSQLType( v, rm, index );
      } catch ( SQLException e ) {
        throw new SQLException( e );
      }
      return newV == null ? v : newV;
    } catch ( Exception e ) {
      throw new KettleDatabaseException( "Error determining value metadata from SQL resultset metadata", e );
    }
  }

  protected void getOriginalColumnMetadata( ValueMetaInterface v, ResultSetMetaData rm, int index, boolean ignoreLength )
    throws SQLException {
    // Grab the comment as a description to the field as well.
    String comments = rm.getColumnLabel( index );
    v.setComments( comments );

    // get & store more result set meta data for later use
    int originalColumnType = rm.getColumnType( index );
    v.setOriginalColumnType( originalColumnType );

    String originalColumnTypeName = rm.getColumnTypeName( index );
    v.setOriginalColumnTypeName( originalColumnTypeName );

    int originalPrecision = -1;
    if ( !ignoreLength ) {

View on GitHub (pinned to f3058517a1)