quarkusio/quarkus · error · RuntimeException

Unknown Reactive Sql Client <client>

Error message

Unknown Reactive Sql Client <client>

What it means

OidcDbTokenStateManagerProcessor.produceDbTokenStateManagerBean throws when the selected Reactive SQL client does not match any of the supported clients (PostgreSQL, MySQL, MSSQL, DB2, Oracle). Each supported client requires its own parameter placeholder syntax for building SQL statements.

Source

Thrown at extensions/oidc-db-token-state-manager/deployment/src/main/java/io/quarkus/oidc/db/token/state/manager/OidcDbTokenStateManagerProcessor.java:58

    @Record(STATIC_INIT)
    @BuildStep
    SyntheticBeanBuildItem produceDbTokenStateManagerBean(OidcDbTokenStateManagerRecorder recorder,
            ReactiveSqlClientBuildItem sqlClientBuildItem) {
        final String[] queryParamPlaceholders;
        switch (sqlClientBuildItem.reactiveClient) {
            case REACTIVE_PG_CLIENT:
                queryParamPlaceholders = new String[] { "$1", "$2", "$3", "$4", "$5", "$6", "$7" };
                break;
            case REACTIVE_MSSQL_CLIENT:
                queryParamPlaceholders = new String[] { "@p1", "@p2", "@p3", "@p4", "@p5", "@p6", "@p7" };
                break;
            case REACTIVE_MYSQL_CLIENT:
            case REACTIVE_DB2_CLIENT:
            case REACTIVE_ORACLE_CLIENT:
                queryParamPlaceholders = new String[] { "?", "?", "?", "?", "?", "?", "?" };
                break;
            default:
                throw new RuntimeException("Unknown Reactive Sql Client " + sqlClientBuildItem.reactiveClient);
        }
        String deleteStatement = format("DELETE FROM oidc_db_token_state_manager WHERE id = %s", queryParamPlaceholders[0]);
        String getQuery = format(
                "SELECT id_token, access_token, refresh_token, access_token_expires_in, access_token_scope FROM oidc_db_token_state_manager WHERE "
                        +
                        "id = %s",
                queryParamPlaceholders[0]);
        String insertStatement = format("INSERT INTO oidc_db_token_state_manager (id_token, access_token, refresh_token," +
                " access_token_expires_in, access_token_scope, expires_in, id) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                queryParamPlaceholders[0],
                queryParamPlaceholders[1],
                queryParamPlaceholders[2], queryParamPlaceholders[3], queryParamPlaceholders[4], queryParamPlaceholders[5],
                queryParamPlaceholders[6]);
        return SyntheticBeanBuildItem
                .configure(OidcDbTokenStateManager.class)
                .alternative(true)
                .priority(1)
                .addType(TokenStateManager.class)

View on GitHub (pinned to e1c734241f)

Solutions

  1. Use one of the supported reactive SQL clients: PostgreSQL, MySQL, MSSQL, DB2, or Oracle
  2. Check which reactive SQL client extensions are present and remove the unsupported one
  3. Upgrade quarkus-oidc-db-token-state-manager to a version supporting your client

Example fix

// before
dependencies: quarkus-reactive-<unsupported>-client only
// after
add io.quarkus:quarkus-reactive-pg-client (or mysql/mssql/db2/oracle)
Defensive patterns

Strategy: validation

Validate before calling

Set<ReactiveSqlClient> supported = Set.of(REACTIVE_PG_CLIENT, REACTIVE_MYSQL_CLIENT,
        REACTIVE_MSSQL_CLIENT, REACTIVE_DB2_CLIENT, REACTIVE_ORACLE_CLIENT);
if (!supported.contains(reactiveClient)) {
    throw new IllegalArgumentException("Unsupported reactive SQL client: " + reactiveClient);
}

Prevention

When it happens

Trigger: The detected ReactiveSqlClientBuildItem.reactiveClient is not one of REACTIVE_PG_CLIENT, REACTIVE_MYSQL_CLIENT, REACTIVE_MSSQL_CLIENT, REACTIVE_DB2_CLIENT, REACTIVE_ORACLE_CLIENT in the switch/default in the bean producer.

Common situations: A new/unsupported reactive SQL client extension is on the classpath and wins detection; internal wiring passes an unexpected enum value; future Quarkus versions add new client types not yet handled by this extension.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/7e7b23f7260f3ea5. Report an issue: GitHub.