@@ -2464,7 +2464,8 @@ public SqmPredicate visitBinaryExpressionPredicate(HqlParser.BinaryExpressionPre
24642464 operationSymbol = ((TerminalNode ) ctx .getChild ( 2 )).getSymbol ();
24652465 }
24662466 else {
2467- negated = false ;
2467+ negated = firstSymbol .getType () == HqlParser .IS
2468+ && ((TerminalNode ) ctx .getChild ( 2 )).getSymbol ().getType () == HqlParser .NOT ;
24682469 operationSymbol = firstSymbol ;
24692470 }
24702471 final var expressions = ctx .expression ();
@@ -2547,20 +2548,16 @@ public SqmPredicate visitBinaryExpressionPredicate(HqlParser.BinaryExpressionPre
25472548 createComparisonPredicate ( ComparisonOperator .GREATER_THAN , lhsCtx , rhsCtx );
25482549 case HqlParser .GREATER_EQUAL ->
25492550 createComparisonPredicate ( ComparisonOperator .GREATER_THAN_OR_EQUAL , lhsCtx , rhsCtx );
2551+ case HqlParser .IS -> {
2552+ final ComparisonOperator comparisonOperator = !negated
2553+ ? ComparisonOperator .DISTINCT_FROM
2554+ : ComparisonOperator .NOT_DISTINCT_FROM ;
2555+ yield createComparisonPredicate ( comparisonOperator , lhsCtx , rhsCtx );
2556+ }
25502557 default -> throw new AssertionError ( "Unknown binary expression predicate: " + operationSymbol );
25512558 };
25522559 }
25532560
2554- @ Override
2555- public SqmPredicate visitIsDistinctFromPredicate (HqlParser .IsDistinctFromPredicateContext ctx ) {
2556- final var leftExpressionContext = ctx .expression ( 0 );
2557- final var rightExpressionContext = ctx .expression ( 1 );
2558- final ComparisonOperator comparisonOperator = ctx .NOT () == null
2559- ? ComparisonOperator .DISTINCT_FROM
2560- : ComparisonOperator .NOT_DISTINCT_FROM ;
2561- return createComparisonPredicate ( comparisonOperator , leftExpressionContext , rightExpressionContext );
2562- }
2563-
25642561 private SqmComparisonPredicate createComparisonPredicate (
25652562 ComparisonOperator comparisonOperator ,
25662563 HqlParser .ExpressionContext leftExpressionContext ,
0 commit comments