{"record":{"id":"a608a7578fd59d47","repo":"pentaho/pentaho-kettle","slug":"tableinput-exception-norowsetfound","errorCode":null,"errorMessage":"TableInput.Exception.NoRowSetFound","messagePattern":"TableInput\\.Exception\\.NoRowSetFound","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/tableinput/TableInput.java","lineNumber":89,"sourceCode":"    RowMetaInterface parametersMeta = new RowMeta();\n    Object[] parametersData = new Object[] {};\n\n    RowSet rowSet = findInputRowSet( data.infoStream.getStepname() );\n    if ( rowSet != null ) {\n      Object[] rowData = getRowFrom( rowSet ); // rows are originating from \"lookup_from\"\n      while ( rowData != null ) {\n        parametersData = RowDataUtil.addRowData( parametersData, parametersMeta.size(), rowData );\n        parametersMeta.addRowMeta( rowSet.getRowMeta() );\n\n        rowData = getRowFrom( rowSet ); // take all input rows if needed!\n      }\n\n      if ( parametersMeta.size() == 0 ) {\n        throw new KettleException( BaseMessages.getString( PKG,\n          \"TableInput.Exception.NoParametersFound\", data.infoStream.getStepname() ) );\n      }\n    } else {\n      throw new KettleException( BaseMessages.getString( PKG, \"TableInput.Exception.NoRowSetFound\", data.infoStream.getStepname() ) );\n    }\n\n    RowMetaAndData parameters = new RowMetaAndData( parametersMeta, parametersData );\n\n    return parameters;\n  }\n\n  public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {\n    dbLock.lock();\n    try {\n\n      if ( first ) { // we just got started\n\n        Object[] parameters;\n        RowMetaInterface parametersMeta;\n        first = false;\n\n        // Make sure we read data from source steps...","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/tableinput/TableInput.java#L71-L107","documentation":"TableInput.readStartDate throws this when the step requires an info stream for parameters but no row set could be found for the configured info step — meaning the hop from the info step isn't wired, the info stepname is unset, or the row set wasn't initialized. The step cannot receive parameters at all.","triggerScenarios":"data.infoStream != null (step configured to take data from another step) but getRowFrom rowset lookup returns null — the 'Insert data from step' names a step not connected to the info hop, or the transformation graph wasn't initialized with that hop.","commonSituations":"Renaming or deleting the upstream step referenced in the TableInput settings; copying TableInput between transformations where the info hop was not recreated; programmatic construction of TransMeta without adding the info-hop TransHopMeta.","solutions":["Re-wire the hop from the parameter-providing step to the TableInput info port","Open the TableInput dialog and re-select the correct 'Insert data from step' value","When building TransMeta in code, add the TransHopMeta connecting the info step to TableInput","If no parameters are needed, disable the info-stream option so this code path is skipped"],"exampleFix":"// before: no hop added\ntransMeta.addStep(fromStep); transMeta.addStep(tableInput);\n// after: add the info hop\ntransMeta.addTransHop(new TransHopMeta(fromStep, tableInput));","handlingStrategy":"validation","validationCode":"// confirm the info hop exists before running\nStepMeta infoStep = transMeta.findStep(infoStepName);\nStepMeta tiStep = transMeta.findStep(\"TableInput\");\nboolean wired = transMeta.getTransHops().stream()\n  .anyMatch(h -> h.getFromStep().equals(infoStep) && h.getToStep().equals(tiStep));\nif (infoStep != null && !wired) { throw new IllegalStateException(\"Info step not connected to TableInput\"); }","typeGuard":null,"tryCatchPattern":"try { trans.execute(null); }\ncatch (KettleException e) {\n  if (e.getMessage().contains(\"NoRowSetFound\")) {\n    logError(\"Info row set missing — re-wire the hop from \" + e.getMessage());\n  }\n}","preventionTips":["When copying TableInput steps across transformations, recreate the info hop","When building TransMeta in code, always add the TransHopMeta for info streams","Re-select 'Insert data from step' after renaming upstream steps"],"tags":["kettle","sql","parameters","transformation-graph"],"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"}