private static Map handleExpressionEqualOrIn()

in src/main/java/org/apache/paimon/trino/TrinoFilterExtractor.java [146:200]


    private static Map<TrinoColumnHandle, Domain> handleExpressionEqualOrIn(
            Map<String, ColumnHandle> assignments, Call expression, boolean inClause) {

        Call elementAtExpression = (Call) expression.getArguments().get(0);

        String functionName = elementAtExpression.getFunctionName().getName();

        switch (functionName) {
            case TRINO_MAP_ELEMENT_AT_FUNCTION_NAME:
                {
                    Variable columnExpression =
                            (Variable) elementAtExpression.getArguments().get(0);
                    Constant columnKey = (Constant) elementAtExpression.getArguments().get(1);

                    Constant elementAtValue = (Constant) expression.getArguments().get(1);
                    List<Range> values;
                    Type elementType;
                    if (inClause) {
                        elementType = ((ArrayType) elementAtValue.getType()).getElementType();
                        values =
                                elementAtValue.getChildren().stream()
                                        .filter(a -> ((Constant) a).getValue() != null)
                                        .map(
                                                arguemnt ->
                                                        Range.equal(
                                                                arguemnt.getType(),
                                                                ((Constant) arguemnt).getValue()))
                                        .collect(Collectors.toList());
                    } else {
                        elementType = elementAtValue.getType();
                        values =
                                elementAtValue.getValue() == null
                                        ? Collections.emptyList()
                                        : ImmutableList.of(
                                                Range.equal(
                                                        elementAtValue.getType(),
                                                        elementAtValue.getValue()));
                    }
                    if (columnKey.getValue() == null) {
                        throw new RuntimeException("Expression pares failed: " + expression);
                    }

                    return handleElementAtArguments(
                            assignments,
                            columnExpression.getName(),
                            ((Slice) columnKey.getValue()).toStringUtf8(),
                            elementType,
                            values);
                }
            default:
                {
                    return Collections.emptyMap();
                }
        }
    }