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

  1. Inspect the procedure's parameters: SELECT PARAMETER_NAME, PARAMETER_TYPE FROM rdb$procedure_parameters WHERE rdb$procedure_name = ... to find the offending value.
  2. Recreate the procedure with a standard definition so parameters are plain IN/OUT.
  3. Update or align the Jaybird JDBC driver version so PARAMETER_TYPE values match the agent's expectations.
  4. 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

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


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/c0dbd476fed67ddc. Report an issue: GitHub.