{"record":{"id":"2bb32819696f19a9","repo":"pentaho/pentaho-kettle","slug":"a-connection-of-type-palo-is-expected","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/cellinput/PaloCellInputData.java","lineNumber":39,"sourceCode":"\npackage org.pentaho.di.trans.steps.palo.cellinput;\n\nimport org.pentaho.di.palo.core.PaloHelper;\nimport org.pentaho.di.trans.step.BaseStepData;\nimport org.pentaho.di.trans.step.StepDataInterface;\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;\n\npublic class PaloCellInputData extends BaseStepData implements StepDataInterface {\n  public PaloHelper helper;\n\n  public PaloCellInputData( 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":21,"sourceCodeEnd":44,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/cellinput/PaloCellInputData.java#L21-L44","documentation":"Thrown in the PaloCellInputData constructor when the supplied DatabaseMeta is not a PALO-type connection. The Palo helper only works against Palo OLAP servers, so any other database interface is rejected before a PaloHelper is created.","triggerScenarios":"Creating PaloCellInputData with a DatabaseMeta whose getDatabaseInterface() is not an instance of PALODatabaseMeta — i.e. the step's connection field points at MySQL, Oracle, Postgres, etc.","commonSituations":"User selected a regular relational database connection in the Palo Cell Input step dialog; transformation copied from another environment where the connection type was changed; programmatic metadata construction with the wrong DatabaseMeta.","solutions":["Open the step's dialog and select/assign a Palo-type database connection.","Verify the DatabaseMeta's connection type is Palo before instantiating the step data.","Ensure the connection definition survived transport (export/import can change connection references)."],"exampleFix":"// before\nDatabaseMeta conn = transMeta.findDatabase(\"MyMySQLConn\");\ndata = new PaloCellInputData(conn); // throws\n// after\nDatabaseMeta conn = transMeta.findDatabase(\"PaloServer\");\nif (conn.getDatabaseInterface() instanceof PALODatabaseMeta) {\n  data = new PaloCellInputData(conn);\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 PaloCellInputData(dbMeta); } catch (KettleException e) { /* connection type wrong — prompt user to select Palo connection */ }","preventionTips":["Assign only Palo-type connections to Palo steps","Verify connection type after import/export of transformations","Name connections clearly (e.g. 'PaloServer') to avoid mis-selection"],"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"}