{"record":{"id":"fd30177b988792ba","repo":"hibernate/hibernate-orm","slug":"unexpected-frame-mode-frameclause-getchild-0","errorCode":null,"errorMessage":"Unexpected frame mode: {frameClause.getChild(0)}","messagePattern":"Unexpected frame mode: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java","lineNumber":5375,"sourceCode":"\t\tfinal List<SqmSortSpecification> orderList =\n\t\t\t\torderByClauseContext != null\n\t\t\t\t\t\t? visitOrderByClause( orderByClauseContext, false ).getSortSpecifications()\n\t\t\t\t\t\t: emptyList();\n\n\t\tfinal FrameMode mode;\n\t\tfinal FrameKind startKind;\n\t\tfinal SqmExpression<?> startExpression;\n\t\tfinal FrameKind endKind;\n\t\tfinal SqmExpression<?> endExpression;\n\t\tfinal FrameExclusion exclusion;\n\t\tfinal var frameClause = ctx.frameClause();\n\t\tif ( frameClause != null ) {\n\t\t\tfinal var symbol = ((TerminalNode) frameClause.getChild( 0 )).getSymbol();\n\t\t\tmode = switch ( symbol.getType() ) {\n\t\t\t\tcase HqlParser.RANGE -> FrameMode.RANGE;\n\t\t\t\tcase HqlParser.ROWS -> FrameMode.ROWS;\n\t\t\t\tcase HqlParser.GROUPS -> FrameMode.GROUPS;\n\t\t\t\tdefault -> throw new IllegalArgumentException( \"Unexpected frame mode: \" + frameClause.getChild( 0 ) );\n\t\t\t};\n\t\t\tfinal int frameStartIndex;\n\t\t\tif ( frameClause.getChild( 1 ) instanceof TerminalNode ) {\n\t\t\t\tframeStartIndex = 2;\n\t\t\t\tendKind = getFrameKind( frameClause.getChild( 4 ) );\n\t\t\t\tendExpression = endKind == FrameKind.OFFSET_FOLLOWING || endKind == FrameKind.OFFSET_PRECEDING\n\t\t\t\t\t\t? (SqmExpression<?>) frameClause.getChild( 4 ).getChild( 0 ).accept( this )\n\t\t\t\t\t\t: null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tframeStartIndex = 1;\n\t\t\t\tendKind = FrameKind.CURRENT_ROW;\n\t\t\t\tendExpression = null;\n\t\t\t}\n\t\t\tstartKind = getFrameKind( frameClause.getChild( frameStartIndex ) );\n\t\t\tstartExpression =\n\t\t\t\t\tstartKind == FrameKind.OFFSET_FOLLOWING || startKind == FrameKind.OFFSET_PRECEDING\n\t\t\t\t\t\t\t? (SqmExpression<?>) frameClause.getChild( frameStartIndex ).getChild( 0 ).accept( this )","sourceCodeStart":5357,"sourceCodeEnd":5393,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java#L5357-L5393","documentation":"Error \"Unexpected frame mode: {frameClause.getChild(0)}\" thrown in hibernate/hibernate-orm.","triggerScenarios":"The HQL parser produced a node the translator does not expect: Unexpected frame mode: <value>","commonSituations":"Usually an internal grammar edge case in window-frame or expression parsing; can surface with unusual but syntactically accepted HQL.","solutions":["The window frame mode is not one of RANGE, ROWS, or GROUPS. Correct the OVER clause frame specification."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}