{"record":{"id":"58828b6d68b2c5c7","repo":"pentaho/pentaho-kettle","slug":"a-connection-of-type-palo-is-expected-palocelloutputdata","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/celloutput/PaloCellOutputData.java","lineNumber":43,"sourceCode":"import java.util.List;\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 PaloCellOutputData extends BaseStepData implements StepDataInterface {\n  public PaloHelper helper;\n  public int[] indexes;\n  public List<Object[]> batchCache = new ArrayList<Object[]>();\n\n  public PaloCellOutputData( 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":25,"sourceCodeEnd":48,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/celloutput/PaloCellOutputData.java#L25-L48","documentation":"Thrown in the PaloCellOutputData constructor when the supplied DatabaseMeta is not a PALO-type connection. Palo cell output can only run against a Palo OLAP connection, so non-PALO interfaces are rejected before the PaloHelper is created.","triggerScenarios":"Creating PaloCellOutputData with a DatabaseMeta whose getDatabaseInterface() is not PALODatabaseMeta — the step's connection points to a relational database instead of Palo.","commonSituations":"Wrong connection selected in the Palo Cell Output dialog; transformation transported between environments losing the Palo connection reference; programmatic construction with an arbitrary DatabaseMeta.","solutions":["Select a Palo-type database connection for the step in the dialog.","Programmatically verify databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta before instantiating.","Ensure the Palo connection definition is exported/imported together with the transformation."],"exampleFix":"// before\nnew PaloCellOutputData(relationalDbMeta); // throws\n// after\nif (dbMeta.getDatabaseInterface() instanceof PALODatabaseMeta) {\n  data = new PaloCellOutputData(dbMeta);\n}","handlingStrategy":"type-guard","validationCode":"if (!(dbMeta.getDatabaseInterface() instanceof PALODatabaseMeta)) { throw new IllegalArgumentException(\"Step requires a PALO connection\"); }","typeGuard":"boolean isPalo(DatabaseMeta dbMeta) { return dbMeta != null && dbMeta.getDatabaseInterface() instanceof PALODatabaseMeta; }","tryCatchPattern":"try { data = new PaloCellOutputData(dbMeta); } catch (KettleException e) { /* wrong connection type — reconfigure step */ }","preventionTips":["Only attach Palo connections to Palo Cell Output steps","Verify connection references after moving transformations between environments","Check connection type in code when building metadata programmatically"],"tags":["kettle","palo","connection","config"],"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"}