{"record":{"id":"d54b968d7ae5bdcd","repo":"pentaho/pentaho-kettle","slug":"tablecomparemeta-exception","errorCode":null,"errorMessage":"TableCompareMeta.Exception.NrRecordsReferenceFieldNotSpecified","messagePattern":"TableCompareMeta\\.Exception\\.NrRecordsReferenceFieldNotSpecified","errorType":"validation","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/tablecompare/TableCompareMeta.java","lineNumber":377,"sourceCode":"  }\n\n  @Override\n  public Object clone() {\n    TableCompareMeta retval = (TableCompareMeta) super.clone();\n\n    return retval;\n  }\n\n  @Override\n  public void getFields( Bowl bowl, RowMetaInterface inputRowMeta, String origin, RowMetaInterface[] info,\n    StepMeta nextStep, VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {\n\n    if ( Utils.isEmpty( nrErrorsField ) ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"TableCompareMeta.Exception.NrErrorsFieldIsNotSpecified\" ) );\n    }\n    if ( Utils.isEmpty( nrRecordsReferenceField ) ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"TableCompareMeta.Exception.NrRecordsReferenceFieldNotSpecified\" ) );\n    }\n    if ( Utils.isEmpty( nrRecordsCompareField ) ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"TableCompareMeta.Exception.NrRecordsCompareFieldNotSpecified\" ) );\n    }\n    if ( Utils.isEmpty( nrErrorsLeftJoinField ) ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"TableCompareMeta.Exception.NrErrorsLeftJoinFieldNotSpecified\" ) );\n    }\n    if ( Utils.isEmpty( nrErrorsInnerJoinField ) ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"TableCompareMeta.Exception.NrErrorsInnerJoinFieldNotSpecified\" ) );\n    }\n    if ( Utils.isEmpty( nrErrorsRightJoinField ) ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"TableCompareMeta.Exception.NrErrorsRightJoinFieldNotSpecified\" ) );\n    }","sourceCodeStart":359,"sourceCodeEnd":395,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/tablecompare/TableCompareMeta.java#L359-L395","documentation":"Second check in TableCompareMeta.getFields(): the 'number of records reference table' output field (nrRecordsReferenceField) is not specified. The step requires all six count/output field names to be set to build its output row metadata.","triggerScenarios":"getFields(...) invoked with nrRecordsReferenceField null/empty while nrErrorsField passed its check — thrown at TableCompareMeta.java:377.","commonSituations":"Programmatic step construction setting only some fields; partially migrated/edited .ktr XML; copy-pasting step config and forgetting the reference-record count field.","solutions":["Set the 'nr records reference field' in the step dialog (e.g. 'nr_records_reference').","In code, call meta.setNrRecordsReferenceField(\"nr_records_reference\") before execution.","Fix the .ktr XML <nr_records_reference_field> tag."],"exampleFix":"// before\nmeta.setNrErrorsField( \"nr_errors\" );\n// nrRecordsReferenceField left null\n// after\nmeta.setNrErrorsField( \"nr_errors\" );\nmeta.setNrRecordsReferenceField( \"nr_records_reference\" );","handlingStrategy":"validation","validationCode":"if ( meta.getNrRecordsReferenceField() == null || meta.getNrRecordsReferenceField().isEmpty() ) {\n  meta.setNrRecordsReferenceField( \"nr_records_reference\" );\n}","typeGuard":null,"tryCatchPattern":"try {\n  meta.getFields( ... );\n} catch ( KettleStepException e ) {\n  if ( e.getMessage().contains( \"NrRecordsReferenceFieldNotSpecified\" ) ) {\n    meta.setNrRecordsReferenceField( \"nr_records_reference\" );\n  }\n}","preventionTips":["Set all output field names in one helper method so none is forgotten.","Diff generated .ktr XML against a known-good transformation.","Re-check step settings after upgrading Pentaho versions."],"tags":["kettle","configuration","validation","missing-field"],"backgroundTag":"empty-required-field","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"}