pentaho/pentaho-kettle · error · KettleException
TableInput.Exception.NoParametersFound
Error message
TableInput.Exception.NoParametersFound
What it means
TableInput.readStartDate throws this when the step expects parameters from an info stream (insert/execute with 'Insert data from step' checked) but the parameters row metadata is empty — the info stream delivered no parameter columns. The step cannot bind the SQL statement's parameters without them.
Solutions
- Ensure the info-stream step outputs at least one field matching the ? placeholders in the SQL
- Check the field count of the upstream step via 'Show input fields' on the TableInput hop
- If parameters are not needed, uncheck the parameter/info-stream option in the TableInput dialog
- Verify the upstream step actually executes and emits rows before/alongside TableInput
Example fix
// before: info step emits no fields Constant (no fields defined) -> TableInput (SELECT * FROM t WHERE id = ?) // after: define the parameter field Constant: field 'id' = 42 -> TableInput (SELECT * FROM t WHERE id = ?)
Defensive patterns
Strategy: validation
Validate before calling
// verify the info step emits parameter fields before running
RowMetaInterface infoFields = transMeta.getInfoStepFields(tableInputStepMeta);
if (infoFields != null && infoFields.size() == 0) {
throw new IllegalStateException("Info step for TableInput emits no parameter fields; add one per ? placeholder");
} Try / catch
try { trans.execute(null); }
catch (KettleException e) {
if (e.getMessage().contains("NoParametersFound")) {
logError("Info stream has no parameter fields — fix upstream step or uncheck parameter option");
}
} Prevention
- Match the number of ? placeholders in the SQL to info-stream fields
- Preview the info step to confirm it emits data and fields
- Remove the info-stream setting if parameters are not actually needed
When it happens
Trigger: Running a TableInput step with 'Execute for each row' / info-stream parameters enabled where rowSet was found but parametersMeta.size() == 0 — the connected info step emitted rows with no fields, or no rows/fields arrived before the check.
Common situations: Wiring a Transform/Constant step that outputs zero fields into the TableInput info port; ordering issues where the info step hasn't produced data; deleting fields from the info step after wiring the hop.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- TableInput.Exception.NoRowSetFound
- AddSequence.Exception.ErrorReadingSequence
- AddSequence.Exception.NoSpecifiedMethod
- DatabaseJoinMeta.Exception.UnableToDetermineQueryFields +…
- Duplicate parameter ' ' detected.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/49d58cdf9620ef20.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/tableinput/TableInput.java:85
if ( log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "TableInput.Log.ReadingFromStep", data.infoStream.getStepname() ) );
}
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;View on GitHub (pinned to f3058517a1)