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

  1. Re-wire the hop from the parameter-providing step to the TableInput info port
  2. Open the TableInput dialog and re-select the correct 'Insert data from step' value
  3. When building TransMeta in code, add the TransHopMeta connecting the info step to TableInput
  4. 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 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


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)