{"record":{"id":"49d58cdf9620ef20","repo":"pentaho/pentaho-kettle","slug":"tableinput-exception-noparametersfound","errorCode":null,"errorMessage":"TableInput.Exception.NoParametersFound","messagePattern":"TableInput\\.Exception\\.NoParametersFound","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/tableinput/TableInput.java","lineNumber":85,"sourceCode":"    if ( log.isDetailed() ) {\n      logDetailed( BaseMessages.getString( PKG, \"TableInput.Log.ReadingFromStep\", data.infoStream.getStepname() ) );\n    }\n\n    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;","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/tableinput/TableInput.java#L67-L103","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before: info step emits no fields\nConstant (no fields defined) -> TableInput (SELECT * FROM t WHERE id = ?)\n// after: define the parameter field\nConstant: field 'id' = 42 -> TableInput (SELECT * FROM t WHERE id = ?)","handlingStrategy":"validation","validationCode":"// verify the info step emits parameter fields before running\nRowMetaInterface infoFields = transMeta.getInfoStepFields(tableInputStepMeta);\nif (infoFields != null && infoFields.size() == 0) {\n  throw new IllegalStateException(\"Info step for TableInput emits no parameter fields; add one per ? placeholder\");\n}","typeGuard":null,"tryCatchPattern":"try { trans.execute(null); }\ncatch (KettleException e) {\n  if (e.getMessage().contains(\"NoParametersFound\")) {\n    logError(\"Info stream has no parameter fields — fix upstream step or uncheck parameter option\");\n  }\n}","preventionTips":["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"],"tags":["kettle","sql","parameters","step-execution"],"backgroundTag":"missing-required-argument","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"}