{"record":{"id":"653ac2f0ecce7ad4","repo":"apache/druid","slug":"no-such-join-algorithm-s-supported-values-are","errorCode":null,"errorMessage":"No such join algorithm [%s]. Supported values are: %s","messagePattern":"No such join algorithm \\[(.+?)\\]\\. Supported values are: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":400,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/query/JoinAlgorithm.java","lineNumber":61,"sourceCode":"  };\n\n  private final String id;\n\n  JoinAlgorithm(String id)\n  {\n    this.id = id;\n  }\n\n  @JsonCreator\n  public static JoinAlgorithm fromString(final String id)\n  {\n    for (final JoinAlgorithm value : values()) {\n      if (value.id.equals(id)) {\n        return value;\n      }\n    }\n\n    throw new IAE(\"No such join algorithm [%s]. Supported values are: %s\", id, Arrays.toString(values()));\n  }\n\n  @JsonValue\n  public String getId()\n  {\n    return id;\n  }\n\n  /**\n   * Whether this join algorithm requires subqueries for all inputs.\n   */\n  public abstract boolean requiresSubquery();\n\n  @Override\n  public String toString()\n  {\n    return id;\n  }","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/query/JoinAlgorithm.java#L43-L79","documentation":"JoinAlgorithm is a closed enum (broadcast, sort-merge) parsed from its string id via fromString/JsonCreator. An unrecognized id throws this IllegalArgumentException listing the supported values, since joins cannot proceed without a valid algorithm choice.","triggerScenarios":"Submitting a query or datasource JSON with \"joinAlgorithm\":\"something\" that isn't one of the enum's ids, or an older client string no longer supported by this Druid version.","commonSituations":"Typos in joinAlgorithm in hand-written native query JSON; clients written against a different Druid version with different supported algorithms; case-sensitivity mistakes in the id.","solutions":["Use one of the supported values listed in the error message (e.g. \"broadcast\" or \"sortMerge\").","Check the exact spelling/casing against the enum ids in your Druid version.","If migrating from another version, consult that version's JoinAlgorithm enum for valid ids."],"exampleFix":"// before\n\"joinAlgorithm\": \"hash\"\n// after\n\"joinAlgorithm\": \"broadcast\"","handlingStrategy":"validation","validationCode":"Set<String> valid = Set.of(\"broadcast\", \"sortMerge\");\nif (joinAlgorithm != null && !valid.contains(joinAlgorithm)) {\n  throw new IllegalArgumentException(\"Unsupported joinAlgorithm: \" + joinAlgorithm);\n}","typeGuard":null,"tryCatchPattern":"try {\n  JoinAlgorithm alg = JoinAlgorithm.fromString(id);\n} catch (IllegalArgumentException e) {\n  alg = JoinAlgorithm.BROADCAST; // or surface a friendly message\n}","preventionTips":["Use JoinAlgorithm enum constants in code instead of raw strings.","Copy valid values from the error message listing supported ids.","Pin client JSON generation to your Druid version's enum ids."],"tags":["enum","join","invalid-enum-value","query-json"],"backgroundTag":"invalid-enum-value","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}