pentaho/pentaho-kettle · error · KettleException
A connection of type PALO is expected
Error message
A connection of type PALO is expected
What it means
PaloDimOutputData's constructor validates the passed DatabaseMeta: it only accepts a PALO-type connection (databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta). Any other database type throws this KettleException immediately at step data initialization.
Solutions
- Select a connection of type PALO in the step's connection dialog (or create one)
- Check that the referenced connection still exists and is PALO-typed in the target environment
- In code, verify databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta before constructing
Example fix
// before
new PaloDimOutputData(dbMeta); // dbMeta is MySQL
// after
if (dbMeta.getDatabaseInterface() instanceof PALODatabaseMeta) {
data = new PaloDimOutputData(dbMeta);
} Defensive patterns
Strategy: validation
Validate before calling
if (!(databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta)) {
throw new KettleException("Select a PALO-type connection");
} Type guard
boolean isPaloConnection(DatabaseMeta meta) { return meta.getDatabaseInterface() instanceof PALODatabaseMeta; } Try / catch
try { data = new PaloDimOutputData(databaseMeta); } catch (KettleException e) {
logError("Wrong connection type: " + e.getMessage(), e); setErrors(1);
} Prevention
- Always define/select a PALO connection in the step dialog
- Verify connections survive environment migrations (dev->prod)
- Do not substitute a generic JDBC connection for Palo
When it happens
Trigger: Constructing PaloDimOutputData (i.e., running the step) with a DatabaseMeta whose connection type is MySQL, Postgres, generic JDBC, etc., instead of a Palo connection.
Common situations: User selected a regular database connection in the step dialog instead of a defined Palo connection; transformation copied between environments where the Palo connection was replaced by a substitute; programmatically instantiating the step with the wrong DatabaseMeta.
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
- A connection of type PALO is expected
- Fields must be defined to do a preview
- Number of levels must be greater that 0 to process the rows
- There is no Palo database server connection defined
- A connection of type PALO is expected
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/eec388e9129fd680.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutputData.java:42
import java.util.ArrayList;
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 PaloDimOutputData extends BaseStepData implements StepDataInterface {
public PaloHelper helper;
public int[] indexes;
public ArrayList<String> elementNamesBatch = new ArrayList<String>();
public PaloDimOutputData( DatabaseMeta databaseMeta ) throws KettleException {
super();
if ( !( databaseMeta.getDatabaseInterface() instanceof PALODatabaseMeta ) ) {
throw new KettleException( "A connection of type PALO is expected" );
}
// org.pentaho.di.core.logging.
this.helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );
}
}
View on GitHub (pinned to f3058517a1)