{"record":{"id":"95722bdc5466d95a","repo":"pentaho/pentaho-kettle","slug":"a-connection-of-type-palo-is-expected-palodiminputdata","errorCode":null,"errorMessage":"A connection of type PALO is expected","messagePattern":"A connection of type PALO is expected","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/diminput/PaloDimInputData.java","lineNumber":38,"sourceCode":" */\n\npackage org.pentaho.di.trans.steps.palo.diminput;\n\nimport org.pentaho.di.core.database.DatabaseMeta;\nimport org.pentaho.di.core.database.PALODatabaseMeta;\nimport org.pentaho.di.core.exception.KettleException;\nimport org.pentaho.di.core.logging.DefaultLogLevel;\nimport org.pentaho.di.palo.core.PaloHelper;\nimport org.pentaho.di.trans.step.BaseStepData;\nimport org.pentaho.di.trans.step.StepDataInterface;\n\npublic class PaloDimInputData extends BaseStepData implements StepDataInterface {\n  public PaloHelper helper;\n\n  public PaloDimInputData( DatabaseMeta databaseMeta ) throws KettleException {\n    super();\n    if ( !( databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta ) ) {\n      throw new KettleException( \"A connection of type PALO is expected\" );\n    }\n    this.helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );\n  }\n}\n","sourceCodeStart":20,"sourceCodeEnd":43,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/diminput/PaloDimInputData.java#L20-L43","documentation":"PaloDimInputData's constructor validates that the supplied database connection is a PALO-type connection before creating the PaloHelper. If the DatabaseMeta points to any other database type (MySQL, Postgres, etc.), it throws this KettleException immediately during step data initialization.","triggerScenarios":"The Palo Dim Input step's databaseMeta was configured with a non-PALO connection type; the step initializes (init/processRow begins) and constructs PaloDimInputData(databaseMeta).","commonSituations":"User selected a generic relational database connection in the step dialog instead of a Palo connection; a transformation was migrated and the connection type was reset; the Palo plugin's database type was renamed across versions leaving a stale connection type.","solutions":["Open the step dialog and select/define a connection whose type is PALO.","If no Palo connection exists, create one in the transformation's database connections pointing at the Palo OLAP server.","If the connection type looks correct but fails after an upgrade, recreate the connection so the plugin's PALODatabaseMeta is registered properly."],"exampleFix":"// before (in transformation XML)\n<connection><type>MYSQL</type><name>conn</name>...</connection>\n// after\n<connection><type>PALO</type><name>palo-conn</name><hostname>localhost</hostname><port>7777</port></connection>","handlingStrategy":"type-guard","validationCode":"// Before step init, assert the connection type\nDatabaseMeta dbMeta = transMeta.findDatabase(connName);\nif (dbMeta == null || !(dbMeta.getDatabaseInterface() instanceof PALODatabaseMeta)) {\n  throw new IllegalArgumentException(\"Connection '\" + connName + \"' must be of type PALO\");\n}","typeGuard":"boolean isPaloConnection(DatabaseMeta db) {\n  return db != null && db.getDatabaseInterface() instanceof PALODatabaseMeta;\n}","tryCatchPattern":null,"preventionTips":["Always create the step's connection as type PALO in the dialog","Check connection type after migrating transformations between environments","Recreate connections whose type plugin registration may have changed after upgrades"],"tags":["configuration","palo","connection-type","validation"],"backgroundTag":"incompatible-source-type","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"}