pentaho/pentaho-kettle · error · KettleException

A connection of type PALO is expected

Error message

A connection of type PALO is expected

What it means

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.

Solutions

  1. Open the step dialog and select/define a connection whose type is PALO.
  2. If no Palo connection exists, create one in the transformation's database connections pointing at the Palo OLAP server.
  3. If the connection type looks correct but fails after an upgrade, recreate the connection so the plugin's PALODatabaseMeta is registered properly.

Example fix

// before (in transformation XML)
<connection><type>MYSQL</type><name>conn</name>...</connection>
// after
<connection><type>PALO</type><name>palo-conn</name><hostname>localhost</hostname><port>7777</port></connection>
Defensive patterns

Strategy: type-guard

Validate before calling

// Before step init, assert the connection type
DatabaseMeta dbMeta = transMeta.findDatabase(connName);
if (dbMeta == null || !(dbMeta.getDatabaseInterface() instanceof PALODatabaseMeta)) {
  throw new IllegalArgumentException("Connection '" + connName + "' must be of type PALO");
}

Type guard

boolean isPaloConnection(DatabaseMeta db) {
  return db != null && db.getDatabaseInterface() instanceof PALODatabaseMeta;
}

Prevention

When it happens

Trigger: 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).

Common situations: 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.

Understand the failure class

Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/95722bdc5466d95a. Report an issue: GitHub.

Appendix: source

Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/diminput/PaloDimInputData.java:38

 */

package org.pentaho.di.trans.steps.palo.diminput;

import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.database.PALODatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.logging.DefaultLogLevel;
import org.pentaho.di.palo.core.PaloHelper;
import org.pentaho.di.trans.step.BaseStepData;
import org.pentaho.di.trans.step.StepDataInterface;

public class PaloDimInputData extends BaseStepData implements StepDataInterface {
  public PaloHelper helper;

  public PaloDimInputData( DatabaseMeta databaseMeta ) throws KettleException {
    super();
    if ( !( databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta ) ) {
      throw new KettleException( "A connection of type PALO is expected" );
    }
    this.helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );
  }
}

View on GitHub (pinned to f3058517a1)