{"record":{"id":"d5670688c93211cc","repo":"SonarSource/sonarqube","slug":"unsupported-dialect-id-d56706","errorCode":null,"errorMessage":"Unsupported dialect id ","messagePattern":"Unsupported dialect id ","errorType":"exception","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameTableBuilder.java","lineNumber":88,"sourceCode":"    checkArgument(!name.equals(newName), \"Names must be different\");\n    return createSqlStatement();\n  }\n\n  private List<String> createSqlStatement() {\n    switch (dialect.getId()) {\n      case H2.ID, PostgreSql.ID:\n        return singletonList(\"ALTER TABLE \" + name + \" RENAME TO \" + newName);\n      case MsSql.ID:\n        return singletonList(\"EXEC sp_rename '\" + name + \"', '\" + newName + \"'\");\n      case Oracle.ID:\n        String renameSqlCommand = \"RENAME \" + name + \" TO \" + newName;\n        return autoGeneratedId ? asList(\n          \"DROP TRIGGER \" + name + \"_idt\", renameSqlCommand,\n          \"RENAME \" + name + \"_seq TO \" + newName + \"_seq\",\n            CreateTableBuilder.createOracleTriggerForTable(newName))\n          : singletonList(renameSqlCommand);\n      default:\n        throw new IllegalArgumentException(\"Unsupported dialect id \" + dialect.getId());\n    }\n  }\n}\n","sourceCodeStart":70,"sourceCodeEnd":92,"githubUrl":"https://github.com/SonarSource/sonarqube/blob/184c821202192afc1c599fc912d0889b69fffa53/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameTableBuilder.java#L70-L92","documentation":"RenameTableBuilder.build() emits dialect-specific table rename SQL (including Oracle trigger/sequence handling for auto-generated ids). Any dialect id other than the supported ones throws IllegalArgumentException \"Unsupported dialect id <id>\".","triggerScenarios":"Running a migration step that renames a table via RenameTableBuilder.createSqlStatement on a Dialect with an id outside the supported set (h2, postgresql, mssql, oracle).","commonSituations":"Deploying SonarQube on an unofficial database; a newly registered dialect whose SQL builders were not all updated; test stubs with arbitrary dialect ids.","solutions":["Use a database officially supported by your SonarQube version.","Add the missing dialect case to RenameTableBuilder, matching its RENAME TABLE syntax.","Align dialect registration: every new Dialect id must be handled in all sql builders (DropTableBuilder, RenameTableBuilder, etc.)."],"exampleFix":"// before\ndefault:\n  throw new IllegalArgumentException(\"Unsupported dialect id \" + dialect.getId());\n// after\ncase PostgreSql.ID, MySql.ID:\n  return singletonList(\"RENAME TABLE \" + name + \" TO \" + newName);\ndefault:\n  throw new IllegalArgumentException(\"Unsupported dialect id \" + dialect.getId());","handlingStrategy":"validation","validationCode":"if (!Set.of(H2.ID, PostgreSql.ID, MsSql.ID, Oracle.ID).contains(dialect.getId())) {\n  throw new IllegalArgumentException(\"Table rename unsupported for \" + dialect.getId());\n}","typeGuard":"boolean supportsRenameTable(Dialect d) { return Set.of(H2.ID, PostgreSql.ID, MsSql.ID, Oracle.ID).contains(d.getId()); }","tryCatchPattern":"try {\n  sqls = new RenameTableBuilder(dialect).rename(name, newName).build();\n} catch (IllegalArgumentException e) {\n  LOG.error(\"Table rename failed: {}\", e.getMessage());\n}","preventionTips":["Migrate data before switching to an unsupported/newer database engine.","Handle Oracle's trigger/sequence companion objects when renaming auto-id tables.","Keep dialect switch statements in sync across all *Builder classes."],"tags":["database","migration","unsupported-dialect","table-rename"],"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"}