|
43 | 43 | import static io.trino.spi.function.InvocationConvention.InvocationArgumentConvention.FLAT;
|
44 | 44 | import static io.trino.spi.function.InvocationConvention.InvocationArgumentConvention.NEVER_NULL;
|
45 | 45 | import static io.trino.spi.function.InvocationConvention.InvocationArgumentConvention.NULL_FLAG;
|
| 46 | +import static io.trino.spi.function.InvocationConvention.InvocationArgumentConvention.VALUE_BLOCK_POSITION_NOT_NULL; |
46 | 47 | import static io.trino.spi.function.InvocationConvention.InvocationReturnConvention.BLOCK_BUILDER;
|
47 | 48 | import static io.trino.spi.function.InvocationConvention.InvocationReturnConvention.FAIL_ON_NULL;
|
48 | 49 | import static io.trino.spi.function.InvocationConvention.simpleConvention;
|
@@ -496,7 +497,7 @@ private OperatorMethodHandle generateOrderingOperator(OperatorConvention operato
|
496 | 497 | SortOrder sortOrder = operatorConvention.sortOrder().orElseThrow(() -> new IllegalArgumentException("Operator convention does not contain a sort order"));
|
497 | 498 | OperatorType comparisonType = operatorConvention.operatorType();
|
498 | 499 | if (operatorConvention.callingConvention().getArgumentConventions().equals(List.of(BLOCK_POSITION, BLOCK_POSITION))) {
|
499 |
| - OperatorConvention comparisonOperator = new OperatorConvention(operatorConvention.type(), comparisonType, Optional.empty(), simpleConvention(FAIL_ON_NULL, BLOCK_POSITION, BLOCK_POSITION)); |
| 500 | + OperatorConvention comparisonOperator = new OperatorConvention(operatorConvention.type(), comparisonType, Optional.empty(), simpleConvention(FAIL_ON_NULL, BLOCK_POSITION_NOT_NULL, BLOCK_POSITION_NOT_NULL)); |
500 | 501 | MethodHandle comparisonInvoker = adaptOperator(comparisonOperator);
|
501 | 502 | return adaptBlockPositionComparisonToOrdering(sortOrder, comparisonInvoker);
|
502 | 503 | }
|
@@ -541,6 +542,9 @@ private static int getScore(OperatorMethodHandle operatorMethodHandle)
|
541 | 542 | else if (argument == BLOCK_POSITION) {
|
542 | 543 | score += 1;
|
543 | 544 | }
|
| 545 | + else if (argument == VALUE_BLOCK_POSITION_NOT_NULL) { |
| 546 | + score += 1; |
| 547 | + } |
544 | 548 | }
|
545 | 549 | return score;
|
546 | 550 | }
|
|
0 commit comments