{"record":{"id":"a7090989ca858d55","repo":"pentaho/pentaho-kettle","slug":"there-is-no-palo-database-server-connection-defined-a70909","errorCode":null,"errorMessage":"There is no Palo database server connection defined","messagePattern":"There is no Palo database server connection defined","errorType":"exception","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/diminput/PaloDimInputMeta.java","lineNumber":131,"sourceCode":"        String levelNumber = XMLHandler.getTagValue( fnode, \"levelnumber\" );\n        String fieldName = XMLHandler.getTagValue( fnode, \"fieldname\" );\n        String fieldType = XMLHandler.getTagValue( fnode, \"fieldtype\" );\n        this.levels.add( new PaloDimensionLevel( levelName, Integer.parseInt( levelNumber ), fieldName, fieldType ) );\n      }\n    } catch ( Exception e ) {\n      throw new KettleXMLException( \"Unable to load step info from XML\", e );\n    }\n  }\n\n  public void setDefault() {\n  }\n\n  @Override\n  public void getFields( Bowl bowl, final RowMetaInterface row, final String origin, final RowMetaInterface[] info,\n      final StepMeta nextStep, final VariableSpace space, Repository repository, IMetaStore metaStore )\n    throws KettleStepException {\n    if ( databaseMeta == null ) {\n      throw new KettleStepException( \"There is no Palo database server connection defined\" );\n    }\n    final PaloHelper helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );\n    try {\n      helper.connect();\n      try {\n        final RowMetaInterface rowMeta =\n            helper.getDimensionRowMeta( this.getDimension(), this.getLevels(), this.getBaseElementsOnly() );\n        row.addRowMeta( rowMeta );\n      } finally {\n        helper.disconnect();\n      }\n    } catch ( Exception e ) {\n      throw new KettleStepException( e );\n    }\n  }\n\n  public String getXML() {\n    StringBuffer retval = new StringBuffer();","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/diminput/PaloDimInputMeta.java#L113-L149","documentation":"Thrown from PaloDimInputMeta.getFields when the step tries to determine its output row layout but databaseMeta is null — i.e., no Palo database connection has been defined for the step. The step needs to connect to the Palo server to query dimension levels and build the row metadata.","triggerScenarios":"getFields() is called (e.g. during transformation validation, preview, or when downstream steps ask for row metadata) while the step's connection field was never set in the dialog.","commonSituations":"Freshly added Palo Dim Input step where the user forgot to pick a connection; transformation XML migrated between systems losing the connection reference; connection deleted from the transformation while the step still referenced it.","solutions":["Open the Palo Dim Input step dialog and select an existing PALO connection (or define a new one).","Save the transformation so the connection reference persists.","If the connection existed but was deleted, re-add it with the same settings."],"exampleFix":"// before (step XML without connection)\n<diminput><levels>...</levels></diminput>\n// after\n<diminput><connection>palo-conn</connection><levels>...</levels></diminput>","handlingStrategy":"validation","validationCode":"// Guard before getFields/building row layout\nif (meta.getDatabaseMeta() == null) {\n  throw new IllegalStateException(\"Palo Dim Input step has no connection defined\");\n}","typeGuard":"boolean hasConnection(PaloDimInputMeta meta) {\n  return meta != null && meta.getDatabaseMeta() != null;\n}","tryCatchPattern":"try {\n  rowMeta = buildRowMeta(meta, ...);\n} catch (KettleStepException e) {\n  if (e.getMessage().contains(\"no Palo database\")) {\n    log.error(\"Select a PALO connection in the step dialog\");\n  }\n}","preventionTips":["Always select a connection when adding the step","Verify connection references survive transformation migrations","Delete-and-recreate steps whose connection reference was orphaned"],"tags":["configuration","missing-connection","palo","validation"],"backgroundTag":"missing-required-config-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"}