pentaho/pentaho-kettle · error · KettleException
TableInput.Exception.NoRowSetFound
Error message
TableInput.Exception.NoRowSetFound
What it means
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.
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
Example fix
// before: no hop added transMeta.addStep(fromStep); transMeta.addStep(tableInput); // after: add the info hop transMeta.addTransHop(new TransHopMeta(fromStep, tableInput));
Defensive patterns
Strategy: validation
Validate before calling
// confirm the info hop exists before running
StepMeta infoStep = transMeta.findStep(infoStepName);
StepMeta tiStep = transMeta.findStep("TableInput");
boolean wired = transMeta.getTransHops().stream()
.anyMatch(h -> h.getFromStep().equals(infoStep) && h.getToStep().equals(tiStep));
if (infoStep != null && !wired) { throw new IllegalStateException("Info step not connected to TableInput"); } Try / catch
try { trans.execute(null); }
catch (KettleException e) {
if (e.getMessage().contains("NoRowSetFound")) {
logError("Info row set missing — re-wire the hop from " + e.getMessage());
}
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- TableInput.Exception.NoParametersFound
- DatabaseJoinMeta.Exception.UnableToDetermineQueryFields +…
- Duplicate parameter ' ' detected.
- DynamicSQLRow.Exception.IncorrectNrTemplateFields
- DynamicSQLRow.Exception.SQLEmpty
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/a608a7578fd59d47.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/tableinput/TableInput.java:89
RowMetaInterface parametersMeta = new RowMeta();
Object[] parametersData = new Object[] {};
RowSet rowSet = findInputRowSet( data.infoStream.getStepname() );
if ( rowSet != null ) {
Object[] rowData = getRowFrom( rowSet ); // rows are originating from "lookup_from"
while ( rowData != null ) {
parametersData = RowDataUtil.addRowData( parametersData, parametersMeta.size(), rowData );
parametersMeta.addRowMeta( rowSet.getRowMeta() );
rowData = getRowFrom( rowSet ); // take all input rows if needed!
}
if ( parametersMeta.size() == 0 ) {
throw new KettleException( BaseMessages.getString( PKG,
"TableInput.Exception.NoParametersFound", data.infoStream.getStepname() ) );
}
} else {
throw new KettleException( BaseMessages.getString( PKG, "TableInput.Exception.NoRowSetFound", data.infoStream.getStepname() ) );
}
RowMetaAndData parameters = new RowMetaAndData( parametersMeta, parametersData );
return parameters;
}
public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {
dbLock.lock();
try {
if ( first ) { // we just got started
Object[] parameters;
RowMetaInterface parametersMeta;
first = false;
// Make sure we read data from source steps...View on GitHub (pinned to f3058517a1)