{"record":{"id":"80705ecb493e3d25","repo":"pentaho/pentaho-kettle","slug":"unable-to-find-field-field-in-the-input-rows-updatestream","errorCode":null,"errorMessage":"Unable to find field [<field>] in the input rows (updateStream)","messagePattern":"Unable to find field \\[<field>\\] in the input rows \\(updateStream\\)","errorType":"exception","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMeta.java","lineNumber":928,"sourceCode":"              tableField.setName( keyLookup[i] );\n              tableFields.addValueMeta( tableField );\n            } else {\n              throw new KettleStepException( \"Unable to find field [\" + keyStream[i] + \"] in the input rows\" );\n            }\n          }\n        }\n        // the lookup fields\n        for ( int i = 0; i < updateLookup.length; i++ ) {\n          ValueMetaInterface v = prev.searchValueMeta( updateStream[i] );\n          if ( v != null ) {\n            ValueMetaInterface vk = tableFields.searchValueMeta( updateStream[i] );\n            if ( vk == null ) { // do not add again when already added as key fields\n              ValueMetaInterface tableField = v.clone();\n              tableField.setName( updateLookup[i] );\n              tableFields.addValueMeta( tableField );\n            }\n          } else {\n            throw new KettleStepException( \"Unable to find field [\" + updateStream[i] + \"] in the input rows\" );\n          }\n        }\n\n        if ( !Utils.isEmpty( tableName ) ) {\n          Database db = new Database( loggingObject, databaseMeta );\n          try {\n            db.connect();\n\n            String schemaTable = databaseMeta.getQuotedSchemaTableCombination( schemaName, tableName );\n            String cr_table = db.getDDL( schemaTable, tableFields, null, false, null, true );\n\n            String cr_index = \"\";\n            String[] idx_fields = null;\n\n            if ( keyLookup != null && keyLookup.length > 0 ) {\n              idx_fields = new String[keyLookup.length];\n              for ( int i = 0; i < keyLookup.length; i++ ) {\n                idx_fields[i] = keyLookup[i];","sourceCodeStart":910,"sourceCodeEnd":946,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMeta.java#L910-L946","documentation":"Same validation path as 2287 but for the updateStream[i] fields: while assembling tableFields for the SQL/meta comparison, searchValueMeta(updateStream[i]) returned null and the step throws 'Unable to find field [x] in the input rows'. The update mapping references stream fields that the incoming rows do not contain.","triggerScenarios":"An 'Update stream' entry in the mapping grid points to a field absent from the previous step's output — schema drift, rename, or removal upstream; triggered during step metadata validation/getFields.","commonSituations":"Editing upstream steps after configuring the mapping; copying steps between transformations with different streams; case-sensitivity mismatches in field names.","solutions":["Re-select the update stream fields in the dialog from the actual input field list","Insert/repair an upstream Select values rename so the expected names exist","Preview the previous step and align the mapping grid with the real field names","Remove stale mapping rows for fields that no longer exist"],"exampleFix":"// before\nupdateStream[2] = \"qty\"  (renamed upstream to quantity) -> throw\n// after\nupdateStream[2] = \"quantity\"","handlingStrategy":"validation","validationCode":"var m = stepMeta.getStepMetaInterface();\nvar prev = transMeta.getPrevStepFields(stepMeta);\nm.getUpdateStream().forEach(function(u) { if (u != null && prev.searchValueMeta(u) == null) throw new Error(\"Missing update stream field: \" + u); });","typeGuard":"function fieldExists(rowMeta, name) { return name != null && rowMeta != null && rowMeta.searchValueMeta(name) != null; }","tryCatchPattern":"try { stepMeta.getStepMetaInterface().getFields(prev, \"tableFields\", rowMetaInterfaces, stepMeta, metaStore, transMeta); }\ncatch (KettleStepException e) { log.error(\"Update stream mapping invalid: \" + e.getMessage()); /* fix mapping */ }","preventionTips":["Remove stale mapping rows when upstream fields are deleted","Re-pick update stream fields after schema changes","Preview the previous step to see actual output fields","Avoid manually typed field names"],"tags":["kettle","field-not-found","validation","metadata"],"backgroundTag":"resource-not-found","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"}