{"record":{"id":"f1ed8dc7c87bd372","repo":"SonarSource/sonarqube","slug":"unknown-dialect-s-f1ed8d","errorCode":null,"errorMessage":"Unknown dialect '%s'","messagePattern":"Unknown dialect '(.+?)'","errorType":"exception","errorClass":"java.lang.UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/SmallIntColumnDef.java","lineNumber":51,"sourceCode":" * Integer that supports signed 16-bit range [-32768..32767].\n */\n@Immutable\npublic class SmallIntColumnDef extends AbstractColumnDef {\n\n  private SmallIntColumnDef(Builder builder) {\n    super(builder.columnName, builder.isNullable, null);\n  }\n\n  public static Builder newSmallIntColumnDefBuilder() {\n    return new Builder();\n  }\n\n  @Override\n  public String generateSqlType(Dialect dialect) {\n    return switch (dialect.getId()) {\n      case PostgreSql.ID, H2.ID, MsSql.ID -> \"SMALLINT\";\n      case Oracle.ID -> \"NUMBER(5)\";\n      default -> throw new UnsupportedOperationException(String.format(\"Unknown dialect '%s'\", dialect.getId()));\n    };\n  }\n\n  public static class Builder {\n    @CheckForNull\n    private String columnName;\n    private boolean isNullable = true;\n\n    public Builder setColumnName(String columnName) {\n      this.columnName = validateColumnName(columnName);\n      return this;\n    }\n\n    public Builder setIsNullable(boolean isNullable) {\n      this.isNullable = isNullable;\n      return this;\n    }\n","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/SonarSource/sonarqube/blob/184c821202192afc1c599fc912d0889b69fffa53/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/SmallIntColumnDef.java#L33-L69","documentation":"SmallIntColumnDef.generateSqlType maps dialects to SMALLINT (PostgreSQL, H2, MsSql) or NUMBER(5) (Oracle). Any other dialect id hits the default branch and throws UnsupportedOperationException \"Unknown dialect '%s'\". Same family as the other column-def dialect checks: migrations only support four database engines.","triggerScenarios":"Migration DDL generation for a SMALLINT column with a dialect id outside {postgresql, h2, mssql, oracle}.","commonSituations":"Running SonarQube against MySQL/MariaDB or another unsupported engine; tests supplying a fake Dialect id; misconfigured JDBC URL leading to a wrong or unknown dialect.","solutions":["Configure a supported database via sonar.jdbc.url (PostgreSQL, SQL Server, Oracle, H2 for dev).","Check why the resolved dialect id is unexpected — verify the JDBC driver and URL mapping to a Dialect implementation.","In tests, use supported dialect constants (PostgreSql.ID, H2.ID, MsSql.ID, Oracle.ID).","Add a switch case for the new dialect if intentionally extending support."],"exampleFix":"// before\nsonar.jdbc.url=jdbc:mariadb://db:3306/sonar\n\n// after\nsonar.jdbc.url=jdbc:postgresql://db:5432/sonarqube","handlingStrategy":"validation","validationCode":"Set<String> ok = Set.of(PostgreSql.ID, H2.ID, MsSql.ID, Oracle.ID);\nif (!ok.contains(dialect.getId())) throw new IllegalArgumentException(\"Unsupported dialect: \" + dialect.getId());","typeGuard":null,"tryCatchPattern":"try {\n  String sql = smallIntColumnDef.generateSqlType(dialect);\n} catch (UnsupportedOperationException e) {\n  throw new IllegalStateException(\"Migrations require postgres/mssql/oracle/h2\", e);\n}","preventionTips":["Check startup logs for the resolved dialect before running schema migrations.","Avoid pointing SonarQube at MySQL/MariaDB or other unsupported engines.","When testing migrations, parametrize over the four supported dialects."],"tags":["database","migration","dialect","unsupported","sonarqube"],"backgroundTag":"unsupported-enum-value","analyzedSha":"184c821202192afc1c599fc912d0889b69fffa53","analyzedAt":"2026-09-09T12:23:51.573Z","contentChangedAt":"2026-09-09T12:23:51.573Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}