t8y2/dbx · error · IllegalStateException
Unsupported Firebird parameter type: {parameterType}
Error message
Unsupported Firebird parameter type: {parameterType} What it means
While building a Firebird procedure source, the driver reads RDB$PARAMETER_TYPE from the procedure parameter metadata and only expects 0 (input) or 1 (output). Any other value means the metadata is in an unexpected form, so the agent aborts with IllegalStateException rather than emitting a parameter into the wrong list.
Source
Thrown at agents/drivers/firebird/src/main/java/com/dbx/agent/firebird/FirebirdAgent.java:108
ProcedureParameter parameter = new ProcedureParameter(
parameterName,
trimToNull(resultSet.getString("FIELD_SOURCE")),
trimToNull(resultSet.getString("PARAMETER_DEFAULT")),
nullableInt(resultSet, "PARAMETER_NULL_FLAG"),
nullableInt(resultSet, "FIELD_TYPE"),
nullableInt(resultSet, "FIELD_SUB_TYPE"),
nullableInt(resultSet, "FIELD_PRECISION"),
nullableInt(resultSet, "FIELD_SCALE"),
nullableInt(resultSet, "FIELD_LENGTH"),
nullableInt(resultSet, "CHAR_COUNT")
);
int parameterType = resultSet.getInt("PARAMETER_TYPE");
if (parameterType == 0) {
inputs.add(parameter);
} else if (parameterType == 1) {
outputs.add(parameter);
} else {
throw new IllegalStateException("Unsupported Firebird parameter type: " + parameterType);
}
}
}
}
String source = !found || body == null || body.isBlank()
? ""
: buildProcedureDdl(name, inputs, outputs, body);
return new ObjectSource(name, normalizedType, schema, source, false);
});
}
static String normalizeObjectSourceType(String objectType) {
if (objectType == null) {
throw new IllegalArgumentException("Unsupported object type: null");
}
String normalized = objectType.trim().toUpperCase(Locale.ROOT);
if (!"PROCEDURE".equals(normalized)) {View on GitHub (pinned to c0390bff16)
Solutions
- Inspect the procedure's parameters: SELECT PARAMETER_NAME, PARAMETER_TYPE FROM rdb$procedure_parameters WHERE rdb$procedure_name = ... to find the offending value.
- Recreate the procedure with a standard definition so parameters are plain IN/OUT.
- Update or align the Jaybird JDBC driver version so PARAMETER_TYPE values match the agent's expectations.
- If a legitimate new parameter kind is found, patch the driver agent to handle that PARAMETER_TYPE value.
Example fix
// before
} else {
throw new IllegalStateException("Unsupported Firebird parameter type: " + parameterType);
}
// after
} else {
LOG.warn("Skipping parameter " + parameter + " with unknown PARAMETER_TYPE " + parameterType);
} Defensive patterns
Strategy: try-catch
Try / catch
try {
src = agent.getObjectSource(conn, schema, procName, "PROCEDURE");
} catch (IllegalStateException e) {
if (e.getMessage() != null && e.getMessage().startsWith("Unsupported Firebird parameter type")) {
LOG.warn("Procedure {} has nonstandard parameter metadata; falling back to raw DDL", procName, e);
src = fetchRawProcedureDdl(conn, procName); // manual rdb$procedure_source query
} else { throw e; }
} Prevention
- Use a Jaybird JDBC driver version consistent with the agent's tested metadata mapping.
- Audit custom procedures for non-standard parameter definitions on Firebird upgrades.
- Verify RDB$PARAMETER_TYPE values (only 0/1 expected) when migrating from other Firebird versions.
- Keep a fallback that reads rdb$procedure_source directly for procedures the agent cannot process.
When it happens
Trigger: Iterating the procedure-parameter result set in getObjectSource when PARAMETER_TYPE holds a value other than 0 or 1 (e.g. a driver/JDBC metadata quirk or newer Firebird metadata returning additional parameter kinds).
Common situations: Using a Jaybird/driver version whose metadata mapping differs from what the agent expects; unusual procedure definitions or system-generated procedures; corrupted or third-party-altered system tables producing nonstandard PARAMETER_TYPE values.
Related errors
- Unsupported Firebird field type: {fieldType}
- Object source is not supported
- Object source is not supported
- Object source is not supported
- Unsupported object type: {objectType}
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/c0dbd476fed67ddc.
Report an issue: GitHub.