{"record":{"id":"158dacc00eecb1d0","repo":"pentaho/pentaho-kettle","slug":"unknown-column","errorCode":null,"errorMessage":"Unknown column '","messagePattern":"Unknown column '","errorType":"validation","errorClass":"KettleValueException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/pentaho/di/core/RowMetaAndData.java","lineNumber":148,"sourceCode":"  public void addValue( String valueName, int valueType, Object valueData ) {\n    ValueMetaInterface v;\n    try {\n      v = ValueMetaFactory.createValueMeta( valueName, valueType );\n    } catch ( KettlePluginException e ) {\n      v = new ValueMetaNone( valueName );\n    }\n    addValue( v, valueData );\n  }\n\n  public void clear() {\n    rowMeta = new RowMeta();\n    data = new Object[] {};\n  }\n\n  public long getInteger( String valueName, long def ) throws KettleValueException {\n    int idx = rowMeta.indexOfValue( valueName );\n    if ( idx < 0 ) {\n      throw new KettleValueException( \"Unknown column '\" + valueName + \"'\" );\n    }\n    return getInteger( idx, def );\n  }\n\n  public long getInteger( int index, long def ) throws KettleValueException {\n    Long number = rowMeta.getInteger( data, index );\n    if ( number == null ) {\n      return def;\n    }\n    return number.longValue();\n  }\n\n  public Long getInteger( String valueName ) throws KettleValueException {\n    int idx = rowMeta.indexOfValue( valueName );\n    if ( idx < 0 ) {\n      throw new KettleValueException( \"Unknown column '\" + valueName + \"'\" );\n    }\n    return rowMeta.getInteger( data, idx );","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/core/RowMetaAndData.java#L130-L166","documentation":"getInteger(String valueName, long def) looks up the column index of valueName in the row metadata; if indexOfValue returns -1 the column does not exist and KettleValueException \"Unknown column '<name>'\" is thrown. The default value only applies when the stored data is null, not when the column is missing.","triggerScenarios":"Calling getInteger(\"fieldName\", def) with a field name that was never added to the row, misspelled, or added after the row metadata was frozen.","commonSituations":"Typos in repository attribute names; reading an attribute that older/newer PDI versions do not write; querying a transformation/job attribute key that does not exist in the repository table.","solutions":["Verify the exact field name with rowMeta.indexOfValue(name) or print rowMeta.toStringMeta() before the call","Correct the spelling/case of valueName","Add the field via addValue(...) before reading it","Use searchValueMeta(name) != null as a guard and fall back to the default","Check that the repository schema/version actually contains this attribute"],"exampleFix":"// before\nlong id = row.getInteger(\"ID_TRANSFORMATION\", -1); // throws if column missing\n// after\nlong id = row.searchValueMeta(\"ID_TRANSFORMATION\") != null\n  ? row.getInteger(\"ID_TRANSFORMATION\", -1) : -1;","handlingStrategy":"validation","validationCode":"if (row.getRowMeta().indexOfValue(\"ID_TRANSFORMATION\") < 0) {\n  // column missing, use default\n} else {\n  long id = row.getInteger(\"ID_TRANSFORMATION\", -1);\n}","typeGuard":"boolean hasColumn(RowMetaAndData row, String name) {\n  return row != null && row.getRowMeta() != null && row.getRowMeta().indexOfValue(name) >= 0;\n}","tryCatchPattern":"try {\n  long id = row.getInteger(name, def);\n} catch (KettleValueException e) {\n  log.logError(\"Column missing: \" + name, e);\n  id = def;\n}","preventionTips":["Always check searchValueMeta(name) != null before named getters","Centralize field-name constants instead of inline strings","Use the (int index, ...) variants after a verified indexOfValue","Log rowMeta.toStringMeta() when a name lookup fails"],"tags":["kettle","column-not-found","lookup"],"backgroundTag":"unknown-column-name","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}